diff options
Diffstat (limited to '')
-rw-r--r-- | doc/Changelog | 1 | ||||
-rw-r--r-- | doc/TODO | 2 | ||||
-rw-r--r-- | portato/backend/portage/system.py | 1 | ||||
-rw-r--r-- | portato/gui/gtk/windows.py | 9 | ||||
-rw-r--r-- | portato/gui/gtk/wrapper.py | 5 | ||||
-rw-r--r-- | portato/gui/gui_helper.py | 105 | ||||
-rw-r--r-- | portato/gui/templates/portato.glade | 377 | ||||
-rw-r--r-- | portato/gui/wrapper.py | 4 |
8 files changed, 293 insertions, 211 deletions
diff --git a/doc/Changelog b/doc/Changelog index e017d05..d0c4e05 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ next: - allowed the permanent change of a plugin status - added "ALL" category - new design and handling +- allowed interactive emerges 0.8.6.2: - changed the pipe version and use shm instead (fixes issues with kdesu) @@ -31,7 +31,6 @@ Main Point: user preferences: - colors and font sizes - rotating systray icon -- interactive emerges GTK: ---- @@ -41,7 +40,6 @@ GTK: - dependency tree out of the installed packages - better display for search results - Qt (stopped): --- - better terminal diff --git a/portato/backend/portage/system.py b/portato/backend/portage/system.py index 77004a7..0997bed 100644 --- a/portato/backend/portage/system.py +++ b/portato/backend/portage/system.py @@ -70,6 +70,7 @@ class PortageSystem (SystemInterface): default_opts = self.get_global_settings("EMERGE_DEFAULT_OPTS") opts = dict(os.environ) opts.update(TERM = "xterm") # emulate terminal :) + opts.update(PAGER = "less") # force less if default_opts: opt_list = default_opts.split() diff --git a/portato/gui/gtk/windows.py b/portato/gui/gtk/windows.py index d8366a0..4d25312 100644 --- a/portato/gui/gtk/windows.py +++ b/portato/gui/gtk/windows.py @@ -3,7 +3,7 @@ # File: portato/gui/gtk/windows.py # This file is part of the Portato-Project, a graphical portage-frontend. # -# Copyright (C) 2006-2007 René 'Necoro' Neumann +# Copyright (C) 2006-2008 René 'Necoro' Neumann # This is free software. You may redistribute copies of it under the terms of # the GNU General Public License version 2. # There is NO WARRANTY, to the extent permitted by law. @@ -458,6 +458,7 @@ class PackageTable: self.nameLabel = self.tree.get_widget("nameLabel") self.descLabel = self.tree.get_widget("descLabel") self.overlayLabel = self.tree.get_widget("overlayLabel") + self.licenseLabel = self.tree.get_widget("licenseLabel") self.overlayLL = self.tree.get_widget("overlayLabelLabel") self.linkBox = self.tree.get_widget("linkBox") self.notInSysLabel = self.tree.get_widget("notInSysLabel") @@ -532,7 +533,7 @@ class PackageTable: self.descLabel.set_label(desc) # overlay - if self.actual_package().is_overlay(): + if pkg.is_overlay(): self.overlayLabel.set_label(pkg.get_overlay_path()) self.overlayLabel.show() self.overlayLL.show() @@ -540,6 +541,9 @@ class PackageTable: self.overlayLabel.hide() self.overlayLL.hide() + # license + self.licenseLabel.set_label(pkg.get_package_settings("LICENSE")) + # link for c in self.linkBox.get_children(): self.linkBox.remove(c) @@ -1016,6 +1020,7 @@ class MainWindow (Window): # notebooks self.sysNotebook = self.tree.get_widget("systemNotebook") self.pkgNotebook = self.tree.get_widget("packageNotebook") + self.set_notebook_tabpos(map(PreferenceWindow.tabpos.get, map(int, (self.cfg.get("packageTabPos", "GTK"), self.cfg.get("systemTabPos", "GTK"))))) self.window.show_all() # the hidden stuff diff --git a/portato/gui/gtk/wrapper.py b/portato/gui/gtk/wrapper.py index cadec6a..e601f5d 100644 --- a/portato/gui/gtk/wrapper.py +++ b/portato/gui/gtk/wrapper.py @@ -3,7 +3,7 @@ # File: portato/gui/gtk/wrapper.py # This file is part of the Portato-Project, a graphical portage-frontend. # -# Copyright (C) 2006 René 'Necoro' Neumann +# Copyright (C) 2006-2008 René 'Necoro' Neumann # This is free software. You may redistribute copies of it under the terms of # the GNU General Public License version 2. # There is NO WARRANTY, to the extent permitted by law. @@ -12,9 +12,10 @@ from __future__ import absolute_import +import vte from gettext import lgettext as _ from ..wrapper import Tree, Console -import vte +from ...helper import debug class GtkTree (Tree): """The implementation of the abstract tree.""" diff --git a/portato/gui/gui_helper.py b/portato/gui/gui_helper.py index 0459d5b..b4878fc 100644 --- a/portato/gui/gui_helper.py +++ b/portato/gui/gui_helper.py @@ -3,7 +3,7 @@ # File: portato/gui/gui_helper.py # This file is part of the Portato-Project, a graphical portage-frontend. # -# Copyright (C) 2006-2007 René 'Necoro' Neumann +# Copyright (C) 2006-2008 René 'Necoro' Neumann # This is free software. You may redistribute copies of it under the terms of # the GNU General Public License version 2. # There is NO WARRANTY, to the extent permitted by law. @@ -14,7 +14,7 @@ from __future__ import absolute_import # some stuff needed import logging -import os, pty +import sys, os, pty import signal, threading, time from subprocess import Popen, PIPE, STDOUT @@ -219,7 +219,10 @@ class Database: if cat: del self._db[cat] - self.inst_cats.remove(cat) + try: + self.inst_cats.remove(cat) + except KeyError: # not in inst_cats - can be ignored + pass self.populate(cat+"/") else: self.__initialize() @@ -251,8 +254,8 @@ class EmergeQueue: self.pty = None # dictionaries with data about the packages in the queue - self.iters = {} # iterator in the tree - self.deps = {} # all the deps of the package + self.iters = {"install" : {}, "uninstall" : {}, "update" : {}} # iterator in the tree + self.deps = {"install" : {}, "update" : {}} # all the deps of the package # member vars self.tree = tree @@ -304,7 +307,7 @@ class EmergeQueue: return pkg - def update_tree (self, it, cpv, unmask = False, oneshot = False): + def update_tree (self, it, cpv, unmask = False, oneshot = False, type = "install"): """This updates the tree recursivly, or? Isn't it? Bjorn! @param it: iterator where to append @@ -315,11 +318,13 @@ class EmergeQueue: @type unmask: boolean @param oneshot: True if we want to emerge is oneshot @type oneshot: boolean + @param type: the type of the updating + @type type: string @raises backend.BlockedException: When occured during dependency-calculation. @raises backend.PackageNotFoundException: If no package could be found - normally it is existing but masked.""" - if cpv in self.deps: + if cpv in self.deps[type]: return # in list already and therefore it's already in the tree too # try to find an already installed instance @@ -368,11 +373,11 @@ class EmergeQueue: # add iter subIt = self.tree.append(it, self.tree.build_append_value(cpv, oneshot = oneshot, update = update, downgrade = downgrade, version = uVersion, useChange = changedUse)) - self.iters.update({cpv: subIt}) + self.iters[type].update({cpv: subIt}) # get dependencies deps = pkg.get_dep_packages() # this might raise a BlockedException - self.deps.update({cpv : deps}) + self.deps[type].update({cpv : deps}) # recursive call for d in deps: @@ -408,14 +413,14 @@ class EmergeQueue: deps = pkg.get_dep_packages() if update: - if not forceUpdate and cpv in self.deps and deps == self.deps[cpv]: + if not forceUpdate and cpv in self.deps[type] and deps == self.deps[type][cpv]: return # nothing changed - return else: hasBeenInQueue = (cpv in self.mergequeue or cpv in self.oneshotmerge) - parentIt = self.tree.parent_iter(self.iters[cpv]) + parentIt = self.tree.parent_iter(self.iters[type][cpv]) # delete it out of the tree - but NOT the changed flags - self.remove_with_children(self.iters[cpv], removeNewFlags = False) + self.remove_with_children(self.iters[type][cpv], removeNewFlags = False) if hasBeenInQueue: # package has been in queue before self._queue_append(cpv, oneshot) @@ -425,14 +430,14 @@ class EmergeQueue: if type == "install": self._queue_append(cpv, oneshot) if self.tree: - self.update_tree(self.tree.get_emerge_it(), cpv, unmask, oneshot = oneshot) + self.update_tree(self.tree.get_emerge_it(), cpv, unmask, type = type, oneshot = oneshot) elif type == "update" and self.tree: - self.update_tree(self.tree.get_update_it(), cpv, unmask, oneshot = oneshot) + self.update_tree(self.tree.get_update_it(), cpv, unmask, type = type, oneshot = oneshot) else: # unmerge self.unmergequeue.append(cpv) if self.tree: # update tree - self.tree.append(self.tree.get_unmerge_it(), self.tree.build_append_value(cpv)) + self.iters["uninstall"].update({cpv: self.tree.append(self.tree.get_unmerge_it(), self.tree.build_append_value(cpv))}) def _queue_append (self, cpv, oneshot = False): """Convenience function appending a cpv either to self.mergequeue or to self.oneshotmerge. @@ -473,27 +478,39 @@ class EmergeQueue: command = system.get_merge_command() # open tty - if not self.pty: - self.pty = pty.openpty() - self.console.set_pty(self.pty[0]) - else: - self.console.reset() + if self.console is not None: + if not self.pty: + self.pty = pty.openpty() + self.console.set_pty(self.pty[0]) + else: + self.console.reset() + def pre (): + os.setsid() # new session + if self.console: + import fcntl, termios + fcntl.ioctl(self.pty[1], termios.TIOCSCTTY, 0) # set pty-slave as session tty + os.dup2(self.pty[1], 0) + os.dup2(self.pty[1], 1) + os.dup2(self.pty[1], 2) + # start emerge - self.process = Popen(command+options+packages, stdout = self.pty[1], stderr = STDOUT, shell = False, env = system.get_environment(), preexec_fn = os.setsid) - + self.process = Popen(command+options+packages, shell = False, env = system.get_environment(), preexec_fn = pre) + # remove packages from queue - for i in it: - self.remove_with_children(i) + if self.tree: + for i in it: + self.remove_with_children(i) # update title - old_title = self.console.get_window_title() - while self.process and self.process.poll() is None: - if self.title_update : - title = self.console.get_window_title() - if title != old_title: - self.title_update(title) - time.sleep(0.5) + if self.console: + old_title = self.console.get_window_title() + while self.process and self.process.poll() is None: + if self.title_update : + title = self.console.get_window_title() + if title != old_title: + self.title_update(title) + time.sleep(0.5) if self.title_update: self.title_update(None) @@ -507,9 +524,10 @@ class EmergeQueue: @plugin.hook("after_emerge", packages = packages, retcode = ret) def update_packages(): - for cat in unique_array([system.split_cpv(p)[0] for p in packages if p not in ["world", "system"]]): - self.db.reload(cat) - debug("Category %s refreshed", cat) + if self.db: + for cat in unique_array([system.split_cpv(p)[0] for p in packages if p not in ["world", "system"]]): + self.db.reload(cat) + debug("Category %s refreshed", cat) update_packages() @@ -529,7 +547,7 @@ class EmergeQueue: its = [] for k in queue: list += ["="+k] - if self.tree: its.append(self.iters[k]) + if self.tree: its.append(self.iters["install"][k]) return list, its @@ -698,9 +716,9 @@ class EmergeQueue: if self.tree.iter_has_parent(it): cpv = self.tree.get_value(it, self.tree.get_cpv_column()) if self.tree.is_in_emerge(it): # Emerge - del self.iters[cpv] + del self.iters["install"][cpv] try: - del self.deps[cpv] + del self.deps["install"][cpv] except KeyError: # this seems to be removed due to a BlockedException - so no deps here atm ;) debug("Catched KeyError => %s seems not to be in self.deps. Should be no harm in normal cases.", cpv) try: @@ -717,8 +735,21 @@ class EmergeQueue: flags.remove_new_testing(cpv) elif self.tree.is_in_unmerge(it): # in Unmerge + del self.iters["uninstall"][cpv] self.unmergequeue.remove(cpv) + elif self.tree.is_in_update(it): + del self.iters["update"][cpv] + try: + del self.deps["update"][cpv] + except KeyError: # this seems to be removed due to a BlockedException - so no deps here atm ;) + debug("Catched KeyError => %s seems not to be in self.deps. Should be no harm in normal cases.", cpv) + + if removeNewFlags: # remove the changed flags + flags.remove_new_use_flags(cpv) + flags.remove_new_masked(cpv) + flags.remove_new_testing(cpv) + self.tree.remove(it) def is_empty (self): diff --git a/portato/gui/templates/portato.glade b/portato/gui/templates/portato.glade index 86e0c09..e9512a3 100644 --- a/portato/gui/templates/portato.glade +++ b/portato/gui/templates/portato.glade @@ -499,6 +499,9 @@ <property name="stock_id">gtk-add</property> <signal name="clicked" handler="cb_package_emerge_clicked"/> </widget> + <packing> + <property name="expand">False</property> + </packing> </child> <child> <widget class="GtkToolButton" id="pkgUnmergeBtn"> @@ -510,6 +513,9 @@ <property name="stock_id">gtk-remove</property> <signal name="clicked" handler="cb_package_unmerge_clicked"/> </widget> + <packing> + <property name="expand">False</property> + </packing> </child> <child> <widget class="GtkToolButton" id="pkgRevertBtn"> @@ -521,6 +527,9 @@ <property name="stock_id">gtk-undo</property> <signal name="clicked" handler="cb_package_revert_clicked"/> </widget> + <packing> + <property name="expand">False</property> + </packing> </child> </widget> <packing> @@ -546,117 +555,124 @@ <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="border_width">6</property> - <property name="n_rows">7</property> + <property name="n_rows">8</property> <property name="n_columns">2</property> <property name="column_spacing">5</property> <property name="row_spacing">5</property> <child> + <widget class="GtkLabel" id="licenseLabel"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="no_show_all">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">label</property> + <property name="single_line_mode">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + <child> <placeholder/> </child> <child> <placeholder/> </child> <child> - <widget class="GtkCheckButton" id="testingCheck"> + <widget class="GtkLabel" id="licenseLabelLabel"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="no_show_all">True</property> - <property name="label" translatable="yes">Testing</property> <property name="xalign">0</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="cb_testing_toggled"/> + <property name="label" translatable="yes"><b>License:</b></property> + <property name="use_markup">True</property> + <property name="single_line_mode">True</property> </widget> <packing> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="maskedLabel"> + <widget class="GtkLabel" id="notInSysLabel"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes"><b>Installed, but not in portage anymore</b></property> + <property name="use_markup">True</property> </widget> <packing> - <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="maskedCheck"> + <widget class="GtkLabel" id="missingLabel"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="no_show_all">True</property> - <property name="label" translatable="yes">Masked</property> - <property name="xalign">0</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="cb_masked_toggled"/> + <property name="label" translatable="yes"><span foreground='red'><b>MISSING KEYWORD</b></span></property> + <property name="use_markup">True</property> </widget> <packing> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">GTK_FILL</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="installedCheck"> + <widget class="GtkHBox" id="linkBox"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="no_show_all">True</property> - <property name="label" translatable="yes">Installed</property> - <property name="xalign">0</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="button_press_event" handler="cb_button_pressed"/> + <property name="spacing">5</property> + <child> + <placeholder/> + </child> </widget> <packing> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="homepageLinkLabel"> + <widget class="GtkLabel" id="descLabelLabel"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="xalign">0</property> - <property name="label" translatable="yes"><b>Homepage:</b></property> + <property name="label" translatable="yes"><b>Description:</b></property> <property name="use_markup">True</property> <property name="single_line_mode">True</property> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="overlayLabel"> + <widget class="GtkLabel" id="overlayLabelLabel"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="no_show_all">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">label</property> + <property name="label" translatable="yes"><b>Overlay:</b></property> + <property name="use_markup">True</property> <property name="single_line_mode">True</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> @@ -675,80 +691,106 @@ </packing> </child> <child> - <widget class="GtkLabel" id="overlayLabelLabel"> + <widget class="GtkLabel" id="overlayLabel"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="no_show_all">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes"><b>Overlay:</b></property> - <property name="use_markup">True</property> + <property name="label" translatable="yes">label</property> <property name="single_line_mode">True</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="descLabelLabel"> + <widget class="GtkLabel" id="homepageLinkLabel"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="xalign">0</property> - <property name="label" translatable="yes"><b>Description:</b></property> + <property name="label" translatable="yes"><b>Homepage:</b></property> <property name="use_markup">True</property> <property name="single_line_mode">True</property> </widget> <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkHBox" id="linkBox"> + <widget class="GtkCheckButton" id="installedCheck"> <property name="visible">True</property> + <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="spacing">5</property> - <child> - <placeholder/> - </child> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">Installed</property> + <property name="xalign">0</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="button_press_event" handler="cb_button_pressed"/> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="missingLabel"> + <widget class="GtkCheckButton" id="maskedCheck"> <property name="visible">True</property> + <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="no_show_all">True</property> - <property name="label" translatable="yes"><span foreground='red'><b>MISSING KEYWORD</b></span></property> - <property name="use_markup">True</property> + <property name="label" translatable="yes">Masked</property> + <property name="xalign">0</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="cb_masked_toggled"/> </widget> <packing> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="maskedLabel"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + </widget> + <packing> + <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="notInSysLabel"> + <widget class="GtkCheckButton" id="testingCheck"> <property name="visible">True</property> + <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="no_show_all">True</property> - <property name="label" translatable="yes"><b>Installed, but not in portage anymore</b></property> - <property name="use_markup">True</property> + <property name="label" translatable="yes">Testing</property> + <property name="xalign">0</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="cb_testing_toggled"/> </widget> <packing> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> @@ -1415,189 +1457,189 @@ <placeholder/> </child> <child> - <widget class="GtkLabel" id="maskLabel"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="xpad">5</property> - <property name="label" translatable="yes"><u><i>Masking Keywords</i></u></property> - <property name="use_markup">True</property> - <property name="single_line_mode">True</property> - </widget> - <packing> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="y_padding">5</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="testLabel"> + <widget class="GtkEntry" id="useFileEdit"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="xpad">5</property> - <property name="label" translatable="yes"><u><i>Testing Keywords</i></u></property> - <property name="use_markup">True</property> - <property name="single_line_mode">True</property> </widget> <packing> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_padding">5</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> </packing> </child> <child> - <widget class="GtkLabel" id="useLabel"> + <widget class="GtkLabel" id="useEditLabel"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="xpad">5</property> - <property name="label" translatable="yes"><u><i>Use-Flags</i></u></property> - <property name="use_markup">True</property> + <property name="label" translatable="yes">File name to use, if package.use is a directory: </property> <property name="single_line_mode">True</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_padding">6</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> </packing> </child> <child> - <widget class="GtkEventBox" id="hintEB"> + <widget class="GtkCheckButton" id="usePerVersionCheck"> <property name="visible">True</property> - <child> - <widget class="GtkFrame" id="hintFrame"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">GTK_SHADOW_OUT</property> - <child> - <widget class="GtkLabel" id="hintLabel"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><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</property> - <property name="use_markup">True</property> - </widget> - </child> - <child> - <placeholder/> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - </child> + <property name="label" translatable="yes">Add only exact version to package.use</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> </widget> <packing> <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="maskPerVersionCheck"> + <widget class="GtkCheckButton" id="testPerVersionCheck"> <property name="visible">True</property> - <property name="label" translatable="yes">Add only exact version to package.mask/package.unmask</property> + <property name="label" translatable="yes">Add only exact version to package.keywords</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> <property name="right_attach">2</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> </packing> </child> <child> - <widget class="GtkLabel" id="maskEditLabel"> + <widget class="GtkLabel" id="testEditLabel"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">File name to use, if package.mask/package.unmask is a directory: </property> + <property name="label" translatable="yes">File name to use, if package.keywords is a directory: </property> <property name="single_line_mode">True</property> </widget> <packing> - <property name="top_attach">9</property> - <property name="bottom_attach">10</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> </packing> </child> <child> - <widget class="GtkEntry" id="maskFileEdit"> + <widget class="GtkEntry" id="testFileEdit"> <property name="visible">True</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">9</property> - <property name="bottom_attach">10</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> </packing> </child> <child> - <widget class="GtkEntry" id="testFileEdit"> + <widget class="GtkEntry" id="maskFileEdit"> <property name="visible">True</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">9</property> + <property name="bottom_attach">10</property> </packing> </child> <child> - <widget class="GtkLabel" id="testEditLabel"> + <widget class="GtkLabel" id="maskEditLabel"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">File name to use, if package.keywords is a directory: </property> + <property name="label" translatable="yes">File name to use, if package.mask/package.unmask is a directory: </property> <property name="single_line_mode">True</property> </widget> <packing> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">9</property> + <property name="bottom_attach">10</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="testPerVersionCheck"> + <widget class="GtkCheckButton" id="maskPerVersionCheck"> <property name="visible">True</property> - <property name="label" translatable="yes">Add only exact version to package.keywords</property> + <property name="label" translatable="yes">Add only exact version to package.mask/package.unmask</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="usePerVersionCheck"> + <widget class="GtkEventBox" id="hintEB"> <property name="visible">True</property> - <property name="label" translatable="yes">Add only exact version to package.use</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> + <child> + <widget class="GtkFrame" id="hintFrame"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_OUT</property> + <child> + <widget class="GtkLabel" id="hintLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><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</property> + <property name="use_markup">True</property> + </widget> + </child> + <child> + <placeholder/> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + </child> </widget> <packing> <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> <child> - <widget class="GtkLabel" id="useEditLabel"> + <widget class="GtkLabel" id="useLabel"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">File name to use, if package.use is a directory: </property> + <property name="xpad">5</property> + <property name="label" translatable="yes"><u><i>Use-Flags</i></u></property> + <property name="use_markup">True</property> <property name="single_line_mode">True</property> </widget> <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_padding">6</property> </packing> </child> <child> - <widget class="GtkEntry" id="useFileEdit"> + <widget class="GtkLabel" id="testLabel"> <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">5</property> + <property name="label" translatable="yes"><u><i>Testing Keywords</i></u></property> + <property name="use_markup">True</property> + <property name="single_line_mode">True</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_padding">5</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="maskLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">5</property> + <property name="label" translatable="yes"><u><i>Masking Keywords</i></u></property> + <property name="use_markup">True</property> + <property name="single_line_mode">True</property> + </widget> + <packing> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="y_padding">5</property> </packing> </child> </widget> @@ -2050,14 +2092,17 @@ <property name="skip_pager_hint">True</property> <property name="urgency_hint">True</property> <property name="has_separator">False</property> + <property name="program_name">Portato</property> <property name="copyright" translatable="yes">This software is licensed under the terms of the GPLv2. Copyright (C) 2006-2007 René 'Necoro' Neumann <necoro@necoro.net></property> <property name="comments" translatable="yes">A Portage GUI</property> <property name="website">http://portato.necoro.net</property> <property name="authors">René 'Necoro' Neumann -Many thanks to the Porthole team which often inspired me or gave me hints. -(And sometimes I even copied files ^^ ;))</property> +Thanks goto: + - The Porthole team, which often inspired me and gave me hints :) + - franzf, who often tested and gave comments + - the Sabayon-Distro for making Portato the default Portage-GUI</property> <property name="translator_credits">Catalan - Roger Calvó German - René 'Necoro' Neumann</property> <property name="artists">p4r4d0x (inspired by wolfden)</property> diff --git a/portato/gui/wrapper.py b/portato/gui/wrapper.py index 011c819..2a88bdf 100644 --- a/portato/gui/wrapper.py +++ b/portato/gui/wrapper.py @@ -198,9 +198,9 @@ class Console: Each frontend _MUST_ define its own subclass and implement ALL of the methods, otherwise a NotImplementedError will be thrown.""" def set_pty (self, pty): - """This sets the pseudo-terminal where to print the incoming output to. + """This sets the pty master. - @param pty: the terminal to print to + @param pty: the pty master @type pty: file-descriptor""" raise NotImplementedError |