/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: Andrew Bennetts
  • Date: 2008-04-29 08:17:01 UTC
  • mto: This revision was merged to the branch mainline in revision 476.
  • Revision ID: andrew@puzzling.org-20080429081701-2pu9uteic8o88nre
Simple hack to fix gannotate.

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 error_dialog
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, wt, wtpath):
 
27
    def __init__(self, wt, wtpath, revision=None):
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
34
        
51
 
        # Check if current location is a branch
52
 
        file_id = self.wt.path2id(wtpath)
53
 
 
 
35
        if revision is None:
 
36
            revision = self.wt.branch.last_revision()
 
37
            
54
38
        # 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
 
        
 
39
        self.old_tree = self.wt.branch.repository.revision_tree(revision)
63
40
        # Generate status output
64
41
        self._generate_status()
65
42
 
 
43
    def _create(self):
 
44
        self.set_default_size(400, 300)
 
45
        scrolledwindow = gtk.ScrolledWindow()
 
46
        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
47
        self.treeview = gtk.TreeView()
 
48
        scrolledwindow.add(self.treeview)
 
49
        self.vbox.pack_start(scrolledwindow, True, True)
 
50
        self.vbox.show_all()
 
51
 
 
52
    def row_diff(self, tv, path, tvc):
 
53
        file = self.model[path][1]
 
54
        if file is None:
 
55
            return
 
56
        from bzrlib.plugins.gtk.diff import DiffWindow
 
57
        window = DiffWindow()
 
58
        window.set_diff("Working tree changes", self.old_tree, self.wt)
 
59
        window.set_file(file)
 
60
        window.show()
 
61
 
66
62
    def _generate_status(self):
67
63
        """ Generate 'bzr status' output. """
68
64
        self.model = gtk.TreeStore(str, str)
69
 
        self.treeview = self.glade.get_widget('treeview_status')
 
65
        self.treeview.set_headers_visible(False)
70
66
        self.treeview.set_model(self.model)
 
67
        self.treeview.connect("row-activated", self.row_diff)
71
68
        
72
69
        cell = gtk.CellRendererText()
73
70
        cell.set_property("width-chars", 20)
118
115
 
119
116
        self.treeview.expand_all()
120
117
    
121
 
    def display(self):
122
 
        """ Display the Diff window. """
123
 
        self.window.show_all()
124
 
 
125
118
    def close(self, widget=None):
126
119
        self.window.destroy()