/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
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
import sys
18
19
try:
20
    import pygtk
21
    pygtk.require("2.0")
22
except:
23
    pass
0.13.11 by Jelmer Vernooij
Bunch of small fixes, cleanups and simplifications.
24
25
import gtk
26
import gtk.glade
27
import gobject
28
import pango
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
29
30
import bzrlib
0.8.35 by Szilveszter Farkas (Phanatic)
Fixed a small bug in the Status window.
31
import bzrlib.errors as errors
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
32
33
from bzrlib.status import show_tree_status
34
from bzrlib.workingtree import WorkingTree
35
0.13.13 by Jelmer Vernooij
Update TODO
36
from dialog import error_dialog
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
37
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
38
from olive import gladefile
39
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
40
class OliveStatus:
41
    """ Display Status window and perform the needed actions. """
0.13.13 by Jelmer Vernooij
Update TODO
42
    def __init__(self, wt, wtpath):
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
43
        """ Initialize the Status window. """
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
44
        self.glade = gtk.glade.XML(gladefile, 'window_status')
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
45
        
0.8.35 by Szilveszter Farkas (Phanatic)
Fixed a small bug in the Status window.
46
        # Get the Status window widget
47
        self.window = self.glade.get_widget('window_status')
0.12.1 by Jelmer Vernooij
Don't use communicator for status.
48
        self.wt = wt
49
        self.wtpath = wtpath
0.8.35 by Szilveszter Farkas (Phanatic)
Fixed a small bug in the Status window.
50
        
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
51
        # Check if current location is a branch
0.12.1 by Jelmer Vernooij
Don't use communicator for status.
52
        file_id = self.wt.path2id(wtpath)
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
53
54
        # Set the old working tree
55
        self.old_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
56
        
57
        # Dictionary for signal_autoconnect
58
        dic = { "on_button_status_close_clicked": self.close }
59
        
60
        # Connect the signals to the handlers
61
        self.glade.signal_autoconnect(dic)
62
        
63
        # Generate status output
64
        self._generate_status()
65
66
    def _generate_status(self):
67
        """ Generate 'bzr status' output. """
68
        self.model = gtk.TreeStore(str, str)
69
        self.treeview = self.glade.get_widget('treeview_status')
70
        self.treeview.set_model(self.model)
71
        
72
        cell = gtk.CellRendererText()
73
        cell.set_property("width-chars", 20)
74
        column = gtk.TreeViewColumn()
75
        column.pack_start(cell, expand=True)
76
        column.add_attribute(cell, "text", 0)
77
        self.treeview.append_column(column)
78
        
0.12.1 by Jelmer Vernooij
Don't use communicator for status.
79
        delta = self.wt.changes_from(self.old_tree)
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
80
0.8.80 by Szilveszter Farkas (Phanatic)
If the TreeView in the Status window would be empty, display a "No changes." message.
81
        changes = False
82
        
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
83
        if len(delta.added):
0.8.80 by Szilveszter Farkas (Phanatic)
If the TreeView in the Status window would be empty, display a "No changes." message.
84
            changes = True
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
85
            titer = self.model.append(None, [ _('Added'), None ])
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
86
            for path, id, kind in delta.added:
87
                self.model.append(titer, [ path, path ])
88
89
        if len(delta.removed):
0.8.80 by Szilveszter Farkas (Phanatic)
If the TreeView in the Status window would be empty, display a "No changes." message.
90
            changes = True
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
91
            titer = self.model.append(None, [ _('Removed'), None ])
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
92
            for path, id, kind in delta.removed:
93
                self.model.append(titer, [ path, path ])
94
95
        if len(delta.renamed):
0.8.80 by Szilveszter Farkas (Phanatic)
If the TreeView in the Status window would be empty, display a "No changes." message.
96
            changes = True
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
97
            titer = self.model.append(None, [ _('Renamed'), None ])
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
98
            for oldpath, newpath, id, kind, text_modified, meta_modified \
99
                    in delta.renamed:
100
                self.model.append(titer, [ oldpath, newpath ])
101
102
        if len(delta.modified):
0.8.80 by Szilveszter Farkas (Phanatic)
If the TreeView in the Status window would be empty, display a "No changes." message.
103
            changes = True
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
104
            titer = self.model.append(None, [ _('Modified'), None ])
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
105
            for path, id, kind, text_modified, meta_modified in delta.modified:
106
                self.model.append(titer, [ path, path ])
107
        
108
        done_unknown = False
109
        for path in self.wt.unknowns():
0.8.80 by Szilveszter Farkas (Phanatic)
If the TreeView in the Status window would be empty, display a "No changes." message.
110
            changes = True
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
111
            if not done_unknown:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
112
                titer = self.model.append(None, [ _('Unknown'), None ])
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
113
                done_unknown = True
114
            self.model.append(titer, [ path, path ])
115
0.8.80 by Szilveszter Farkas (Phanatic)
If the TreeView in the Status window would be empty, display a "No changes." message.
116
        if not changes:
117
            self.model.append(None, [ _('No changes.'), None ])
118
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
119
        self.treeview.expand_all()
120
    
121
    def display(self):
122
        """ Display the Diff window. """
0.13.13 by Jelmer Vernooij
Update TODO
123
        self.window.show_all()
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
124
125
    def close(self, widget=None):
126
        self.window.destroy()