コード例 #1
0
    def do_init_defects_menu(self):
        """Inititializes the defects menu:
        - load defects
        - export defects
        
        Export defects uses some external python excel library.
        """
        menubar = QMenuBar(self.toolbar)
        menubar.setObjectName("VeriSOModule.LoadDefectsMenuBar")
        menubar.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        menu = QMenu(menubar)
        menu.setTitle(_translate(self.module, "Bemerkungen", None))

        action = QAction(_translate(self.module, "Bemerkungen laden", None),
                         self.iface.mainWindow())
        action.triggered.connect(self.do_load_defects)
        menu.addAction(action)

        action = QAction(
            _translate(self.module, "Bemerkungen exportieren", None),
            self.iface.mainWindow())
        action.triggered.connect(self.do_export_defects)
        menu.addAction(action)

        menubar.addMenu(menu)
        self.toolbar.insertWidget(self.beforeAction, menubar)
コード例 #2
0
    def get_checks_menubar(self, check_topics):
        menubar = QMenuBar(self.toolbar)
        menubar.setObjectName("VeriSOModule.LoadChecksMenuBar")
        menubar.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        menu = QMenu(menubar)
        menu.setTitle(_translate(self.module, "Checks", None))

        locale = QSettings().value('locale/userLocale')[0:2]
        for check_topic in check_topics:
            checks = check_topics[check_topic]["checks"]
            if not checks:
                message = "The topic %s has no valid checks: skiping." % (
                    check_topic)
                self.message_bar.pushWarning(
                    "Warning", _translate(self.module, message, None))

                # this topic has no valid checks
                continue

            single_check_menu = menu.addMenu(str(check_topic))

            for check in checks:
                check_name = check["name"]

                # Same multilingual strategy as in get_check_topics().
                try:
                    keys = list(check_name.keys())
                    try:
                        check_name = str(check_name[locale])
                        # language found
                    except:
                        # language *not* found
                        check_name = str(list(check_name.values())[0])
                except:
                    check_name = str(check_name)

                if check_name == "separator":
                    single_check_menu.addSeparator()
                else:
                    action = QAction(check_name, self.iface.mainWindow())

                    try:
                        shortcut = check["shortcut"]
                        action.setShortcut(shortcut)
                    except:
                        pass

                    single_check_menu.addAction(action)
                    topic_dir = check_topics[check_topic]['topic_dir']
                    action.triggered.connect(
                        lambda checked, complex_check=check, folder=topic_dir:
                        self.do_show_complex_check(folder, complex_check))

        menubar.addMenu(menu)
        return menubar
コード例 #3
0
    def do_init_baselayer_menu(self):
        """Initialize baselayer menu:

        Adds the menu and reads all baselayers from the yaml file
        and adds them into the menu.

        Language support is working!
        """
        menubar = QMenuBar(self.toolbar)
        menubar.setObjectName("VeriSOModule.LoadBaselayerMenuBar")
        menubar.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        menu = QMenu(menubar)
        menu.setTitle(_translate(self.module, "Baselayer", None))

        locale = QSettings().value('locale/userLocale')[0:2]

        baselayers = get_baselayers(self.module)
        if not baselayers:
            message = "Could not load baselayer definitions file."
            self.message_bar.pushMessage("Error",
                                         _translate(self.module, message,
                                                    None),
                                         level=Qgis.Critical,
                                         duration=0)
            return

        for baselayer in baselayers["baselayer"]:
            baselayer_title = baselayer["title"]
            try:
                keys = list(baselayer_title.keys())
                try:
                    baselayer_title = str(baselayer_title[locale])
                    # language found
                except:
                    # language *not* found
                    baselayer_title = str(list(baselayer_title.values())[0])
            except:
                baselayer_title = str(baselayer_title)

            baselayer["title"] = baselayer_title

            action = QAction(baselayer_title, self.iface.mainWindow())
            menu.addAction(action)
            action.triggered.connect(
                lambda checked, layer=baselayer: self.do_show_baselayer(layer))

        menubar.addMenu(menu)
        self.toolbar.insertWidget(self.beforeAction, menubar)
        if (sys.platform == 'darwin'):
            menubar.setNativeMenuBar(False)
