summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2010-01-18 16:31:03 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2010-01-18 16:31:03 +0100
commitb8ef905c6455ef98cd7fa488de7d602a70bd57dc (patch)
tree8d99e35017aa08773a8ee63487a67bac983bd6f7
parent675ef3624349fbfbe165913270f24a947e0cb8d0 (diff)
parent3cd4d651565e4afcc3c72bd32bb9ce2285b5c93d (diff)
downloadabrt-b8ef905c6455ef98cd7fa488de7d602a70bd57dc.tar.gz
abrt-b8ef905c6455ef98cd7fa488de7d602a70bd57dc.tar.xz
abrt-b8ef905c6455ef98cd7fa488de7d602a70bd57dc.zip
conflict
-rw-r--r--lib/Plugins/KerneloopsScanner.cpp2
-rw-r--r--po/es.po97
-rw-r--r--po/fr.po335
-rw-r--r--po/he.po90
-rw-r--r--po/nl.po90
-rw-r--r--po/pl.po90
-rwxr-xr-xscripts/abrt-bz-stats79
-rw-r--r--src/CLI/dbus.cpp6
-rw-r--r--src/CLI/dbus.h6
-rw-r--r--src/Daemon/CommLayerServerDBus.cpp10
-rw-r--r--src/Daemon/Daemon.cpp3
-rw-r--r--src/Daemon/PluginManager.cpp96
-rw-r--r--src/Daemon/PluginManager.h13
-rw-r--r--src/Gui/ABRTExceptions.py2
-rw-r--r--src/Gui/ABRTPlugin.py12
-rw-r--r--src/Gui/CCDBusBackend.py24
-rw-r--r--src/Gui/CCDumpList.py2
-rw-r--r--src/Gui/CCMainWindow.py57
-rw-r--r--src/Gui/CCReporterDialog.py2
-rw-r--r--src/Gui/CC_gui_functions.py20
-rw-r--r--src/Gui/ConfBackend.py152
-rw-r--r--src/Gui/PluginList.py22
-rw-r--r--src/Gui/PluginSettingsUI.py2
-rw-r--r--src/Gui/PluginsSettingsDialog.py17
-rw-r--r--src/Gui/SettingsDialog.py2
-rw-r--r--src/Gui/abrt_utils.py43
-rw-r--r--src/Hooks/abrt_exception_handler.py.in2
27 files changed, 776 insertions, 500 deletions
diff --git a/lib/Plugins/KerneloopsScanner.cpp b/lib/Plugins/KerneloopsScanner.cpp
index f338aac..1bb45ab 100644
--- a/lib/Plugins/KerneloopsScanner.cpp
+++ b/lib/Plugins/KerneloopsScanner.cpp
@@ -122,7 +122,7 @@ int CKerneloopsScanner::ScanDmesg()
int cnt_FoundOopses;
char *buffer;
- int pagesz = sysconf(_SC_PAGESIZE);
+ long pagesz = sysconf(_SC_PAGESIZE);
buffer = (char*)xzalloc(pagesz + 1);
diff --git a/po/es.po b/po/es.po
index c732c21..2e5b5f6 100644
--- a/po/es.po
+++ b/po/es.po
@@ -9,9 +9,9 @@ msgid ""
msgstr ""
"Project-Id-Version: abrt.master.es\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-12-15 10:52+0000\n"
-"PO-Revision-Date: 2009-12-15 11:51-0300\n"
-"Last-Translator: Héctor Daniel Cabrera <logan@fedoraproject.org>\n"
+"POT-Creation-Date: 2010-01-15 11:23+0000\n"
+"PO-Revision-Date: 2010-01-15 10:06-0300\n"
+"Last-Translator: Claudio Rodrigo Pereyra Diaz <claudio@pereyradiaz.com.ar>\n"
"Language-Team: Fedora Spanish <fedora-trans-es@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -28,26 +28,26 @@ msgstr "Otro cliente ya está siendo ejecutado, intentando despertarlo."
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "Se obtienen datos inesperados desde el demonio (¿está la Base de Datos correctamente actualizada?)"
-#: ../src/Gui/ABRTPlugin.py:55
+#: ../src/Gui/ABRTPlugin.py:56
+msgid "Not loaded plugins"
+msgstr "Complementos no cargados"
+
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Analyzer plugins"
msgstr "Complementos analizadores"
-#: ../src/Gui/ABRTPlugin.py:56
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Action plugins"
msgstr "Complementos de acción"
-#: ../src/Gui/ABRTPlugin.py:57
+#: ../src/Gui/ABRTPlugin.py:59
msgid "Reporter plugins"
msgstr "Complementos de informes"
-#: ../src/Gui/ABRTPlugin.py:58
+#: ../src/Gui/ABRTPlugin.py:60
msgid "Database plugins"
msgstr "Complementos de Bases de Datos"
-#: ../src/Gui/ABRTPlugin.py:97
-msgid "Plugin name is not set, can't load its settings"
-msgstr "No se puso el nombre del complemento, no se puede cargar su configuración"
-
#: ../src/Gui/CCDBusBackend.py:74
#: ../src/Gui/CCDBusBackend.py:97
msgid "Can't connect to system dbus"
@@ -134,31 +134,31 @@ msgstr "Ay_uda"
# Revisar si hay que traducir.
# Ver como referencia los botones gtk que no habia que traducirlos
#. add pixbuff separatelly
-#: ../src/Gui/CCMainWindow.py:71
+#: ../src/Gui/CCMainWindow.py:77
msgid "Icon"
msgstr "Icono"
-#: ../src/Gui/CCMainWindow.py:79
+#: ../src/Gui/CCMainWindow.py:85
msgid "Package"
msgstr "Paquete"
-#: ../src/Gui/CCMainWindow.py:80
+#: ../src/Gui/CCMainWindow.py:86
msgid "Application"
msgstr "Aplicación"
-#: ../src/Gui/CCMainWindow.py:81
+#: ../src/Gui/CCMainWindow.py:87
msgid "Date"
msgstr "Fecha"
-#: ../src/Gui/CCMainWindow.py:82
+#: ../src/Gui/CCMainWindow.py:88
msgid "Crash count"
msgstr "Cantidad de caídas"
-#: ../src/Gui/CCMainWindow.py:83
+#: ../src/Gui/CCMainWindow.py:89
msgid "User"
msgstr "Usuario"
-#: ../src/Gui/CCMainWindow.py:149
+#: ../src/Gui/CCMainWindow.py:157
#, python-format
msgid ""
"Can't show the settings dialog\n"
@@ -167,7 +167,7 @@ msgstr ""
"No se puede mostrar el diálogo de configuración\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:160
+#: ../src/Gui/CCMainWindow.py:168
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -177,7 +177,7 @@ msgstr ""
"%s"
#. there is something wrong with the daemon if we cant get the dumplist
-#: ../src/Gui/CCMainWindow.py:184
+#: ../src/Gui/CCMainWindow.py:195
#, python-format
msgid ""
"Error while loading the dumplist.\n"
@@ -186,15 +186,15 @@ msgstr ""
"Error intentando cargar la lista de volcado.\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:221
+#: ../src/Gui/CCMainWindow.py:232
msgid "<b>This crash has been reported:</b>\n"
msgstr "<b> Esta caída ha sido reportada:</b>\n"
-#: ../src/Gui/CCMainWindow.py:231
+#: ../src/Gui/CCMainWindow.py:242
msgid "<b>Not reported!</b>"
msgstr "<b>¡No informado!</b>"
-#: ../src/Gui/CCMainWindow.py:280
+#: ../src/Gui/CCMainWindow.py:291
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -202,7 +202,7 @@ msgstr ""
"Incapaz de conseguir el informe!\n"
"¿Falta la información de la depuración?"
-#: ../src/Gui/CCMainWindow.py:299
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -211,8 +211,8 @@ msgstr ""
"¡El informe falló!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:318
-#: ../src/Gui/CCMainWindow.py:345
+#: ../src/Gui/CCMainWindow.py:333
+#: ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "Error al obtener el informe: %s"
@@ -435,45 +435,45 @@ msgstr "Ha sido detectado una caída en el paquete %s."
msgid "ABRT service is not running"
msgstr "El servicio ABRT no se está ejecutando"
-#: ../src/Applet/CCApplet.cpp:196
+#: ../src/Applet/CCApplet.cpp:200
msgid "Warning"
msgstr "Aviso"
-#: ../src/Daemon/Daemon.cpp:473
+#: ../src/Daemon/Daemon.cpp:474
msgid "Report size exceeded the quota. Please check system's MaxCrashReportsSize value in abrt.conf."
msgstr "El tamaño del informe excede la cuota. Por favor, verifique el valor de MaxCrashReportsSize del sistema en abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:202
+#: ../lib/Plugins/Bugzilla.cpp:265
#, c-format
msgid "Bug is already reported: %i"
msgstr "El error ya ha sido informado: %i"
-#: ../lib/Plugins/Bugzilla.cpp:264
+#: ../lib/Plugins/Bugzilla.cpp:341
#, c-format
msgid "New bug id: %i"
msgstr "Nuevo id del error: %i"
-#: ../lib/Plugins/Bugzilla.cpp:359
+#: ../lib/Plugins/Bugzilla.cpp:442
msgid "Checking for duplicates..."
msgstr "Chequeando si hay duplicados..."
-#: ../lib/Plugins/Bugzilla.cpp:362
+#: ../lib/Plugins/Bugzilla.cpp:445
msgid "Logging into bugzilla..."
msgstr "Ingresando a bugzilla..."
-#: ../lib/Plugins/Bugzilla.cpp:366
+#: ../lib/Plugins/Bugzilla.cpp:449
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Usuario y contraseña vacios. Por favor compruebe el archivo Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:372
+#: ../lib/Plugins/Bugzilla.cpp:455
msgid "Checking CC..."
msgstr "Chequeando CC..."
-#: ../lib/Plugins/Bugzilla.cpp:381
+#: ../lib/Plugins/Bugzilla.cpp:464
msgid "Creating new bug..."
msgstr "Creando un nuevo informe..."
-#: ../lib/Plugins/Bugzilla.cpp:385
+#: ../lib/Plugins/Bugzilla.cpp:468
msgid "Logging out..."
msgstr "Saliendo..."
@@ -481,23 +481,23 @@ msgstr "Saliendo..."
msgid "Getting local universal unique identification"
msgstr "Obteniendo la identificación única universal local"
-#: ../lib/Plugins/CCpp.cpp:254
+#: ../lib/Plugins/CCpp.cpp:257
msgid "Generating backtrace"
msgstr "Generando seguimiento..."
-#: ../lib/Plugins/CCpp.cpp:372
+#: ../lib/Plugins/CCpp.cpp:376
msgid "Starting debuginfo installation"
msgstr "Iniciando la instalación de la información de depuración"
-#: ../lib/Plugins/CCpp.cpp:524
+#: ../lib/Plugins/CCpp.cpp:527
msgid "Getting local universal unique identification..."
msgstr "Obteniendo la identificación única universal local..."
-#: ../lib/Plugins/CCpp.cpp:543
+#: ../lib/Plugins/CCpp.cpp:546
msgid "Getting global universal unique identification..."
msgstr "Obteniendo la identificación única universal global..."
-#: ../lib/Plugins/CCpp.cpp:685
+#: ../lib/Plugins/CCpp.cpp:725
msgid "Skipping debuginfo installation"
msgstr "Omita la instalación de la información de depuración"
@@ -511,7 +511,7 @@ msgid "Writing report to '%s'"
msgstr "Escribiendo reporte en '%s'"
#: ../lib/Plugins/FileTransfer.cpp:63
-#: ../lib/Plugins/FileTransfer.cpp:385
+#: ../lib/Plugins/FileTransfer.cpp:372
msgid "FileTransfer: URL not specified"
msgstr "Transferencia de archivo: URL no especificada"
@@ -520,16 +520,16 @@ msgstr "Transferencia de archivo: URL no especificada"
msgid "Sending archive %s to %s"
msgstr "Enviando archivo %s a %s"
-#: ../lib/Plugins/FileTransfer.cpp:310
+#: ../lib/Plugins/FileTransfer.cpp:296
msgid "File Transfer: Creating a report..."
msgstr "Transferencia de archivo: Creando un informe..."
-#: ../lib/Plugins/FileTransfer.cpp:335
+#: ../lib/Plugins/FileTransfer.cpp:322
#, c-format
msgid "Can't create and send an archive: %s"
msgstr "No se puede crear y enviar un archivo: %s"
-#: ../lib/Plugins/FileTransfer.cpp:360
+#: ../lib/Plugins/FileTransfer.cpp:347
#, c-format
msgid "Can't create and send an archive %s"
msgstr "No se puede crear y enviar un archivo %s"
@@ -538,7 +538,7 @@ msgstr "No se puede crear y enviar un archivo %s"
msgid "Creating kernel oops crash reports..."
msgstr "Creando un informe de cuelgue de kernel oops..."
-#: ../lib/Plugins/Mailx.cpp:164
+#: ../lib/Plugins/Mailx.cpp:147
msgid "Sending an email..."
msgstr "Enviando un correo..."
@@ -551,10 +551,13 @@ msgstr "Ejecutando complemento SOSreport..."
msgid "running sosreport: %s"
msgstr "ejecutando sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:95
+#: ../lib/Plugins/SOSreport.cpp:97
msgid "done running sosreport"
msgstr "Sosreport corriendo"
+#~ msgid "Plugin name is not set, can't load its settings"
+#~ msgstr ""
+#~ "No se puso el nombre del complemento, no se puede cargar su configuración"
#~ msgid "Searching for debug-info packages..."
#~ msgstr "Buscando paquetes de información del depurador..."
#~ msgid "Downloading and installing debug-info packages..."
diff --git a/po/fr.po b/po/fr.po
index ceb709a..72b99e0 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -2,17 +2,18 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-#: ../src/Gui/CCReporterDialog.py:196
+#: ../src/Gui/CCReporterDialog.py:208
# Sam Friedmann <sam.friedmann@redhat.com>, 2009.
# ratal <aymeric.rateau@gmail.com>, 2009.
+# Aymeric Rateau <aymeric.rateau@gmail.com>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: abrt.master.fr\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-23 08:40+0000\n"
-"PO-Revision-Date: 2009-11-29 20:10+0900\n"
-"Last-Translator: ratal <aymeric.rateau@gmail.com>\n"
-"Language-Team: Français <fedora-trans-fr@redhat.com>\n"
+"POT-Creation-Date: 2010-01-08 15:37+0000\n"
+"PO-Revision-Date: 2010-01-14 21:10+0100\n"
+"Last-Translator: Aymeric Rateau <aymeric.rateau@gmail.com>\n"
+"Language-Team: French <fedora-trans-fr@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -46,7 +47,7 @@ msgid "Database plugins"
msgstr "Extensions de base de données"
#: ../src/Gui/ABRTPlugin.py:97
-msgid "Plugin name is not set, can't load it's settings"
+msgid "Plugin name is not set, can't load its settings"
msgstr ""
"Le nom de l'extension n'est pas défini, chargement de sa configuration "
"impossible"
@@ -55,59 +56,55 @@ msgstr ""
msgid "Can't connect to system dbus"
msgstr "Connexion au système dbus impossible"
-#: ../src/Gui/CCDBusBackend.py:100 ../src/Gui/CCDBusBackend.py:103
+#: ../src/Gui/CCDBusBackend.py:104 ../src/Gui/CCDBusBackend.py:107
msgid "Please check if abrt daemon is running"
msgstr "Veuillez vérifier que le démon abrt est en cours d'exécution."
-#: ../src/Gui/CCDBusBackend.py:155
+#: ../src/Gui/CCDBusBackend.py:159
msgid ""
-"Daemon did't return valid report info\n"
+"Daemon didn't return valid report info\n"
"Debuginfo is missing?"
msgstr ""
"Le démon n'a pas retourné d'informations valides\n"
"Debuginfo est manquant ?"
-#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
-msgid " "
-msgstr " "
-
-#: ../src/Gui/ccgui.glade.h:2
+#: ../src/Gui/ccgui.glade.h:1
msgid "(C) 2009 Red Hat, Inc."
msgstr "(C) 2009 Red Hat, Inc."
-#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:246
-msgid "<b>Not reported!</b>"
-msgstr "<b>Non signalé !</b>"
-
-#: ../src/Gui/ccgui.glade.h:4
-msgid "<span color=\"white\">Description</span>"
-msgstr "<span color=\"white\">Description</span>"
-
-#: ../src/Gui/ccgui.glade.h:5
+#: ../src/Gui/ccgui.glade.h:2
msgid "About ABRT"
msgstr "À propos d'ABRT"
-#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Automatic Bug Reporting Tool"
-#: ../src/Gui/ccgui.glade.h:7
+#: ../src/Gui/ccgui.glade.h:4
msgid "Delete"
msgstr "Supprimer"
-#: ../src/Gui/ccgui.glade.h:8
+#: ../src/Gui/ccgui.glade.h:5
+msgid "Details"
+msgstr "Détails"
+
+#: ../src/Gui/ccgui.glade.h:6
+msgid "Not Reported"
+msgstr "Non signalé"
+
+#: ../src/Gui/ccgui.glade.h:7
msgid "Please wait.."
msgstr "Veuillez patienter..."
-#: ../src/Gui/ccgui.glade.h:9
+#: ../src/Gui/ccgui.glade.h:8
msgid "Plugins"
msgstr "Extensions"
-#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
+#: ../src/Gui/ccgui.glade.h:9 ../src/Gui/report.glade.h:6
msgid "Report"
msgstr "Rapport"
-#: ../src/Gui/ccgui.glade.h:11
+#: ../src/Gui/ccgui.glade.h:10
msgid ""
"This program is free software; you can redistribute it and/or modify it "
"under the terms of the GNU General Public License as published by the Free "
@@ -135,48 +132,44 @@ msgstr ""
"Vous devriez avoir reçu une copie de la Licence Publique Générale GNU avec "
"ce logiciel. Si ce n'est pas le cas, voir <http://www.gnu.org/licenses/>."
-#: ../src/Gui/ccgui.glade.h:16
-msgid "Working..."
-msgstr "Traitement en cours..."
-
-#: ../src/Gui/ccgui.glade.h:17
+#: ../src/Gui/ccgui.glade.h:15
msgid "_Edit"
msgstr "_Édition"
-#: ../src/Gui/ccgui.glade.h:18
+#: ../src/Gui/ccgui.glade.h:16
msgid "_File"
msgstr "_Fichier"
-#: ../src/Gui/ccgui.glade.h:19
+#: ../src/Gui/ccgui.glade.h:17
msgid "_Help"
msgstr "_Aide"
#. add pixbuff separatelly
-#: ../src/Gui/CCMainWindow.py:80
+#: ../src/Gui/CCMainWindow.py:76
msgid "Icon"
msgstr "Icône"
-#: ../src/Gui/CCMainWindow.py:88
+#: ../src/Gui/CCMainWindow.py:84
msgid "Package"
msgstr "Paquet"
-#: ../src/Gui/CCMainWindow.py:89
+#: ../src/Gui/CCMainWindow.py:85
msgid "Application"
msgstr "Application"
-#: ../src/Gui/CCMainWindow.py:90
+#: ../src/Gui/CCMainWindow.py:86
msgid "Date"
msgstr "Date"
-#: ../src/Gui/CCMainWindow.py:91
+#: ../src/Gui/CCMainWindow.py:87
msgid "Crash count"
msgstr "Décompte d'incidents"
-#: ../src/Gui/CCMainWindow.py:93
+#: ../src/Gui/CCMainWindow.py:88
msgid "User"
msgstr "Utilisateur"
-#: ../src/Gui/CCMainWindow.py:160
+#: ../src/Gui/CCMainWindow.py:156
#, python-format
msgid ""
"Can't show the settings dialog\n"
@@ -185,7 +178,7 @@ msgstr ""
"Affichage de l'interface de configuration impossible\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:181
+#: ../src/Gui/CCMainWindow.py:167
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -194,23 +187,25 @@ msgstr ""
"Impossible de terminer la tâche actuelle !\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:198
+#. there is something wrong with the daemon if we cant get the dumplist
+#: ../src/Gui/CCMainWindow.py:194
#, python-format
msgid ""
-"Error while loading the dumplist, please check if abrt daemon is running\n"
-" %s"
+"Error while loading the dumplist.\n"
+"%s"
msgstr ""
-"Erreur lors du chargement de dumplist, veuillez vérifier que le démon abrt "
-"est bien en cours d'exécution\n"
+"Erreur lors du chargement de dumplist.\n"
" %s"
-#: ../src/Gui/CCMainWindow.py:238
-msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
-msgstr ""
-"<b>Cet incident a été signalé, vous pourrez trouver ce(s) rapport(s) à :</"
-"b>\n"
+#: ../src/Gui/CCMainWindow.py:231
+msgid "<b>This crash has been reported:</b>\n"
+msgstr "<b>Cet incident a été signalé :</b>\n"
+
+#: ../src/Gui/CCMainWindow.py:241
+msgid "<b>Not reported!</b>"
+msgstr "<b>Non signalé !</b>"
-#: ../src/Gui/CCMainWindow.py:298
+#: ../src/Gui/CCMainWindow.py:290
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -218,7 +213,7 @@ msgstr ""
"Impossible de trouver le rapport !\n"
"Debuginfo est manquant ?"
-#: ../src/Gui/CCMainWindow.py:318
+#: ../src/Gui/CCMainWindow.py:309
#, python-format
msgid ""
"Reporting failed!\n"
@@ -227,43 +222,52 @@ msgstr ""
"Échec de la création de rapports !\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:337 ../src/Gui/CCMainWindow.py:364
+#: ../src/Gui/CCMainWindow.py:328 ../src/Gui/CCMainWindow.py:355
#, python-format
msgid "Error getting the report: %s"
msgstr "Erreur lors de l'obtention du rapport : %s"
-#: ../src/Gui/CCReporterDialog.py:182
+#: ../src/Gui/CCReporterDialog.py:136
+#, python-format
+msgid ""
+"Can't save plugin settings:\n"
+" %s"
+msgstr ""
+"Imposible d'enregistrer la configuration de l'extension :\n"
+" %s"
+
+#: ../src/Gui/CCReporterDialog.py:194
msgid "Brief description how to reproduce this or what you did..."
msgstr ""
"Brève description de la procédure à suivre pour reproduire ceci, ou de ce "
"que vous avez fait..."
-#: ../src/Gui/CCReporterDialog.py:224
+#: ../src/Gui/CCReporterDialog.py:239
#, python-format
msgid ""
"Reporting disabled because the backtrace is unusable.\n"
-"Please try to install debuginfo manually using command:<span color=\"blue\"> "
-"debuginfo-install %s </span>\n"
+"Please try to install debuginfo manually using command: <b>debuginfo-install "
+"%s</b> \n"
"then use Refresh button to regenerate the backtrace."
msgstr ""
"Envoi du rapport désactivé car le backtrace est inutilisable.\n"
-"Veuillez installer debuginfo en utilisant la commande :<span color=\"blue\"> "
-"debuginfo-install %s </span>\n"
+"Veuillez installer debuginfo en utilisant la commande : <b> "
+"debuginfo-install %s </b>\n"
"puis utilisez le bouton de rafraichissement pour régénérer le backtrace."
-#: ../src/Gui/CCReporterDialog.py:226
-msgid "The bactrace is unusable, you can't report this!"
+#: ../src/Gui/CCReporterDialog.py:241
+msgid "The backtrace is unusable, you can't report this!"
msgstr "Le backtrace est inutilisable, vous ne pouvez pas signaler ce bogue."
-#: ../src/Gui/CCReporterDialog.py:232
+#: ../src/Gui/CCReporterDialog.py:246
msgid ""
-"The bactrace is incomplete, please make sure you provide good steps to "
+"The backtrace is incomplete, please make sure you provide good steps to "
"reproduce."
msgstr ""
"Le backtrace est incomplet, veuillez vous assurer de fournir les étapes pour "
"reproduire le bogue."
-#: ../src/Gui/CCReporterDialog.py:280
+#: ../src/Gui/CCReporterDialog.py:296
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -274,14 +278,14 @@ msgstr ""
"des informations confidentielles.\n"
"Voulez-vous vraiment envoyer <b>%s</b> ?\n"
-#: ../src/Gui/dialogs.glade.h:1
+#: ../src/Gui/dialogs.glade.h:1 ../src/Gui/report.glade.h:5
+msgid "Log"
+msgstr "Log"
+
+#: ../src/Gui/dialogs.glade.h:2
msgid "Report done"
msgstr "Rapport créé"
-#: ../src/Gui/dialogs.glade.h:2 ../src/Gui/settings.glade.h:27
-msgid "gtk-ok"
-msgstr "gtk-ok"
-
#: ../src/Gui/PluginSettingsUI.py:18
msgid "Can't find PluginDialog widget in UI description!"
msgstr ""
@@ -302,15 +306,23 @@ msgstr "la boite combinée n'est pas implémentée"
msgid "Nothing to hydrate!"
msgstr "Aucune donnée à afficher !"
+#: ../src/Gui/report.glade.h:1
+msgid " "
+msgstr " "
+
#: ../src/Gui/report.glade.h:2
-msgid "Comment"
-msgstr "Commenter"
+msgid "<b>Comment</b>"
+msgstr "<b>Commenter</b>"
#: ../src/Gui/report.glade.h:3
-msgid "How to reproduce (in a few simple steps)"
-msgstr "Comment reproduire (en quelques étapes simples)"
+msgid "<b>Following items will be sent</b>"
+msgstr "<b>Les points suivants seront envoyés</b>"
+
+#: ../src/Gui/report.glade.h:4
+msgid "<b>How to reproduce (in a few simple steps)</b>"
+msgstr "<b>Comment reproduire (en quelques étapes simples)</b>"
-#: ../src/Gui/report.glade.h:5
+#: ../src/Gui/report.glade.h:7
msgid "Send"
msgstr "Envoyer"
@@ -322,11 +334,11 @@ msgstr "<b>Sélectionnez l'extension</b>"
msgid "<b>Select database backend</b>"
msgstr "<b>Sélectionnez le moteur de base de données</b>"
-#: ../src/Gui/SettingsDialog.py:165
+#: ../src/Gui/SettingsDialog.py:166
msgid "Remove this job"
msgstr "Supprimer ce travail"
-#: ../src/Gui/SettingsDialog.py:208
+#: ../src/Gui/SettingsDialog.py:210
msgid "Remove this action"
msgstr "Supprimer cette action"
@@ -339,104 +351,92 @@ msgid "<b>Associated action</b>"
msgstr "<b>Action associée</b>"
#: ../src/Gui/settings.glade.h:3
+msgid "<b>Plugin details</b>"
+msgstr "<b>Détails de l'extension</b>"
+
+#: ../src/Gui/settings.glade.h:4
msgid "<b>Plugin</b>"
msgstr "<b>Extension</b>"
-#: ../src/Gui/settings.glade.h:4
+#: ../src/Gui/settings.glade.h:5
msgid "<b>Time (or period)</b>"
msgstr "<b>Durée (ou période)</b>"
-#: ../src/Gui/settings.glade.h:5
+#: ../src/Gui/settings.glade.h:6
msgid "Analyzers, Actions, Reporters"
msgstr "Analyseurs, actions, rapporteurs"
-#: ../src/Gui/settings.glade.h:6
+#: ../src/Gui/settings.glade.h:7
msgid "Author:"
msgstr "Auteur :"
-#: ../src/Gui/settings.glade.h:7
+#: ../src/Gui/settings.glade.h:8
msgid "Blacklisted packages: "
msgstr "Paquets sur liste noire : "
-#: ../src/Gui/settings.glade.h:8
+#: ../src/Gui/settings.glade.h:9
msgid "C_onfigure plugin"
msgstr "C_onfiguration de l'extension"
-#: ../src/Gui/settings.glade.h:9
+#: ../src/Gui/settings.glade.h:10
msgid "Check package GPG signature"
msgstr "Vérification de la signature GPG du paquet"
-#: ../src/Gui/settings.glade.h:10
+#: ../src/Gui/settings.glade.h:11
msgid "Common"
msgstr "Commun"
-#: ../src/Gui/settings.glade.h:11
+#: ../src/Gui/settings.glade.h:12
msgid "Cron"
msgstr "Cron"
-#: ../src/Gui/settings.glade.h:12
+#: ../src/Gui/settings.glade.h:13
msgid "Database backend: "
msgstr "Moteur de base de données : "
-#: ../src/Gui/settings.glade.h:13
-msgid "Edit blacklisted packages"
-msgstr "Édition des paquets sur liste noire"
-
#: ../src/Gui/settings.glade.h:14
+msgid "Description:"
+msgstr "Description :"
+
+#: ../src/Gui/settings.glade.h:15
msgid "GPG Keys"
msgstr "Clés GPG"
-#: ../src/Gui/settings.glade.h:15
+#: ../src/Gui/settings.glade.h:16
msgid "GPG keys: "
msgstr "Clés GPG :"
-#: ../src/Gui/settings.glade.h:16
+#: ../src/Gui/settings.glade.h:17
msgid "Global Settings"
msgstr "Paramètres globaux"
-#: ../src/Gui/settings.glade.h:17
+#: ../src/Gui/settings.glade.h:18
msgid "Max coredump storage size(MB):"
msgstr "Taille de stockage coredump maximal (en Mo) :"
-#: ../src/Gui/settings.glade.h:18
-msgid "Nothing selected"
-msgstr "Aucune sélection"
-
#: ../src/Gui/settings.glade.h:19
-msgid "Plugin Details"
-msgstr "Détails de l'extension"
+msgid "Name:"
+msgstr "Nom :"
#: ../src/Gui/settings.glade.h:20
msgid "Settings"
msgstr "Paramètres"
#: ../src/Gui/settings.glade.h:21
-msgid "This function is not implemented yet!"
-msgstr "Cette fonction n'est pas encore implémentée !"
-
-#: ../src/Gui/settings.glade.h:22
msgid "Version:"
msgstr "Version :"
-#: ../src/Gui/settings.glade.h:23
+#: ../src/Gui/settings.glade.h:22
msgid "Web Site:"
msgstr "Site web :"
-#: ../src/Gui/settings.glade.h:24
-msgid "gtk-add"
-msgstr "gtk-add"
-
-#: ../src/Gui/settings.glade.h:25
+#: ../src/Gui/settings.glade.h:23
msgid "gtk-cancel"
msgstr "gtk-cancel"
-#: ../src/Gui/settings.glade.h:26
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/Gui/settings.glade.h:28
-msgid "gtk-remove"
-msgstr "gtk-remove"
+#: ../src/Gui/settings.glade.h:24
+msgid "gtk-ok"
+msgstr "gtk-ok"
#: ../src/Gui/abrt.desktop.in.h:2
msgid "View and report application crashes"
@@ -447,15 +447,15 @@ msgstr "Visualiser et signaler les plantages de l'application"
msgid "A crash in package %s has been detected"
msgstr "Un incident a été détecté dans le paquet %s"
-#: ../src/Applet/Applet.cpp:253
+#: ../src/Applet/Applet.cpp:254
msgid "ABRT service is not running"
msgstr "Le service ABRT n'est pas en cours d'exécution"
-#: ../src/Applet/CCApplet.cpp:196
+#: ../src/Applet/CCApplet.cpp:204
msgid "Warning"
msgstr "Avertissement"
-#: ../src/Daemon/Daemon.cpp:520
+#: ../src/Daemon/Daemon.cpp:478
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -463,11 +463,13 @@ msgstr ""
"La taille du rapport dépasse le quota. Veuillez vérifier la valeur "
"MaxCrashReportsSize du système dans abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:202, c-format
+#: ../lib/Plugins/Bugzilla.cpp:202
+#, c-format
msgid "Bug is already reported: %i"
msgstr "Le bogue est déjà signalé : %i"
-#: ../lib/Plugins/Bugzilla.cpp:264, c-format
+#: ../lib/Plugins/Bugzilla.cpp:264
+#, c-format
msgid "New bug id: %i"
msgstr "Nouvel ID de bogue : %i"
@@ -499,31 +501,23 @@ msgstr "Déconnexion..."
msgid "Getting local universal unique identification"
msgstr "Obtention de l'UUID locale"
-#: ../lib/Plugins/CCpp.cpp:257
-msgid "Getting backtrace..."
-msgstr "Obtention du parcours arrière..."
-
-#: ../lib/Plugins/CCpp.cpp:566 ../lib/Plugins/CCpp.cpp:693
-msgid "Searching for debug-info packages..."
-msgstr "Recherche de paquets debug-info..."
+#: ../lib/Plugins/CCpp.cpp:258
+msgid "Generating backtrace"
+msgstr "Génération du parcours arrière..."
-#: ../lib/Plugins/CCpp.cpp:628 ../lib/Plugins/CCpp.cpp:727
-msgid "Downloading and installing debug-info packages..."
-msgstr "Téléchargement et installation des paquets debug-info..."
+#: ../lib/Plugins/CCpp.cpp:377
+msgid "Starting debuginfo installation"
+msgstr "Démarrage de l'installation de debuginfo"
-#: ../lib/Plugins/CCpp.cpp:832
+#: ../lib/Plugins/CCpp.cpp:527
msgid "Getting local universal unique identification..."
msgstr "Obtention de l'UUID locale..."
-#: ../lib/Plugins/CCpp.cpp:851
+#: ../lib/Plugins/CCpp.cpp:546
msgid "Getting global universal unique identification..."
msgstr "Obtention de l'UUID globale..."
-#: ../lib/Plugins/CCpp.cpp:896
-msgid "Starting report creation..."
-msgstr "Lancement de la création de rapport..."
-
-#: ../lib/Plugins/CCpp.cpp:929
+#: ../lib/Plugins/CCpp.cpp:702
msgid "Skipping debuginfo installation"
msgstr "Ignorer l'installation de debug-info"
@@ -531,27 +525,31 @@ msgstr "Ignorer l'installation de debug-info"
msgid "Creating and submitting a report..."
msgstr "Création et envoi d'un rapport..."
-#: ../lib/Plugins/Logger.cpp:65
-msgid "Creating a report..."
-msgstr "Création d'un rapport..."
+#: ../lib/Plugins/Logger.cpp:82
+#, c-format
+msgid "Writing report to '%s'"
+msgstr "Écriture du rapport à « %s »"
-#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:381
msgid "FileTransfer: URL not specified"
msgstr "Transfert de fichier : URL non spécifié"
-#: ../lib/Plugins/FileTransfer.cpp:67, c-format
+#: ../lib/Plugins/FileTransfer.cpp:67
+#, c-format
msgid "Sending archive %s to %s"
msgstr "Envoi de l'archive %s vers %s"
-#: ../lib/Plugins/FileTransfer.cpp:309
+#: ../lib/Plugins/FileTransfer.cpp:306
msgid "File Transfer: Creating a report..."
msgstr "Transfert de fichier : Création d'un rapport"
-#: ../lib/Plugins/FileTransfer.cpp:334, c-format
+#: ../lib/Plugins/FileTransfer.cpp:331
+#, c-format
msgid "Can't create and send an archive: %s"
msgstr "Impossible de créer et d'envoyer une archive : %s"
-#: ../lib/Plugins/FileTransfer.cpp:359, c-format
+#: ../lib/Plugins/FileTransfer.cpp:356
+#, c-format
msgid "Can't create and send an archive %s"
msgstr "Impossible de créer et d'envoyer une archive %s"
@@ -567,7 +565,8 @@ msgstr "Envoi d'un email..."
msgid "Executing SOSreport plugin..."
msgstr "Exécution de l'extension SOSreport..."
-#: ../lib/Plugins/SOSreport.cpp:91, c-format
+#: ../lib/Plugins/SOSreport.cpp:91
+#, c-format
msgid "running sosreport: %s"
msgstr "exécution de sosreport : %s"
@@ -575,6 +574,42 @@ msgstr "exécution de sosreport : %s"
msgid "done running sosreport"
msgstr "exécution de sosreport terminée"
+#~ msgid "<span color=\"white\">Description</span>"
+#~ msgstr "<span color=\"white\">Description</span>"
+
+#~ msgid "Working..."
+#~ msgstr "Traitement en cours..."
+
+#~ msgid "Edit blacklisted packages"
+#~ msgstr "Édition des paquets sur liste noire"
+
+#~ msgid "Nothing selected"
+#~ msgstr "Aucune sélection"
+
+#~ msgid "This function is not implemented yet!"
+#~ msgstr "Cette fonction n'est pas encore implémentée !"
+
+#~ msgid "gtk-add"
+#~ msgstr "gtk-add"
+
+#~ msgid "gtk-close"
+#~ msgstr "gtk-close"
+
+#~ msgid "gtk-remove"
+#~ msgstr "gtk-remove"
+
+#~ msgid "Searching for debug-info packages..."
+#~ msgstr "Recherche de paquets debug-info..."
+
+#~ msgid "Downloading and installing debug-info packages..."
+#~ msgstr "Téléchargement et installation des paquets debug-info..."
+
+#~ msgid "Starting report creation..."
+#~ msgstr "Lancement de la création de rapport..."
+
+#~ msgid "Creating a report..."
+#~ msgstr "Création d'un rapport..."
+
#~ msgid "Can't get username for uid %s"
#~ msgstr "Impossible d'obtenir le nom d'utilisateur pour l'uid %s"
diff --git a/po/he.po b/po/he.po
index aceb5f7..1495682 100644
--- a/po/he.po
+++ b/po/he.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ABRT\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-12-17 10:27+0000\n"
+"POT-Creation-Date: 2010-01-18 09:58+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: Elad <el.il@doom.co.il>\n"
"Language-Team: Hebrew <fedora-he-list@redhat.com>\n"
@@ -21,26 +21,26 @@ msgstr "לקוח אחר כבר רץ, מנסה להעיר אותו."
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "מידע לא צפוי הוחזר מתהליך הרקע (האם מסד הנתונים מעודכן כראוי?)"
-#: ../src/Gui/ABRTPlugin.py:55
+#: ../src/Gui/ABRTPlugin.py:56
+msgid "Not loaded plugins"
+msgstr "תוספים לא טעונים"
+
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Analyzer plugins"
msgstr "תוספי ניתוח"
-#: ../src/Gui/ABRTPlugin.py:56
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Action plugins"
msgstr "תוספי פעולות"
-#: ../src/Gui/ABRTPlugin.py:57
+#: ../src/Gui/ABRTPlugin.py:59
msgid "Reporter plugins"
msgstr "תוספי דיווח"
-#: ../src/Gui/ABRTPlugin.py:58
+#: ../src/Gui/ABRTPlugin.py:60
msgid "Database plugins"
msgstr "תוספי מסד-נתונים"
-#: ../src/Gui/ABRTPlugin.py:97
-msgid "Plugin name is not set, can't load its settings"
-msgstr "שם התוסף לא הוגדר, לא ניתן לטעון את ההגדרות שלו"
-
#: ../src/Gui/CCDBusBackend.py:74
#: ../src/Gui/CCDBusBackend.py:97
msgid "Can't connect to system dbus"
@@ -124,31 +124,31 @@ msgid "_Help"
msgstr "ע_זרה"
#. add pixbuff separatelly
-#: ../src/Gui/CCMainWindow.py:71
+#: ../src/Gui/CCMainWindow.py:77
msgid "Icon"
msgstr "סמל"
-#: ../src/Gui/CCMainWindow.py:79
+#: ../src/Gui/CCMainWindow.py:85
msgid "Package"
msgstr "חבילה"
-#: ../src/Gui/CCMainWindow.py:80
+#: ../src/Gui/CCMainWindow.py:86
msgid "Application"
msgstr "יישום"
-#: ../src/Gui/CCMainWindow.py:81
+#: ../src/Gui/CCMainWindow.py:87
msgid "Date"
msgstr "תאריך"
-#: ../src/Gui/CCMainWindow.py:82
+#: ../src/Gui/CCMainWindow.py:88
msgid "Crash count"
msgstr "מספר קריסות"
-#: ../src/Gui/CCMainWindow.py:83
+#: ../src/Gui/CCMainWindow.py:89
msgid "User"
msgstr "משתמש"
-#: ../src/Gui/CCMainWindow.py:149
+#: ../src/Gui/CCMainWindow.py:157
#, python-format
msgid ""
"Can't show the settings dialog\n"
@@ -157,7 +157,7 @@ msgstr ""
"לא ניתן להציג את חלון ההגדרות\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:160
+#: ../src/Gui/CCMainWindow.py:168
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -167,7 +167,7 @@ msgstr ""
"%s"
#. there is something wrong with the daemon if we cant get the dumplist
-#: ../src/Gui/CCMainWindow.py:187
+#: ../src/Gui/CCMainWindow.py:195
#, python-format
msgid ""
"Error while loading the dumplist.\n"
@@ -176,15 +176,15 @@ msgstr ""
"שגיאה במהלך טעינת dumplist.\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:224
+#: ../src/Gui/CCMainWindow.py:232
msgid "<b>This crash has been reported:</b>\n"
msgstr "<b>הקריסה הזאת דווחה:</b>\n"
-#: ../src/Gui/CCMainWindow.py:234
+#: ../src/Gui/CCMainWindow.py:244
msgid "<b>Not reported!</b>"
msgstr "<b>לא דווח!</b>"
-#: ../src/Gui/CCMainWindow.py:283
+#: ../src/Gui/CCMainWindow.py:293
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -192,7 +192,7 @@ msgstr ""
"לא ניתן להשיג דיווח\n"
"מידע ניפוי שגיאות חסר?"
-#: ../src/Gui/CCMainWindow.py:302
+#: ../src/Gui/CCMainWindow.py:319
#, python-format
msgid ""
"Reporting failed!\n"
@@ -201,8 +201,8 @@ msgstr ""
"הדיווח נכשל!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:321
-#: ../src/Gui/CCMainWindow.py:348
+#: ../src/Gui/CCMainWindow.py:338
+#: ../src/Gui/CCMainWindow.py:365
#, python-format
msgid "Error getting the report: %s"
msgstr "שגיאה בקבלת הדיווח: %s"
@@ -424,45 +424,45 @@ msgstr "קריסה בחבילה %s התגלתה"
msgid "ABRT service is not running"
msgstr "שירות ABRT לא פועל"
-#: ../src/Applet/CCApplet.cpp:196
+#: ../src/Applet/CCApplet.cpp:200
msgid "Warning"
msgstr "אזהרה"
-#: ../src/Daemon/Daemon.cpp:473
+#: ../src/Daemon/Daemon.cpp:474
msgid "Report size exceeded the quota. Please check system's MaxCrashReportsSize value in abrt.conf."
msgstr "גודל הדיווח חרג מהמכסה. אנא בדוק את ערך ההגדרה MaxCrashReportsSize בקובץ abrt.conf"
-#: ../lib/Plugins/Bugzilla.cpp:202
+#: ../lib/Plugins/Bugzilla.cpp:265
#, c-format
msgid "Bug is already reported: %i"
msgstr "הבאג דווח בעבר: %i"
-#: ../lib/Plugins/Bugzilla.cpp:264
+#: ../lib/Plugins/Bugzilla.cpp:341
#, c-format
msgid "New bug id: %i"
msgstr "מזהה באג חדש: %i"
-#: ../lib/Plugins/Bugzilla.cpp:359
+#: ../lib/Plugins/Bugzilla.cpp:442
msgid "Checking for duplicates..."
msgstr "מחפש כפילויות..."
-#: ../lib/Plugins/Bugzilla.cpp:362
+#: ../lib/Plugins/Bugzilla.cpp:445
msgid "Logging into bugzilla..."
msgstr "מתחבר לבאגזילה..."
-#: ../lib/Plugins/Bugzilla.cpp:366
+#: ../lib/Plugins/Bugzilla.cpp:449
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "שם משתמש וסיסמה ריקים. אנא בדוק את הקובץ bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:372
+#: ../lib/Plugins/Bugzilla.cpp:455
msgid "Checking CC..."
msgstr "בודק שדה CC..."
-#: ../lib/Plugins/Bugzilla.cpp:381
+#: ../lib/Plugins/Bugzilla.cpp:464
msgid "Creating new bug..."
msgstr "יוצר באג חדש..."
-#: ../lib/Plugins/Bugzilla.cpp:385
+#: ../lib/Plugins/Bugzilla.cpp:468
msgid "Logging out..."
msgstr "מתנתק..."
@@ -474,19 +474,19 @@ msgstr "מקבל זהות מקומית ייחודית"
msgid "Generating backtrace"
msgstr "יוצר מידע קריסה"
-#: ../lib/Plugins/CCpp.cpp:375
+#: ../lib/Plugins/CCpp.cpp:376
msgid "Starting debuginfo installation"
msgstr "מתחיל התקנת מידע ניפוי שגיאות"
-#: ../lib/Plugins/CCpp.cpp:525
+#: ../lib/Plugins/CCpp.cpp:527
msgid "Getting local universal unique identification..."
msgstr "מקבל זהות מקומית ייחודית..."
-#: ../lib/Plugins/CCpp.cpp:544
+#: ../lib/Plugins/CCpp.cpp:546
msgid "Getting global universal unique identification..."
msgstr "מקבל זהות גלובלית ייחודית..."
-#: ../lib/Plugins/CCpp.cpp:686
+#: ../lib/Plugins/CCpp.cpp:725
msgid "Skipping debuginfo installation"
msgstr "מדלג על התקנת מידע ניפוי שגיאות"
@@ -500,7 +500,7 @@ msgid "Writing report to '%s'"
msgstr "כותב דיווח ל'%s'"
#: ../lib/Plugins/FileTransfer.cpp:63
-#: ../lib/Plugins/FileTransfer.cpp:381
+#: ../lib/Plugins/FileTransfer.cpp:372
msgid "FileTransfer: URL not specified"
msgstr "העברת קובץ: כתובת לא צוינה"
@@ -509,16 +509,16 @@ msgstr "העברת קובץ: כתובת לא צוינה"
msgid "Sending archive %s to %s"
msgstr "שולח ארכיון %s ל-%s"
-#: ../lib/Plugins/FileTransfer.cpp:306
+#: ../lib/Plugins/FileTransfer.cpp:296
msgid "File Transfer: Creating a report..."
msgstr "העברת קובץ: יוצר דיווח..."
-#: ../lib/Plugins/FileTransfer.cpp:331
+#: ../lib/Plugins/FileTransfer.cpp:322
#, c-format
msgid "Can't create and send an archive: %s"
msgstr "לא יכול ליצור ולשלוח ארכיון: %s"
-#: ../lib/Plugins/FileTransfer.cpp:356
+#: ../lib/Plugins/FileTransfer.cpp:347
#, c-format
msgid "Can't create and send an archive %s"
msgstr "לא יכול ליצור ולשלוח ארכיון %s"
@@ -527,7 +527,7 @@ msgstr "לא יכול ליצור ולשלוח ארכיון %s"
msgid "Creating kernel oops crash reports..."
msgstr "יוצר דיווחי קריסה של kernel oops..."
-#: ../lib/Plugins/Mailx.cpp:164
+#: ../lib/Plugins/Mailx.cpp:147
msgid "Sending an email..."
msgstr "שולח דוא\"ל"
@@ -540,10 +540,12 @@ msgstr "מריץ את תוסף SOSreport..."
msgid "running sosreport: %s"
msgstr "מריץ sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:95
+#: ../lib/Plugins/SOSreport.cpp:97
msgid "done running sosreport"
msgstr "הרצת sosreport הסתיימה"
+#~ msgid "Plugin name is not set, can't load its settings"
+#~ msgstr "שם התוסף לא הוגדר, לא ניתן לטעון את ההגדרות שלו"
#~ msgid "Searching for debug-info packages..."
#~ msgstr "מחפש חבילות debug-info..."
#~ msgid "Downloading and installing debug-info packages..."
diff --git a/po/nl.po b/po/nl.po
index d1db543..c66b3bd 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,14 +6,14 @@
#
# Geert Warrink <geert.warrink@onsnet.nu>, 2009.
# Richard van der Luit <nippur@fedoraproject.org>, 2009.
-# Geert Warrink <geert.warrink@onsnet.nu>, 2009.
+# Geert Warrink <geert.warrink@onsnet.nu>, 2009, 2010.
#: ../src/Gui/CCReporterDialog.py:208
msgid ""
msgstr ""
"Project-Id-Version: abrt.master\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-12-15 16:54+0000\n"
-"PO-Revision-Date: 2009-12-15 18:05+0100\n"
+"POT-Creation-Date: 2010-01-14 15:35+0000\n"
+"PO-Revision-Date: 2010-01-14 17:50+0100\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
"Language-Team: nl <fedora-trans-list@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -31,23 +31,27 @@ msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr ""
"Kreeg niet verwachte data van daemon (is de database correct vernieuwd?)."
-#: ../src/Gui/ABRTPlugin.py:55
+#: ../src/Gui/ABRTPlugin.py:56
+msgid "Not loaded plugins"
+msgstr "Niet geladen plugins"
+
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Analyzer plugins"
msgstr "Analyse plugins"
-#: ../src/Gui/ABRTPlugin.py:56
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Action plugins"
msgstr "Actie plugins"
-#: ../src/Gui/ABRTPlugin.py:57
+#: ../src/Gui/ABRTPlugin.py:59
msgid "Reporter plugins"
msgstr "Rapporteer plugins"
-#: ../src/Gui/ABRTPlugin.py:58
+#: ../src/Gui/ABRTPlugin.py:60
msgid "Database plugins"
msgstr "Databse plugins"
-#: ../src/Gui/ABRTPlugin.py:97
+#: ../src/Gui/ABRTPlugin.py:99
msgid "Plugin name is not set, can't load its settings"
msgstr "Plugin naam is niet ingesteld, kan zijn instellingen niet laden"
@@ -144,31 +148,31 @@ msgid "_Help"
msgstr "_Hulp"
#. add pixbuff separatelly
-#: ../src/Gui/CCMainWindow.py:71
+#: ../src/Gui/CCMainWindow.py:76
msgid "Icon"
msgstr "Icoon"
-#: ../src/Gui/CCMainWindow.py:79
+#: ../src/Gui/CCMainWindow.py:84
msgid "Package"
msgstr "Pakket"
-#: ../src/Gui/CCMainWindow.py:80
+#: ../src/Gui/CCMainWindow.py:85
msgid "Application"
msgstr "Toepassing"
-#: ../src/Gui/CCMainWindow.py:81
+#: ../src/Gui/CCMainWindow.py:86
msgid "Date"
msgstr "Datum"
-#: ../src/Gui/CCMainWindow.py:82
+#: ../src/Gui/CCMainWindow.py:87
msgid "Crash count"
msgstr "Crash count"
-#: ../src/Gui/CCMainWindow.py:83
+#: ../src/Gui/CCMainWindow.py:88
msgid "User"
msgstr "Gebruiker"
-#: ../src/Gui/CCMainWindow.py:149
+#: ../src/Gui/CCMainWindow.py:156
#, python-format
msgid ""
"Can't show the settings dialog\n"
@@ -177,7 +181,7 @@ msgstr ""
"Kan de instellingen dialoog niet tonen\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:160
+#: ../src/Gui/CCMainWindow.py:167
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -187,7 +191,7 @@ msgstr ""
"%s"
#. there is something wrong with the daemon if we cant get the dumplist
-#: ../src/Gui/CCMainWindow.py:187
+#: ../src/Gui/CCMainWindow.py:194
#, python-format
msgid ""
"Error while loading the dumplist.\n"
@@ -196,15 +200,15 @@ msgstr ""
"Fout tijdens het laden van de dumplijst.\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:224
+#: ../src/Gui/CCMainWindow.py:231
msgid "<b>This crash has been reported:</b>\n"
msgstr "<b>Deze crash is gerapporteerd:</b>\n"
-#: ../src/Gui/CCMainWindow.py:234
+#: ../src/Gui/CCMainWindow.py:241
msgid "<b>Not reported!</b>"
msgstr "<b>Niet gerapporteerd!</b>"
-#: ../src/Gui/CCMainWindow.py:283
+#: ../src/Gui/CCMainWindow.py:290
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -212,7 +216,7 @@ msgstr ""
"Kan geen rapport krijgen!\n"
"Mist debuginfo?"
-#: ../src/Gui/CCMainWindow.py:302
+#: ../src/Gui/CCMainWindow.py:309
#, python-format
msgid ""
"Reporting failed!\n"
@@ -221,7 +225,7 @@ msgstr ""
"Rapporteren mislukte!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:321 ../src/Gui/CCMainWindow.py:348
+#: ../src/Gui/CCMainWindow.py:328 ../src/Gui/CCMainWindow.py:355
#, python-format
msgid "Error getting the report: %s"
msgstr "Fout tijdens het verkrijgen van het rapport: %s"
@@ -446,11 +450,11 @@ msgstr "Een crash in pakket %s is ontdekt"
msgid "ABRT service is not running"
msgstr "ABRT service draait niet"
-#: ../src/Applet/CCApplet.cpp:196
+#: ../src/Applet/CCApplet.cpp:200
msgid "Warning"
msgstr "Waarschuwing"
-#: ../src/Daemon/Daemon.cpp:473
+#: ../src/Daemon/Daemon.cpp:474
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -458,37 +462,37 @@ msgstr ""
"Rapport grootte overschreed quota. Controleer a.u.b. MaxCrashReportsSize "
"waarde van het systeem in abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:202
+#: ../lib/Plugins/Bugzilla.cpp:265
#, c-format
msgid "Bug is already reported: %i"
msgstr "Bug is al aangemeld: %i"
-#: ../lib/Plugins/Bugzilla.cpp:264
+#: ../lib/Plugins/Bugzilla.cpp:341
#, c-format
msgid "New bug id: %i"
msgstr "Nieuwe bug id: %i"
-#: ../lib/Plugins/Bugzilla.cpp:359
+#: ../lib/Plugins/Bugzilla.cpp:442
msgid "Checking for duplicates..."
msgstr "Controleren voor dubbele..."
-#: ../lib/Plugins/Bugzilla.cpp:362
+#: ../lib/Plugins/Bugzilla.cpp:445
msgid "Logging into bugzilla..."
msgstr "Inloggen bij bugzilla..."
-#: ../lib/Plugins/Bugzilla.cpp:366
+#: ../lib/Plugins/Bugzilla.cpp:449
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Leeg login en wachtwoord. Check a.u.b. Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:372
+#: ../lib/Plugins/Bugzilla.cpp:455
msgid "Checking CC..."
msgstr "Controleren van CC..."
-#: ../lib/Plugins/Bugzilla.cpp:381
+#: ../lib/Plugins/Bugzilla.cpp:464
msgid "Creating new bug..."
msgstr "Nieuwe bug aanmaken..."
-#: ../lib/Plugins/Bugzilla.cpp:385
+#: ../lib/Plugins/Bugzilla.cpp:468
msgid "Logging out..."
msgstr "Uitloggen..."
@@ -496,23 +500,23 @@ msgstr "Uitloggen..."
msgid "Getting local universal unique identification"
msgstr "Verkrijgen van locale universele unieke identificatie"
-#: ../lib/Plugins/CCpp.cpp:254
+#: ../lib/Plugins/CCpp.cpp:257
msgid "Generating backtrace"
msgstr "Aangemaakte backtrace"
-#: ../lib/Plugins/CCpp.cpp:372
+#: ../lib/Plugins/CCpp.cpp:376
msgid "Starting debuginfo installation"
msgstr "Start debuginfo installatie"
-#: ../lib/Plugins/CCpp.cpp:522
+#: ../lib/Plugins/CCpp.cpp:527
msgid "Getting local universal unique identification..."
msgstr "Verkrijgen van locale universele unieke identificatie..."
-#: ../lib/Plugins/CCpp.cpp:541
+#: ../lib/Plugins/CCpp.cpp:546
msgid "Getting global universal unique identification..."
msgstr "Verkrijgen van golbale universele unieke identificatie..."
-#: ../lib/Plugins/CCpp.cpp:683
+#: ../lib/Plugins/CCpp.cpp:725
msgid "Skipping debuginfo installation"
msgstr "Sla debuginfo installatie over"
@@ -525,7 +529,7 @@ msgstr "Aanmaken en indienen van rapport..."
msgid "Writing report to '%s'"
msgstr "Rapport schrijven naar: '%s'"
-#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:385
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:372
msgid "FileTransfer: URL not specified"
msgstr "Bestandsoverdracht: URL niet opgegeven"
@@ -534,16 +538,16 @@ msgstr "Bestandsoverdracht: URL niet opgegeven"
msgid "Sending archive %s to %s"
msgstr "Versturen van archief %s naar %s"
-#: ../lib/Plugins/FileTransfer.cpp:310
+#: ../lib/Plugins/FileTransfer.cpp:296
msgid "File Transfer: Creating a report..."
msgstr "Bestandsoverdracht: Een rapport maken..."
-#: ../lib/Plugins/FileTransfer.cpp:335
+#: ../lib/Plugins/FileTransfer.cpp:322
#, c-format
msgid "Can't create and send an archive: %s"
msgstr "Kan geen archief maken en versturen: %s"
-#: ../lib/Plugins/FileTransfer.cpp:360
+#: ../lib/Plugins/FileTransfer.cpp:347
#, c-format
msgid "Can't create and send an archive %s"
msgstr "Kan archief %s niet aanmaken en versturen"
@@ -552,7 +556,7 @@ msgstr "Kan archief %s niet aanmaken en versturen"
msgid "Creating kernel oops crash reports..."
msgstr "Aanmaken van kernel oops crash rapporten..."
-#: ../lib/Plugins/Mailx.cpp:164
+#: ../lib/Plugins/Mailx.cpp:147
msgid "Sending an email..."
msgstr "Versturen van email..."
@@ -565,7 +569,7 @@ msgstr "Uitvoeren van SOSreport plugin..."
msgid "running sosreport: %s"
msgstr "sosreport draaien: %s"
-#: ../lib/Plugins/SOSreport.cpp:95
+#: ../lib/Plugins/SOSreport.cpp:97
msgid "done running sosreport"
msgstr "klaar met het draaien van sosreport"
diff --git a/po/pl.po b/po/pl.po
index 686692a..ec40469 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,10 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-12-19 09:12+0000\n"
-"PO-Revision-Date: 2009-12-19 10:37+0100\n"
+"POT-Creation-Date: 2010-01-14 20:43+0000\n"
+"PO-Revision-Date: 2010-01-14 22:51+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
-"Language-Team: Polish <fedora-trans-pl@redhat.com>\n"
+"Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -25,26 +25,26 @@ msgstr ""
"Otrzymano nieoczekiwane dane od demona (czy baza danych została właściwie "
"zaktualizowana?)."
-#: ../src/Gui/ABRTPlugin.py:55
+#: ../src/Gui/ABRTPlugin.py:56
+msgid "Not loaded plugins"
+msgstr "Nie wczytano wtyczek"
+
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Analyzer plugins"
msgstr "Wtyczki analizy"
-#: ../src/Gui/ABRTPlugin.py:56
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Action plugins"
msgstr "Wtyczki działań"
-#: ../src/Gui/ABRTPlugin.py:57
+#: ../src/Gui/ABRTPlugin.py:59
msgid "Reporter plugins"
msgstr "Wtyczki zgłaszania"
-#: ../src/Gui/ABRTPlugin.py:58
+#: ../src/Gui/ABRTPlugin.py:60
msgid "Database plugins"
msgstr "Wtyczki baz danych"
-#: ../src/Gui/ABRTPlugin.py:97
-msgid "Plugin name is not set, can't load its settings"
-msgstr "Nie ustawiono nazwy wtyczki, nie można wczytać jej ustawień"
-
#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
msgid "Can't connect to system dbus"
msgstr "Nie można połączyć się z systemową magistralą D-Bus"
@@ -140,31 +140,31 @@ msgid "_Help"
msgstr "Pomo_c"
#. add pixbuff separatelly
-#: ../src/Gui/CCMainWindow.py:71
+#: ../src/Gui/CCMainWindow.py:77
msgid "Icon"
msgstr "Ikona"
-#: ../src/Gui/CCMainWindow.py:79
+#: ../src/Gui/CCMainWindow.py:85
msgid "Package"
msgstr "Pakiet"
-#: ../src/Gui/CCMainWindow.py:80
+#: ../src/Gui/CCMainWindow.py:86
msgid "Application"
msgstr "Aplikacja"
-#: ../src/Gui/CCMainWindow.py:81
+#: ../src/Gui/CCMainWindow.py:87
msgid "Date"
msgstr "Data"
-#: ../src/Gui/CCMainWindow.py:82
+#: ../src/Gui/CCMainWindow.py:88
msgid "Crash count"
msgstr "Liczba awarii"
-#: ../src/Gui/CCMainWindow.py:83
+#: ../src/Gui/CCMainWindow.py:89
msgid "User"
msgstr "Użytkownik"
-#: ../src/Gui/CCMainWindow.py:149
+#: ../src/Gui/CCMainWindow.py:157
#, python-format
msgid ""
"Can't show the settings dialog\n"
@@ -173,7 +173,7 @@ msgstr ""
"Nie można wyświetlić okna dialogowego ustawień\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:160
+#: ../src/Gui/CCMainWindow.py:168
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -183,7 +183,7 @@ msgstr ""
"%s"
#. there is something wrong with the daemon if we cant get the dumplist
-#: ../src/Gui/CCMainWindow.py:187
+#: ../src/Gui/CCMainWindow.py:195
#, python-format
msgid ""
"Error while loading the dumplist.\n"
@@ -192,15 +192,15 @@ msgstr ""
"Błąd podczas wczytywania listy zrzutów.\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:224
+#: ../src/Gui/CCMainWindow.py:232
msgid "<b>This crash has been reported:</b>\n"
msgstr "<b>Ta awaria została zgłoszona:</b>\n"
-#: ../src/Gui/CCMainWindow.py:234
+#: ../src/Gui/CCMainWindow.py:242
msgid "<b>Not reported!</b>"
msgstr "<b>Nie zgłoszono.</b>"
-#: ../src/Gui/CCMainWindow.py:283
+#: ../src/Gui/CCMainWindow.py:291
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -208,7 +208,7 @@ msgstr ""
"Nie można uzyskać raportu.\n"
"Brak pakietów debuginfo?"
-#: ../src/Gui/CCMainWindow.py:302
+#: ../src/Gui/CCMainWindow.py:310
#, python-format
msgid ""
"Reporting failed!\n"
@@ -217,7 +217,7 @@ msgstr ""
"Zgłoszenie nie powiodło się.\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:321 ../src/Gui/CCMainWindow.py:348
+#: ../src/Gui/CCMainWindow.py:329 ../src/Gui/CCMainWindow.py:356
#, python-format
msgid "Error getting the report: %s"
msgstr "Błąd podczas uzyskiwania raportu: %s"
@@ -447,11 +447,11 @@ msgstr "Wykryto awarię pakietu %s"
msgid "ABRT service is not running"
msgstr "Usługa ABRT nie jest uruchomiona"
-#: ../src/Applet/CCApplet.cpp:196
+#: ../src/Applet/CCApplet.cpp:200
msgid "Warning"
msgstr "Ostrzeżenie"
-#: ../src/Daemon/Daemon.cpp:478
+#: ../src/Daemon/Daemon.cpp:474
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -459,37 +459,37 @@ msgstr ""
"Wielkość raportu przekroczyła dozwolone ograniczenie. Proszę sprawdzić "
"wartość zmiennej MaxCrashReportsSize w pliku abrt.conf"
-#: ../lib/Plugins/Bugzilla.cpp:202
+#: ../lib/Plugins/Bugzilla.cpp:265
#, c-format
msgid "Bug is already reported: %i"
msgstr "Błąd został już wcześniej zgłoszony: %i"
-#: ../lib/Plugins/Bugzilla.cpp:264
+#: ../lib/Plugins/Bugzilla.cpp:341
#, c-format
msgid "New bug id: %i"
msgstr "Identyfikator nowego błędu: %i"
-#: ../lib/Plugins/Bugzilla.cpp:359
+#: ../lib/Plugins/Bugzilla.cpp:442
msgid "Checking for duplicates..."
msgstr "Sprawdzanie duplikatów..."
-#: ../lib/Plugins/Bugzilla.cpp:362
+#: ../lib/Plugins/Bugzilla.cpp:445
msgid "Logging into bugzilla..."
msgstr "Logowanie do Bugzilli..."
-#: ../lib/Plugins/Bugzilla.cpp:366
+#: ../lib/Plugins/Bugzilla.cpp:449
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Pola login i hasło są puste. Proszę sprawdzić plik Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:372
+#: ../lib/Plugins/Bugzilla.cpp:455
msgid "Checking CC..."
msgstr "Sprawdzanie listy CC..."
-#: ../lib/Plugins/Bugzilla.cpp:381
+#: ../lib/Plugins/Bugzilla.cpp:464
msgid "Creating new bug..."
msgstr "Dodawanie nowego błędu..."
-#: ../lib/Plugins/Bugzilla.cpp:385
+#: ../lib/Plugins/Bugzilla.cpp:468
msgid "Logging out..."
msgstr "Wylogowywanie..."
@@ -501,19 +501,19 @@ msgstr "Uzyskiwanie lokalnego uniwersalnego, unikalnego identyfikatora"
msgid "Generating backtrace"
msgstr "Tworzenie wyjątku"
-#: ../lib/Plugins/CCpp.cpp:375
+#: ../lib/Plugins/CCpp.cpp:376
msgid "Starting debuginfo installation"
msgstr "Uruchamianie instalacji pakietów debuginfo"
-#: ../lib/Plugins/CCpp.cpp:525
+#: ../lib/Plugins/CCpp.cpp:527
msgid "Getting local universal unique identification..."
msgstr "Uzyskiwanie lokalnego uniwersalnego, unikalnego identyfikatora..."
-#: ../lib/Plugins/CCpp.cpp:544
+#: ../lib/Plugins/CCpp.cpp:546
msgid "Getting global universal unique identification..."
msgstr "Uzyskiwanie globalnego uniwersalnego, unikalnego identyfikatora..."
-#: ../lib/Plugins/CCpp.cpp:687
+#: ../lib/Plugins/CCpp.cpp:725
msgid "Skipping debuginfo installation"
msgstr "Pomijanie instalacji pakietu debuginfo"
@@ -526,7 +526,7 @@ msgstr "Tworzenie i wysyłanie raportu..."
msgid "Writing report to '%s'"
msgstr "Zapisywanie raportu do \"%s\""
-#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:381
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:372
msgid "FileTransfer: URL not specified"
msgstr "Wtyczka przesyłania plików: nie podano adresu URL"
@@ -535,16 +535,16 @@ msgstr "Wtyczka przesyłania plików: nie podano adresu URL"
msgid "Sending archive %s to %s"
msgstr "Wysyłanie archiwum %s do %s"
-#: ../lib/Plugins/FileTransfer.cpp:306
+#: ../lib/Plugins/FileTransfer.cpp:296
msgid "File Transfer: Creating a report..."
msgstr "Wtyczka przesyłania plików: tworzenie raportu..."
-#: ../lib/Plugins/FileTransfer.cpp:331
+#: ../lib/Plugins/FileTransfer.cpp:322
#, c-format
msgid "Can't create and send an archive: %s"
msgstr "Nie można utworzyć i wysłać archiwum: %s"
-#: ../lib/Plugins/FileTransfer.cpp:356
+#: ../lib/Plugins/FileTransfer.cpp:347
#, c-format
msgid "Can't create and send an archive %s"
msgstr "Nie można utworzyć i wysłać archiwum %s"
@@ -553,7 +553,7 @@ msgstr "Nie można utworzyć i wysłać archiwum %s"
msgid "Creating kernel oops crash reports..."
msgstr "Tworzenie raportów awarii \"kernel oops\""
-#: ../lib/Plugins/Mailx.cpp:164
+#: ../lib/Plugins/Mailx.cpp:147
msgid "Sending an email..."
msgstr "Wysłanie wiadomości e-mail..."
@@ -566,6 +566,6 @@ msgstr "Wykonywanie wtyczki SOSreport..."
msgid "running sosreport: %s"
msgstr "wykonywanie sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:95
+#: ../lib/Plugins/SOSreport.cpp:97
msgid "done running sosreport"
msgstr "ukończono wykonywanie sosreport"
diff --git a/scripts/abrt-bz-stats b/scripts/abrt-bz-stats
new file mode 100755
index 0000000..2923665
--- /dev/null
+++ b/scripts/abrt-bz-stats
@@ -0,0 +1,79 @@
+#!/usr/bin/python
+# -*- mode:python -*-
+
+from bugzilla import RHBugzilla
+from optparse import OptionParser
+import sys
+import os.path
+import subprocess
+import datetime
+import pickle
+
+parser = OptionParser(version="%prog 1.0")
+parser.add_option("-u", "--user", dest="user",
+ help="Bugzilla user name (REQUIRED)", metavar="USERNAME")
+parser.add_option("-p", "--password", dest="password",
+ help="Bugzilla password (REQUIRED)", metavar="PASSWORD")
+parser.add_option("-b", "--bugzilla", dest="bugzilla",
+ help="Bugzilla URL (defaults to Red Hat Bugzilla)", metavar="URL")
+(options, args) = parser.parse_args()
+
+if not options.user or len(options.user) == 0:
+ parser.error("User name is required.\nTry {0} --help".format(sys.argv[0]))
+if not options.password or len(options.password) == 0:
+ parser.error("Password is required.\nTry {0} --help".format(sys.argv[0]))
+if not options.bugzilla or len(options.bugzilla) == 0:
+ options.bugzilla = "https://bugzilla.redhat.com/xmlrpc.cgi"
+
+bz = RHBugzilla()
+bz.connect(options.bugzilla)
+bz.login(options.user, options.password)
+
+buginfos = bz.query({'status_whiteboard_type':'allwordssubstr','status_whiteboard':'abrt_hash'})
+total = len(buginfos)
+print "{0} bugs found.".format(total)
+
+buginfos_loaded = {}
+if os.path.isfile("cache"):
+ f = open("cache", 'r')
+ buginfos_loaded = pickle.load(f)
+ f.close()
+
+count = 0
+for buginfo in buginfos:
+ count += 1
+ print "{0}/{1}".format(count, total)
+ dtkey = buginfo.delta_ts[0:7] # YEAR-MONTH
+ statuskey = buginfo.bug_status
+ if buginfo.resolution != "":
+ statuskey += "_" + buginfo.resolution
+ if not buginfos_loaded.has_key(buginfo.bug_id):
+ buginfos_loaded[buginfo.bug_id] = (dtkey, statuskey)
+ if count % 100 == 0:
+ f = open("cache", 'w')
+ pickle.dump(buginfos_loaded, f, 2)
+ f.close()
+bz.logout()
+
+stats = {}
+for buginfo in buginfos_loaded.values():
+ if buginfo[0] in stats:
+ stat = stats[buginfo[0]]
+ if buginfo[1] in stat:
+ stat[buginfo[1]] += 1
+ else:
+ stat[buginfo[1]] = 1
+ else:
+ stats[buginfo[0]] = { buginfo[1]:1 }
+
+print "STATS"
+print "=========================================================================="
+months = stats.keys()
+months.sort()
+for month in months:
+ stat = stats[month]
+ statuses = stat.keys()
+ statuses.sort()
+ print "Month ", month
+ for status in statuses:
+ print status, stat[status]
diff --git a/src/CLI/dbus.cpp b/src/CLI/dbus.cpp
index b218679..0d03c4d 100644
--- a/src/CLI/dbus.cpp
+++ b/src/CLI/dbus.cpp
@@ -184,7 +184,8 @@ int32_t call_DeleteDebugDump(const char* uuid)
return result;
}
-vector_map_string_t call_GetPluginsInfo()
+#ifdef UNUSED
+map_map_string_t call_GetPluginsInfo()
{
DBusMessage *msg = new_call_msg(__func__ + 5);
DBusMessage *reply = send_get_reply_and_unref(msg);
@@ -192,7 +193,7 @@ vector_map_string_t call_GetPluginsInfo()
DBusMessageIter in_iter;
dbus_message_iter_init(reply, &in_iter);
- vector_map_string_t argout;
+ map_map_string_t argout;
int r = load_val(&in_iter, argout);
if (r != ABRT_DBUS_LAST_FIELD) /* more values present, or bad type */
error_msg_and_die("dbus call %s: return type mismatch", __func__ + 5);
@@ -200,6 +201,7 @@ vector_map_string_t call_GetPluginsInfo()
dbus_message_unref(reply);
return argout;
}
+#endif
void handle_dbus_err(bool error_flag, DBusError *err)
{
diff --git a/src/CLI/dbus.h b/src/CLI/dbus.h
index 3c157c0..c692e19 100644
--- a/src/CLI/dbus.h
+++ b/src/CLI/dbus.h
@@ -28,15 +28,17 @@ map_crash_report_t call_CreateReport(const char *uuid);
report_status_t call_Report(const map_crash_report_t& report);
int32_t call_DeleteDebugDump(const char* uuid);
+#ifdef UNUSED
/* Gets basic data about all installed plugins.
*/
-vector_map_string_t call_GetPluginsInfo();
+map_map_string_t call_GetPluginsInfo();
/** Gets default plugin settings.
* @param name
- * Corresponds to name obtained from call_GetPluginsInfo.
+ * Corresponds to name obtained from call_GetPluginsInfo.
*/
map_plugin_settings_t call_GetPluginSettings(const char *name);
+#endif
void handle_dbus_err(bool error_flag, DBusError *err);
diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp
index 8589941..db0d2f5 100644
--- a/src/Daemon/CommLayerServerDBus.cpp
+++ b/src/Daemon/CommLayerServerDBus.cpp
@@ -325,11 +325,9 @@ static int handle_DeleteDebugDump(DBusMessage* call, DBusMessage* reply)
static int handle_GetPluginsInfo(DBusMessage* call, DBusMessage* reply)
{
- vector_map_string_t plugins_info = g_pPluginManager->GetPluginsInfo();
-
DBusMessageIter out_iter;
dbus_message_iter_init_append(reply, &out_iter);
- store_val(&out_iter, plugins_info);
+ store_val(&out_iter, g_pPluginManager->GetPluginsInfo());
send_flush_and_unref(reply);
return 0;
@@ -348,9 +346,9 @@ static int handle_GetPluginSettings(DBusMessage* call, DBusMessage* reply)
return -1;
}
- long unix_uid = get_remote_uid(call);
- VERB1 log("got %s('%s') call from uid %ld", "GetPluginSettings", PluginName, unix_uid);
- map_plugin_settings_t plugin_settings = g_pPluginManager->GetPluginSettings(PluginName, to_string(unix_uid).c_str());
+ //long unix_uid = get_remote_uid(call);
+ //VERB1 log("got %s('%s') call from uid %ld", "GetPluginSettings", PluginName, unix_uid);
+ map_plugin_settings_t plugin_settings = g_pPluginManager->GetPluginSettings(PluginName); //, to_string(unix_uid).c_str());
DBusMessageIter out_iter;
dbus_message_iter_init_append(reply, &out_iter);
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp
index 09d8ab8..a2970af 100644
--- a/src/Daemon/Daemon.cpp
+++ b/src/Daemon/Daemon.cpp
@@ -65,7 +65,8 @@
* Returns report_status_t (map_vector_string_t) - the status of each call.
* 2nd parameter is the contents of user's abrt.conf.
* - DeleteDebugDump(UUID): delete it from DB and delete corresponding /var/cache/abrt/DIR
- * - GetPluginsInfo(): returns vector_map_string_t
+ * - GetPluginsInfo(): returns map_map_string_t
+ * map["plugin"] = { "Name": "plugin", "Enabled": "yes" ... }
* - GetPluginSettings(PluginName): returns map_plugin_settings_t (map_string_t)
* - SetPluginSettings(PluginName, map_plugin_settings_t): returns void
* - RegisterPlugin(PluginName): returns void
diff --git a/src/Daemon/PluginManager.cpp b/src/Daemon/PluginManager.cpp
index 136277c..c552880 100644
--- a/src/Daemon/PluginManager.cpp
+++ b/src/Daemon/PluginManager.cpp
@@ -27,6 +27,8 @@
#include "Polkit.h"
#include "PluginManager.h"
+using namespace std;
+
/**
* Text representation of plugin types.
*/
@@ -40,12 +42,12 @@ static const char *const plugin_type_str[] = {
bool LoadPluginSettings(const char *pPath, map_plugin_settings_t& pSettings)
{
- std::ifstream fIn;
+ ifstream fIn;
fIn.open(pPath);
if (!fIn.is_open())
return false;
- std::string line;
+ string line;
while (!fIn.eof())
{
getline(fIn, line);
@@ -54,8 +56,8 @@ bool LoadPluginSettings(const char *pPath, map_plugin_settings_t& pSettings)
bool is_value = false;
bool valid = false;
bool in_quote = false;
- std::string key;
- std::string value;
+ string key;
+ string value;
for (ii = 0; ii < line.length(); ii++)
{
if (line[ii] == '"')
@@ -157,6 +159,10 @@ void CPluginManager::UnLoadPlugins()
CPlugin* CPluginManager::LoadPlugin(const char *pName, bool enabled_only)
{
+ map_string_t plugin_info;
+
+ plugin_info["Name"] = pName;
+
map_plugin_t::iterator it_plugin = m_mapPlugins.find(pName);
if (it_plugin != m_mapPlugins.end())
{
@@ -170,8 +176,9 @@ CPlugin* CPluginManager::LoadPlugin(const char *pName, bool enabled_only)
conf_name = "Kerneloops";
}
map_plugin_settings_t pluginSettings;
- std::string conf_fullname = ssprintf(PLUGINS_CONF_DIR"/%s."PLUGINS_CONF_EXTENSION, conf_name);
+ string conf_fullname = ssprintf(PLUGINS_CONF_DIR"/%s."PLUGINS_CONF_EXTENSION, conf_name);
LoadPluginSettings(conf_fullname.c_str(), pluginSettings);
+ m_map_plugin_settings[pName] = pluginSettings;
VERB3 log("Loaded %s.conf", conf_name);
if (enabled_only)
@@ -179,12 +186,21 @@ CPlugin* CPluginManager::LoadPlugin(const char *pName, bool enabled_only)
map_plugin_settings_t::iterator it = pluginSettings.find("Enabled");
if (it == pluginSettings.end() || !string_to_bool(it->second.c_str()))
{
+ plugin_info["Enabled"] = "no";
+ string empty;
+ plugin_info["Type"] = empty;
+ plugin_info["Version"] = empty;
+ plugin_info["Description"] = empty;
+ plugin_info["Email"] = empty;
+ plugin_info["WWW"] = empty;
+ plugin_info["GTKBuilder"] = empty;
+ m_map_plugin_info[pName] = plugin_info;
VERB3 log("Plugin %s: 'Enabled' is not set, not loading it (yet)", pName);
return NULL; /* error */
}
}
- std::string libPath = ssprintf(PLUGINS_LIB_DIR"/"PLUGINS_LIB_PREFIX"%s."PLUGINS_LIB_EXTENSION, pName);
+ string libPath = ssprintf(PLUGINS_LIB_DIR"/"PLUGINS_LIB_PREFIX"%s."PLUGINS_LIB_EXTENSION, pName);
CLoadedModule* module = new CLoadedModule(libPath.c_str());
if (module->GetMagicNumber() != PLUGINS_MAGIC_NUMBER
|| module->GetType() < 0
@@ -217,6 +233,16 @@ CPlugin* CPluginManager::LoadPlugin(const char *pName, bool enabled_only)
return NULL; /* error */
}
+ plugin_info["Enabled"] = "yes";
+ plugin_info["Type"] = plugin_type_str[module->GetType()];
+ //plugin_info["Name"] = module->GetName();
+ plugin_info["Version"] = module->GetVersion();
+ plugin_info["Description"] = module->GetDescription();
+ plugin_info["Email"] = module->GetEmail();
+ plugin_info["WWW"] = module->GetWWW();
+ plugin_info["GTKBuilder"] = module->GetGTKBuilder();
+
+ m_map_plugin_info[pName] = plugin_info;
m_mapLoadedModules[pName] = module;
m_mapPlugins[pName] = plugin;
log("Registered %s plugin '%s'", plugin_type_str[module->GetType()], pName);
@@ -344,28 +370,6 @@ plugin_type_t CPluginManager::GetPluginType(const char *pName)
return it_module->second->GetType();
}
-vector_map_string_t CPluginManager::GetPluginsInfo()
-{
- vector_map_string_t ret;
- map_loaded_module_t::iterator it_module = m_mapLoadedModules.begin();
- for (; it_module != m_mapLoadedModules.end(); it_module++)
- {
- map_string_t plugin_info;
-
- plugin_info["Enabled"] = (m_mapPlugins.find(it_module->second->GetName()) != m_mapPlugins.end()) ?
- "yes" : "no";
- plugin_info["Type"] = plugin_type_str[it_module->second->GetType()];
- plugin_info["Name"] = it_module->second->GetName();
- plugin_info["Version"] = it_module->second->GetVersion();
- plugin_info["Description"] = it_module->second->GetDescription();
- plugin_info["Email"] = it_module->second->GetEmail();
- plugin_info["WWW"] = it_module->second->GetWWW();
- plugin_info["GTKBuilder"] = it_module->second->GetGTKBuilder();
- ret.push_back(plugin_info);
- }
- return ret;
-}
-
void CPluginManager::SetPluginSettings(const char *pName,
const char *pUID,
const map_plugin_settings_t& pSettings)
@@ -388,14 +392,14 @@ void CPluginManager::SetPluginSettings(const char *pName,
return;
}
- std::string home = get_home_dir(xatoi_u(pUID.c_str()));
+ string home = get_home_dir(xatoi_u(pUID.c_str()));
if (home == "")
{
return;
}
- std::string confDir = home + "/.abrt";
- std::string confPath = confDir + "/" + pName + "."PLUGINS_CONF_EXTENSION;
+ string confDir = home + "/.abrt";
+ string confPath = confDir + "/" + pName + "."PLUGINS_CONF_EXTENSION;
uid_t uid = xatoi_u(pUID.c_str());
struct passwd* pw = getpwuid(uid);
gid_t gid = pw ? pw->pw_gid : uid;
@@ -440,33 +444,31 @@ void CPluginManager::SetPluginSettings(const char *pName,
#endif
}
-map_plugin_settings_t CPluginManager::GetPluginSettings(const char *pName,
- const char *pUID)
+map_plugin_settings_t CPluginManager::GetPluginSettings(const char *pName)
{
map_plugin_settings_t ret;
+
map_loaded_module_t::iterator it_module = m_mapLoadedModules.find(pName);
if (it_module != m_mapLoadedModules.end())
{
map_plugin_t::iterator it_plugin = m_mapPlugins.find(pName);
if (it_plugin != m_mapPlugins.end())
{
+ VERB3 log("Returning settings for loaded plugin %s", pName);
ret = it_plugin->second->GetSettings();
- /** we don't want to load it from daemon if it's running under root
- but wi might get back to this once we make the daemon to not run
- with root privileges
- */
- /*
- if (it_module->second->GetType() == REPORTER)
- {
- std::string home = get_home_dir(xatoi_u(pUID.c_str()));
- if (home != "")
- {
- LoadPluginSettings(home + "/.abrt/" + pName + "."PLUGINS_CONF_EXTENSION, ret);
- }
- }
- */
return ret;
}
}
+ /* else: module is not loaded */
+ map_map_string_t::iterator it_settings = m_map_plugin_settings.find(pName);
+ if (it_settings != m_map_plugin_settings.end())
+ {
+ /* but it exists, its settings are available nevertheless */
+ VERB3 log("Returning settings for non-loaded plugin %s", pName);
+ ret = it_settings->second;
+ return ret;
+ }
+
+ VERB3 log("Request for settings of unknown plugin %s, returning null result", pName);
return ret;
}
diff --git a/src/Daemon/PluginManager.h b/src/Daemon/PluginManager.h
index d3e686c..22cc387 100644
--- a/src/Daemon/PluginManager.h
+++ b/src/Daemon/PluginManager.h
@@ -50,6 +50,11 @@ class CPluginManager
* Registered plugins. A key is a plugin name.
*/
map_plugin_t m_mapPlugins;
+ /**
+ * List of all possible plugins (loaded or not), with some attributes.
+ */
+ map_map_string_t m_map_plugin_info;
+ map_map_string_t m_map_plugin_settings;
public:
/**
@@ -130,7 +135,7 @@ class CPluginManager
* Then user can fill all needed informations like URLs etc.
* @return A vector of maps <key, value>
*/
- vector_map_string_t GetPluginsInfo();
+ const map_map_string_t& GetPluginsInfo() { return m_map_plugin_info; }
/**
* A method, which sets up a plugin. The settings are also saved in home
* directory of an user.
@@ -144,11 +149,9 @@ class CPluginManager
/**
* A method, which returns plugin's settings according to user.
* @param pName A plugin name.
- * @param pUID An uid of user.
- * @return Plugin's settings accorting to user.
+ * @return Plugin's settings.
*/
- map_plugin_settings_t GetPluginSettings(const char *pName,
- const char *pUID);
+ map_plugin_settings_t GetPluginSettings(const char *pName);
};
/**
diff --git a/src/Gui/ABRTExceptions.py b/src/Gui/ABRTExceptions.py
index c4d6b59..c857f71 100644
--- a/src/Gui/ABRTExceptions.py
+++ b/src/Gui/ABRTExceptions.py
@@ -1,4 +1,4 @@
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
class IsRunning(Exception):
def __init__(self):
diff --git a/src/Gui/ABRTPlugin.py b/src/Gui/ABRTPlugin.py
index 03b61fb..320c81c 100644
--- a/src/Gui/ABRTPlugin.py
+++ b/src/Gui/ABRTPlugin.py
@@ -10,15 +10,15 @@ Type
Email
Description
"""
-from abrt_utils import _
-from ConfBackend import ConfBackendGnomeKeyring, ConfBackendInitError
+from abrt_utils import _, log, log1, log2
+from ConfBackend import getCurrentConfBackend, ConfBackendInitError
class PluginSettings(dict):
def __init__(self):
dict.__init__(self)
self.client_side_conf = None
try:
- self.client_side_conf = ConfBackendGnomeKeyring()
+ self.client_side_conf = getCurrentConfBackend()
except ConfBackendInitError, e:
print e
pass
@@ -53,7 +53,8 @@ class PluginSettings(dict):
class PluginInfo():
"""Class to represent common plugin info"""
- types = {"Analyzer":_("Analyzer plugins"),
+ types = {"":_("Not loaded plugins"),
+ "Analyzer":_("Analyzer plugins"),
"Action":_("Action plugins"),
"Reporter":_("Reporter plugins"),
"Database":_("Database plugins")}
@@ -62,7 +63,6 @@ class PluginInfo():
"Type", "Email", "Description"]
def __init__(self):
- #print "Init PluginInfo"
self.WWW = None
self.Name = None
self.Enabled = None
@@ -95,7 +95,7 @@ class PluginInfo():
if self.Name:
self.Settings.load_daemon_settings(self.Name, daemon_settings)
else:
- print _("Plugin name is not set, can't load its settings")
+ log("Plugin name is not set, can't load its settings")
def save_settings_on_client_side(self):
self.Settings.save_on_client_side(str(self.Name))
diff --git a/src/Gui/CCDBusBackend.py b/src/Gui/CCDBusBackend.py
index ac378f4..f4ef104 100644
--- a/src/Gui/CCDBusBackend.py
+++ b/src/Gui/CCDBusBackend.py
@@ -6,7 +6,7 @@ from dbus.mainloop.glib import DBusGMainLoop
import gtk
from dbus.exceptions import *
import ABRTExceptions
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
CC_NAME = 'com.redhat.abrt'
CC_IFACE = 'com.redhat.abrt'
@@ -40,7 +40,7 @@ class DBusManager(gobject.GObject):
if session:
try:
- app_proxy = session.get_object(APP_NAME,APP_PATH)
+ app_proxy = session.get_object(APP_NAME, APP_PATH)
app_iface = dbus.Interface(app_proxy, dbus_interface=APP_IFACE)
# app is running, so make it show it self
app_iface.show()
@@ -111,13 +111,13 @@ class DBusManager(gobject.GObject):
# def disconnected(self, *args):
# print "disconnect"
- def error_handler_cb(self,error):
- self.emit("abrt-error",error)
+ def error_handler_cb(self, error):
+ self.emit("abrt-error", error)
- def warning_handler_cb(self,arg):
- self.emit("warning",arg)
+ def warning_handler_cb(self, arg):
+ self.emit("warning", arg)
- def error_handler(self,arg):
+ def error_handler(self, arg):
# used to silently ingore dbus timeouts
pass
@@ -134,11 +134,11 @@ class DBusManager(gobject.GObject):
self.emit("crash")
def update_cb(self, message, job_id=0):
- print "Update >>%s<<" % message
+ log1("Update:%s", message)
self.emit("update", message)
def warning_cb(self, message, job_id=0):
- print "Warning >>%s<<" % message
+ log1("Warning:%s", message)
self.emit("warning", message)
def owner_changed_cb(self,name, old_owner, new_owner):
@@ -151,7 +151,7 @@ class DBusManager(gobject.GObject):
def jobdone_cb(self, dest, uuid):
# TODO: check that it is indeed OUR job:
# remember uuid in getReport and compare here
- print "Our job for UUID %s is done." % uuid
+ log1("Our job for UUID %s is done", uuid)
dump = self.daemon().CreateReport(uuid)
if dump:
self.emit("analyze-complete", dump)
@@ -191,8 +191,6 @@ class DBusManager(gobject.GObject):
def getPluginSettings(self, plugin_name):
settings = self.daemon().GetPluginSettings(plugin_name)
- #for i in settings.keys():
- # print i
return settings
# "Enable" toggling in GUI is disabled for now. Grep for PLUGIN_DYNAMIC_LOAD_UNLOAD
@@ -210,6 +208,6 @@ class DBusManager(gobject.GObject):
def setSettings(self, settings):
# FIXME: STUB!!!!
- print "setSettings stub"
+ log1("setSettings stub")
retval = self.daemon().SetSettings(self.daemon().GetSettings())
print ">>>", retval
diff --git a/src/Gui/CCDumpList.py b/src/Gui/CCDumpList.py
index 09191f5..a8657e0 100644
--- a/src/Gui/CCDumpList.py
+++ b/src/Gui/CCDumpList.py
@@ -6,7 +6,6 @@ class DumpList(list):
"""Class to store list of debug dumps"""
def __init__(self,dbus_manager=None):
self.dm = dbus_manager
- self.ddict = {}
def load(self):
if self.dm:
@@ -21,7 +20,6 @@ class DumpList(list):
# print "DumpList adding %s:%s" % (column,row[column])
entry.__dict__[column] = row[column]
self.append(entry)
- self.ddict[entry.getUUID()] = entry
except Exception, e:
# FIXME handle exception better
# this is just temporary workaround for rhbz#543725
diff --git a/src/Gui/CCMainWindow.py b/src/Gui/CCMainWindow.py
index f4e3a73..dcb71ae 100644
--- a/src/Gui/CCMainWindow.py
+++ b/src/Gui/CCMainWindow.py
@@ -2,6 +2,7 @@
import sys
import os
import pwd
+import getopt
import pygtk
pygtk.require("2.0")
import gobject
@@ -10,8 +11,14 @@ try:
except RuntimeError,e:
# rhbz#552039
print e
- os.exit()
+ sys.exit()
import gtk.glade
+try:
+ import rpm
+except Exception, ex:
+ rpm = None
+
+from ConfBackend import getCurrentConfBackend, ConfBackendInitError
import CCDBusBackend
from CC_gui_functions import *
from CCDumpList import getDumpList, DumpList
@@ -21,12 +28,7 @@ from SettingsDialog import SettingsDialog
from CCReport import Report
from PluginList import getPluginInfoList
import ABRTExceptions
-from abrt_utils import _
-
-try:
- import rpm
-except Exception, ex:
- rpm = None
+from abrt_utils import _, init_logging, log, log1, log2
class MainWindow():
@@ -41,11 +43,10 @@ class MainWindow():
sys.exit()
except Exception, e:
# show error message if connection fails
- # FIXME add an option to start the daemon
gui_error_message("%s" % e)
sys.exit()
#Set the Glade file
- self.gladefile = "%s%sccgui.glade" % (sys.path[0],"/")
+ self.gladefile = "%s/ccgui.glade" % sys.path[0]
self.wTree = gtk.glade.XML(self.gladefile)
#Get the Main Window, and connect the "destroy" event
@@ -233,9 +234,11 @@ class MainWindow():
# it is not informative (no URL to the report)
for message in dump.getMessage().split('\n'):
if message:
- if "http" in message[0:5] or "file:///"[0:8] in message:
- message = "<a href=\"%s\">%s</a>" % (message, message)
+ #Doesn't work (far too easy to make it worse, not better):
+ #if "http" in message[0:5] or "file:///"[0:8] in message:
+ # message = "<a href=\"%s\">%s</a>" % (message, message)
report_label += "%s\n" % message
+ log2("setting markup '%s'", report_label)
self.wTree.get_widget("lReported").set_markup(report_label)
else:
self.wTree.get_widget("lReported").set_markup(_("<b>Not reported!</b>"))
@@ -297,13 +300,20 @@ class MainWindow():
try:
self.pBarWindow.show_all()
self.timer = gobject.timeout_add(100, self.progress_update_cb)
- reporters_settings = {}
- # self.pluginlist = getPluginInfoList(self.ccdaemon, refresh=True)
- # don't force refresh!
- self.pluginlist = getPluginInfoList(self.ccdaemon)
- for plugin in self.pluginlist.getReporterPlugins():
- reporters_settings[str(plugin)] = plugin.Settings
+ # Old way: it needs to talk to daemon
+ #reporters_settings = {}
+ ## self.pluginlist = getPluginInfoList(self.ccdaemon, refresh=True)
+ ## don't force refresh!
+ #self.pluginlist = getPluginInfoList(self.ccdaemon)
+ #for plugin in self.pluginlist.getReporterPlugins():
+ # reporters_settings[str(plugin)] = plugin.Settings
+ reporters_settings = getCurrentConfBackend().load_all()
+ log2("Report(result,settings):")
+ log2(" result:%s", str(result))
+ # Careful, this will print reporters_settings["Password"] too
+ log2(" settings:%s", str(reporters_settings))
self.ccdaemon.Report(result, reporters_settings)
+ log2("Report() returned")
#self.hydrate()
except Exception, e:
gui_error_message(_("Reporting failed!\n%s" % e))
@@ -381,8 +391,19 @@ class MainWindow():
self.window.present()
if __name__ == "__main__":
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "v")
+ except getopt.GetoptError, err:
+ print str(err) # prints something like "option -a not recognized"
+ sys.exit(2)
+ verbose = 0
+ for opt, arg in opts:
+ if opt == "-v":
+ verbose += 1
+ init_logging("abrt-gui", verbose)
+ log1("log level:%d", verbose)
+
cc = MainWindow()
cc.hydrate()
cc.show()
gtk.main()
-
diff --git a/src/Gui/CCReporterDialog.py b/src/Gui/CCReporterDialog.py
index bba8942..ab6ad0f 100644
--- a/src/Gui/CCReporterDialog.py
+++ b/src/Gui/CCReporterDialog.py
@@ -12,7 +12,7 @@ from ABRTPlugin import PluginInfo
from PluginSettingsUI import PluginSettingsUI
from PluginList import getPluginInfoList
#from CCDumpList import getDumpList, DumpList
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
# FIXME - create method or smth that returns type|editable|content
CD_TYPE = 0
diff --git a/src/Gui/CC_gui_functions.py b/src/Gui/CC_gui_functions.py
index 0532ab7..0379f20 100644
--- a/src/Gui/CC_gui_functions.py
+++ b/src/Gui/CC_gui_functions.py
@@ -15,13 +15,15 @@ try:
import rpm
except:
rpm = None
+from abrt_utils import _, log, log1, log2
+
def on_url_clicked(label, url):
import gnomevfs
file_mimetype = gnomevfs.get_mime_type(url)
default_app = gnomevfs.mime_get_default_application(file_mimetype)
if default_app:
- #print "Default Application:", default_app[2]
+ log2("default application:%s", default_app[2])
subprocess.Popen([default_app[2], url])
def gui_report_dialog ( report_status_dict, parent_dialog,
@@ -160,8 +162,8 @@ def gui_question_dialog ( message, parent_dialog=None,
dialog.destroy()
return ret
-def get_icon_for_package(theme,package):
- #print package
+def get_icon_for_package(theme, package):
+ log2("get_icon_for_package('%s')", package)
try:
return theme.load_icon(package, 22, gtk.ICON_LOOKUP_USE_BUILTIN)
except:
@@ -169,7 +171,7 @@ def get_icon_for_package(theme,package):
if not rpm:
return None
ts = rpm.TransactionSet()
- mi = ts.dbMatch( 'name', package )
+ mi = ts.dbMatch('name', package)
possible_icons = []
icon_filename = ""
filenames = ""
@@ -180,19 +182,19 @@ def get_icon_for_package(theme,package):
if filename.rfind(".png") != -1:
possible_icons.append(filename)
if filename.rfind(".desktop") != -1:
- #print filename
+ log2("desktop file:'%s'", filename)
desktop_file = open(filename, 'r')
lines = desktop_file.readlines()
for line in lines:
if line.find("Icon=") != -1:
- #print line[5:-1]
+ log2("Icon='%s'", line[5:-1])
icon_filename = line[5:-1]
break
desktop_file.close()
# .dektop file found
for filename in h['filenames']:
if filename.rfind("%s.png" % icon_filename) != -1:
- #print filename
+ log2("png file:'%s'", filename)
icon_filename = filename
break
#we didn't find the .desktop file
@@ -205,8 +207,8 @@ def get_icon_for_package(theme,package):
if icon_filename:
break
if icon_filename:
- #print "icon created form %s" % icon_filename
- return gtk.gdk.pixbuf_new_from_file_at_size(icon_filename,22,22)
+ log1("icon created from %s", icon_filename)
+ return gtk.gdk.pixbuf_new_from_file_at_size(icon_filename, 22, 22)
else:
return None
diff --git a/src/Gui/ConfBackend.py b/src/Gui/ConfBackend.py
index 1d6ac9e..0d47760 100644
--- a/src/Gui/ConfBackend.py
+++ b/src/Gui/ConfBackend.py
@@ -1,9 +1,8 @@
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
# Doc on Gnome keyring API:
# http://library.gnome.org/devel/gnome-keyring/stable/
-
-#FIXME: add some backend factory
+# Python bindings are in gnome-python2-desktop package
try:
import gnomekeyring as gkey
@@ -48,22 +47,28 @@ class ConfBackend(object):
#
# Example: Key "abrt:Bugzilla" with bugzilla password as value, and with attributes:
#
+# Application: abrt
# AbrtPluginInfo: Bugzilla
# NoSSLVerify: yes
# Login: user@host.com
# BugzillaURL: https://host.with.bz.com/
#
-# The attribute "AbrtPluginInfo" is special, it is used for retrieving
-# the key via keyring API find_items_sync() function.
+# Attributes "Application" and "AbrtPluginInfo" are special, they are used
+# for efficient key retrieval via keyring API find_items_sync() function.
+g_default_key_ring = None
class ConfBackendGnomeKeyring(ConfBackend):
def __init__(self):
+ global g_default_key_ring
+
ConfBackend.__init__(self)
- if not gkey.is_available():
+ if g_default_key_ring:
+ return
+ if not gkey or not gkey.is_available():
raise ConfBackendInitError(_("Can't connect to Gnome Keyring daemon"))
try:
- self.default_key_ring = gkey.get_default_keyring_sync()
+ g_default_key_ring = gkey.get_default_keyring_sync()
except:
# could happen if keyring daemon is running, but we run gui under
# user who is not the owner of the running session - using su
@@ -71,31 +76,35 @@ class ConfBackendGnomeKeyring(ConfBackend):
def save(self, name, settings):
settings_tmp = settings.copy()
+ settings_tmp["Application"] = "abrt"
settings_tmp["AbrtPluginInfo"] = name
- password = ""
- item_list = []
+ # delete all keyring items containg "AbrtPluginInfo":"<plugin_name>",
+ # so we always have only 1 item per plugin
try:
- item_list = gkey.find_items_sync(gkey.ITEM_GENERIC_SECRET, {"AbrtPluginInfo":str(name)})
+ item_list = gkey.find_items_sync(gkey.ITEM_GENERIC_SECRET, { "AbrtPluginInfo": str(name) })
+ for item in item_list:
+ log2("found old keyring item: ring:'%s' item_id:%s attrs:%s", item.keyring, item.item_id, str(item.attributes))
+ log2("deleting it from keyring '%s'", g_default_key_ring)
+ gkey.item_delete_sync(g_default_key_ring, item.item_id)
except gkey.NoMatchError:
# nothing found
pass
except gkey.DeniedError:
raise ConfBackendSaveError(_("Access to gnome-keyring has been denied, plugins settings won't be saved."))
-
- # delete all items containg "AbrtPluginInfo":<plugin_name>, so we always have only 1 item per plugin
- for item in item_list:
- gkey.item_delete_sync(self.default_key_ring, item.item_id)
-
+ # if plugin has a "Password" setting, we handle it specially: in keyring,
+ # it is stored as item.secret, not as one of attributes
+ password = ""
if "Password" in settings_tmp:
password = settings_tmp["Password"]
del settings_tmp["Password"]
+ # store new settings for this plugin as one keyring item
try:
- gkey.item_create_sync(self.default_key_ring,
+ gkey.item_create_sync(g_default_key_ring,
gkey.ITEM_GENERIC_SECRET,
- "abrt:%s" % name,
- settings_tmp,
- password,
+ "abrt:%s" % name, # display_name
+ settings_tmp, # attrs
+ password, # secret
True)
except gkey.DeniedError, e:
raise ConfBackendSaveError(_("Access to gnome-keyring has been denied, plugins settings won't be saved."))
@@ -103,17 +112,110 @@ class ConfBackendGnomeKeyring(ConfBackend):
def load(self, name):
item_list = None
try:
+ log2("looking for keyring items with 'AbrtPluginInfo:%s' attr", str(name))
item_list = gkey.find_items_sync(gkey.ITEM_GENERIC_SECRET, {"AbrtPluginInfo":str(name)})
+ for item in item_list:
+ # gnome keyring is weeeeird. why display_name, type, mtime, ctime
+ # aren't available in find_items_sync() results? why we need to
+ # get them via additional call, item_get_info_sync()?
+ # internally, item has GNOME_KEYRING_TYPE_FOUND type,
+ # and info has GNOME_KEYRING_TYPE_ITEM_INFO type.
+ # why not use the same type for both?
+ #
+ # and worst of all, this information took four hours of googling...
+ #
+ #info = gkey.item_get_info_sync(item.keyring, item.item_id)
+ log2("found keyring item: ring:'%s' item_id:%s attrs:%s", # "secret:'%s' display_name:'%s'"
+ item.keyring, item.item_id, str(item.attributes) #, item.secret, info.get_display_name()
+ )
except gkey.NoMatchError:
# nothing found
pass
-
if item_list:
retval = item_list[0].attributes.copy()
retval["Password"] = item_list[0].secret
return retval
- else:
- return {}
- #for i in item_list:
- # for attr in i.attributes:
- # print attr, i.attributes[attr]
+ return {}
+
+ # This routine loads setting for all plugins. It doesn't need plugin name.
+ # Thus we can avoid talking to abrtd just in order to get plugin names.
+ def load_all(self):
+ retval = {}
+ item_list = {}
+
+ # UGLY compat cludge for users who has saved items without "Application" attr
+ # (abrt <= 1.0.3 was saving those)
+ item_ids = gkey.list_item_ids_sync(g_default_key_ring)
+ log2("all keyring item ids:%s", item_ids)
+ for item_id in item_ids:
+ info = gkey.item_get_info_sync(g_default_key_ring, item_id)
+ attrs = gkey.item_get_attributes_sync(g_default_key_ring, item_id)
+ log2("keyring item %s: attrs:%s", item_id, str(attrs))
+ if "AbrtPluginInfo" in attrs:
+ if not "Application" in attrs:
+ log2("updating old-style keyring item")
+ attrs["Application"] = "abrt"
+ try:
+ gkey.item_set_attributes_sync(g_default_key_ring, item_id, attrs)
+ except:
+ log2("error updating old-style keyring item")
+ plugin_name = attrs["AbrtPluginInfo"]
+ # If plugin has a "Password" setting, we handle it specially: in keyring,
+ # it is stored as item.secret, not as one of attributes
+ if info.get_secret():
+ attrs["Password"] = info.get_secret()
+ # avoiding sending useless duplicate info over dbus...
+ del attrs["AbrtPluginInfo"]
+ try:
+ del attrs["Application"]
+ except:
+ pass
+ retval[plugin_name] = attrs;
+ # end of UGLY compat cludge
+
+ try:
+ log2("looking for keyring items with 'Application:abrt' attr")
+ item_list = gkey.find_items_sync(gkey.ITEM_GENERIC_SECRET, { "Application": "abrt" })
+ except gkey.NoMatchError:
+ # nothing found
+ pass
+ for item in item_list:
+ # gnome keyring is weeeeird. why display_name, type, mtime, ctime
+ # aren't available in find_items_sync() results? why we need to
+ # get them via additional call, item_get_info_sync()?
+ # internally, item has GNOME_KEYRING_TYPE_FOUND type,
+ # and info has GNOME_KEYRING_TYPE_ITEM_INFO type.
+ # why not use the same type for both?
+ #
+ # and worst of all, this information took four hours of googling...
+ #
+ #info = gkey.item_get_info_sync(item.keyring, item.item_id)
+ log2("found keyring item: ring:%s item_id:%s attrs:%s", # "secret:%s display_name:'%s'"
+ item.keyring, item.item_id, str(item.attributes) #, item.secret, info.get_display_name()
+ )
+ attrs = item.attributes.copy()
+ if "AbrtPluginInfo" in attrs:
+ plugin_name = attrs["AbrtPluginInfo"]
+ # If plugin has a "Password" setting, we handle it specially: in keyring,
+ # it is stored as item.secret, not as one of attributes
+ if item.secret:
+ attrs["Password"] = item.secret
+ # avoiding sending useless duplicate info over dbus...
+ del attrs["AbrtPluginInfo"]
+ try:
+ del attrs["Application"]
+ except:
+ pass
+ retval[plugin_name] = attrs;
+ return retval
+
+
+# Rudimentary backend factory
+
+currentConfBackend = None
+
+def getCurrentConfBackend():
+ global currentConfBackend
+ if not currentConfBackend:
+ currentConfBackend = ConfBackendGnomeKeyring()
+ return currentConfBackend
diff --git a/src/Gui/PluginList.py b/src/Gui/PluginList.py
index 79df126..d2232bb 100644
--- a/src/Gui/PluginList.py
+++ b/src/Gui/PluginList.py
@@ -1,31 +1,27 @@
# -*- coding: utf-8 -*-
import CCDBusBackend
from ABRTPlugin import PluginInfo, PluginSettings
+from abrt_utils import _, log, log1, log2
class PluginInfoList(list):
"""Class to store list of PluginInfos"""
def __init__(self,dbus_manager=None):
self.dm = dbus_manager
- self.ddict = {}
def load(self):
if self.dm:
- #print "loading PluginList"
rows = self.dm.getPluginsInfo()
- #print rows
- for row in rows:
+ for plugin_name in rows:
+ row = rows[plugin_name]
entry = PluginInfo()
- for column in row:
- #print "PluginInfoList adding %s:%s" % (column,row[column])
- entry.__dict__[column] = row[column]
- if entry.Enabled == "yes":
- #entry.Settings = PluginSettings(self.dm.getPluginSettings(str(entry)))
- daemon_settings = self.dm.getPluginSettings(str(entry))
- entry.load_daemon_settings(daemon_settings)
+ for attr_name in row:
+ log2("PluginInfoList: adding %s[%s]:%s", plugin_name, attr_name, row[attr_name])
+ entry.__dict__[attr_name] = row[attr_name]
+ daemon_settings = self.dm.getPluginSettings(plugin_name)
+ entry.load_daemon_settings(daemon_settings)
self.append(entry)
- self.ddict[entry.getName()] = entry
else:
- print "db == None!"
+ log("PluginInfoList: db == None")
def getEnabledPlugins(self):
return [x for x in self if x["Enabled"] == 'yes']
diff --git a/src/Gui/PluginSettingsUI.py b/src/Gui/PluginSettingsUI.py
index a26f87f..c324b31 100644
--- a/src/Gui/PluginSettingsUI.py
+++ b/src/Gui/PluginSettingsUI.py
@@ -1,5 +1,5 @@
import gtk
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
class PluginSettingsUI(gtk.Dialog):
def __init__(self, pluginfo, parent=None):
diff --git a/src/Gui/PluginsSettingsDialog.py b/src/Gui/PluginsSettingsDialog.py
index 0d41962..611a8c5 100644
--- a/src/Gui/PluginsSettingsDialog.py
+++ b/src/Gui/PluginsSettingsDialog.py
@@ -4,7 +4,7 @@ from PluginList import getPluginInfoList, PluginInfoList
from CC_gui_functions import *
from PluginSettingsUI import PluginSettingsUI
from ABRTPlugin import PluginSettings, PluginInfo
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
class PluginsSettingsDialog:
@@ -13,7 +13,7 @@ class PluginsSettingsDialog:
self.ccdaemon = daemon
self.builder = gtk.Builder()
- builderfile = "%s%ssettings.glade" % (sys.path[0],"/")
+ builderfile = "%s%ssettings.glade" % (sys.path[0], "/")
#print builderfile
try:
self.builder.add_from_file(builderfile)
@@ -99,13 +99,20 @@ class PluginsSettingsDialog:
except Exception, e:
print e
#gui_error_message("Error while loading plugins info, please check if abrt daemon is running\n %s" % e)
+ return
plugin_rows = {}
for plugin_type in PluginInfo.types.keys():
- it = self.pluginsListStore.append(None, ["<b>%s</b>" % PluginInfo.types[plugin_type], 0, 0, 1, "gray", None])
+ it = self.pluginsListStore.append(None,
+ ["<b>%s</b>" % PluginInfo.types[plugin_type], 0, 0, 1, "gray", None])
plugin_rows[plugin_type] = it
for entry in pluginlist:
+ if entry.Description:
+ text = "<b>%s</b>\n%s" % (entry.getName(), entry.Description)
+ else:
+ # non-loaded plugins have empty description
+ text = "<b>%s</b>" % entry.getName()
self.pluginsListStore.append(plugin_rows[entry.getType()],
- ["<b>%s</b>\n%s" % (entry.getName(), entry.Description), entry.Enabled == "yes", 1, 0, "white", entry])
+ [text, entry.Enabled == "yes", 1, 0, "white", entry])
self.pluginlist.expand_all()
def dehydrate(self):
@@ -149,7 +156,7 @@ class PluginsSettingsDialog:
elif response == gtk.RESPONSE_CANCEL:
pass
else:
- print _("unknown response from settings dialog")
+ log("unknown response from settings dialog:%d", response)
ui.destroy()
def on_bClose_clicked(self, button):
diff --git a/src/Gui/SettingsDialog.py b/src/Gui/SettingsDialog.py
index c2b292f..893c23f 100644
--- a/src/Gui/SettingsDialog.py
+++ b/src/Gui/SettingsDialog.py
@@ -3,7 +3,7 @@ import gtk
from PluginList import getPluginInfoList
from CC_gui_functions import *
#from PluginSettingsUI import PluginSettingsUI
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
#FIXME: create a better struct, to automatize hydrate/dehydrate process
diff --git a/src/Gui/abrt_utils.py b/src/Gui/abrt_utils.py
index 6122b9c..2fabb54 100644
--- a/src/Gui/abrt_utils.py
+++ b/src/Gui/abrt_utils.py
@@ -1,16 +1,37 @@
+import sys
import gtk.glade
+
PROGNAME = "abrt"
+g_verbose = 0
+
import locale
-try:
- locale.setlocale (locale.LC_ALL, "")
-except locale.Error, e:
- import os
- os.environ['LC_ALL'] = 'C'
- locale.setlocale (locale.LC_ALL, "")
import gettext
-gettext.bind_textdomain_codeset(PROGNAME,locale.nl_langinfo(locale.CODESET))
-gettext.bindtextdomain(PROGNAME, '/usr/share/locale')
-gtk.glade.bindtextdomain(PROGNAME, '/usr/share/locale')
-gtk.glade.textdomain(PROGNAME)
-gettext.textdomain(PROGNAME)
+
_ = lambda x: gettext.lgettext(x)
+
+def init_logging(progname, v):
+ global PROGNAME, g_verbose
+ PROGNAME = progname
+ g_verbose = v
+ try:
+ locale.setlocale(locale.LC_ALL, "")
+ except locale.Error, e:
+ import os
+ os.environ['LC_ALL'] = 'C'
+ locale.setlocale(locale.LC_ALL, "")
+ gettext.bind_textdomain_codeset(PROGNAME, locale.nl_langinfo(locale.CODESET))
+ gettext.bindtextdomain(PROGNAME, '/usr/share/locale')
+ gtk.glade.bindtextdomain(PROGNAME, '/usr/share/locale')
+ gtk.glade.textdomain(PROGNAME)
+ gettext.textdomain(PROGNAME)
+
+def log(fmt, *args):
+ sys.stderr.write("%s: %s\n" % (PROGNAME, fmt % args))
+
+def log1(fmt, *args):
+ if g_verbose >= 1:
+ sys.stderr.write("%s: %s\n" % (PROGNAME, fmt % args))
+
+def log2(fmt, *args):
+ if g_verbose >= 2:
+ sys.stderr.write("%s: %s\n" % (PROGNAME, fmt % args))
diff --git a/src/Hooks/abrt_exception_handler.py.in b/src/Hooks/abrt_exception_handler.py.in
index a0b0519..e0e1954 100644
--- a/src/Hooks/abrt_exception_handler.py.in
+++ b/src/Hooks/abrt_exception_handler.py.in
@@ -213,7 +213,7 @@ def handleMyException((etype, value, tb)):
text += ("\nLocal variables in innermost frame:\n")
try:
for (key, val) in frame.f_locals.items():
- text += "%s: %s\n" % (key, val)
+ text += "%s: %s\n" % (key, repr(val))
except:
pass