diff --git a/moulder/main_window.py b/moulder/main_window.py index 00534a9..0563765 100644 --- a/moulder/main_window.py +++ b/moulder/main_window.py @@ -55,6 +55,7 @@ class MoulderApp(QMainWindow): self.about_action.triggered.connect(self._about_callback) self.quit_action.triggered.connect(self._quit_callback) self.moulder.polygon_selected.connect(self._change_density_callback) + self.moulder.drawing_mode.connect(self._drawing_mode_callback) self.new_polygon_action.triggered.connect(self.moulder.new_polygon) self.add_vertex_action.triggered.connect(self.moulder.add_vertex) self.delete_polygon_action.triggered.connect( @@ -68,6 +69,12 @@ class MoulderApp(QMainWindow): self.error_spinbox.valueChanged.connect( self._spin_slider_changed_callback) + def _drawing_mode_callback(self, drawing): + if drawing and self.new_polygon_action.isChecked() is False: + self.new_polygon_action.setChecked(True) + elif not drawing and self.new_polygon_action.isChecked() is True: + self.new_polygon_action.setChecked(False) + def _define_actions(self): self.configure_action = QAction(QIcon.fromTheme('preferences-system'), '&Configure...', self) @@ -86,6 +93,7 @@ class MoulderApp(QMainWindow): self.about_action = QAction("&About", self) self.new_polygon_action = QAction(QIcon.fromTheme("list-add"), "&New Polygon", self) + self.new_polygon_action.setCheckable(True) self.delete_polygon_action = QAction(QIcon.fromTheme("list-remove"), "&Delete Polygon", self) self.add_vertex_action = QAction(QIcon.fromTheme("document-new"), diff --git a/moulder/moulder.py b/moulder/moulder.py index 0e5215c..c4ea98f 100644 --- a/moulder/moulder.py +++ b/moulder/moulder.py @@ -28,6 +28,8 @@ class Moulder(FigureCanvasQTAgg): # Signal when selected polygon changes polygon_selected = pyqtSignal(float) + drawing_mode = pyqtSignal(bool) + add_vertex_signal = pyqtSignal() def __init__(self, parent, x, z, min_depth, max_depth, density_range=[-2000, 2000], width=5, height=4, dpi=100): @@ -143,6 +145,7 @@ class Moulder(FigureCanvasQTAgg): self.canvas.draw() self.background = self.canvas.copy_from_bbox(self.modelax.bbox) self._drawing = True + self.drawing_mode.emit(self._drawing) self._xy = [] self._drawing_plot = Line2D([], [], **LINE_ARGS) self._drawing_plot.set_animated(True) @@ -194,6 +197,7 @@ class Moulder(FigureCanvasQTAgg): else: self.dataax.set_title(self.instructions) self._drawing = False + self.drawing_mode.emit(self._drawing) self._xy = [] if self._drawing_plot is not None: self._drawing_plot.remove() @@ -231,6 +235,7 @@ class Moulder(FigureCanvasQTAgg): self._ipoly = None self._lastevent = None self._drawing = False + self.drawing_mode.emit(self._drawing) self._add_vertex = False self._xy = [] self._drawing_plot = None @@ -436,6 +441,7 @@ class Moulder(FigureCanvasQTAgg): self._drawing_plot = None self._xy = None self._drawing = False + self.drawing_mode.emit(self._drawing) self._ipoly = len(self.polygons) - 1 self.lines[self._ipoly].set_color([0, 1, 0, 0]) self.dataax.set_title(self.instructions)