/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: Martin Pool
  • Date: 2010-05-27 03:07:30 UTC
  • mfrom: (688.1.5 201956-help)
  • Revision ID: mbp@canonical.com-20100527030730-os0opv1xroetccm9
Make find/goto more discoverable

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
"""Graphical support for Bazaar using GTK.
16
16
 
17
17
This plugin includes:
18
 
gannotate         GTK+ annotate.
19
 
gbranch           GTK+ branching.
20
 
gcheckout         GTK+ checkout.
 
18
gannotate         GTK+ annotate. 
 
19
gbranch           GTK+ branching. 
 
20
gcheckout         GTK+ checkout. 
21
21
gcommit           GTK+ commit dialog.
22
 
gconflicts        GTK+ conflicts.
23
 
gdiff             Show differences in working tree in a GTK+ Window.
 
22
gconflicts        GTK+ conflicts. 
 
23
gdiff             Show differences in working tree in a GTK+ Window. 
24
24
ginit             Initialise a new branch.
 
25
ginfo             GTK+ branch info dialog
25
26
gloom             GTK+ loom browse dialog
26
27
gmerge            GTK+ merge dialog
27
 
gmissing          GTK+ missing revisions dialog.
28
 
gpreferences      GTK+ preferences dialog.
 
28
gmissing          GTK+ missing revisions dialog. 
 
29
gpreferences      GTK+ preferences dialog. 
29
30
gpush             GTK+ push.
30
31
gsend             GTK+ send merge directive.
31
32
gstatus           GTK+ status dialog.
32
33
gtags             Manage branch tags.
33
 
visualise         Graphically visualise this branch.
 
34
visualise         Graphically visualise this branch. 
34
35
"""
35
36
 
36
37
import os
54
55
from bzrlib import (
55
56
    branch,
56
57
    config,
 
58
    errors,
57
59
    )
58
60
from bzrlib.commands import plugin_cmds
59
61
 
60
 
from info import (
61
 
    bzr_plugin_version as version_info,
62
 
    bzr_compatible_versions,
63
 
    )
 
62
 
 
63
version_info = (0, 99, 0, 'dev', 1)
64
64
 
65
65
if version_info[3] == 'final':
66
66
    version_string = '%d.%d.%d' % version_info[:3]
68
68
    version_string = '%d.%d.%d%s%d' % version_info
69
69
__version__ = version_string
70
70
 
71
 
bzrlib.api.require_any_api(bzrlib, bzr_compatible_versions)
 
71
COMPATIBLE_BZR_VERSIONS = [(1, 6, 0), (1, 7, 0), (1, 8, 0), (1, 9, 0),
 
72
                           (1, 10, 0), (1, 11, 0), (1, 12, 0), (1, 13, 0),
 
73
                           (1, 15, 0),
 
74
                           (1, 17, 0),
 
75
                           (2, 1, 0),
 
76
                           (2, 2, 0),
 
77
                           ]
 
78
 
 
79
bzrlib.api.require_any_api(bzrlib, COMPATIBLE_BZR_VERSIONS)
72
80
 
73
81
if __name__ != 'bzrlib.plugins.gtk':
74
82
    from bzrlib.trace import warning
75
83
    warning("Not running as bzrlib.plugins.gtk, things may break.")
76
84
 
 
85
def import_pygtk():
 
86
    try:
 
87
        import pygtk
 
88
    except ImportError:
 
89
        raise errors.BzrCommandError("PyGTK not installed.")
 
90
    pygtk.require('2.0')
 
91
    return pygtk
 
92
 
77
93
 
78
94
def set_ui_factory():
 
95
    import_pygtk()
79
96
    from ui import GtkUIFactory
80
97
    import bzrlib.ui
81
98
    bzrlib.ui.ui_factory = GtkUIFactory()
99
116
    return data_path(os.path.join('icons', *args))
100
117
 
101
118
 
 
119
def open_display():
 
120
    pygtk = import_pygtk()
 
121
    try:
 
122
        import gtk
 
123
    except RuntimeError, e:
 
124
        if str(e) == "could not open display":
 
125
            raise NoDisplayError
 
126
    set_ui_factory()
 
127
    return gtk
 
128
 
 
129
 
102
130
commands = {
103
131
    "gannotate": ["gblame", "gpraise"],
104
132
    "gbranch": [],
107
135
    "gconflicts": [],
108
136
    "gdiff": [],
109
137
    "ginit": [],
 
138
    "ginfo": [],
110
139
    "gmerge": [],
111
140
    "gmissing": [],
112
141
    "gpreferences": [],
113
142
    "gpush": [],
 
143
    "gselftest": [],
114
144
    "gsend": [],
115
145
    "gstatus": ["gst"],
116
146
    "gtags": [],
129
159
                              "bzrlib.plugins.gtk.commands")
130
160
 
131
161
def save_commit_messages(*args):
132
 
    from bzrlib.plugins.gtk import commitmsgs
133
 
    commitmsgs.save_commit_messages(*args)
 
162
    from bzrlib.plugins.gtk import commit
 
163
    commit.save_commit_messages(*args)
134
164
 
135
165
branch.Branch.hooks.install_named_hook('post_uncommit',
136
166
                                       save_commit_messages,
137
167
                                       "Saving commit messages for gcommit")
138
168
 
139
 
option_registry = getattr(config, "option_registry", None)
140
 
if option_registry is not None:
141
 
    config.option_registry.register_lazy('nautilus_integration',
142
 
            'bzrlib.plugins.gtk.config', 'opt_nautilus_integration')
 
169
import gettext
 
170
gettext.install('olive-gtk')
 
171
 
 
172
# Let's create a specialized alias to protect '_' from being erased by other
 
173
# uses of '_' as an anonymous variable (think pdb for one).
 
174
_i18n = gettext.gettext
 
175
 
 
176
class NoDisplayError(errors.BzrCommandError):
 
177
    """gtk could not find a proper display"""
 
178
 
 
179
    def __str__(self):
 
180
        return "No DISPLAY. Unable to run GTK+ application."
 
181
 
 
182
 
 
183
credential_store_registry = getattr(config, "credential_store_registry", None)
 
184
if credential_store_registry is not None:
 
185
    try:
 
186
        credential_store_registry.register_lazy(
 
187
            "gnome-keyring", "bzrlib.plugins.gtk.keyring", "GnomeKeyringCredentialStore",
 
188
            help="The GNOME Keyring.", fallback=True)
 
189
    except TypeError:
 
190
    # Fallback credentials stores were introduced in Bazaar 1.15
 
191
        credential_store_registry.register_lazy(
 
192
            "gnome-keyring", "bzrlib.plugins.gtk.keyring", "GnomeKeyringCredentialStore",
 
193
            help="The GNOME Keyring.")
 
194
 
143
195
 
144
196
def load_tests(basic_tests, module, loader):
145
197
    testmod_names = [
150
202
    try:
151
203
        result = basic_tests
152
204
        try:
153
 
            import gi.repository.Gtk
154
 
        except ImportError:
 
205
            import_pygtk()
 
206
        except errors.BzrCommandError:
155
207
            return basic_tests
156
208
        basic_tests.addTest(loader.loadTestsFromModuleNames(
157
209
                ["%s.%s" % (__name__, tmn) for tmn in testmod_names]))
160
212
            reload(sys)
161
213
            sys.setdefaultencoding(default_encoding)
162
214
    return basic_tests
163