예제 #1
0
파일: plugin.py 프로젝트: strk/nz-buildings
    def add_action(
        self,
        icon_path,
        text,
        callback,
        enabled_flag=True,
        add_to_menu=True,
        add_to_toolbar=True,
        status_tip=True,
        whats_this=None,
        parent=None,
    ):
        """ Add a toolbar icon to the toolbar.

        @param icon_path: Path to the icon for this action. Can be a resource
        path (e.g. ':/plugins/foo/bar.png') or a normal file system path.
                @param icon_path: Path to the icon for this action. Can be a resource
            path (e.g. ':/plugins/foo/bar.png') or a normal file system path.
        @type icon_path: str
        @param text: Text that should be shown in menu items for this action.
        @type text: str
        @param callback: Function to be called when the action is triggered.
        @type callback: function
        @param enabled_flag: A flag indicating if the action should be enabled
            by default. Defaults to True.
        @type enabled_flag: bool
        @param add_to_menu: Flag indicating whether the action should also
            be added to the menu. Defaults to True.
        @type add_to_menu: bool
        @param add_to_toolbar: Flag indicating whether the action should also
            be added to the toolbar. Defaults to True.
        @type add_to_toolbar: bool
        @param status_tip: Optional text to show in a popup when mouse pointer
            hovers over the action.
        @type status_tip: str
        @param whats_this: Optional text to show in the status bar when the
            mouse pointer hovers over the action.
        @param parent: Parent widget for the new action. Defaults None.
        @type parent: QWidget
        @return action: The action that was created.
            Note that the action is also added to self.actions list.
        @rtype action: QAction
        """
        icon = QIcon(icon_path)
        action = QAction(icon, text, parent)
        action.triggered.connect(callback)
        action.setEnabled(enabled_flag)

        if status_tip is not None:
            action.setWhatsThis(whats_this)

        if add_to_toolbar:
            self.main_toolbar.addAction(action)

        if add_to_menu:
            iface.addPluginToMenu(self.menu, action)

        self.actions.append(action)
        return action
예제 #2
0
def addUpdatePluginMenu(menu, username, reponame):
    global actions
    import inspect
    frm = inspect.stack()[1]
    mod = inspect.getmodule(frm[0])
    folder = os.path.dirname(mod.__file__)
    icon = QtGui.QIcon(os.path.join(os.path.dirname(__file__), "plugin.png"))
    action = QtGui.QAction(icon, "Update plugin...", iface.mainWindow())
    action.triggered.connect(lambda: updatePlugin(username, reponame, folder))
    actions[menu] = action
    iface.addPluginToMenu(menu, action)
예제 #3
0
    def initGui(self):
        '''
        Here wew add the main menu entry, used to enable the map tool to 
        capture coordinates
        '''
        mapToolIcon = QIcon(
            os.path.join(os.path.dirname(__file__), "icons", "w3w.png"))
        self.toolAction = QAction(mapToolIcon, "what3words map tool",
                                  iface.mainWindow())
        self.toolAction.triggered.connect(self.setTool)

        #checkable = true, so it indicates whether the maptool is active or not
        self.toolAction.setCheckable(True)

        iface.addToolBarIcon(self.toolAction)
        iface.addPluginToMenu("what3words", self.toolAction)
        '''And here we add another tool to zoom to a w3w address'''
        zoomToIcon = QIcon(':/images/themes/default/mActionZoomIn.svg')
        self.zoomToAction = QAction(zoomToIcon, "Zoom to 3 word address",
                                    iface.mainWindow())
        self.zoomToAction.triggered.connect(self.zoomTo)
        iface.addPluginToMenu("what3words", self.zoomToAction)

        #Standard plugin menus provided by the qgiscommons library
        addSettingsMenu("what3words", iface.addPluginToMenu)
        addHelpMenu("what3words", iface.addPluginToMenu)
        addAboutMenu("what3words", iface.addPluginToMenu)
        '''
        This plugin uses a maptool. When another maptool is selected, our 
        plugin maptool will be disconnected, and we need to update the menu 
        entry, so it does not show itself as enabled. When the new tool is set, 
        it will fire a signal. We connect it to our unsetTool method, which 
        will handle this.
        '''
        iface.mapCanvas().mapToolSet.connect(self.unsetTool)
        '''
        We use a docked widget. We create it here and hide it, so when it is 
        called by the user, it is just set to visible and will be displayed in 
        its corresponding location in the app window.
        '''
        self.zoomToDialog = W3WCoordInputDialog(iface.mapCanvas(),
                                                iface.mainWindow())
        iface.addDockWidget(Qt.TopDockWidgetArea, self.zoomToDialog)
        self.zoomToDialog.hide()
        '''Add the Processing provider if Processing is availabel and loaded'''
        if processingOk:
            Processing.addProvider(self.provider)
