Skip to content

Commit dd4269d

Browse files
authored
Revert "Status bar messages to indicate rendering and viewing progress"
1 parent 05bacc8 commit dd4269d

File tree

6 files changed

+60
-97
lines changed

6 files changed

+60
-97
lines changed

cq_editor/main_window.py

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import sys
22

3-
from typing import Optional
4-
from PyQt5.QtCore import pyqtSlot
5-
from PyQt5.QtWidgets import (QApplication, QLabel, QMainWindow, QToolBar, QDockWidget, QAction)
3+
from PyQt5.QtWidgets import (QLabel, QMainWindow, QToolBar, QDockWidget, QAction)
64
from logbook import Logger
75
import cadquery as cq
86

@@ -67,8 +65,6 @@ def __init__(self,parent=None, filename=None):
6765

6866
self.restoreComponentState()
6967

70-
self.on_idle()
71-
7268
def closeEvent(self,event):
7369

7470
self.saveWindow()
@@ -206,7 +202,7 @@ def prepare_toolbar(self):
206202
self.toolbar = QToolBar('Main toolbar',self,objectName='Main toolbar')
207203

208204
for c in self.components.values():
209-
add_actions(self.toolbar, c.toolbarActions())
205+
add_actions(self.toolbar,c.toolbarActions())
210206

211207
self.addToolBar(self.toolbar)
212208

@@ -217,25 +213,18 @@ def prepare_statusbar(self):
217213

218214
def prepare_actions(self):
219215

220-
self.components['debugger'].sigRenderStarted \
221-
.connect(self.on_render_start)
222216
self.components['debugger'].sigRendered\
223217
.connect(self.components['object_tree'].addObjects)
224218
self.components['debugger'].sigTraceback\
225219
.connect(self.components['traceback_viewer'].addTraceback)
226-
self.components['debugger'].sigRendered \
227-
.connect(lambda _: self.on_idle())
228-
self.components['debugger'].sigTraceback \
229-
.connect(lambda _: self.on_idle())
230-
231220
self.components['debugger'].sigLocals\
232221
.connect(self.components['variables_viewer'].update_frame)
233222
self.components['debugger'].sigLocals\
234223
.connect(self.components['console'].push_vars)
235224

236-
self.components['object_tree'].sigObjectsAdded[list, list]\
237-
.connect(lambda objects, names: self.components['viewer'].display_many(objects, None, names))
238-
self.components['object_tree'].sigObjectsAdded[list, bool, list]\
225+
self.components['object_tree'].sigObjectsAdded[list]\
226+
.connect(self.components['viewer'].display_many)
227+
self.components['object_tree'].sigObjectsAdded[list,bool]\
239228
.connect(self.components['viewer'].display_many)
240229
self.components['object_tree'].sigItemChanged.\
241230
connect(self.components['viewer'].update_item)
@@ -250,8 +239,6 @@ def prepare_actions(self):
250239

251240
self.components['viewer'].sigObjectSelected\
252241
.connect(self.components['object_tree'].handleGraphicalSelection)
253-
self.components['viewer'].sigDisplayProgress \
254-
.connect(self.on_display_progress)
255242

256243
self.components['traceback_viewer'].sigHighlightLine\
257244
.connect(self.components['editor'].go_to_line)
@@ -357,27 +344,6 @@ def handle_filename_change(self, fname):
357344
new_title = fname if fname else "*"
358345
self.setWindowTitle(f"{self.name}: {new_title}")
359346

360-
def on_idle(self):
361-
self.components['debugger'].set_rendering_state(False)
362-
self.set_status_message('Idle', '#000000')
347+
if __name__ == "__main__":
363348

