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