예제 #4
0
    def add_action(
        self,
        icon_path: str,
        text: str,
        callback: Callable,
        enabled_flag: bool = True,
        add_to_menu: bool = True,
        add_to_toolbar: bool = True,
        status_tip: Optional[str] = None,
        whats_this: Optional[str] = None,
        parent: Optional[QWidget] = None,
    ) -> QAction:
        """Add a toolbar icon to the toolbar.

        :param icon_path: Path to the icon for this action. Can be a resource
            path (e.g. ':/plugins/foo/bar.png') or a normal file system path.

        :param text: Text that should be shown in menu items for this action.

        :param callback: Function to be called when the action is triggered.

        :param enabled_flag: A flag indicating if the action should be enabled
            by default. Defaults to True.

        :param add_to_menu: Flag indicating whether the action should also
            be added to the menu. Defaults to True.

        :param add_to_toolbar: Flag indicating whether the action should also
            be added to the toolbar. Defaults to True.

        :param status_tip: Optional text to show in a popup when mouse pointer
            hovers over the action.

        :param parent: Parent widget for the new action. Defaults None.

        :param whats_this: Optional text to show in the status bar when the
            mouse pointer hovers over the action.

        :returns: The action that was created. Note that the action is also
            added to self.actions list.
        :rtype: QAction
        """

        icon = QIcon(icon_path)
        action = QAction(icon, text, parent)
        # noinspection PyUnresolvedReferences
        action.triggered.connect(callback)
        action.setEnabled(enabled_flag)

        if status_tip is not None:
            action.setStatusTip(status_tip)

        if whats_this is not None:
            action.setWhatsThis(whats_this)

        if add_to_toolbar:
            # Adds plugin icon to Plugins toolbar
            iface.addToolBarIcon(action)

        if add_to_menu:
            iface.addPluginToMenu(self.menu, action)

        self.actions.append(action)

        return action
    def init(self) -> None:
        self.baseRasterLayerComboBox.setFilters(
            QgsMapLayerProxyModel.RasterLayer)
        self.segmentsLayerComboBox.setFilters(QgsMapLayerProxyModel.LineLayer)

        self.baseRasterLayerButton.clicked.connect(
            self.onBaseRasterInputButtonClicked)
        self.baseRasterLayerComboBox.layerChanged.connect(
            self.onBaseRasterLayerComboBoxChanged)
        self.segmentsLayerButton.clicked.connect(
            self.onSegmentsLayerButtonClicked)
        self.segmentsLayerComboBox.layerChanged.connect(
            self.onSegmentsLayerComboBoxChanged)
        self.outputLayerButton.clicked.connect(self.onOutputLayerButtonClicked)
        self.outputLayerLineEdit.textChanged.connect(
            self.onOutputLayerLineEditChanged)
        self.its4landButton.clicked.connect(self.onIts4landButtonClicked)
        self.addLengthAttributeCheckBox.toggled.connect(
            self.onAddLengthAttributeCheckBoxToggled)
        self.processButton.clicked.connect(self.onProcessButtonClicked)

        self.modePolygonsRadio.toggled.connect(self.onModePolygonsRadioToggled)
        self.modeVerticesRadio.toggled.connect(self.onModeVerticesRadioToggled)
        self.modeLinesRadio.toggled.connect(self.onModeLinesRadioToggled)
        self.modeManualRadio.toggled.connect(self.onModeManualRadioToggled)

        self.weightComboBox.fieldChanged.connect(self.onWeightComboBoxChanged)

        self.acceptButton.clicked.connect(self.onAcceptButtonClicked)
        self.rejectButton.clicked.connect(self.onRejectButtonClicked)
        self.editButton.toggled.connect(self.onEditButtonToggled)
        self.updateEditsButton.clicked.connect(self.onUpdateEditsButtonClicked)
        self.finishButton.clicked.connect(self.onFinishButtonClicked)

        self.weightComboBox.setFilters(QgsFieldProxyModel.Numeric)

        set_label_icon(self.its4landLabel, 'its4landLogo.png')
        set_button_icon(self.acceptButton, 'accept.png')
        set_button_icon(self.editButton, 'edit.png')
        set_button_icon(self.rejectButton, 'reject.png')
        set_button_icon(self.finishButton, 'finishFlag.png')

        self.action = QAction(create_icon('icon.png'), 'ITS4LAND Settings',
                              iface.mainWindow())
        self.action.setWhatsThis('Settings')
        self.action.setStatusTip('ITS4LAND Settings')
        self.action.setObjectName('its4landButton')
        self.action.triggered.connect(self.onIts4landButtonClicked)

        iface.addPluginToMenu('&BoundaryDelineation', self.action)

        # TODO enable to row below for faster debugging
        # self.its4landWindow.show()

        if self.baseRasterLayerComboBox.currentLayer():
            self.baseRasterLayerComboBox.layerChanged.emit(
                self.baseRasterLayerComboBox.currentLayer())

        if self.segmentsLayerComboBox.currentLayer():
            self.segmentsLayerComboBox.layerChanged.emit(
                self.segmentsLayerComboBox.currentLayer())

        self.createShortcut(SC_MODE_POLYGONS, self.modePolygonsRadio,
                            self.onShortcutModePolygons)
        self.createShortcut(SC_MODE_LINES, self.modeLinesRadio,
                            self.onShortcutModeLines)
        self.createShortcut(SC_MODE_VERTICES, self.modeVerticesRadio,
                            self.onShortcutModeVertices)
        self.createShortcut(SC_MODE_MANUAL, self.modeManualRadio,
                            self.onShortcutModeManual)
        self.createShortcut(SC_ACCEPT, self.acceptButton,
                            self.onShortcutAccept)
        self.createShortcut(SC_REJECT, self.rejectButton,
                            self.onShortcutReject)
        self.createShortcut(SC_EDIT, self.editButton, self.onShortcutEdit)
        self.createShortcut(SC_UPDATE, self.updateEditsButton,
                            self.onShortcutUpdate)

        try:
            from PyQt5.QtWebKitWidgets import QWebView

            helpView = QWebView()
            helpView.setUrl(QUrl('https://its4land.com/automate-it-wp5/'))
            self.helpWrapper.addWidget(helpView)
        except Exception as err:
            print(err)
            pass