コード例 #4
0
    def run(self):
        """Run method that loads and starts the plugin"""

        if not self.pluginIsActive:
            self.pluginIsActive = True

            # print "** STARTING WBNMViewer"

            # dockwidget may not exist if:
            #    first run of plugin
            #    removed on close (see self.onClosePlugin method)
            if self.dockwidget == None:
                # Create the dockwidget (after translation) and keep reference
                self.dockwidget = WBNMViewerDockWidget()
                self.dockwidget.plotButton.clicked.connect(
                    self.plot_hydrograph)
                self.dockwidget.filterEdit.textChanged.connect(
                    self.filter_storms)
                self.dockwidget.boxButton.clicked.connect(
                    self.plot_box_whisker)
                self.dockwidget.ensembleButton.clicked.connect(
                    self.plot_ensembles)

                # set up menubar
                self.window = QWidget()
                self.vbox = QVBoxLayout()
                self.window.setLayout(self.vbox)
                self.menuBar = QMenuBar()
                self.vbox.addWidget(self.menuBar)
                self.dockwidget.dockWidgetContents.layout().setSpacing(0)
                self.dockwidget.dockWidgetContents.layout().setMargin(0)
                self.dockwidget.dockWidgetContents.layout().setContentsMargins(
                    0, 0, 0, 0)
                self.dockwidget.dockWidgetContents.layout().insertWidget(
                    0, self.window)

                fileMenu = self.menuBar.addMenu("&File")
                self.loadWBNMMetaFile = QAction("Load WBNM *_Meta.out file",
                                                self.window)
                fileMenu.addAction(self.loadWBNMMetaFile)
                self.loadWBNMMetaFile.triggered.connect(self.process_meta_file)

                # set up data tab

            # connect to provide cleanup on closing of dockwidget
            self.dockwidget.closingPlugin.connect(self.onClosePlugin)

            # show the dockwidget
            # TODO: fix to allow choice of dock location
            self.iface.addDockWidget(Qt.BottomDockWidgetArea, self.dockwidget)
            self.dockwidget.show()
コード例 #5
0
    def doShowProjectId(self):
        menuBar = QMenuBar(self.toolbar)
        menuBar.setObjectName("VeriSOModule.ShowProjectIdMenuBar")
        menuBar.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        menu = QMenu(menuBar)
        self.project_id = self.settings.value("project/id")
        menu.setTitle(
            QCoreApplication.translate(self.module,
                                       "Aktives Projekt: " + self.project_id))

        menuBar.addMenu(menu)
        menuBar.setEnabled(False)
        self.toolbar.addWidget(menuBar)
コード例 #6
0
    def do_init_topics_tables_menu(self):
        """Creates the topics and tables loader menu.
        Topics and tables are sorted alphanumerically. I'm not sure if ili2pg
        saves enough
        information in the database to find out the interlis model order.

        At the moment there is no locale support here.
        Seems to be not very handy without mapping tables anyway...
        """
        menubar = QMenuBar(self.toolbar)
        menubar.setObjectName("VeriSOModule.LoadTopicsTablesMenuBar")
        menubar.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        menu = QMenu(menubar)
        menu.setTitle(_translate(self.module, "Tables", None))

        topics = get_topics_tables(self.module_name)
        if not topics:
            message = "Something went wrong catching the topics/tables list " \
                      "from the database."
            self.message_bar.pushMessage(self.module_name,
                                         _translate(self.module, message,
                                                    None),
                                         Qgis.Critical,
                                         duration=0)
            return

        for topic in topics:
            topic_menu = menu.addMenu(str(topic["topic"]))

            action = QAction(_translate(self.module, "Load Topic", None),
                             self.iface.mainWindow())
            topic_menu.addAction(action)
            topic_menu.addSeparator()
            action.triggered.connect(
                lambda checked, topic=topic: self.do_show_topic(topic))

            layers = get_layers_from_topic(topic)
            for my_layer in layers:
                action = QAction(my_layer["title"], self.iface.mainWindow())
                topic_menu.addAction(action)
                action.triggered.connect(lambda checked, layer=my_layer: self.
                                         do_show_single_topic_layer(layer))

        menubar.addMenu(menu)
        self.toolbar.insertWidget(self.beforeAction, menubar)
        if (sys.platform == 'darwin'):
            menubar.setNativeMenuBar(False)
