diff options
Diffstat (limited to 'geneticone')
-rw-r--r-- | geneticone/gui/main.py | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/geneticone/gui/main.py b/geneticone/gui/main.py index ea4309c..08655fb 100644 --- a/geneticone/gui/main.py +++ b/geneticone/gui/main.py @@ -13,6 +13,7 @@ # our backend stuff import geneticone +from geneticone import flags # gtk stuff import pygtk @@ -214,11 +215,16 @@ class PackageWindow: self.table.attach(buttonHB, 0, 2, 3, 4) self.emergeBtn = gtk.Button("_Emerge") - if not self.queue: self.emergeBtn.set_sensitive(False) + self.unmergeBtn = gtk.Button("_Unmerge") + if not self.queue: + self.emergeBtn.set_sensitive(False) + self.unmergeBtn.set_sensitive(False) self.cancelBtn = gtk.Button("_Cancel") self.cancelBtn.connect("clicked", lambda x: self.window.destroy()) self.emergeBtn.connect("clicked", self.cb_emerge_clicked) + self.unmergeBtn.connect("clicked", self.cb_unmerge_clicked) buttonHB.pack_start(self.emergeBtn) + buttonHB.pack_start(self.unmergeBtn) buttonHB.pack_start(self.cancelBtn) # current status @@ -243,8 +249,10 @@ class PackageWindow: # set emerge-button-label if not self.actual_package().is_installed(): self.emergeBtn.set_label("_Emerge") + self.unmergeBtn.set_sensitive(False) else: - self.emergeBtn.set_label("_Unmerge") + self.emergeBtn.set_label("R_emerge") + self.unmergeBtn.set_sensitive(True) # refresh - make window as small as possible self.table.show_all() @@ -283,7 +291,10 @@ class PackageWindow: def cb_button_pressed (self, b, event, data = None): """Callback for pressed checkboxes. Just quits the event-loop - no redrawing.""" - b.emit_stop_by_name("button-press-event") + print b + if not isinstance(b, gtk.CellRendererToggle): + b.emit_stop_by_name("button-press-event") + print "hallo" return True def cb_emerge_clicked (self, button, data = None): @@ -293,11 +304,26 @@ class PackageWindow: errorMB.run() errorMB.destroy() else: - unmerge = self.actual_package().is_installed() - self.queue.append(self.actual_package().get_cpv(), unmerge) + self.queue.append(self.actual_package().get_cpv(), False) self.window.destroy() return True + def cb_unmerge_clicked (self, button, data = None): + """Adds the package to the UnmergeQueue.""" + if not geneticone.am_i_root(): + errorMB = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "You cannot (un)merge without being root.") + errorMB.run() + errorMB.destroy() + else: + self.queue.append(self.actual_package().get_cpv(), True) + self.window.destroy() + return True + + def cb_use_flag_toggled (self, cell, path, store, data = None): + store[path][0] = not store[path][0] + flags.set_use_flag(self.actual_package, store[path][1]) + return True + def update_checkboxes (self): """Updates the checkboxes.""" self.installedCheck.set_active(self.actual_package().is_installed()) @@ -322,6 +348,8 @@ class PackageWindow: view = gtk.TreeView(store) cell = gtk.CellRendererText() tCell = gtk.CellRendererToggle() + tCell.set_property("activatable", True) + tCell.connect("toggled", self.cb_use_flag_toggled, store) view.append_column(gtk.TreeViewColumn("Enabled", tCell, active = 0)) view.append_column(gtk.TreeViewColumn("Flags", cell, text = 1)) view.append_column(gtk.TreeViewColumn("Description", cell, text = 2)) |