/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: David Allouche
  • Date: 2006-05-08 13:03:59 UTC
  • Revision ID: david.allouche@canonical.com-20060508130359-f9a471d0d0b1dcf2
remove --robust, pyflakes fixes, update README

Thanks to Robert Collins' new graphing logic, the --robust option is
no longer needed to prevent extreme graph width on broken branches.
That allows removing a bunch of flaky code.

Remove a few spurious imports (thanks to pyflakes).

Update README to request bzr>=0.8.

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
 
ginfo             GTK+ branch info dialog
26
 
gloom             GTK+ loom browse dialog
27
 
gmerge            GTK+ merge dialog
28
 
gmissing          GTK+ missing revisions dialog. 
29
 
gpreferences      GTK+ preferences dialog. 
30
 
gpush             GTK+ push.
31
 
gsend             GTK+ send merge directive.
32
 
gstatus           GTK+ status dialog.
33
 
gtags             Manage branch tags.
34
 
visualise         Graphically visualise this branch. 
35
 
"""
36
 
 
37
 
import os
38
 
import sys
39
 
 
40
 
if getattr(sys, "frozen", None) is not None: # we run bzr.exe
41
 
 
42
 
    # FIXME: Unless a better packaging solution is found, the following
43
 
    # provides a workaround for https://bugs.launchpad.net/bzr/+bug/388790 Also
44
 
    # see https://code.edge.launchpad.net/~vila/bzr-gtk/388790-windows-setup
45
 
    # for more details about while it's needed.
46
 
 
47
 
    # NOTE: _lib must be ahead of bzrlib or sax.saxutils (in olive) fails
48
 
    here = os.path.dirname(__file__)
49
 
    sys.path.insert(0, os.path.join(here, '_lib'))
50
 
    sys.path.append(os.path.join(here, '_lib/gtk-2.0'))
51
 
 
52
 
 
53
 
import bzrlib
54
 
import bzrlib.api
55
 
from bzrlib import (
56
 
    branch,
57
 
    config,
58
 
    errors,
59
 
    )
60
 
from bzrlib.commands import plugin_cmds
61
 
 
62
 
 
63
 
version_info = (0, 98, 0, 'dev', 1)
64
 
 
65
 
if version_info[3] == 'final':
66
 
    version_string = '%d.%d.%d' % version_info[:3]
67
 
else:
68
 
    version_string = '%d.%d.%d%s%d' % version_info
69
 
__version__ = version_string
70
 
 
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
 
                           ]
77
 
 
78
 
bzrlib.api.require_any_api(bzrlib, COMPATIBLE_BZR_VERSIONS)
79
 
 
80
 
if __name__ != 'bzrlib.plugins.gtk':
81
 
    from bzrlib.trace import warning
82
 
    warning("Not running as bzrlib.plugins.gtk, things may break.")
83
 
 
84
 
def import_pygtk():
85
 
    try:
86
 
        import pygtk
87
 
    except ImportError:
88
 
        raise errors.BzrCommandError("PyGTK not installed.")
89
 
    pygtk.require('2.0')
90
 
    return pygtk
91
 
 
92
 
 
93
 
def set_ui_factory():
94
 
    import_pygtk()
95
 
    from ui import GtkUIFactory
96
 
    import bzrlib.ui
97
 
    bzrlib.ui.ui_factory = GtkUIFactory()
98
 
 
99
 
 
100
 
def data_basedirs():
101
 
    return [os.path.dirname(__file__),
102
 
             "/usr/share/bzr-gtk", 
103
 
             "/usr/local/share/bzr-gtk"]
104
 
 
105
 
 
106
 
def data_path(*args):
107
 
    for basedir in data_basedirs():
108
 
        path = os.path.join(basedir, *args)
109
 
        if os.path.exists(path):
110
 
            return path
111
 
    return None
112
 
 
113
 
 
114
 
def icon_path(*args):
115
 
    return data_path(os.path.join('icons', *args))
116
 
 
117
 
 
118
 
def open_display():
119
 
    pygtk = import_pygtk()
120
 
    try:
121
 
        import gtk
122
 
    except RuntimeError, e:
123
 
        if str(e) == "could not open display":
124
 
            raise NoDisplayError
125
 
    set_ui_factory()
126
 
    return gtk
127
 
 
128
 
 
129
 
commands = {
130
 
    "gannotate": ["gblame", "gpraise"],
131
 
    "gbranch": [],
132
 
    "gcheckout": [],
133
 
    "gcommit": ["gci"],
134
 
    "gconflicts": [],
135
 
    "gdiff": [],
136
 
    "ginit": [],
137
 
    "ginfo": [],
138
 
    "gmerge": [],
139
 
    "gmissing": [],
140
 
    "gpreferences": [],
141
 
    "gpush": [],
142
 
    "gselftest": [],
143
 
    "gsend": [],
144
 
    "gstatus": ["gst"],
145
 
    "gtags": [],
146
 
    "visualise": ["visualize", "vis", "viz"],
147
 
    }
148
 
 
149
 
try:
150
 
    from bzrlib.plugins import loom
151
 
except ImportError:
152
 
    pass # Loom plugin doesn't appear to be present
153
 
else:
154
 
    commands["gloom"] = []
155
 
 
156
 
for cmd, aliases in commands.iteritems():
157
 
    plugin_cmds.register_lazy("cmd_%s" % cmd, aliases,
158
 
                              "bzrlib.plugins.gtk.commands")
159
 
 
160
 
def save_commit_messages(*args):
161
 
    from bzrlib.plugins.gtk import commit
162
 
    commit.save_commit_messages(*args)
163
 
 
164
 
branch.Branch.hooks.install_named_hook('post_uncommit',
165
 
                                       save_commit_messages,
166
 
                                       "Saving commit messages for gcommit")
167
 
 
168
 
import gettext
169
 
gettext.install('olive-gtk')
170
 
 
171
 
# Let's create a specialized alias to protect '_' from being erased by other
172
 
# uses of '_' as an anonymous variable (think pdb for one).
173
 
_i18n = gettext.gettext
174
 
 
175
 
class NoDisplayError(errors.BzrCommandError):
176
 
    """gtk could not find a proper display"""
177
 
 
178
 
    def __str__(self):
179
 
        return "No DISPLAY. Unable to run GTK+ application."
180
 
 
181
 
 
182
 
credential_store_registry = getattr(config, "credential_store_registry", None)
183
 
if credential_store_registry is not None:
184
 
    try:
185
 
        credential_store_registry.register_lazy(
186
 
            "gnome-keyring", "bzrlib.plugins.gtk.keyring", "GnomeKeyringCredentialStore",
187
 
            help="The GNOME Keyring.", fallback=True)
188
 
    except TypeError:
189
 
    # Fallback credentials stores were introduced in Bazaar 1.15
190
 
        credential_store_registry.register_lazy(
191
 
            "gnome-keyring", "bzrlib.plugins.gtk.keyring", "GnomeKeyringCredentialStore",
192
 
            help="The GNOME Keyring.")
193
 
 
194
 
 
195
 
def load_tests(basic_tests, module, loader):
196
 
    testmod_names = [
197
 
        'tests',
198
 
        ]
199
 
    import sys
200
 
    default_encoding = sys.getdefaultencoding()
201
 
    try:
202
 
        result = basic_tests
203
 
        try:
204
 
            import_pygtk()
205
 
        except errors.BzrCommandError:
206
 
            return basic_tests
207
 
        basic_tests.addTest(loader.loadTestsFromModuleNames(
208
 
                ["%s.%s" % (__name__, tmn) for tmn in testmod_names]))
209
 
    finally:
210
 
        if sys.getdefaultencoding() != default_encoding:
211
 
            reload(sys)
212
 
            sys.setdefaultencoding(default_encoding)
213
 
    return basic_tests