コード例 #7
0
    def initTopMenu(self):
        #adding
        #topMenu=self.titleBarWidget()
        #topMenu=self.layout().menuBar()
        topMenu = QMenuBar()
        #self.layout().setMenuBar(self.topMenu)
        #topMenu=QMenuBar(self)#works but need to click '>>' button

        addMenu = topMenu.addMenu("add")
        loadSecAct = addMenu.addAction('load .sec...')
        loadSecAct.triggered.connect(self.loadSec)
        loadRteAct = addMenu.addAction('load .rte...')
        loadRteAct.triggered.connect(self.loadRTE)
        loadSrAct = addMenu.addAction('load .sr...')
        loadSrAct.triggered.connect(self.loadSr)

        #save
        saveMenu = topMenu.addMenu("save")

        saveSrAct = saveMenu.addAction('save as .sr...')
        saveSrAct.triggered.connect(self.saveAsSr)

        saveSecAct = saveMenu.addAction('save as .sec...')
        saveSecAct.triggered.connect(self.saveAsSec)

        saveSecAct = saveMenu.addAction('save as .rte...')
        saveSecAct.triggered.connect(self.saveAsRte)

        setingsMenu = topMenu.addMenu("settings")
        setDatabaseAct = setingsMenu.addAction('set database...')
        setDatabaseAct.triggered.connect(self.dd.show)

        #self.toolBar=QToolBar(self)
        #toolbar=self.addToolBar()
        #topMenu = QMenuBar(self)
        #topMenu.setDefaultUp(False)
        #addMenu=topMenu.addMenu("add")
        #saveMenu=topMenu.addMenu("save")
        #self.layout().addWidget(topMenu)
        self.main_widget.layout().setMenuBar(topMenu)
