def __create_file_menu(self): """File""" file_menu = self.menu.addMenu("Файл") #--- act_hide add_todo_action = QAction("Добавить", self.parent) # add_todo_action.setShortcut("Ctrl+Q") add_todo_action.setStatusTip("Новое задание") add_todo_action.setIcon(QIcon(get_icon("add.png"))) add_todo_action.triggered.connect(self.show_add_todo) file_menu.addAction(add_todo_action) #--- act_hide hide_action = QAction("Скрыть", self.parent) # hide_action.setShortcut("Ctrl+Q") hide_action.setStatusTip("Скрыть приложение") hide_action.setIcon(QIcon(get_icon("close_hide.png"))) hide_action.triggered.connect(self.hide_window) file_menu.addAction(hide_action) file_menu.addSeparator() #--- act_exit exit_action = QAction("&Закрыть", self.parent) exit_action.setShortcut("Ctrl+Q") exit_action.setStatusTip("Закрыть приложение") exit_action.setIcon(QIcon(get_icon("delete.png"))) exit_action.triggered.connect(self.exit) file_menu.addAction(exit_action)
def show_cmenu(self, event): if self.current_item_id is None: return event.ignore() menu = QMenu() edit = QAction("Изменить", self) edit.setIcon(QIcon(get_icon("edit.png"))) remove = QAction("Удалить", self) remove.setIcon(QIcon(get_icon("delete.png"))) menu.addAction(edit) menu.addSeparator() statuses = QMenu("Изменить статус") statuses.setIcon(QIcon(get_icon("edit.png"))) menu.addMenu(statuses) for st_int in sorted(TODO_STATUSES.keys()): st_str = TODO_STATUSES[st_int] action = QAction(st_str, self) action.setIcon(QIcon(get_status_icon(st_int))) action.triggered.connect(lambda x, z=st_int: self.change_status(z)) statuses.addAction(action) priority = QMenu("Изменить приоритет") priority.setIcon(QIcon(get_icon("edit.png"))) menu.addMenu(priority) for pr_int in sorted(TODO_PRIORITYES.keys()): pr_str = TODO_PRIORITYES[pr_int] action = QAction(pr_str, self) action.setIcon(QIcon(get_priority_icon(pr_int))) action.triggered.connect( lambda x, z=pr_int: self.change_priority(z)) priority.addAction(action) menu.addSeparator() menu.addAction(remove) action = menu.exec_(event.globalPos()) # action = menu.exec_(event) if action == edit: self.show_edit() elif action == remove: self.show_remove() else: pass
def __create_help_menu(self): """Справка""" help_menu = self.menu.addMenu("Справка") #--- about help_menu_about = QAction("О программе", self.parent) help_menu_about.setIcon(QIcon(get_icon("about.png"))) help_menu_about.triggered.connect(self.show_about) help_menu.addAction(help_menu_about)
def __init__(self, icon, parent): super(SystemTray, self).__init__(icon, parent) self.setToolTip("DToDo") self.parent = parent self.menu = QMenu(parent) self.setContextMenu(self.menu) self.is_messages_support = self.supportsMessages() self.delay = 5000 # время отображения всплывающего сообщения ms self.is_hidden = False #--- статусы иконок self.statuses = {"normal": 0, "info": 1, "warning": 2, "error": 3} #--- act_exit menu self.hide_action = self.menu.addAction("Скрыть") self.hide_action.setIcon(QIcon(get_icon("close_hide.png"))) self.hide_action.triggered.connect(self.hide_window) self.show_action = self.menu.addAction("Отобразить") self.show_action.setIcon(QIcon(get_icon("open_show.png"))) self.show_action.triggered.connect(self.show_window) self.menu.addSeparator() #--- act_exit menu exit_action = self.menu.addAction("Закрыть") exit_action.setIcon(QIcon(get_icon("delete.png"))) exit_action.triggered.connect(self.parent.act_exit) #--- подписываемся на события системного трея # events.on("show_tray_message", self.show_message) self.parent.bus.connect(self.__on_bus_message) self.update_menu()
def __init__(self, parent=None): super(ModalAbout, self).__init__(parent) self.setFixedHeight(200) self.setFixedWidth(300) self.setWindowTitle("О программе") self.main_layout = QVBoxLayout(self) text_name = "<b>DToDo</b> v {}".format(VERSION) text_copyright = "Copyright © 2018 {}".format(EMAIL) label_name = QLabel(text_name) label_description = QLabel(DESCRIPTION) label_description.setWordWrap(True) label_copy = QLabel(text_copyright) label_link = QLabel() label_link.setText("<a href='{}'>{}</a>".format(REPO_URL, REPO_URL)) label_link.setTextInteractionFlags(Qt.TextBrowserInteraction) label_link.setOpenExternalLinks(True) self.main_layout.addWidget(label_name) self.main_layout.addWidget(label_description) self.main_layout.addStretch() self.main_layout.addWidget(label_link) self.main_layout.addWidget(label_copy) controls = QHBoxLayout() self.main_layout.addLayout(controls) btn_close = QPushButton("Закрыть") btn_close.setIcon(QIcon(get_icon("delete.png"))) btn_close.clicked.connect(self.close) controls.addStretch() controls.addWidget(btn_close)
def __init__(self, edata, cb, parent=None): super(ModalEditTodo, self).__init__(parent) self.setFixedHeight(300) self.setFixedWidth(400) self.setWindowTitle("Редактирование записи") self.cb = cb self.main_layout = QVBoxLayout(self) self.form = QFormLayout() self.main_layout.addLayout(self.form) self.tid = edata["id"] self.edata = edata self.edit_text = QLineEdit() self.form.addRow("текст", self.edit_text) self.edit_statuses = QComboBox() self.form.addRow("статус", self.edit_statuses) self.edit_priority = QComboBox() self.form.addRow("приоритет", self.edit_priority) self.edit_description = QTextEdit() self.main_layout.addWidget(self.edit_description) self.st_int = [] self.st_str = [] for st in sorted(TODO_STATUSES.keys()): self.st_int.append(st) self.st_str.append(TODO_STATUSES[st]) # self.edit_statuses.addItems(self.st_str) for index, item in enumerate(self.st_str): icon_name = self.st_int[index] icon = QIcon(get_status_icon(icon_name)) self.edit_statuses.addItem(icon, item) self.pr_int = [] self.pr_str = [] for pr in sorted(TODO_PRIORITYES.keys()): self.pr_int.append(pr) self.pr_str.append(TODO_PRIORITYES[pr]) for index, item in enumerate(self.pr_str): icon_name = self.pr_int[index] icon = QIcon(get_priority_icon(icon_name)) self.edit_priority.addItem(icon, item) controls = QHBoxLayout() self.main_layout.addLayout(controls) btn_close = QPushButton("Закрыть") btn_close.setIcon(QIcon(get_icon("delete.png"))) btn_close.clicked.connect(self.close) btn_save = QPushButton("Сохранить") btn_save.setIcon(QIcon(get_icon("save.png"))) btn_save.clicked.connect(self.save) controls.addStretch() controls.addWidget(btn_save) controls.addWidget(btn_close) self.load_data()