364-
@pyqtSlot()
365-
def on_render_start(self):
366-
self.components['debugger'].set_rendering_state(True)
367-
self.set_status_message('Rendering...', '#ff0000')
368-
369-
@pyqtSlot(int, int, str)
370-
def on_display_progress(self, current: int, total: int, name: Optional[str]):
371-
if current == total:
372-
self.on_idle()
373-
else:
374-
message = f'Displaying Shape {current + 1} / {total}'
375-
if name:
376-
message += f' ({name})'
377-
self.set_status_message(message, '#0000ff')
378-
379-
def set_status_message(self, message: str, color: str):
380-
self.statusBar().showMessage(message)
381-
self.statusBar().setStyleSheet(f'color: {color}')
382-
# required because rendering is currently done on the main thread
383-
QApplication.processEvents()
349+
pass

cq_editor/widgets/debugger.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ class Debugger(QObject,ComponentMixin):
111111
])
112112

113113

114-
sigRenderStarted = pyqtSignal()
115114
sigRendered = pyqtSignal(dict)
116115
sigLocals = pyqtSignal(dict)
117116
sigTraceback = pyqtSignal(object,str)
@@ -264,7 +263,6 @@ def _cleanup_locals(self,module,injected_names):
264263

265264
@pyqtSlot(bool)
266265
def render(self):
267-
self.sigRenderStarted.emit()
268266

269267
seed(59798267586177)
270268
if self.preferences['Reload CQ']:
@@ -296,11 +294,6 @@ def render(self):
296294
sys.last_traceback = exc_info[-1]
297295
self.sigTraceback.emit(exc_info, cq_script)
298296

299-
def set_rendering_state(self, rendering):
300-
render_action = self._actions['Run'][0]
301-
render_action.setCheckable(rendering)
302-
render_action.setChecked(rendering)
303-
304297
@property
305298
def breakpoints(self):
306299
return [ el[0] for el in self.get_breakpoints()]

cq_editor/widgets/object_tree.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class ObjectTree(QWidget,ComponentMixin):
9797
{'name': 'Clear all before each run', 'type': 'bool', 'value': True},
9898
{'name': 'STL precision','type': 'float', 'value': .1}])
9999

100-
sigObjectsAdded = pyqtSignal([list, list],[list, bool, list])
100+
sigObjectsAdded = pyqtSignal([list],[list,bool])
101101
sigObjectsRemoved = pyqtSignal(list)
102102
sigCQObjectSelected = pyqtSignal(object)
103103
sigAISObjectsSelected = pyqtSignal(list)
@@ -201,7 +201,6 @@ def addLines(self):
201201

202202
origin = (0,0,0)
203203
ais_list = []
204-
names = []
205204

206205
for name,color,direction in zip(('X','Y','Z'),
207206
('red','lawngreen','blue'),
@@ -215,9 +214,8 @@ def addLines(self):
215214
ais=line))
216215

217216
ais_list.append(line)
218-
names.append(name)
219217

220-
self.sigObjectsAdded.emit(ais_list, names)
218+
self.sigObjectsAdded.emit(ais_list)
221219

222220
def _current_properties(self):
223221

@@ -250,7 +248,6 @@ def addObjects(self,objects,clean=False,root=None):
250248
self.removeObjects()
251249

252250
ais_list = []
253-
names = []
254251

255252
#remove empty objects
256253
objects_f = {k:v for k,v in objects.items() if not is_obj_empty(v.shape)}
@@ -269,14 +266,13 @@ def addObjects(self,objects,clean=False,root=None):
269266

270267
if child.properties['Visible']:
271268
ais_list.append(ais)
272-
names.append(name)
273-
269+
274270
root.addChild(child)
275271

276272
if request_fit_view:
277-
self.sigObjectsAdded[list, bool, list].emit(ais_list, True, names)
273+
self.sigObjectsAdded[list,bool].emit(ais_list,True)
278274
else:
279-
self.sigObjectsAdded[list, list].emit(ais_list, names)
275+
self.sigObjectsAdded[list].emit(ais_list)
280276

281277
@pyqtSlot(object,str,object)
282278
def addObject(self,obj,name='',options=None):
@@ -285,15 +281,15 @@ def addObject(self,obj,name='',options=None):
285281

286282
root = self.CQ
287283

