/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: 2007-07-15 15:05:06 UTC
  • Revision ID: jelmer@samba.org-20070715150506-1uemecr5kt7d4kvg
Fix whitespace, add comment.

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
 
 
25
class StatusDialog(gtk.Dialog):
41
26
    """ Display Status window and perform the needed actions. """
42
 
    def __init__(self, gladefile, wt, wtpath):
 
27
    def __init__(self, wt, wtpath):
43
28
        """ 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')
 
29
        super(StatusDialog, self).__init__(flags=gtk.DIALOG_MODAL, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
 
30
        self.set_title("Working tree changes")
 
31
        self._create()
48
32
        self.wt = wt
49
33
        self.wtpath = wtpath
50
 
        
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
 
        
65
34
        # Set the old working tree
66
35
        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
 
        
74
36
        # Generate status output
75
37
        self._generate_status()
76
38
 
 
39
    def _create(self):
 
40
        self.set_default_size(400, 300)
 
41
        scrolledwindow = gtk.ScrolledWindow()
 
42
        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
43
        self.treeview = gtk.TreeView()
 
44
        scrolledwindow.add(self.treeview)
 
45
        self.vbox.pack_start(scrolledwindow, True, True)
 
46
        self.vbox.show_all()
 
47
 
 
48
    def row_diff(self, tv, path, tvc):
 
49
        file = self.model[path][1]
 
50
        if file is None:
 
51
            return
 
52
        from bzrlib.plugins.gtk.diff import DiffWindow
 
53
        window = DiffWindow()
 
54
        window.set_diff("Working tree changes", self.old_tree, self.wt)
 
55
        window.set_file(file)
 
56
        window.show()
 
57
 
77
58
    def _generate_status(self):
78
59
        """ Generate 'bzr status' output. """
79
60
        self.model = gtk.TreeStore(str, str)
80
 
        self.treeview = self.glade.get_widget('treeview_status')
 
61
        self.treeview.set_headers_visible(False)
81
62
        self.treeview.set_model(self.model)
 
63
        self.treeview.connect("row-activated", self.row_diff)
82
64
        
83
65
        cell = gtk.CellRendererText()
84
66
        cell.set_property("width-chars", 20)
129
111
 
130
112
        self.treeview.expand_all()
131
113
    
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
114
    def close(self, widget=None):
142
115
        self.window.destroy()