コード例 #8
0
    def setupUi(self):
        self.setWindowTitle(self.tr("DB Manager"))
        self.setWindowIcon(QIcon(":/db_manager/icon"))
        self.resize(QSize(700, 500).expandedTo(self.minimumSizeHint()))

        # create central tab widget and add the first 3 tabs: info, table and preview
        self.tabs = QTabWidget()
        self.info = InfoViewer(self)
        self.tabs.addTab(self.info, self.tr("Info"))
        self.table = TableViewer(self)
        self.tabs.addTab(self.table, self.tr("Table"))
        self.preview = LayerPreview(self)
        self.tabs.addTab(self.preview, self.tr("Preview"))
        self.setCentralWidget(self.tabs)

        # display close button for all tabs but the first 3 ones, i.e.
        # HACK: just hide the close button where not needed (GS)
        self.tabs.setTabsClosable(True)
        self.tabs.tabCloseRequested.connect(self.close_tab)
        tabbar = self.tabs.tabBar()
        for i in range(3):
            btn = tabbar.tabButton(i, QTabBar.RightSide) if tabbar.tabButton(i, QTabBar.RightSide) else tabbar.tabButton(i, QTabBar.LeftSide)
            btn.resize(0, 0)
            btn.hide()

        # Creates layout for message bar
        self.layout = QGridLayout(self.info)
        self.layout.setContentsMargins(0, 0, 0, 0)
        spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
        self.layout.addItem(spacerItem, 1, 0, 1, 1)
        # init messageBar instance
        self.infoBar = QgsMessageBar(self.info)
        sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        self.infoBar.setSizePolicy(sizePolicy)
        self.layout.addWidget(self.infoBar, 0, 0, 1, 1)

        # create database tree
        self.dock = QDockWidget("Tree", self)
        self.dock.setObjectName("DB_Manager_DBView")
        self.dock.setFeatures(QDockWidget.DockWidgetMovable)
        self.tree = DBTree(self)
        self.dock.setWidget(self.tree)
        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock)

        # create status bar
        self.statusBar = QStatusBar(self)
        self.setStatusBar(self.statusBar)

        # create menus
        self.menuBar = QMenuBar(self)
        self.menuDb = QMenu(self.tr("&Database"), self)
        self.menuBar.addMenu(self.menuDb)
        self.menuSchema = QMenu(self.tr("&Schema"), self)
        actionMenuSchema = self.menuBar.addMenu(self.menuSchema)
        self.menuTable = QMenu(self.tr("&Table"), self)
        actionMenuTable = self.menuBar.addMenu(self.menuTable)
        self.menuHelp = None  # QMenu(self.tr("&Help"), self)
        # actionMenuHelp = self.menuBar.addMenu(self.menuHelp)

        self.setMenuBar(self.menuBar)

        # create toolbar
        self.toolBar = QToolBar("Default", self)
        self.toolBar.setObjectName("DB_Manager_ToolBar")
        self.addToolBar(self.toolBar)

        # create menus' actions

        # menu DATABASE
        sep = self.menuDb.addSeparator()
        sep.setObjectName("DB_Manager_DbMenu_placeholder")
        sep.setVisible(False)

        self.actionRefresh = self.menuDb.addAction(QIcon(":/db_manager/actions/refresh"), self.tr("&Refresh"),
                                                   self.refreshActionSlot, QKeySequence("F5"))
        self.actionSqlWindow = self.menuDb.addAction(QIcon(":/db_manager/actions/sql_window"), self.tr("&SQL window"),
                                                     self.runSqlWindow, QKeySequence("F2"))
        self.menuDb.addSeparator()
        self.actionClose = self.menuDb.addAction(QIcon(), self.tr("&Exit"), self.close, QKeySequence("CTRL+Q"))

        # menu SCHEMA
        sep = self.menuSchema.addSeparator()
        sep.setObjectName("DB_Manager_SchemaMenu_placeholder")
        sep.setVisible(False)

        actionMenuSchema.setVisible(False)

        # menu TABLE
        sep = self.menuTable.addSeparator()
        sep.setObjectName("DB_Manager_TableMenu_placeholder")
        sep.setVisible(False)

        self.actionImport = self.menuTable.addAction(QIcon(":/db_manager/actions/import"),
                                                     self.tr("&Import layer/file"), self.importActionSlot)
        self.actionExport = self.menuTable.addAction(QIcon(":/db_manager/actions/export"), self.tr("&Export to file"),
                                                     self.exportActionSlot)
        self.menuTable.addSeparator()
        #self.actionShowSystemTables = self.menuTable.addAction(self.tr("Show system tables/views"), self.showSystemTables)
        #self.actionShowSystemTables.setCheckable(True)
        #self.actionShowSystemTables.setChecked(True)
        actionMenuTable.setVisible(False)

        # add actions to the toolbar
        self.toolBar.addAction(self.actionRefresh)
        self.toolBar.addAction(self.actionSqlWindow)
        self.toolBar.addAction(self.actionImport)
        self.toolBar.addAction(self.actionExport)
