Пример #1
0
    def __evt_yeahdoc_contextMenu(self, p):
        """
        context menu
        """
        item = self.yeahdoclisttree.currentItem()
        if item == None or item.isDisabled():
            pass
        else:
            menu = QMenu()

            # menu top
            action = QWidgetAction(self)
            title = item.text(0)
            if len(title) < 25:
                for i in range(len(title), 25):
                    title = title + "  &nbsp;"
            action.setDefaultWidget(
                QLabel("&nbsp;&nbsp;<img  src='%s'/>  &nbsp;%s" % (getPath("iconDir", "yeahdoc/item.png"), title)))
            menu.addAction(action)

            menu.addSeparator()

            menu.addAction(self.__actions["__yeahdoc_open__"])
            menu.addAction(self.__actions["__yeahdoc_edit__"])

            # change class
            change_class_menu = QMenu()
            entry = YeahdocDatasSupply().bb_read1_simple(item.getMark())
            current_categoryid = entry['categoryid']
            for class_item in YeahdocDatasSupply().bc_list():
                action = QAction(class_item["title"], self, \
                                 triggered=lambda re, item=item, categoryid=str(class_item["id"]): \
                                     self.__evt_change_category(categoryid, item))
                action.setIcon(QIcon(getPath("iconDir", "yeahdoc/flag/%s" % str(class_item["img"]))))
                action.setIconVisibleInMenu(True)
                # mark current class id menu checked
                if class_item['id'] == current_categoryid:
                    action.setCheckable(True)
                    action.setChecked(True)
                    action.setDisabled(True)
                change_class_menu.addAction(action)

            action = QAction(QIcon(getPath("iconDir", "yeahdoc/change.png")),
                             QApplication.translate("YeahdocList", "Change Category"), self)
            action.setIconVisibleInMenu(True)
            action.setMenu(change_class_menu)

            menu.addAction(action)

            menu.addAction(self.__actions["__yeahdoc_star__"])
            menu.addAction(self.__actions["__yeahdoc_rename__"])
            menu.addAction(self.__actions["__yeahdoc_delete__"])

            menu.addSeparator()

            setmode = True if entry['lock'] == 0 else False
            action = QWidgetAction(self)
            widget = QWidget()
            layout = QHBoxLayout()
            layout.setSpacing(0)
            layout.setMargin(0)
            widget.setLayout(layout)
            widgetMore = QWidget()
            widgetMore.setVisible(False)
            layoutMore = QHBoxLayout()
            layoutMore.setSpacing(0)
            layoutMore.setMargin(0)
            widgetMore.setLayout(layoutMore)

            layout.addWidget(QLabel("<img src='%s'/>" % getPath("iconDir", "yeahdoc/password.png")))
            passwordMore = QPushButton(
                QApplication.translate("YeahdocEditor", "Encrypt") if setmode else QApplication.translate(
                    "YeahdocEditor", "Decrypt"))
            passwordMore.setFlat(True)
            layout.addWidget(passwordMore)

            passwordInput = QLineEdit()
            passwordInput.setEchoMode(QLineEdit.Password)
            passwordInput.setMaximumWidth(70)

            layoutMore.addWidget(passwordInput)

            if setmode:
                passwordInputAgain = QLineEdit()
                passwordInputAgain.setEchoMode(QLineEdit.Password)
                passwordInputAgain.setMaximumWidth(70)
                layoutMore.addWidget(QLabel(QApplication.translate("YeahdocEditor", "Re")))
                layoutMore.addWidget(passwordInputAgain)

            passwordSubmit = QPushButton("OK")
            passwordSubmit.setFlat(True)
            layoutMore.addWidget(passwordSubmit)

            layout.addWidget(widgetMore)
            layout.addItem(QSpacerItem(0, 20, QSizePolicy.Expanding, QSizePolicy.Expanding))

            action.setDefaultWidget(widget)
            QObject.connect(passwordSubmit, SIGNAL("clicked ()"),
                            lambda: self.__evt_password(setmode, passwordInput.text(),
                                                        passwordInputAgain.text() if setmode else ""))
            QObject.connect(passwordMore, SIGNAL("clicked ()"),
                            lambda: widgetMore.setVisible(not widgetMore.isVisible()))

            menu.addAction(action)

            # show it.
            menu.exec_(self.mapToGlobal(self.yeahdoclisttree.mapTo(self, p)))
