예제 #1
0
        def create_servers_group(servers):
            """Create an action group for the specified servers."""
            servers_group = QActionGroup(self)
            current_server = self._plugin.network.server

            for server in servers:
                is_connected = (
                    self._plugin.network.connected
                    and server["host"] == current_server["host"]
                    and server["port"] == current_server["port"]
                )
                server_text = "%s:%d" % (server["host"], server["port"])
                server_action = QAction(server_text, menu)
                server_action._server = server
                server_action.setCheckable(True)
                server_action.setChecked(is_connected)
                servers_group.addAction(server_action)

            def server_action_triggered(server_action):
                """
                Called when a action is clicked. Connects to the new server
                or disconnects from the old server.
                """
                was_connected = (
                    self._plugin.network.connected
                    and self._plugin.network.server == server
                )
                self._plugin.network.stop_server()
                self._plugin.network.disconnect()
                if not was_connected:
                    self._plugin.network.connect(server_action._server)

            servers_group.triggered.connect(server_action_triggered)

            return servers_group
예제 #2
0
    def _context_menu(self, point):
        """
        Called when the widget is right-clicked to display the context menu.

        :param point: the location where the click happened
        """
        logger.debug("Opening widget context menu")
        menu = QMenu(self)

        # Add the network settings
        settings = QAction('Network Settings', menu)
        iconPath = self._plugin.resource('settings.png')
        settings.setIcon(QIcon(iconPath))

        # Add a handler on the action
        def settingsActionTriggered():
            dialog = NetworkSettingsDialog(self._plugin)
            dialog.exec_()

        settings.triggered.connect(settingsActionTriggered)
        menu.addAction(settings)

        # Add each of the servers
        if self._plugin.core.servers:
            menu.addSeparator()
            serverGroup = QActionGroup(self)

            def serverActionTriggered(serverAction):
                if not self._plugin.network.connected and \
                       serverAction.isChecked():
                    self._plugin.network.connect(serverAction._server.host,
                                                 serverAction._server.port)
                else:
                    self._plugin.network.disconnect()

            for server in self._plugin.core.servers:
                isConnected = self._plugin.network.connected \
                              and server.host == self._plugin.network.host \
                              and server.port == self._plugin.network.port
                serverAction = QAction('%s:%d' % (server.host, server.port),
                                       menu,
                                       checkable=True)
                serverAction._server = server
                serverAction.setChecked(isConnected)
                serverGroup.addAction(serverAction)

            menu.addActions(serverGroup.actions())
            serverGroup.triggered.connect(serverActionTriggered)

        # Show the context menu
        menu.exec_(self.mapToGlobal(point))
예제 #3
0
파일: widgets.py 프로젝트: kindow/IDArling
    def _context_menu(self, point):
        """
        Called when the widget is right-clicked to display the context menu.

        :param point: the location where the click happened
        """
        logger.debug("Opening widget context menu")
        menu = QMenu(self)

        # Add the settings
        settings = QAction('Settings...', menu)
        iconPath = self._plugin.resource('settings.png')
        settings.setIcon(QIcon(iconPath))

        def dialog_accepted(dialog):
            name, color, notifications, navbarColorizer = dialog.get_result()

        # Add a handler on the action
        def settingsActionTriggered():
            dialog = SettingsDialog(self._plugin)
            dialog.accepted.connect(partial(dialog_accepted, dialog))
            dialog.exec_()

        settings.triggered.connect(settingsActionTriggered)
        menu.addAction(settings)

        menu.addSeparator()
        integrated = QAction('Integrated Server', menu)
        integrated.setCheckable(True)

        def integratedActionTriggered():
            if integrated.isChecked():
                self._plugin.network.start_server()
            else:
                self._plugin.network.stop_server()

        integrated.setChecked(self._plugin.network.server_running())
        integrated.triggered.connect(integratedActionTriggered)
        menu.addAction(integrated)

        # Add each of the servers
        if self._plugin.core.servers:
            menu.addSeparator()
            serverGroup = QActionGroup(self)
            currentServer = self._plugin.network.server

            def serverActionTriggered(serverAction):
                isConnected = self._plugin.network.connected \
                    and server["host"] == currentServer["host"] \
                    and server["port"] == currentServer["port"]
                self._plugin.network.stop_server()
                if not isConnected:
                    self._plugin.network.connect(serverAction._server)

            for server in self._plugin.core.servers:
                isConnected = self._plugin.network.connected \
                              and server["host"] == currentServer["host"] \
                              and server["port"] == currentServer["port"]
                serverText = '%s:%d' % (server["host"], server["port"])
                serverAction = QAction(serverText, menu)
                serverAction._server = server
                serverAction.setCheckable(True)
                serverAction.setChecked(isConnected)
                serverGroup.addAction(serverAction)

            menu.addActions(serverGroup.actions())
            serverGroup.triggered.connect(serverActionTriggered)

        # Show the context menu
        menu.exec_(self.mapToGlobal(point))