288-
ais, shape_display = make_AIS(obj, options)
284+
ais,shape_display = make_AIS(obj, options)
289285

290286
root.addChild(ObjectTreeItem(name,
291287
shape=obj,
292288
shape_display=shape_display,
293289
ais=ais,
294290
sig=self.sigObjectPropertiesChanged))
295291

296-
self.sigObjectsAdded.emit([ais], [name])
292+
self.sigObjectsAdded.emit([ais])
297293

298294
@pyqtSlot(list)
299295
@pyqtSlot()
@@ -317,7 +313,7 @@ def stashObjects(self,action : bool):
317313
self.removeObjects()
318314
self.CQ.addChildren(self._stash)
319315
ais_list = [el.ais for el in self._stash]
320-
self.sigObjectsAdded.emit(ais_list, [''] * len(ais_list))
316+
self.sigObjectsAdded.emit(ais_list)
321317

322318
@pyqtSlot()
323319
def removeSelected(self):

cq_editor/widgets/traceback_viewer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ def __init__(self,parent):
3636

3737
self.tree = TracebackTree(self)
3838
self.current_exception = QLabel(self)
39-
self.current_exception.setStyleSheet("QLabel {color : red; }");
39+
self.current_exception.setStyleSheet(\
40+
"QLabel {color : red; }");
4041

4142
layout(self,
4243
(self.current_exception,

cq_editor/widgets/viewer.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from PyQt5.QtWidgets import QWidget, QDialog, QTreeWidgetItem, QApplication, QAction
22

3-
from typing import Optional, List
43
from PyQt5.QtCore import pyqtSlot, pyqtSignal
54
from PyQt5.QtGui import QIcon
65

@@ -48,7 +47,6 @@ class OCCViewer(QWidget,ComponentMixin):
4847
IMAGE_EXTENSIONS = 'png'
4948

5049
sigObjectSelected = pyqtSignal(list)
51-
sigDisplayProgress = pyqtSignal(int, int, str)
5250

5351
def __init__(self,parent=None):
5452

@@ -181,23 +179,31 @@ def clear(self):
181179
context.PurgeDisplay()
182180
context.RemoveAll(True)
183181

182+
def _display(self,shape):
183+
184+
ais = make_AIS(shape)
185+
self.canvas.context.Display(shape,True)
186+
187+
self.displayed_shapes.append(shape)
188+
self.displayed_ais.append(ais)
189+
190+
#self.canvas._display.Repaint()
191+
184192
@pyqtSlot(object)
185-
def display(self, ais):
186-
self.display_many([ais])
193+
def display(self,ais):
194+
195+
context = self._get_context()
196+
context.Display(ais,True)
197+
198+
if self.preferences['Fit automatically']: self.fit()
187199

188200
@pyqtSlot(list)
189-
@pyqtSlot(list, bool, list)
190-
def display_many(self, ais_list, fit: Optional[bool] = None, names: Optional[List] = None):
191-
if names is None:
192-
names = [None] * len(ais_list)
193-
assert len(ais_list) == len(names)
201+
@pyqtSlot(list,bool)
202+
def display_many(self,ais_list,fit=None):
194203

195204
context = self._get_context()
196-
num_objects = len(ais_list)
197-
for i, (ais, name) in enumerate(zip(ais_list, names)):
198-
self.sigDisplayProgress.emit(i, num_objects, name)
199-
context.Display(ais, True)
200-
self.sigDisplayProgress.emit(num_objects, num_objects, None)
205+
for ais in ais_list:
206+
context.Display(ais,True)
201207

202208
if self.preferences['Fit automatically'] and fit is None:
203209
self.fit()
@@ -217,8 +223,7 @@ def update_item(self,item,col):
217223
def remove_items(self,ais_items):
218224

219225
ctx = self._get_context()
220-
for ais in ais_items:
221-
ctx.Erase(ais,True)
226+
for ais in ais_items: ctx.Erase(ais,True)
222227

223228
@pyqtSlot()
224229
def redraw(self):

0 commit comments

Comments
 (0)