/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to __init__.py

  • Committer: Jelmer Vernooij
  • Date: 2011-04-10 18:44:39 UTC
  • mto: This revision was merged to the branch mainline in revision 730.
  • Revision ID: jelmer@samba.org-20110410184439-g7hqaacexqtviq13
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# This program is free software; you can redistribute it and/or modify
 
2
# it under the terms of the GNU General Public License as published by
 
3
# the Free Software Foundation; either version 2 of the License, or
 
4
# (at your option) any later version.
 
5
 
 
6
# This program is distributed in the hope that it will be useful,
 
7
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
8
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
9
# GNU General Public License for more details.
 
10
 
 
11
# You should have received a copy of the GNU General Public License
 
12
# along with this program; if not, write to the Free Software
 
13
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
14
 
 
15
"""Graphical support for Bazaar using GTK.
 
16
 
 
17
This plugin includes:
 
18
gannotate         GTK+ annotate.
 
19
gbranch           GTK+ branching.
 
20
gcheckout         GTK+ checkout.
 
21
gcommit           GTK+ commit dialog.
 
22
gconflicts        GTK+ conflicts.
 
23
gdiff             Show differences in working tree in a GTK+ Window.
 
24
ginit             Initialise a new branch.
 
25
gloom             GTK+ loom browse dialog
 
26
gmerge            GTK+ merge dialog
 
27
gmissing          GTK+ missing revisions dialog.
 
28
gpreferences      GTK+ preferences dialog.
 
29
gpush             GTK+ push.
 
30
gsend             GTK+ send merge directive.
 
31
gstatus           GTK+ status dialog.
 
32
gtags             Manage branch tags.
 
33
visualise         Graphically visualise this branch.
 
34
"""
 
35
 
 
36
import os
 
37
import sys
 
38
 
 
39
if getattr(sys, "frozen", None) is not None: # we run bzr.exe
 
40
 
 
41
    # FIXME: Unless a better packaging solution is found, the following
 
42
    # provides a workaround for https://bugs.launchpad.net/bzr/+bug/388790 Also
 
43
    # see https://code.edge.launchpad.net/~vila/bzr-gtk/388790-windows-setup
 
44
    # for more details about while it's needed.
 
45
 
 
46
    # NOTE: _lib must be ahead of bzrlib or sax.saxutils (in olive) fails
 
47
    here = os.path.dirname(__file__)
 
48
    sys.path.insert(0, os.path.join(here, '_lib'))
 
49
    sys.path.append(os.path.join(here, '_lib/gtk-2.0'))
 
50
 
 
51
 
 
52
import bzrlib
 
53
import bzrlib.api
 
54
from bzrlib import (
 
55
    branch,
 
56
    config,
 
57
    errors,
 
58
    )
 
59
from bzrlib.commands import plugin_cmds
 
60
 
 
61
from info import (
 
62
    bzr_plugin_version as version_info,
 
63
    bzr_compatible_versions,
 
64
    )
 
65
 
 
66
if version_info[3] == 'final':
 
67
    version_string = '%d.%d.%d' % version_info[:3]
 
68
else:
 
69
    version_string = '%d.%d.%d%s%d' % version_info
 
70
__version__ = version_string
 
71
 
 
72
bzrlib.api.require_any_api(bzrlib, bzr_compatible_versions)
 
73
 
 
74
if __name__ != 'bzrlib.plugins.gtk':
 
75
    from bzrlib.trace import warning
 
76
    warning("Not running as bzrlib.plugins.gtk, things may break.")
 
77
 
 
78
def import_pygtk():
 
79
    try:
 
80
        import pygtk
 
81
    except ImportError:
 
82
        raise errors.BzrCommandError("PyGTK not installed.")
 
83
    pygtk.require('2.0')
 
84
    return pygtk
 
85
 
 
86
 
 
87
def set_ui_factory():
 
88
    import_pygtk()
 
89
    from ui import GtkUIFactory
 
90
    import bzrlib.ui
 
91
    bzrlib.ui.ui_factory = GtkUIFactory()
 
92
 
 
93
 
 
94
def data_basedirs():
 
95
    return [os.path.dirname(__file__),
 
96
             "/usr/share/bzr-gtk", 
 
97
             "/usr/local/share/bzr-gtk"]
 
98
 
 
99
 
 
100
def data_path(*args):
 
101
    for basedir in data_basedirs():
 
102
        path = os.path.join(basedir, *args)
 
103
        if os.path.exists(path):
 
104
            return path
 
105
    return None
 
106
 
 
107
 
 
108
def icon_path(*args):
 
109
    return data_path(os.path.join('icons', *args))
 
110
 
 
111
 
 
112
commands = {
 
113
    "gannotate": ["gblame", "gpraise"],
 
114
    "gbranch": [],
 
115
    "gcheckout": [],
 
116
    "gcommit": ["gci"],
 
117
    "gconflicts": [],
 
118
    "gdiff": [],
 
119
    "ginit": [],
 
120
    "gmerge": [],
 
121
    "gmissing": [],
 
122
    "gpreferences": [],
 
123
    "gpush": [],
 
124
    "gsend": [],
 
125
    "gstatus": ["gst"],
 
126
    "gtags": [],
 
127
    "visualise": ["visualize", "vis", "viz", 'glog'],
 
128
    }
 
129
 
 
130
try:
 
131
    from bzrlib.plugins import loom
 
132
except ImportError:
 
133
    pass # Loom plugin doesn't appear to be present
 
134
else:
 
135
    commands["gloom"] = []
 
136
 
 
137
for cmd, aliases in commands.iteritems():
 
138
    plugin_cmds.register_lazy("cmd_%s" % cmd, aliases,
 
139
                              "bzrlib.plugins.gtk.commands")
 
140
 
 
141
def save_commit_messages(*args):
 
142
    from bzrlib.plugins.gtk import commit
 
143
    commit.save_commit_messages(*args)
 
144
 
 
145
branch.Branch.hooks.install_named_hook('post_uncommit',
 
146
                                       save_commit_messages,
 
147
                                       "Saving commit messages for gcommit")
 
148
 
 
149
credential_store_registry = getattr(config, "credential_store_registry", None)
 
150
if credential_store_registry is not None:
 
151
    try:
 
152
        credential_store_registry.register_lazy(
 
153
            "gnome-keyring", "bzrlib.plugins.gtk.keyring", "GnomeKeyringCredentialStore",
 
154
            help="The GNOME Keyring.", fallback=True)
 
155
    except TypeError:
 
156
    # Fallback credentials stores were introduced in Bazaar 1.15
 
157
        credential_store_registry.register_lazy(
 
158
            "gnome-keyring", "bzrlib.plugins.gtk.keyring", "GnomeKeyringCredentialStore",
 
159
            help="The GNOME Keyring.")
 
160
 
 
161
 
 
162
def load_tests(basic_tests, module, loader):
 
163
    testmod_names = [
 
164
        'tests',
 
165
        ]
 
166
    import sys
 
167
    default_encoding = sys.getdefaultencoding()
 
168
    try:
 
169
        result = basic_tests
 
170
        try:
 
171
            import_pygtk()
 
172
        except errors.BzrCommandError:
 
173
            return basic_tests
 
174
        basic_tests.addTest(loader.loadTestsFromModuleNames(
 
175
                ["%s.%s" % (__name__, tmn) for tmn in testmod_names]))
 
176
    finally:
 
177
        if sys.getdefaultencoding() != default_encoding:
 
178
            reload(sys)
 
179
            sys.setdefaultencoding(default_encoding)
 
180
    return basic_tests
 
181