[gnome-music] gnome-music.in: Group configuration in functions



commit e2d375f7ea3fdfaab9012bd1924b44a68dd3021e
Author: Pablo Palácios <ppalacios992 gmail com>
Date:   Tue Feb 28 19:20:57 2017 -0300

    gnome-music.in: Group configuration in functions
    
    All pre-configurations that must be set before starting gnome-music were
    grouped in proper functions so it is now easier to read, understand and
    maintain. It also follows PEP-8 when possible.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=774500

 gnome-music.in |  139 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 91 insertions(+), 48 deletions(-)
---
diff --git a/gnome-music.in b/gnome-music.in
index e23e357..debe77c 100644
--- a/gnome-music.in
+++ b/gnome-music.in
@@ -23,88 +23,131 @@
 # code, but you are not obligated to do so.  If you do not wish to do so,
 # delete this exception statement from your version.
 
-import sys
-import signal
-import os
-import locale
+import argparse
 import gettext
+import locale
+import logging
+import os
+import signal
+import sys
 
 # Make sure we'll find the pygobject module, even in JHBuild
 sys.path.insert(1, '@pyexecdir@')
 # Make sure we'll find the gnomemusic module, even in JHBuild
 sys.path.insert(1, '@pythondir@')
 
-import argparse
-import logging
 import gi
-from gi.repository import Gio
-import gnomemusic
 
-localedir = '@localedir@'
-srcdir = os.path.abspath(os.path.join(os.path.dirname(gnomemusic.__file__), '..'))
-if os.path.exists(os.path.join(srcdir, 'gnome-music.doap')):
-    print('Running from source tree, using local files')
-    pkgdatadir = os.path.join(srcdir, 'data')
-    libgd_libdir = os.path.join(srcdir, 'libgd', '.libs')
-    libgd_typelibdir = os.path.join(srcdir, 'libgd')
-    if not os.environ.get('GSETTINGS_SCHEMA_DIR'):
-        os.environ['GSETTINGS_SCHEMA_DIR'] = pkgdatadir
-else:
-    pkgdatadir = '@pkgdatadir@'
-    libgd_libdir = '@pkglibdir@'
-    libgd_typelibdir = '@pkglibdir@/girepository-1.0'
-
-# We use our own libgd.so, so let gi.repository find it
+gi.require_version('Gtk', '3.0')
 gi.require_version('GIRepository', '2.0')
-from gi.repository import GIRepository
-GIRepository.Repository.prepend_search_path(libgd_typelibdir)
-GIRepository.Repository.prepend_library_path(libgd_libdir)
+from gi.repository import GIRepository, Gio, Gtk
 
+import gnomemusic
 
-def install_excepthook():
-    """ Make sure we exit when an unhandled exception occurs. """
-    gi.require_version('Gtk', '3.0')
-    from gi.repository import Gtk
-    old_hook = sys.excepthook
+
+SOURCE_DIR = os.path.abspath(
+    os.path.join(os.path.dirname(gnomemusic.__file__), '..'))
+
+# Defines if we are running from inside project source. This is
+# necessary so we can set data and libgd directories correctly.
+_LOCAL = os.path.exists(os.path.join(SOURCE_DIR, 'gnome-music.doap'))
+
+# Directory settings
+LOCALE_DIR = '@localedir@'
+PKGDATA_DIR = os.path.join(SOURCE_DIR, 'data') if _LOCAL else '@pkgdatadir@'
+
+# Log settings
+LOG_FORMAT = '%(asctime)s %(levelname)s\t%(message)s'
+LOG_DATE_FORMAT = '%H:%M:%S'
+
+
+def set_environment_variables():
+    """Sets application environment variables."""
+    if _LOCAL:
+        os.environ.setdefault('GSETTINGS_SCHEMA_DIR', PKGDATA_DIR)
+
+
+def set_libgd():
+    """Configures application to run our own libgd copy."""
+    if _LOCAL:
+        libgd_libdir = os.path.join(SOURCE_DIR, 'libgd', '.libs')
+        libgd_typelibdir = os.path.join(SOURCE_DIR, 'libgd')
+    else:
+        libgd_libdir = '@pkglibdir@'
+        libgd_typelibdir = '@pkglibdir@/girepository-1.0'
+
+    GIRepository.Repository.prepend_search_path(libgd_typelibdir)
+    GIRepository.Repository.prepend_library_path(libgd_libdir)
+
+
+def set_exception_hook():
+    """Configures sys.excepthook to enforce Gtk application exiting."""
 
     def new_hook(etype, evalue, etb):
         old_hook(etype, evalue, etb)
         while Gtk.main_level():
             Gtk.main_quit()
         sys.exit()
+
+    old_hook = sys.excepthook
     sys.excepthook = new_hook
 
-if __name__ == "__main__":
-    install_excepthook()
 
+def set_log_level():
+    """Sets application log level according to debug value."""
     parser = argparse.ArgumentParser()
-    parser.add_argument('-d', "--debug", action="store_true", default=False, dest="debug")
+    parser.add_argument('-d', '--debug', action='store_true',
+                        default=False, dest='debug')
     args = parser.parse_args()
     if args.debug:
-        logging.basicConfig(level=logging.DEBUG,
-                            format='%(asctime)s %(levelname)s\t%(message)s',
-                            datefmt='%H:%M:%S')
+        logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT,
+                            datefmt=LOG_DATE_FORMAT)
         # Gtk hates "-d" switch, so lets drop it
         if '-d' in sys.argv:
-            sys.argv.remove("-d")
+            sys.argv.remove('-d')
         if '--debug' in sys.argv:
-            sys.argv.remove("--debug")
+            sys.argv.remove('--debug')
     else:
-        logging.basicConfig(level=logging.WARN,
-                            format='%(asctime)s %(levelname)s\t%(message)s',
-                            datefmt='%H:%M:%S')
+        logging.basicConfig(level=logging.WARN, format=LOG_FORMAT,
+                            datefmt=LOG_DATE_FORMAT)
+
 
-    locale.bindtextdomain('gnome-music', localedir)
+def set_internationalization():
+    """Sets application internationalization."""
+    locale.bindtextdomain('gnome-music', LOCALE_DIR)
     locale.textdomain('gnome-music')
-    gettext.bindtextdomain('gnome-music', localedir)
+    gettext.bindtextdomain('gnome-music', LOCALE_DIR)
     gettext.textdomain('gnome-music')
 
-    resource = Gio.resource_load(os.path.join(pkgdatadir, 'gnome-music.gresource'))
-    Gio.Resource._register(resource)
 
+def set_resources():
+    """Sets application ressource file."""
+    resource = Gio.resource_load(
+        os.path.join(PKGDATA_DIR, 'gnome-music.gresource'))
+    Gio.Resource._register(resource)  # nopep8
+
+
+def run_application():
+    """Runs GNOME Music application and returns its exit code."""
     from gnomemusic.application import Application
 
     app = Application()
     signal.signal(signal.SIGINT, signal.SIG_DFL)
-    exit_status = app.run(sys.argv)
-    sys.exit(exit_status)
+    return app.run(sys.argv)
+
+
+def main():
+    """Sets environment and runs GNOME Music."""
+    set_environment_variables()
+    set_libgd()
+    set_exception_hook()
+    set_log_level()
+    set_internationalization()
+    set_resources()
+    return run_application()
+
+
+if __name__ == '__main__':
+    if _LOCAL:
+        print('Running from source tree, using local files.')
+    sys.exit(main())


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]