[Pkg-bazaar-commits] ./bzr-gtk/unstable r417: Merged refactoring of the revisionview.
Daniel Schierbeck
daniel.schierbeck at gmail.com
Fri Apr 10 07:44:57 UTC 2009
------------------------------------------------------------
revno: 417
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Wed 2007-12-12 00:20:49 +0100
message:
Merged refactoring of the revisionview.
modified:
missing.py
revisionview.py
viz/branchwin.py
------------------------------------------------------------
revno: 412.1.1
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Sun 2007-12-02 17:20:10 +0100
message:
Added branch and revision properties to the revisionview widget.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.2
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Sun 2007-12-02 17:28:38 +0100
message:
Moved retrieval of tags into the revisionview itself.
modified:
revisionview.py
viz/branchwin.py
------------------------------------------------------------
revno: 412.1.3
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Sun 2007-12-02 17:30:58 +0100
message:
Fixed problem with branches that do not support tags.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.4
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Sun 2007-12-02 17:36:10 +0100
message:
Made tag list smarter.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.5
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Sun 2007-12-02 17:41:17 +0100
message:
Made the revision id label use signals when updating.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.6
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Sun 2007-12-02 17:44:25 +0100
message:
Made the message buffer use signals when updating.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.7
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Thu 2007-12-06 18:18:16 +0100
message:
Added file-id property to the revisionview.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.8
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Thu 2007-12-06 18:24:46 +0100
message:
Only import the bdecode function from the bzrlib.util.bencode package.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.9
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Fri 2007-12-07 00:01:28 +0100
message:
Removed the use of RevisionView.set_go_callback().
modified:
revisionview.py
viz/branchwin.py
------------------------------------------------------------
revno: 412.1.10
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Fri 2007-12-07 00:30:30 +0100
message:
Removed unnecessary whitespace.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.11
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Fri 2007-12-07 00:34:26 +0100
message:
Merged with mainline.
modified:
viz/treemodel.py
viz/treeview.py
------------------------------------------------------------
revno: 412.1.12
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Fri 2007-12-07 00:37:06 +0100
message:
Fixed bug in gmissing.
modified:
missing.py
revisionview.py
------------------------------------------------------------
revno: 412.1.13
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Fri 2007-12-07 00:43:26 +0100
message:
Re-added support for displaying the children of a revision.
modified:
revisionview.py
viz/branchwin.py
------------------------------------------------------------
revno: 412.1.14
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Fri 2007-12-07 00:45:31 +0100
message:
Fixed bug in the way the child buttons worked.
modified:
revisionview.py
------------------------------------------------------------
revno: 412.1.15
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: refactor
timestamp: Fri 2007-12-07 00:49:08 +0100
message:
Removed redundant method argument.
modified:
revisionview.py
-------------- next part --------------
=== modified file 'missing.py'
--- a/missing.py 2007-11-02 14:49:57 +0000
+++ b/missing.py 2007-12-06 23:37:06 +0000
@@ -44,7 +44,9 @@
extra_revs = gtk.ScrolledWindow()
vbox = gtk.VBox()
for rev in revisions:
- vbox.pack_start(RevisionView(rev), True, True)
+ rv = RevisionView()
+ rv.set_revision(rev)
+ vbox.pack_start(rv, True, True)
extra_revs.add_with_viewport(vbox)
extra_revs.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
return extra_revs
=== modified file 'revisionview.py'
--- a/revisionview.py 2007-11-03 16:27:35 +0000
+++ b/revisionview.py 2007-12-06 23:49:08 +0000
@@ -19,9 +19,10 @@
pygtk.require("2.0")
import gtk
import pango
+import gobject
from bzrlib.osutils import format_date
-from bzrlib.util import bencode
+from bzrlib.util.bencode import bdecode
class RevisionView(gtk.Notebook):
""" Custom widget for commit log details.
@@ -30,10 +31,39 @@
start.
"""
- def __init__(self, revision=None, tags=[],
- show_children=False, branch=None):
+ __gproperties__ = {
+ 'branch': (
+ gobject.TYPE_PYOBJECT,
+ 'Branch',
+ 'The branch holding the revision being displayed',
+ gobject.PARAM_CONSTRUCT_ONLY | gobject.PARAM_WRITABLE
+ ),
+
+ 'revision': (
+ gobject.TYPE_PYOBJECT,
+ 'Revision',
+ 'The revision being displayed',
+ gobject.PARAM_READWRITE
+ ),
+
+ 'children': (
+ gobject.TYPE_PYOBJECT,
+ 'Children',
+ 'Child revisions',
+ gobject.PARAM_READWRITE
+ ),
+
+ 'file-id': (
+ gobject.TYPE_PYOBJECT,
+ 'File Id',
+ 'The file id',
+ gobject.PARAM_READWRITE
+ )
+ }
+
+
+ def __init__(self, branch=None):
gtk.Notebook.__init__(self)
- self.show_children = show_children
self._create_general()
self._create_relations()
@@ -42,32 +72,64 @@
self.set_current_page(0)
self._show_callback = None
- self._go_callback = None
self._clicked_callback = None
+ self._revision = None
self._branch = branch
- if revision is not None:
- self.set_revision(revision, tags=tags)
+ if self._branch is not None and self._branch.supports_tags():
+ self._tagdict = self._branch.tags.get_reverse_tag_dict()
+ else:
+ self._tagdict = {}
+
self.set_file_id(None)
+ def do_get_property(self, property):
+ if property.name == 'branch':
+ return self._branch
+ elif property.name == 'revision':
+ return self._revision
+ elif property.name == 'children':
+ return self._children
+ elif property.name == 'file-id':
+ return self._file_id
+ else:
+ raise AttributeError, 'unknown property %s' % property.name
+
+ def do_set_property(self, property, value):
+ if property.name == 'branch':
+ self._branch = value
+ elif property.name == 'revision':
+ self._set_revision(value)
+ elif property.name == 'children':
+ self.set_children(value)
+ elif property.name == 'file-id':
+ self._file_id = value
+ else:
+ raise AttributeError, 'unknown property %s' % property.name
+
def set_show_callback(self, callback):
self._show_callback = callback
- def set_go_callback(self, callback):
- self._go_callback = callback
-
def set_file_id(self, file_id):
"""Set a specific file id that we want to track.
This just effects the display of a per-file commit message.
If it is set to None, then all commit messages will be shown.
"""
- self._file_id = file_id
-
- def set_revision(self, revision, tags=[], children=[]):
+ self.set_property('file-id', file_id)
+
+ def set_revision(self, revision):
+ if revision != self._revision:
+ self.set_property('revision', revision)
+
+ def get_revision(self):
+ return self.get_property('revision')
+
+ def _set_revision(self, revision):
+ if revision is None: return
+
self._revision = revision
- self.revision_id.set_text(revision.revision_id)
if revision.committer is not None:
self.committer.set_text(revision.committer)
else:
@@ -84,7 +146,6 @@
if revision.timestamp is not None:
self.timestamp.set_text(format_date(revision.timestamp,
revision.timezone))
- self.message_buffer.set_text(revision.message)
try:
self.branchnick_label.set_text(revision.properties['branch-nick'])
except KeyError:
@@ -94,16 +155,9 @@
self.parents_widgets,
self.parents_table)
- if self.show_children:
- self._add_parents_or_children(children,
- self.children_widgets,
- self.children_table)
-
- self._add_tags(tags)
-
file_info = revision.properties.get('file-info', None)
if file_info is not None:
- file_info = bencode.bdecode(file_info.encode('UTF-8'))
+ file_info = bdecode(file_info.encode('UTF-8'))
if file_info:
if self._file_id is None:
@@ -125,15 +179,24 @@
else:
self.file_info_box.hide()
+ def set_children(self, children):
+ self._add_parents_or_children(children,
+ self.children_widgets,
+ self.children_table)
+
def _show_clicked_cb(self, widget, revid, parentid):
"""Callback for when the show button for a parent is clicked."""
self._show_callback(revid, parentid)
def _go_clicked_cb(self, widget, revid):
"""Callback for when the go button for a parent is clicked."""
- self._go_callback(revid)
- def _add_tags(self, tags):
+ def _add_tags(self, *args):
+ if self._tagdict.has_key(self._revision.revision_id):
+ tags = self._tagdict[self._revision.revision_id]
+ else:
+ tags = []
+
if tags == []:
self.tags_list.hide()
self.tags_label.hide()
@@ -183,11 +246,9 @@
hbox.pack_start(button, expand=False, fill=True)
button.show()
- if self._go_callback is not None:
- button = gtk.Button(revid)
- button.connect("clicked", self._go_clicked_cb, revid)
- else:
- button = gtk.Label(revid)
+ button = gtk.Button(revid)
+ button.connect("clicked",
+ lambda w, r: self.set_revision(self._branch.repository.get_revision(r)), revid)
button.set_use_underline(False)
hbox.pack_start(button, expand=False, fill=True)
button.show()
@@ -204,8 +265,7 @@
vbox = gtk.VBox(False, 6)
vbox.set_border_width(6)
vbox.pack_start(self._create_parents(), expand=False, fill=True)
- if self.show_children:
- vbox.pack_start(self._create_children(), expand=False, fill=True)
+ vbox.pack_start(self._create_children(), expand=False, fill=True)
self.append_page(vbox, tab_label=gtk.Label("Relations"))
vbox.show()
@@ -224,12 +284,14 @@
label.show()
align = gtk.Alignment(0.0, 0.5)
- self.revision_id = gtk.Label()
- self.revision_id.set_selectable(True)
- align.add(self.revision_id)
+ revision_id = gtk.Label()
+ revision_id.set_selectable(True)
+ self.connect('notify::revision',
+ lambda w, p: revision_id.set_text(self._revision.revision_id))
+ align.add(revision_id)
self.table.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
align.show()
- self.revision_id.show()
+ revision_id.show()
align = gtk.Alignment(1.0, 0.5)
self.author_label = gtk.Label()
@@ -312,6 +374,8 @@
self.tags_list.show()
self.tags_widgets = []
+ self.connect('notify::revision', self._add_tags)
+
return self.table
@@ -350,15 +414,15 @@
align.show()
return table
-
-
def _create_message_view(self):
- self.message_buffer = gtk.TextBuffer()
+ msg_buffer = gtk.TextBuffer()
+ self.connect('notify::revision',
+ lambda w, p: msg_buffer.set_text(self._revision.message))
window = gtk.ScrolledWindow()
window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
window.set_shadow_type(gtk.SHADOW_IN)
- tv = gtk.TextView(self.message_buffer)
+ tv = gtk.TextView(msg_buffer)
tv.set_editable(False)
tv.set_wrap_mode(gtk.WRAP_WORD)
tv.modify_font(pango.FontDescription("Monospace"))
=== modified file 'viz/branchwin.py'
--- a/viz/branchwin.py 2007-11-29 09:06:45 +0000
+++ b/viz/branchwin.py 2007-12-06 23:43:26 +0000
@@ -291,12 +291,12 @@
def construct_bottom(self):
"""Construct the bottom half of the window."""
from bzrlib.plugins.gtk.revisionview import RevisionView
- self.revisionview = RevisionView(None, tags=[], show_children=True, branch=self.branch)
+ self.revisionview = RevisionView(branch=self.branch)
(width, height) = self.get_size()
self.revisionview.set_size_request(width, int(height / 2.5))
self.revisionview.show()
self.revisionview.set_show_callback(self._show_clicked_cb)
- self.revisionview.set_go_callback(self._go_clicked_cb)
+ self.revisionview.connect('notify::revision', self._go_clicked_cb)
return self.revisionview
def _tag_selected_cb(self, menuitem, revid):
@@ -349,12 +349,8 @@
self.next_button.set_menu(next_menu)
- tags = []
- if self.branch.supports_tags():
- tagdict = self.branch.tags.get_reverse_tag_dict()
- if tagdict.has_key(revision.revision_id):
- tags = tagdict[revision.revision_id]
- self.revisionview.set_revision(revision, tags, children)
+ self.revisionview.set_revision(revision)
+ self.revisionview.set_children(children)
def _back_clicked_cb(self, *args):
"""Callback for when the back button is clicked."""
@@ -364,9 +360,10 @@
"""Callback for when the forward button is clicked."""
self.treeview.forward()
- def _go_clicked_cb(self, revid):
+ def _go_clicked_cb(self, w, p):
"""Callback for when the go button for a parent is clicked."""
- self.treeview.set_revision_id(revid)
+ if self.revisionview.get_revision() is not None:
+ self.treeview.set_revision(self.revisionview.get_revision())
def _show_clicked_cb(self, revid, parentid):
"""Callback for when the show button for a parent is clicked."""
More information about the Pkg-bazaar-commits
mailing list