~versable/elementary-community/variety

« back to all changes in this revision

Viewing changes to variety_lib/helpers.py

  • Committer: Versable
  • Date: 2013-06-18 11:21:16 UTC
  • Revision ID: versable@gmail.com-20130618112116-1zevbh7bsfxvc7cq
Clean up for merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
2
 
### BEGIN LICENSE
3
 
# Copyright (c) 2012, Peter Levi <peterlevi@peterlevi.com>
4
 
# This program is free software: you can redistribute it and/or modify it 
5
 
# under the terms of the GNU General Public License version 3, as published 
6
 
# by the Free Software Foundation.
7
 
8
 
# This program is distributed in the hope that it will be useful, but 
9
 
# WITHOUT ANY WARRANTY; without even the implied warranties of 
10
 
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR 
11
 
# PURPOSE.  See the GNU General Public License for more details.
12
 
13
 
# You should have received a copy of the GNU General Public License along 
14
 
# with this program.  If not, see <http://www.gnu.org/licenses/>.
15
 
### END LICENSE
16
 
 
17
 
"""Helpers for an Ubuntu application."""
18
 
import logging
19
 
import os
20
 
 
21
 
from . varietyconfig import get_data_file
22
 
from . Builder import Builder
23
 
 
24
 
import gettext
25
 
from gettext import gettext as _
26
 
gettext.textdomain('variety')
27
 
 
28
 
def get_builder(builder_file_name):
29
 
    """Return a fully-instantiated Gtk.Builder instance from specified ui 
30
 
    file
31
 
    
32
 
    :param builder_file_name: The name of the builder file, without extension.
33
 
        Assumed to be in the 'ui' directory under the data path.
34
 
    """
35
 
    # Look for the ui file that describes the user interface.
36
 
    ui_filename = get_data_file('ui', '%s.ui' % (builder_file_name,))
37
 
    if not os.path.exists(ui_filename):
38
 
        ui_filename = None
39
 
 
40
 
    builder = Builder()
41
 
    builder.set_translation_domain('variety')
42
 
    builder.add_from_file(ui_filename)
43
 
    return builder
44
 
 
45
 
 
46
 
# Owais Lone : To get quick access to icons and stuff.
47
 
def get_media_file(media_file_name):
48
 
    media_filename = get_data_file('media', '%s' % (media_file_name,))
49
 
    if not os.path.exists(media_filename):
50
 
        media_filename = None
51
 
 
52
 
    return "file:///"+media_filename
53
 
 
54
 
class NullHandler(logging.Handler):
55
 
    def emit(self, record):
56
 
        pass
57
 
 
58
 
def set_up_logging(opts):
59
 
    # add a handler to prevent basicConfig
60
 
    root = logging.getLogger()
61
 
    null_handler = NullHandler()
62
 
    root.addHandler(null_handler)
63
 
 
64
 
    formatter = logging.Formatter("%(levelname)s: %(asctime)s: %(funcName)s() '%(message)s'")
65
 
 
66
 
    logger = logging.getLogger('variety')
67
 
    logger_sh = logging.StreamHandler()
68
 
    logger_sh.setFormatter(formatter)
69
 
    logger.addHandler(logger_sh)
70
 
 
71
 
    try:
72
 
        logger_file = logging.FileHandler(
73
 
            os.path.join(os.path.expanduser("~/.config/variety/"), "variety.log"), "w")
74
 
        logger_file.setFormatter(logging.Formatter("%(levelname)s: %(funcName)s() '%(message)s'"))
75
 
        logger.addHandler(logger_file)
76
 
    except Exception:
77
 
        logger.exception("Could not create file logger")
78
 
        pass
79
 
 
80
 
    lib_logger = logging.getLogger('variety_lib')
81
 
    lib_logger_sh = logging.StreamHandler()
82
 
    lib_logger_sh.setFormatter(formatter)
83
 
    lib_logger.addHandler(lib_logger_sh)
84
 
 
85
 
    # Set the logging level to show debug messages.
86
 
    if opts.verbose:
87
 
        logger.setLevel(logging.INFO)
88
 
        logger.debug('logging enabled')
89
 
    if opts.verbose > 1:
90
 
        logger.setLevel(logging.DEBUG)
91
 
    if opts.verbose > 2:
92
 
        lib_logger.setLevel(logging.DEBUG)
93
 
 
94
 
def get_help_uri(page=None):
95
 
    # help_uri from source tree - default language
96
 
    here = os.path.dirname(__file__)
97
 
    help_uri = os.path.abspath(os.path.join(here, '..', 'help', 'C'))
98
 
 
99
 
    if not os.path.exists(help_uri):
100
 
        # installed so use gnome help tree - user's language
101
 
        help_uri = 'variety'
102
 
 
103
 
    # unspecified page is the index.page
104
 
    if page is not None:
105
 
        help_uri = '%s#%s' % (help_uri, page)
106
 
 
107
 
    return help_uri
108
 
 
109
 
def show_uri(parent, link):
110
 
    from gi.repository import Gtk # pylint: disable=E0611
111
 
    screen = parent.get_screen()
112
 
    Gtk.show_uri(screen, link, Gtk.get_current_event_time())
113
 
 
114
 
def alias(alternative_function_name):
115
 
    '''see http://www.drdobbs.com/web-development/184406073#l9'''
116
 
    def decorator(function):
117
 
        '''attach alternative_function_name(s) to function'''
118
 
        if not hasattr(function, 'aliases'):
119
 
            function.aliases = []
120
 
        function.aliases.append(alternative_function_name)
121
 
        return function
122
 
    return decorator