def show_extent_selector(self): """Show the extent selector widget for defining analysis extents.""" # import here only so that it is AFTER i18n set up from safe.gui.tools.extent_selector_dialog import ExtentSelectorDialog widget = ExtentSelectorDialog( self.iface, self.iface.mainWindow(), extent=self.dock_widget.extent.user_extent, crs=self.dock_widget.extent.user_extent_crs, ) widget.clear_extent.connect(self.dock_widget.extent.clear_user_analysis_extent) widget.extent_defined.connect(self.dock_widget.define_user_analysis_extent) # Needs to be non modal to support hide -> interact with map -> show widget.show() # non modal
def set_widgets(self): """Set widgets on the Extent tab""" self.extent_dialog = ExtentSelectorDialog( self.parent.iface, self.parent.iface.mainWindow(), extent=self.parent.dock.extent.user_extent, crs=self.parent.dock.extent.crs) self.extent_dialog.tool.rectangle_created.disconnect( self.extent_dialog.stop_capture) self.extent_dialog.clear_extent.connect( self.parent.dock.extent.clear_user_analysis_extent) self.extent_dialog.extent_defined.connect( self.parent.dock.define_user_analysis_extent) self.extent_dialog.capture_button.clicked.connect( self.start_capture_coordinates) self.extent_dialog.tool.rectangle_created.connect( self.stop_capture_coordinates) self.extent_dialog.label.setText( self.tr('Please specify extent of your analysis:')) if self.swExtent: self.swExtent.hide() self.swExtent = self.extent_dialog.main_stacked_widget self.layoutAnalysisExtent.addWidget(self.swExtent)
def show_extent_selector(self): """Show the extent selector widget for defining analysis extents.""" # import here only so that it is AFTER i18n set up from safe.gui.tools.extent_selector_dialog import ExtentSelectorDialog widget = ExtentSelectorDialog( self.iface, self.iface.mainWindow(), extent=self.dock_widget.extent.user_extent, crs=self.dock_widget.extent.user_extent_crs) widget.clear_extent.connect( self.dock_widget.extent.clear_user_analysis_extent) widget.extent_defined.connect( self.dock_widget.define_user_analysis_extent) # Needs to be non modal to support hide -> interact with map -> show widget.show() # non modal
def show_extent_selector(self): """Show the extent selector widget for defining analysis extents.""" # import here only so that it is AFTER i18n set up from safe.gui.tools.extent_selector_dialog import ExtentSelectorDialog widget = ExtentSelectorDialog( self.iface, self.iface.mainWindow(), extent=self.dock_widget.extent.user_extent, crs=self.dock_widget.extent.crs) widget.clear_extent.connect( self.dock_widget.extent.clear_user_analysis_extent) widget.extent_defined.connect( self.dock_widget.define_user_analysis_extent) # This ensures that run button state is updated on dialog close widget.extent_selector_closed.connect( self.dock_widget.validate_impact_function) # Needs to be non modal to support hide -> interact with map -> show widget.show() # non modal
def setUp(self): """Runs before each test.""" self.extent = QgsRectangle(10.0, 10.0, 20.0, 20.0) self.crs = QgsCoordinateReferenceSystem('EPSG:4326') CANVAS.setExtent(self.extent) self.dialog = ExtentSelectorDialog(IFACE, PARENT, self.extent, self.crs) self.signal_received = False self.dialog.extent_defined.connect(self.extent_defined) self.widget = QtGui.QWidget() self.widget.setGeometry(0, 0, 500, 500) layout = QtGui.QVBoxLayout(self.widget) layout.addWidget(CANVAS) self.widget.show() QTest.qWaitForWindowShown(self.widget) self.dialog.show() QTest.qWaitForWindowShown(self.dialog)
def setUp(self): """Runs before each test.""" self.extent = QgsRectangle(10.0, 10.0, 20.0, 20.0) self.crs = QgsCoordinateReferenceSystem('EPSG:4326') CANVAS.setExtent(self.extent) self.dialog = ExtentSelectorDialog( IFACE, PARENT, self.extent, self.crs) self.signal_received = False self.dialog.extent_defined.connect(self.extent_defined) self.dialog.show() QTest.qWaitForWindowExposed(self.dialog)
def setUp(self): """Runs before each test.""" self.extent = QgsRectangle(10.0, 10.0, 20.0, 20.0) self.crs = QgsCoordinateReferenceSystem("EPSG:4326") CANVAS.setExtent(self.extent) self.dialog = ExtentSelectorDialog(IFACE, PARENT, self.extent, self.crs) self.signal_received = False self.dialog.extent_defined.connect(self.extent_defined) self.widget = QtGui.QWidget() self.widget.setGeometry(0, 0, 500, 500) layout = QtGui.QVBoxLayout(self.widget) layout.addWidget(CANVAS) self.widget.show() QTest.qWaitForWindowShown(self.widget) self.dialog.show() QTest.qWaitForWindowShown(self.dialog)
class ExtentSelectorTest(unittest.TestCase): """Test Import Dialog widget """ # noinspection PyPep8Naming def setUp(self): """Runs before each test.""" self.extent = QgsRectangle(10.0, 10.0, 20.0, 20.0) self.crs = QgsCoordinateReferenceSystem('EPSG:4326') CANVAS.setExtent(self.extent) self.dialog = ExtentSelectorDialog(IFACE, PARENT, self.extent, self.crs) self.signal_received = False self.dialog.extent_defined.connect(self.extent_defined) self.widget = QtGui.QWidget() self.widget.setGeometry(0, 0, 500, 500) layout = QtGui.QVBoxLayout(self.widget) layout.addWidget(CANVAS) self.widget.show() QTest.qWaitForWindowShown(self.widget) self.dialog.show() QTest.qWaitForWindowShown(self.dialog) def tearDown(self): """Runs after each test.""" self.dialog.reject() self.dialog = None self.extent = None self.crs = None def extent_defined(self, extent, crs): """Slot for when extents are changed in dialog. :param extent: Rectangle that was created. :type extent: QgsRectangle :param crs: Coordiate reference system. :type crs: QgsCoordinateReferenceSystem """ self.extent = extent self.crs = crs self.signal_received = True def canvas_mouse_moved(self, point): """Slot for when the mouse moves on the canvas.""" print point.toString() def test_spinboxes(self): """Test validate extent method.""" self.dialog.x_maximum.clear() self.dialog.extent_defined.connect(self.extent_defined) QTest.mouseClick(self.dialog.x_maximum, Qt.LeftButton) QTest.keyClick(self.dialog.x_maximum, '3') QTest.keyClick(self.dialog.x_maximum, '0') ok = self.dialog.button_box.button(QtGui.QDialogButtonBox.Ok) QTest.mouseClick(ok, Qt.LeftButton) expected_extent = QgsRectangle(10.0, 10.0, 30.0, 20.0) self.assertEqual(self.extent.toString(), expected_extent.toString()) @unittest.expectedFailure @unittest.skip def test_mouse_drag(self): """Test setting extents by dragging works. This currently fails as QTest does not properly do the mouse interactions with the canvas. """ # Click the capture button QTest.mouseClick(self.dialog.capture_button, Qt.LeftButton) # drag a rect on the canvas QTest.mousePress(CANVAS, Qt.LeftButton, pos=QPoint(0, 0), delay=500) QTest.mouseRelease(CANVAS, Qt.LeftButton, pos=QPoint(300, 300), delay=-1) # on drag the extents selector windows should appear again QTest.qWaitForWindowShown(self.dialog) # Click ok to dispose of the window again ok = self.dialog.button_box.button(QtGui.QDialogButtonBox.Ok) QTest.mouseClick(ok, Qt.LeftButton) # Check the extent emitted on closing teh dialog is correct expected_extent = QgsRectangle(10.0, 10.0, 30.0, 20.0) self.assertEqual(self.extent.toString(), expected_extent.toString())
class ExtentSelectorTest(unittest.TestCase): """Test Import Dialog widget """ # noinspection PyPep8Naming def setUp(self): """Runs before each test.""" self.extent = QgsRectangle(10.0, 10.0, 20.0, 20.0) self.crs = QgsCoordinateReferenceSystem('EPSG:4326') CANVAS.setExtent(self.extent) self.dialog = ExtentSelectorDialog( IFACE, PARENT, self.extent, self.crs) self.signal_received = False self.dialog.extent_defined.connect(self.extent_defined) self.widget = QtGui.QWidget() self.widget.setGeometry(0, 0, 500, 500) layout = QtGui.QVBoxLayout(self.widget) layout.addWidget(CANVAS) self.widget.show() QTest.qWaitForWindowShown(self.widget) self.dialog.show() QTest.qWaitForWindowShown(self.dialog) def tearDown(self): """Runs after each test.""" self.dialog.reject() self.dialog = None self.extent = None self.crs = None def extent_defined(self, extent, crs): """Slot for when extents are changed in dialog. :param extent: Rectangle that was created. :type extent: QgsRectangle :param crs: Coordiate reference system. :type crs: QgsCoordinateReferenceSystem """ self.extent = extent self.crs = crs self.signal_received = True def canvas_mouse_moved(self, point): """Slot for when the mouse moves on the canvas.""" print point.toString() def test_spinboxes(self): """Test validate extent method.""" self.dialog.x_maximum.clear() self.dialog.extent_defined.connect(self.extent_defined) QTest.mouseClick(self.dialog.x_maximum, Qt.LeftButton) QTest.keyClick(self.dialog.x_maximum, '3') QTest.keyClick(self.dialog.x_maximum, '0') ok = self.dialog.button_box.button(QtGui.QDialogButtonBox.Ok) QTest.mouseClick(ok, Qt.LeftButton) expected_extent = QgsRectangle(10.0, 10.0, 30.0, 20.0) self.assertEqual(self.extent.toString(), expected_extent.toString()) @unittest.expectedFailure @unittest.skip def test_mouse_drag(self): """Test setting extents by dragging works. This currently fails as QTest does not properly do the mouse interactions with the canvas. """ # Imported here because it is not available in OSX QGIS bundle # pylint: disable=redefined-outer-name from PyQt4.QtTest import QTest # Click the capture button QTest.mouseClick(self.dialog.capture_button, Qt.LeftButton) # drag a rect on the canvas QTest.mousePress(CANVAS, Qt.LeftButton, pos=QPoint(0, 0), delay=500) QTest.mouseRelease( CANVAS, Qt.LeftButton, pos=QPoint(300, 300), delay=-1) # on drag the extents selector windows should appear again QTest.qWaitForWindowShown(self.dialog) # Click ok to dispose of the window again ok = self.dialog.button_box.button(QtGui.QDialogButtonBox.Ok) QTest.mouseClick(ok, Qt.LeftButton) # Check the extent emitted on closing teh dialog is correct expected_extent = QgsRectangle(10.0, 10.0, 30.0, 20.0) self.assertEqual(self.extent.toString(), expected_extent.toString())