From 9fc80ac9b4fdb7589e66923d79bbd45e80758630 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 18 Feb 2009 22:02:31 +0100 Subject: Make it start - though there are still itches - esp. with the menu --- portato/gui/windows/main.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'portato/gui/windows/main.py') diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index 443fa76..5494b25 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -62,7 +62,7 @@ class PackageTable: self.main = main self.tree = main.tree self.window = main.window - self.tree.signal_autoconnect(self) + self.main._builder.connect_signals(self) # all the package data is in this one VB self.vb = self.tree.get_widget("packageVB") @@ -480,14 +480,13 @@ class MainWindow (Window): plugin.load_plugins() menus = [p.menus for p in plugin.get_plugin_queue().get_plugins()] - if menus: - self.tree.get_widget("pluginMenuItem").set_no_show_all(False) - pluginMenu = self.tree.get_widget("pluginMenu") + #if menus: + # pluginMenu = self.tree.get_widget("pluginMenu") - for m in itt.chain(*menus): - item = gtk.MenuItem(m.label) - item.connect("activate", m.call) - pluginMenu.append(item) + # for m in itt.chain(*menus): + # item = gtk.MenuItem(m.label) + # item.connect("activate", m.call) + # pluginMenu.append(item) splash(_("Building frontend")) # set paned position @@ -554,15 +553,15 @@ class MainWindow (Window): self.packageTable = PackageTable(self) # popups - self.consolePopup = Popup("consolePopup", self, self.__file__) - self.trayPopup = Popup("systrayPopup", self) + # self.consolePopup = Popup("consolePopup", self, self.__file__) + # self.trayPopup = Popup("systrayPopup", self) # pause menu items self.emergePaused = False self.pauseItems = {} - self.pauseItems["tray"] = self.trayPopup.tree.get_widget("pauseItemTray") - self.pauseItems["popup"] = self.consolePopup.tree.get_widget("pauseItemPopup") - self.pauseItems["menu"] = self.tree.get_widget("pauseItemMenu") + # self.pauseItems["tray"] = self.trayPopup.tree.get_widget("pauseItemTray") + # self.pauseItems["popup"] = self.consolePopup.tree.get_widget("pauseItemPopup") + # self.pauseItems["menu"] = self.tree.get_widget("pauseItemMenu") for k,v in self.pauseItems.iteritems(): self.pauseItems[k] = (v, v.connect_after("activate", self.cb_pause_emerge(k))) -- cgit v1.2.3-54-g00ecf From c0046edcf062eda241d9285806e3ac9c21754129 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 18 Feb 2009 22:25:04 +0100 Subject: Fix popups --- portato/gui/templates/MainWindow.ui | 32 ++++++++++++++++------------ portato/gui/templates/popups.ui | 42 ------------------------------------- portato/gui/windows/main.py | 4 ++-- 3 files changed, 21 insertions(+), 57 deletions(-) delete mode 100644 portato/gui/templates/popups.ui (limited to 'portato/gui/windows/main.py') diff --git a/portato/gui/templates/MainWindow.ui b/portato/gui/templates/MainWindow.ui index 914207b..39d7d4e 100644 --- a/portato/gui/templates/MainWindow.ui +++ b/portato/gui/templates/MainWindow.ui @@ -3,7 +3,7 @@ - + fileMenuAction @@ -115,13 +115,6 @@ - - - False - hiddenConsoleMenu - Console - - gtk-copy @@ -181,19 +174,32 @@ - - - - - + + + + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 GTK_WIN_POS_CENTER diff --git a/portato/gui/templates/popups.ui b/portato/gui/templates/popups.ui deleted file mode 100644 index 52d2450..0000000 --- a/portato/gui/templates/popups.ui +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - pauseItemTray - Emerge _Paused - - - - - gtk-stop - killItemTray - _Kill Emerge - - - - - - gtk-quit - closeItemTray - - - - - - - - - - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index 5494b25..b043532 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -553,8 +553,8 @@ class MainWindow (Window): self.packageTable = PackageTable(self) # popups - # self.consolePopup = Popup("consolePopup", self, self.__file__) - # self.trayPopup = Popup("systrayPopup", self) + self.consolePopup = self.tree.get_widget("uimanager").get_widget("ui/consolePopup") + self.trayPopup = self.tree.get_widget("uimanager").get_widget("ui/systrayPopup") # pause menu items self.emergePaused = False -- cgit v1.2.3-54-g00ecf From af31f8ecc8465984d7dfc7b824ff5f8ca037a37a Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 18 Feb 2009 22:35:04 +0100 Subject: Remove the 'pause' hack --- portato/gui/templates/MainWindow.ui | 1 + portato/gui/windows/main.py | 60 +++++-------------------------------- 2 files changed, 9 insertions(+), 52 deletions(-) (limited to 'portato/gui/windows/main.py') diff --git a/portato/gui/templates/MainWindow.ui b/portato/gui/templates/MainWindow.ui index 39d7d4e..3a30907 100644 --- a/portato/gui/templates/MainWindow.ui +++ b/portato/gui/templates/MainWindow.ui @@ -103,6 +103,7 @@ pauseActionMenu Emerge _Paused + diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index b043532..33a5ee4 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -558,13 +558,6 @@ class MainWindow (Window): # pause menu items self.emergePaused = False - self.pauseItems = {} - # self.pauseItems["tray"] = self.trayPopup.tree.get_widget("pauseItemTray") - # self.pauseItems["popup"] = self.consolePopup.tree.get_widget("pauseItemPopup") - # self.pauseItems["menu"] = self.tree.get_widget("pauseItemMenu") - - for k,v in self.pauseItems.iteritems(): - self.pauseItems[k] = (v, v.connect_after("activate", self.cb_pause_emerge(k))) # systray if self.cfg.get_boolean("showSystray", "GUI"): @@ -1771,50 +1764,13 @@ class MainWindow (Window): self.queue.append(package, update = True, oneshot = set, forceUpdate = True) - def cb_pause_emerge (self, curr): - """ - This method returns a callback for a "pause emerge" toggle button. - It is needed as there are different toggle buttons of this type and if one is clicked, - the others should be marked too. - - @param curr: The button to return the callback for. - @type curr: gtk.ToggleButton - """ - def pause (cb): - """ - The actual callback. - - Mark all other buttons too. - - @param cb: The button which got toggled. - @type cb: gtk.ToggleButton - """ - - # pause or continue - self.emergePaused = cb.get_active() - if not self.emergePaused: - self.queue.continue_emerge() - #self.tray.set_from_file(APP_ICON) - else: - self.queue.stop_emerge() - #self.tray.set_from_file(os.path.join(ICON_DIR, "pausing.png")) - - # block the handlers of the other buttons - # so that calling "set_active" does not call this callback recursivly - for v in self.pauseItems.itervalues(): - v[0].handler_block(v[1]) - - # mark the others - for k, v in self.pauseItems.iteritems(): - if k != curr: - v[0].set_active(self.emergePaused) - - # unblock - for v in self.pauseItems.itervalues(): - v[0].handler_unblock(v[1]) - - return False - return pause + def cb_pause_emerge (self, action): + # pause or continue + self.emergePaused = action.get_active() + if not self.emergePaused: + self.queue.continue_emerge() + else: + self.queue.stop_emerge() def cb_kill_clicked (self, *args): """ @@ -1822,7 +1778,7 @@ class MainWindow (Window): """ self.queue.kill_emerge() if self.emergePaused: # unmark the "pause emerge" buttons - self.pauseItems["menu"][0].set_active(False) # calling one button is enough (see: cb_pause_emerge) + self.tree.get_widget("generalActionGroup").get_action("pauseAction").set_active(False) def cb_copy_clicked (self, *args): """ -- cgit v1.2.3-54-g00ecf From 1644d262d2c577b1592a60914ec034a1e91171b7 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 18 Feb 2009 22:42:10 +0100 Subject: Add dummy signal handlers for PackageTable -- and so also the error output for not connected signals --- portato/gui/windows/basic.py | 6 +++++- portato/gui/windows/main.py | 13 ++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'portato/gui/windows/main.py') diff --git a/portato/gui/windows/basic.py b/portato/gui/windows/basic.py index 330f823..9d1b9ed 100644 --- a/portato/gui/windows/basic.py +++ b/portato/gui/windows/basic.py @@ -52,7 +52,11 @@ class UIBuilder (object): if connector is None: connector = self - self._builder.connect_signals(connector) + unconnected = self._builder.connect_signals(connector) + + if unconnected is not None: + for uc in set(unconnected): + error("Signal '%s' not connected in class '%s'.", uc, self.__class__.__name__) self.tree = WrappedTree(self.__class__.__name__, self._builder) diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index 33a5ee4..b7a5802 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -62,7 +62,6 @@ class PackageTable: self.main = main self.tree = main.tree self.window = main.window - self.main._builder.connect_signals(self) # all the package data is in this one VB self.vb = self.tree.get_widget("packageVB") @@ -1834,6 +1833,18 @@ class MainWindow (Window): else: self.window.iconify() + def cb_testing_toggled (self, *args): + return self.packageTable.cb_testing_toggled(*args) + def cb_masked_toggled (self, *args): + return self.packageTable.cb_masked_toggled(*args) + def cb_button_pressed (self, *args): + return self.packageTable.cb_button_pressed(*args) + def cb_package_revert_clicked (self, *args): + return self.packageTable.cb_package_revert_clicked(*args) + def cb_package_unmerge_clicked (self, *args): + return self.packageTable.cb_package_unmerge_clicked(*args) + def cb_package_emerge_clicked (self, *args): + return self.packageTable.cb_package_emerge_clicked(*args) def cb_use_flag_toggled (self, *args): return self.packageTable.cb_use_flag_toggled(*args) -- cgit v1.2.3-54-g00ecf From bc8b90244640273e775ce25a2f33d97f5da5bbfb Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 18 Feb 2009 22:45:00 +0100 Subject: Remove the 'Popup' class --- portato/gui/windows/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'portato/gui/windows/main.py') diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index b7a5802..eb4f7b3 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -43,7 +43,7 @@ from ..dialogs import (blocked_dialog, changed_flags_dialog, io_ex_dialog, from ..exceptions import PreReqError # even more GUI stuff -from .basic import Window, Popup +from .basic import Window from .about import AboutWindow from .plugin import PluginWindow from .preference import PreferenceWindow -- cgit v1.2.3-54-g00ecf From 6f740cbb6b651dfa73ed6c0e0e2cf4176310e3c8 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 18 Feb 2009 22:51:55 +0100 Subject: Add 'get_ui()' method for convenience --- portato/gui/windows/basic.py | 15 ++++++++++++++- portato/gui/windows/main.py | 8 ++++---- 2 files changed, 18 insertions(+), 5 deletions(-) (limited to 'portato/gui/windows/main.py') diff --git a/portato/gui/windows/basic.py b/portato/gui/windows/basic.py index d7c7940..a4f8236 100644 --- a/portato/gui/windows/basic.py +++ b/portato/gui/windows/basic.py @@ -23,7 +23,7 @@ from ...constants import TEMPLATE_DIR, APP, LOCALE_DIR from ...helper import error class WrappedTree (object): - __slots__ = ("klass", "tree", "get_widget") + __slots__ = ("klass", "tree", "get_widget", "get_ui") def __init__ (self, klass, tree): self.tree = tree self.klass = klass @@ -40,6 +40,19 @@ class WrappedTree (object): error("Widget '%s' could not be found in class '%s'.", name, self.klass) return w + def get_ui (self, name, ui = "uimanager"): + uiw = self.get_widget(ui) + if uiw is None: + return None + + if not name.startswith("ui/"): + name = "ui/%s" % name + + w = uiw.get_widget(name) + if w is None: + error("UIItem '%s' of UIManager '%s' could not be found in class '%s'.", name, ui, self.klass) + return w + class UIBuilder (object): def __init__ (self, connector = None): diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index eb4f7b3..437d305 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -479,8 +479,8 @@ class MainWindow (Window): plugin.load_plugins() menus = [p.menus for p in plugin.get_plugin_queue().get_plugins()] - #if menus: - # pluginMenu = self.tree.get_widget("pluginMenu") + # if menus: + # pluginMenu = self.tree.get_ui("pluginMenu") # for m in itt.chain(*menus): # item = gtk.MenuItem(m.label) @@ -552,8 +552,8 @@ class MainWindow (Window): self.packageTable = PackageTable(self) # popups - self.consolePopup = self.tree.get_widget("uimanager").get_widget("ui/consolePopup") - self.trayPopup = self.tree.get_widget("uimanager").get_widget("ui/systrayPopup") + self.consolePopup = self.tree.get_ui("consolePopup") + self.trayPopup = self.tree.get_ui("systrayPopup") # pause menu items self.emergePaused = False -- cgit v1.2.3-54-g00ecf From 4dfc7b063ec7dc476462e843bfecd07fd02cb25e Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 18 Feb 2009 23:14:37 +0100 Subject: Make the plugin menu work again --- portato/gui/templates/MainWindow.ui | 16 ++++++++++------ portato/gui/windows/main.py | 24 ++++++++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) (limited to 'portato/gui/windows/main.py') diff --git a/portato/gui/templates/MainWindow.ui b/portato/gui/templates/MainWindow.ui index 3a30907..98da2ad 100644 --- a/portato/gui/templates/MainWindow.ui +++ b/portato/gui/templates/MainWindow.ui @@ -2,6 +2,16 @@ + + + + + pluginMenuAction + Plu_gins + + + + @@ -124,12 +134,6 @@ - - - pluginMenuAction - Plu_gins - - helpMenuAction diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index 437d305..2ee4447 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -479,13 +479,25 @@ class MainWindow (Window): plugin.load_plugins() menus = [p.menus for p in plugin.get_plugin_queue().get_plugins()] - # if menus: - # pluginMenu = self.tree.get_ui("pluginMenu") + if menus: + uim = self.tree.get_widget("uimanager") + ag = self.tree.get_widget("pluginActionGroup") - # for m in itt.chain(*menus): - # item = gtk.MenuItem(m.label) - # item.connect("activate", m.call) - # pluginMenu.append(item) + ctr = 0 + for m in itt.chain(*menus): + + # create action + aname = "plugin%d" % ctr + a = gtk.Action(aname, m.label, None, None) + a.connect("activate", m.call) + ag.add_action(a) + + # add to UI + mid = uim.new_merge_id() + uim.add_ui(mid, "ui/menubar/pluginMenu", aname, aname, gtk.UI_MANAGER_MENUITEM, False) + + ctr += 1 + splash(_("Building frontend")) # set paned position -- cgit v1.2.3-54-g00ecf