def __evt_category_contextMenu(self, p): """ yeahdoc class context menu """ item = self.yeahdoccategorylist.currentItem() if item and item.getMark(): menu = QMenu() action = QAction(QIcon(getPath("iconDir", "yeahdoc/item.png")), item.text(), self) action.setIconVisibleInMenu(True) menu.addAction(action) menu.addSeparator() action = QAction(QIcon(getPath("iconDir", "yeahdoc/open.png")), QApplication.translate("YeahdocList", "Open"), self, \ triggered=lambda re, id=item.getMark(): self.__setupyeahdoclisttreeDatas(id)) action.setIconVisibleInMenu(True) menu.addAction(action) action = QAction(QIcon(getPath("iconDir", "yeahdoc/refresh.png")), QApplication.translate("YeahdocList", "Refresh"), self, \ triggered=self.refreshClasslist) action.setIconVisibleInMenu(True) menu.addAction(action) menu.addSeparator() # merge class merge_class_menu = QMenu() current_categoryid = item.getMark() for class_item in YeahdocDatasSupply().bc_list(): if not str(class_item['id']) == current_categoryid: action = QAction(class_item["title"], self, \ triggered=lambda re, item=item, categoryid=str(class_item["id"]): \ YeahdocDatasSupply().bc_merge(current_categoryid, categoryid)) action.setIcon(QIcon(getPath("iconDir", "yeahdoc/flag/%s" % str(class_item["img"])))) action.setIconVisibleInMenu(True) merge_class_menu.addAction(action) action = QAction(QIcon(getPath("iconDir", "yeahdoc/merge.png")), QApplication.translate("YeahdocList", "Merge"), self) action.setIconVisibleInMenu(True) action.setMenu(merge_class_menu) menu.addAction(action) menu.addAction(self.__actions["__yeahdoc_c_cleardatas__"]) menu.addSeparator() menu.addAction(self.__actions["__yeahdoc_c_new__"]) menu.addAction(self.__actions["__yeahdoc_c_edit__"]) menu.addAction(self.__actions["__yeahdoc_c_rename__"]) menu.addAction(self.__actions["__yeahdoc_c_delete__"]) menu.exec_(self.mapToGlobal(self.yeahdoccategorylist.mapTo(self, p)))
def __evt_toggle_view(self): """ show or hide the right part """ if self.rightpart.isVisible(): self.rightpart.setVisible(False) self.togglebtn.setIcon(QIcon(getPath("iconDir", "yeahdoc/left.png"))) else: self.rightpart.setVisible(True) self.togglebtn.setIcon(QIcon(getPath("iconDir", "yeahdoc/right.png")))
def __richflag(self): """ Show many many colorfull icon to make the yeahdoc flag . """ menu = QMenu(self) for item in os.listdir(getPath("iconDir", "yeahdoc/flag")): if item.endswith("png"): action = QAction(QIcon(getPath("iconDir", "yeahdoc/flag/%s" % item)), item, self, \ triggered=lambda re, item=item: self.__evt_richflag_menu_click(item)) action.setIconVisibleInMenu(True) menu.addAction(action) return menu
def activate(): """ used to make use of the plugin """ def __evt_new(): """ new yeahdoc evt """ yeahdoc = AdapterYeahdocItemViewerAndEditor(":new[Yeahdoc]") yeahdoc.setBufferon(True) yeahdoc.execute(":new[Yeahdoc]", QIcon(getPath('iconDir', 'yeahdoc/btn-new.png'))) def __evt_list(): """ show yeahdoc list """ yeahdoclist = AdapterMainYeahdocListView() yeahdoclist.execute(QApplication.translate("YeahdocList", "Yeahdoc"), QIcon(getPath('iconDir', 'yeahdoc/btn-list.png'))) # setup the mainwindow UI # New global action can be added to the list of global action sk = Seeking.new() sk.regAction("__yeahdoc_new", \ QAction(QIcon(getPath('iconDir', 'yeahdoc/btn-new.png')), \ QApplication.translate("YeahdocEditor", "New Yeahdoc"), sk, \ triggered=__evt_new)) sk.regAction("__yeahdoc_list", \ QAction(QIcon(getPath('iconDir', 'yeahdoc/btn-list.png')), \ QApplication.translate("YeahdocList", "Yeahdoc"), sk, \ triggered=__evt_list)) # set default shortcut sk.getAction("__yeahdoc_new").setShortcut(Prefs.new().getShortcut( "__yeahdoc_new", "Ctrl+N")) sk.getAction("__yeahdoc_list").setShortcut(Prefs.new().getShortcut( "__yeahdoc_list", "Ctrl+L")) # global toolbar toolbar = sk.addToolBar(QApplication.translate("Yeahdoc", "Yeahdoc")) toolbar.addAction(sk.getAction("__yeahdoc_new")) toolbar.addAction(sk.getAction("__yeahdoc_list")) # global menu sk.getMenu("file").addAction(sk.getAction("__yeahdoc_new")) sk.getMenu("file").addAction(sk.getAction("__yeahdoc_list")) sk.getMenu("file").addSeparator()
def invoke(self): self.setupUi(self) # our wysiwys editor self.__htmlWYSIWYG = HtmlWYSIWYG(self) self.layout().addWidget(self.__htmlWYSIWYG) self.passwordMore.setIcon(QIcon(getPath("iconDir", "yeahdoc/lock.png"))) self.passwordWidget.setVisible(False) self.downloadBtn.setIcon(QIcon(getPath("iconDir", "yeahdoc/download.png"))) self.saveBtn.setIcon(QIcon(getPath("iconDir", "yeahdoc/save.png"))) self.__initData() self.__initAction()
def invoke(self): """ the real setup function to show someting. """ self.setupUi(self) # make sure the first col show full self.yeahdoclisttree.header().setResizeMode(0, QHeaderView.ResizeToContents) self.__initAction() # toolbar . classToolbar = QToolBar() classToolbar.setIconSize(QSize(16, 16)) classToolbar.setMovable(False) self.rightsplitter.insertWidget(0, classToolbar) classToolbar.addAction(self.__actions["__yeahdoc_c_new__"]) classToolbar.addAction(self.__actions["__yeahdoc_c_edit__"]) classToolbar.addAction(self.__actions["__yeahdoc_c_rename__"]) classToolbar.addAction(self.__actions["__yeahdoc_c_delete__"]) classToolbar.addWidget(self.__evt_category_view()) # More useful gadgets self.togglebtn.setIcon(QIcon(getPath("iconDir", "yeahdoc/right.png"))) # read datas from db . self.__setupYeahdocCategoryDatas() self.__setupyeahdoclisttreeDatas()
def __evt_richflag_menu_click(self, item): """ IF ICON CHANGED , save flag will be active . """ self.setIcon(QIcon(getPath("iconDir", "yeahdoc/flag/%s" % item))) self.setText(item) self.emit(SIGNAL("onbuffer()"))
def __evt_list(): """ show yeahdoc list """ yeahdoclist = AdapterMainYeahdocListView() yeahdoclist.execute(QApplication.translate("YeahdocList", "Yeahdoc"), QIcon(getPath('iconDir', 'yeahdoc/btn-list.png')))
def __init__(self, parent=None, id="~"): """ init """ QWidget.__init__(self, parent) self.setupUi(self) # center this window screen = QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2) self.id = id self.flagBtn = RichFlagButton(self) self.linelayout.addWidget(self.flagBtn) self.desc = HtmlWYSIWYG() self.desc.setMinimumHeight(200) self.desclayout.addWidget(self.desc) if not self.id == "~": restore = YeahdocDatasSupply().bc_read1(self.id) self.flagBtn.setIcon(QIcon(getPath("iconDir", "yeahdoc/flag/%s" % str(restore['img'])))) self.flagBtn.setText(restore['img']) self.title.setText(restore['title']) self.desc.fill(restore['desc']) QObject.connect(self.btn, SIGNAL("clicked (QAbstractButton *)"), self.__evt_btn_click)
def activate(): def evt_adminscan(): Scanner() def evt_portscan(): PortScanner() sk = Seeking.new() sk.regAction("__webadminscan", QAction(QIcon(getPath('pluginsDir', 'webscan/admin.png')), "Admin Scan", Seeking.new(), triggered=evt_adminscan)) sk.regAction("__portscan", QAction(QIcon(getPath('pluginsDir', 'webscan/port.png')), "Port Scan", Seeking.new(), triggered=evt_portscan)) toolbar = sk.addToolBar("WebScan") toolbar.addAction(sk.getAction("__webadminscan")) toolbar.addAction(sk.getAction("__portscan"))
def __init__(self): QWidget.__init__(self) PluginBase.__init__(self) self.setKeepme("__portscan_scanner__") self.setupUi(self) self.execute("Port Scanner",QIcon(getPath('pluginsDir','webscan/port.png')))
def __evt_new(): """ new yeahdoc evt """ yeahdoc = AdapterYeahdocItemViewerAndEditor(":new[Yeahdoc]") yeahdoc.setBufferon(True) yeahdoc.execute(":new[Yeahdoc]", QIcon(getPath('iconDir', 'yeahdoc/btn-new.png')))
def __init__(self): QWidget.__init__(self) PluginBase.__init__(self) self.setKeepme("__portscan_scanner__") self.setupUi(self) self.execute("Port Scanner", QIcon(getPath('pluginsDir', 'webscan/port.png')))
def save(self): """ Handle save event . Before saved , checked if has password set . The password is encrypt with pyDes """ if self.bufferon(): # get the password password = "" password1 = self.password1.text() password2 = self.password2.text() if not password1 == "" or not password2 == "": if password1 == password2: password = password1 else: QMessageBox.warning(Seeking.new(), "error", "Not match") return # loading effert Seeking.new().overlay.show() # if it's a new yeahdoc item instance if self.keepme() is "" or self.keepme().startswith(":"): idx = "~" # notice we contact the str at __init__ method else: idx = self.keepme().split('~')[0] # Values title = self.titleInput.text() content = self.__htmlWYSIWYG.accessPoint().mainFrame().toHtml() img = self.flagBtn.text() tags = self.tagsInput.text() categoryid = self.classlist.itemData(self.classlist.currentIndex()) # Just save will change it , update opreation will just repeat it self.setKeepme( YeahdocDatasSupply().bb_save(categoryid.toString(), title, tags, img, content, password, idx) + \ self.__Y_MARK_SUBFIX) # in order to make the suitable width of tab. title = "%s.." % title[0:8] if len(title) > 8 else title index = Seeking.new().tabs.indexOf(self) Seeking.new().tabs.setTabIcon(index, QIcon(getPath("iconDir", "yeahdoc/flag/%s" % img))) Seeking.new().tabs.setTabText(index, title) self.setBufferon(False) Seeking().new().overlay.hidestop() else: pass self.baseUrl = getMyBaseUrl() + "yeahdoc-images/" + self.keepme().split("~")[0] self.__htmlWYSIWYG.setBaseUrl(self.baseUrl)
def __initData(self): """ If the `url` is supplied , I will read datas from db and render it otherwise , I just show a empty entry . and noramlly ,setHtml->"" to make it editable """ # setup The classlist for item in YeahdocDatasSupply().bc_list(): self.classlist.addItem(item['title'], item['id']) # the flag menu self.flagBtn = RichFlagButton(self) self.linelayout.insertWidget(0, self.flagBtn) # if not new . if self.keepme() and not self.keepme().startswith(":"): self.baseUrl = getMyBaseUrl() + "yeahdoc-images/" + self.keepme().split("~")[0] self.__htmlWYSIWYG.setBaseUrl(self.baseUrl) yeahdoc = YeahdocDatasSupply().bb_read1(self.keepme().split("~")[0]) content = yeahdoc['content'] if yeahdoc["lock"] == 1: password, ok = QInputDialog(self).getText(self, "", "", QLineEdit.Password, "") if ok: try: content = sk_decode(content, password) self.password1.setText(password) self.password2.setText(password) except: QMessageBox.warning(Seeking.new(), "error", "Error password") raise Exception else: raise Exception else: self.password1.setText("") self.password2.setText("") self.flagBtn.setIcon(QIcon(getPath("iconDir", "yeahdoc/flag/%s" % yeahdoc['img']))) self.flagBtn.setText(yeahdoc['img']) self.titleInput.setText(yeahdoc['title']) self.__htmlWYSIWYG.fill(content) # flag restore for i in range(self.classlist.count()): if self.classlist.itemData(i) == yeahdoc['categoryid']: self.classlist.setCurrentIndex(i) break else: self.titleInput.setText("") self.__htmlWYSIWYG.fill("")
def __evt_yeahdoc_star(self): """ star it TODO: """ item = self.yeahdoclisttree.currentItem() if 0 == YeahdocDatasSupply().bb_toggle_star(item.getMark()): item.setIcon(2, QIcon(getPath("iconDir", "yeahdoc/star.png"))) else: item.setIcon(2, QIcon(None))
def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi(self) # center this window screen = QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2) self.title.setText("<img width='48' src='%s'/><b>%s-%s</b>" % (getPath("iconDir", "logo.png"), Name, Version))
def activate(): def _evt_help(self): """ Help event """ Help().execute(QApplication.translate("AboutSeeking", "Help"), QIcon(getPath("iconDir", 'help.png'))) def _evt_checkupdate(self): """ Check update """ Update().execute(QApplication.translate("AboutSeeking", "Check for Updates..."), QIcon(getPath("iconDir", 'help.png'))) def _evt_bug(self): """ Bug event """ Bug().execute(QApplication.translate("AboutSeeking", "Report bug"), QIcon(getPath("iconDir", 'help.png'))) def _evt_showversions(self): """ Show versions """ ShowVersions().execute(QApplication.translate("AboutSeeking", "Show Versions"), QIcon(getPath("iconDir", 'help.png'))) def _evt_aboutseeking(self): """ About Seeking """ About(Seeking.new()).show() sk = Seeking.new() sk.regAction("help", \ QAction(QIcon(getPath("iconDir", 'help.png')), QApplication.translate("AboutSeeking", "Help"), sk, triggered=_evt_help)) menu_about = sk.getMenu("help") menu_about.addAction(QAction(QApplication.translate("AboutSeeking", "About Seeking"), sk, \ triggered=_evt_aboutseeking)) menu_about.addAction(QAction(QApplication.translate("AboutSeeking", "About Qt"), sk, \ triggered=qApp.aboutQt)) menu_about.addAction(QAction(QApplication.translate("AboutSeeking", "Show Versions"), sk, \ triggered=_evt_showversions)) menu_about.addSeparator() menu_about.addAction(QAction(QApplication.translate("AboutSeeking", "Check for Updates..."), sk, \ triggered=_evt_checkupdate)) menu_about.addAction(QAction(QApplication.translate("AboutSeeking", "Report bug"), sk, \ triggered=_evt_bug)) menu_about.addSeparator() menu_about.addAction(QAction(QApplication.translate("AboutSeeking", "What's This?"), sk, triggered=QWhatsThis.enterWhatsThisMode)) menu_about.addAction(sk.getAction("help"))
def __evt_yeahdoc_Xopen(self, item, index): """ real open the item . """ if item == None or item.isDisabled(): pass else: id = item.getMark() simple_info = YeahdocDatasSupply().bb_read1_simple(id) editor = AdapterYeahdocItemViewerAndEditor(id) editor.execute(simple_info['title'], \ QIcon(getPath("iconDir", "yeahdoc/flag/%s" % simple_info['img'])))
def __init__(self): QWidget.__init__(self) PluginBase.__init__(self) self.setKeepme("__webadminscan_scanner__") self.setupUi(self) self.execute("Web Admin Scanner",QIcon(getPath('pluginsDir','webscan/admin.png'))) self.txts = os.listdir(getPath('pluginsDir','webscan/txt')) if len(self.txts) is 0: self.emit(SIGNAL("feedback"),0, 0, "You need supply some dictionary") else: self.emit(SIGNAL("feedback"),0, 0, "I'm ready ! Input a URL to Scan...") for txt in self.txts: lines = self.readlinenumber(getPath('pluginsDir','webscan/txt')+"/"+txt) qcb = QCheckBox(txt+"("+str(lines)+")") qcb.setChecked(True) qcb.setWindowTitle(txt) self.txtLayout.addWidget(qcb)
def _evt_start(self): self.textBrowser.setText("") self.startBtn.setDisabled(True) self.stopBtn.setDisabled(False) self.url = self.urlEdit.text() self.checks = [] for index in range(self.txtLayout.count()): qcb = self.txtLayout.itemAt(index).widget() if qcb is not None and isinstance(qcb, QCheckBox) and qcb.isChecked(): self.checks.append(qcb.windowTitle()) if self.url == "": self.emit(SIGNAL("feedback"), 0, 0, "Please supply a URL") self.startBtn.setDisabled(False) return if len(self.checks) is 0: self.emit(SIGNAL("feedback"), 0, 0, "Please supply a dictionary") self.startBtn.setDisabled(False) return self.preparedURL = [] for txt in self.checks: lines = open( getPath('pluginsDir', 'webscan/txt') + "/" + txt, "r").readlines() for line in lines: self.preparedURL.append(line.strip(' \t\n\r')) try: self.requestObject = urlparse(self.url) except Exception as ex: self.emit( SIGNAL("feedback"), 0, 0, "<span style='color:red'>An error occured :</span>%s" % str(ex)) self.emit( SIGNAL("feedback"), 0, 0, "<span style='color:red'>Exceptions :</span><pre>%s</pre>" % str(traceback.format_exc())) self.startBtn.setDisabled(False) return self.total = len(self.preparedURL) self.count = 1 self.lock = threading.Lock() self.threads = [] self.indexFlag = -10 for index in range(self.spinThreadNumber.value()): thread = ScannerThread(self, self.total, self.preparedURL, self.lock) thread.start() self.threads.append(thread)
def __setupyeahdoclisttreeDatas(self, categoryid=None): """ Set up the yeahdoc's datas By default """ # clear first self.yeahdoclisttree.clear() # read datas for item in YeahdocDatasSupply().bb_list(categoryid): treeitem = self.__YeahdocQTreeWidgetItem() treeitem.setText(0, item["title"]) treeitem.setIcon(0, QIcon(getPath("iconDir", "yeahdoc/flag/%s" % item["img"]))) treeitem.setText(1, item["createdate"]) treeitem.setMark(str(item['id'])) if 1 == item['star']: treeitem.setIcon(2, QIcon(getPath("iconDir", "yeahdoc/star.png"))) if 1 == item['lock']: treeitem.setIcon(3, QIcon(getPath("iconDir", "yeahdoc/lock.png"))) self.yeahdoclisttree.addTopLevelItem(treeitem)
def __setupYeahdocCategoryDatas(self): """ Read class list . """ self.yeahdoccategorylist.clear() # read yeahdoccategorylist = YeahdocDatasSupply().bc_list() for item in yeahdoccategorylist: newItem = self.__YeahdocCategoryQListWidgetItem() newItem.setMark(str(item["id"])) newItem.setText(item['title']) newItem.setIcon(QIcon(getPath("iconDir", "yeahdoc/flag/%s" % str(item["img"])))) self.yeahdoccategorylist.addItem(newItem)
def activate(): def _evt_list(): list_view = AdapterTodoList() list_view.execute("Todo List") sk = Seeking.new() sk.regAction("__todolist", QAction(QIcon(getPath('iconDir', 'todo/todolist.png')), "Show the todo list", Seeking.new(), triggered=_evt_list)) toolbar = sk.addToolBar("TODOLIST") toolbar.addAction(sk.getAction("__todolist")) sk.getMenu("file").addAction(sk.getAction("__todolist")) sk.getMenu("file").addSeparator()
def activate(): def evt_adminscan(): Scanner() def evt_portscan(): PortScanner() sk = Seeking.new() sk.regAction( "__webadminscan", QAction(QIcon(getPath('pluginsDir', 'webscan/admin.png')), "Admin Scan", Seeking.new(), triggered=evt_adminscan)) sk.regAction( "__portscan", QAction(QIcon(getPath('pluginsDir', 'webscan/port.png')), "Port Scan", Seeking.new(), triggered=evt_portscan)) toolbar = sk.addToolBar("WebScan") toolbar.addAction(sk.getAction("__webadminscan")) toolbar.addAction(sk.getAction("__portscan"))
def __init__(self): QWidget.__init__(self) PluginBase.__init__(self) self.setKeepme("__webadminscan_scanner__") self.setupUi(self) self.execute("Web Admin Scanner", QIcon(getPath('pluginsDir', 'webscan/admin.png'))) self.txts = os.listdir(getPath('pluginsDir', 'webscan/txt')) if len(self.txts) is 0: self.emit(SIGNAL("feedback"), 0, 0, "You need supply some dictionary") else: self.emit(SIGNAL("feedback"), 0, 0, "I'm ready ! Input a URL to Scan...") for txt in self.txts: lines = self.readlinenumber( getPath('pluginsDir', 'webscan/txt') + "/" + txt) qcb = QCheckBox(txt + "(" + str(lines) + ")") qcb.setChecked(True) qcb.setWindowTitle(txt) self.txtLayout.addWidget(qcb)
def activate(): def _evt_list(): list_view = AdapterTodoList() list_view.execute("Todo List") sk = Seeking.new() sk.regAction( "__todolist", QAction(QIcon(getPath('iconDir', 'todo/todolist.png')), "Show the todo list", Seeking.new(), triggered=_evt_list)) toolbar = sk.addToolBar("TODOLIST") toolbar.addAction(sk.getAction("__todolist")) sk.getMenu("file").addAction(sk.getAction("__todolist")) sk.getMenu("file").addSeparator()
def __evt_category_view(self): """ view by """ btn = QToolButton() btn.setIcon(QIcon(getPath("iconDir", "yeahdoc/view.png"))) menu = QMenu(btn) menu.addAction(QAction("ListMode", self, \ triggered=lambda: self.yeahdoccategorylist.setViewMode(QListView.ListMode))) menu.addAction(QAction("IconMode", self, \ triggered=lambda: self.yeahdoccategorylist.setViewMode(QListView.IconMode))) btn.setMenu(menu) return btn
def getMyBaseUrl(): STOREDIR = "" userDefinedDir = YeahdocExtConfig().getStoreDir() if userDefinedDir == None or userDefinedDir == "": #QMessageBox.information(Seeking().new(), "Welcome", "This is the first time you run yeahdoc-plguin: please select your store dir . \n if you do not know what to do , Select cancel ") temp = getPath("dataDir", "yeahdoc.db") if temp is None: if sys.platform.startswith("win"): STOREDIR = getPrccisePath("dataDir", "", "coredir") else: STOREDIR = getPrccisePath("dataDir", "", "userdir") STOREDIR = STOREDIR.replace("\\", "/") else: STOREDIR = temp.replace("yeahdoc.db", "") return STOREDIR
def _evt_start(self): self.textBrowser.setText("") self.startBtn.setDisabled(True) self.stopBtn.setDisabled(False) self.url = self.urlEdit.text() self.checks = [] for index in range(self.txtLayout.count()): qcb = self.txtLayout.itemAt(index).widget() if qcb is not None and isinstance(qcb, QCheckBox) and qcb.isChecked(): self.checks.append(qcb.windowTitle()) if self.url == "": self.emit(SIGNAL("feedback"),0, 0, "Please supply a URL") self.startBtn.setDisabled(False) return if len(self.checks) is 0: self.emit(SIGNAL("feedback"),0, 0, "Please supply a dictionary") self.startBtn.setDisabled(False) return self.preparedURL = [] for txt in self.checks: lines = open(getPath('pluginsDir','webscan/txt')+"/"+txt,"r").readlines() for line in lines: self.preparedURL.append(line.strip(' \t\n\r')) try: self.requestObject = urlparse(self.url) except Exception as ex: self.emit(SIGNAL("feedback"),0, 0, "<span style='color:red'>An error occured :</span>%s"%str(ex) ) self.emit(SIGNAL("feedback"),0, 0, "<span style='color:red'>Exceptions :</span><pre>%s</pre>" % str(traceback.format_exc()) ) self.startBtn.setDisabled(False) return self.total = len(self.preparedURL) self.count = 1 self.lock = threading.Lock() self.threads = [] self.indexFlag = -10 for index in range(self.spinThreadNumber.value()): thread = ScannerThread(self,self.total,self.preparedURL,self.lock) thread.start() self.threads.append(thread)
def getMyBaseUrl(): STOREDIR = "" userDefinedDir = YeahdocExtConfig().getStoreDir() if userDefinedDir == None or userDefinedDir == "": #QMessageBox.information(Seeking().new(), "Welcome", "This is the first time you run yeahdoc-plguin: please select your store dir . \n if you do not know what to do , Select cancel ") temp = getPath("dataDir", "yeahdoc.db") if temp is None: if sys.platform.startswith("win"): STOREDIR = getPrccisePath("dataDir", "","coredir") else: STOREDIR = getPrccisePath("dataDir", "","userdir") STOREDIR = STOREDIR.replace("\\", "/") else: STOREDIR = temp.replace("yeahdoc.db","") return STOREDIR
def __evt_password(self, setmode, password, repassword): """ set the password of the item. """ item = self.yeahdoclisttree.currentItem() if item and password: try: d = YeahdocDatasSupply().bb_read1(item.getMark())["content"] if setmode: if password == repassword: YeahdocDatasSupply().bb_lock(item.getMark(), password) QMessageBox.information(Seeking.new(), "Success", "%s Success" % QApplication.translate("YeahdocEditor", "Encrypt")) item.setIcon(3, QIcon(getPath("iconDir", "yeahdoc/lock.png"))) else: QMessageBox.warning(Seeking.new(), "error", "Not match") else: YeahdocDatasSupply().bb_unlock(item.getMark(), password) QMessageBox.information(Seeking.new(), "Success", "%s Success" % QApplication.translate("YeahdocEditor", "Decrypt")) item.setIcon(3, QIcon(None)) except Exception as e: raise e QMessageBox.warning(Seeking.new(), "error", "Error password")
def _evt_checkupdate(self): """ Check update """ Update().execute(QApplication.translate("AboutSeeking", "Check for Updates..."), QIcon(getPath("iconDir", 'help.png')))
def __init__(self, parent=None): QPushButton.__init__(self, parent) self.setMenu(self.__richflag()) # flag self.setIcon(QIcon(getPath("iconDir", "yeahdoc/flag/default.png"))) self.setText("default.png")
def _evt_bug(self): """ Bug event """ Bug().execute(QApplication.translate("AboutSeeking", "Report bug"), QIcon(getPath("iconDir", 'help.png')))
def _evt_showversions(self): """ Show versions """ ShowVersions().execute(QApplication.translate("AboutSeeking", "Show Versions"), QIcon(getPath("iconDir", 'help.png')))
def __init__(self): self.DATAFILE = getPath("dataDir", "todo/default.db")
def __initAction(self): """ action that handle the event """ # open self.__actions["__yeahdoc_open__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/open.png")), QApplication.translate("YeahdocList", "Open"), self, \ triggered=self.__evt_yeahdoc_Xopen0) # edit self.__actions["__yeahdoc_edit__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/edit.png")), QApplication.translate("YeahdocList", "Edit"), self, \ triggered=self.__evt_yeahdoc_Xopen0) # star self.__actions["__yeahdoc_star__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/star.png")), QApplication.translate("YeahdocList", "Toggle Star"), self, \ triggered=self.__evt_yeahdoc_star) # rename self.__actions["__yeahdoc_rename__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/rename.png")), QApplication.translate("YeahdocList", "Rename"), self, \ triggered=self.__evt_yeahdoc_rename) # delete self.__actions["__yeahdoc_delete__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/delete.png")), QApplication.translate("YeahdocList", "Delete"), self, \ triggered=self.__evt_yeahdoc_delete_item) # new self.__actions["__yeahdoc_c_new__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/categorynew.png")), QApplication.translate("YeahdocList", "new category"), self, \ triggered=self.__evt_category_new) # edit self.__actions["__yeahdoc_c_edit__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/categoryedit.png")), QApplication.translate("YeahdocList", "Edit"), self, \ triggered=self.__evt_category_edit) # rename self.__actions["__yeahdoc_c_rename__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/rename.png")), QApplication.translate("YeahdocList", "Rename"), self, \ triggered=self.__evt_category_rename) # delete self.__actions["__yeahdoc_c_delete__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/categorydelete.png")), QApplication.translate("YeahdocList", "Delete"), self, \ triggered=self.__evt_category_delete) # clear datas self.__actions["__yeahdoc_c_cleardatas__"] = \ QAction(QIcon(getPath("iconDir", "yeahdoc/cleardatas.png")), QApplication.translate("YeahdocList", "Clear"), self, \ triggered=self.__evt_category_cleardatas) self.__actions["__yeahdoc_open__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_open__", "Ctrl+O")) self.__actions["__yeahdoc_edit__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_edit__", "Ctrl+E")) self.__actions["__yeahdoc_star__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_star__", "Alt+M")) self.__actions["__yeahdoc_rename__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_rename__", "F2")) self.__actions["__yeahdoc_delete__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_delete__", "Delete")) self.__actions["__yeahdoc_c_new__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_c_new__", "")) self.__actions["__yeahdoc_c_edit__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_c_edit__", "")) self.__actions["__yeahdoc_c_rename__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_c_rename__", "")) self.__actions["__yeahdoc_c_delete__"].setShortcut(Prefs.new().getShortcut("__yeahdoc_c_delete__", "")) for key in self.__actions.keys(): self.__actions[key].setIconVisibleInMenu(True) self.addAction(self.__actions[key]) # toggle buttion QObject.connect(self.togglebtn, \ SIGNAL("clicked ()"), \ self.__evt_toggle_view) # double click the yeahdoc tree list,open a new window at main tab QObject.connect(self.yeahdoclisttree, \ SIGNAL("itemDoubleClicked (QTreeWidgetItem *,int)"), \ self.__evt_yeahdoc_Xopen) QObject.connect(self.yeahdoclisttree, \ SIGNAL("itemChanged (QTreeWidgetItem *,int)"), \ self.__evt_yeahdoc_rename_done) QObject.connect(self.yeahdoclisttree, \ SIGNAL("currentItemChanged (QTreeWidgetItem *,QTreeWidgetItem *)"), \ self.__evt_yeahdoc_currentItemChanged) QObject.connect(self.yeahdoccategorylist, \ SIGNAL("itemChanged (QListWidgetItem *)"), \ self.__evt_category_rename_done) QObject.connect(self.yeahdoccategorylist, \ SIGNAL("currentItemChanged (QListWidgetItem *,QListWidgetItem *)"), \ self.__evt_category_currentItemChanged) # right click the yeahdoc tree list and show a context menu QObject.connect(self.yeahdoclisttree, \ SIGNAL("customContextMenuRequested (const QPoint&)"), \ self.__evt_yeahdoc_contextMenu) QObject.connect(self.yeahdoccategorylist, \ SIGNAL("customContextMenuRequested (const QPoint&)"), \ self.__evt_category_contextMenu) # double click the yeahdoc class list QObject.connect(self.yeahdoccategorylist, \ SIGNAL("itemDoubleClicked (QListWidgetItem *)"), \ self.__evt_category_dbclick) QObject.connect(self.searchEdit, SIGNAL("textChanged (const QString&)"), self.__search)
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 + " " action.setDefaultWidget( QLabel(" <img src='%s'/> %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)))
def getConfigPages(): """ The config page """ return {"yeahdocPage": [QApplication.translate("YeahdocPage", "title"), \ getPath("iconDir", "yeahdoc/btn-list.png"), "plugins.yeahdoc.yeahdocPage", None], }