From d65fd555952a49977bca8f892c4b31355707ab08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 25 Mar 2008 15:25:02 +0100 Subject: First try of using a version list --- portato/gui/templates/MainWindow.glade | 136 +++++++++++++++++---------------- portato/gui/windows/main.py | 58 ++++++++------ 2 files changed, 102 insertions(+), 92 deletions(-) diff --git a/portato/gui/templates/MainWindow.glade b/portato/gui/templates/MainWindow.glade index c9e32fd..07349fa 100644 --- a/portato/gui/templates/MainWindow.glade +++ b/portato/gui/templates/MainWindow.glade @@ -1,6 +1,6 @@ - + 2 @@ -436,17 +436,48 @@ - + True - False - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True - True - 0 + False + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + + + True + True + 0 + + + + True + True + + + + + True + False + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + + + True + True + 0 + + + + + + True + True + @@ -478,90 +509,61 @@ 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 - 2 - 4 - 4 + label + + + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_ICON_SIZE_BUTTON + True - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - label + Install onto system + gtk-add + - 2 - GTK_FILL - GTK_FILL + False - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Uninstall from system + gtk-remove + - 1 - 2 - GTK_FILL + False - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - GTK_ICON_SIZE_BUTTON - True - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Install onto system - gtk-add - - - - False - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Uninstall from system - gtk-remove - - - - False - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Revert changes - gtk-undo - - - - False - - + Revert changes + gtk-undo + - 1 - 2 - 1 - 2 + False False - 5 + 1 @@ -1031,7 +1033,7 @@ - 1 + 2 diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index d996526..e52439a 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -68,8 +68,8 @@ class PackageTable: self.notebook = self.tree.get_widget("packageNotebook") # the version combo - self.versionCombo = self.tree.get_widget("versionCombo") - self.build_version_combo() + self.versionList = self.tree.get_widget("versionList") + self.build_version_list() # chechboxes self.installedCheck = self.tree.get_widget("installedCheck") @@ -148,17 +148,17 @@ class PackageTable: self.instPackages = system.sort_package_list(system.find_installed_packages(cp, masked = True)) # version-combo-box - self.versionCombo.handler_block(self.versionCombo.changeHandler) # block change handler, because it would be called several times - self.versionCombo.get_model().clear() - self.fill_version_combo() - self.versionCombo.handler_unblock(self.versionCombo.changeHandler) # unblock handler again + #self.versionCombo.handler_block(self.versionCombo.changeHandler) # block change handler, because it would be called several times + self.versionList.get_model().clear() + self.fill_version_list() + #self.versionCombo.handler_unblock(self.versionCombo.changeHandler) # unblock handler again if not self.queue or not self.doEmerge: self.emergeBtn.set_sensitive(False) self.unmergeBtn.set_sensitive(False) # current status - self.cb_version_combo_changed() + self.cb_version_list_changed() self.vb.show_all() def hide (self): @@ -339,29 +339,31 @@ class PackageTable: self.useList.set_search_column(2) self.useList.set_enable_tree_lines(True) - def build_version_combo (self): + def build_version_list (self): store = gtk.ListStore(gtk.gdk.Pixbuf, str) # build view - self.versionCombo.set_model(store) - col = gtk.TreeViewColumn("Versions") + self.versionList.set_model(store) + col = gtk.TreeViewColumn(_("Versions")) # adding the pixbuf cell = gtk.CellRendererPixbuf() - self.versionCombo.pack_start(cell, False) - self.versionCombo.add_attribute(cell, "pixbuf", 0) + col.pack_start(cell, False) + col.add_attribute(cell, "pixbuf", 0) # adding the package name cell = gtk.CellRendererText() - self.versionCombo.pack_start(cell, True) - self.versionCombo.add_attribute(cell, "text", 1) + col.pack_start(cell, True) + col.add_attribute(cell, "text", 1) + + self.versionList.append_column(col) # connect - self.versionCombo.changeHandler = self.versionCombo.connect("changed", self.cb_version_combo_changed) + #self.versionCombo.changeHandler = self.versionCombo.connect("changed", self.cb_version_combo_changed) - def fill_version_combo (self): + def fill_version_list (self): - store = self.versionCombo.get_model() + store = self.versionList.get_model() # append versions for vers, inst in ((x.get_version(), x.is_installed()) for x in self.packages): @@ -370,6 +372,8 @@ class PackageTable: else: icon = None store.append([icon, vers]) + + sel = self.versionList.get_selection() # activate the first one try: @@ -380,18 +384,22 @@ class PackageTable: best_version = system.find_best_match(self.packages[0].get_cp(), only_installed = (self.instPackages != [])).get_version() for i in range(len(self.packages)): if self.packages[i].get_version() == best_version: - self.versionCombo.set_active(i) + sel.select_path((i,)) break except AttributeError: # no package found - self.versionCombo.set_active(0) + sel.select_path((0,)) def actual_package (self): """Returns the actual selected package. @returns: the actual selected package @rtype: backend.Package""" - - return self.packages[self.versionCombo.get_active()] + + model, iter = self.versionList.get_selection().get_selected() + if iter: + return self.packages[model.get_path(iter)[0]] + else: + return self.packages[0] def _update_keywords (self, emerge, update = False): if emerge: @@ -411,7 +419,7 @@ class PackageTable: error(_("Package could not be found: %s"), e[0]) #masked_dialog(e[0]) - def cb_version_combo_changed (self, *args): + def cb_version_list_changed (self, *args): pkg = self.actual_package() @@ -506,9 +514,9 @@ class PackageTable: self.actual_package().remove_new_use_flags() self.actual_package().remove_new_masked() self.actual_package().remove_new_testing() - self.versionCombo.get_model().clear() - self.fill_version_combo() - self.cb_version_combo_changed() + self.versionList.get_model().clear() + self.fill_version_list() + self.cb_version_list_changed() if self.instantChange: self._update_keywords(True, update = True) return True -- cgit v1.2.3 From 9af6e349169e5df5e130701a6e09ec6411712673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 25 Mar 2008 15:27:52 +0100 Subject: Polished frontend --- portato/gui/templates/MainWindow.glade | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/portato/gui/templates/MainWindow.glade b/portato/gui/templates/MainWindow.glade index 07349fa..0ebb78e 100644 --- a/portato/gui/templates/MainWindow.glade +++ b/portato/gui/templates/MainWindow.glade @@ -1,6 +1,6 @@ - + 2 @@ -469,7 +469,7 @@ True True - 0 + 1 @@ -563,6 +563,7 @@ False + 5 1 -- cgit v1.2.3 From 08d77f06f8b90ebef81255f1fcedf6ff8953aa98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 25 Mar 2008 15:36:24 +0100 Subject: Converted back to HB instead of HPaned --- portato/gui/session.py | 2 +- portato/gui/templates/MainWindow.glade | 70 +++++++++++++--------------------- portato/gui/windows/main.py | 16 ++------ 3 files changed, 31 insertions(+), 57 deletions(-) diff --git a/portato/gui/session.py b/portato/gui/session.py index 1e3d759..e356fbd 100644 --- a/portato/gui/session.py +++ b/portato/gui/session.py @@ -14,7 +14,7 @@ from ..helper import _, debug # the current version for saved sessions # change this, whenever the change is incompatible with previous versions -SESSION_VERSION = 2 +SESSION_VERSION = 1 class SessionException (Exception): diff --git a/portato/gui/templates/MainWindow.glade b/portato/gui/templates/MainWindow.glade index 0ebb78e..f99d77f 100644 --- a/portato/gui/templates/MainWindow.glade +++ b/portato/gui/templates/MainWindow.glade @@ -1,6 +1,6 @@ - + 2 @@ -413,10 +413,11 @@ 0 GTK_SHADOW_IN - + True - True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + True True @@ -430,59 +431,42 @@ - - True - True - - + True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC - + True - False - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - - - True - True - 0 - - + True + 0 - - True - True - + + + 1 + + + + + True + False + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC - + True - False - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - - - True - True - 1 - - - + True + 1 + - - True - True - - True - True + 2 diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index e52439a..0a217ea 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -148,10 +148,8 @@ class PackageTable: self.instPackages = system.sort_package_list(system.find_installed_packages(cp, masked = True)) # version-combo-box - #self.versionCombo.handler_block(self.versionCombo.changeHandler) # block change handler, because it would be called several times self.versionList.get_model().clear() self.fill_version_list() - #self.versionCombo.handler_unblock(self.versionCombo.changeHandler) # unblock handler again if not self.queue or not self.doEmerge: self.emergeBtn.set_sensitive(False) @@ -358,9 +356,6 @@ class PackageTable: self.versionList.append_column(col) - # connect - #self.versionCombo.changeHandler = self.versionCombo.connect("changed", self.cb_version_combo_changed) - def fill_version_list (self): store = self.versionList.get_model() @@ -697,8 +692,6 @@ class MainWindow (Window): self.vpaned.set_position(int(self.window.get_size()[1]/2)) self.hpaned = self.tree.get_widget("hpaned") self.hpaned.set_position(int(self.window.get_size()[0]/1.5)) - self.listPaned = self.tree.get_widget("listPaned") - self.listPaned.set_position(int(self.window.get_size()[0]/2)) # cat and pkg list self.sortPkgListByName = True @@ -965,13 +958,10 @@ class MainWindow (Window): # PANED def load_paned (*pos): pos = map(int, pos) - if oldVersion < 2: - [x.set_position(p) for x,p in zip((self.vpaned, self.hpaned), pos)] - else: - [x.set_position(p) for x,p in zip((self.vpaned, self.hpaned, self.listPaned), pos)] + [x.set_position(p) for x,p in zip((self.vpaned, self.hpaned), pos)] def save_paned (): - return [x.get_position() for x in (self.vpaned, self.hpaned, self.listPaned)] + return [x.get_position() for x in (self.vpaned, self.hpaned)] # SELECTION def load_selection (list, col): @@ -1040,7 +1030,7 @@ class MainWindow (Window): map(self.session.add_handler,[ ([("gtksessionversion", "session")], load_session_version, lambda: SESSION_VERSION), ([("width", "window"), ("height", "window")], lambda w,h: self.window.resize(int(w), int(h)), self.window.get_size), - ([("vpanedpos", "window"), ("hpanedpos", "window"), ("listpanedpos", "window")], load_paned, save_paned), + ([("vpanedpos", "window"), ("hpanedpos", "window")], load_paned, save_paned), ([("catsel", "window")], load_selection(self.catList, 0), save_cat_selection), ([("pkgsel", "window")], load_selection(self.pkgList, 1), save_pkg_selection) #([("merge", "queue"), ("unmerge", "queue"), ("oneshot", "queue")], load_queue, save_queue), -- cgit v1.2.3 From aaa2fa7463cce361c59e284ca70b4d6d85077d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 25 Mar 2008 16:09:47 +0100 Subject: Show slots in the version list --- etc/portato.cfg | 3 +++ portato/gui/windows/main.py | 41 +++++++++++++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/etc/portato.cfg b/etc/portato.cfg index 62d618b..b653810 100644 --- a/etc/portato.cfg +++ b/etc/portato.cfg @@ -72,6 +72,9 @@ browserCmd = firefox ; disable this if you own a slow machine searchontype = true +; show slots in the version list +showslots = true + # # GTK-Section for options of the GTK-Frontend # diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index 0a217ea..7ce66b8 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -338,11 +338,16 @@ class PackageTable: self.useList.set_enable_tree_lines(True) def build_version_list (self): - store = gtk.ListStore(gtk.gdk.Pixbuf, str) + store = gtk.ListStore(gtk.gdk.Pixbuf, str, str) # build view self.versionList.set_model(store) + col = gtk.TreeViewColumn(_("Versions")) + col.set_property("expand", True) + + self.slotcol = gtk.TreeViewColumn(_("Slot")) + self.slotcol.set_property("expand", True) # adding the pixbuf cell = gtk.CellRendererPixbuf() @@ -354,21 +359,42 @@ class PackageTable: col.pack_start(cell, True) col.add_attribute(cell, "text", 1) + # adding the slot + cell = gtk.CellRendererText() + self.slotcol.pack_start(cell, True) + self.slotcol.add_attribute(cell, "text", 2) + self.versionList.append_column(col) + self.versionList.append_column(self.slotcol) def fill_version_list (self): store = self.versionList.get_model() + + # this is here for performance reasons + # to not query the package with info, we do not need + if self.main.cfg.get_boolean("showSlots", "GUI"): + def get_slot(pkg): + return pkg.get_package_settings("SLOT") + + self.slotcol.set_visible(True) + + else: + def get_slot(*args): + return "" + + self.slotcol.set_visible(False) # append versions - for vers, inst in ((x.get_version(), x.is_installed()) for x in self.packages): + for vers, inst, slot in ((x.get_version(), x.is_installed(), get_slot(x)) for x in self.packages): if inst: icon = self.main.instPixbuf else: icon = None - store.append([icon, vers]) + + store.append([icon, vers, slot]) - sel = self.versionList.get_selection() + pos = ((0,)) # default # activate the first one try: @@ -379,10 +405,13 @@ class PackageTable: best_version = system.find_best_match(self.packages[0].get_cp(), only_installed = (self.instPackages != [])).get_version() for i in range(len(self.packages)): if self.packages[i].get_version() == best_version: - sel.select_path((i,)) + pos = (i,) break except AttributeError: # no package found - sel.select_path((0,)) + pass + + self.versionList.get_selection().select_path(pos) + self.versionList.scroll_to_cell(pos) def actual_package (self): """Returns the actual selected package. -- cgit v1.2.3 From 913cf96bb600ca29f522aac9f547a098cedb638d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 25 Mar 2008 19:57:45 +0100 Subject: Added preference switch for showing the slots --- portato/gui/templates/PreferenceWindow.glade | 231 ++++++++++++++++----------- portato/gui/windows/preference.py | 3 +- 2 files changed, 138 insertions(+), 96 deletions(-) diff --git a/portato/gui/templates/PreferenceWindow.glade b/portato/gui/templates/PreferenceWindow.glade index 9b52e66..4cc7dce 100644 --- a/portato/gui/templates/PreferenceWindow.glade +++ b/portato/gui/templates/PreferenceWindow.glade @@ -1,6 +1,6 @@ - + 5 @@ -214,189 +214,189 @@ - - True - 0 - 5 - <u><i>Masking Keywords</i></u> - True - True - - - 7 - 8 - 5 - - - - + True - 0 - 5 - <u><i>Testing Keywords</i></u> - True - True - 4 - 5 - 5 + 1 + 2 + 3 + 4 - + True 0 - 5 - <u><i>Use-Flags</i></u> - True + File name to use, if package.use is a directory: True - 1 - 2 - 6 + 3 + 4 - + True - - - True - 0 - GTK_SHADOW_OUT - - - True - 0 - <u>You may use the following placeholders:</u> - -<i>$(cat)</i>: category -<i>$(pkg)</i>: package name -<i>$(cat-1)/$(cat-2)</i>: first/second part of the category - True - - - - - - label_item - - - - + Add only exact version to package.use + 0 + True 2 + 2 + 3 - + True - Add only exact version to package.mask/package.unmask + Add only exact version to package.keywords 0 True 2 - 8 - 9 + 5 + 6 - + True 0 - File name to use, if package.mask/package.unmask is a directory: + File name to use, if package.keywords is a directory: True - 9 - 10 + 6 + 7 - + True 1 2 - 9 - 10 + 6 + 7 - + True 1 2 - 6 - 7 + 9 + 10 - + True 0 - File name to use, if package.keywords is a directory: + File name to use, if package.mask/package.unmask is a directory: True - 6 - 7 + 9 + 10 - + True - Add only exact version to package.keywords + Add only exact version to package.mask/package.unmask 0 True 2 - 5 - 6 + 8 + 9 - + True - Add only exact version to package.use - 0 - True + + + True + 0 + GTK_SHADOW_OUT + + + True + 0 + <u>You may use the following placeholders:</u> + +<i>$(cat)</i>: category +<i>$(pkg)</i>: package name +<i>$(cat-1)/$(cat-2)</i>: first/second part of the category + True + + + + + + label_item + + + + 2 - 2 - 3 - + True 0 - File name to use, if package.use is a directory: + 5 + <u><i>Use-Flags</i></u> + True True - 3 - 4 + 1 + 2 + 6 - + + True + 0 + 5 + <u><i>Testing Keywords</i></u> + True + True + + + 4 + 5 + 5 + + + + True + 0 + 5 + <u><i>Masking Keywords</i></u> + True + True - 1 - 2 - 3 - 4 + 7 + 8 + 5 @@ -701,6 +701,47 @@ 2 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + 12 + 5 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Show slots in the version list + 0 + True + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Package Options</b> + True + + + label_item + + + + + False + 3 + + diff --git a/portato/gui/windows/preference.py b/portato/gui/windows/preference.py index 079a80d..d69c99c 100644 --- a/portato/gui/windows/preference.py +++ b/portato/gui/windows/preference.py @@ -24,16 +24,17 @@ class PreferenceWindow (AbstractDialog): # all checkboxes in the window # widget name -> option name checkboxes = { + "consoleUpdateCheck" : ("updateConsole", "GUI"), "debugCheck" : "debug", "deepCheck" : "deep", "newUseCheck" : "newuse", "maskPerVersionCheck" : "maskPerVersion", "minimizeCheck" : ("hideOnMinimize", "GUI"), "searchOnTypeCheck" : ("searchOnType", "GUI"), + "showSlotsCheck" : ("showSlots", "GUI"), "systrayCheck" : ("showSystray", "GUI"), "testPerVersionCheck" : "keywordPerVersion", "titleUpdateCheck" : ("updateTitle", "GUI"), - "consoleUpdateCheck" : ("updateConsole", "GUI"), "usePerVersionCheck" : "usePerVersion" } -- cgit v1.2.3 From 3687cae46019abca370d0ee54be2abdc6dc9dfc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 25 Mar 2008 20:29:02 +0100 Subject: Use the local etc-file --- portato/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portato/constants.py b/portato/constants.py index 1257256..50975d1 100644 --- a/portato/constants.py +++ b/portato/constants.py @@ -63,7 +63,7 @@ SU_COMMAND = "gksu -D 'Portato'" USE_CATAPULT = True # config -CONFIG_DIR = "/etc/portato/" +CONFIG_DIR = "/home/necoro/dev/portato/version_list/etc/" CONFIG_LOCATION = pjoin(CONFIG_DIR, "portato.cfg") SESSION_DIR = pjoin(os.environ["HOME"], ".portato") -- cgit v1.2.3 From 0e62d04b6bf5cd91eefeae523ca47f6e1f49ca5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 25 Mar 2008 20:30:02 +0100 Subject: Use buttons instead of toolbar --- portato/gui/templates/MainWindow.glade | 79 +++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/portato/gui/templates/MainWindow.glade b/portato/gui/templates/MainWindow.glade index f99d77f..5a60ed4 100644 --- a/portato/gui/templates/MainWindow.glade +++ b/portato/gui/templates/MainWindow.glade @@ -1,6 +1,6 @@ - + 2 @@ -479,8 +479,8 @@ - False - True + True + False @@ -493,62 +493,89 @@ 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 - label - - - False - - - - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - GTK_ICON_SIZE_BUTTON - True + 5 - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + label + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Install onto system - gtk-add + GTK_RELIEF_NONE + 0 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-add + + False + 1 - + True + True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Uninstall from system - gtk-remove + GTK_RELIEF_NONE + 0 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-remove + + False + 2 - +