File tree Expand file tree Collapse file tree 2 files changed +50
-1
lines changed Expand file tree Collapse file tree 2 files changed +50
-1
lines changed Original file line number Diff line number Diff line change 1+ from PySide6 .QtCore import QTimer
2+
3+ from compas_viewer .base import Base
4+
5+
6+ class Observer (Base ):
7+ def __init__ (self ):
8+ self ._observers = set (
9+ (
10+ self .viewer .renderer ,
11+ self .viewer .ui .sidebar ,
12+ )
13+ )
14+
15+ self ._time = None
16+ self .update_timer = QTimer ()
17+ self .update_timer .setSingleShot (True )
18+ self .update_timer .timeout .connect (self .update_observers )
19+ self .debounce_interval = 100
20+
21+ def add_observer (self , observer ):
22+ if observer not in self ._observers :
23+ self ._observers .add (observer )
24+
25+ def remove_observer (self , observer ):
26+ if observer in self ._observers :
27+ self ._observers .remove (observer )
28+
29+ def request_update (self ):
30+ if not self .update_timer .isActive ():
31+ self .update_timer .start (self .debounce_interval )
32+
33+ def update_observers (self ):
34+ for observer in self ._observers :
35+ observer .update ()
Original file line number Diff line number Diff line change 1616from compas_viewer .gl import make_vertex_buffer
1717from compas_viewer .gl import update_index_buffer
1818from compas_viewer .gl import update_vertex_buffer
19+ from compas_viewer .observer import Observer
1920from compas_viewer .renderer .shaders import Shader
2021
2122# Type template of point/line/face data for generating the buffers.
@@ -101,6 +102,9 @@ def __init__(
101102 ):
102103 # Basic
103104 super ().__init__ (** kwargs )
105+
106+ self .observer = Observer ()
107+
104108 self .show = show
105109 self .show_points = show_points if show_points is not None else False
106110 self .show_lines = show_lines if show_lines is not None else True
@@ -111,7 +115,7 @@ def __init__(
111115
112116 # Selection
113117 self ._is_locked = is_locked
114- self .is_selected = not is_locked and is_selected
118+ self ._is_selected = False
115119
116120 # Visual
117121 self .background : bool = False
@@ -135,6 +139,16 @@ def __init__(
135139
136140 self ._inited = False
137141
142+ @property
143+ def is_selected (self ):
144+ return self ._is_selected
145+
146+ @is_selected .setter
147+ def is_selected (self , value ):
148+ if self ._is_selected != value :
149+ self ._is_selected = value
150+ self .observer .request_update ()
151+
138152 @property
139153 def is_locked (self ):
140154 return self ._is_locked
You can’t perform that action at this time.
0 commit comments