/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-11-30 21:45:54 UTC
  • Revision ID: jelmer@samba.org-20111130214554-5kfx0b5y7t5zh033
Extend branch preferences, show location widget.

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
    )
 
58
from bzrlib.commands import plugin_cmds
 
59
 
 
60
from info import (
 
61
    bzr_plugin_version as version_info,
 
62
    bzr_compatible_versions,
 
63
    )
 
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
bzrlib.api.require_any_api(bzrlib, bzr_compatible_versions)
 
72
 
 
73
if __name__ != 'bzrlib.plugins.gtk':
 
74
    from bzrlib.trace import warning
 
75
    warning("Not running as bzrlib.plugins.gtk, things may break.")
 
76
 
 
77
 
 
78
def set_ui_factory():
 
79
    from ui import GtkUIFactory
 
80
    import bzrlib.ui
 
81
    bzrlib.ui.ui_factory = GtkUIFactory()
 
82
 
 
83
 
 
84
def data_basedirs():
 
85
    return [os.path.dirname(__file__),
 
86
             "/usr/share/bzr-gtk", 
 
87
             "/usr/local/share/bzr-gtk"]
 
88
 
 
89
 
 
90
def data_path(*args):
 
91
    for basedir in data_basedirs():
 
92
        path = os.path.join(basedir, *args)
 
93
        if os.path.exists(path):
 
94
            return path
 
95
    return None
 
96
 
 
97
 
 
98
def icon_path(*args):
 
99
    return data_path(os.path.join('icons', *args))
 
100
 
 
101
 
 
102
commands = {
 
103
    "gannotate": ["gblame", "gpraise"],
 
104
    "gbranch": [],
 
105
    "gcheckout": [],
 
106
    "gcommit": ["gci"],
 
107
    "gconflicts": [],
 
108
    "gdiff": [],
 
109
    "ginit": [],
 
110
    "gmerge": [],
 
111
    "gmissing": [],
 
112
    "gpreferences": [],
 
113
    "gpush": [],
 
114
    "gsend": [],
 
115
    "gstatus": ["gst"],
 
116
    "gtags": [],
 
117
    "visualise": ["visualize", "vis", "viz", 'glog'],
 
118
    }
 
119
 
 
120
try:
 
121
    from bzrlib.plugins import loom
 
122
except ImportError:
 
123
    pass # Loom plugin doesn't appear to be present
 
124
else:
 
125
    commands["gloom"] = []
 
126
 
 
127
for cmd, aliases in commands.iteritems():
 
128
    plugin_cmds.register_lazy("cmd_%s" % cmd, aliases,
 
129
                              "bzrlib.plugins.gtk.commands")
 
130
 
 
131
def save_commit_messages(*args):
 
132
    from bzrlib.plugins.gtk import commitmsgs
 
133
    commitmsgs.save_commit_messages(*args)
 
134
 
 
135
branch.Branch.hooks.install_named_hook('post_uncommit',
 
136
                                       save_commit_messages,
 
137
                                       "Saving commit messages for gcommit")
 
138
 
 
139
config.option_registry.register(
 
140
    config.Option('nautilus_integration', default=True,
 
141
           from_unicode=config.bool_from_store,
 
142
           help='''\
 
143
Whether to enable nautilus integration.
 
144
 
 
145
Defines whether Nautilus integration should be enabled.
 
146
'''))
 
147
 
 
148
 
 
149
def load_tests(basic_tests, module, loader):
 
150
    testmod_names = [
 
151
        'tests',
 
152
        ]
 
153
    import sys
 
154
    default_encoding = sys.getdefaultencoding()
 
155
    try:
 
156
        result = basic_tests
 
157
        try:
 
158
            import gi.repository.Gtk
 
159
        except ImportError:
 
160
            return basic_tests
 
161
        basic_tests.addTest(loader.loadTestsFromModuleNames(
 
162
                ["%s.%s" % (__name__, tmn) for tmn in testmod_names]))
 
163
    finally:
 
164
        if sys.getdefaultencoding() != default_encoding:
 
165
            reload(sys)
 
166
            sys.setdefaultencoding(default_encoding)
 
167
    return basic_tests
 
168