コード例 #9
0
def qgis_app(request):
    """
    Creates a QGIS application, a QGIS Interface, a QGIS Settings and a set of loaded plugins. The fixture can be
    parametrized with the following options:
    - plugin_names: Plugin names to load
    - plugin_paths: Directories where the plugins are located
    - locale: Language code with the translation that the plugin has to be loaded

    :param request: Fixture request. It contains the indirect parameters for fixture setup
    :type request: FixtureRequest
    :return: The QGIS application objects
    :rtype: (QgsApplication, QgisInterface, QgsSettings, (list of object) or None)
    """
    # Collect parameters
    plugin_names = request.param[
        'plugin_names'] if 'plugin_names' in request.param else None
    plugin_paths = request.param['plugin_paths'] if 'plugin_paths' in request.param \
        else [str(Path(__file__).parent.parent.parent) + '/src']
    locale = request.param['locale'] if 'locale' in request.param else 'EN'
    # Create a QGIS Application
    # noinspection PyTypeChecker
    QgsApplication.setPrefixPath('/usr', True)
    qgs = QgsApplication([], True)
    qgs.initQgis()
    # Mock the QGIS Interface
    iface = unittest.mock.Mock(spec=QgisInterface)
    main_window = QMainWindow()
    iface.mainWindow.return_value = main_window
    canvas = QgsMapCanvas(main_window)
    canvas.resize(QSize(400, 400))
    iface.mapCanvas.return_value = canvas
    # Create the settings
    global_settings = QSettings()
    global_settings.setValue('locale/userLocale', locale)
    qgs_settings = QgsSettings()
    qgs_settings_file = qgs_settings.fileName()
    menu = QMenuBar()
    main_window.setMenuBar(menu)
    qgis.utils.iface = iface
    for plugin_path in plugin_paths:
        sys.path.insert(0, plugin_path)
        qgis.utils.plugin_paths.append(plugin_path)
    qgis.utils.updateAvailablePlugins()
    if plugin_names is not None:
        plugins = list()
        if isinstance(plugin_names, str):
            plugin_names = [plugin_names]
        for plugin_name in plugin_names:
            assert qgis.utils.loadPlugin(plugin_name)
            assert qgis.utils.startPlugin(plugin_name)
            plugins.append(qgis.utils.plugins[plugin_name])
        yield qgs, iface, qgs_settings, plugins
        for plugin_name in plugin_names:
            qgis.utils.unloadPlugin(plugin_name)
            del qgis.utils.plugin_times[plugin_name]
        if plugin_paths is not None:
            for plugin_path in plugin_paths:
                sys.path.remove(plugin_path)
                qgis.utils.plugin_paths.remove(plugin_path)
        qgis.utils.updateAvailablePlugins()
    else:
        yield qgs, iface, qgs_settings, None

    os.remove(qgs_settings_file)
    del qgs
    def initTopMenu(self):
        topMenu = QMenuBar()

        ######################load
        loadMenu = topMenu.addMenu("Load")
        loadSecAct = loadMenu.addAction('Load .sec...')
        loadSecAct.triggered.connect(lambda: self.loadSec(clear=True))

        loadRteAct = loadMenu.addAction('Load .rte...')
        loadRteAct.triggered.connect(
            lambda: self.loadRteDialog.show(clearMode=True))

        loadSrAct = loadMenu.addAction('Load .sr...')
        loadSrAct.triggered.connect(lambda: self.loadSr(clear=True))

        ##################insert
        insertMenu = topMenu.addMenu("Insert")
        #insertMenu.setToolTipsVisible(True)
        insertMenu.hovered.connect(
            lambda action: action.parent().setToolTip(action.toolTip()))

        insertSecAct = insertMenu.addAction('Insert .sec...')
        insertSecAct.triggered.connect(
            lambda: self.loadSec(row=self.rowBox.value(), clear=False))
        insertSecAct.setToolTip(
            'insert .sec file using selected row and direction')

        insertRteAct = insertMenu.addAction('Insert .rte...')
        insertRteAct.triggered.connect(
            lambda: self.loadRteDialog.show(clearMode=False))
        insertRteAct.setToolTip('insert .rte file at row')

        insertSrAct = insertMenu.addAction('Insert .sr...')
        insertSrAct.triggered.connect(
            lambda: self.loadSr(row=self.rowBox.value(), clear=False))
        insertSrAct.setToolTip('insert .sr file at row')

        self.addFeatureAct = insertMenu.addAction('Add Selected Feature')
        self.addFeatureAct.setShortcut(QKeySequence(
            'Alt+1'))  #focus policy of dockwidget probably important here
        self.addFeatureAct.triggered.connect(self.addFeature)
        self.addFeatureAct.setToolTip(
            'Insert selected feature of layer using selected row and direction'
        )

        self.addDummyAct = insertMenu.addAction('Add Dummy')
        self.addDummyAct.setShortcut(QKeySequence(
            'Alt+2'))  #focus policy of dockwidget probably important here
        self.addDummyAct.triggered.connect(self.addDummy)
        self.addDummyAct.setToolTip('Insert dummy at row')

        ############################################save
        saveMenu = topMenu.addMenu("Save")

        saveSrAct = saveMenu.addAction('Save as .sr...')
        saveSrAct.triggered.connect(self.saveAsSr)

        saveSecAct = saveMenu.addAction('Save as .sec...')
        saveSecAct.triggered.connect(self.saveAsSec)

        saveRteAct = saveMenu.addAction('Save as .rte...')
        saveRteAct.triggered.connect(self.saveAsRte)

        #######################help

        helpMenu = topMenu.addMenu('Help')
        openHelpAct = helpMenu.addAction(
            'Open help (in your default web browser)')
        openHelpAct.triggered.connect(self.openHelp)

        self.main_widget.layout().setMenuBar(topMenu)
