~qbzr-dev/qbzr/0.21

« back to all changes in this revision

Viewing changes to __init__.py

  • Committer: Lukas Lalinsky
  • Date: 2007-03-09 10:52:10 UTC
  • Revision ID: lalinsky@gmail.com-20070309105210-4cfmz39cnsvshr62
Add Windows installer.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
# along with this program; if not, write to the Free Software
18
18
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
19
 
 
20
__version__ = "0.2.0"
 
21
 
 
22
import os.path
 
23
import sys
 
24
 
 
25
if hasattr(sys, "frozen"):
 
26
    # "hack in" our PyQt4 binaries
 
27
    sys.path.append(os.path.join(os.path.dirname(__file__), '_lib'))
 
28
 
20
29
import bzrlib.plugins.qbzr.resources
21
 
from bzrlib.plugins.qbzr.browse import *
22
 
from bzrlib.plugins.qbzr.commit import *
23
 
from bzrlib.plugins.qbzr.diff import *
24
 
from bzrlib.plugins.qbzr.log import *
25
 
 
 
30
from bzrlib.option import Option
 
31
from bzrlib.commands import Command, register_command
 
32
from bzrlib.lazy_import import lazy_import
 
33
lazy_import(globals(), '''
 
34
from PyQt4 import QtGui
 
35
from bzrlib.branch import Branch
 
36
from bzrlib.bzrdir import BzrDir
 
37
from bzrlib.plugins.qbzr.annotate import AnnotateWindow
 
38
from bzrlib.plugins.qbzr.browse import BrowseWindow
 
39
from bzrlib.plugins.qbzr.commit import CommitWindow
 
40
from bzrlib.plugins.qbzr.diff import DiffWindow
 
41
from bzrlib.plugins.qbzr.log import LogWindow
 
42
from bzrlib.workingtree import WorkingTree
 
43
''')
 
44
 
 
45
 
 
46
class cmd_qannotate(Command):
 
47
    """Show the origin of each line in a file."""
 
48
    takes_args = ['filename?']
 
49
    takes_options = ['revision']
 
50
    aliases = ['qann', 'qblame']
 
51
 
 
52
    def run(self, filename=None, revision=None):
 
53
        from bzrlib.annotate import _annotate_file
 
54
        tree, relpath = WorkingTree.open_containing(filename)
 
55
        branch = tree.branch
 
56
        branch.lock_read()
 
57
        try:
 
58
            if revision is None:
 
59
                revision_id = branch.last_revision()
 
60
            elif len(revision) != 1:
 
61
                raise errors.BzrCommandError('bzr qannotate --revision takes exactly 1 argument')
 
62
            else:
 
63
                revision_id = revision[0].in_history(branch).rev_id
 
64
            file_id = tree.inventory.path2id(relpath)
 
65
            tree = branch.repository.revision_tree(revision_id)
 
66
            file_version = tree.inventory[file_id].revision
 
67
            lines = list(_annotate_file(branch, file_version, file_id))
 
68
        finally:
 
69
            branch.unlock()
 
70
 
 
71
        app = QtGui.QApplication(sys.argv)
 
72
        win = AnnotateWindow(filename, lines)
 
73
        win.show()
 
74
        app.exec_()
 
75
 
 
76
 
 
77
class cmd_qbrowse(Command):
 
78
    """Show inventory."""
 
79
    takes_args = ['location?']
 
80
    takes_options = ['revision']
 
81
 
 
82
    def run(self, revision=None, location=None):
 
83
        branch, path = Branch.open_containing(location)
 
84
        app = QtGui.QApplication(sys.argv)
 
85
        win = BrowseWindow(branch)
 
86
        win.show()
 
87
        app.exec_()
 
88
 
 
89
 
 
90
class cmd_qcommit(Command):
 
91
    """GUI for committing revisions."""
 
92
    takes_args = ['filename?']
 
93
    aliases = ['qci']
 
94
 
 
95
    def run(self, filename=None):
 
96
        tree, filename = WorkingTree.open_containing(filename)
 
97
        application = QtGui.QApplication(sys.argv)
 
98
        window = CommitWindow(tree, filename)
 
99
        window.show()
 
100
        application.exec_()
 
101
 
 
102
 
 
103
class cmd_qdiff(Command):
 
104
    """Show differences in working tree in a GUI window."""
 
105
    takes_args = ['filename?']
 
106
    takes_options = [
 
107
        'revision',
 
108
        Option('inline', help='Show inline diff'),
 
109
        Option('complete', help='Show complete files'),
 
110
        ]
 
111
    aliases = ['qdi']
 
112
 
 
113
    def run(self, revision=None, filename=None, inline=False, complete=False):
 
114
        wt, filename = WorkingTree.open_containing(filename)
 
115
        branch = wt.branch
 
116
        if revision is not None:
 
117
            if len(revision) == 1:
 
118
                tree1 = wt
 
119
                revision_id = revision[0].in_history(branch).rev_id
 
120
                tree2 = branch.repository.revision_tree(revision_id)
 
121
            elif len(revision) == 2:
 
122
                revision_id_0 = revision[0].in_history(branch).rev_id
 
123
                tree2 = branch.repository.revision_tree(revision_id_0)
 
124
                revision_id_1 = revision[1].in_history(branch).rev_id
 
125
                tree1 = branch.repository.revision_tree(revision_id_1)
 
126
        else:
 
127
            tree1 = wt
 
128
            tree2 = tree1.basis_tree()
 
129
        specific_files = None
 
130
        if filename:
 
131
            specific_files = (filename,)
 
132
        application = QtGui.QApplication(sys.argv)
 
133
        window = DiffWindow(tree2, tree1, inline=inline, complete=complete,
 
134
                            specific_files=specific_files)
 
135
        window.show()
 
136
        application.exec_()
 
137
 
 
138
 
 
139
class cmd_qlog(Command):
 
140
    """Show log of a branch, file, or directory in a Qt window.
 
141
 
 
142
    By default show the log of the branch containing the working directory."""
 
143
 
 
144
    takes_args = ['location?']
 
145
    takes_options = []
 
146
 
 
147
    def run(self, location=None):
 
148
        file_id = None
 
149
        if location:
 
150
            dir, path = BzrDir.open_containing(location)
 
151
            branch = dir.open_branch()
 
152
            if path:
 
153
                try:
 
154
                    inv = dir.open_workingtree().inventory
 
155
                except (errors.NotBranchError, errors.NotLocalUrl):
 
156
                    inv = branch.basis_tree().inventory
 
157
                file_id = inv.path2id(path)
 
158
        else:
 
159
            dir, path = BzrDir.open_containing('.')
 
160
            branch = dir.open_branch()
 
161
 
 
162
        config = branch.get_config()
 
163
        replace = config.get_user_option("qlog_replace")
 
164
        if replace:
 
165
            replace = replace.split("\n")
 
166
            replace = [tuple(replace[2*i:2*i+2])
 
167
                       for i in range(len(replace) // 2)]
 
168
 
 
169
        app = QtGui.QApplication(sys.argv)
 
170
        window = LogWindow(branch, location, file_id, replace)
 
171
        window.show()
 
172
        app.exec_()
 
173
 
 
174
 
 
175
register_command(cmd_qannotate)
 
176
register_command(cmd_qbrowse)
 
177
register_command(cmd_qcommit)
 
178
register_command(cmd_qdiff)
 
179
register_command(cmd_qlog)