Пример #2
0
class SystemTray(QSystemTrayIcon):
    def __init__(self, parent=None):
        super(SystemTray, self).__init__(parent)
        self.createActions()
        self.EdgeAction()
        self.UploadAction()
        self.addActions()
        self.setContextMenu(self.menu)

    def showWidget(self):
        if w.isVisible():
            w.hide()
            self.show_action.setIcon(QIcon(QPixmap("./icons/加号.png")))
        else:
            w.showNormal()
            self.show_action.setIcon(QIcon(QPixmap("./icons/减号.png")))

    def exitWidget(self):
        sys.exit(app.exec_())

    def createActions(self):
        self.setIcon(QIcon('./icons/sandbox.png'))
        self.menu = QMenu(QApplication.desktop())
        self.menu.setStyleSheet("QMenu{text-align:center}")
        self.show_action = QWidgetAction(self.menu)
        self.exit_action = QWidgetAction(self.menu)

        self.show_action.triggered.connect(self.showWidget)
        self.exit_action.triggered.connect(self.exitWidget)

        self.show_action.setIcon(QIcon(QPixmap("./icons/减号.png")))
        self.show_action.setIconText("显示主界面")
        self.exit_action.setIcon(QIcon(QPixmap("./icons/关机.png")))
        self.exit_action.setIconText("退出程序")

    def EdgeAction(self):
        edge_widget = QWidget()
        self.edge_action = QWidgetAction(self.menu)
        self.searchLine = QLineEdit()
        self.searchLine.setPlaceholderText('search in sandbox')
        self.searchButton = QPushButton()
        self.searchButton.setIcon(QIcon(QPixmap("./icons/search.png")))
        self.searchButton.setObjectName("searchButton")
        self.searchButton.setIconSize(QSize(18, 18))
        self.searchButton.setStyleSheet("QPushButton{border:2px}")
        self.searchButton.clicked.connect(self.searchInSanbox)
        layout = QGridLayout()
        layout.addWidget(self.searchLine, 1, 1)
        layout.addWidget(self.searchButton, 1, 0)
        edge_widget.setLayout(layout)
        self.edge_action.setDefaultWidget(edge_widget)

    def UploadAction(self):
        upload_widget = QWidget()
        self.upload_action = QWidgetAction(self.menu)
        self.upload_action.setIcon(QIcon(QPixmap("./icons/file.png")))
        self.upload_action.setIconText("加载文件")
        self.upload_action.triggered.connect(self.getfile)
        # self.upload_button = QPushButton("加载文件")
        # self.upload_button.setIcon(QIcon(QPixmap("./icons/file.png")))
        # self.upload_button.setIconSize(QSize(15,15))
        # self.upload_button.setStyleSheet("QPushButton{border:2px}")
        # self.upload_button.clicked.connect(self.getfile)
        # layout = QVBoxLayout()
        # layout.addWidget(self.upload_button)
        # upload_widget.setLayout(layout)
        # self.upload_action.setDefaultWidget(upload_widget)

    def searchInSanbox(self):
        print('hello')
        url = self.searchLine.text()
        if url == '':
            url = 'https://www.baidu.com'
        # self.searchLine.setText(None)
        sendurl(url)

    def getfile(self):
        q_file = QFileDialog()
        q_file.setFileMode(QFileDialog.AnyFile)
        q_file.setFilter(QDir.Files)
        if q_file.exec():
            filenames = q_file.selectedFiles()
            print(filenames[0])
            s = filenames[0]
            sendfile(s)

    def addActions(self):
        self.menu.addAction(self.edge_action)
        self.menu.addAction(self.upload_action)
        self.menu.addAction(self.show_action)
        self.menu.addAction(self.exit_action)