Skip to content

Commit 2eec5f6

Browse files
committed
clean up
1 parent a5c0fd6 commit 2eec5f6

File tree

5 files changed

+31
-26
lines changed

5 files changed

+31
-26
lines changed

src/compas_viewer/commands.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,6 @@ def select_all(viewer: "Viewer"):
236236
if obj.show and not obj.is_locked:
237237
obj.is_selected = True
238238

239-
viewer.ui.sidebar.update()
240-
viewer.renderer.update()
241-
242239

243240
select_all_cmd = Command(title="Select All", callback=select_all)
244241

@@ -247,9 +244,6 @@ def deselect_all(viewer: "Viewer"):
247244
for obj in viewer.scene.objects:
248245
obj.is_selected = False
249246

250-
viewer.ui.sidebar.update()
251-
viewer.renderer.update()
252-
253247

254248
deselect_all_cmd = Command(title="DeSelect All", callback=deselect_all)
255249

@@ -275,8 +269,6 @@ def select_object(viewer: "Viewer", event: QMouseEvent):
275269
if selected_obj:
276270
selected_obj.is_selected = True
277271

278-
viewer.ui.sidebar.update()
279-
280272
viewer.renderer.update()
281273

282274

@@ -295,7 +287,6 @@ def select_multiple(viewer: "Viewer", event: QMouseEvent):
295287
selected_obj = viewer.scene.instance_colors.get(tuple(unique_color[0])) # type: ignore
296288
if selected_obj:
297289
selected_obj.is_selected = True
298-
viewer.ui.sidebar.update()
299290

300291
viewer.renderer.update()
301292

@@ -343,8 +334,6 @@ def select_window(viewer: "Viewer", event: QMouseEvent):
343334
obj.is_selected = True
344335
continue
345336

346-
viewer.ui.sidebar.update()
347-
348337
viewer.renderer.update()
349338

350339

@@ -364,8 +353,6 @@ def deselect_object(viewer: "Viewer", event: QMouseEvent):
364353
if selected_obj:
365354
selected_obj.is_selected = False
366355

367-
viewer.ui.sidebar.update()
368-
369356
viewer.renderer.update()
370357

371358

@@ -394,7 +381,6 @@ def delete_selected():
394381
if obj.is_selected:
395382
viewer.scene.remove(obj)
396383
del obj
397-
viewer.renderer.update()
398384

399385

400386
# =============================================================================
@@ -411,9 +397,6 @@ def clear_scene(viewer: "Viewer"):
411397
viewer.scene.remove(obj)
412398
del obj
413399

414-
viewer.ui.sidebar.update()
415-
viewer.renderer.update()
416-
417400

418401
clear_scene_cmd = Command(title="Clear Scene", callback=clear_scene)
419402

src/compas_viewer/components/sceneform.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,6 @@ def on_item_clicked(self, item, column):
114114
if self.callback and node.is_selected:
115115
self.callback(node)
116116

117-
self.viewer.renderer.update()
118-
119117
def on_item_selection_changed(self):
120118
for item in self.selectedItems():
121119
if self.callback:

src/compas_viewer/observer.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ def __init__(self):
1212
)
1313
)
1414

15-
self._time = None
1615
self.update_timer = QTimer()
1716
self.update_timer.setSingleShot(True)
1817
self.update_timer.timeout.connect(self.update_observers)
19-
self.debounce_interval = 100
18+
self.debounce_interval = 200
2019

2120
def add_observer(self, observer):
2221
if observer not in self._observers:

src/compas_viewer/scene/scene.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from compas.datastructures import Datastructure
1010
from compas.geometry import Geometry
1111
from compas.scene import Scene
12+
from compas_viewer.observer import Observer
1213

1314
from .sceneobject import ViewerSceneObject
1415

@@ -68,17 +69,21 @@ class ViewerScene(Scene):
6869
def __init__(self, name: str = "ViewerScene", context: str = "Viewer"):
6970
super().__init__(name=name, context=context)
7071

72+
# Observer
73+
self._observer = None
74+
7175
# Primitive
7276
self.objects: list[ViewerSceneObject]
7377
# Selection
7478
self.instance_colors: dict[tuple[int, int, int], ViewerSceneObject] = {}
7579
self._instance_colors_generator = instance_colors_generator()
7680

7781
@property
78-
def viewer(self):
79-
from compas_viewer import Viewer
80-
81-
return Viewer()
82+
def observer(self):
83+
"""Observer: The observer object for the scene."""
84+
if self._observer is None:
85+
self._observer = Observer()
86+
return self._observer
8287

8388
# TODO: These fixed kwargs could be moved to COMPAS core.
8489
def add(
@@ -183,4 +188,17 @@ def add(
183188
u=u,
184189
**kwargs,
185190
)
191+
self.observer.request_update()
186192
return sceneobject
193+
194+
def remove(self, obj: ViewerSceneObject) -> None:
195+
"""
196+
Remove an object from the scene.
197+
198+
Parameters
199+
----------
200+
obj : :class:`compas_viewer.scene.ViewerSceneObject`
201+
The object to remove.
202+
"""
203+
super().remove(obj)
204+
self.observer.request_update()

src/compas_viewer/scene/sceneobject.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def __init__(
103103
# Basic
104104
super().__init__(**kwargs)
105105

106-
self.observer = Observer()
106+
self._observer = None
107107

108108
self.show = show
109109
self.show_points = show_points if show_points is not None else False
@@ -139,6 +139,13 @@ def __init__(
139139

140140
self._inited = False
141141

142+
@property
143+
def observer(self) -> bool:
144+
"""bool : Whether the scene is requested to be updated."""
145+
if self._observer is None:
146+
self._observer = Observer()
147+
return self._observer
148+
142149
@property
143150
def is_selected(self):
144151
return self._is_selected

0 commit comments

Comments
 (0)