Added polygon_selected signal and connection

This commit is contained in:
Santiago Soler
2018-02-02 12:32:14 -03:00
parent 7d04e829cd
commit da6d54686c
2 changed files with 13 additions and 2 deletions

View File

@@ -15,12 +15,13 @@ from matplotlib.lines import Line2D
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtWidgets import QSizePolicy, QMainWindow, QApplication, QAction
from PyQt5.QtWidgets import QMenu, QWidget, QVBoxLayout, QMessageBox
from PyQt5.QtWidgets import QSlider, QHBoxLayout, QLabel, QDialog
from PyQt5.QtWidgets import QDialogButtonBox
from fatiando import utils
from fatiando.gravmag import talwani
from fatiando.mesher import Polygon
@@ -39,6 +40,9 @@ class Moulder(FigureCanvasQTAgg):
'n: New polygon', 'd: delete', 'click: select/move', 'a: add vertex',
'r: reset view', 'esc: cancel'])
# Signal when selected polygon changes
polygon_selected = pyqtSignal(float)
def __init__(self, parent, x, z, min_depth, max_depth,
density_range=[-2000, 2000], width=5, height=4, dpi=100):
self.fig = Figure(figsize=(width, height), dpi=dpi)
@@ -322,6 +326,8 @@ class Moulder(FigureCanvasQTAgg):
# and which vertice of which polygon
self._ipoly, self._ivert = self._get_polygon_vertice_id(event)
if self._ipoly is not None:
# Emit signal: selected polygon changed (sends density)
self.polygon_selected.emit(self.densities[self._ipoly])
# self.density_slider.set_val(self.densities[self._ipoly])
self.polygons[self._ipoly].set_animated(True)
self.lines[self._ipoly].set_animated(True)

View File

@@ -30,13 +30,13 @@ class MoulderApp(QMainWindow):
self.setWindowIcon(QIcon.fromTheme('python-logo'))
self.setGeometry(200, 200, 1024, 800)
self.init_ui()
self.set_callbacks()
self.moulder = Moulder(self, numpy.linspace(0, 100e3, 101),
numpy.zeros(101), 0, 10000,
density_range=DENSITY_RANGE,
width=5, height=4, dpi=100)
self.setCentralWidget(self.moulder)
self.set_callbacks()
def keyPressEvent(self, event):
keys_dict = {Qt.Key_N: "n", Qt.Key_R: "r",
@@ -68,6 +68,7 @@ class MoulderApp(QMainWindow):
self._spin_slider_changed_callback)
self.error_spinbox.valueChanged.connect(
self._spin_slider_changed_callback)
self.moulder.polygon_selected.connect(self._change_density_callback)
def _define_actions(self):
self.configure_action = QAction(QIcon.fromTheme('preferences-system'),
@@ -166,6 +167,10 @@ class MoulderApp(QMainWindow):
self.error_slider.setValue(self.error_slider.float_2_int(value))
self.moulder.error = value
def _change_density_callback(self, value):
self.density_spinbox.setValue(value)
self.density_slider.setValue(value)
def _quit_callback(self):
answer = QMessageBox.question(self, "Quit",
"Are you sure you want to quit?",