summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-01-14 17:47:01 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-01-14 17:47:01 +0100
commit2a8dfdad5a5e4ccb0c7a2e9147c38336ba76d733 (patch)
tree8bbfb35dcf252affb8d3863c7d96e37204412378 /src
parentab4aa70e27cd66c7b2f3f530cfb6f026322eb91c (diff)
downloadabrt-2a8dfdad5a5e4ccb0c7a2e9147c38336ba76d733.tar.gz
abrt-2a8dfdad5a5e4ccb0c7a2e9147c38336ba76d733.tar.xz
abrt-2a8dfdad5a5e4ccb0c7a2e9147c38336ba76d733.zip
gui: add logging infrastructure
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src')
-rw-r--r--src/Gui/ABRTExceptions.py2
-rw-r--r--src/Gui/ABRTPlugin.py5
-rw-r--r--src/Gui/CCDBusBackend.py20
-rw-r--r--src/Gui/CCMainWindow.py26
-rw-r--r--src/Gui/CCReporterDialog.py2
-rw-r--r--src/Gui/CC_gui_functions.py20
-rw-r--r--src/Gui/ConfBackend.py2
-rw-r--r--src/Gui/PluginList.py7
-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
12 files changed, 94 insertions, 54 deletions
diff --git a/src/Gui/ABRTExceptions.py b/src/Gui/ABRTExceptions.py
index c4d6b594..c857f710 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 9f66a834..5fb551d4 100644
--- a/src/Gui/ABRTPlugin.py
+++ b/src/Gui/ABRTPlugin.py
@@ -10,7 +10,7 @@ Type
Email
Description
"""
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
from ConfBackend import ConfBackendGnomeKeyring, ConfBackendInitError
class PluginSettings(dict):
@@ -63,7 +63,6 @@ class PluginInfo():
"Type", "Email", "Description"]
def __init__(self):
- #print "Init PluginInfo"
self.WWW = None
self.Name = None
self.Enabled = None
@@ -96,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 64deb39f..1ec2d8a1 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'
@@ -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)
@@ -208,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/CCMainWindow.py b/src/Gui/CCMainWindow.py
index f4e3a73d..432fd43b 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
@@ -12,6 +13,11 @@ except RuntimeError,e:
print e
os.exit()
import gtk.glade
+try:
+ import rpm
+except Exception, ex:
+ rpm = None
+
import CCDBusBackend
from CC_gui_functions import *
from CCDumpList import getDumpList, DumpList
@@ -21,12 +27,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():
@@ -381,8 +382,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 bba89423..ab6ad0fa 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 0532ab79..0379f205 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 1d6ac9ea..08ceed56 100644
--- a/src/Gui/ConfBackend.py
+++ b/src/Gui/ConfBackend.py
@@ -1,4 +1,4 @@
-from abrt_utils import _
+from abrt_utils import _, log, log1, log2
# Doc on Gnome keyring API:
# http://library.gnome.org/devel/gnome-keyring/stable/
diff --git a/src/Gui/PluginList.py b/src/Gui/PluginList.py
index 50a4067a..d2232bbc 100644
--- a/src/Gui/PluginList.py
+++ b/src/Gui/PluginList.py
@@ -1,6 +1,7 @@
# -*- 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"""
@@ -9,20 +10,18 @@ class PluginInfoList(list):
def load(self):
if self.dm:
- #print "loading PluginList"
rows = self.dm.getPluginsInfo()
- #print rows
for plugin_name in rows:
row = rows[plugin_name]
entry = PluginInfo()
for attr_name in row:
- #print "PluginInfoList adding %s[%s]:%s" % (plugin_name, attr_name, row[attr_name])
+ 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)
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 a26f87f0..c324b317 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 0d41962f..611a8c59 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 c2b292f7..893c23f0 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 6122b9ce..2fabb54a 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))