/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
175 by Jelmer Vernooij
Add very simple gmissing command.
1
# Copyright (C) 2007 Jelmer Vernooij <jelmer@samba.org>
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
try:
18
    import pygtk
19
    pygtk.require("2.0")
20
except:
21
    pass
22
23
import gtk
24
25
from bzrlib.missing import find_unmerged
26
713 by Jelmer Vernooij
Remove some unused imports, fix some formatting.
27
from bzrlib.plugins.gtk.revisionview import RevisionView
28
175 by Jelmer Vernooij
Add very simple gmissing command.
29
30
class MissingWindow(gtk.Dialog):
31
    """Displays revisions present in one branch but missing in 
32
    another."""
33
    def __init__(self, local_branch, remote_branch):
34
        """ Initialize the Status window. """
35
        super(MissingWindow, self).__init__(flags=gtk.DIALOG_MODAL)
36
        self.set_title("Missing Revisions")
37
        self.local_branch = local_branch
38
        self.remote_branch = remote_branch
39
        (self.local_extra, self.remote_extra) = find_unmerged(
40
                local_branch, remote_branch)
41
        self._create()
42
43
    def _create_revisions_frame(self, revisions):
44
        extra_revs = gtk.ScrolledWindow()
45
        vbox = gtk.VBox()
46
        for rev in revisions:
412.1.12 by Daniel Schierbeck
Fixed bug in gmissing.
47
            rv = RevisionView()
48
            rv.set_revision(rev)
49
            vbox.pack_start(rv, True, True)
175 by Jelmer Vernooij
Add very simple gmissing command.
50
        extra_revs.add_with_viewport(vbox)
51
        extra_revs.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
52
        return extra_revs
53
54
    def _create(self):
55
        self.set_default_size(600, 600)
179 by Jelmer Vernooij
Don't use scrolling inside revisions in missing window.
56
        paned = gtk.VPaned()
175 by Jelmer Vernooij
Add very simple gmissing command.
57
58
        frame = gtk.Frame("You have the following extra revisions:")
59
60
        extra_revs = self._create_revisions_frame(
61
                self.local_branch.repository.get_revisions(
62
                    map(lambda (x,y):y, self.local_extra)))
63
        frame.add(extra_revs)
179 by Jelmer Vernooij
Don't use scrolling inside revisions in missing window.
64
        paned.pack1(frame, resize=True, shrink=False)
175 by Jelmer Vernooij
Add very simple gmissing command.
65
66
        missing_revs = self._create_revisions_frame(
67
                self.remote_branch.repository.get_revisions(
68
                    map(lambda (x,y):y, self.remote_extra)))
69
70
        frame = gtk.Frame("You are missing following revisions:")
71
        frame.add(missing_revs)
179 by Jelmer Vernooij
Don't use scrolling inside revisions in missing window.
72
73
        paned.pack2(frame, resize=False, shrink=True)
74
75
        self.vbox.pack_start(paned, True, True)
175 by Jelmer Vernooij
Add very simple gmissing command.
76
        self.vbox.show_all()