[Pkg-bazaar-commits] ./bzr-gtk/unstable r429: Merge from mainline
Aaron Bentley
aaron at aaronbentley.com
Fri Apr 10 07:44:56 UTC 2009
------------------------------------------------------------
revno: 429
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: gtk-applymerge
timestamp: Fri 2008-02-22 23:55:56 -0500
message:
Merge from mainline
added:
branchview/
branchview/__init__.py
renamed:
viz/graphcell.py => branchview/graphcell.py
viz/linegraph.py => branchview/linegraph.py
viz/treemodel.py => branchview/treemodel.py
viz/treeview.py => branchview/treeview.py
modified:
NEWS
__init__.py
about.py
diff.py
olive/__init__.py
revisionmenu.py
revisionview.py
setup.py
viz/__init__.py
viz/branchwin.py
branchview/graphcell.py
branchview/treemodel.py
branchview/treeview.py
------------------------------------------------------------
revno: 423.2.1
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: pkg-refactor
timestamp: Sun 2008-01-13 15:12:49 +0100
message:
Moved branch view to its own package.
added:
branchview/
branchview/__init__.py
renamed:
viz/graphcell.py => branchview/graphcell.py
viz/linegraph.py => branchview/linegraph.py
viz/treemodel.py => branchview/treemodel.py
viz/treeview.py => branchview/treeview.py
modified:
viz/branchwin.py
------------------------------------------------------------
revno: 423.2.2
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: pkg-refactor
timestamp: Sun 2008-01-13 15:15:20 +0100
message:
Moved the branch window class to the viz package.
modified:
__init__.py
viz/__init__.py
------------------------------------------------------------
revno: 423.1.2
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Sun 2008-01-20 21:42:59 +0100
message:
Merged changes to packages.
added:
branchview/
branchview/__init__.py
renamed:
viz/graphcell.py => branchview/graphcell.py
viz/linegraph.py => branchview/linegraph.py
viz/treemodel.py => branchview/treemodel.py
viz/treeview.py => branchview/treeview.py
modified:
__init__.py
viz/__init__.py
viz/branchwin.py
------------------------------------------------------------
revno: 423.1.3
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Tue 2008-01-22 20:09:03 +0100
message:
Merged with Daniel's branch.
modified:
revisionview.py
------------------------------------------------------------
revno: 423.3.1
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: revisionview-tags
timestamp: Mon 2008-01-21 16:46:50 +0100
message:
Made the tag list be a comma-separated line instead of a vertically stacked box.
modified:
revisionview.py
------------------------------------------------------------
revno: 423.1.4
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Tue 2008-01-22 20:10:09 +0100
message:
Updated NEWS.
modified:
NEWS
------------------------------------------------------------
revno: 423.1.5
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Tue 2008-01-22 21:27:21 +0100
message:
Merged fixes to treemodel.py.
modified:
branchview/treemodel.py
branchview/treeview.py
------------------------------------------------------------
revno: 423.4.1
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: treemodel-fixes
timestamp: Sun 2008-01-20 20:49:04 +0100
message:
Renamed the MESSAGE column to SUMMARY.
modified:
viz/treemodel.py
viz/treeview.py
------------------------------------------------------------
revno: 423.4.2
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: treemodel-fixes
timestamp: Sun 2008-01-20 20:52:23 +0100
message:
Added a MESSAGE column to the tree model.
modified:
viz/treemodel.py
------------------------------------------------------------
revno: 423.4.3
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: treemodel-fixes
timestamp: Sun 2008-01-20 20:53:30 +0100
message:
Made the MESSAGE column be the tooltip column.
modified:
viz/treeview.py
------------------------------------------------------------
revno: 423.4.4
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: treemodel-fixes
timestamp: Sun 2008-01-20 20:55:06 +0100
message:
Renamed COMMITER column into the correct COMMITTER.
modified:
viz/treemodel.py
viz/treeview.py
------------------------------------------------------------
revno: 423.4.5
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: treemodel-fixes
timestamp: Sun 2008-01-20 21:40:29 +0100
message:
Fixed indendation issues.
modified:
viz/treemodel.py
------------------------------------------------------------
revno: 423.4.6
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: treemodel-fixes
timestamp: Tue 2008-01-22 20:06:29 +0100
message:
Removed unnecessary spaces.
modified:
viz/treemodel.py
------------------------------------------------------------
revno: 423.1.6
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Wed 2008-01-23 17:17:08 +0100
message:
Merged Ali's fancy tags branch.
modified:
branchview/graphcell.py
branchview/treemodel.py
branchview/treeview.py
------------------------------------------------------------
revno: 423.5.1
committer: Ali Sabil <ali.sabil at gmail.com>
branch nick: gtk
timestamp: Mon 2008-01-21 13:31:58 +0100
message:
Added tags visualization in the graph
modified:
branchview/graphcell.py
branchview/treemodel.py
branchview/treeview.py
------------------------------------------------------------
revno: 423.5.2
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 15:42:05 +0100
message:
Made tag labels smaller.
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.5.3
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 16:01:39 +0100
message:
Made tag labels stack horizontally instead of vertically, and added padding to the labels.
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.5.4
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 16:17:39 +0100
message:
Made the tag label stack look good, even with many tags.
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.5.5
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 16:37:34 +0100
message:
Merged Ali's changes.
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.6.1
committer: Ali Sabil <ali.sabil at gmail.com>
branch nick: gtk
timestamp: Mon 2008-01-21 16:33:53 +0100
message:
Set the tags colour to yellow
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.5.6
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 16:50:13 +0100
message:
Merged with Ali's changes.
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.6.2
committer: Ali Sabil <ali.sabil at gmail.com>
branch nick: gtk
timestamp: Mon 2008-01-21 16:46:50 +0100
message:
Enhanced the tag drawing
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.5.7
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 16:57:05 +0100
message:
Made tag label holes larger.
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.5.8
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Tue 2008-01-22 19:59:23 +0100
message:
Improved tag handling in branchview model.
modified:
branchview/treemodel.py
------------------------------------------------------------
revno: 423.5.9
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Tue 2008-01-22 23:58:29 +0100
message:
Fixed bug where markup in tags would cause rendering errors.
modified:
branchview/graphcell.py
------------------------------------------------------------
revno: 423.5.10
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Wed 2008-01-23 00:09:28 +0100
message:
Merged with trunk.
modified:
NEWS
branchview/treemodel.py
branchview/treeview.py
revisionview.py
------------------------------------------------------------
revno: 423.1.7
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Wed 2008-01-23 17:18:27 +0100
message:
Added NEWS entry about the fancy tags.
modified:
NEWS
------------------------------------------------------------
revno: 423.1.8
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Sun 2008-01-27 02:16:45 +0100
message:
Merged fixes to the tag actions.
modified:
branchview/treemodel.py
branchview/treeview.py
revisionmenu.py
revisionview.py
viz/branchwin.py
------------------------------------------------------------
revno: 423.7.1
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 17:38:50 +0100
message:
Removed end-of-line markers.
modified:
branchview/treemodel.py
------------------------------------------------------------
revno: 423.7.2
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-tags-fancy
timestamp: Mon 2008-01-21 17:43:10 +0100
message:
Improved tag handling in branchview model.
modified:
branchview/treemodel.py
------------------------------------------------------------
revno: 423.7.3
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: add-tags
timestamp: Mon 2008-01-21 18:23:10 +0100
message:
Moved tag writing logic inside the branchview treemodel.
modified:
branchview/treemodel.py
branchview/treeview.py
viz/branchwin.py
------------------------------------------------------------
revno: 423.7.4
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: add-tags
timestamp: Mon 2008-01-21 18:32:13 +0100
message:
Made revisionview and branchview update when a tag is added.
modified:
branchview/treeview.py
revisionview.py
viz/branchwin.py
------------------------------------------------------------
revno: 423.7.5
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: add-tags
timestamp: Mon 2008-01-21 18:45:58 +0100
message:
Made the revision history window update the Go->Tags menu when a tag is added.
modified:
viz/branchwin.py
------------------------------------------------------------
revno: 423.7.6
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: add-tags
timestamp: Wed 2008-01-23 17:24:25 +0100
message:
Merged with trunk.
modified:
NEWS
branchview/graphcell.py
branchview/treemodel.py
branchview/treeview.py
revisionview.py
------------------------------------------------------------
revno: 423.7.7
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: add-tags
timestamp: Wed 2008-01-23 17:30:21 +0100
message:
Simplified Go->Tag Revision menu item in the viz.
modified:
viz/branchwin.py
------------------------------------------------------------
revno: 423.7.8
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: add-tags
timestamp: Wed 2008-01-23 17:36:21 +0100
message:
Made the revision popup menu correctly add tags.
modified:
branchview/treeview.py
revisionmenu.py
------------------------------------------------------------
revno: 423.1.9
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Sun 2008-01-27 02:17:31 +0100
message:
Updated NEWS.
modified:
NEWS
------------------------------------------------------------
revno: 423.1.10
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Sun 2008-01-27 02:43:53 +0100
message:
Merge diff widget splitup.
modified:
diff.py
------------------------------------------------------------
revno: 423.8.1
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: changes-below
timestamp: Sun 2008-01-27 00:48:18 +0100
message:
Allow using the diff control as a widget
modified:
diff.py
------------------------------------------------------------
revno: 423.1.11
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Mon 2008-01-28 14:15:46 +0100
message:
Merged with viz About dialog branch.
modified:
about.py
viz/branchwin.py
------------------------------------------------------------
revno: 423.9.1
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-about-dialog
timestamp: Sat 2008-01-26 22:43:29 +0100
message:
Added Help->About menu item to the viz.
modified:
viz/branchwin.py
------------------------------------------------------------
revno: 423.9.2
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-about-dialog
timestamp: Sat 2008-01-26 22:43:55 +0100
message:
Made the About dialog show bzr-gtk information instead of Bazaar information.
modified:
about.py
------------------------------------------------------------
revno: 423.9.3
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: viz-about-dialog
timestamp: Sun 2008-01-27 02:13:38 +0100
message:
Changed About dialog URL, reverted change to license dialog.
modified:
about.py
------------------------------------------------------------
revno: 423.1.12
committer: Gary van der Merwe <garyvdm at garyvdm-desktop>
branch nick: gtk
timestamp: Wed 2008-02-13 10:10:08 +0200
message:
Add missing contributors to Credit dialog. Sort alphabetically.
modified:
olive/__init__.py
------------------------------------------------------------
revno: 423.1.13
committer: Gary van der Merwe <garyvdm at garyvdm-desktop>
branch nick: gtk
timestamp: Wed 2008-02-13 11:25:46 +0200
message:
Move viz loading msg from branchwin to treeview.
modified:
branchview/treeview.py
viz/branchwin.py
------------------------------------------------------------
revno: 423.1.14
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Wed 2008-02-13 14:40:06 +0100
message:
Merged in Gary's fix of the setup script.
modified:
setup.py
------------------------------------------------------------
revno: 423.10.1
committer: Gary van der Merwe <garyvdm at garyvdm-desktop>
branch nick: gtk
timestamp: Wed 2008-02-13 10:53:14 +0200
message:
Add branchview dir to setup.py
modified:
setup.py
------------------------------------------------------------
revno: 423.1.15
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Wed 2008-02-13 14:45:58 +0100
message:
Merged Gary's fix of the Olive encoding issue.
modified:
olive/__init__.py
------------------------------------------------------------
revno: 423.11.1
committer: Gary van der Merwe <garyvdm at garyvdm-desktop>
branch nick: gtk
timestamp: Wed 2008-02-13 11:50:42 +0200
message:
Add encoding header to olive/__init__.py as it now has non ASCII chars.
modified:
olive/__init__.py
------------------------------------------------------------
revno: 423.1.16
committer: Daniel Schierbeck <daniel.schierbeck at gmail.com>
branch nick: trunk
timestamp: Wed 2008-02-13 16:29:23 +0100
message:
Reverted change to Olive's credits list.
modified:
olive/__init__.py
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS 2008-01-08 19:39:39 +0000
+++ b/NEWS 2008-01-27 01:17:31 +0000
@@ -1,6 +1,15 @@
0.94.0 UNRELEASED
+ UI
+
+ * Made the tags associated with a revision render next to the revision
+ node in the branch view. (Ali Sabil)
+
+ * Made the tag list in the revision view be comma-separated. (Daniel Schierbeck)
+
BUG FIXES
+
+ * Make adding tags from the viz work again. (Daniel Schierbeck)
* Catch UnsupportedProtocol exception in the Nautilus extension. (#77965)
=== modified file '__init__.py'
--- a/__init__.py 2008-01-15 07:18:53 +0000
+++ b/__init__.py 2008-02-23 04:55:56 +0000
@@ -219,7 +219,7 @@
:return: The viz window object.
"""
- from viz.branchwin import BranchWindow
+ from viz import BranchWindow
return BranchWindow(branch, revision, limit)
=== modified file 'about.py'
--- a/about.py 2007-07-23 12:03:29 +0000
+++ b/about.py 2008-01-27 01:13:38 +0000
@@ -28,10 +28,10 @@
class AboutDialog(gtk.AboutDialog):
def __init__(self):
super(AboutDialog, self).__init__()
- self.set_name("Bazaar")
- self.set_version(bzrlib.version_string)
- self.set_website("http://bazaar-vcs.org/")
- self.set_license("GNU GPLv2")
+ self.set_name("Bazaar GTK")
+ self.set_version(bzrlib.plugins.gtk.version_string)
+ self.set_website("http://bazaar-vcs.org/BzrGtk")
+ self.set_license("GNU GPL v2")
self.set_icon(gtk.gdk.pixbuf_new_from_file(os.path.join(data_path(), "bzr-icon-64.png")))
self.connect ("response", lambda d, r: d.destroy())
=== added directory 'branchview'
=== added file 'branchview/__init__.py'
--- a/branchview/__init__.py 1970-01-01 00:00:00 +0000
+++ b/branchview/__init__.py 2008-01-13 14:12:49 +0000
@@ -0,0 +1,2 @@
+
+from treeview import *
=== renamed file 'viz/graphcell.py' => 'branchview/graphcell.py'
--- a/viz/graphcell.py 2007-09-22 15:01:53 +0000
+++ b/branchview/graphcell.py 2008-01-22 22:58:29 +0000
@@ -38,6 +38,10 @@
"revision node instruction",
gobject.PARAM_WRITABLE
),
+ "tags": ( gobject.TYPE_PYOBJECT, "tags",
+ "list of tags associated with the node",
+ gobject.PARAM_WRITABLE
+ ),
"in-lines": ( gobject.TYPE_PYOBJECT, "in-lines",
"instructions to draw lines into the cell",
gobject.PARAM_WRITABLE
@@ -52,6 +56,8 @@
"""Set properties from GObject properties."""
if property.name == "node":
self.node = value
+ elif property.name == "tags":
+ self.tags = value
elif property.name == "in-lines":
self.in_lines = value
elif property.name == "out-lines":
@@ -168,8 +174,10 @@
self.set_colour(ctx, colour, 0.5, 1.0)
ctx.fill()
+
+ self.render_tags(ctx, widget.create_pango_context(), cell_area, box_size)
- def render_line (self, ctx, cell_area, box_size, mid, height, start, end, colour):
+ def render_line(self, ctx, cell_area, box_size, mid, height, start, end, colour):
if start is None:
x = cell_area.x + box_size * end + box_size / 2
ctx.move_to(x, mid + height / 3)
@@ -202,4 +210,58 @@
self.set_colour(ctx, colour, 0.0, 0.65)
ctx.stroke()
-
\ No newline at end of file
+
+ def render_tags(self, ctx, pango_ctx, cell_area, box_size):
+ # colour ID used in self.set_colour on the tags
+ TAG_COLOUR_ID = 1
+
+ (column, colour) = self.node
+
+ font_desc = pango.FontDescription()
+ font_desc.set_size(pango.SCALE * 7)
+
+ tag_layout = pango.Layout(pango_ctx)
+ tag_layout.set_font_description(font_desc)
+
+ # The width of the tag label stack
+ width = 0
+
+ for tag_idx, tag in enumerate(self.tags):
+ tag_layout.set_text(" " + tag + " ")
+ text_width, text_height = tag_layout.get_pixel_size()
+
+ x0 = cell_area.x + \
+ box_size * (column + 1.3) + width
+
+ y0 = cell_area.y + \
+ cell_area.height / 2 - \
+ text_height / 2
+
+ width += text_width + 5
+
+ # Draw the tag border
+ ctx.move_to(x0 - box_size / 3, y0 + text_height / 2)
+ ctx.line_to(x0, y0)
+ ctx.line_to(x0 + text_width, y0)
+ ctx.line_to(x0 + text_width, y0 + text_height)
+ ctx.line_to(x0, y0 + text_height)
+ ctx.line_to(x0 - box_size / 3, y0 + text_height / 2)
+
+ ctx.new_sub_path()
+ ctx.arc(x0 - box_size / 12,
+ y0 + text_height / 2,
+ box_size / 7,
+ 0, 2 * math.pi);
+
+ self.set_colour(ctx, TAG_COLOUR_ID, 0.0, 0.5)
+ ctx.stroke_preserve()
+
+ ctx.set_fill_rule (cairo.FILL_RULE_EVEN_ODD)
+ self.set_colour(ctx, TAG_COLOUR_ID, 0.5, 1.0)
+ ctx.fill()
+
+ # Draw the tag text
+ self.set_colour(ctx, 0, 0.0, 0.0)
+ ctx.move_to(x0, y0)
+ ctx.show_layout(tag_layout)
+
=== renamed file 'viz/linegraph.py' => 'branchview/linegraph.py'
=== renamed file 'viz/treemodel.py' => 'branchview/treemodel.py'
--- a/viz/treemodel.py 2007-12-20 23:43:57 +0000
+++ b/branchview/treemodel.py 2008-01-23 16:24:25 +0000
@@ -20,27 +20,42 @@
LINES = 2
LAST_LINES = 3
REVNO = 4
-MESSAGE = 5
-COMMITER = 6
-TIMESTAMP = 7
-REVISION = 8
-PARENTS = 9
-CHILDREN = 10
+SUMMARY = 5
+MESSAGE = 6
+COMMITTER = 7
+TIMESTAMP = 8
+REVISION = 9
+PARENTS = 10
+CHILDREN = 11
+TAGS = 12
class TreeModel(gtk.GenericTreeModel):
- def __init__ (self, repository, line_graph_data):
+ def __init__ (self, branch, line_graph_data):
gtk.GenericTreeModel.__init__(self)
self.revisions = {}
- self.repository = repository
+ self.branch = branch
+ self.repository = branch.repository
self.line_graph_data = line_graph_data
-
+
+ if self.branch.supports_tags():
+ self.tags = self.branch.tags.get_reverse_tag_dict()
+ else:
+ self.tags = {}
+
+ def add_tag(self, tag, revid):
+ self.branch.tags.set_tag(tag, revid)
+ try:
+ self.tags[revid].append(tag)
+ except KeyError:
+ self.tags[revid] = [tag]
+
def on_get_flags(self):
return gtk.TREE_MODEL_LIST_ONLY
def on_get_n_columns(self):
- return 11
+ return 13
def on_get_column_type(self, index):
if index == REVID: return gobject.TYPE_STRING
@@ -48,12 +63,14 @@
if index == LINES: return gobject.TYPE_PYOBJECT
if index == LAST_LINES: return gobject.TYPE_PYOBJECT
if index == REVNO: return gobject.TYPE_STRING
+ if index == SUMMARY: return gobject.TYPE_STRING
if index == MESSAGE: return gobject.TYPE_STRING
- if index == COMMITER: return gobject.TYPE_STRING
+ if index == COMMITTER: return gobject.TYPE_STRING
if index == TIMESTAMP: return gobject.TYPE_STRING
if index == REVISION: return gobject.TYPE_PYOBJECT
if index == PARENTS: return gobject.TYPE_PYOBJECT
if index == CHILDREN: return gobject.TYPE_PYOBJECT
+ if index == TAGS: return gobject.TYPE_PYOBJECT
def on_get_iter(self, path):
return path[0]
@@ -80,7 +97,9 @@
return []
if column == REVNO: return ".".join(["%d" % (revno)
for revno in revno_sequence])
-
+
+ if column == TAGS: return self.tags.get(revid, [])
+
if revid is None:
return None
if revid not in self.revisions:
@@ -90,8 +109,9 @@
revision = self.revisions[revid]
if column == REVISION: return revision
- if column == MESSAGE: return escape(revision.get_summary())
- if column == COMMITER: return re.sub('<.*@.*>', '',
+ if column == SUMMARY: return escape(revision.get_summary())
+ if column == MESSAGE: return escape(revision.message)
+ if column == COMMITTER: return re.sub('<.*@.*>', '',
revision.committer).strip(' ')
if column == TIMESTAMP:
return strftime("%Y-%m-%d %H:%M", localtime(revision.timestamp))
=== renamed file 'viz/treeview.py' => 'branchview/treeview.py'
--- a/viz/treeview.py 2007-12-02 17:04:48 +0000
+++ b/branchview/treeview.py 2008-02-13 09:25:46 +0000
@@ -19,7 +19,7 @@
from treemodel import TreeModel
from bzrlib.revision import NULL_REVISION
-class TreeView(gtk.ScrolledWindow):
+class TreeView(gtk.VBox):
__gproperties__ = {
'branch': (gobject.TYPE_PYOBJECT,
@@ -74,7 +74,10 @@
()),
'revision-selected': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
- ())
+ ()),
+ 'tag-added': (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_STRING, gobject.TYPE_STRING))
}
def __init__(self, branch, start, maxnum, compact=True):
@@ -87,15 +90,24 @@
:param broken_line_length: After how much lines to break
branches.
"""
- gtk.ScrolledWindow.__init__(self)
-
- self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
- self.set_shadow_type(gtk.SHADOW_IN)
-
- self.construct_treeview()
-
- self.iter = None
+ gtk.VBox.__init__(self, spacing=0)
+
+ self.pack_start(self.construct_loading_msg(), expand=False, fill=True)
+ self.connect('revisions-loaded',
+ lambda x: self.loading_msg_box.hide())
+
+ self.scrolled_window = gtk.ScrolledWindow()
+ self.scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+ self.scrolled_window.set_shadow_type(gtk.SHADOW_IN)
+ self.scrolled_window.show()
+ self.pack_start(self.scrolled_window, expand=True, fill=True)
+
+ self.scrolled_window.add(self.construct_treeview())
+
+
+ self.iter = None
self.branch = branch
+ self.revision = None
self.start = start
self.maxnum = maxnum
@@ -167,8 +179,26 @@
:return: list of revision ids.
"""
return self.get_property('parents')
+
+ def add_tag(self, tag, revid=None):
+ if revid is None: revid = self.revision.revision_id
+
+ try:
+ self.branch.unlock()
+
+ try:
+ self.branch.lock_write()
+ self.model.add_tag(tag, revid)
+ finally:
+ self.branch.unlock()
+
+ finally:
+ self.branch.lock_read()
+
+ self.emit('tag-added', tag, revid)
def refresh(self):
+ self.loading_msg_box.show()
gobject.idle_add(self.populate, self.get_revision())
def update(self):
@@ -233,7 +263,7 @@
self.maxnum,
broken_line_length)
- self.model = TreeModel(self.branch.repository, linegraphdata)
+ self.model = TreeModel(self.branch, linegraphdata)
self.graph_cell.columns_len = columns_len
width = self.graph_cell.get_size(self.treeview)[2]
if width > 500:
@@ -297,7 +327,6 @@
self.treeview.set_property('fixed-height-mode', True)
- self.add(self.treeview)
self.treeview.show()
cell = gtk.CellRendererText()
@@ -317,6 +346,7 @@
self.graph_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
self.graph_column.pack_start(self.graph_cell, expand=False)
self.graph_column.add_attribute(self.graph_cell, "node", treemodel.NODE)
+ self.graph_column.add_attribute(self.graph_cell, "tags", treemodel.TAGS)
self.graph_column.add_attribute(self.graph_cell, "in-lines", treemodel.LAST_LINES)
self.graph_column.add_attribute(self.graph_cell, "out-lines", treemodel.LINES)
self.treeview.append_column(self.graph_column)
@@ -324,13 +354,13 @@
cell = gtk.CellRendererText()
cell.set_property("width-chars", 65)
cell.set_property("ellipsize", pango.ELLIPSIZE_END)
- self.msg_column = gtk.TreeViewColumn("Message")
- self.msg_column.set_resizable(True)
- self.msg_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
- self.msg_column.set_fixed_width(cell.get_size(self.treeview)[2])
- self.msg_column.pack_start(cell, expand=True)
- self.msg_column.add_attribute(cell, "markup", treemodel.MESSAGE)
- self.treeview.append_column(self.msg_column)
+ self.summary_column = gtk.TreeViewColumn("Summary")
+ self.summary_column.set_resizable(True)
+ self.summary_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ self.summary_column.set_fixed_width(cell.get_size(self.treeview)[2])
+ self.summary_column.pack_start(cell, expand=True)
+ self.summary_column.add_attribute(cell, "markup", treemodel.SUMMARY)
+ self.treeview.append_column(self.summary_column)
cell = gtk.CellRendererText()
cell.set_property("width-chars", 15)
@@ -340,7 +370,7 @@
self.committer_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
self.committer_column.set_fixed_width(cell.get_size(self.treeview)[2])
self.committer_column.pack_start(cell, expand=True)
- self.committer_column.add_attribute(cell, "text", treemodel.COMMITER)
+ self.committer_column.add_attribute(cell, "text", treemodel.COMMITTER)
self.treeview.append_column(self.committer_column)
cell = gtk.CellRendererText()
@@ -354,6 +384,26 @@
self.date_column.pack_start(cell, expand=True)
self.date_column.add_attribute(cell, "text", treemodel.TIMESTAMP)
self.treeview.append_column(self.date_column)
+
+ return self.treeview
+
+ def construct_loading_msg(self):
+ image_loading = gtk.image_new_from_stock(gtk.STOCK_REFRESH,
+ gtk.ICON_SIZE_BUTTON)
+ image_loading.show()
+
+ label_loading = gtk.Label(_("Please wait, loading ancestral graph..."))
+ label_loading.set_alignment(0.0, 0.5)
+ label_loading.show()
+
+ self.loading_msg_box = gtk.HBox()
+ self.loading_msg_box.set_spacing(5)
+ self.loading_msg_box.set_border_width(5)
+ self.loading_msg_box.pack_start(image_loading, False, False)
+ self.loading_msg_box.pack_start(label_loading, True, True)
+ self.loading_msg_box.show()
+
+ return self.loading_msg_box
def _on_selection_changed(self, treeview):
"""callback for when the treeview changes."""
@@ -368,6 +418,7 @@
menu = RevisionPopupMenu(self.branch.repository,
[self.get_revision().revision_id],
self.branch)
+ menu.connect('tag-added', lambda w, t, r: self.add_tag(t, r))
menu.popup(None, None, None, event.button, event.get_time())
def _on_revision_activated(self, widget, path, col):
=== modified file 'diff.py'
--- a/diff.py 2008-01-15 07:18:53 +0000
+++ b/diff.py 2008-02-23 04:55:56 +0000
@@ -283,50 +283,18 @@
self.buffer.set_text(decoded.encode('UTF-8'))
-class DiffWindow(Window):
- """Diff window.
+class DiffWidget(gtk.HPaned):
+ """Diff widget
- This object represents and manages a single window containing the
- differences between two revisions on a branch.
"""
-
- def __init__(self, parent=None):
- Window.__init__(self, parent)
- self.set_border_width(0)
- self.set_title("bzrk diff")
-
- # Use two thirds of the screen by default
- screen = self.get_screen()
- monitor = screen.get_monitor_geometry(0)
- width = int(monitor.width * 0.66)
- height = int(monitor.height * 0.66)
- self.set_default_size(width, height)
-
- self.construct()
-
- def _get_button_bar(self):
- return None
-
- def construct(self):
- """Construct the window contents."""
- # The window consists of a pane containing: the
- # hierarchical list of files on the left, and the diff
- # for the currently selected file on the right.
- self.vbox = gtk.VBox()
- self.add(self.vbox)
- self.vbox.show()
- self.pane = gtk.HPaned()
- self.vbox.pack_end(self.pane, expand=True, fill=True)
- hbox = self._get_button_bar()
- if hbox is not None:
- self.vbox.pack_start(hbox, expand=False, fill=True)
- self.pane.show()
+ def __init__(self):
+ super(DiffWidget, self).__init__()
# The file hierarchy: a scrollable treeview
scrollwin = gtk.ScrolledWindow()
scrollwin.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
scrollwin.set_shadow_type(gtk.SHADOW_IN)
- self.pane.pack1(scrollwin)
+ self.pack1(scrollwin)
scrollwin.show()
self.model = gtk.TreeStore(str, str)
@@ -344,12 +312,12 @@
column.add_attribute(cell, "text", 0)
self.treeview.append_column(column)
- def set_diff_text(self, description, lines):
+ def set_diff_text(self, lines):
# The diffs of the selected file: a scrollable source or
# text view
self.diff_view = DiffFileView()
self.diff_view.show()
- self.pane.pack2(self.diff_view)
+ self.pack2(self.diff_view)
self.model.append(None, [ "Complete Diff", "" ])
self.diff_view._diffs[None] = ''.join(lines)
for patch in parse_patches(lines):
@@ -359,16 +327,14 @@
self.diff_view._diffs[newname] = str(patch)
self.diff_view.show_diff(None)
- def set_diff(self, description, rev_tree, parent_tree):
+ def set_diff(self, rev_tree, parent_tree):
"""Set the differences showed by this window.
Compares the two trees and populates the window with the
differences.
"""
- # The diffs of the selected file: a scrollable source or
- # text view
self.diff_view = DiffView()
- self.pane.pack2(self.diff_view)
+ self.pack2(self.diff_view)
self.diff_view.show()
self.diff_view.set_trees(rev_tree, parent_tree)
self.rev_tree = rev_tree
@@ -401,8 +367,6 @@
self.model.append(titer, [ path, path ])
self.treeview.expand_all()
- self.set_title(description + " - bzrk diff")
- self.diff_view.show_diff(None)
def set_file(self, file_path):
tv_path = None
@@ -428,6 +392,59 @@
self.diff_view.show_diff(specific_files)
+class DiffWindow(Window):
+ """Diff window.
+
+ This object represents and manages a single window containing the
+ differences between two revisions on a branch.
+ """
+
+ def __init__(self, parent=None):
+ Window.__init__(self, parent)
+ self.set_border_width(0)
+ self.set_title("bzrk diff")
+
+ # Use two thirds of the screen by default
+ screen = self.get_screen()
+ monitor = screen.get_monitor_geometry(0)
+ width = int(monitor.width * 0.66)
+ height = int(monitor.height * 0.66)
+ self.set_default_size(width, height)
+
+ self.construct()
+
+ def construct(self):
+ """Construct the window contents."""
+ self.vbox = gtk.VBox()
+ self.add(self.vbox)
+ self.vbox.show()
+ hbox = self._get_button_bar()
+ if hbox is not None:
+ self.vbox.pack_start(hbox, expand=False, fill=True)
+ self.diff = DiffWidget()
+ self.vbox.add(self.diff)
+ self.diff.show_all()
+
+ def _get_button_bar(self):
+ return None
+
+ def set_diff_text(self, description, lines):
+ self.diff.set_diff_text(lines)
+ self.set_title(description + " - bzrk diff")
+
+ def set_diff(self, description, rev_tree, parent_tree):
+ """Set the differences showed by this window.
+
+ Compares the two trees and populates the window with the
+ differences.
+ """
+ self.diff.set_diff(rev_tree, parent_tree)
+ self.set_title(description + " - bzrk diff")
+
+ def set_file(self, file_path):
+ self.diff.set_file(file_path)
+
+
class MergeDirectiveWindow(DiffWindow):
def __init__(self, directive, parent=None):
=== modified file 'olive/__init__.py'
--- a/olive/__init__.py 2007-10-26 16:18:50 +0000
+++ b/olive/__init__.py 2008-02-13 15:29:23 +0000
@@ -1,3 +1,6 @@
+?#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas at gmail.com>
#
# This program is free software; you can redistribute it and/or modify
=== modified file 'revisionmenu.py'
--- a/revisionmenu.py 2007-11-21 23:49:58 +0000
+++ b/revisionmenu.py 2008-01-23 16:36:21 +0000
@@ -23,10 +23,20 @@
import bzrlib
import gtk
+import gobject
from bzrlib import (errors, ui)
from bzrlib.revision import NULL_REVISION
class RevisionPopupMenu(gtk.Menu):
+
+ __gsignals__ = {
+ 'tag-added': (
+ gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_STRING, gobject.TYPE_STRING)
+ )
+ }
+
def __init__(self, repository, revids, branch=None, wt=None):
super(RevisionPopupMenu, self).__init__()
self.branch = branch
@@ -100,11 +110,7 @@
dialog.hide()
if response == gtk.RESPONSE_OK:
- try:
- self.branch.lock_write()
- self.branch.tags.set_tag(dialog.tagname, dialog._revid)
- finally:
- self.branch.unlock()
+ self.emit('tag-added', dialog.tagname, dialog._revid)
dialog.destroy()
=== modified file 'revisionview.py'
--- a/revisionview.py 2007-12-06 23:49:08 +0000
+++ b/revisionview.py 2008-01-23 16:24:25 +0000
@@ -77,10 +77,7 @@
self._revision = None
self._branch = branch
- if self._branch is not None and self._branch.supports_tags():
- self._tagdict = self._branch.tags.get_reverse_tag_dict()
- else:
- self._tagdict = {}
+ self.update_tags()
self.set_file_id(None)
@@ -179,6 +176,14 @@
else:
self.file_info_box.hide()
+ def update_tags(self):
+ if self._branch is not None and self._branch.supports_tags():
+ self._tagdict = self._branch.tags.get_reverse_tag_dict()
+ else:
+ self._tagdict = {}
+
+ self._add_tags()
+
def set_children(self, children):
self._add_parents_or_children(children,
self.children_widgets,
@@ -192,6 +197,8 @@
"""Callback for when the go button for a parent is clicked."""
def _add_tags(self, *args):
+ if self._revision is None: return
+
if self._tagdict.has_key(self._revision.revision_id):
tags = self._tagdict[self._revision.revision_id]
else:
@@ -202,16 +209,8 @@
self.tags_label.hide()
return
- for widget in self.tags_widgets:
- self.tags_list.remove(widget)
-
- self.tags_widgets = []
-
- for tag in tags:
- widget = gtk.Label(tag)
- widget.set_selectable(True)
- self.tags_widgets.append(widget)
- self.tags_list.add(widget)
+ self.tags_list.set_text(", ".join(tags))
+
self.tags_list.show_all()
self.tags_label.show_all()
@@ -367,12 +366,11 @@
self.tags_label.show()
align = gtk.Alignment(0.0, 0.5)
- self.tags_list = gtk.VBox()
+ self.tags_list = gtk.Label()
align.add(self.tags_list)
self.table.attach(align, 1, 2, 5, 6, gtk.EXPAND | gtk.FILL, gtk.FILL)
align.show()
self.tags_list.show()
- self.tags_widgets = []
self.connect('notify::revision', self._add_tags)
=== modified file 'setup.py'
--- a/setup.py 2007-12-10 16:01:51 +0000
+++ b/setup.py 2008-02-13 08:53:14 +0000
@@ -98,7 +98,8 @@
"bzrlib.plugins.gtk.viz": "viz",
"bzrlib.plugins.gtk.annotate": "annotate",
"bzrlib.plugins.gtk.olive": "olive",
- "bzrlib.plugins.gtk.tests": "tests"
+ "bzrlib.plugins.gtk.tests": "tests",
+ "bzrlib.plugins.gtk.branchview": "branchview",
},
packages = [
"olive",
@@ -106,7 +107,8 @@
"bzrlib.plugins.gtk.viz",
"bzrlib.plugins.gtk.annotate",
"bzrlib.plugins.gtk.olive",
- "bzrlib.plugins.gtk.tests"
+ "bzrlib.plugins.gtk.tests",
+ "bzrlib.plugins.gtk.branchview",
],
data_files=[('share/olive', ['olive.glade',
'cmenu.ui',
=== modified file 'viz/__init__.py'
--- a/viz/__init__.py 2006-09-06 09:27:12 +0000
+++ b/viz/__init__.py 2008-01-13 14:15:20 +0000
@@ -11,6 +11,8 @@
The bottom hald of the window shows the details for the selected revision.
"""
+from branchwin import BranchWindow
+
__copyright__ = "Copyright ? 2005 Canonical Ltd."
__author__ = "Scott James Remnant <scott at ubuntu.com>"
=== modified file 'viz/branchwin.py'
--- a/viz/branchwin.py 2007-12-06 23:43:26 +0000
+++ b/viz/branchwin.py 2008-02-13 09:25:46 +0000
@@ -16,10 +16,10 @@
from bzrlib.plugins.gtk.window import Window
from bzrlib.plugins.gtk.tags import AddTagDialog
from bzrlib.plugins.gtk.preferences import PreferencesWindow
+from bzrlib.plugins.gtk.branchview import TreeView
from bzrlib.revision import Revision
from bzrlib.config import BranchConfig
from bzrlib.config import GlobalConfig
-from treeview import TreeView
class BranchWindow(Window):
"""Branch window.
@@ -100,7 +100,6 @@
vbox.pack_start(self.construct_menubar(), expand=False, fill=True)
vbox.pack_start(self.construct_navigation(), expand=False, fill=True)
- vbox.pack_start(self.construct_loading_msg(), expand=False, fill=True)
vbox.pack_start(self.paned, expand=True, fill=True)
vbox.set_focus_child(self.paned)
@@ -170,27 +169,13 @@
go_menu_next = self.next_rev_action.create_menu_item()
go_menu_prev = self.prev_rev_action.create_menu_item()
- tags_menu = gtk.Menu()
- go_menu_tags = gtk.MenuItem("_Tags")
- go_menu_tags.set_submenu(tags_menu)
-
- if self.branch.supports_tags():
- tags = self.branch.tags.get_tag_dict().items()
- tags.sort()
- tags.reverse()
- for tag, revid in tags:
- tag_item = gtk.MenuItem(tag)
- tag_item.connect('activate', self._tag_selected_cb, revid)
- tags_menu.add(tag_item)
-
- go_menu_tags.set_sensitive(len(tags) != 0)
- else:
- go_menu_tags.set_sensitive(False)
+ self.go_menu_tags = gtk.MenuItem("_Tags")
+ self._update_tags()
go_menu.add(go_menu_next)
go_menu.add(go_menu_prev)
go_menu.add(gtk.SeparatorMenuItem())
- go_menu.add(go_menu_tags)
+ go_menu.add(self.go_menu_tags)
revision_menu = gtk.Menu()
revision_menuitem = gtk.MenuItem("_Revision")
@@ -213,33 +198,25 @@
branch_menu.add(gtk.MenuItem("Pu_ll Revisions"))
branch_menu.add(gtk.MenuItem("Pu_sh Revisions"))
+ help_menu = gtk.Menu()
+ help_menuitem = gtk.MenuItem("_Help")
+ help_menuitem.set_submenu(help_menu)
+
+ help_about_menuitem = gtk.ImageMenuItem(gtk.STOCK_ABOUT, self.accel_group)
+ help_about_menuitem.connect('activate', self._about_dialog_cb)
+
+ help_menu.add(help_about_menuitem)
+
menubar.add(file_menuitem)
menubar.add(edit_menuitem)
menubar.add(view_menuitem)
menubar.add(go_menuitem)
menubar.add(revision_menuitem)
menubar.add(branch_menuitem)
+ menubar.add(help_menuitem)
menubar.show_all()
return menubar
-
- def construct_loading_msg(self):
- image_loading = gtk.image_new_from_stock(gtk.STOCK_REFRESH,
- gtk.ICON_SIZE_BUTTON)
- image_loading.show()
-
- label_loading = gtk.Label(_("Please wait, loading ancestral graph..."))
- label_loading.set_alignment(0.0, 0.5)
- label_loading.show()
-
- self.loading_msg_box = gtk.HBox()
- self.loading_msg_box.set_spacing(5)
- self.loading_msg_box.set_border_width(5)
- self.loading_msg_box.pack_start(image_loading, False, False)
- self.loading_msg_box.pack_start(label_loading, True, True)
- self.loading_msg_box.show()
-
- return self.loading_msg_box
def construct_top(self):
"""Construct the top-half of the window."""
@@ -250,8 +227,7 @@
self.treeview.connect('revision-selected',
self._treeselection_changed_cb)
- self.treeview.connect('revisions-loaded',
- lambda x: self.loading_msg_box.hide())
+ self.treeview.connect('tag-added', lambda w, t, r: self._update_tags())
for col in ["revno", "date"]:
option = self.config.get_user_option(col + '-column-visible')
@@ -297,6 +273,7 @@
self.revisionview.show()
self.revisionview.set_show_callback(self._show_clicked_cb)
self.revisionview.connect('notify::revision', self._go_clicked_cb)
+ self.treeview.connect('tag-added', lambda w, t, r: self.revisionview.update_tags())
return self.revisionview
def _tag_selected_cb(self, menuitem, revid):
@@ -388,26 +365,24 @@
def _tag_revision_cb(self, w):
try:
self.treeview.set_sensitive(False)
- self.branch.unlock()
dialog = AddTagDialog(self.branch.repository, self.treeview.get_revision().revision_id, self.branch)
response = dialog.run()
if response != gtk.RESPONSE_NONE:
dialog.hide()
if response == gtk.RESPONSE_OK:
- try:
- self.branch.lock_write()
- self.branch.tags.set_tag(dialog.tagname, dialog._revid)
- finally:
- self.branch.unlock()
+ self.treeview.add_tag(dialog.tagname, dialog._revid)
dialog.destroy()
finally:
- self.branch.lock_read()
- self.treeview.emit("revision-selected")
self.treeview.set_sensitive(True)
+ def _about_dialog_cb(self, w):
+ from bzrlib.plugins.gtk.about import AboutDialog
+
+ AboutDialog().run()
+
def _col_visibility_changed(self, col, property):
self.config.set_user_option(property + '-column-visible', col.get_active())
self.treeview.set_property(property + '-column-visible', col.get_active())
@@ -424,4 +399,25 @@
dialog.run()
def _refresh_clicked(self, w):
- self.treeview.update()
+ self.treeview.refresh()
+
+ def _update_tags(self):
+ menu = gtk.Menu()
+
+ if self.branch.supports_tags():
+ tags = self.branch.tags.get_tag_dict().items()
+ tags.sort()
+ tags.reverse()
+ for tag, revid in tags:
+ tag_item = gtk.MenuItem(tag)
+ tag_item.connect('activate', self._tag_selected_cb, revid)
+ menu.add(tag_item)
+ self.go_menu_tags.set_submenu(menu)
+
+ self.go_menu_tags.set_sensitive(len(tags) != 0)
+ else:
+ self.go_menu_tags.set_sensitive(False)
+
+ self.go_menu_tags.show_all()
+
+
More information about the Pkg-bazaar-commits
mailing list