From 188343e825e9c5bfbc08e4132845371b787fb81e Mon Sep 17 00:00:00 2001 From: necoro <> Date: Wed, 18 Apr 2007 18:05:53 +0000 Subject: finished Qt-Frontend --- portato/gui/gui_helper.py | 1 + portato/gui/qt/terminal.py | 12 ++++++--- portato/gui/qt/tree.py | 7 ++++- portato/gui/qt/ui/MainWindow.ui | 58 ++++++++++++++++++++++++++++++++++------- portato/gui/qt/windows.py | 54 +++++++++++++++++++++++++++++++++++++- 5 files changed, 117 insertions(+), 15 deletions(-) (limited to 'portato/gui') diff --git a/portato/gui/gui_helper.py b/portato/gui/gui_helper.py index e52b3f3..d50eb72 100644 --- a/portato/gui/gui_helper.py +++ b/portato/gui/gui_helper.py @@ -624,6 +624,7 @@ class EmergeQueue: childIt = self.tree.first_child_iter(parentIt) while childIt: + debug("childIt", self.tree.get_value(childIt, 0)) if (self.tree.iter_has_children(childIt)): # recursive call self.remove_children(childIt, removeNewFlags) temp = childIt diff --git a/portato/gui/qt/terminal.py b/portato/gui/qt/terminal.py index fd01e05..2734aaf 100644 --- a/portato/gui/qt/terminal.py +++ b/portato/gui/qt/terminal.py @@ -101,7 +101,7 @@ class QtConsole (Console, Qt.QTextEdit): def start_new_thread (self): self.run = True - self.current = Thread(target=self.__run) + self.current = Thread(target=self.__run, name="QtTerminal Listener") self.current.setDaemon(True) # close application even if this thread is running self.current.start() @@ -167,9 +167,13 @@ class QtConsole (Console, Qt.QTextEdit): format = self.virgin_format() break - if attr[s] is not None: - format.merge(attr[s]) - else: + try: + if attr[s] is not None: + format.merge(attr[s]) + else: + format = self.virgin_format() + break + except KeyError: # no such attribute format = self.virgin_format() break diff --git a/portato/gui/qt/tree.py b/portato/gui/qt/tree.py index a8c3e66..6e9950f 100644 --- a/portato/gui/qt/tree.py +++ b/portato/gui/qt/tree.py @@ -70,7 +70,12 @@ class QtTree (Tree): def next_iter (self, it): iter = Qt.QTreeWidgetItemIterator(it) iter += 1 # next iter ... - return iter.value() + + newIt = iter.value() + if newIt.parent() != it.parent(): # stop if we left the current parent + return None + else: + return newIt def get_value (self, it, column): return str(it.text(column)) diff --git a/portato/gui/qt/ui/MainWindow.ui b/portato/gui/qt/ui/MainWindow.ui index d75f0d3..80c5c12 100644 --- a/portato/gui/qt/ui/MainWindow.ui +++ b/portato/gui/qt/ui/MainWindow.ui @@ -86,7 +86,7 @@ - 0 + 1 @@ -315,6 +315,9 @@ p, li { white-space: pre-wrap; } + + Qt::ActionsContextMenu + QAbstractItemView::NoEditTriggers @@ -400,6 +403,15 @@ p, li { white-space: pre-wrap; } 27 + + + &File + + + + + + &? @@ -414,13 +426,10 @@ p, li { white-space: pre-wrap; } - - - - &File - - - + + + + @@ -439,13 +448,16 @@ p, li { white-space: pre-wrap; } &Quit - QAction::TextHeuristicRole + QAction::QuitRole &About + + QAction::AboutRole + @@ -466,6 +478,34 @@ p, li { white-space: pre-wrap; } &Preferences + + QAction::PreferencesRole + + + + + S&ync + + + + + Save &Flage + + + + + Ki&ll Emerge + + + + + &Reload Portage + + + + + &Oneshot + diff --git a/portato/gui/qt/windows.py b/portato/gui/qt/windows.py index b4662a7..f6d5103 100644 --- a/portato/gui/qt/windows.py +++ b/portato/gui/qt/windows.py @@ -567,6 +567,7 @@ class MainWindow (Window): Qt.QObject.connect(self, Qt.SIGNAL("doTitleUpdate"), self._title_update) # build queueList + self.queueList.addAction(self.oneshotAction) self.queueList.setHeaderLabels(["Package", "Additional infos"]) self.queueTree = QtTree(self.queueList) Qt.QObject.connect(self.queueList.model(), Qt.SIGNAL("rowsInserted (const QModelIndex&, int, int)"), self.cb_queue_list_items_added) @@ -628,7 +629,58 @@ class MainWindow (Window): @Qt.pyqtSignature("") def on_prefAction_triggered (self): PreferenceWindow(self, self.cfg).exec_() - + + @Qt.pyqtSignature("") + @Window.watch_cursor + def on_reloadAction_triggered (self): + """Reloads the portage settings and the database.""" + system.reload_settings() + del self.db + self.db = Database() + self.db.populate() + + @Qt.pyqtSignature("") + def on_killAction_triggered (self): + self.queue.kill_emerge() + + @Qt.pyqtSignature("") + def cb_saveAction_triggered (self): + if not am_i_root(): + not_root_dialog(self) + else: + flags.write_use_flags() + flags.write_testing() + flags.write_masked() + + @Qt.pyqtSignature("") + def on_syncAction_triggered (self): + if not am_i_root(): + not_root_dialog(self) + else: + self.tabWidget.setCurrentIndex(self.CONSOLE_PAGE) + cmd = self.cfg.get("syncCmd_opt") + + if cmd != "emerge --sync": + cmd = cmd.split() + self.queue.sync(cmd) + else: + self.queue.sync() + + @Qt.pyqtSignature("") + def on_oneshotAction_triggered (self): + current = self.queueList.currentItem() + + if self.queueTree.is_in_emerge(current) and self.queueTree.iter_has_parent(current): + pkg = self.queueTree.get_value(current, self.queueTree.get_cpv_column()) + + if not self.cfg.get_local(pkg, "oneshot_opt"): + set = True + else: + set = False + + self.cfg.set_local(pkg, "oneshot_opt", set) + self.queue.append(pkg, update = True, oneshot = set, forceUpdate = True) + @Qt.pyqtSignature("") @Window.watch_cursor def on_searchBtn_clicked (self): -- cgit v1.2.3-54-g00ecf