コード例 #11
0
    def initGui(self):

        # Prepare defects list dock
        self._create_defects_list_dock()

        # Prepare check results dock
        self._create_check_results_dock()

        # Qt offers some themes which you also can change in QGIS settings.
        # Since the background color of the menu toolbar can be different than
        # the background color of the button toolbars, the veriso toolbar
        # doesn't suit well. So we change it manually by finding out the
        # background color of one (e.g. file) toolbar and applying it
        # to the veriso toolbar.
        # This approach works (well?) for xfce 4.12 and standard (gtk+) theme.
        # We need to do this also in other methods when we add new menus :-(

        # 20150406: Only change QToolBar background color.
        # Otherweise the later added menus will have white hover color and
        # other quirks.
        # Strange: QToolBar stylesheet seems to need an border.
        background_color = self.iface.mainWindow().menuBar().palette().color(
            QPalette.Window).name()

        # main toolbar
        self.toolbar = self.iface.addToolBar("VeriSO")
        self.toolbar.setStyleSheet(
            "QToolBar {background-color: " + background_color +
            "; border: 0px solid " + background_color + ";}")

        self.toolbar.setObjectName("VeriSO.Main.ToolBar")
        self.toolbar.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))

        # trick for OSX compatibility
        if(sys.platform == 'darwin'):
            foobar = QMenuBar()

        # projects
        self.menubar_projects = QMenuBar()
        self.menubar_projects.setObjectName("VeriSO.Main.ProjectsMenuBar")
        self.menubar_projects.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred))
        self.menu_projects = QMenu()
        self.menu_projects.setTitle(tr("Projects"))
        self.menubar_projects.addMenu(self.menu_projects)

        # files
        self.menubar_file = QMenuBar()
        self.menubar_file.setObjectName("VeriSO.Main.FileMenuBar")
        self.menubar_file.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        self.menu_file = QMenu()
        self.menu_file.setTitle(tr("File"))
        self.import_project = QAction(tr("Import project"),
                                      self.iface.mainWindow())
        self.import_project.triggered.connect(self.do_import_project)
        self.export_project = QAction(tr("Export project"),
                                      self.iface.mainWindow())
        self.export_project.triggered.connect(self.do_export_project)
        self.delete_project = QAction(tr("Delete project"),
                                      self.iface.mainWindow())
        self.delete_project.triggered.connect(self.do_delete_project)
        self.menu_file.addActions([self.import_project, self.export_project,
                                   self.delete_project])
        self.menubar_file.addMenu(self.menu_file)

        # defects
        self.menubar_defects = QMenuBar(self.toolbar)
        self.menubar_defects.setObjectName("VeriSO.Main.LoadDefectsMenuBar")

        self.menubar_defects.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        self.menu_defects = QMenu(self.menubar_defects)
        self.menu_defects.setObjectName("VeriSO.Main.LoadDefectsMenu")
        self.menu_defects.setTitle(tr("Defects"))

        self.defects_list_action = QAction(tr("Show defects list dock"),
                                           self.iface.mainWindow())
        self.defects_list_action.setCheckable(True)
        self.defects_list_action.setChecked(True)
        self.defects_list_action.triggered.connect(
            self.toggle_defects_list_dock_visibility)
        self.menu_defects.addAction(self.defects_list_action)
        self.menubar_defects.addMenu(self.menu_defects)

        # settings
        self.menubar_settings = QMenuBar()
        self.menubar_settings.setObjectName("VeriSO.Main.SettingsMenuBar")
        self.menubar_settings.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        self.menu_settings = QMenu()
        self.menu_settings.setTitle(tr("Settings"))

        self.options = QAction(tr("Options"), self.iface.mainWindow())
        self.options.triggered.connect(self.do_options)
        self.menu_settings.addActions([self.options])
        self.menubar_settings.addMenu(self.menu_settings)

        # Add menus to toolbar.
        if(sys.platform == 'darwin'):
            self.toolbar.addWidget(foobar)
        self.toolbar.addWidget(self.menubar_projects)
        self.toolbar.addWidget(self.menubar_file)
        self.toolbar.addWidget(self.menubar_defects)
        self.toolbar.addWidget(self.menubar_settings)

        # for OSX compatibility. Without setNativeMenuBar(False) the veriso
        # menu will not appear
        if(sys.platform == 'darwin'):
            self.menubar_projects.setNativeMenuBar(False)
            self.menubar_file.setNativeMenuBar(False)
            self.menubar_defects.setNativeMenuBar(False)
            self.menubar_settings.setNativeMenuBar(False)

        # Initial load of project menu entries.
        self.do_load_projects_database()

        if(sys.platform == 'darwin'):
            self.iface.mainWindow().menuBar().setNativeMenuBar(False)
            self.iface.mainWindow().menuBar().setNativeMenuBar(True)
