Some small bugs fixed
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
import dearpygui.dearpygui as dpg
|
||||
import logging
|
||||
import gc
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
@ -40,9 +41,10 @@ class BaseWidget:
|
||||
dpg.add_item_resize_handler(
|
||||
callback=self._on_window_resize, parent=self.window_handler
|
||||
)
|
||||
dpg.bind_item_handler_registry(self.window_tag, self.window_handler)
|
||||
|
||||
self.create_content()
|
||||
|
||||
dpg.bind_item_handler_registry(self.window_tag, self.window_handler)
|
||||
|
||||
def create_content(self):
|
||||
"""Must be implemented by the widget, creates the content of the window"""
|
||||
@ -65,14 +67,24 @@ class BaseWidget:
|
||||
# Callbacks
|
||||
|
||||
def _on_window_close(self):
|
||||
try:
|
||||
dpg.delete_item(self.window_tag)
|
||||
self.manager.widgets.remove(self)
|
||||
except ValueError:
|
||||
pass
|
||||
"""Some cleanup after closing a window"""
|
||||
self.manager.bus.unsubscribe_instance(self)
|
||||
|
||||
dpg.delete_item(self.window_tag)
|
||||
dpg.delete_item(self.window_handler)
|
||||
|
||||
self.manager.widgets.remove(self)
|
||||
|
||||
self.manager = None
|
||||
self.logger = None
|
||||
|
||||
gc.collect()
|
||||
|
||||
def _on_window_resize(self, data):
|
||||
win_w, win_h = dpg.get_item_rect_size(self.window_tag)
|
||||
self.window_height = win_h
|
||||
self.window_width = win_w
|
||||
self.on_resize(win_w, win_h)
|
||||
|
||||
def __del__(self):
|
||||
print("Widget deleted")
|
||||
|
@ -22,6 +22,7 @@ class PipelineStageWidget(BaseWidget):
|
||||
self.pipeline_stage_in_id = None
|
||||
self.pipeline_stage_out_id = None
|
||||
self.pipeline_config_group_tag = dpg.generate_uuid()
|
||||
self.stage_in_combo = dpg.generate_uuid()
|
||||
|
||||
if self.has_pipeline_out:
|
||||
self.pipeline_stage_out_id = self.manager.pipeline.register_stage(
|
||||
@ -38,11 +39,12 @@ class PipelineStageWidget(BaseWidget):
|
||||
def create_content(self):
|
||||
with dpg.group(tag=self.pipeline_config_group_tag):
|
||||
if self.has_pipeline_in:
|
||||
self.stage_in_combo = dpg.add_combo(
|
||||
dpg.add_combo(
|
||||
label="Stage In",
|
||||
items=[],
|
||||
callback=self._on_stage_in_select,
|
||||
default_value=f"{self.manager.pipeline.get_stage_name(0)} : 0",
|
||||
tag=self.stage_in_combo
|
||||
)
|
||||
if self.has_pipeline_out:
|
||||
dpg.add_input_text(
|
||||
@ -72,9 +74,14 @@ class PipelineStageWidget(BaseWidget):
|
||||
|
||||
# Callbacks
|
||||
|
||||
def _on_window_close(self):
|
||||
if self.has_pipeline_out:
|
||||
self.manager.pipeline.remove_stage(self.pipeline_stage_out_id)
|
||||
return super()._on_window_close()
|
||||
|
||||
def _on_stage_list(self, stagelist):
|
||||
if self.has_pipeline_in:
|
||||
stages = [f"{stage} : {id}" for id, stage in enumerate(stagelist)]
|
||||
stages = [f"{stage} : {id}" for id, stage in stagelist.items()]
|
||||
dpg.configure_item(self.stage_in_combo, items=stages)
|
||||
|
||||
def _on_stage_in_select(self, sender, selected_stage: str):
|
||||
|
@ -32,6 +32,7 @@ class PipelineStageViewer(PipelineStageWidget):
|
||||
|
||||
def update_texture(self, img: np.ndarray):
|
||||
"""Only call from update function"""
|
||||
# TODO show a smaller version of the image to speed things up
|
||||
if img is None:
|
||||
dpg.configure_item(self.image_item, show=False)
|
||||
return
|
||||
|
Reference in New Issue
Block a user