/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 status.py

  • Committer: Jelmer Vernooij
  • Date: 2008-06-29 16:24:24 UTC
  • mto: This revision was merged to the branch mainline in revision 519.
  • Revision ID: jelmer@samba.org-20080629162424-48a6rrjmmpejfcyr
Stop emitting no longer used revisions-loaded message.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
import sys
18
 
 
19
17
try:
20
18
    import pygtk
21
19
    pygtk.require("2.0")
23
21
    pass
24
22
 
25
23
import gtk
26
 
import gtk.glade
27
 
import gobject
28
 
import pango
29
 
 
30
 
import bzrlib
31
 
import bzrlib.errors as errors
32
 
 
33
 
from bzrlib.status import show_tree_status
34
 
from bzrlib.workingtree import WorkingTree
35
 
 
36
 
from dialog import OliveDialog
37
 
 
38
 
from olive import gladefile
39
 
 
40
 
class OliveStatus:
 
24
from bzrlib.plugins.gtk import _i18n
 
25
 
 
26
 
 
27
class StatusDialog(gtk.Dialog):
41
28
    """ Display Status window and perform the needed actions. """
42
 
    def __init__(self, gladefile, wt, wtpath):
 
29
    def __init__(self, wt, wtpath, revision=None):
43
30
        """ Initialize the Status window. """
44
 
        self.glade = gtk.glade.XML(gladefile, 'window_status')
45
 
        
46
 
        # Get the Status window widget
47
 
        self.window = self.glade.get_widget('window_status')
 
31
        super(StatusDialog, self).__init__(flags=gtk.DIALOG_MODAL, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
 
32
        self.set_title("Working tree changes")
 
33
        self._create()
48
34
        self.wt = wt
49
35
        self.wtpath = wtpath
50
36
        
51
 
        # Check if current location is a branch
52
 
        try:
53
 
            branch = wt.branch
54
 
        except errors.NotBranchError:
55
 
            self.notbranch = True
56
 
            return
57
 
        
58
 
        file_id = self.wt.path2id(wtpath)
59
 
 
60
 
        self.notbranch = False
61
 
        if file_id is None:
62
 
            self.notbranch = True
63
 
            return
64
 
        
 
37
        if revision is None:
 
38
            revision = self.wt.branch.last_revision()
 
39
            
65
40
        # Set the old working tree
66
 
        self.old_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
67
 
        
68
 
        # Dictionary for signal_autoconnect
69
 
        dic = { "on_button_status_close_clicked": self.close }
70
 
        
71
 
        # Connect the signals to the handlers
72
 
        self.glade.signal_autoconnect(dic)
73
 
        
 
41
        self.old_tree = self.wt.branch.repository.revision_tree(revision)
74
42
        # Generate status output
75
43
        self._generate_status()
76
44
 
 
45
    def _create(self):
 
46
        self.set_default_size(400, 300)
 
47
        scrolledwindow = gtk.ScrolledWindow()
 
48
        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
49
        self.treeview = gtk.TreeView()
 
50
        scrolledwindow.add(self.treeview)
 
51
        self.vbox.pack_start(scrolledwindow, True, True)
 
52
        self.vbox.show_all()
 
53
 
 
54
    def row_diff(self, tv, path, tvc):
 
55
        file = self.model[path][1]
 
56
        if file is None:
 
57
            return
 
58
        from bzrlib.plugins.gtk.diff import DiffWindow
 
59
        window = DiffWindow()
 
60
        window.set_diff("Working tree changes", self.old_tree, self.wt)
 
61
        window.set_file(file)
 
62
        window.show()
 
63
 
77
64
    def _generate_status(self):
78
65
        """ Generate 'bzr status' output. """
79
66
        self.model = gtk.TreeStore(str, str)
80
 
        self.treeview = self.glade.get_widget('treeview_status')
 
67
        self.treeview.set_headers_visible(False)
81
68
        self.treeview.set_model(self.model)
 
69
        self.treeview.connect("row-activated", self.row_diff)
82
70
        
83
71
        cell = gtk.CellRendererText()
84
72
        cell.set_property("width-chars", 20)
93
81
        
94
82
        if len(delta.added):
95
83
            changes = True
96
 
            titer = self.model.append(None, [ _('Added'), None ])
 
84
            titer = self.model.append(None, [ _i18n('Added'), None ])
97
85
            for path, id, kind in delta.added:
98
86
                self.model.append(titer, [ path, path ])
99
87
 
100
88
        if len(delta.removed):
101
89
            changes = True
102
 
            titer = self.model.append(None, [ _('Removed'), None ])
 
90
            titer = self.model.append(None, [ _i18n('Removed'), None ])
103
91
            for path, id, kind in delta.removed:
104
92
                self.model.append(titer, [ path, path ])
105
93
 
106
94
        if len(delta.renamed):
107
95
            changes = True
108
 
            titer = self.model.append(None, [ _('Renamed'), None ])
 
96
            titer = self.model.append(None, [ _i18n('Renamed'), None ])
109
97
            for oldpath, newpath, id, kind, text_modified, meta_modified \
110
98
                    in delta.renamed:
111
99
                self.model.append(titer, [ oldpath, newpath ])
112
100
 
113
101
        if len(delta.modified):
114
102
            changes = True
115
 
            titer = self.model.append(None, [ _('Modified'), None ])
 
103
            titer = self.model.append(None, [ _i18n('Modified'), None ])
116
104
            for path, id, kind, text_modified, meta_modified in delta.modified:
117
105
                self.model.append(titer, [ path, path ])
118
106
        
120
108
        for path in self.wt.unknowns():
121
109
            changes = True
122
110
            if not done_unknown:
123
 
                titer = self.model.append(None, [ _('Unknown'), None ])
 
111
                titer = self.model.append(None, [ _i18n('Unknown'), None ])
124
112
                done_unknown = True
125
113
            self.model.append(titer, [ path, path ])
126
114
 
127
115
        if not changes:
128
 
            self.model.append(None, [ _('No changes.'), None ])
 
116
            self.model.append(None, [ _i18n('No changes.'), None ])
129
117
 
130
118
        self.treeview.expand_all()
131
119
    
132
 
    def display(self):
133
 
        """ Display the Diff window. """
134
 
        if self.notbranch:
135
 
            error_dialog(_('Directory is not a branch'),
136
 
                                     _('You can perform this action only in a branch.'))
137
 
            self.close()
138
 
        else:
139
 
            self.window.show_all()
140
 
 
141
120
    def close(self, widget=None):
142
121
        self.window.destroy()