From 9044f663cf8f5487938f5b51c1f93861396641ca Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 7 Aug 2016 15:54:37 +0200 Subject: [PATCH] add commandline options to define log-level (resolves #15) --- mcg/application.py | 35 +++++++++++++++++++++++++++++++++-- mcg/widgets.py | 6 ------ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/mcg/application.py b/mcg/application.py index fe3666f..7066a9f 100644 --- a/mcg/application.py +++ b/mcg/application.py @@ -3,9 +3,10 @@ import gi gi.require_version('Gtk', '3.0') +import logging import urllib -from gi.repository import Gio, Gtk, Gdk +from gi.repository import Gio, Gtk, Gdk, GLib from mcg import Environment from mcg import widgets @@ -14,17 +15,40 @@ from mcg import widgets class Application(Gtk.Application): - TITLE = "MPDCoverGrid (Gtk)" + TITLE = "MPDCoverGrid" ID = 'de.coderkun.mcg' + def _get_option(shortname, longname, description): + option = GLib.OptionEntry() + option.short_name = ord(shortname) + option.long_name = longname + option.description = description + return option + + def __init__(self): Gtk.Application.__init__(self, application_id=Application.ID, flags=Gio.ApplicationFlags.FLAGS_NONE) self._window = None + self._verbosity = 0 + self.add_main_option_entries([ + Application._get_option("v", "verbose", "Be verbose: show info messages"), + Application._get_option("d", "debug", "Enable debugging: show debug messages") + ]) + self.connect('handle-local-options', self.handle_local_options) + + + def handle_local_options(self, widget, options): + if options.contains("debug") and options.lookup_value('debug'): + self._verbosity = logging.DEBUG + elif options.contains("verbose") and options.lookup_value('verbose'): + self._verbosity = logging.INFO + return -1 def do_startup(self): Gtk.Application.do_startup(self) + self._setup_logging() self._load_resource() self._load_settings() self._load_css() @@ -38,6 +62,13 @@ class Application(Gtk.Application): self._window.present() + def _setup_logging(self): + logging.basicConfig( + level=self._verbosity, + format="%(asctime)s %(levelname)s: %(message)s" + ) + + def _load_resource(self): self._resource = Gio.resource_load( Environment.get_data(Application.ID + '.gresource') diff --git a/mcg/widgets.py b/mcg/widgets.py index 26cf6a9..f6df826 100644 --- a/mcg/widgets.py +++ b/mcg/widgets.py @@ -50,12 +50,6 @@ class Window(): self._panels = [] self._mcg = client.Client() self._logger = logging.getLogger(__name__) - self._logger.addHandler(logging.StreamHandler(stream=sys.stdout)) - self._logger.setLevel(logging.ERROR) - logging.getLogger(client.__name__).addHandler(logging.StreamHandler(stream=sys.stdout)) - logging.getLogger(client.__name__).setLevel(logging.ERROR) - #self._mcg.get_logger().addHandler(logging.StreamHandler(stream=sys.stdout)) - #self._mcg.get_logger().setLevel(logging.ERROR) self._size = self._settings.get_value(Window.SETTING_WINDOW_SIZE) self._maximized = self._settings.get_boolean(Window.SETTING_WINDOW_MAXIMIZED) self._fullscreened = False