/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: Markus Korn
  • Date: 2009-03-05 16:50:39 UTC
  • mto: (635.2.4 trunk)
  • mto: This revision was merged to the branch mainline in revision 639.
  • Revision ID: thekorn@gmx.de-20090305165039-h6xh48wr9lwe1661
* register BranchSelectionBox() as a gobject type to fix (LP: #294396)

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
 
from __future__ import absolute_import
37
 
 
38
 
import os
39
 
import sys
40
 
 
41
 
if getattr(sys, "frozen", None) is not None: # we run bzr.exe
42
 
 
43
 
    # FIXME: Unless a better packaging solution is found, the following
44
 
    # provides a workaround for https://bugs.launchpad.net/bzr/+bug/388790 Also
45
 
    # see https://code.edge.launchpad.net/~vila/bzr-gtk/388790-windows-setup
46
 
    # for more details about while it's needed.
47
 
 
48
 
    # NOTE: _lib must be ahead of bzrlib or sax.saxutils (in olive) fails
49
 
    here = os.path.dirname(__file__)
50
 
    sys.path.insert(0, os.path.join(here, '_lib'))
51
 
    sys.path.append(os.path.join(here, '_lib/gtk-2.0'))
52
 
 
53
 
 
54
37
import bzrlib
55
38
import bzrlib.api
 
39
from bzrlib import errors
56
40
from bzrlib.commands import plugin_cmds
57
41
 
58
 
from bzrlib.plugins.gtk.info import (
59
 
    bzr_plugin_version as version_info,
60
 
    bzr_compatible_versions,
61
 
    )
 
42
import os.path
 
43
 
 
44
version_info = (0, 96, 0, 'dev', 1)
62
45
 
63
46
if version_info[3] == 'final':
64
47
    version_string = '%d.%d.%d' % version_info[:3]
66
49
    version_string = '%d.%d.%d%s%d' % version_info
67
50
__version__ = version_string
68
51
 
69
 
bzrlib.api.require_any_api(bzrlib, bzr_compatible_versions)
 
52
COMPATIBLE_BZR_VERSIONS = [(1, 6, 0), (1, 7, 0), (1, 8, 0), (1, 9, 0),
 
53
                           (1, 10, 0), (1, 11, 0), (1, 12, 0), (1, 13, 0)]
 
54
 
 
55
bzrlib.api.require_any_api(bzrlib, COMPATIBLE_BZR_VERSIONS)
70
56
 
71
57
if __name__ != 'bzrlib.plugins.gtk':
72
58
    from bzrlib.trace import warning
73
59
    warning("Not running as bzrlib.plugins.gtk, things may break.")
74
60
 
 
61
def import_pygtk():
 
62
    try:
 
63
        import pygtk
 
64
    except ImportError:
 
65
        raise errors.BzrCommandError("PyGTK not installed.")
 
66
    pygtk.require('2.0')
 
67
    return pygtk
 
68
 
75
69
 
76
70
def set_ui_factory():
77
 
    from bzrlib.plugins.gtk.ui import GtkUIFactory
 
71
    import_pygtk()
 
72
    from ui import GtkUIFactory
78
73
    import bzrlib.ui
79
74
    bzrlib.ui.ui_factory = GtkUIFactory()
80
75
 
97
92
    return data_path(os.path.join('icons', *args))
98
93
 
99
94
 
 
95
def open_display():
 
96
    pygtk = import_pygtk()
 
97
    try:
 
98
        import gtk
 
99
    except RuntimeError, e:
 
100
        if str(e) == "could not open display":
 
101
            raise NoDisplayError
 
102
    set_ui_factory()
 
103
    return gtk
 
104
 
 
105
 
100
106
commands = {
101
107
    "gannotate": ["gblame", "gpraise"],
102
108
    "gbranch": [],
103
 
    "gcheckout": [],
104
 
    "gcommit": ["gci"],
105
 
    "gconflicts": [],
 
109
    "gcheckout": [], 
 
110
    "gcommit": ["gci"], 
 
111
    "gconflicts": [], 
106
112
    "gdiff": [],
107
113
    "ginit": [],
 
114
    "ginfo": [],
108
115
    "gmerge": [],
109
 
    "gmissing": [],
110
 
    "gpreferences": [],
111
 
    "gpush": [],
 
116
    "gmissing": [], 
 
117
    "gpreferences": [], 
 
118
    "gpush": [], 
 
119
    "gselftest": [],
112
120
    "gsend": [],
113
121
    "gstatus": ["gst"],
114
122
    "gtags": [],
115
 
    "visualise": ["visualize", "vis", "viz", 'glog'],
 
123
    "visualise": ["visualize", "vis", "viz"],
116
124
    }
117
125
 
118
126
try:
123
131
    commands["gloom"] = []
124
132
 
125
133
for cmd, aliases in commands.iteritems():
126
 
    plugin_cmds.register_lazy("cmd_%s" % cmd, aliases,
127
 
                              "bzrlib.plugins.gtk.commands")
128
 
 
129
 
def save_commit_messages(*args):
130
 
    from bzrlib.plugins.gtk import commitmsgs
131
 
    commitmsgs.save_commit_messages(*args)
132
 
 
133
 
try:
134
 
    from bzrlib.hooks import install_lazy_named_hook
135
 
except ImportError:
136
 
    from bzrlib.branch import Branch
137
 
    Branch.hooks.install_named_hook('post_uncommit',
138
 
                                    save_commit_messages,
139
 
                                    "Saving commit messages for gcommit")
140
 
else:
141
 
    install_lazy_named_hook("bzrlib.branch", "Branch.hooks",
142
 
        'post_uncommit', save_commit_messages, "Saving commit messages for gcommit")
143
 
 
144
 
try:
145
 
    from bzrlib.registry import register_lazy
146
 
except ImportError:
147
 
    from bzrlib import config
148
 
    option_registry = getattr(config, "option_registry", None)
149
 
    if option_registry is not None:
150
 
        config.option_registry.register_lazy('nautilus_integration',
151
 
                'bzrlib.plugins.gtk.config', 'opt_nautilus_integration')
152
 
else:
153
 
    register_lazy("bzrlib.config", "option_registry",
154
 
        'nautilus_integration', 'bzrlib.plugins.gtk.config',
155
 
        'opt_nautilus_integration')
156
 
 
157
 
 
158
 
def load_tests(basic_tests, module, loader):
159
 
    testmod_names = [
160
 
        'tests',
161
 
        ]
 
134
    plugin_cmds.register_lazy("cmd_%s" % cmd, aliases, "bzrlib.plugins.gtk.commands")
 
135
 
 
136
 
 
137
import gettext
 
138
gettext.install('olive-gtk')
 
139
 
 
140
# Let's create a specialized alias to protect '_' from being erased by other
 
141
# uses of '_' as an anonymous variable (think pdb for one).
 
142
_i18n = gettext.gettext
 
143
 
 
144
class NoDisplayError(errors.BzrCommandError):
 
145
    """gtk could not find a proper display"""
 
146
 
 
147
    def __str__(self):
 
148
        return "No DISPLAY. Unable to run GTK+ application."
 
149
 
 
150
 
 
151
def test_suite():
 
152
    from unittest import TestSuite
 
153
    import tests
162
154
    import sys
163
155
    default_encoding = sys.getdefaultencoding()
164
156
    try:
165
 
        result = basic_tests
 
157
        result = TestSuite()
166
158
        try:
167
 
            import gi.repository.Gtk
168
 
        except ImportError:
169
 
            return basic_tests
170
 
        basic_tests.addTest(loader.loadTestsFromModuleNames(
171
 
                ["%s.%s" % (__name__, tmn) for tmn in testmod_names]))
 
159
            import_pygtk()
 
160
        except errors.BzrCommandError:
 
161
            return result
 
162
        result.addTest(tests.test_suite())
172
163
    finally:
173
164
        if sys.getdefaultencoding() != default_encoding:
174
165
            reload(sys)
175
166
            sys.setdefaultencoding(default_encoding)
176
 
    return basic_tests
177
 
 
 
167
    return result