summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore1
-rw-r--r--.gitignore5
-rw-r--r--doc/NEWS5
-rw-r--r--doc/TRANSLATING17
-rw-r--r--doc/TRANSLATORS1
-rw-r--r--i18n/de.po629
-rw-r--r--i18n/it.po1164
-rw-r--r--i18n/messages.pot441
-rw-r--r--plugins/etc_proposals.py2
-rw-r--r--plugins/exception.py2
-rw-r--r--plugins/gpytage.py2
-rw-r--r--plugins/new_version.py62
-rw-r--r--plugins/notify.py2
-rw-r--r--plugins/package_details.py2
-rw-r--r--plugins/reload_portage.py4
-rwxr-xr-xportato.py2
-rw-r--r--portato/__init__.py8
-rw-r--r--portato/backend/__init__.py61
-rw-r--r--portato/backend/exceptions.py2
-rw-r--r--portato/backend/flags.py2
-rw-r--r--portato/backend/package.py12
-rw-r--r--portato/backend/portage/__init__.py2
-rw-r--r--portato/backend/portage/package.py16
-rw-r--r--portato/backend/portage/package_22.py2
-rw-r--r--portato/backend/portage/sets.py4
-rw-r--r--portato/backend/portage/settings.py2
-rw-r--r--portato/backend/portage/settings_22.py2
-rw-r--r--portato/backend/portage/system.py32
-rw-r--r--portato/backend/portage/system_22.py10
-rw-r--r--portato/backend/system_interface.py20
-rw-r--r--portato/config_parser.py2
-rw-r--r--portato/constants.py9
-rw-r--r--portato/db/__init__.py4
-rw-r--r--portato/db/database.py35
-rw-r--r--portato/db/eix_sql.py9
-rw-r--r--portato/db/hash.py5
-rw-r--r--portato/db/sql.py28
-rw-r--r--portato/dependency.py2
-rw-r--r--portato/eix/__init__.py2
-rw-r--r--portato/eix/exceptions.py2
-rw-r--r--portato/eix/parser.pyx6
-rw-r--r--portato/eix/py_parser.py2
-rw-r--r--portato/gui/__init__.py8
-rw-r--r--portato/gui/dialogs.py4
-rw-r--r--portato/gui/exception_handling.py7
-rw-r--r--portato/gui/exceptions.py2
-rw-r--r--portato/gui/queue.py4
-rw-r--r--portato/gui/session.py2
-rw-r--r--portato/gui/slots.py2
-rw-r--r--portato/gui/templates/AboutWindow.ui36
-rw-r--r--portato/gui/templates/MainWindow.menu16
-rw-r--r--portato/gui/templates/MainWindow.ui18
-rw-r--r--portato/gui/templates/PkgListWindow.ui (renamed from portato/gui/templates/UpdateWindow.ui)19
-rw-r--r--portato/gui/templates/PreferenceWindow.ui2
-rw-r--r--portato/gui/updater.py2
-rw-r--r--portato/gui/utils.py9
-rw-r--r--portato/gui/views.py2
-rw-r--r--portato/gui/windows/__init__.py2
-rw-r--r--portato/gui/windows/about.py10
-rw-r--r--portato/gui/windows/basic.py3
-rw-r--r--portato/gui/windows/mailinfo.py2
-rw-r--r--portato/gui/windows/main.py98
-rw-r--r--portato/gui/windows/pkglist.py (renamed from portato/gui/windows/update.py)71
-rw-r--r--portato/gui/windows/plugin.py2
-rw-r--r--portato/gui/windows/preference.py2
-rw-r--r--portato/gui/windows/search.py2
-rw-r--r--portato/gui/windows/splash.py7
-rw-r--r--portato/helper.py2
-rw-r--r--portato/ipc.pxd2
-rw-r--r--portato/ipc.pyx2
-rw-r--r--portato/listener.py2
-rw-r--r--portato/log.py12
-rw-r--r--portato/plugin.py2
-rw-r--r--portato/plugins/__init__.py2
-rw-r--r--portato/session.py4
-rw-r--r--portato/su.py2
-rw-r--r--portato/waiting_queue.py2
-rw-r--r--setup.py2
78 files changed, 2210 insertions, 778 deletions
diff --git a/.bzrignore b/.bzrignore
deleted file mode 100644
index 6e92f57..0000000
--- a/.bzrignore
+++ /dev/null
@@ -1 +0,0 @@
-tags
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8594579
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+tags
+*.pyc
+*.so
+*.c
+*.sw?
diff --git a/doc/NEWS b/doc/NEWS
index 8fcb404..a5d3186 100644
--- a/doc/NEWS
+++ b/doc/NEWS
@@ -2,6 +2,11 @@ next:
- allow eix as backend DB
- use an internal messagequeue module instead of external shm
+- show the list of world packages
+
+0.13.1:
+- fix segfault in GLib
+- correct config path handling for portage-2.1.7.x
0.13:
- allow lines w/o keyword in package.keywords
diff --git a/doc/TRANSLATING b/doc/TRANSLATING
index 4b49fa5..75d1c45 100644
--- a/doc/TRANSLATING
+++ b/doc/TRANSLATING
@@ -12,15 +12,28 @@ KBabel (kde-base/kbabel) or Gtranslator (app-text/gtranslator).
Getting the sources:
===================
+You do need the sources to make translations, as the installed program is not sufficient.
+Therefore you need to have dev-util/git installed.
-You do need the sources to make translations. The installed program is not sufficient.
Change into a local directory where you want to have the sources installed.
Then do:
-> bzr pull lp:portato
+> git clone git://github.com/Necoro/portato.git
You now should have the actual sources in the "portato" subdirectory.
+If you later on want to update these sources, you do:
+
+> git pull
+
+Important: If you are working on a given version, you need to change to the correct branch:
+
+> git checkout -b 0.13 origin/0.13
+
+where '0.13' has to be replaced by the version you are going to use.
+
+Have a look at http://www.git-scm.com for more information on how to use git.
+
To update an incomplete translation:
===================================
diff --git a/doc/TRANSLATORS b/doc/TRANSLATORS
index e71914e..51b5110 100644
--- a/doc/TRANSLATORS
+++ b/doc/TRANSLATORS
@@ -1,5 +1,6 @@
Catalan: Roger Calvó
German: René 'Necoro' Neumann
+Italian: Ponsi
Polish: Tomasz Osiński
Portugese (Brazilian): Alberto Federman Neto
Spanish: Daniel Halens
diff --git a/i18n/de.po b/i18n/de.po
index 0a15bde..b7add36 100644
--- a/i18n/de.po
+++ b/i18n/de.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Portato\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-31 22:04+0200\n"
-"PO-Revision-Date: 2009-08-31 22:05+0100\n"
+"POT-Creation-Date: 2010-03-05 21:26+0100\n"
+"PO-Revision-Date: 2010-03-05 21:27+0100\n"
"Last-Translator: René 'Necoro' Neumann <necoro@necoro.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -13,111 +13,112 @@ msgstr ""
"X-Poedit-Country: GERMANY\n"
"X-Poedit-SourceCharset: utf-8\n"
-#: portato/gui/templates/UpdateWindow.ui:6
-msgid "Updatable Packages"
-msgstr "Pakete mit Updates"
-
-#: portato/gui/templates/UpdateWindow.ui:48
+#: portato/gui/templates/PkgListWindow.ui:48
msgid "_Close"
msgstr "_Schließen"
-#: portato/gui/templates/UpdateWindow.ui:59
+#: portato/gui/templates/PkgListWindow.ui:64
+#: portato/gui/windows/pkglist.py:35
msgid "Select _All"
msgstr "_Alles auswählen"
-#: portato/gui/templates/UpdateWindow.ui:73
+#: portato/gui/templates/PkgListWindow.ui:80
msgid "_Install Selected"
msgstr "_Installiere ausgewählte"
+#: portato/gui/templates/PkgListWindow.ui:96
+msgid "_Uninstall Selected"
+msgstr "_Deinstalliere ausgewählte"
+
#: portato/gui/templates/PreferenceWindow.ui:12
msgid "Preferences"
msgstr "Einstellungen"
-#: portato/gui/templates/PreferenceWindow.ui:48
+#: portato/gui/templates/PreferenceWindow.ui:51
msgid "Debug"
msgstr "Debug"
-#: portato/gui/templates/PreferenceWindow.ui:61
+#: portato/gui/templates/PreferenceWindow.ui:64
msgid "Search while typing"
msgstr "Suche während des Tippens"
-#: portato/gui/templates/PreferenceWindow.ui:81
+#: portato/gui/templates/PreferenceWindow.ui:84
msgid "Browser command: "
msgstr "Browser-Befehl: "
-#: portato/gui/templates/PreferenceWindow.ui:108
-#: portato/gui/templates/PreferenceWindow.ui:717
+#: portato/gui/templates/PreferenceWindow.ui:111
+#: portato/gui/templates/PreferenceWindow.ui:725
msgid "<b>General Options</b>"
msgstr "<b>Allgemeine Optionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:142
+#: portato/gui/templates/PreferenceWindow.ui:146
msgid "Used database type"
msgstr "Benutzter Datenbank-Typ"
-#: portato/gui/templates/PreferenceWindow.ui:178
-#: portato/gui/templates/PluginWindow.ui:93
-#: portato/gui/templates/PluginWindow.ui:118
-#: portato/gui/templates/MainWindow.ui:369
-#: portato/gui/templates/MainWindow.ui:485
-#: portato/gui/templates/MainWindow.ui:598
-#: portato/gui/templates/MainWindow.ui:613
+#: portato/gui/templates/PreferenceWindow.ui:182
+#: portato/gui/templates/PluginWindow.ui:97
+#: portato/gui/templates/PluginWindow.ui:122
+#: portato/gui/templates/MainWindow.ui:190
+#: portato/gui/templates/MainWindow.ui:304
+#: portato/gui/templates/MainWindow.ui:417
+#: portato/gui/templates/MainWindow.ui:432
msgid "label"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:188
+#: portato/gui/templates/PreferenceWindow.ui:192
msgid "<b>Description</b>"
msgstr "<b>Beschreibung</b>"
-#: portato/gui/templates/PreferenceWindow.ui:204
+#: portato/gui/templates/PreferenceWindow.ui:208
msgid "<b>Database Options</b>"
msgstr "<b>Datenbankoptionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:226
-#: portato/gui/templates/MainWindow.ui:754
+#: portato/gui/templates/PreferenceWindow.ui:230
+#: portato/gui/templates/MainWindow.ui:582
msgid "General"
msgstr "Allgemein"
-#: portato/gui/templates/PreferenceWindow.ui:308
+#: portato/gui/templates/PreferenceWindow.ui:314
msgid "<b>Package sets to update</b>"
msgstr "<b>Paket-Sets für \"Update\"</b>"
-#: portato/gui/templates/PreferenceWindow.ui:324
+#: portato/gui/templates/PreferenceWindow.ui:330
msgid "<b>Update World Options</b>"
msgstr "<b>Optionen für \"update world\"</b>"
-#: portato/gui/templates/PreferenceWindow.ui:350
+#: portato/gui/templates/PreferenceWindow.ui:356
msgid "Sync command: "
msgstr "Sync-Befehl: "
-#: portato/gui/templates/PreferenceWindow.ui:372
+#: portato/gui/templates/PreferenceWindow.ui:378
msgid "<b>Sync Options</b>"
msgstr "<b>Syncoptionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:413
+#: portato/gui/templates/PreferenceWindow.ui:419
msgid "File name to use, if package.use is a directory: "
msgstr "Zu benutzender Dateiname, wenn package.use ein Verzeichnis ist:"
-#: portato/gui/templates/PreferenceWindow.ui:423
+#: portato/gui/templates/PreferenceWindow.ui:429
msgid "Add only exact version to package.use"
msgstr "Füge nur die exakte Paketversion zu package.keywords hinzu"
-#: portato/gui/templates/PreferenceWindow.ui:437
+#: portato/gui/templates/PreferenceWindow.ui:443
msgid "Add only exact version to package.keywords"
msgstr "Füge nur die exakte Paketversion zu package.keywords hinzu"
-#: portato/gui/templates/PreferenceWindow.ui:453
+#: portato/gui/templates/PreferenceWindow.ui:459
msgid "File name to use, if package.keywords is a directory: "
msgstr "Zu benutzender Dateiname, wenn package.keywords ein Verzeichnis ist:"
-#: portato/gui/templates/PreferenceWindow.ui:487
+#: portato/gui/templates/PreferenceWindow.ui:493
msgid "File name to use, if package.mask/package.unmask is a directory: "
msgstr "Zu benutzender Dateiname, wenn package.mask/package.unmask ein Verzeichnis ist:"
-#: portato/gui/templates/PreferenceWindow.ui:497
+#: portato/gui/templates/PreferenceWindow.ui:503
msgid "Add only exact version to package.mask/package.unmask"
msgstr "Füge nur die exakte Paketversion zu package.mask/package.unmask hinzu"
-#: portato/gui/templates/PreferenceWindow.ui:521
+#: portato/gui/templates/PreferenceWindow.ui:527
msgid ""
"<u>You may use the following placeholders:</u>\n"
"\n"
@@ -132,145 +133,145 @@ msgstr ""
"<i>$(cat)</i>: Kategorie\n"
"<i>$(cat-1)/$(cat-2)</i>: erster/zweiter Teil der Kategorie<i>$(version)</i>: Paketversion"
-#: portato/gui/templates/PreferenceWindow.ui:545
+#: portato/gui/templates/PreferenceWindow.ui:551
msgid "<u><i>Use-Flags</i></u>"
msgstr "<u><i>Use-Flags</i></u>"
-#: portato/gui/templates/PreferenceWindow.ui:560
+#: portato/gui/templates/PreferenceWindow.ui:566
msgid "<u><i>Testing Keywords</i></u>"
msgstr "<u><i>Testing Keywords</i></u>"
-#: portato/gui/templates/PreferenceWindow.ui:575
+#: portato/gui/templates/PreferenceWindow.ui:581
msgid "<u><i>Masking Keywords</i></u>"
msgstr "<u><i>Masking Keywords</i></u>"
-#: portato/gui/templates/PreferenceWindow.ui:601
+#: portato/gui/templates/PreferenceWindow.ui:607
msgid "<b>Use Flag and Keyword Options</b>"
msgstr "<b>Use-Flag- und Keyword-Optionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:619
+#: portato/gui/templates/PreferenceWindow.ui:625
msgid "Portage"
msgstr "Portage"
-#: portato/gui/templates/PreferenceWindow.ui:655
+#: portato/gui/templates/PreferenceWindow.ui:663
msgid "Enable systray"
msgstr "Aktiviere Systray"
-#: portato/gui/templates/PreferenceWindow.ui:669
+#: portato/gui/templates/PreferenceWindow.ui:677
msgid "Show emerge progress in window title"
msgstr "Zeige den Emerge Prozess im Fenstertitel"
-#: portato/gui/templates/PreferenceWindow.ui:683
+#: portato/gui/templates/PreferenceWindow.ui:691
msgid "Show emerge progress in console title"
msgstr "Zeige den Emerge Prozess im Konsolentitel"
-#: portato/gui/templates/PreferenceWindow.ui:697
+#: portato/gui/templates/PreferenceWindow.ui:705
msgid "Hide on minimization (only if systray is enabled)"
msgstr "Minimiere zu Systray"
-#: portato/gui/templates/PreferenceWindow.ui:755
+#: portato/gui/templates/PreferenceWindow.ui:764
msgid "Package Tabs"
msgstr "Pakettabs"
-#: portato/gui/templates/PreferenceWindow.ui:785
+#: portato/gui/templates/PreferenceWindow.ui:793
msgid "System Tabs"
msgstr "Systemtabs"
-#: portato/gui/templates/PreferenceWindow.ui:813
+#: portato/gui/templates/PreferenceWindow.ui:821
msgid "<b>Tab Options</b>"
msgstr "<b>Tab Optionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:841
+#: portato/gui/templates/PreferenceWindow.ui:850
msgid "Show slots in the version list"
msgstr "Zeige die Slots in der Versionsliste"
-#: portato/gui/templates/PreferenceWindow.ui:854
+#: portato/gui/templates/PreferenceWindow.ui:863
msgid "Collapse categories with same prefix"
msgstr "Fasse Kategorien mit gleichem Präfix zusammen"
-#: portato/gui/templates/PreferenceWindow.ui:875
+#: portato/gui/templates/PreferenceWindow.ui:884
msgid "<b>Package Options</b>"
msgstr "<b>Paketoptionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:911
+#: portato/gui/templates/PreferenceWindow.ui:921
msgid "Console Font"
msgstr "Schriftart in Konsole"
-#: portato/gui/templates/PreferenceWindow.ui:924
+#: portato/gui/templates/PreferenceWindow.ui:934
msgid "Chose a console font"
msgstr "Wähle eine Schriftart"
-#: portato/gui/templates/PreferenceWindow.ui:945
+#: portato/gui/templates/PreferenceWindow.ui:955
msgid "Maximum length of the console title"
msgstr "Maximale Länge des Konsolentitels"
-#: portato/gui/templates/PreferenceWindow.ui:978
+#: portato/gui/templates/PreferenceWindow.ui:988
msgid "<b>Console Options</b>"
msgstr "<b>Konsolenoptionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:1015
+#: portato/gui/templates/PreferenceWindow.ui:1026
msgid "Package Detail Background"
msgstr "Hintergrund der Paketbeschreibung"
-#: portato/gui/templates/PreferenceWindow.ui:1049
+#: portato/gui/templates/PreferenceWindow.ui:1060
msgid "Flag Placeholder Description Background"
msgstr "Hintergrund der Flag-Platzhalter-Beschreibung"
-#: portato/gui/templates/PreferenceWindow.ui:1080
+#: portato/gui/templates/PreferenceWindow.ui:1091
msgid "<b>Color Options</b>"
msgstr "<b>Farboptionen</b>"
-#: portato/gui/templates/PreferenceWindow.ui:1101
+#: portato/gui/templates/PreferenceWindow.ui:1112
msgid "Visual"
msgstr "Oberfläche"
-#: portato/gui/templates/PluginWindow.ui:7
+#: portato/gui/templates/PluginWindow.ui:8
msgid "Plugins"
msgstr "Plugins"
-#: portato/gui/templates/PluginWindow.ui:51
+#: portato/gui/templates/PluginWindow.ui:53
msgid "_Install dependencies"
msgstr "_Installiere Abhängigkeiten"
-#: portato/gui/templates/PluginWindow.ui:79
+#: portato/gui/templates/PluginWindow.ui:83
msgid "Needed dependencies"
msgstr "Abhängigkeiten"
-#: portato/gui/templates/PluginWindow.ui:104
+#: portato/gui/templates/PluginWindow.ui:108
msgid "<b>Author:</b>"
msgstr "<b>Autor:</b>"
-#: portato/gui/templates/PluginWindow.ui:139
-#: portato/gui/windows/update.py:47
-#: portato/gui/windows/main.py:825
+#: portato/gui/templates/PluginWindow.ui:141
+#: portato/gui/windows/pkglist.py:59
+#: portato/gui/windows/main.py:830
#: portato/gui/windows/plugin.py:27
msgid "Enabled"
msgstr "Aktiviert"
-#: portato/gui/templates/PluginWindow.ui:148
+#: portato/gui/templates/PluginWindow.ui:157
#: portato/gui/windows/plugin.py:27
msgid "Temporarily enabled"
msgstr "Aktiviert (temporär)"
-#: portato/gui/templates/PluginWindow.ui:159
+#: portato/gui/templates/PluginWindow.ui:172
#: portato/gui/windows/plugin.py:27
msgid "Temporarily disabled"
msgstr "Deaktiviert (temporär)"
-#: portato/gui/templates/PluginWindow.ui:171
+#: portato/gui/templates/PluginWindow.ui:188
#: portato/gui/windows/plugin.py:27
msgid "Disabled"
msgstr "Deaktiviert"
-#: portato/gui/templates/AboutWindow.ui:7
+#: portato/gui/templates/AboutWindow.ui:8
msgid "About Portato"
msgstr "Portato"
-#: portato/gui/templates/MailInfoWindow.ui:5
+#: portato/gui/templates/MailInfoWindow.ui:6
msgid "Send Bug Mail ..."
msgstr "Sende Bug-Email ..."
-#: portato/gui/templates/MailInfoWindow.ui:30
+#: portato/gui/templates/MailInfoWindow.ui:29
msgid ""
"<b><u>Additional Information</u></b>\n"
"\n"
@@ -280,15 +281,15 @@ msgstr ""
"\n"
"(alle optional)"
-#: portato/gui/templates/MailInfoWindow.ui:74
+#: portato/gui/templates/MailInfoWindow.ui:73
msgid "Email address:"
msgstr "Email-Adresse:"
-#: portato/gui/templates/MailInfoWindow.ui:89
+#: portato/gui/templates/MailInfoWindow.ui:88
msgid "Name:"
msgstr "Name:"
-#: portato/gui/templates/MailInfoWindow.ui:104
+#: portato/gui/templates/MailInfoWindow.ui:103
msgid ""
"Comments /\n"
"what did you do to hit the bug?"
@@ -296,195 +297,126 @@ msgstr ""
"Kommentare /\n"
"Vorgehensweise um den Bug zu erzeugen?"
-#: portato/gui/templates/MailInfoWindow.ui:141
-msgid "Attaches the logfile to the mail. This log only contains debug information."
-msgstr "Hängt die Logdatei an die Mail an. In der Datei sind nur Debug-Informationen enthalten."
-
-#: portato/gui/templates/MailInfoWindow.ui:142
+#: portato/gui/templates/MailInfoWindow.ui:138
msgid "Attach _Logfile"
msgstr "Hänge _Logdatei an"
-#: portato/gui/templates/MailInfoWindow.ui:194
+#: portato/gui/templates/MailInfoWindow.ui:142
+msgid "Attaches the logfile to the mail. This log only contains debug information."
+msgstr "Hängt die Logdatei an die Mail an. In der Datei sind nur Debug-Informationen enthalten."
+
+#: portato/gui/templates/MailInfoWindow.ui:206
msgid "_Send"
msgstr "_Send"
-#: portato/gui/templates/SearchWindow.ui:7
+#: portato/gui/templates/SearchWindow.ui:8
msgid "Search Results"
msgstr "Ergebnisse"
-#: portato/gui/templates/MainWindow.ui:10
-msgid "Plu_gins"
-msgstr "Plu_gins"
-
-#: portato/gui/templates/MainWindow.ui:20
-msgid "_File"
-msgstr "_Datei"
-
-#: portato/gui/templates/MainWindow.ui:27
-msgid "_Preferences"
-msgstr "_Einstellungen"
-
-#: portato/gui/templates/MainWindow.ui:36
-msgid "Re_load Portage"
-msgstr "Aktua_lisiere Portage-Cache"
-
-#: portato/gui/templates/MainWindow.ui:52
-msgid "_Emerge"
-msgstr "_Emerge"
-
-#: portato/gui/templates/MainWindow.ui:59
-msgid "_Install"
-msgstr "_Installieren"
-
-#: portato/gui/templates/MainWindow.ui:68
-msgid "_Uninstall"
-msgstr "_Deinstallieren"
-
-#: portato/gui/templates/MainWindow.ui:76
-#: portato/gui/templates/MainWindow.ui:847
-msgid "Update _World"
-msgstr "Update _World"
-
-#: portato/gui/templates/MainWindow.ui:83
-msgid "Show Updatable P_ackages"
-msgstr "Zeige Pakete mit _Updates"
-
-#: portato/gui/templates/MainWindow.ui:90
-msgid "Show _Only Installed Packages"
-msgstr "_Zeige nur installierte Pakete"
-
-#: portato/gui/templates/MainWindow.ui:99
-msgid "_Sync"
-msgstr "_Sync"
-
-#: portato/gui/templates/MainWindow.ui:108
-msgid "Save _Flags"
-msgstr "Speichere _Flags"
-
-#: portato/gui/templates/MainWindow.ui:115
-msgid "Emerge _Paused"
-msgstr "Emerge _angehalten"
-
-#: portato/gui/templates/MainWindow.ui:124
-msgid "_Kill Emerge"
-msgstr "_Kill Emerge"
-
-#: portato/gui/templates/MainWindow.ui:133
-msgid "_Copy"
-msgstr "_Kopieren"
-
-#: portato/gui/templates/MainWindow.ui:140
-msgid "_?"
-msgstr "_?"
-
-#: portato/gui/templates/MainWindow.ui:147
-msgid "_About"
-msgstr "_Über"
-
-#: portato/gui/templates/MainWindow.ui:155
-msgid "_Plugins"
-msgstr "_Plugins"
-
-#: portato/gui/templates/MainWindow.ui:380
+#: portato/gui/templates/MainWindow.ui:204
msgid "Install onto system"
msgstr "Füge zum System hinzu"
-#: portato/gui/templates/MainWindow.ui:402
+#: portato/gui/templates/MainWindow.ui:226
msgid "Uninstall from system"
msgstr "Lösche vom System"
-#: portato/gui/templates/MainWindow.ui:424
+#: portato/gui/templates/MainWindow.ui:248
msgid "Revert changes"
msgstr "Änderungen rückgängig machen"
-#: portato/gui/templates/MainWindow.ui:501
+#: portato/gui/templates/MainWindow.ui:320
msgid "<b>License:</b>"
msgstr "<b>Lizenz:</b>"
-#: portato/gui/templates/MainWindow.ui:518
+#: portato/gui/templates/MainWindow.ui:337
msgid "<b>Installed, but not in portage anymore</b>"
msgstr "<b>Installiert, aber nicht mehr im Portage-Tree vorhanden</b>"
-#: portato/gui/templates/MainWindow.ui:533
+#: portato/gui/templates/MainWindow.ui:352
msgid "<span foreground='red'><b>MISSING KEYWORD</b></span>"
msgstr "<span foreground='red'><b>FEHLENDES KEYWORD</b></span>"
-#: portato/gui/templates/MainWindow.ui:565
+#: portato/gui/templates/MainWindow.ui:384
msgid "<b>Description:</b>"
msgstr "<b>Beschreibung:</b>"
-#: portato/gui/templates/MainWindow.ui:581
+#: portato/gui/templates/MainWindow.ui:400
msgid "<b>Overlay:</b>"
msgstr "<b>Overlay:</b>"
-#: portato/gui/templates/MainWindow.ui:629
+#: portato/gui/templates/MainWindow.ui:448
msgid "<b>Homepage:</b>"
msgstr "<b>Homepage:</b>"
-#: portato/gui/templates/MainWindow.ui:647
-#: portato/gui/windows/main.py:826
+#: portato/gui/templates/MainWindow.ui:462
+#: portato/gui/windows/main.py:831
msgid "Installed"
msgstr "Installiert"
-#: portato/gui/templates/MainWindow.ui:665
-#: portato/gui/windows/main.py:255
-#: portato/gui/windows/main.py:258
-#: portato/gui/windows/main.py:261
-#: portato/gui/windows/main.py:361
-#: portato/gui/windows/main.py:365
-#: portato/gui/windows/main.py:372
-#: portato/gui/windows/main.py:376
+#: portato/gui/templates/MainWindow.ui:481
+#: portato/gui/windows/main.py:256
+#: portato/gui/windows/main.py:259
+#: portato/gui/windows/main.py:262
+#: portato/gui/windows/main.py:362
+#: portato/gui/windows/main.py:366
+#: portato/gui/windows/main.py:373
+#: portato/gui/windows/main.py:377
msgid "Masked"
msgstr "Masked"
-#: portato/gui/templates/MainWindow.ui:697
-#: portato/gui/windows/main.py:271
-#: portato/gui/windows/main.py:274
-#: portato/gui/windows/main.py:334
-#: portato/gui/windows/main.py:338
+#: portato/gui/templates/MainWindow.ui:514
+#: portato/gui/windows/main.py:272
+#: portato/gui/windows/main.py:275
+#: portato/gui/windows/main.py:335
+#: portato/gui/windows/main.py:339
msgid "Testing"
msgstr "Testing"
-#: portato/gui/templates/MainWindow.ui:715
+#: portato/gui/templates/MainWindow.ui:537
msgid "<b>Use Flags:</b>"
msgstr "<b>Use Flags:</b>"
-#: portato/gui/templates/MainWindow.ui:776
+#: portato/gui/templates/MainWindow.ui:607
msgid "Use List"
msgstr "Use-Flag-Liste"
-#: portato/gui/templates/MainWindow.ui:813
+#: portato/gui/templates/MainWindow.ui:647
msgid "Execute the current selected queue"
msgstr "Führe die aktuell gewählte Queue aus"
-#: portato/gui/templates/MainWindow.ui:831
+#: portato/gui/templates/MainWindow.ui:668
msgid "E_xecute"
msgstr "_Ausführen"
-#: portato/gui/templates/MainWindow.ui:846
+#: portato/gui/templates/MainWindow.ui:687
+msgid "Update _World"
+msgstr "Update _World"
+
+#: portato/gui/templates/MainWindow.ui:691
msgid "Calculate the packages which will be installed during an \"update world\""
msgstr "Berechnet die Pakete, welche während eines \"update world\" installiert werden würden"
-#: portato/gui/templates/MainWindow.ui:858
-msgid "Remove the selected package from the queue"
-msgstr "Löscht das gewählte Paket aus der Queue"
-
-#: portato/gui/templates/MainWindow.ui:859
+#: portato/gui/templates/MainWindow.ui:703
msgid "_Remove"
msgstr "_Löschen"
-#: portato/gui/templates/MainWindow.ui:929
-#: portato/gui/windows/main.py:606
+#: portato/gui/templates/MainWindow.ui:707
+msgid "Remove the selected package from the queue"
+msgstr "Löscht das gewählte Paket aus der Queue"
+
+#: portato/gui/templates/MainWindow.ui:782
+#: portato/gui/windows/main.py:611
msgid "Queue"
msgstr "Queue"
-#: portato/gui/templates/MainWindow.ui:950
-#: portato/gui/windows/main.py:1206
-#: portato/gui/windows/main.py:1208
+#: portato/gui/templates/MainWindow.ui:806
+#: portato/gui/windows/main.py:1240
+#: portato/gui/windows/main.py:1242
msgid "Console"
msgstr "Konsole"
-#: portato/gui/templates/MainWindow.ui:981
+#: portato/gui/templates/MainWindow.ui:840
msgid "Log"
msgstr "Log"
@@ -543,7 +475,7 @@ msgstr "%s wurde geändert"
#: portato/gui/dialogs.py:71
msgid ""
"Portato will write these changes into the appropriate files.\n"
-"Please backup them if you think it is necessairy."
+"Please backup them if you think it is necessary."
msgstr ""
"Portato wird diese Änderungen speichern.\n"
"Bitte sichere die entsprechenden Dateien, wenn du es als notwendig erachtest."
@@ -577,7 +509,7 @@ msgstr ""
"Bitte führe <i>emerge --sync &amp;&amp; layman -S</i> aus."
#: portato/gui/dialogs.py:123
-#: portato/gui/windows/main.py:1255
+#: portato/gui/windows/main.py:1289
#, python-format
msgid "No versions of package '%s' found!"
msgstr "Keine Version vom Paket '%s' gefunden!"
@@ -597,7 +529,7 @@ msgid "No %(old)s language file installed. Disable highlighting."
msgstr "Keine \"%(old)s\" Syntaxdatei gefunden. Deaktiviere Hervorhebung."
#: portato/gui/views.py:130
-#: plugins/package_details.py:102
+#: plugins/package_details.py:108
#, python-format
msgid "Error: %s"
msgstr "Fehler: %s"
@@ -644,6 +576,22 @@ msgstr "Lade Backend"
msgid "Results"
msgstr "Ergebnisse"
+#: portato/gui/windows/pkglist.py:36
+msgid "Unselect _All"
+msgstr "_Alles abwählen"
+
+#: portato/gui/windows/pkglist.py:60
+msgid "Package"
+msgstr "Paket"
+
+#: portato/gui/windows/pkglist.py:147
+msgid "Updatable Packages"
+msgstr "Pakete mit Updates"
+
+#: portato/gui/windows/pkglist.py:151
+msgid "World Packages"
+msgstr "Pakete in \"World\""
+
#: portato/gui/windows/mailinfo.py:83
#, python-format
msgid "An error occurred while sending. I think we were greylisted. The error: %s"
@@ -653,10 +601,6 @@ msgstr "Während des Sendes trat ein Fehler auf. Wahrscheinlich wurden wir ge-gr
msgid "Retrying after waiting 60 seconds."
msgstr "Wiederhole den Versuch nach einer 60s Pause."
-#: portato/gui/windows/update.py:48
-msgid "Package"
-msgstr "Paket"
-
#: portato/gui/windows/splash.py:35
#, python-format
msgid "... is starting up: %s"
@@ -683,116 +627,118 @@ msgid "Package Set"
msgstr "Paket-Set"
#: portato/gui/windows/preference.py:259
-#: portato/gui/windows/main.py:828
+#: portato/gui/windows/main.py:833
+#: portato/db/database.py:49
+#: portato/db/database.py:50
msgid "Description"
msgstr "Beschreibung"
-#: portato/gui/windows/main.py:141
+#: portato/gui/windows/main.py:142
msgid "<no description>"
msgstr "<keine Beschreibung>"
-#: portato/gui/windows/main.py:167
+#: portato/gui/windows/main.py:168
msgid "The first homepage part does not start with 'http' or 'ftp'."
msgstr "Der erste Teil der Homepage startet nicht mit 'http' oder 'ftp'."
-#: portato/gui/windows/main.py:171
+#: portato/gui/windows/main.py:172
msgid "Blank inside homepage."
msgstr "Leerzeichen innerhalb der Homepage-URL."
-#: portato/gui/windows/main.py:210
+#: portato/gui/windows/main.py:211
#, python-format
msgid "Package could not be found: %s"
msgstr "Paket konnte nicht gefunden werden: %s"
-#: portato/gui/windows/main.py:264
-#: portato/gui/windows/main.py:363
+#: portato/gui/windows/main.py:265
+#: portato/gui/windows/main.py:364
msgid "Masked by user"
msgstr "Vom Benutzer maskiert"
-#: portato/gui/windows/main.py:454
+#: portato/gui/windows/main.py:455
msgid "Loading Config"
msgstr "Lade Konfiguration"
-#: portato/gui/windows/main.py:466
+#: portato/gui/windows/main.py:467
msgid "Creating Database"
msgstr "Erstelle Datenbank"
-#: portato/gui/windows/main.py:470
+#: portato/gui/windows/main.py:471
msgid "Loading Plugins"
msgstr "Lade Plugins"
-#: portato/gui/windows/main.py:478
+#: portato/gui/windows/main.py:479
msgid "Building frontend"
msgstr "Erstelle Oberfläche"
-#: portato/gui/windows/main.py:544
+#: portato/gui/windows/main.py:545
msgid "Restoring Session"
msgstr "Lade Session"
-#: portato/gui/windows/main.py:554
+#: portato/gui/windows/main.py:555
msgid "Loading Plugin Widgets"
msgstr "Lade GUI-Elemente der Plugins"
-#: portato/gui/windows/main.py:557
+#: portato/gui/windows/main.py:558
msgid "Finishing startup"
msgstr "Erledige letzte Handgriffe :)"
-#: portato/gui/windows/main.py:609
+#: portato/gui/windows/main.py:614
msgid "Options"
msgstr "Optionen"
-#: portato/gui/windows/main.py:625
+#: portato/gui/windows/main.py:630
msgid "Categories"
msgstr "Kategorien"
-#: portato/gui/windows/main.py:684
+#: portato/gui/windows/main.py:689
msgid "Packages"
msgstr "Pakete"
-#: portato/gui/windows/main.py:719
+#: portato/gui/windows/main.py:724
#, python-format
msgid "Package '%s/%s' is disabled."
msgstr "Paket '%s/%s' wurde deaktiviert."
-#: portato/gui/windows/main.py:736
+#: portato/gui/windows/main.py:741
msgid "Versions"
msgstr "Versionen"
-#: portato/gui/windows/main.py:739
+#: portato/gui/windows/main.py:744
msgid "Slot"
msgstr "Slot"
-#: portato/gui/windows/main.py:827
+#: portato/gui/windows/main.py:832
msgid "Flag"
msgstr "Flag"
-#: portato/gui/windows/main.py:851
+#: portato/gui/windows/main.py:856
msgid "This is an expanded use flag and cannot be selected"
msgstr "Dies ist ein \"Expanded Use Flag\" und kann daher nicht ausgewählt werden."
-#: portato/gui/windows/main.py:889
+#: portato/gui/windows/main.py:914
#, python-format
msgid "Translating session from version %d to %d."
msgstr "Upgrade Session von Version %d auf Version %d."
-#: portato/gui/windows/main.py:892
+#: portato/gui/windows/main.py:917
#, python-format
msgid "Cannot translate session from version %d to %d."
msgstr "Kann Session nicht von Version %d nach %d upgraden."
-#: portato/gui/windows/main.py:1391
+#: portato/gui/windows/main.py:1425
msgid "use flags"
msgstr "Use Flags"
-#: portato/gui/windows/main.py:1403
+#: portato/gui/windows/main.py:1437
msgid "masking keywords"
msgstr "Masking Keywords"
-#: portato/gui/windows/main.py:1780
+#: portato/gui/windows/main.py:1838
msgid "The portage tree is not existing."
msgstr "Der Portage-Tree existiert nicht."
-#: portato/gui/windows/main.py:1784
+#: portato/gui/windows/main.py:1842
msgid "The portage tree seems to be empty."
msgstr "Der Portage-Tree scheint leer zu sein."
@@ -813,48 +759,62 @@ msgstr "Das aktuelle Sessionformat ist zu alt."
msgid "Current session format is newer than this version supports."
msgstr "Das aktuelle Sessionformat ist neuer, als diese Portato-Version unterstützt."
-#: portato/gui/utils.py:190
+#: portato/gui/utils.py:189
msgid "oneshot"
msgstr "oneshot"
-#: portato/gui/utils.py:195
+#: portato/gui/utils.py:194
#, python-format
msgid "updating from version %s"
msgstr "Update von Version %s"
-#: portato/gui/utils.py:197
+#: portato/gui/utils.py:196
msgid "updating"
msgstr "Update"
-#: portato/gui/utils.py:202
+#: portato/gui/utils.py:201
#, python-format
msgid "downgrading from version %s"
msgstr "Downgrade von Version %s"
-#: portato/gui/utils.py:204
+#: portato/gui/utils.py:203
msgid "downgrading"
msgstr "Downgrade"
-#: portato/gui/utils.py:208
+#: portato/gui/utils.py:207
msgid "IUSE changes:"
msgstr "IUSE Änderungen:"
-#: portato/gui/utils.py:226
+#: portato/gui/utils.py:225
msgid "(In Progress)"
msgstr "(In Bearbeitung)"
-#: portato/gui/utils.py:251
+#: portato/gui/utils.py:250
msgid "Install"
msgstr "Installieren"
-#: portato/gui/utils.py:262
+#: portato/gui/utils.py:261
msgid "Uninstall"
msgstr "Deinstallieren"
-#: portato/gui/utils.py:274
+#: portato/gui/utils.py:273
msgid "Update"
msgstr "Update"
+#: portato/eix/exceptions.py:26
+msgid "Unknown error."
+msgstr "Unbekannter Fehler."
+
+#: portato/eix/exceptions.py:37
+#, python-format
+msgid "End of file reached though it was not expected: '%s'"
+msgstr "Ende der Datei erreicht obwohl dies nicht erwartet wurde: '%s'"
+
+#: portato/eix/exceptions.py:45
+#, python-format
+msgid "Version '%s' is not supported."
+msgstr "Version '%s' wird nicht unterstützt."
+
#: portato/backend/flags.py:527
#, python-format
msgid "Conflicting values for masking status: %s"
@@ -865,17 +825,17 @@ msgstr "Konflikt beim Masking-Status: %s"
msgid "Line %(line)s in file %(file)s misses a keyword (e.g. '~x86')."
msgstr "In Zeile %(line)s in der Dateil %(file) fehlt ein Keyword (z.B. '~x86')."
-#: portato/backend/portage/system.py:258
+#: portato/backend/portage/system.py:280
#, python-format
msgid "No best match for %s. It seems not to be in the tree anymore."
msgstr "Es konnte kein bester Treffer für das Paket %s gefunden werden. Es scheint sich nicht mehr im Tree zu befinden."
-#: portato/backend/portage/system.py:316
+#: portato/backend/portage/system.py:338
#, python-format
msgid "Found a not installed dependency: %s."
msgstr "Nicht installierte Abhängigkeit gefunden: %s"
-#: portato/backend/portage/system.py:358
+#: portato/backend/portage/system.py:380
#, python-format
msgid "Bug? No best match could be found for '%(package)s'. Needed by: '%(cpv)s'."
msgstr "Es konnte kein bester Treffer für das Paket '%(package)s' ermittelt werden (gebraucht von '%(cpv)s'). Bug?"
@@ -885,15 +845,15 @@ msgstr "Es konnte kein bester Treffer für das Paket '%(package)s' ermittelt wer
msgid "BUG in flags.new_masking_status. It returns '%s'"
msgstr "BUG in flags.new_masking_status. Es gibt '%s' zurück."
-#: portato/__init__.py:53
+#: portato/__init__.py:54
msgid "do not fork off as root"
msgstr "erzeuge keinen Root-Prozess"
-#: portato/__init__.py:76
+#: portato/__init__.py:83
msgid "Starting Portato"
msgstr "Starte Portato"
-#: portato/__init__.py:121
+#: portato/__init__.py:125
msgid "No valid su command detected. Aborting."
msgstr "Kein valides 'su'-Kommande entdeckt. Breche ab..."
@@ -901,11 +861,11 @@ msgstr "Kein valides 'su'-Kommande entdeckt. Breche ab..."
msgid "Invalid dependency string"
msgstr "Ungültiger Dependency-String."
-#: portato/db/__init__.py:24
+#: portato/db/__init__.py:27
msgid "SQLite"
msgstr "SQLite"
-#: portato/db/__init__.py:24
+#: portato/db/__init__.py:27
msgid ""
"Uses an SQLite-database to store package information.\n"
"May take longer to generate at the first time, but has advantages if portato is re-started with an unchanged portage tree. Additionally it allows to use fast SQL expressions for fetching the data."
@@ -913,11 +873,11 @@ msgstr ""
"Verwendet eine SQLite-Datenbank um die Paketdaten zu speichern.\n"
"Es mag länger dauern, um die Datenbank das erste Mal zu erstellen - es zeigt seine Stärken, wenn Portato neugestartet wird, ohne dass sich der Portage-Tree verändert hat. Außerdem verwendet es schnelle SQL-Queries."
-#: portato/db/__init__.py:25
+#: portato/db/__init__.py:28
msgid "Hashmap"
msgstr "Hashtabelle"
-#: portato/db/__init__.py:25
+#: portato/db/__init__.py:28
msgid ""
"Uses an in-memory hashmap to store package information.\n"
"Has been used since at least version 0.3.3, but all information has to be regenerated on each startup."
@@ -925,34 +885,60 @@ msgstr ""
"Verwendet eine Hashtabelle, welche im Arbeitsspeicher liegt, um die Paketdaten zu speichern.\n"
"Wurde in allen Portato-Versionen seit 0.3.3 benutzt, aber alle Daten müssen bei jedem Start neu erzeugt werden."
-#: portato/db/__init__.py:40
-msgid "Cannot load SQLDatabase."
-msgstr "Kann SQL-Datenbank nicht laden."
+#: portato/db/__init__.py:29
+msgid "eix + SQLite"
+msgstr "eix + SQLite"
-#: portato/db/__init__.py:51
+#: portato/db/__init__.py:29
+msgid ""
+"Similar to SQLite, but now uses the eix database to get the package information.\n"
+"This should be much faster on startup, but requires that your eix database is always up-to-date.\n"
+"Additionally, this is the only database allowing searching in descriptions."
+msgstr ""
+"Diese Datenbank ist ähnlich wie die normale SQLite-Datenbank, aber benutzt nun eix um an die Paketinformationen zu kommen.\n"
+"Das ist bei weitem schneller beim Starten, setzt aber vorraus, dass die eix-Datenbank immer aktuell ist.\n"
+"Außerdem ist das der einzige Datenbanktyp der auch das Suchen in den Beschreibungen erlaubt."
+
+#: portato/db/__init__.py:53
+#: portato/db/__init__.py:68
+#, python-format
+msgid "Cannot load %s."
+msgstr "Kann %s nicht laden."
+
+#: portato/db/__init__.py:74
#, python-format
msgid "Unknown database type: %s"
msgstr "Unbekannter Datenbanktyp: %s"
-#: portato/db/database.py:38
-msgid "ALL"
-msgstr "ALLE"
-
-#: portato/db/dict.py:94
+#: portato/db/hash.py:97
#, python-format
msgid "Catched KeyError => %s seems not to be an available category. Have you played with rsync-excludes?"
msgstr "Catched KeyError => %s scheint keine valide Kategorie zu sein. Hast du mit rsync-excludes gespielt?"
-#: portato/db/dict.py:149
+#: portato/db/hash.py:152
#, python-format
msgid "Error while compiling search expression: '%s'."
msgstr "Fehler beim erstellen des Suchausdrucks: '%s'."
-#: portato/db/sql.py:79
+#: portato/db/eix_sql.py:35
+#, python-format
+msgid "Cache file '%s' does not exist. Using default instead."
+msgstr "Cache '%s' existiert nicht, stattdessen wird die Vorgabe benutzt."
+
+#: portato/db/database.py:42
+msgid "ALL"
+msgstr "ALLE"
+
+#: portato/db/database.py:48
+#: portato/db/database.py:50
+msgid "Name"
+msgstr "Name"
+
+#: portato/db/sql.py:80
msgid "Cleaning database..."
msgstr "Leere Datenbank..."
-#: portato/db/sql.py:81
+#: portato/db/sql.py:82
msgid "Populating database..."
msgstr "Fülle Datenbank..."
@@ -981,133 +967,188 @@ msgstr "Schreibe Session nach %s."
msgid "Unrecognized line in configuration: %s"
msgstr "Unbekannte Zeile in Konfiguration: %s"
-#: portato/listener.py:94
+#: portato/listener.py:85
msgid "Listener has not been started."
msgstr "Listener wurde nicht gestartet."
-#: portato/plugin.py:438
-#: portato/plugin.py:441
+#: portato/listener.py:94
+#, python-format
+msgid "An exception occured while accessing the message queue: %s"
+msgstr "Beim Zugriff auf die Message-Queue trat ein Fehler auf: %s"
+
+#: portato/plugin.py:446
+#: portato/plugin.py:449
#, python-format
-msgid "Loading plugin '%(plugin)s' failed: %(error)s"
+msgid "Loading plugin module '%(plugin)s' failed: %(error)s"
msgstr "Laden des Plugins '%(plugin)s' fehlgeschlagen: %(error)s"
-#: portato/plugin.py:451
+#: portato/plugin.py:459
+#, python-format
+msgid "Loading widgets plugin '%(plugin)s' failed: %(error)s"
+msgstr "Laden des Widget-Plugins '%(plugin)s' fehlgeschlagen: %(error)s"
+
+#: portato/plugin.py:462
+#, python-format
+msgid "Loading widgets of plugin '%(plugin)s' failed: %(error)s"
+msgstr "Laden der Widgets vom Plugin '%(plugin)s' fehlgeschlagen: %(error)s"
+
+#: portato/plugin.py:466
#, python-format
msgid "Widgets of plugin '%s' loaded."
msgstr "GUI-Elemente für Plugin '%s' geladen."
-#: portato/plugin.py:482
+#: portato/plugin.py:497
msgid "Plugin is disabled!"
msgstr "Plugin ist deaktiviert!"
-#: portato/plugin.py:484
+#: portato/plugin.py:499
msgid "Plugin has unresolved dependencies - disabled!"
msgstr "Das Plugin hat nicht erfüllte Abhängigkeiten - deaktiviert!"
-#: portato/plugin.py:488
+#: portato/plugin.py:503
#, python-format
msgid "Plugin '%s' loaded."
msgstr "Plugin '%s' geladen."
-#: portato/plugin.py:528
+#: portato/plugin.py:543
#, python-format
msgid "Overriding hook '%(hook)s' with plugin '%(plugin)s'."
msgstr "Überschreibe den Hook '%(hook)s' mit Plugin '%(plugin)s'."
-#: portato/plugin.py:586
+#: portato/plugin.py:601
#, python-format
msgid "For hook '%(hook)s' an override is already defined by plugin '%(plugin)s'!"
msgstr "Das Plugin '%(plugin)s' definiert bereits einen \"Override\" fürr den Hook '%(hook)s'!"
-#: portato/plugin.py:587
+#: portato/plugin.py:602
#, python-format
msgid "It is now replaced by the one from plugin '%s'!"
msgstr "Es wird ersetzt durch die Variante vom Plugin '%s'!"
-#: portato/plugin.py:620
+#: portato/plugin.py:635
#, python-format
msgid "Dependant '%(dep)s' for '%(hook)s' in plugin '%(plugin)s' not found! Adding nevertheless."
msgstr "Abhängigkeit %(dep)s' für '%(hook)s' im Plugin '%(plugin)s' nicht gefunden! Lade Plugin trotzdem."
-#: plugins/etc_proposals.py:34
+#: portato/plugin.py:704
+#: portato/plugin.py:707
+#, python-format
+msgid "Registrating plugin '%(plugin)s' failed: %(error)s"
+msgstr "Registrierung des Plugins '%(plugin)s' fehlgeschlagen: %(error)s"
+
+#: plugins/etc_proposals.py:32
msgid "Cannot start etc-proposals. Not root!"
msgstr "Kann etc-proposals nicht starten. Nur root kann das!"
-#: plugins/package_details.py:67
+#: plugins/package_details.py:73
msgid "Shows the Changelog of a package"
msgstr "Zeigt die Changelog eines Pakets"
-#: plugins/package_details.py:69
+#: plugins/package_details.py:75
msgid "Changelog"
msgstr "Changelog"
-#: plugins/package_details.py:79
+#: plugins/package_details.py:85
msgid "Shows the ebuild of a package"
msgstr "Zeigt den Ebuild eines Pakets"
-#: plugins/package_details.py:82
+#: plugins/package_details.py:88
msgid "Ebuild"
msgstr "Ebuild"
-#: plugins/package_details.py:89
+#: plugins/package_details.py:95
msgid "Shows the installed files of a package"
msgstr "Zeigt die installierten Dateien eines Pakets"
-#: plugins/package_details.py:91
+#: plugins/package_details.py:97
msgid "Files"
msgstr "Dateien"
-#: plugins/package_details.py:105
+#: plugins/package_details.py:111
msgid "Shows the dependencies of a package"
msgstr "Zeigt die Abhängigkeiten eines Pakets"
-#: plugins/package_details.py:107
+#: plugins/package_details.py:113
msgid "Dependencies"
msgstr "Abhängigkeiten"
-#: plugins/package_details.py:179
+#: plugins/package_details.py:185
#, python-format
msgid "If '%s' is disabled"
msgstr "Wenn '%s' deaktiviert ist"
-#: plugins/package_details.py:181
+#: plugins/package_details.py:187
#, python-format
msgid "If '%s' is enabled"
msgstr "Wenn '%s' aktiviert ist"
-#: plugins/package_details.py:187
+#: plugins/package_details.py:193
msgid "One of the following"
msgstr "Eins der folgenden"
-#: plugins/package_details.py:192
+#: plugins/package_details.py:198
msgid "All of the following"
msgstr "Alle folgenden"
-#: plugins/package_details.py:203
+#: plugins/package_details.py:209
msgid "Can't display dependencies: This package has an unsupported dependency string."
msgstr "Kann Abhängigkeiten nicht anzeigen: Format der Abhängigkeiten des Pakets wird nicht unterstützt."
-#: plugins/notify.py:24
+#: plugins/notify.py:23
msgid "Cannot import 'pynotify'."
msgstr "'pynotify' kann nicht importiert werden."
-#: plugins/notify.py:36
+#: plugins/notify.py:35
msgid "Notify called while process is still running!"
msgstr "\"Notify\" aufgerufen, während Emerge noch lief."
-#: plugins/notify.py:40
+#: plugins/notify.py:39
msgid "Emerge finished!"
msgstr "Emerge-Prozess erfolgreich beendet!"
-#: plugins/notify.py:44
+#: plugins/notify.py:43
msgid "Emerge failed!"
msgstr "Emerge fehlgeschlagen!"
-#: plugins/notify.py:45
+#: plugins/notify.py:44
#, python-format
msgid "Error Code: %d"
msgstr "Fehler-Code: %d"
+#~ msgid "Plu_gins"
+#~ msgstr "Plu_gins"
+#~ msgid "_File"
+#~ msgstr "_Datei"
+#~ msgid "_Preferences"
+#~ msgstr "_Einstellungen"
+#~ msgid "Re_load Portage"
+#~ msgstr "Aktua_lisiere Portage-Cache"
+#~ msgid "_Emerge"
+#~ msgstr "_Emerge"
+#~ msgid "_Install"
+#~ msgstr "_Installieren"
+#~ msgid "_Uninstall"
+#~ msgstr "_Deinstallieren"
+#~ msgid "Show Updatable P_ackages"
+#~ msgstr "Zeige Pakete mit _Updates"
+#~ msgid "Show _Only Installed Packages"
+#~ msgstr "_Zeige nur installierte Pakete"
+#~ msgid "_Sync"
+#~ msgstr "_Sync"
+#~ msgid "Save _Flags"
+#~ msgstr "Speichere _Flags"
+#~ msgid "Emerge _Paused"
+#~ msgstr "Emerge _angehalten"
+#~ msgid "_Kill Emerge"
+#~ msgstr "_Kill Emerge"
+#~ msgid "_Copy"
+#~ msgstr "_Kopieren"
+#~ msgid "_?"
+#~ msgstr "_?"
+#~ msgid "_About"
+#~ msgstr "_Über"
+#~ msgid "_Plugins"
+#~ msgstr "_Plugins"
#~ msgid "-L is deprecated"
#~ msgstr "-L ist veraltet"
#~ msgid ""
diff --git a/i18n/it.po b/i18n/it.po
new file mode 100644
index 0000000..9a91d86
--- /dev/null
+++ b/i18n/it.po
@@ -0,0 +1,1164 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: portato 0.13\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-31 22:12+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: ponsi <lu69@inwind.it>\n"
+"Language-Team: <lu69@inwind.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+
+#: portato/gui/templates/UpdateWindow.ui:6
+msgid "Updatable Packages"
+msgstr "Pacchetti Aggiornabili"
+
+#: portato/gui/templates/UpdateWindow.ui:48
+msgid "_Close"
+msgstr "_Chiudi"
+
+#: portato/gui/templates/UpdateWindow.ui:59
+msgid "Select _All"
+msgstr "Seleziona_Tutto"
+
+#: portato/gui/templates/UpdateWindow.ui:73
+msgid "_Install Selected"
+msgstr "_Installa Selezionati"
+
+#: portato/gui/templates/PreferenceWindow.ui:12
+msgid "Preferences"
+msgstr "Preferenze"
+
+#: portato/gui/templates/PreferenceWindow.ui:48
+msgid "Debug"
+msgstr "Debug"
+
+#: portato/gui/templates/PreferenceWindow.ui:61
+msgid "Search while typing"
+msgstr "Ricerca durante la digitazione"
+
+#: portato/gui/templates/PreferenceWindow.ui:81
+msgid "Browser command: "
+msgstr "Comando browser:"
+
+#: portato/gui/templates/PreferenceWindow.ui:108
+#: portato/gui/templates/PreferenceWindow.ui:717
+msgid "<b>General Options</b>"
+msgstr "<b>Opzioni Generali</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:142
+msgid "Used database type"
+msgstr "Tipi di database usati"
+
+#: portato/gui/templates/PreferenceWindow.ui:178
+#: portato/gui/templates/PluginWindow.ui:93
+#: portato/gui/templates/PluginWindow.ui:118
+#: portato/gui/templates/MainWindow.ui:369
+#: portato/gui/templates/MainWindow.ui:485
+#: portato/gui/templates/MainWindow.ui:598
+#: portato/gui/templates/MainWindow.ui:613
+msgid "label"
+msgstr "etichetta"
+
+#: portato/gui/templates/PreferenceWindow.ui:188
+msgid "<b>Description</b>"
+msgstr "<b>Descrizione</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:204
+msgid "<b>Database Options</b>"
+msgstr "<b> Opzioni Database</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:226
+#: portato/gui/templates/MainWindow.ui:754
+msgid "General"
+msgstr "Generale"
+
+#: portato/gui/templates/PreferenceWindow.ui:308
+msgid "<b>Package sets to update</b>"
+msgstr "<b>Serie di pacchetti da aggiornare</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:324
+msgid "<b>Update World Options</b>"
+msgstr "<b>Opzioni 'Update World'</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:350
+msgid "Sync command: "
+msgstr "Comando 'Sync': "
+
+#: portato/gui/templates/PreferenceWindow.ui:372
+msgid "<b>Sync Options</b>"
+msgstr "<b>Opzioni 'Sync'</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:413
+msgid "File name to use, if package.use is a directory: "
+msgstr "Nome del file da usare, se 'package.use' è una directory:"
+
+#: portato/gui/templates/PreferenceWindow.ui:423
+msgid "Add only exact version to package.use"
+msgstr "Aggiungi solo l'esatta versione a 'package.use'"
+
+#: portato/gui/templates/PreferenceWindow.ui:437
+msgid "Add only exact version to package.keywords"
+msgstr "Aggiungi solo l'esatta versione a 'package.keywords'"
+
+#: portato/gui/templates/PreferenceWindow.ui:453
+msgid "File name to use, if package.keywords is a directory: "
+msgstr "Nome del file da usare, se 'package.keywords' è una directory:"
+
+#: portato/gui/templates/PreferenceWindow.ui:487
+msgid "File name to use, if package.mask/package.unmask is a directory: "
+msgstr "Nome del file da usare, se 'package.mask/package.unmask' è una directory:"
+
+#: portato/gui/templates/PreferenceWindow.ui:497
+msgid "Add only exact version to package.mask/package.unmask"
+msgstr "Aggiungi solo l'esatta versione a 'package.mask/package.unmask'"
+
+#: portato/gui/templates/PreferenceWindow.ui:521
+msgid ""
+"<u>You may use the following placeholders:</u>\n"
+"\n"
+"<i>$(pkg)</i>: package name\n"
+"<i>$(cat)</i>: category\n"
+"<i>$(cat-1)/$(cat-2)</i>: first/second part of the category\n"
+"<i>$(version)</i> : version of the package"
+msgstr ""
+"<u>Puoi usare i seguenti 'placeholders':</u>\n"
+"\n"
+"<i>$(pkg)</i>: nome pacchetto\n"
+"<i>$(cat)</i>: categoria\n"
+"<i>$(cat-1)/$(cat-2)</i>: prima/seconda parte della categoria\n"
+"<i>$(version)</i> : versione del pacchetto"
+
+#: portato/gui/templates/PreferenceWindow.ui:545
+msgid "<u><i>Use-Flags</i></u>"
+msgstr "<u><i>Use-Flags</i></u>"
+
+#: portato/gui/templates/PreferenceWindow.ui:560
+msgid "<u><i>Testing Keywords</i></u>"
+msgstr "<u><i>Keywords di prova</i></u>"
+
+#: portato/gui/templates/PreferenceWindow.ui:575
+msgid "<u><i>Masking Keywords</i></u>"
+msgstr "<u><i>Keywords di mascheramento</i></u>"
+
+#: portato/gui/templates/PreferenceWindow.ui:601
+msgid "<b>Use Flag and Keyword Options</b>"
+msgstr "<b>Opzioni di Use Flag e Keyword</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:619
+msgid "Portage"
+msgstr "Portage"
+
+#: portato/gui/templates/PreferenceWindow.ui:655
+msgid "Enable systray"
+msgstr "Abilita icona nella barra degli strumenti"
+
+#: portato/gui/templates/PreferenceWindow.ui:669
+msgid "Show emerge progress in window title"
+msgstr "Mostra l'avanzamento di emerge nel titolo della finestra"
+
+#: portato/gui/templates/PreferenceWindow.ui:683
+msgid "Show emerge progress in console title"
+msgstr "Mostra l'avanzamento di emerge nel titolo della console"
+
+#: portato/gui/templates/PreferenceWindow.ui:697
+msgid "Hide on minimization (only if systray is enabled)"
+msgstr "Nascondi se minimizzato (solo se è abilitata l'icona nella barra degli strumenti)"
+
+#: portato/gui/templates/PreferenceWindow.ui:755
+msgid "Package Tabs"
+msgstr "Tabs del pacchetto"
+
+#: portato/gui/templates/PreferenceWindow.ui:785
+msgid "System Tabs"
+msgstr "Tabs di sistema"
+
+#: portato/gui/templates/PreferenceWindow.ui:813
+msgid "<b>Tab Options</b>"
+msgstr "<b>Opzioni Tabs</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:841
+msgid "Show slots in the version list"
+msgstr "Mostra gli slot nella lista versioni"
+
+#: portato/gui/templates/PreferenceWindow.ui:854
+msgid "Collapse categories with same prefix"
+msgstr "Raggruppa le categorie con lo stesso prefisso."
+
+#: portato/gui/templates/PreferenceWindow.ui:875
+msgid "<b>Package Options</b>"
+msgstr "<b>Opzioni Pacchetto</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:911
+msgid "Console Font"
+msgstr "Carattere della Console"
+
+#: portato/gui/templates/PreferenceWindow.ui:924
+msgid "Chose a console font"
+msgstr "Scegli un carattere per la Console "
+
+#: portato/gui/templates/PreferenceWindow.ui:945
+msgid "Maximum length of the console title"
+msgstr "Lunghezza massima del titolo della console"
+
+#: portato/gui/templates/PreferenceWindow.ui:978
+msgid "<b>Console Options</b>"
+msgstr "<b>Opzioni Console</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:1015
+msgid "Package Detail Background"
+msgstr "Sfondo Dettegli Pacchetto"
+
+#: portato/gui/templates/PreferenceWindow.ui:1049
+msgid "Flag Placeholder Description Background"
+msgstr "Sfondo della descrizione dei 'Flag Placeholder'"
+
+#: portato/gui/templates/PreferenceWindow.ui:1080
+msgid "<b>Color Options</b>"
+msgstr "<b>Opzioni Colore</b>"
+
+#: portato/gui/templates/PreferenceWindow.ui:1101
+msgid "Visual"
+msgstr "Visuale"
+
+#: portato/gui/templates/PluginWindow.ui:7
+msgid "Plugins"
+msgstr "_Plugins"
+
+#: portato/gui/templates/PluginWindow.ui:51
+msgid "_Install dependencies"
+msgstr "Installa _dipendenze"
+
+#: portato/gui/templates/PluginWindow.ui:79
+msgid "Needed dependencies"
+msgstr "Calcolo delle dipendenze"
+
+#: portato/gui/templates/PluginWindow.ui:104
+msgid "<b>Author:</b>"
+msgstr "<b>Autore:</b>"
+
+#: portato/gui/templates/PluginWindow.ui:139
+#: portato/gui/windows/update.py:47
+#: portato/gui/windows/main.py:825
+#: portato/gui/windows/plugin.py:27
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: portato/gui/templates/PluginWindow.ui:148
+#: portato/gui/windows/plugin.py:27
+msgid "Temporarily enabled"
+msgstr "Temporaneamente abilitato"
+
+#: portato/gui/templates/PluginWindow.ui:159
+#: portato/gui/windows/plugin.py:27
+msgid "Temporarily disabled"
+msgstr "Temporaneamente disabilitato"
+
+#: portato/gui/templates/PluginWindow.ui:171
+#: portato/gui/windows/plugin.py:27
+msgid "Disabled"
+msgstr "Disabilitato"
+
+#: portato/gui/templates/AboutWindow.ui:7
+msgid "About Portato"
+msgstr "Informazioni su Portato"
+
+#: portato/gui/templates/MailInfoWindow.ui:5
+msgid "Send Bug Mail ..."
+msgstr "Spedisci Bug Mail ..."
+
+#: portato/gui/templates/MailInfoWindow.ui:30
+msgid ""
+"<b><u>Additional Information</u></b>\n"
+"\n"
+"(all optional)"
+msgstr ""
+"<b><u>Informazioni Aggiuntive</u></b>\n"
+"\n"
+"(all optional)"
+
+#: portato/gui/templates/MailInfoWindow.ui:74
+msgid "Email address:"
+msgstr "Indirizzo email:"
+
+#: portato/gui/templates/MailInfoWindow.ui:89
+msgid "Name:"
+msgstr "Nome:"
+
+#: portato/gui/templates/MailInfoWindow.ui:104
+msgid ""
+"Comments /\n"
+"what did you do to hit the bug?"
+msgstr ""
+"Commenti /\n"
+"Come hai scoperto il bug?"
+
+#: portato/gui/templates/MailInfoWindow.ui:141
+msgid "Attaches the logfile to the mail. This log only contains debug information."
+msgstr "Allega il logfile alla mail. Questo log contiene solo informazioni per il debug."
+
+#: portato/gui/templates/MailInfoWindow.ui:142
+msgid "Attach _Logfile"
+msgstr "Allega _Logfile"
+
+#: portato/gui/templates/MailInfoWindow.ui:194
+msgid "_Send"
+msgstr "S_pedisci"
+
+#: portato/gui/templates/SearchWindow.ui:7
+msgid "Search Results"
+msgstr "Risultati ricerca"
+
+#: portato/gui/templates/MainWindow.ui:10
+msgid "Plu_gins"
+msgstr "Plu_gins"
+
+#: portato/gui/templates/MainWindow.ui:20
+msgid "_File"
+msgstr "_File"
+
+#: portato/gui/templates/MainWindow.ui:27
+msgid "_Preferences"
+msgstr "_Preferenze"
+
+#: portato/gui/templates/MainWindow.ui:36
+msgid "Re_load Portage"
+msgstr "Ri_carica Portage"
+
+#: portato/gui/templates/MainWindow.ui:52
+msgid "_Emerge"
+msgstr "_Emerge"
+
+#: portato/gui/templates/MainWindow.ui:59
+msgid "_Install"
+msgstr "_Installa"
+
+#: portato/gui/templates/MainWindow.ui:68
+msgid "_Uninstall"
+msgstr "_Disinstalla"
+
+#: portato/gui/templates/MainWindow.ui:76
+#: portato/gui/templates/MainWindow.ui:847
+msgid "Update _World"
+msgstr "Update _World"
+
+#: portato/gui/templates/MainWindow.ui:83
+msgid "Show Updatable P_ackages"
+msgstr "Mostra pacchetti aggiornabili"
+
+#: portato/gui/templates/MainWindow.ui:90
+msgid "Show _Only Installed Packages"
+msgstr "_Mostra solo pacchetti installati"
+
+#: portato/gui/templates/MainWindow.ui:99
+msgid "_Sync"
+msgstr "Sincronizza"
+
+#: portato/gui/templates/MainWindow.ui:108
+msgid "Save _Flags"
+msgstr "Salva _Flags"
+
+#: portato/gui/templates/MainWindow.ui:115
+msgid "Emerge _Paused"
+msgstr "Metti in _pausa Emerge"
+
+#: portato/gui/templates/MainWindow.ui:124
+msgid "_Kill Emerge"
+msgstr "_Annulla Emerge"
+
+#: portato/gui/templates/MainWindow.ui:133
+msgid "_Copy"
+msgstr "_Copia"
+
+#: portato/gui/templates/MainWindow.ui:140
+msgid "_?"
+msgstr "_?"
+
+#: portato/gui/templates/MainWindow.ui:147
+msgid "_About"
+msgstr "I_nformazioni"
+
+#: portato/gui/templates/MainWindow.ui:155
+msgid "_Plugins"
+msgstr "_Plugins"
+
+#: portato/gui/templates/MainWindow.ui:380
+msgid "Install onto system"
+msgstr "Installa nel sistema"
+
+#: portato/gui/templates/MainWindow.ui:402
+msgid "Uninstall from system"
+msgstr "Disinstalla dal sistema"
+
+#: portato/gui/templates/MainWindow.ui:424
+msgid "Revert changes"
+msgstr "Annulla le modifiche"
+
+#: portato/gui/templates/MainWindow.ui:501
+msgid "<b>License:</b>"
+msgstr "<b>Licenza:</b>"
+
+#: portato/gui/templates/MainWindow.ui:518
+msgid "<b>Installed, but not in portage anymore</b>"
+msgstr "<b>Installato, ma non presente in portage</b>"
+
+#: portato/gui/templates/MainWindow.ui:533
+msgid "<span foreground='red'><b>MISSING KEYWORD</b></span>"
+msgstr "<span foreground='red'><b>KEYWORD PERSA</b></span>"
+
+#: portato/gui/templates/MainWindow.ui:565
+msgid "<b>Description:</b>"
+msgstr "<b>Descrizione:</b>"
+
+#: portato/gui/templates/MainWindow.ui:581
+msgid "<b>Overlay:</b>"
+msgstr "<b>Overlay:</b>"
+
+#: portato/gui/templates/MainWindow.ui:629
+msgid "<b>Homepage:</b>"
+msgstr "<b>Homepage:</b>"
+
+#: portato/gui/templates/MainWindow.ui:647
+#: portato/gui/windows/main.py:826
+msgid "Installed"
+msgstr "Installato"
+
+#: portato/gui/templates/MainWindow.ui:665
+#: portato/gui/windows/main.py:255
+#: portato/gui/windows/main.py:258
+#: portato/gui/windows/main.py:261
+#: portato/gui/windows/main.py:361
+#: portato/gui/windows/main.py:365
+#: portato/gui/windows/main.py:372
+#: portato/gui/windows/main.py:376
+msgid "Masked"
+msgstr "Mascherato"
+
+#: portato/gui/templates/MainWindow.ui:697
+#: portato/gui/windows/main.py:271
+#: portato/gui/windows/main.py:274
+#: portato/gui/windows/main.py:334
+#: portato/gui/windows/main.py:338
+msgid "Testing"
+msgstr "In Prova"
+
+#: portato/gui/templates/MainWindow.ui:715
+msgid "<b>Use Flags:</b>"
+msgstr "<b>Use Flags:</b>"
+
+#: portato/gui/templates/MainWindow.ui:776
+msgid "Use List"
+msgstr "Lista USE"
+
+#: portato/gui/templates/MainWindow.ui:813
+msgid "Execute the current selected queue"
+msgstr "Esegui la coda attualmente selezionata"
+
+#: portato/gui/templates/MainWindow.ui:831
+msgid "E_xecute"
+msgstr "Ese_gui"
+
+#: portato/gui/templates/MainWindow.ui:846
+msgid "Calculate the packages which will be installed during an \"update world\""
+msgstr "Ricerca i pacchetti che saranno installati durante un \"Aggiorna Sistema\""
+
+#: portato/gui/templates/MainWindow.ui:858
+msgid "Remove the selected package from the queue"
+msgstr "Rimuovi dalla coda i pacchetti selezionati"
+
+#: portato/gui/templates/MainWindow.ui:859
+msgid "_Remove"
+msgstr "_Rimuovi"
+
+#: portato/gui/templates/MainWindow.ui:929
+#: portato/gui/windows/main.py:606
+msgid "Queue"
+msgstr "Coda"
+
+#: portato/gui/templates/MainWindow.ui:950
+#: portato/gui/windows/main.py:1206
+#: portato/gui/windows/main.py:1208
+msgid "Console"
+msgstr "Console"
+
+#: portato/gui/templates/MainWindow.ui:981
+msgid "Log"
+msgstr "Log"
+
+#: portato/gui/dialogs.py:17
+msgid "Mail could not be sent"
+msgstr "Non è stato possibile inviare l'email"
+
+#: portato/gui/dialogs.py:18
+#, python-format
+msgid "The error was: %s"
+msgstr "Si è verificato il seguente errore: %s"
+
+#: portato/gui/dialogs.py:24
+msgid "Do you really want to quit?"
+msgstr "Vuoi veramente uscire?"
+
+#: portato/gui/dialogs.py:25
+msgid "There are some packages in the emerge queue and/or an emerge process is running."
+msgstr "Ci sono alcuni pacchetti nella coda di emerge e/o un processo di emerge è in esecuzione."
+
+#: portato/gui/dialogs.py:43
+#, python-format
+msgid "%(blocked)s is blocked by %(blocks)s."
+msgstr "%(blocked)s è bloccato da %(blocks)s."
+
+#: portato/gui/dialogs.py:44
+msgid "Please unmerge the blocking package."
+msgstr "Per favore unmergi il pacchetto che crea il blocco."
+
+#: portato/gui/dialogs.py:50
+msgid "You are not root."
+msgstr "Non sei root"
+
+#: portato/gui/dialogs.py:56
+#, python-format
+msgid "%s seems to be masked."
+msgstr "%s sembra essere mascherato."
+
+#: portato/gui/dialogs.py:57
+msgid "Do you want to unmask it and its dependencies?"
+msgstr "Vuoi smascherare il file e le sue dipendenze?"
+
+#: portato/gui/dialogs.py:63
+msgid "Package not found!"
+msgstr "Pacchetto non trovato"
+
+#: portato/gui/dialogs.py:69
+msgid "Do not show this dialog again."
+msgstr "Non mostrare più questa finestra."
+
+#: portato/gui/dialogs.py:70
+#, python-format
+msgid "Changed %s"
+msgstr "Modificato %s"
+
+#: portato/gui/dialogs.py:71
+msgid ""
+"Portato will write these changes into the appropriate files.\n"
+"Please backup them if you think it is necessairy."
+msgstr ""
+"Portato scriverà queste modifiche negli appropriati files.\n"
+"Per favore, fanne una copia se pensi che sia necessario."
+
+#: portato/gui/dialogs.py:80
+msgid "You cannot remove dependencies. :)"
+msgstr "Non puoi rimuovere le dipendenze. :)"
+
+#: portato/gui/dialogs.py:86
+msgid ""
+"This is the updates queue. You cannot remove single elements.\n"
+"Do you want to clear the whole queue instead?"
+msgstr ""
+"Questa è la coda degli aggiornamenti. Non puoi rimuovere singoli elementi.\n"
+"Vuoi svuotare l'intera coda?"
+
+#: portato/gui/dialogs.py:92
+msgid "Do you really want to clear the whole queue?"
+msgstr "Vuoi realmente svuotare l'intera coda?"
+
+#: portato/gui/dialogs.py:111
+msgid "A prerequisite for starting Portato was not matched."
+msgstr "Non ci sono i prerequisiti per l'avvio di Portato."
+
+#: portato/gui/dialogs.py:115
+msgid ""
+"<b>Note</b>: On fresh Sabayon installs or its LiveDVD/-CD, there is no portage tree existing per default.\n"
+"Please run <i>emerge --sync &amp;&amp; layman -S</i>."
+msgstr ""
+"<b>Nota</b>: Nelle nuove installazioni di Sabayon o nel suo LiveDVD/-CD, il portage tree non esiste per default.\n"
+"Per favore esegui <i>emerge --sync &amp;&amp; layman -S</i>."
+
+#: portato/gui/dialogs.py:123
+#: portato/gui/windows/main.py:1255
+#, python-format
+msgid "No versions of package '%s' found!"
+msgstr "Non è stata trovata nessuna versione di '%s'!"
+
+#: portato/gui/views.py:85
+msgid "Package is not installed"
+msgstr "Il pacchetto non è installato"
+
+#: portato/gui/views.py:102
+#, python-format
+msgid "No %(old)s language file installed. Falling back to %(new)s."
+msgstr "Nessun file di lingua %(old)s installato. Torna al %(new)s."
+
+#: portato/gui/views.py:111
+#, python-format
+msgid "No %(old)s language file installed. Disable highlighting."
+msgstr "Nessun file di lingua %(old)s installato. Disabilita highlighting."
+
+#: portato/gui/views.py:130
+#: plugins/package_details.py:108
+#, python-format
+msgid "Error: %s"
+msgstr "Errore: %s"
+
+#: portato/gui/updater.py:100
+#, python-format
+msgid "No unmasked version of package '%s' found. Trying masked ones. This normally should not happen..."
+msgstr "Non è stata trovata nessuna versione smascherata del pacchetto '%s'. Prova quelle mascherate. Questo, normalmente, non dovrebbe succedere..."
+
+#: portato/gui/updater.py:104
+#, python-format
+msgid "Trying to remove package '%s' from queue which does not exist in system."
+msgstr "Difficile rimuovere dalla coda il pacchetto '%s' che non è presente nel sistema."
+
+#: portato/gui/exception_handling.py:30
+msgid "A programming error has been detected during the execution of this program."
+msgstr "E' stato rilevato un errore di programmazione durante l'esecuzione di questo programma."
+
+#: portato/gui/exception_handling.py:31
+msgid "Bug Detected"
+msgstr "E' stato rilevato un bug"
+
+#: portato/gui/exception_handling.py:32
+msgid "It probably isn't fatal, but should be reported to the developers nonetheless."
+msgstr "Probabilmente non è stato fatale, ma dovrebbe essere riferito agli sviluppatori."
+
+#: portato/gui/exception_handling.py:34
+msgid "Show Details"
+msgstr "Mostra dettagli"
+
+#: portato/gui/exception_handling.py:35
+msgid "Send..."
+msgstr "Invia..."
+
+#: portato/gui/exception_handling.py:74
+msgid "Save traceback..."
+msgstr "Salva traceback..."
+
+#: portato/gui/__init__.py:22
+msgid "Loading Backend"
+msgstr "Caricamento Backend"
+
+#: portato/gui/windows/search.py:57
+msgid "Results"
+msgstr "Risultati"
+
+#: portato/gui/windows/mailinfo.py:83
+#, python-format
+msgid "An error occurred while sending. I think we were greylisted. The error: %s"
+msgstr "Si è verificato un errore durante la spedizione. Errore: %s"
+
+#: portato/gui/windows/mailinfo.py:84
+msgid "Retrying after waiting 60 seconds."
+msgstr "Attendi 60 secondi e poi riprova."
+
+#: portato/gui/windows/update.py:48
+msgid "Package"
+msgstr "Pacchetto"
+
+#: portato/gui/windows/splash.py:35
+#, python-format
+msgid "... is starting up: %s"
+msgstr "...in avvio: %s"
+
+#: portato/gui/windows/preference.py:154
+msgid "Top"
+msgstr "In alto"
+
+#: portato/gui/windows/preference.py:154
+msgid "Bottom"
+msgstr "In basso"
+
+#: portato/gui/windows/preference.py:154
+msgid "Left"
+msgstr "A sinistra"
+
+#: portato/gui/windows/preference.py:154
+msgid "Right"
+msgstr "A destra"
+
+#: portato/gui/windows/preference.py:254
+msgid "Package Set"
+msgstr "Set Pacchetto"
+
+#: portato/gui/windows/preference.py:259
+#: portato/gui/windows/main.py:828
+msgid "Description"
+msgstr "Descrizione"
+
+#: portato/gui/windows/main.py:141
+msgid "<no description>"
+msgstr "<nessuna descrizione>"
+
+#: portato/gui/windows/main.py:167
+msgid "The first homepage part does not start with 'http' or 'ftp'."
+msgstr "La prima parte della homepage non si avvia con 'http' o 'ftp'."
+
+#: portato/gui/windows/main.py:171
+msgid "Blank inside homepage."
+msgstr "Spazio vuoto nella homepage."
+
+#: portato/gui/windows/main.py:210
+#, python-format
+msgid "Package could not be found: %s"
+msgstr "Impossibile trovare il pacchetto %s"
+
+#: portato/gui/windows/main.py:264
+#: portato/gui/windows/main.py:363
+msgid "Masked by user"
+msgstr "Mascherato dall'utente"
+
+#: portato/gui/windows/main.py:454
+msgid "Loading Config"
+msgstr "Caricamento Config"
+
+#: portato/gui/windows/main.py:466
+msgid "Creating Database"
+msgstr "Creazione database"
+
+#: portato/gui/windows/main.py:470
+msgid "Loading Plugins"
+msgstr "Caricamento Plugins"
+
+#: portato/gui/windows/main.py:478
+msgid "Building frontend"
+msgstr "Costruzione frontend"
+
+#: portato/gui/windows/main.py:544
+msgid "Restoring Session"
+msgstr "Ripristino sessione"
+
+#: portato/gui/windows/main.py:554
+msgid "Loading Plugin Widgets"
+msgstr "Caricamento Plugin Widgets"
+
+#: portato/gui/windows/main.py:557
+msgid "Finishing startup"
+msgstr "Completamento fase di avvio"
+
+#: portato/gui/windows/main.py:609
+msgid "Options"
+msgstr "Opzioni"
+
+#: portato/gui/windows/main.py:625
+msgid "Categories"
+msgstr "Categorie"
+
+#: portato/gui/windows/main.py:684
+msgid "Packages"
+msgstr "Pacchetti"
+
+#: portato/gui/windows/main.py:719
+#, python-format
+msgid "Package '%s/%s' is disabled."
+msgstr "Il pacchetto '%s/%s' è disabilitato."
+
+#: portato/gui/windows/main.py:736
+msgid "Versions"
+msgstr "Versioni"
+
+#: portato/gui/windows/main.py:739
+msgid "Slot"
+msgstr "Slot"
+
+#: portato/gui/windows/main.py:827
+msgid "Flag"
+msgstr "Flag"
+
+#: portato/gui/windows/main.py:851
+msgid "This is an expanded use flag and cannot be selected"
+msgstr "Questa è una USE flag estesa e non può essere selezionata"
+
+#: portato/gui/windows/main.py:889
+#, python-format
+msgid "Translating session from version %d to %d."
+msgstr "Trasferisci la sessione dalla versione %d alla %d."
+
+#: portato/gui/windows/main.py:892
+#, python-format
+msgid "Cannot translate session from version %d to %d."
+msgstr "Impossibile trasferire la sessione dalla versione %d alla %d."
+
+#: portato/gui/windows/main.py:1391
+msgid "use flags"
+msgstr "USE flag"
+
+#: portato/gui/windows/main.py:1403
+msgid "masking keywords"
+msgstr "Keywords di mascheramento"
+
+#: portato/gui/windows/main.py:1780
+msgid "The portage tree is not existing."
+msgstr "Il Portage Tree non esiste."
+
+#: portato/gui/windows/main.py:1784
+msgid "The portage tree seems to be empty."
+msgstr "Il Portage Tree sembra essere vuoto."
+
+#: portato/gui/session.py:21
+msgid "Version mismatch."
+msgstr "Versione non corrispondente."
+
+#: portato/gui/session.py:27
+#, python-format
+msgid "Got '%d' - expected '%d'."
+msgstr "Ricevuto '%d' - atteso '%d'."
+
+#: portato/gui/session.py:30
+msgid "Current session format is too old."
+msgstr "Il formato della sessione corrente è obsoleto."
+
+#: portato/gui/session.py:33
+msgid "Current session format is newer than this version supports."
+msgstr "Il formato della sessione corrente è più recente di quello supportato."
+
+#: portato/gui/utils.py:190
+msgid "oneshot"
+msgstr "oneshot"
+
+#: portato/gui/utils.py:195
+#, python-format
+msgid "updating from version %s"
+msgstr "aggiornamento dalla versione %s"
+
+#: portato/gui/utils.py:197
+msgid "updating"
+msgstr "Aggiornamento"
+
+#: portato/gui/utils.py:202
+#, python-format
+msgid "downgrading from version %s"
+msgstr "downgrade dalla versione %s"
+
+#: portato/gui/utils.py:204
+msgid "downgrading"
+msgstr "downgrade"
+
+#: portato/gui/utils.py:208
+msgid "IUSE changes:"
+msgstr "Modifiche IUSE:"
+
+#: portato/gui/utils.py:226
+msgid "(In Progress)"
+msgstr "(In corso)"
+
+#: portato/gui/utils.py:251
+msgid "Install"
+msgstr "Installa"
+
+#: portato/gui/utils.py:262
+msgid "Uninstall"
+msgstr "Disinstalla"
+
+#: portato/gui/utils.py:274
+msgid "Update"
+msgstr "Aggiorna"
+
+#: portato/eix/exceptions.py:26
+msgid "Unknown error."
+msgstr "Errore sconosciuto."
+
+#: portato/eix/exceptions.py:37
+#, python-format
+msgid "End of file reached though it was not expected: '%s'"
+msgstr "Sebbene non fosse previsto, è stata raggiunta la fine del file: '%s'"
+
+#: portato/eix/exceptions.py:45
+#, python-format
+msgid "Version '%s' is not supported."
+msgstr "La versione '%s' non è supportata."
+
+#: portato/backend/flags.py:527
+#, python-format
+msgid "Conflicting values for masking status: %s"
+msgstr "Valori in conflitto per lo stato di mascheramento: %s"
+
+#: portato/backend/flags.py:690
+#, python-format
+msgid "Line %(line)s in file %(file)s misses a keyword (e.g. '~x86')."
+msgstr "Nella linea %(line)s del file %(file)s manca una keyword (e.g. '~x86')."
+
+#: portato/backend/portage/system.py:258
+#, python-format
+msgid "No best match for %s. It seems not to be in the tree anymore."
+msgstr "Nessun miglior risultato per %s. Sembra non essere più nel Portage tree."
+
+#: portato/backend/portage/system.py:316
+#, python-format
+msgid "Found a not installed dependency: %s."
+msgstr "E' stata trovata una dipendenza non installata: %s."
+
+#: portato/backend/portage/system.py:358
+#, python-format
+msgid "Bug? No best match could be found for '%(package)s'. Needed by: '%(cpv)s'."
+msgstr "Bug? Nessun miglior risultato trovato per '%(package)s'. Necessario per: '%(cpv)s'."
+
+#: portato/backend/portage/package.py:129
+#, python-format
+msgid "BUG in flags.new_masking_status. It returns '%s'"
+msgstr "BUG in flags.new_masking_status. Restituisce '%s'"
+
+#: portato/__init__.py:50
+msgid "do not fork off as root"
+msgstr "Non diventare root"
+
+#: portato/__init__.py:79
+msgid "Starting Portato"
+msgstr "Avvio Portato"
+
+#: portato/__init__.py:121
+msgid "No valid su command detected. Aborting."
+msgstr "Comando su non valido. Annullato."
+
+#: portato/helper.py:70
+msgid "Invalid dependency string"
+msgstr "Stringa di dipendenza non valida"
+
+#: portato/db/__init__.py:24
+msgid "SQLite"
+msgstr "Sqlite"
+
+#: portato/db/__init__.py:24
+msgid ""
+"Uses an SQLite-database to store package information.\n"
+"May take longer to generate at the first time, but has advantages if portato is re-started with an unchanged portage tree. Additionally it allows to use fast SQL expressions for fetching the data."
+msgstr ""
+"Usa un database SQLite per memorizzare le informazioni del pacchetto.\n"
+"Può richiedere più tempo per essere creato la prima volta, ma è vantaggioso se Portato viene riavviato con lo stesso 'portage tree'. Inoltre permette di usare veloci espressioni SQL per il recupero dei dati."
+
+#: portato/db/__init__.py:25
+msgid "Hashmap"
+msgstr "Hashmap"
+
+#: portato/db/__init__.py:25
+msgid ""
+"Uses an in-memory hashmap to store package information.\n"
+"Has been used since at least version 0.3.3, but all information has to be regenerated on each startup."
+msgstr ""
+"Usa una 'hashmap' della memoria per memorizzare le informazioni del pacchetto.\n"
+"E' stata usata fino all'ultima versione 0.3.3, ma tutte le informazioni devono essere ricreate ad ogni riavvio."
+
+#: portato/db/__init__.py:26
+msgid "eix + SQLite"
+msgstr "eix + SQLite"
+
+#: portato/db/__init__.py:26
+msgid ""
+"Similar to SQLite, but now uses the eix database to get the package information.\n"
+"This should be much faster on startup, but requires that your eix database is always up-to-date."
+msgstr ""
+"Simile a SQLite, ma usa un database eix per le informazioni del pacchetto.\n"
+"Questo dovrebbe essere molto più veloce all'avvio, ma richiede che il tuo database eix sia sempre aggiornato."
+
+#: portato/db/__init__.py:41
+#: portato/db/__init__.py:56
+#, python-format
+msgid "Cannot load %s."
+msgstr "Impossibile caricare %s."
+
+#: portato/db/__init__.py:62
+#, python-format
+msgid "Unknown database type: %s"
+msgstr "Tipo di database sconosciuto: %s"
+
+#: portato/db/hash.py:94
+#, python-format
+msgid "Catched KeyError => %s seems not to be an available category. Have you played with rsync-excludes?"
+msgstr "Errore Chiave => %s non sembra essere una categoria disponibile. Hai giocato con rsync-excludes?"
+
+#: portato/db/hash.py:149
+#, python-format
+msgid "Error while compiling search expression: '%s'."
+msgstr "Errore durante la compilazione dell'espressione di ricerca: '%s'."
+
+#: portato/db/eix_sql.py:35
+#, python-format
+msgid "Cache file '%s' does not exist. Using default instead."
+msgstr "Il cache file '%s' non esiste. Uso quello di default."
+
+#: portato/db/database.py:38
+msgid "ALL"
+msgstr "TUTTO"
+
+#: portato/db/sql.py:79
+msgid "Cleaning database..."
+msgstr "Pulizia database..."
+
+#: portato/db/sql.py:81
+msgid "Populating database..."
+msgstr "Riempimento database"
+
+#: portato/session.py:67
+#, python-format
+msgid "Loading '%s' session from %s."
+msgstr "Caricamento sessione '%s' da %s."
+
+#: portato/session.py:69
+#, python-format
+msgid "Loading session from %s."
+msgstr "Caricamento sessione da %s."
+
+#: portato/session.py:141
+#, python-format
+msgid "Saving '%s' session to %s."
+msgstr "Salvataggio sessione '%s' in %s."
+
+#: portato/session.py:143
+#, python-format
+msgid "Saving session to %s."
+msgstr "Salvataggio sessione in %s."
+
+#: portato/config_parser.py:266
+#, python-format
+msgid "Unrecognized line in configuration: %s"
+msgstr "Linea non riconosciuta nella configurazione: %s"
+
+#: portato/listener.py:85
+msgid "Listener has not been started."
+msgstr "Listener non è stato avviato."
+
+#: portato/listener.py:94
+#, python-format
+msgid "An exception occured while accessing the message queue: %s"
+msgstr "Si è verificata un'eccezione durante l'accesso alla coda di messaggi: %s"
+
+#: portato/plugin.py:446
+#: portato/plugin.py:449
+#, python-format
+msgid "Loading plugin module '%(plugin)s' failed: %(error)s"
+msgstr "Il caricamento del modulo '%(plugin)s' è fallito: %(error)s"
+
+#: portato/plugin.py:459
+#, python-format
+msgid "Loading widgets plugin '%(plugin)s' failed: %(error)s"
+msgstr "Il caricamento del modulo '%(plugin)s' è fallito: %(error)s"
+
+#: portato/plugin.py:462
+#, python-format
+msgid "Loading widgets of plugin '%(plugin)s' failed: %(error)s"
+msgstr "Il caricamento del modulo '%(plugin)s' è fallito: %(error)s"
+
+#: portato/plugin.py:466
+#, python-format
+msgid "Widgets of plugin '%s' loaded."
+msgstr "Modulo di plugin '%s' loaded."
+
+#: portato/plugin.py:497
+msgid "Plugin is disabled!"
+msgstr "Il plugin è disabilitato!"
+
+#: portato/plugin.py:499
+msgid "Plugin has unresolved dependencies - disabled!"
+msgstr "Il plugin ha dipendenze non risolte - disabilitato!"
+
+#: portato/plugin.py:503
+#, python-format
+msgid "Plugin '%s' loaded."
+msgstr "Il plugin '%s' è stato caricato."
+
+#: portato/plugin.py:543
+#, python-format
+msgid "Overriding hook '%(hook)s' with plugin '%(plugin)s'."
+msgstr "Sto facendo l'override di '%(hook)s' con plugin '%(plugin)s'."
+
+#: portato/plugin.py:601
+#, python-format
+msgid "For hook '%(hook)s' an override is already defined by plugin '%(plugin)s'!"
+msgstr "Per '%(hook)s' un override è già definito dal plugin '%(plugin)s'!"
+
+#: portato/plugin.py:602
+#, python-format
+msgid "It is now replaced by the one from plugin '%s'!"
+msgstr "E' ora sostituito da quello del plugin '%s'!"
+
+#: portato/plugin.py:635
+#, python-format
+msgid "Dependant '%(dep)s' for '%(hook)s' in plugin '%(plugin)s' not found! Adding nevertheless."
+msgstr "Non è stata trovata la dipendenza '%(dep)s' per '%(hook)s' nel plugin '%(plugin)s'! Tuttavia è stato aggiunto ugualmente."
+
+#: portato/plugin.py:704
+#: portato/plugin.py:707
+#, python-format
+msgid "Registrating plugin '%(plugin)s' failed: %(error)s"
+msgstr "La registrazione del plugin '%(plugin)s' è fallita: %(error)s"
+
+#: plugins/etc_proposals.py:32
+msgid "Cannot start etc-proposals. Not root!"
+msgstr "Impossibile avviare etc-proposals. Non sei root!"
+
+#: plugins/package_details.py:73
+msgid "Shows the Changelog of a package"
+msgstr "Mostra il Changelog di un pacchetto"
+
+#: plugins/package_details.py:75
+msgid "Changelog"
+msgstr "Changelog"
+
+#: plugins/package_details.py:85
+msgid "Shows the ebuild of a package"
+msgstr "Mostra l'ebuild di un pacchetto"
+
+#: plugins/package_details.py:88
+msgid "Ebuild"
+msgstr "Ebuild"
+
+#: plugins/package_details.py:95
+msgid "Shows the installed files of a package"
+msgstr "Mostra i files di un pacchetto installati"
+
+#: plugins/package_details.py:97
+msgid "Files"
+msgstr "Files"
+
+#: plugins/package_details.py:111
+msgid "Shows the dependencies of a package"
+msgstr "Mostra le dipendenze di un pacchetto"
+
+#: plugins/package_details.py:113
+msgid "Dependencies"
+msgstr "Dipendenze"
+
+#: plugins/package_details.py:185
+#, python-format
+msgid "If '%s' is disabled"
+msgstr "Se '%s' è disabilitato"
+
+#: plugins/package_details.py:187
+#, python-format
+msgid "If '%s' is enabled"
+msgstr "Se '%s' è abilitato"
+
+#: plugins/package_details.py:193
+msgid "One of the following"
+msgstr "Uno dei seguenti"
+
+#: plugins/package_details.py:198
+msgid "All of the following"
+msgstr "Tutti i seguenti"
+
+#: plugins/package_details.py:209
+msgid "Can't display dependencies: This package has an unsupported dependency string."
+msgstr "Non posso mostrare le dipendenze. Questo pacchetto ha un stringa di dipendenze non supportata."
+
+#: plugins/notify.py:23
+msgid "Cannot import 'pynotify'."
+msgstr "Impossibile importare 'pynotify'."
+
+#: plugins/notify.py:35
+msgid "Notify called while process is still running!"
+msgstr "Una notifica è stata chiamata mentre il processo è ancora in corso!"
+
+#: plugins/notify.py:39
+msgid "Emerge finished!"
+msgstr "Emerge terminato!"
+
+#: plugins/notify.py:43
+msgid "Emerge failed!"
+msgstr "Emerge fallito!"
+
+#: plugins/notify.py:44
+#, python-format
+msgid "Error Code: %d"
+msgstr "Codice errore: %d"
+
diff --git a/i18n/messages.pot b/i18n/messages.pot
index f148ce2..26f1dd1 100644
--- a/i18n/messages.pot
+++ b/i18n/messages.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-31 22:12+0200\n"
+"POT-Creation-Date: 2010-03-05 21:26+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,111 +16,111 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: portato/gui/templates/UpdateWindow.ui:6
-msgid "Updatable Packages"
-msgstr ""
-
-#: portato/gui/templates/UpdateWindow.ui:48
+#: portato/gui/templates/PkgListWindow.ui:48
msgid "_Close"
msgstr ""
-#: portato/gui/templates/UpdateWindow.ui:59
+#: portato/gui/templates/PkgListWindow.ui:64 portato/gui/windows/pkglist.py:35
msgid "Select _All"
msgstr ""
-#: portato/gui/templates/UpdateWindow.ui:73
+#: portato/gui/templates/PkgListWindow.ui:80
msgid "_Install Selected"
msgstr ""
+#: portato/gui/templates/PkgListWindow.ui:96
+msgid "_Uninstall Selected"
+msgstr ""
+
#: portato/gui/templates/PreferenceWindow.ui:12
msgid "Preferences"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:48
+#: portato/gui/templates/PreferenceWindow.ui:51
msgid "Debug"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:61
+#: portato/gui/templates/PreferenceWindow.ui:64
msgid "Search while typing"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:81
+#: portato/gui/templates/PreferenceWindow.ui:84
msgid "Browser command: "
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:108
-#: portato/gui/templates/PreferenceWindow.ui:717
+#: portato/gui/templates/PreferenceWindow.ui:111
+#: portato/gui/templates/PreferenceWindow.ui:725
msgid "<b>General Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:142
+#: portato/gui/templates/PreferenceWindow.ui:146
msgid "Used database type"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:178
-#: portato/gui/templates/PluginWindow.ui:93
-#: portato/gui/templates/PluginWindow.ui:118
-#: portato/gui/templates/MainWindow.ui:369
-#: portato/gui/templates/MainWindow.ui:485
-#: portato/gui/templates/MainWindow.ui:598
-#: portato/gui/templates/MainWindow.ui:613
+#: portato/gui/templates/PreferenceWindow.ui:182
+#: portato/gui/templates/PluginWindow.ui:97
+#: portato/gui/templates/PluginWindow.ui:122
+#: portato/gui/templates/MainWindow.ui:190
+#: portato/gui/templates/MainWindow.ui:304
+#: portato/gui/templates/MainWindow.ui:417
+#: portato/gui/templates/MainWindow.ui:432
msgid "label"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:188
+#: portato/gui/templates/PreferenceWindow.ui:192
msgid "<b>Description</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:204
+#: portato/gui/templates/PreferenceWindow.ui:208
msgid "<b>Database Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:226
-#: portato/gui/templates/MainWindow.ui:754
+#: portato/gui/templates/PreferenceWindow.ui:230
+#: portato/gui/templates/MainWindow.ui:582
msgid "General"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:308
+#: portato/gui/templates/PreferenceWindow.ui:314
msgid "<b>Package sets to update</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:324
+#: portato/gui/templates/PreferenceWindow.ui:330
msgid "<b>Update World Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:350
+#: portato/gui/templates/PreferenceWindow.ui:356
msgid "Sync command: "
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:372
+#: portato/gui/templates/PreferenceWindow.ui:378
msgid "<b>Sync Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:413
+#: portato/gui/templates/PreferenceWindow.ui:419
msgid "File name to use, if package.use is a directory: "
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:423
+#: portato/gui/templates/PreferenceWindow.ui:429
msgid "Add only exact version to package.use"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:437
+#: portato/gui/templates/PreferenceWindow.ui:443
msgid "Add only exact version to package.keywords"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:453
+#: portato/gui/templates/PreferenceWindow.ui:459
msgid "File name to use, if package.keywords is a directory: "
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:487
+#: portato/gui/templates/PreferenceWindow.ui:493
msgid "File name to use, if package.mask/package.unmask is a directory: "
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:497
+#: portato/gui/templates/PreferenceWindow.ui:503
msgid "Add only exact version to package.mask/package.unmask"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:521
+#: portato/gui/templates/PreferenceWindow.ui:527
msgid ""
"<u>You may use the following placeholders:</u>\n"
"\n"
@@ -130,342 +130,273 @@ msgid ""
"<i>$(version)</i> : version of the package"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:545
+#: portato/gui/templates/PreferenceWindow.ui:551
msgid "<u><i>Use-Flags</i></u>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:560
+#: portato/gui/templates/PreferenceWindow.ui:566
msgid "<u><i>Testing Keywords</i></u>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:575
+#: portato/gui/templates/PreferenceWindow.ui:581
msgid "<u><i>Masking Keywords</i></u>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:601
+#: portato/gui/templates/PreferenceWindow.ui:607
msgid "<b>Use Flag and Keyword Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:619
+#: portato/gui/templates/PreferenceWindow.ui:625
msgid "Portage"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:655
+#: portato/gui/templates/PreferenceWindow.ui:663
msgid "Enable systray"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:669
+#: portato/gui/templates/PreferenceWindow.ui:677
msgid "Show emerge progress in window title"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:683
+#: portato/gui/templates/PreferenceWindow.ui:691
msgid "Show emerge progress in console title"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:697
+#: portato/gui/templates/PreferenceWindow.ui:705
msgid "Hide on minimization (only if systray is enabled)"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:755
+#: portato/gui/templates/PreferenceWindow.ui:764
msgid "Package Tabs"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:785
+#: portato/gui/templates/PreferenceWindow.ui:793
msgid "System Tabs"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:813
+#: portato/gui/templates/PreferenceWindow.ui:821
msgid "<b>Tab Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:841
+#: portato/gui/templates/PreferenceWindow.ui:850
msgid "Show slots in the version list"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:854
+#: portato/gui/templates/PreferenceWindow.ui:863
msgid "Collapse categories with same prefix"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:875
+#: portato/gui/templates/PreferenceWindow.ui:884
msgid "<b>Package Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:911
+#: portato/gui/templates/PreferenceWindow.ui:921
msgid "Console Font"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:924
+#: portato/gui/templates/PreferenceWindow.ui:934
msgid "Chose a console font"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:945
+#: portato/gui/templates/PreferenceWindow.ui:955
msgid "Maximum length of the console title"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:978
+#: portato/gui/templates/PreferenceWindow.ui:988
msgid "<b>Console Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:1015
+#: portato/gui/templates/PreferenceWindow.ui:1026
msgid "Package Detail Background"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:1049
+#: portato/gui/templates/PreferenceWindow.ui:1060
msgid "Flag Placeholder Description Background"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:1080
+#: portato/gui/templates/PreferenceWindow.ui:1091
msgid "<b>Color Options</b>"
msgstr ""
-#: portato/gui/templates/PreferenceWindow.ui:1101
+#: portato/gui/templates/PreferenceWindow.ui:1112
msgid "Visual"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:7
+#: portato/gui/templates/PluginWindow.ui:8
msgid "Plugins"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:51
+#: portato/gui/templates/PluginWindow.ui:53
msgid "_Install dependencies"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:79
+#: portato/gui/templates/PluginWindow.ui:83
msgid "Needed dependencies"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:104
+#: portato/gui/templates/PluginWindow.ui:108
msgid "<b>Author:</b>"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:139 portato/gui/windows/update.py:47
-#: portato/gui/windows/main.py:825 portato/gui/windows/plugin.py:27
+#: portato/gui/templates/PluginWindow.ui:141 portato/gui/windows/pkglist.py:59
+#: portato/gui/windows/main.py:830 portato/gui/windows/plugin.py:27
msgid "Enabled"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:148 portato/gui/windows/plugin.py:27
+#: portato/gui/templates/PluginWindow.ui:157 portato/gui/windows/plugin.py:27
msgid "Temporarily enabled"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:159 portato/gui/windows/plugin.py:27
+#: portato/gui/templates/PluginWindow.ui:172 portato/gui/windows/plugin.py:27
msgid "Temporarily disabled"
msgstr ""
-#: portato/gui/templates/PluginWindow.ui:171 portato/gui/windows/plugin.py:27
+#: portato/gui/templates/PluginWindow.ui:188 portato/gui/windows/plugin.py:27
msgid "Disabled"
msgstr ""
-#: portato/gui/templates/AboutWindow.ui:7
+#: portato/gui/templates/AboutWindow.ui:8
msgid "About Portato"
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:5
+#: portato/gui/templates/MailInfoWindow.ui:6
msgid "Send Bug Mail ..."
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:30
+#: portato/gui/templates/MailInfoWindow.ui:29
msgid ""
"<b><u>Additional Information</u></b>\n"
"\n"
"(all optional)"
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:74
+#: portato/gui/templates/MailInfoWindow.ui:73
msgid "Email address:"
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:89
+#: portato/gui/templates/MailInfoWindow.ui:88
msgid "Name:"
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:104
+#: portato/gui/templates/MailInfoWindow.ui:103
msgid ""
"Comments /\n"
"what did you do to hit the bug?"
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:141
-msgid ""
-"Attaches the logfile to the mail. This log only contains debug information."
+#: portato/gui/templates/MailInfoWindow.ui:138
+msgid "Attach _Logfile"
msgstr ""
#: portato/gui/templates/MailInfoWindow.ui:142
-msgid "Attach _Logfile"
+msgid ""
+"Attaches the logfile to the mail. This log only contains debug information."
msgstr ""
-#: portato/gui/templates/MailInfoWindow.ui:194
+#: portato/gui/templates/MailInfoWindow.ui:206
msgid "_Send"
msgstr ""
-#: portato/gui/templates/SearchWindow.ui:7
+#: portato/gui/templates/SearchWindow.ui:8
msgid "Search Results"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:10
-msgid "Plu_gins"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:20
-msgid "_File"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:27
-msgid "_Preferences"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:36
-msgid "Re_load Portage"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:52
-msgid "_Emerge"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:59
-msgid "_Install"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:68
-msgid "_Uninstall"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:76
-#: portato/gui/templates/MainWindow.ui:847
-msgid "Update _World"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:83
-msgid "Show Updatable P_ackages"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:90
-msgid "Show _Only Installed Packages"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:99
-msgid "_Sync"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:108
-msgid "Save _Flags"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:115
-msgid "Emerge _Paused"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:124
-msgid "_Kill Emerge"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:133
-msgid "_Copy"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:140
-msgid "_?"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:147
-msgid "_About"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:155
-msgid "_Plugins"
-msgstr ""
-
-#: portato/gui/templates/MainWindow.ui:380
+#: portato/gui/templates/MainWindow.ui:204
msgid "Install onto system"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:402
+#: portato/gui/templates/MainWindow.ui:226
msgid "Uninstall from system"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:424
+#: portato/gui/templates/MainWindow.ui:248
msgid "Revert changes"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:501
+#: portato/gui/templates/MainWindow.ui:320
msgid "<b>License:</b>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:518
+#: portato/gui/templates/MainWindow.ui:337
msgid "<b>Installed, but not in portage anymore</b>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:533
+#: portato/gui/templates/MainWindow.ui:352
msgid "<span foreground='red'><b>MISSING KEYWORD</b></span>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:565
+#: portato/gui/templates/MainWindow.ui:384
msgid "<b>Description:</b>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:581
+#: portato/gui/templates/MainWindow.ui:400
msgid "<b>Overlay:</b>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:629
+#: portato/gui/templates/MainWindow.ui:448
msgid "<b>Homepage:</b>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:647 portato/gui/windows/main.py:826
+#: portato/gui/templates/MainWindow.ui:462 portato/gui/windows/main.py:831
msgid "Installed"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:665 portato/gui/windows/main.py:255
-#: portato/gui/windows/main.py:258 portato/gui/windows/main.py:261
-#: portato/gui/windows/main.py:361 portato/gui/windows/main.py:365
-#: portato/gui/windows/main.py:372 portato/gui/windows/main.py:376
+#: portato/gui/templates/MainWindow.ui:481 portato/gui/windows/main.py:256
+#: portato/gui/windows/main.py:259 portato/gui/windows/main.py:262
+#: portato/gui/windows/main.py:362 portato/gui/windows/main.py:366
+#: portato/gui/windows/main.py:373 portato/gui/windows/main.py:377
msgid "Masked"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:697 portato/gui/windows/main.py:271
-#: portato/gui/windows/main.py:274 portato/gui/windows/main.py:334
-#: portato/gui/windows/main.py:338
+#: portato/gui/templates/MainWindow.ui:514 portato/gui/windows/main.py:272
+#: portato/gui/windows/main.py:275 portato/gui/windows/main.py:335
+#: portato/gui/windows/main.py:339
msgid "Testing"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:715
+#: portato/gui/templates/MainWindow.ui:537
msgid "<b>Use Flags:</b>"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:776
+#: portato/gui/templates/MainWindow.ui:607
msgid "Use List"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:813
+#: portato/gui/templates/MainWindow.ui:647
msgid "Execute the current selected queue"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:831
+#: portato/gui/templates/MainWindow.ui:668
msgid "E_xecute"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:846
+#: portato/gui/templates/MainWindow.ui:687
+msgid "Update _World"
+msgstr ""
+
+#: portato/gui/templates/MainWindow.ui:691
msgid ""
"Calculate the packages which will be installed during an \"update world\""
msgstr ""
-#: portato/gui/templates/MainWindow.ui:858
-msgid "Remove the selected package from the queue"
+#: portato/gui/templates/MainWindow.ui:703
+msgid "_Remove"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:859
-msgid "_Remove"
+#: portato/gui/templates/MainWindow.ui:707
+msgid "Remove the selected package from the queue"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:929 portato/gui/windows/main.py:606
+#: portato/gui/templates/MainWindow.ui:782 portato/gui/windows/main.py:611
msgid "Queue"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:950 portato/gui/windows/main.py:1206
-#: portato/gui/windows/main.py:1208
+#: portato/gui/templates/MainWindow.ui:806 portato/gui/windows/main.py:1240
+#: portato/gui/windows/main.py:1242
msgid "Console"
msgstr ""
-#: portato/gui/templates/MainWindow.ui:981
+#: portato/gui/templates/MainWindow.ui:840
msgid "Log"
msgstr ""
@@ -526,7 +457,7 @@ msgstr ""
#: portato/gui/dialogs.py:71
msgid ""
"Portato will write these changes into the appropriate files.\n"
-"Please backup them if you think it is necessairy."
+"Please backup them if you think it is necessary."
msgstr ""
#: portato/gui/dialogs.py:80
@@ -554,7 +485,7 @@ msgid ""
"Please run <i>emerge --sync &amp;&amp; layman -S</i>."
msgstr ""
-#: portato/gui/dialogs.py:123 portato/gui/windows/main.py:1255
+#: portato/gui/dialogs.py:123 portato/gui/windows/main.py:1289
#, python-format
msgid "No versions of package '%s' found!"
msgstr ""
@@ -626,6 +557,22 @@ msgstr ""
msgid "Results"
msgstr ""
+#: portato/gui/windows/pkglist.py:36
+msgid "Unselect _All"
+msgstr ""
+
+#: portato/gui/windows/pkglist.py:60
+msgid "Package"
+msgstr ""
+
+#: portato/gui/windows/pkglist.py:147
+msgid "Updatable Packages"
+msgstr ""
+
+#: portato/gui/windows/pkglist.py:151
+msgid "World Packages"
+msgstr ""
+
#: portato/gui/windows/mailinfo.py:83
#, python-format
msgid ""
@@ -636,10 +583,6 @@ msgstr ""
msgid "Retrying after waiting 60 seconds."
msgstr ""
-#: portato/gui/windows/update.py:48
-msgid "Package"
-msgstr ""
-
#: portato/gui/windows/splash.py:35
#, python-format
msgid "... is starting up: %s"
@@ -665,115 +608,116 @@ msgstr ""
msgid "Package Set"
msgstr ""
-#: portato/gui/windows/preference.py:259 portato/gui/windows/main.py:828
+#: portato/gui/windows/preference.py:259 portato/gui/windows/main.py:833
+#: portato/db/database.py:49 portato/db/database.py:50
msgid "Description"
msgstr ""
-#: portato/gui/windows/main.py:141
+#: portato/gui/windows/main.py:142
msgid "<no description>"
msgstr ""
-#: portato/gui/windows/main.py:167
+#: portato/gui/windows/main.py:168
msgid "The first homepage part does not start with 'http' or 'ftp'."
msgstr ""
-#: portato/gui/windows/main.py:171
+#: portato/gui/windows/main.py:172
msgid "Blank inside homepage."
msgstr ""
-#: portato/gui/windows/main.py:210
+#: portato/gui/windows/main.py:211
#, python-format
msgid "Package could not be found: %s"
msgstr ""
-#: portato/gui/windows/main.py:264 portato/gui/windows/main.py:363
+#: portato/gui/windows/main.py:265 portato/gui/windows/main.py:364
msgid "Masked by user"
msgstr ""
-#: portato/gui/windows/main.py:454
+#: portato/gui/windows/main.py:455
msgid "Loading Config"
msgstr ""
-#: portato/gui/windows/main.py:466
+#: portato/gui/windows/main.py:467
msgid "Creating Database"
msgstr ""
-#: portato/gui/windows/main.py:470
+#: portato/gui/windows/main.py:471
msgid "Loading Plugins"
msgstr ""
-#: portato/gui/windows/main.py:478
+#: portato/gui/windows/main.py:479
msgid "Building frontend"
msgstr ""
-#: portato/gui/windows/main.py:544
+#: portato/gui/windows/main.py:545
msgid "Restoring Session"
msgstr ""
-#: portato/gui/windows/main.py:554
+#: portato/gui/windows/main.py:555
msgid "Loading Plugin Widgets"
msgstr ""
-#: portato/gui/windows/main.py:557
+#: portato/gui/windows/main.py:558
msgid "Finishing startup"
msgstr ""
-#: portato/gui/windows/main.py:609
+#: portato/gui/windows/main.py:614
msgid "Options"
msgstr ""
-#: portato/gui/windows/main.py:625
+#: portato/gui/windows/main.py:630
msgid "Categories"
msgstr ""
-#: portato/gui/windows/main.py:684
+#: portato/gui/windows/main.py:689
msgid "Packages"
msgstr ""
-#: portato/gui/windows/main.py:719
+#: portato/gui/windows/main.py:724
#, python-format
msgid "Package '%s/%s' is disabled."
msgstr ""
-#: portato/gui/windows/main.py:736
+#: portato/gui/windows/main.py:741
msgid "Versions"
msgstr ""
-#: portato/gui/windows/main.py:739
+#: portato/gui/windows/main.py:744
msgid "Slot"
msgstr ""
-#: portato/gui/windows/main.py:827
+#: portato/gui/windows/main.py:832
msgid "Flag"
msgstr ""
-#: portato/gui/windows/main.py:851
+#: portato/gui/windows/main.py:856
msgid "This is an expanded use flag and cannot be selected"
msgstr ""
-#: portato/gui/windows/main.py:889
+#: portato/gui/windows/main.py:914
#, python-format
msgid "Translating session from version %d to %d."
msgstr ""
-#: portato/gui/windows/main.py:892
+#: portato/gui/windows/main.py:917
#, python-format
msgid "Cannot translate session from version %d to %d."
msgstr ""
-#: portato/gui/windows/main.py:1391
+#: portato/gui/windows/main.py:1425
msgid "use flags"
msgstr ""
-#: portato/gui/windows/main.py:1403
+#: portato/gui/windows/main.py:1437
msgid "masking keywords"
msgstr ""
-#: portato/gui/windows/main.py:1780
+#: portato/gui/windows/main.py:1838
msgid "The portage tree is not existing."
msgstr ""
-#: portato/gui/windows/main.py:1784
+#: portato/gui/windows/main.py:1842
msgid "The portage tree seems to be empty."
msgstr ""
@@ -794,45 +738,45 @@ msgstr ""
msgid "Current session format is newer than this version supports."
msgstr ""
-#: portato/gui/utils.py:190
+#: portato/gui/utils.py:189
msgid "oneshot"
msgstr ""
-#: portato/gui/utils.py:195
+#: portato/gui/utils.py:194
#, python-format
msgid "updating from version %s"
msgstr ""
-#: portato/gui/utils.py:197
+#: portato/gui/utils.py:196
msgid "updating"
msgstr ""
-#: portato/gui/utils.py:202
+#: portato/gui/utils.py:201
#, python-format
msgid "downgrading from version %s"
msgstr ""
-#: portato/gui/utils.py:204
+#: portato/gui/utils.py:203
msgid "downgrading"
msgstr ""
-#: portato/gui/utils.py:208
+#: portato/gui/utils.py:207
msgid "IUSE changes:"
msgstr ""
-#: portato/gui/utils.py:226
+#: portato/gui/utils.py:225
msgid "(In Progress)"
msgstr ""
-#: portato/gui/utils.py:251
+#: portato/gui/utils.py:250
msgid "Install"
msgstr ""
-#: portato/gui/utils.py:262
+#: portato/gui/utils.py:261
msgid "Uninstall"
msgstr ""
-#: portato/gui/utils.py:274
+#: portato/gui/utils.py:273
msgid "Update"
msgstr ""
@@ -860,17 +804,17 @@ msgstr ""
msgid "Line %(line)s in file %(file)s misses a keyword (e.g. '~x86')."
msgstr ""
-#: portato/backend/portage/system.py:258
+#: portato/backend/portage/system.py:280
#, python-format
msgid "No best match for %s. It seems not to be in the tree anymore."
msgstr ""
-#: portato/backend/portage/system.py:316
+#: portato/backend/portage/system.py:338
#, python-format
msgid "Found a not installed dependency: %s."
msgstr ""
-#: portato/backend/portage/system.py:358
+#: portato/backend/portage/system.py:380
#, python-format
msgid ""
"Bug? No best match could be found for '%(package)s'. Needed by: '%(cpv)s'."
@@ -881,15 +825,15 @@ msgstr ""
msgid "BUG in flags.new_masking_status. It returns '%s'"
msgstr ""
-#: portato/__init__.py:50
+#: portato/__init__.py:54
msgid "do not fork off as root"
msgstr ""
-#: portato/__init__.py:79
+#: portato/__init__.py:83
msgid "Starting Portato"
msgstr ""
-#: portato/__init__.py:121
+#: portato/__init__.py:125
msgid "No valid su command detected. Aborting."
msgstr ""
@@ -897,11 +841,11 @@ msgstr ""
msgid "Invalid dependency string"
msgstr ""
-#: portato/db/__init__.py:24
+#: portato/db/__init__.py:27
msgid "SQLite"
msgstr ""
-#: portato/db/__init__.py:24
+#: portato/db/__init__.py:27
msgid ""
"Uses an SQLite-database to store package information.\n"
"May take longer to generate at the first time, but has advantages if portato "
@@ -909,47 +853,48 @@ msgid ""
"fast SQL expressions for fetching the data."
msgstr ""
-#: portato/db/__init__.py:25
+#: portato/db/__init__.py:28
msgid "Hashmap"
msgstr ""
-#: portato/db/__init__.py:25
+#: portato/db/__init__.py:28
msgid ""
"Uses an in-memory hashmap to store package information.\n"
"Has been used since at least version 0.3.3, but all information has to be "
"regenerated on each startup."
msgstr ""
-#: portato/db/__init__.py:26
+#: portato/db/__init__.py:29
msgid "eix + SQLite"
msgstr ""
-#: portato/db/__init__.py:26
+#: portato/db/__init__.py:29
msgid ""
"Similar to SQLite, but now uses the eix database to get the package "
"information.\n"
"This should be much faster on startup, but requires that your eix database "
-"is always up-to-date."
+"is always up-to-date.\n"
+"Additionally, this is the only database allowing searching in descriptions."
msgstr ""
-#: portato/db/__init__.py:41 portato/db/__init__.py:56
+#: portato/db/__init__.py:53 portato/db/__init__.py:68
#, python-format
msgid "Cannot load %s."
msgstr ""
-#: portato/db/__init__.py:62
+#: portato/db/__init__.py:74
#, python-format
msgid "Unknown database type: %s"
msgstr ""
-#: portato/db/hash.py:94
+#: portato/db/hash.py:97
#, python-format
msgid ""
"Catched KeyError => %s seems not to be an available category. Have you "
"played with rsync-excludes?"
msgstr ""
-#: portato/db/hash.py:149
+#: portato/db/hash.py:152
#, python-format
msgid "Error while compiling search expression: '%s'."
msgstr ""
@@ -959,15 +904,19 @@ msgstr ""
msgid "Cache file '%s' does not exist. Using default instead."
msgstr ""
-#: portato/db/database.py:38
+#: portato/db/database.py:42
msgid "ALL"
msgstr ""
-#: portato/db/sql.py:79
+#: portato/db/database.py:48 portato/db/database.py:50
+msgid "Name"
+msgstr ""
+
+#: portato/db/sql.py:80
msgid "Cleaning database..."
msgstr ""
-#: portato/db/sql.py:81
+#: portato/db/sql.py:82
msgid "Populating database..."
msgstr ""
diff --git a/plugins/etc_proposals.py b/plugins/etc_proposals.py
index 052f3d3..80f1ef9 100644
--- a/plugins/etc_proposals.py
+++ b/plugins/etc_proposals.py
@@ -3,7 +3,7 @@
# File: plugins/etc_proposals.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/plugins/exception.py b/plugins/exception.py
index 3fe7287..02d0cc3 100644
--- a/plugins/exception.py
+++ b/plugins/exception.py
@@ -3,7 +3,7 @@
# File: plugins/exception.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/plugins/gpytage.py b/plugins/gpytage.py
index b7b48d7..00f85ab 100644
--- a/plugins/gpytage.py
+++ b/plugins/gpytage.py
@@ -3,7 +3,7 @@
# File: plugins/gpytage.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/plugins/new_version.py b/plugins/new_version.py
index 94e61ca..876beea 100644
--- a/plugins/new_version.py
+++ b/plugins/new_version.py
@@ -3,7 +3,7 @@
# File: plugins/new_version.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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,16 +12,11 @@
from portato.helper import debug, warning
-try:
- from bzrlib import plugin, branch
-except ImportError:
- plugin = branch = None
- warning("NEW_VERSION :: Cannot import 'bzrlib'")
-
+from subprocess import Popen, PIPE
import gobject
from portato import get_listener
-from portato.constants import REPOURI, VERSION, APP_ICON, APP
+from portato.constants import REPOURI, REVISION, APP_ICON, APP
from portato.gui.utils import GtkThread
class NewVersionFinder(WidgetPlugin):
@@ -29,7 +24,7 @@ class NewVersionFinder(WidgetPlugin):
Checks for a new version of portato every 30 minutes and on startup.
"""
__author__ = "René 'Necoro' Neumann"
- __dependency__ = ["dev-util/bzr"]
+ __dependency__ = ["dev-util/git"]
def init (self):
self.add_call("main", self.run)
@@ -37,20 +32,30 @@ class NewVersionFinder(WidgetPlugin):
def widget_init (self):
self.create_widget("Plugin Menu", "Check for new _versions", activate = self.menu)
+ def get_notify_callback (self, rev):
+ def callback():
+ get_listener().send_notify(
+ base = "New Portato Live Version Found",
+ descr = "The most recent revision is %s." % rev,
+ icon = APP_ICON)
+ return False
+
+ return callback
+
def find_version (self, rev):
- try:
- b = branch.Branch.open(REPOURI)
- except Exception, e:
- warning("NEW_VERSION :: Exception occured while accessing the remote branch: %s", str(e))
- return
-
- debug("NEW_VERSION :: Installed rev: %s - Current rev: %s", rev, b.revno())
- if int(rev) < int(b.revno()):
- def callback():
- get_listener().send_notify(base = "New Portato Live Version Found", descr = "You have rev. %s, but the most recent revision is %s." % (rev, b.revno()), icon = APP_ICON)
- return False
-
- gobject.idle_add(callback)
+
+ repo, branch = REPOURI.split('::')
+
+ remote_rev = Popen(['git', 'ls-remote', repo, branch], stdout = PIPE).communicate()[0].strip().split('\t')
+
+ if len(remote_rev) and remote_rev[1] not in (branch, 'refs/heads/'+branch, 'refs/tags/'+branch):
+ warning('NEW_VERSION :: Returned revision information looks strange: %s', str(remote_rev))
+ else:
+ remote_rev = remote_rev[0]
+ debug("NEW_VERSION :: Installed rev: %s - Current rev: %s", remote_rev, rev)
+
+ if rev != remote_rev:
+ gobject.idle_add(self.get_notify_callback(remote_rev))
def start_thread(self, rev):
t = GtkThread(target = self.find_version, name = "Version Updater Thread", args = (rev,))
@@ -62,16 +67,11 @@ class NewVersionFinder(WidgetPlugin):
"""
Run the thread once.
"""
- v = VERSION.split()
- if len(v) != 3:
+ if not REVISION:
return None
-
- rev = v[-1]
-
- plugin.load_plugins() # to have lp: addresses parsed
- self.start_thread(rev)
- return rev
+ self.start_thread(REVISION)
+ return REVISION
def run (self, *args, **kwargs):
"""
@@ -82,4 +82,4 @@ class NewVersionFinder(WidgetPlugin):
if rev is not None:
gobject.timeout_add(30*60*1000, self.start_thread, rev) # call it every 30 minutes
-register(NewVersionFinder, (branch is None))
+register(NewVersionFinder, REVISION == '')
diff --git a/plugins/notify.py b/plugins/notify.py
index 4aba2c6..e762b5c 100644
--- a/plugins/notify.py
+++ b/plugins/notify.py
@@ -3,7 +3,7 @@
# File: plugins/notify.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/plugins/package_details.py b/plugins/package_details.py
index 19f3126..dc1ce03 100644
--- a/plugins/package_details.py
+++ b/plugins/package_details.py
@@ -3,7 +3,7 @@
# File: plugins/package_details.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/plugins/reload_portage.py b/plugins/reload_portage.py
index 539e949..cc9d173 100644
--- a/plugins/reload_portage.py
+++ b/plugins/reload_portage.py
@@ -3,7 +3,7 @@
# File: plugins/reload_portage.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -15,7 +15,7 @@ from portato.backend import system
class ReloadPortage (Plugin):
__author__ = "René 'Necoro' Neumann"
__description__ = """Reloads portage when an emerge process has finished.
-This can take some time, but sometimes it is necessairy."""
+This can take some time, but sometimes it is necessary."""
def init(self):
self.add_call("after_emerge", self.hook, type = "after", dep = "EtcProposals")
diff --git a/portato.py b/portato.py
index 0f0a61b..5f05462 100755
--- a/portato.py
+++ b/portato.py
@@ -5,7 +5,7 @@
# File: portato.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/__init__.py b/portato/__init__.py
index 44a4da4..61d6a42 100644
--- a/portato/__init__.py
+++ b/portato/__init__.py
@@ -3,7 +3,7 @@
# File: portato/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -17,9 +17,13 @@ import sys, os
from optparse import OptionParser, SUPPRESS_HELP
from .log import start as logstart
-from .constants import LOCALE_DIR, APP, VERSION
+from .constants import LOCALE_DIR, APP, VERSION, REVISION
from .helper import debug, info, error
+# set better version info
+if REVISION:
+ VERSION = '%s (git: %s)' % (VERSION, REVISION)
+
# listener-handling
__listener = None
diff --git a/portato/backend/__init__.py b/portato/backend/__init__.py
index 8eae806..5f32818 100644
--- a/portato/backend/__init__.py
+++ b/portato/backend/__init__.py
@@ -3,7 +3,7 @@
# File: portato/backend/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -16,9 +16,6 @@ from ..helper import debug
from .system_interface import SystemInterface
from .exceptions import BlockedException, PackageNotFoundException, DependencyCalcError, InvalidSystemError
-SYSTEM = "portage" # the name of the current system
-_sys = None # the SystemInterface-instance
-
class _Package (object):
"""Wrapping class from which L{portato.backend.Package} inherits. This is used by the flags module to check
whether an object is a package. It cannot use the normal Package class as this results in cyclic dependencies."""
@@ -26,42 +23,48 @@ class _Package (object):
def __init__ (self):
raise TypeError, "Calling __init__ on portato.backend._Package objects is not allowed."
+def is_package(what):
+ return isinstance(what, _Package)
+
class SystemWrapper (SystemInterface):
"""This is a wrapper to the different system interfaces, allowing the direct import via C{from portato.backend import system}.
With this wrapper a change of the system is propagated to all imports."""
+ __system = 'portage'
+ __wrapped_sys = None
+ __slots__ = ('__system', '__wrapped_sys', 'set_system', '__load')
+
def __getattribute__ (self, name):
"""Just pass all attribute accesses directly to _sys."""
- return getattr(_sys, name)
-def set_system (new_sys):
- """Sets the current system to a new one.
+ if name in SystemWrapper.__slots__:
+ return object.__getattribute__(self, name)
+
+ if SystemWrapper.__wrapped_sys is None:
+ SystemWrapper.__load()
- @param new_sys: the name of the system to take
- @type new_sys: string"""
+ return getattr(SystemWrapper.__wrapped_sys, name)
- global SYSTEM
- if new_sys != SYSTEM:
- SYSTEM = new_sys
- load_system()
+ @classmethod
+ def set_system (cls, system):
+ """Sets the current system to a new one.
-def load_system ():
- """Loads the current chosen system.
+ @param system: the name of the system to take
+ @type system: string"""
- @raises InvalidSystemError: if an inappropriate system is set"""
-
- global _sys
+ cls.__system = system
+ cls.__wrapped_sys = None
- if SYSTEM == "portage":
- debug("Setting Portage System")
- from .portage import PortageSystem
- _sys = PortageSystem ()
- else:
- raise InvalidSystemError, SYSTEM
+ @classmethod
+ def __load (cls):
+ """Loads the current chosen system.
-system = SystemWrapper()
+ @raises InvalidSystemError: if an inappropriate system is set"""
+ if cls.__system == "portage":
+ debug("Setting Portage System")
+ from .portage import PortageSystem
+ cls.__wrapped_sys = PortageSystem ()
+ else:
+ raise InvalidSystemError, cls.__system
-def is_package(what):
- return isinstance(what, _Package)
-
-load_system()
+system = SystemWrapper()
diff --git a/portato/backend/exceptions.py b/portato/backend/exceptions.py
index f20a33e..dc2c7cd 100644
--- a/portato/backend/exceptions.py
+++ b/portato/backend/exceptions.py
@@ -3,7 +3,7 @@
# File: portato/backend/exceptions.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/backend/flags.py b/portato/backend/flags.py
index 9c5b93d..810b607 100644
--- a/portato/backend/flags.py
+++ b/portato/backend/flags.py
@@ -3,7 +3,7 @@
# File: portato/backend/flags.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/backend/package.py b/portato/backend/package.py
index 8a80fd5..34cdbe4 100644
--- a/portato/backend/package.py
+++ b/portato/backend/package.py
@@ -3,7 +3,7 @@
# File: portato/backend/package.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -371,16 +371,6 @@ class Package (_Package):
raise NotImplementedError
- def compare_version(self, other):
- """Compares this package's version to another's CPV; returns -1, 0, 1.
-
- @param other: the other package
- @type other: Package
- @returns: -1, 0 or 1
- @rtype: int"""
-
- raise NotImplementedError
-
def matches (self, criterion):
"""This checks, whether this package matches a specific versioning criterion - e.g.: "<=net-im/foobar-1.2".
diff --git a/portato/backend/portage/__init__.py b/portato/backend/portage/__init__.py
index 1daf51b..e559f9e 100644
--- a/portato/backend/portage/__init__.py
+++ b/portato/backend/portage/__init__.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/backend/portage/package.py b/portato/backend/portage/package.py
index 2b40e41..b34e3ef 100644
--- a/portato/backend/portage/package.py
+++ b/portato/backend/portage/package.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/package.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -294,18 +294,8 @@ class PortagePackage (Package):
return self.get_package_settings("USE", installed = True).split()
else: return []
- def compare_version(self,other):
- v1 = self._scpv
- v2 = portage.catpkgsplit(other.get_cpv())
- # if category is different
- if v1[0] != v2[0]:
- return cmp(v1[0],v2[0])
- # if name is different
- elif v1[1] != v2[1]:
- return cmp(v1[1],v2[1])
- # Compare versions
- else:
- return portage.pkgcmp(v1[1:],v2[1:])
+ def __cmp__ (self, other):
+ return system.compare_versions(self.get_cpv(), other.get_cpv())
def matches (self, criterion):
# cpv_matches needs explicit slot info
diff --git a/portato/backend/portage/package_22.py b/portato/backend/portage/package_22.py
index ed804ce..23e8ed5 100644
--- a/portato/backend/portage/package_22.py
+++ b/portato/backend/portage/package_22.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/package_22.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/backend/portage/sets.py b/portato/backend/portage/sets.py
index 234047b..c1971b7 100644
--- a/portato/backend/portage/sets.py
+++ b/portato/backend/portage/sets.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/sets.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -102,7 +102,7 @@ class InstalledSet (Set):
else:
t = system.settings.vartree.dbapi.match(key)
if not with_version:
- t = itt.imap(portage.dep.dep_getkey, t)
+ t = itt.imap(portage.cpv_getkey, t)
return set(t)
diff --git a/portato/backend/portage/settings.py b/portato/backend/portage/settings.py
index 8211f3b..2f3b780 100644
--- a/portato/backend/portage/settings.py
+++ b/portato/backend/portage/settings.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/settings.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/backend/portage/settings_22.py b/portato/backend/portage/settings_22.py
index bae3424..ba4f1e8 100644
--- a/portato/backend/portage/settings_22.py
+++ b/portato/backend/portage/settings_22.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/settings_22.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/backend/portage/system.py b/portato/backend/portage/system.py
index d7c7806..3aaa060 100644
--- a/portato/backend/portage/system.py
+++ b/portato/backend/portage/system.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/system.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -68,7 +68,12 @@ class PortageSystem (SystemInterface):
return PortagePackage(cpv)
def get_config_path (self):
- return portage.USER_CONFIG_PATH
+ path = portage.USER_CONFIG_PATH
+
+ if path[0] != "/":
+ return os.path.join(self.settings.settings["ROOT"], path)
+ else:
+ return path
def get_merge_command (self):
return ["/usr/bin/python", "/usr/bin/emerge"]
@@ -120,6 +125,20 @@ class PortageSystem (SystemInterface):
else:
return True
+ def compare_versions(self, v1, v2):
+ v1 = self.split_cpv(v1)
+ v2 = self.split_cpv(v2)
+
+ # if category is different
+ if v1[0] != v2[0]:
+ return cmp(v1[0],v2[0])
+ # if name is different
+ elif v1[1] != v2[1]:
+ return cmp(v1[1],v2[1])
+ # Compare versions
+ else:
+ return portage.pkgcmp(v1[1:],v2[1:])
+
def with_bdeps(self):
"""Returns whether the "--with-bdeps" option is set to true.
@@ -218,8 +237,11 @@ class PortageSystem (SystemInterface):
cpv = portage.dep_getcpv(cpv)
return portage.catpkgsplit(cpv)
- def sort_package_list(self, pkglist):
- pkglist.sort(PortagePackage.compare_version) # XXX: waaah ... direct package naming... =/
+ def sort_package_list(self, pkglist, only_cpv = False):
+ if only_cpv:
+ pkglist.sort(self.compare_versions)
+ else:
+ pkglist.sort()
return pkglist
def reload_settings (self):
@@ -240,7 +262,7 @@ class PortageSystem (SystemInterface):
if not best:
return
- if not best.is_installed() and (best.is_masked() or best.is_testing(True)): # check to not update unnecessairily
+ if not best.is_installed() and (best.is_masked() or best.is_testing(True)): # check to not update unnecessarily
for i in inst:
if i.matches(crit):
debug("The installed %s matches %s. Discarding upgrade to masked version %s.", i.get_cpv(), crit, best.get_version())
diff --git a/portato/backend/portage/system_22.py b/portato/backend/portage/system_22.py
index f69e15c..c3bfa5f 100644
--- a/portato/backend/portage/system_22.py
+++ b/portato/backend/portage/system_22.py
@@ -3,7 +3,7 @@
# File: portato/backend/portage/system_22.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -63,11 +63,3 @@ class PortageSystem_22 (PortageSystem):
def new_package (self, cpv):
return PortagePackage_22(cpv)
-
- def get_config_path (self):
- path = PortageSystem.get_config_path(self)
-
- if path[0] != "/":
- return os.path.join(self.settings.settings["ROOT"], path)
- else:
- return path
diff --git a/portato/backend/system_interface.py b/portato/backend/system_interface.py
index be79de2..a156d2b 100644
--- a/portato/backend/system_interface.py
+++ b/portato/backend/system_interface.py
@@ -3,7 +3,7 @@
# File: portato/backend/system_interface.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -68,6 +68,18 @@ class SystemInterface (object):
"""
raise NotImplementedError
+
+ def compare_versions(self, v1, v2):
+ """Compares two CPVs; returns -1, 0, 1.
+
+ @param v1: one CPV
+ @type v1: cpv
+ @param v2: the second CPV
+ @type v2: cpv
+ @returns: -1, 0 or 1
+ @rtype: int"""
+
+ raise NotImplementedError
def find_best(self, list, only_cpv = False):
"""Returns the best package out of a list of packages.
@@ -134,11 +146,13 @@ class SystemInterface (object):
raise NotImplementedError
- def sort_package_list(self, pkglist):
+ def sort_package_list(self, pkglist, only_cpv = False):
"""Sorts a package list in the same manner portage does.
@param pkglist: list to sort
- @type pkglist: Packages[]
+ @type pkglist: Packages[] or cpv[]
+ @param only_cpv: flags whether the passed list consists of Packages or of CPVs
+ @type: bool
"""
raise NotImplementedError
diff --git a/portato/config_parser.py b/portato/config_parser.py
index 39234a9..2ef52c5 100644
--- a/portato/config_parser.py
+++ b/portato/config_parser.py
@@ -3,7 +3,7 @@
# File: portato/config_parser.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/constants.py b/portato/constants.py
index 7d2a9d6..a8e930c 100644
--- a/portato/constants.py
+++ b/portato/constants.py
@@ -3,7 +3,7 @@
# File: portato/constants.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -42,8 +42,10 @@ These should be set during the installation.
@var TEMPLATE_DIR: Directory containing the UI template files.
@type TEMPLATE_DIR: string
-@var REPOURI: the URI of the bzr repository -- only used in live versions
+@var REPOURI: the URI of the git repository -- only used in live versions
@type REPOURI: string
+@var REVISION: the revision of the live version
+@type REVISION: string
"""
import os
from os.path import join as pjoin
@@ -70,4 +72,5 @@ SETTINGS_DIR = pjoin(HOME, "."+APP)
TEMPLATE_DIR = "portato/gui/templates/"
# live versions only
-REPOURI = "lp:portato"
+REPOURI = "git://github.com/Necoro/portato.git::master"
+REVISION = ""
diff --git a/portato/db/__init__.py b/portato/db/__init__.py
index 9d21d3b..21f72ce 100644
--- a/portato/db/__init__.py
+++ b/portato/db/__init__.py
@@ -3,7 +3,7 @@
# File: portato/db/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -26,7 +26,7 @@ _DATABASE = None
types = {
"sql": (_("SQLite"), _("Uses an SQLite-database to store package information.\nMay take longer to generate at the first time, but has advantages if portato is re-started with an unchanged portage tree. Additionally it allows to use fast SQL expressions for fetching the data.")),
"dict": (_("Hashmap"), _("Uses an in-memory hashmap to store package information.\nHas been used since at least version 0.3.3, but all information has to be regenerated on each startup.")),
- "eixsql" : (_("eix + SQLite"), _("Similar to SQLite, but now uses the eix database to get the package information.\nThis should be much faster on startup, but requires that your eix database is always up-to-date."))
+ "eixsql" : (_("eix + SQLite"), _("Similar to SQLite, but now uses the eix database to get the package information.\nThis should be much faster on startup, but requires that your eix database is always up-to-date.\nAdditionally, this is the only database allowing searching in descriptions."))
}
def Database(type = None):
diff --git a/portato/db/database.py b/portato/db/database.py
index 7a23e5e..6e92d79 100644
--- a/portato/db/database.py
+++ b/portato/db/database.py
@@ -3,7 +3,7 @@
# File: portato/db/database.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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,6 +14,10 @@ from __future__ import absolute_import, with_statement
from threading import RLock
from functools import wraps
+from ..helper import warning
+
+class UnsupportedSearchTypeError(Exception):
+ pass
class PkgData (object):
__slots__ = ("cat", "pkg", "inst", "disabled")
@@ -37,8 +41,19 @@ class Database (object):
ALL = _("ALL")
+ SEARCH_NAME = 1
+ SEARCH_DESCRIPTION = 2
+
+ TYPES = {
+ SEARCH_NAME : _("Name"),
+ SEARCH_DESCRIPTION : _("Description"),
+ SEARCH_NAME | SEARCH_DESCRIPTION : "%s + %s" % (_("Name"), _("Description"))
+ }
+
+
def __init__ (self):
self._lock = RLock()
+ self.type = self.SEARCH_NAME
@staticmethod
def lock (f):
@@ -51,6 +66,24 @@ class Database (object):
return wrapper
+ def search_types (self):
+ """The types of search supported by the database.
+
+ @return: type
+ @rtype: int"""
+ raise NotImplentedError
+
+ def set_type (self, type):
+ if type & self.search_types() != type:
+ raise UnsupportedSearchTypeError, type
+
+ self._type = type
+
+ def get_type (self):
+ return self._type
+
+ type = property(get_type, set_type)
+
def populate (self, category = None):
"""Populates the database.
diff --git a/portato/db/eix_sql.py b/portato/db/eix_sql.py
index c2d2292..75bcb1e 100644
--- a/portato/db/eix_sql.py
+++ b/portato/db/eix_sql.py
@@ -3,7 +3,7 @@
# File: portato/db/eix_sql.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -41,6 +41,9 @@ class EixSQLDatabase (SQLDatabase):
SQLDatabase.__init__(self, session)
+ def search_types(self):
+ return self.SEARCH_NAME | self.SEARCH_DESCRIPTION
+
def updated (self):
mtime = os.stat(self.cache).st_mtime
old = self.session.get("mtime", 0)
@@ -63,7 +66,7 @@ class EixSQLDatabase (SQLDatabase):
if category is None or cat.name == category:
for pkg in cat.packages:
p = "%s/%s" % (cat.name, pkg.name)
- yield (cat.name, pkg.name, p in inst, False)
+ yield (cat.name, pkg.name, pkg.description, p in inst, False)
- connection.executemany("INSERT INTO packages (cat, name, inst, disabled) VALUES (?, ?, ?, ?)", _get())
+ connection.executemany("INSERT INTO packages (cat, name, descr, inst, disabled) VALUES (?, ?, ?, ?, ?)", _get())
connection.commit()
diff --git a/portato/db/hash.py b/portato/db/hash.py
index 8cea6f2..4a6958b 100644
--- a/portato/db/hash.py
+++ b/portato/db/hash.py
@@ -3,7 +3,7 @@
# File: portato/db/hash.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -32,6 +32,9 @@ class HashDatabase (Database):
self.__initialize()
self.populate()
+ def search_types(self):
+ return Database.SEARCH_NAME
+
def __initialize (self):
self._db = defaultdict(list)
self.inst_cats = set([self.ALL])
diff --git a/portato/db/sql.py b/portato/db/sql.py
index fbc01e6..a9c27ab 100644
--- a/portato/db/sql.py
+++ b/portato/db/sql.py
@@ -3,7 +3,7 @@
# File: portato/db/sql.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -34,7 +34,7 @@ from .database import Database, PkgData
class SQLDatabase (Database):
- FORMAT = "1"
+ FORMAT = "2"
FORBIDDEN = (".bzr", ".svn", ".git", "CVS", ".hg", "_darcs")
lock = Database.lock
@@ -68,6 +68,7 @@ class SQLDatabase (Database):
(
name TEXT,
cat TEXT,
+ descr TEXT DEFAULT "",
inst INTEGER,
disabled INTEGER
)""")
@@ -83,6 +84,9 @@ class SQLDatabase (Database):
pkg_conn.close()
+ def search_types(self):
+ return self.SEARCH_NAME
+
def updated (self):
changed = False
@@ -253,12 +257,22 @@ class SQLDatabase (Database):
self._restrict = ""
else:
restrict = restrict.replace(".*","%").replace(".","_")
+ rest = ""
+
+ if self._type & self.SEARCH_NAME:
+ if "/" in restrict:
+ rest = "(name LIKE '%s%%' AND cat LIKE '%s')" % (pkg, cat)
+ else:
+ rest = "(name LIKE '%%%(restrict)s%%' OR cat LIKE '%(restrict)s%%')" % {"restrict":restrict}
- if "/" in restrict:
- cat,pkg = restrict.split("/")
- self._restrict = "AND name LIKE '%s%%' AND cat LIKE '%s'" % (pkg, cat)
- else:
- self._restrict = "AND (name LIKE '%%%(restrict)s%%' OR cat LIKE '%(restrict)s%%')" % {"restrict":restrict}
+ if self._type & self.SEARCH_DESCRIPTION:
+ r = "descr LIKE '%%%(restrict)s%%'" % {"restrict":restrict}
+ if rest:
+ rest = "(%s OR %s)" % (r, rest)
+ else:
+ rest = r
+
+ self._restrict = "AND " + rest
restrict = property(get_restrict, set_restrict)
con = staticmethod(con)
diff --git a/portato/dependency.py b/portato/dependency.py
index bda20eb..4b505e6 100644
--- a/portato/dependency.py
+++ b/portato/dependency.py
@@ -3,7 +3,7 @@
# File: portato/dependency.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/eix/__init__.py b/portato/eix/__init__.py
index 346fe82..8fa1da6 100644
--- a/portato/eix/__init__.py
+++ b/portato/eix/__init__.py
@@ -3,7 +3,7 @@
# File: portato/eix/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/eix/exceptions.py b/portato/eix/exceptions.py
index 8145af4..1ca05e1 100644
--- a/portato/eix/exceptions.py
+++ b/portato/eix/exceptions.py
@@ -3,7 +3,7 @@
# File: portato/eix/exceptions.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/eix/parser.pyx b/portato/eix/parser.pyx
index 01a673f..d4bd3af 100644
--- a/portato/eix/parser.pyx
+++ b/portato/eix/parser.pyx
@@ -3,7 +3,7 @@
# File: portato/eix/_parser.pyx
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -260,7 +260,7 @@ cdef class package:
cdef LLong _offset
cdef readonly object name
- #cdef readonly object description
+ cdef readonly object description
#cdef readonly object provide
#cdef readonly object homepage
#cdef readonly object license
@@ -279,9 +279,9 @@ cdef class package:
after_offset = ftell(cfile)
self.name = string(file)
+ self.description = string(file)
# skip the rest, as it is currently unneeded
- #self.description = string(file)
#self.provide = vector(file, number)
#self.homepage = string(file)
#self.license = number(file)
diff --git a/portato/eix/py_parser.py b/portato/eix/py_parser.py
index cc42553..231c206 100644
--- a/portato/eix/py_parser.py
+++ b/portato/eix/py_parser.py
@@ -3,7 +3,7 @@
# File: portato/eix/parser.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/__init__.py b/portato/gui/__init__.py
index e3f1172..bbe21d8 100644
--- a/portato/gui/__init__.py
+++ b/portato/gui/__init__.py
@@ -3,7 +3,7 @@
# File: portato/gui/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -27,9 +27,11 @@ def run ():
from .windows.main import MainWindow
try:
m = MainWindow(s)
- s.hide()
+ s.destroy()
+ del s
+
m.main()
except PreReqError, e:
error("Prerequisite not matched. Aborting.")
prereq_error_dialog(e)
- s.hide()
+ s.destroy()
diff --git a/portato/gui/dialogs.py b/portato/gui/dialogs.py
index d7ac41b..6044a5b 100644
--- a/portato/gui/dialogs.py
+++ b/portato/gui/dialogs.py
@@ -3,7 +3,7 @@
# File: portato/gui/dialogs.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -68,7 +68,7 @@ def nothing_found_dialog ():
def changed_flags_dialog (what = "flags"):
check = gtk.CheckButton(_("Do not show this dialog again."))
hintMB = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, _("Changed %s") % what)
- hintMB.format_secondary_text(_("Portato will write these changes into the appropriate files.\nPlease backup them if you think it is necessairy."))
+ hintMB.format_secondary_text(_("Portato will write these changes into the appropriate files.\nPlease backup them if you think it is necessary."))
hintMB.vbox.add(check)
hintMB.vbox.show_all()
ret = hintMB.run()
diff --git a/portato/gui/exception_handling.py b/portato/gui/exception_handling.py
index c973e6b..dbafa7e 100644
--- a/portato/gui/exception_handling.py
+++ b/portato/gui/exception_handling.py
@@ -3,7 +3,7 @@
# File: portato/gui/exception_handling.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -97,10 +97,13 @@ def convert (version):
return ".".join(map(str, version))
def get_version_infos():
- from ..constants import VERSION
+ from ..constants import VERSION, REVISION
from ..backend import system
from ..db import _TYPE as db_type
+ if REVISION:
+ VERSION = "%s (git: %s)" % (VERSION, REVISION)
+
return "\n".join((
"Portato version: %s" % VERSION,
"System: %s" % " ".join(get_runsystem()),
diff --git a/portato/gui/exceptions.py b/portato/gui/exceptions.py
index 17041dc..3e35caa 100644
--- a/portato/gui/exceptions.py
+++ b/portato/gui/exceptions.py
@@ -3,7 +3,7 @@
# File: portato/gui/exceptions.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/queue.py b/portato/gui/queue.py
index e73891d..b18e4e7 100644
--- a/portato/gui/queue.py
+++ b/portato/gui/queue.py
@@ -3,7 +3,7 @@
# File: portato/gui/queue.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -144,7 +144,7 @@ class EmergeQueue:
old = system.find_packages(pkg.get_slot_cp(), system.SET_INSTALLED)
if old:
old = old[0] # assume we have only one there
- cmp = pkg.compare_version(old)
+ cmp = pkg.__cmp__(old)
if cmp > 0:
update = True
elif cmp < 0:
diff --git a/portato/gui/session.py b/portato/gui/session.py
index 7aa890d..549a2c9 100644
--- a/portato/gui/session.py
+++ b/portato/gui/session.py
@@ -3,7 +3,7 @@
# File: portato/gui/session.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/slots.py b/portato/gui/slots.py
index c7f20e6..75f4d77 100644
--- a/portato/gui/slots.py
+++ b/portato/gui/slots.py
@@ -3,7 +3,7 @@
# File: portato/gui/slots.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/templates/AboutWindow.ui b/portato/gui/templates/AboutWindow.ui
index ce612b3..5590e2b 100644
--- a/portato/gui/templates/AboutWindow.ui
+++ b/portato/gui/templates/AboutWindow.ui
@@ -16,7 +16,7 @@
<property name="has_separator">False</property>
<property name="program_name">Portato</property>
<property name="copyright">This software is licensed under the terms of the GPLv2.
-Copyright (C) 2006-2009 Ren&#xE9; 'Necoro' Neumann &lt;necoro@necoro.net&gt;</property>
+Copyright (C) 2006-2010 Ren&#xE9; 'Necoro' Neumann &lt;necoro@necoro.net&gt;</property>
<property name="comments">A Portage GUI</property>
<property name="website">http://portato.necoro.net</property>
<property name="authors">Ren&#xE9; 'Necoro' Neumann
@@ -27,6 +27,7 @@ Thanks goto:
- the Sabayon-Distro for making Portato the default Portage-GUI</property>
<property name="translator_credits">Catalan - Roger Calv&#xF3;
German - Ren&#xE9; 'Necoro' Neumann
+Italian - Ponsi
Polish - Tomasz Osi&#x144;ski
Portugese (Brazilian) - Alberto Federman Neto
Spanish - Daniel Halens
@@ -40,6 +41,39 @@ Turkish - G&#xFC;rkan 'seqizz' G&#xFC;r</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
+ <object class="GtkHBox" id="gitHB">
+ <property name="visible">True</property>
+ <property name="no_show_all">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label">&lt;b&gt;Git revision:&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="gitLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label">label</property>
+ <property name="use_markup">True</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
<placeholder/>
</child>
<child internal-child="action_area">
diff --git a/portato/gui/templates/MainWindow.menu b/portato/gui/templates/MainWindow.menu
index 1cce3be..e9c8f7a 100644
--- a/portato/gui/templates/MainWindow.menu
+++ b/portato/gui/templates/MainWindow.menu
@@ -16,7 +16,7 @@
<child>
<object class="GtkAction" id="fileMenuAction">
<property name="name">fileMenuAction</property>
- <property name="label" translatable="yes">_File</property>
+ <property name="label" translatable="yes">_General</property>
</object>
</child>
<child>
@@ -72,7 +72,7 @@
<child>
<object class="GtkAction" id="updateAction">
<property name="name">updateAction</property>
- <property name="label" translatable="yes">Update _World</property>
+ <property name="label" translatable="yes">Up_date World</property>
<signal handler="cb_update_clicked" name="activate"/>
</object>
</child>
@@ -84,6 +84,13 @@
</object>
</child>
<child>
+ <object class="GtkAction" id="showWorldPkgsAction">
+ <property name="name">showWorldPkgsAction</property>
+ <property name="label" translatable="yes">Show _World Packages</property>
+ <signal handler="cb_show_world_clicked" name="activate"/>
+ </object>
+ </child>
+ <child>
<object class="GtkToggleAction" id="showInstalledAction">
<property name="name">showInstalledAction</property>
<property name="label" translatable="yes">Show _Only Installed Packages</property>
@@ -151,7 +158,7 @@
<object class="GtkAction" id="pluginsAction">
<property name="stock_id">gtk-connect</property>
<property name="name">pluginsAction</property>
- <property name="label" translatable="yes">_Plugins</property>
+ <property name="label" translatable="yes">Plu_gins</property>
<signal handler="cb_plugins_clicked" name="activate"/>
</object>
</child>
@@ -161,6 +168,7 @@
<menubar name="menubar">
<menu name="fileMenu" action="fileMenuAction">
<menuitem name="prefMenuItem" action="prefAction"/>
+ <menuitem name="pluginsMenuItem" action="pluginsAction"/>
<menuitem name="reloadMenuItem" action="reloadAction"/>
<separator/>
<menuitem name="closeMenuItem" action="closeAction"/>
@@ -170,6 +178,7 @@
<menuitem name="unmergeMenuItem" action="unmergeAction"/>
<menuitem name="updateMenuItem" action="updateAction"/>
<menuitem name="showUpdatesMenuItem" action="showUpdatesAction"/>
+ <menuitem name="showWorldPkgsMenuItem" action="showWorldPkgsAction" />
<menuitem name="showInstalledMenuItem" action="showInstalledAction"/>
<separator/>
<menuitem name="syncMenuItem" action="syncAction"/>
@@ -181,7 +190,6 @@
<menu name="pluginMenu" action="pluginMenuAction"/>
<menu name="helpMenu" action="helpMenuAction">
<menuitem name="aboutMenuItem" action="aboutAction"/>
- <menuitem name="pluginsMenuItem" action="pluginsAction"/>
</menu>
</menubar>
<popup name="systrayPopup">
diff --git a/portato/gui/templates/MainWindow.ui b/portato/gui/templates/MainWindow.ui
index 8e8c3b4..05e9545 100644
--- a/portato/gui/templates/MainWindow.ui
+++ b/portato/gui/templates/MainWindow.ui
@@ -30,6 +30,16 @@
<property name="visible">True</property>
<property name="border_width">3</property>
<child>
+ <object class="GtkComboBox" id="typeCombo">
+ <property name="visible">True</property>
+ <signal name="changed" handler="cb_type_combo_changed"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkEntry" id="searchEntry">
<property name="visible">True</property>
<signal name="changed" handler="cb_search_changed"/>
@@ -38,12 +48,12 @@
</object>
<packing>
<property name="padding">5</property>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="deleteSearchButton">
- <property name="label">gtk-delete</property>
+ <property name="label">gtk-clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@@ -54,7 +64,7 @@
<packing>
<property name="expand">False</property>
<property name="padding">5</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
@@ -69,7 +79,7 @@
<packing>
<property name="expand">False</property>
<property name="padding">5</property>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
</object>
diff --git a/portato/gui/templates/UpdateWindow.ui b/portato/gui/templates/PkgListWindow.ui
index ec8288e..fdcdb23 100644
--- a/portato/gui/templates/UpdateWindow.ui
+++ b/portato/gui/templates/PkgListWindow.ui
@@ -2,9 +2,8 @@
<interface>
<requires lib="gtk+" version="2.14"/>
<!-- interface-naming-policy toplevel-contextual -->
- <object class="GtkWindow" id="UpdateWindow">
+ <object class="GtkWindow" id="PkgListWindow">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="title" translatable="yes">Updatable Packages</property>
<property name="window_position">center-on-parent</property>
<property name="destroy_with_parent">True</property>
<property name="urgency_hint">True</property>
@@ -92,6 +91,22 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkButton" id="uninstallBtn">
+ <property name="label" translatable="yes">_Uninstall Selected</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">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="use_underline">True</property>
+ <signal name="clicked" handler="cb_uninstall_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
diff --git a/portato/gui/templates/PreferenceWindow.ui b/portato/gui/templates/PreferenceWindow.ui
index c7a00e0..d2135d0 100644
--- a/portato/gui/templates/PreferenceWindow.ui
+++ b/portato/gui/templates/PreferenceWindow.ui
@@ -784,8 +784,6 @@
<child>
<object class="GtkHBox" id="hbox4">
<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="orientation">vertical</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkLabel" id="label21">
diff --git a/portato/gui/updater.py b/portato/gui/updater.py
index 7ce7c51..6539913 100644
--- a/portato/gui/updater.py
+++ b/portato/gui/updater.py
@@ -3,7 +3,7 @@
# File: portato/gui/updater.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/utils.py b/portato/gui/utils.py
index 8b88b23..ce5971e 100644
--- a/portato/gui/utils.py
+++ b/portato/gui/utils.py
@@ -3,7 +3,7 @@
# File: portato/gui/utils.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -21,7 +21,7 @@ from threading import Thread
import gtk
# some backend things
-from ..backend import flags, set_system
+from ..backend import flags, system
from ..helper import debug, info
from ..log import set_log_level
from ..constants import APP, LOCALE_DIR
@@ -90,9 +90,8 @@ class Config (ConfigParser):
set_log_level(level)
def modify_system_config (self):
- """Sets the system config.
- @see: L{backend.set_system()}"""
- set_system(self.get("system"))
+ """Sets the system config."""
+ system.set_system(self.get("system"))
def modify_external_configs (self):
"""Convenience function setting all external configs."""
diff --git a/portato/gui/views.py b/portato/gui/views.py
index 3fc965f..699a832 100644
--- a/portato/gui/views.py
+++ b/portato/gui/views.py
@@ -3,7 +3,7 @@
# File: portato/gui/views.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/windows/__init__.py b/portato/gui/windows/__init__.py
index 6a4ac82..5be95ce 100644
--- a/portato/gui/windows/__init__.py
+++ b/portato/gui/windows/__init__.py
@@ -3,7 +3,7 @@
# File: portato/gui/gtk/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/windows/about.py b/portato/gui/windows/about.py
index 1b8a981..a15fd24 100644
--- a/portato/gui/windows/about.py
+++ b/portato/gui/windows/about.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/about.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -15,7 +15,7 @@ from __future__ import absolute_import
import gtk
from .basic import AbstractDialog
-from ...constants import VERSION
+from ...constants import VERSION, REVISION
class AboutWindow (AbstractDialog):
"""A window showing the "about"-informations."""
@@ -27,5 +27,11 @@ class AboutWindow (AbstractDialog):
self.window.set_version(VERSION)
self.window.set_logo(None)
+ if REVISION:
+ gitlabel = self.tree.get_widget("gitLabel")
+ gitlabel.set_label(REVISION)
+ else:
+ self.tree.get_widget("gitHB").hide()
+
self.window.show_all()
diff --git a/portato/gui/windows/basic.py b/portato/gui/windows/basic.py
index 542cf7f..92c35f4 100644
--- a/portato/gui/windows/basic.py
+++ b/portato/gui/windows/basic.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/basic.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -32,6 +32,7 @@ except OSError:
else:
getlib.textdomain(APP)
getlib.bindtextdomain(APP, LOCALE_DIR)
+ getlib.bind_textdomain_codeset(APP, "UTF-8")
# some debugging output about the current codeset used
nll = getlib.nl_langinfo
diff --git a/portato/gui/windows/mailinfo.py b/portato/gui/windows/mailinfo.py
index 0cc79f2..0ee232a 100644
--- a/portato/gui/windows/mailinfo.py
+++ b/portato/gui/windows/mailinfo.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/mailinfo.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py
index 29eb728..a06756d 100644
--- a/portato/gui/windows/main.py
+++ b/portato/gui/windows/main.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/main.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -29,6 +29,7 @@ from ... import get_listener
from ...helper import debug, warning, error, info
from ...session import Session
from ...db import Database
+from ...db.database import UnsupportedSearchTypeError
from ...constants import CONFIG_LOCATION, VERSION, APP_ICON, ICON_DIR
from ...backend.exceptions import PackageNotFoundException, BlockedException, VersionsNotFoundException
@@ -50,7 +51,7 @@ from .about import AboutWindow
from .plugin import PluginWindow
from .preference import PreferenceWindow
from .search import SearchWindow
-from .update import UpdateWindow
+from .pkglist import UpdateWindow, WorldListWindow
class PackageTable:
"""A window with data about a specfic package."""
@@ -565,6 +566,10 @@ class MainWindow (Window):
splash(_("Finishing startup"))
+ # depends on session
+ self.typeCombo = self.tree.get_widget("typeCombo")
+ self.build_type_combo()
+
self.window.show_all()
def show_package (self, pkg = None, cpv = None, cp = None, version = None, **kwargs):
@@ -884,6 +889,26 @@ class MainWindow (Window):
else: # no selCatName -> so no category selected --> ignore
debug("No category selected --> should be no harm.")
+ def build_type_combo (self):
+ model = gtk.ListStore(int, str)
+ for k,v in self.db.TYPES.iteritems():
+ model.append((k,v))
+
+ self.typeCombo.set_model(model)
+ cell = gtk.CellRendererText()
+ self.typeCombo.pack_start(cell)
+ self.typeCombo.set_attributes(cell, text = 1)
+
+
+ for i, (k, v) in enumerate(model):
+ if k == self.db.type: break
+
+ self.typeCombo.set_active(i)
+
+ types = self.db.search_types()
+ if types == 1 or types % 2 == 0:
+ self.typeCombo.set_sensitive(False)
+
def load_session(self, sessionEx = None, defaults_only = False):
"""
Loads the session data.
@@ -1000,6 +1025,14 @@ class MainWindow (Window):
return _save
+ # SEARCH TYPE
+ def load_search_type (t):
+ t = int(t)
+ try:
+ self.db.type = t
+ except UnsupportedSearchTypeError:
+ info("Cannot set search type. '%s' not supported by database '%s'.", t, self.db.__class__.__name__)
+
# SESSION VERSION
def load_session_version (version):
@@ -1028,7 +1061,8 @@ class MainWindow (Window):
(["width", "height"], lambda w,h: self.window.resize(int(w), int(h)), self.window.get_size),
(["vpanedpos", "hpanedpos"], load_paned, save_paned),
(["catsel"], load_cat_selection, save_cat_selection, ["app-portage@0"]),
- (["pkgsel"], load_pkg_selection, save_pkg_selection, ["portato@0"])
+ (["pkgsel"], load_pkg_selection, save_pkg_selection, ["portato@0"]),
+ (["searchtype"], load_search_type, lambda: self.db.type)
#([("merge", "queue"), ("unmerge", "queue"), ("oneshot", "queue")], load_queue, save_queue),
])
@@ -1575,7 +1609,13 @@ class MainWindow (Window):
return False # not again ;)
- gobject.timeout_add(100, __update)
+ gobject.timeout_add(200, __update)
+
+ def cb_type_combo_changed (self, *args):
+ model = self.typeCombo.get_model()
+ active = self.typeCombo.get_active()
+
+ self.db.type = model[active][0]
def cb_delete_search_clicked (self, *args):
self.searchEntry.set_text("")
@@ -1607,34 +1647,52 @@ class MainWindow (Window):
PluginWindow(self.window, plugins, self.queue)
return True
-
- def cb_show_updates_clicked (self, *args):
- """
- Show the list of updateble packages.
- """
- def __update():
- def cb_idle_show(packages):
- """
- Callback opening the menu when the calculation is finished.
+ def show_package_list (self, pkg_generator, klass, thread_name = "PkgList Update Thread"):
+
+ def cb_idle_show(packages):
+ """
+ Callback opening the menu when the calculation is finished.
- @returns: False to signal that it is finished
- """
- UpdateWindow(self.window, packages, self.queue, self.jump_to)
- return False
-
+ @returns: False to signal that it is finished
+ """
+ klass(self.window, packages, self.queue, self.jump_to)
+ return False
+
+ def __update():
watch = gtk.gdk.Cursor(gtk.gdk.WATCH)
self.window.window.set_cursor(watch)
packages = []
try:
- packages.extend(system.get_updated_packages())
+ packages.extend(pkg_generator())
finally:
self.window.window.set_cursor(None)
gobject.idle_add(cb_idle_show, packages)
- GtkThread(name="Show Updates Thread", target = __update).start()
+ GtkThread(name = thread_name, target = __update).start()
+ return True
+
+ def cb_show_updates_clicked (self, *args):
+ """
+ Show the list of updateble packages.
+ """
+
+ self.show_package_list(
+ lambda: (x.get_cpv() for x in system.get_updated_packages()),
+ UpdateWindow, "Show Updates Thread")
+
+ return True
+
+ def cb_show_world_clicked (self, *args):
+ """
+ Show the list of world packages.
+ """
+ self.show_package_list(
+ lambda: system.find_packages(pkgSet = "world", only_cpv = True),
+ WorldListWindow)
+
return True
def cb_show_installed_toggled (self, *args):
diff --git a/portato/gui/windows/update.py b/portato/gui/windows/pkglist.py
index 8e32dd9..df3ef46 100644
--- a/portato/gui/windows/update.py
+++ b/portato/gui/windows/pkglist.py
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
#
-# File: portato/gui/windows/update.py
+# File: portato/gui/windows/pkglist.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -19,15 +19,27 @@ from ...backend import system
from ...backend.exceptions import PackageNotFoundException, BlockedException
from ...helper import debug
-class UpdateWindow (AbstractDialog):
+class PkgListWindow (AbstractDialog):
- def __init__ (self, parent, packages, queue, jump_to):
+ # need this, so it can be safely subclassed
+ __file__ = __window__ = "PkgListWindow"
+
+ def __init__ (self, title, parent, packages, queue, jump_to):
AbstractDialog.__init__(self, parent)
+ self.window.set_title(title)
+
+ self.installBtn = self.tree.get_widget("installBtn")
+ self.uninstallBtn = self.tree.get_widget("uninstallBtn")
+
+ self.selectBtnLabels = {
+ False: _("Select _All"),
+ True: _("Unselect _All")}
+
+ self.all_selected = False
self.queue = queue
self.jump = jump_to
-
- self.packages = system.sort_package_list(packages)
+ self.packages = system.sort_package_list(packages, only_cpv = True)
self.build_list()
@@ -48,7 +60,7 @@ class UpdateWindow (AbstractDialog):
self.view.append_column(gtk.TreeViewColumn(_("Package"), cell, text = 1))
for p in self.packages:
- store.append([False, p.get_cpv()])
+ store.append([False, p])
def cb_set_size (self, *args):
"""
@@ -66,16 +78,20 @@ class UpdateWindow (AbstractDialog):
self.window.set_geometry_hints(self.window, min_height = val)
def cb_select_all_clicked (self, btn):
+ sel = self.all_selected = not self.all_selected
+
+ btn.set_label(self.selectBtnLabels[sel])
+
model = self.view.get_model()
iter = model.get_iter_first()
while iter:
- model.set_value(iter, 0, True)
+ model.set_value(iter, 0, sel)
iter = model.iter_next(iter)
return True
- def cb_install_clicked (self, btn):
+ def install_uninstall (self, type):
model = self.view.get_model()
iter = model.get_iter_first()
if iter is None: return
@@ -86,20 +102,30 @@ class UpdateWindow (AbstractDialog):
items.append(model.get_value(iter, 1))
iter = model.iter_next(iter)
- for item in items:
- try:
+ if type == "install":
+ for item in items:
try:
- self.queue.append(item, type = "install", oneshot = True)
- except PackageNotFoundException, e:
- if unmask_dialog(e[0]) == gtk.RESPONSE_YES :
- self.queue.append(item, type = "install", unmask = True, oneshot = True)
-
- except BlockedException, e:
- blocked_dialog(e[0], e[1])
+ try:
+ self.queue.append(item, "install", oneshot = True)
+ except PackageNotFoundException, e:
+ if unmask_dialog(e[0]) == gtk.RESPONSE_YES :
+ self.queue.append(item, "install", unmask = True, oneshot = True)
+
+ except BlockedException, e:
+ blocked_dialog(e[0], e[1])
+ else:
+ for item in items:
+ self.queue.append(item, "uninstall")
self.close()
return True
+ def cb_install_clicked (self, btn):
+ return self.install_uninstall("install")
+
+ def cb_uninstall_clicked (self, btn):
+ return self.install_uninstall("uninstall")
+
def cb_package_selected (self, view):
sel = view.get_selection()
store, it = sel.get_selected()
@@ -115,3 +141,12 @@ class UpdateWindow (AbstractDialog):
store = self.view.get_model()
store[path][0] = not store[path][0]
return True
+
+class UpdateWindow (PkgListWindow):
+ def __init__ (self, *args, **kwargs):
+ PkgListWindow.__init__(self, _("Updatable Packages"), *args, **kwargs)
+
+class WorldListWindow (UpdateWindow):
+ def __init__ (self, *args, **kwargs):
+ PkgListWindow.__init__(self, _("World Packages"), *args, **kwargs)
+ self.installBtn.hide()
diff --git a/portato/gui/windows/plugin.py b/portato/gui/windows/plugin.py
index 755ad58..89d38f5 100644
--- a/portato/gui/windows/plugin.py
+++ b/portato/gui/windows/plugin.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/plugin.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/windows/preference.py b/portato/gui/windows/preference.py
index 4bd7551..021788c 100644
--- a/portato/gui/windows/preference.py
+++ b/portato/gui/windows/preference.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/preference.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/windows/search.py b/portato/gui/windows/search.py
index c531507..f9191d7 100644
--- a/portato/gui/windows/search.py
+++ b/portato/gui/windows/search.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/search.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/gui/windows/splash.py b/portato/gui/windows/splash.py
index 39ba00d..2e9d5a8 100644
--- a/portato/gui/windows/splash.py
+++ b/portato/gui/windows/splash.py
@@ -3,7 +3,7 @@
# File: portato/gui/windows/splash.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -40,6 +40,7 @@ class SplashScreen (Window):
gtk.main_iteration()
def show (self):
+ self.window.set_keep_above(True)
self.window.show_all()
self.do_iteration()
@@ -47,4 +48,8 @@ class SplashScreen (Window):
self.window.hide()
self.do_iteration()
+ def destroy(self):
+ self.window.destroy()
+ self.do_iteration()
+
__call__ = set_descr
diff --git a/portato/helper.py b/portato/helper.py
index d32aa82..eb8ae2d 100644
--- a/portato/helper.py
+++ b/portato/helper.py
@@ -3,7 +3,7 @@
# File: portato/helper.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/ipc.pxd b/portato/ipc.pxd
index 64ca05d..38e6d30 100644
--- a/portato/ipc.pxd
+++ b/portato/ipc.pxd
@@ -3,7 +3,7 @@
# File: portato/ipc.pxd
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/ipc.pyx b/portato/ipc.pyx
index f3fb4af..abb26fe 100644
--- a/portato/ipc.pyx
+++ b/portato/ipc.pyx
@@ -3,7 +3,7 @@
# File: portato/ipc.pyx
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/listener.py b/portato/listener.py
index c96b637..b3a3ba0 100644
--- a/portato/listener.py
+++ b/portato/listener.py
@@ -3,7 +3,7 @@
# File: portato/listener.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/log.py b/portato/log.py
index 486aa51..b6462e9 100644
--- a/portato/log.py
+++ b/portato/log.py
@@ -3,7 +3,7 @@
# File: portato/log.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -100,3 +100,13 @@ def start(file = True):
def set_log_level (lvl):
for h in streamhandlers:
h.setLevel(lvl)
+
+# embed warnings in our logging functionality
+import warnings
+def showwarnings(msg, cat, filename, lineno, file = None, line = None):
+ msg = warnings.formatwarning(msg, cat, filename, lineno, line)
+
+ record = logging.LogRecord("portatoLogger", logging.WARNING, filename, lineno, "Portage Warning: %s", (msg,), None)
+ logging.getLogger("portatoLogger").handle(record)
+
+warnings.showwarning = showwarnings
diff --git a/portato/plugin.py b/portato/plugin.py
index 052dcd0..ec52314 100644
--- a/portato/plugin.py
+++ b/portato/plugin.py
@@ -3,7 +3,7 @@
# File: portato/plugin.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/plugins/__init__.py b/portato/plugins/__init__.py
index 22d98be..772be8c 100644
--- a/portato/plugins/__init__.py
+++ b/portato/plugins/__init__.py
@@ -3,7 +3,7 @@
# File: portato/plugins/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/session.py b/portato/session.py
index 2017544..54761a2 100644
--- a/portato/session.py
+++ b/portato/session.py
@@ -3,7 +3,7 @@
# File: portato/session.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
@@ -124,7 +124,7 @@ class Session (object):
for options, lfn, sfn, default in self._handlers:
vals = sfn()
- # map into list if necessairy
+ # map into list if necessary
if not hasattr(vals, "__iter__"):
vals = [vals]
debug("Saving %s with values %s", options, vals)
diff --git a/portato/su.py b/portato/su.py
index b87c75b..eb1f031 100644
--- a/portato/su.py
+++ b/portato/su.py
@@ -3,7 +3,7 @@
# File: portato/su.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/portato/waiting_queue.py b/portato/waiting_queue.py
index 33791a3..1e3f7ad 100644
--- a/portato/waiting_queue.py
+++ b/portato/waiting_queue.py
@@ -3,7 +3,7 @@
# File: portato/waiting_queue.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.
diff --git a/setup.py b/setup.py
index fafe828..8918826 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@
# File: setup.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006-2009 René 'Necoro' Neumann
+# Copyright (C) 2006-2010 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.