--- a/hggtk/history.py Sat Jan 12 13:21:42 2008 -0600
+++ b/hggtk/history.py Sat Jan 12 14:23:45 2008 -0600
@@ -24,6 +24,7 @@
from gdialog import *
from hgcmd import CmdDialog
+from vis import treemodel
from vis.treeview import TreeView
@@ -432,6 +433,8 @@
self.graphview = scroller
self.tree = scroller.treeview
self.model = scroller.model
+ self.graphview.connect('revision-selected',
+ self._graphtree_selection_changed)
else:
self.model = gtk.ListStore(str, str, long, str, str, str, str,
long, object)
@@ -441,10 +444,10 @@
self.tree.set_reorderable(False)
self.tree.set_enable_search(True)
self.tree.set_search_equal_func(self._search_in_tree,None)
+ self.tree.set_rubber_banding(False)
self.tree.get_selection().set_mode(gtk.SELECTION_SINGLE)
self.tree.get_selection().connect('changed',
self._tree_selection_changed)
- self.tree.set_rubber_banding(False)
self.tree.modify_font(pango.FontDescription(self.fontlist))
self.tree.set_rules_hint(True)
@@ -566,9 +569,8 @@
def _add_tag(self, menuitem):
from tagadd import TagAddDialog
- row = self.model[self.tree.get_selection().get_selected()[1]]
- rev = long(row[2])
- parents = row[8]
+ rev = self.currow[treemodel.REVID]
+ parents = self.currow[treemodel.PARENTS]
# save tag info for detecting new tags added
oldtags = self.repo.tagslist()
@@ -588,9 +590,8 @@
from status import GStatus
from gtools import cmdtable
- row = self.model[self.tree.get_selection().get_selected()[1]]
- rev = long(row[2])
- parents = row[8]
+ rev = self.currow[treemodel.REVID]
+ parents = self.currow[treemodel.PARENTS]
if len(parents) == 0:
parents = [rev-1]
@@ -606,8 +607,7 @@
def _export_patch(self, menuitem):
- row = self.model[self.tree.get_selection().get_selected()[1]]
- rev = long(row[2])
+ rev = self.currow[treemodel.REVID]
filename = "%s_rev%s.patch" % (os.path.basename(self.repo.root), rev)
fd = NativeSaveFileDialogWrapper(Title = "Save patch to",
InitialDir=self.repo.root,
@@ -624,16 +624,14 @@
def _email_patch(self, menuitem):
from hgemail import EmailDialog
- row = self.model[self.tree.get_selection().get_selected()[1]]
- rev = long(row[2])
+ rev = self.currow[treemodel.REVID]
dlg = EmailDialog(self.repo.root, ['--rev', str(rev)])
dlg.show_all()
dlg.run()
dlg.hide()
def _checkout(self, menuitem):
- row = self.model[self.tree.get_selection().get_selected()[1]]
- rev = long(row[2])
+ rev = self.currow[treemodel.REVID]
self.repo.invalidate()
wc = self.repo.workingctx()
pl = wc.parents()
@@ -663,8 +661,7 @@
self.reload_log()
def _merge(self, menuitem):
- row = self.model[self.tree.get_selection().get_selected()[1]]
- rev = long(row[2])
+ rev = self.currow[treemodel.REVID]
self.repo.invalidate()
wc = self.repo.workingctx()
pl = wc.parents()
@@ -714,19 +711,27 @@
self.repo.dirstate.invalidate()
self.reload_log()
+ def _graphtree_selection_changed(self, treeview):
+ self.currow = self.graphview.get_revision()
+ rev = [ str(self.currow[treemodel.REVID]) ]
+ if rev != self._last_rev:
+ self._last_rev = rev
+ parents = self.currow[treemodel.PARENTS]
+ self.load_details(rev, len(parents))
+ return False
+
def _tree_selection_changed(self, selection):
- ''' Update the details text '''
+ ''' Update the details text'''
if selection.count_selected_rows() == 0:
return False
- rev = [str(x) for x in [self.model[selection.get_selected()[1]][2]]]
+ self.currow = self.model[selection.get_selected()[1]]
+ rev = [ str(self.currow[treemodel.REVID]) ]
if rev != self._last_rev:
self._last_rev = rev
- parents = self.model[selection.get_selected()[1]][8]
+ parents = self.currow[treemodel.PARENTS]
self.load_details(rev, len(parents))
-
return False
-
def _refresh_clicked(self, toolbutton, data=None):
self.reload_log()
return True
@@ -745,8 +750,7 @@
def _tree_popup_menu(self, treeview, button=0, time=0) :
- row = self.model[self.tree.get_selection().get_selected()[1]]
- selrev = long(row[2])
+ selrev = self.currow[treemodel.REVID]
# disable/enable menus as required
parents = [self.repo.changelog.rev(x.node()) for x in
--- a/hggtk/vis/treemodel.py Sat Jan 12 13:21:42 2008 -0600
+++ b/hggtk/vis/treemodel.py Sat Jan 12 14:23:45 2008 -0600
@@ -13,9 +13,9 @@
from time import (strftime, localtime)
# treemodel row enumerated attributes
-REVID = 0
+LINES = 0
NODE = 1
-LINES = 2
+REVID = 2
LAST_LINES = 3
MESSAGE = 4
COMMITER = 5
@@ -70,19 +70,20 @@
return []
if revid not in self.revisions:
- # TODO: not sure about this
ctx = self.repo.changectx(revid)
- revision = (ctx.user(), ctx.date(), ctx.description())
+ revision = (None, node, revid, None, ctx.description(),
+ ctx.user(), ctx.date(), None, parents)
self.revisions[revid] = revision
else:
revision = self.revisions[revid]
if column == REVISION: return revision
- if column == MESSAGE: return revision[2].split('\n')[0]
+ if column == MESSAGE: return revision[MESSAGE].split('\n')[0]
if column == COMMITER: return re.sub('<.*@.*>', '',
- revision[0]).strip(' ')
+ revision[COMMITER]).strip(' ')
if column == TIMESTAMP:
- return strftime("%Y-%m-%d %H:%M", localtime(revision[1][0]))
+ return strftime("%Y-%m-%d %H:%M",
+ localtime(revision[TIMESTAMP][0]))
def on_iter_next(self, rowref):
if rowref < len(self.line_graph_data) - 1: