diff options
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? @@ -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 @@ -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 && 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 && 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 && 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 && 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") @@ -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é 'Necoro' Neumann <necoro@necoro.net></property> +Copyright (C) 2006-2010 René 'Necoro' Neumann <necoro@necoro.net></property> <property name="comments">A Portage GUI</property> <property name="website">http://portato.necoro.net</property> <property name="authors">René '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ó German - René 'Necoro' Neumann +Italian - Ponsi Polish - Tomasz Osiński Portugese (Brazilian) - Alberto Federman Neto Spanish - Daniel Halens @@ -40,6 +41,39 @@ Turkish - Gürkan 'seqizz' Gü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"><b>Git revision:</b></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. @@ -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. |