コード例 #12
0
ファイル: veriso.py プロジェクト: sogis/nplso_veriso
    def initGui(self):
        icon_path = ':/plugins/veriso/icon.png'

        # Qt offers some themes which you also can change in QGIS settings.
        # Since the background color of the menu toolbar can be different than
        # the background color of the button toolbars, the veriso toolbar
        # doesn't suit well. So we change it manually by finding out the
        # background color of one (e.g. file) toolbar and applying it
        # to the veriso toolbar.
        # This approach works (well?) for xfce 4.12 and standard (gtk+) theme.
        # We need to do this also in other methods when we add new menus :-(

        # 20150406: Only change QToolBar background color.
        # Otherweise the later added menus will have white hover color and
        # other quirks.
        # Strange: QToolBar stylesheet seems to need an border.
        background_color = self.iface.mainWindow().menuBar().palette().color(
            QPalette.Window).name()

        # main toolbar
        self.toolbar = self.iface.addToolBar("VeriSO")
        self.toolbar.setStyleSheet("QToolBar {background-color: " +
                                   background_color + "; border: 0px solid " +
                                   background_color + ";}")

        self.toolbar.setObjectName("VeriSO.Main.ToolBar")
        self.toolbar.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))

        # projects
        self.menubar_projects = QMenuBar()
        self.menubar_projects.setObjectName("VeriSO.Main.ProjectsMenuBar")
        self.menubar_projects.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred))
        self.menu_projects = QMenu()
        self.menu_projects.setTitle(tr("Projects"))
        self.menubar_projects.addMenu(self.menu_projects)

        # files
        self.menubar_file = QMenuBar()
        self.menubar_file.setObjectName("VeriSO.Main.FileMenuBar")
        self.menubar_file.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        self.menu_file = QMenu()
        self.menu_file.setTitle(tr("File"))
        self.import_project = QAction(tr("Import project"),
                                      self.iface.mainWindow())
        self.import_project.triggered.connect(self.do_import_project)
        self.delete_project = QAction(tr("Delete project"),
                                      self.iface.mainWindow())
        self.delete_project.triggered.connect(self.do_delete_project)
        self.menu_file.addActions([self.import_project, self.delete_project])
        self.menubar_file.addMenu(self.menu_file)

        # settings
        self.menubar_settings = QMenuBar()
        self.menubar_settings.setObjectName("VeriSO.Main.SettingsMenuBar")
        self.menubar_settings.setSizePolicy(
            QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
        self.menu_settings = QMenu()
        self.menu_settings.setTitle(tr("Settings"))

        self.options = QAction(tr("Options"), self.iface.mainWindow())
        self.options.triggered.connect(self.do_options)
        self.menu_settings.addActions([self.options])
        self.menubar_settings.addMenu(self.menu_settings)

        # Add menus to toolbar.
        self.toolbar.addWidget(self.menubar_projects)
        self.toolbar.addWidget(self.menubar_file)
        self.toolbar.addWidget(self.menubar_settings)

        # Initial load of project menu entries.
        self.do_load_projects_database()