Implemented the menubar item way. Jasper
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [EMAIL PROTECTED] # target_branch: https://code.launchpad.net/~bzr-gtk/bzr-gtk/trunk # testament_sha1: a60d94762fbe962c0fd56cf28574a6514f1dead8 # timestamp: 2008-07-25 10:04:15 +0200 # source_branch: https://code.launchpad.net/~bzr-gtk/bzr-gtk/trunk # base_revision_id: [EMAIL PROTECTED] # # Begin patch === modified file 'diff.py' --- diff.py 2008-07-17 11:24:26 +0000 +++ diff.py 2008-07-25 08:04:02 +0000 @@ -73,15 +73,15 @@ self.buffer.set_language(gsl) self.buffer.set_highlight(True) - sourceview = gtksourceview.SourceView(self.buffer) + self.sourceview = gtksourceview.SourceView(self.buffer) else: self.buffer = gtk.TextBuffer() - sourceview = gtk.TextView(self.buffer) + self.sourceview = gtk.TextView(self.buffer) - sourceview.set_editable(False) - sourceview.modify_font(pango.FontDescription("Monospace")) - self.add(sourceview) - sourceview.show() + self.sourceview.set_editable(False) + self.sourceview.modify_font(pango.FontDescription("Monospace")) + self.add(self.sourceview) + self.sourceview.show() @staticmethod def apply_gedit_colors(lang): @@ -305,7 +305,7 @@ scrollwin.set_shadow_type(gtk.SHADOW_IN) self.pack1(scrollwin) scrollwin.show() - + self.model = gtk.TreeStore(str, str) self.treeview = gtk.TreeView(self.model) self.treeview.set_headers_visible(False) @@ -405,9 +405,15 @@ return elif specific_files == [ "" ]: specific_files = None - + self.diff_view.show_diff(specific_files) - + + def _on_wraplines_toggled(self, widget=None, wrap=False): + """Callback for when the wrap lines checkbutton is toggled""" + if wrap or widget.get_active(): + self.diff_view.sourceview.set_wrap_mode(gtk.WRAP_WORD) + else: + self.diff_view.sourceview.set_wrap_mode(gtk.WRAP_NONE) class DiffWindow(Window): """Diff window. @@ -434,13 +440,33 @@ self.vbox = gtk.VBox() self.add(self.vbox) self.vbox.show() + self.diff = DiffWidget() + self.vbox.pack_end(self.diff, True, True, 0) + self.diff.show_all() + # Build after DiffWidget to connect signals + menubar = self._get_menu_bar() + self.vbox.pack_start(menubar, False, False, 0) hbox = self._get_button_bar(operations) 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() - + self.vbox.pack_start(hbox, False, True, 0) + + + def _get_menu_bar(self): + menubar = gtk.MenuBar() + # View menu + mb_view = gtk.MenuItem(_i18n("_View")) + mb_view_menu = gtk.Menu() + mb_view_wrapsource = gtk.CheckMenuItem(_i18n("Wrap _long lines")) + mb_view_wrapsource.connect('activate', self.diff._on_wraplines_toggled) + mb_view_wrapsource.show() + mb_view_menu.append(mb_view_wrapsource) + mb_view.show() + mb_view.set_submenu(mb_view_menu) + mb_view.show() + menubar.append(mb_view) + menubar.show() + return menubar + def _get_button_bar(self, operations): """Return a button bar to use.
=== modified file 'viz/branchwin.py'
--- viz/branchwin.py 2008-07-18 15:19:21 +0000
+++ viz/branchwin.py 2008-07-25 08:04:02 +0000
@@ -57,15 +57,16 @@
self.set_title(branch.nick + " - revision history")
- # Use three-quarters of the screen by default
- screen = self.get_screen()
- monitor = screen.get_monitor_geometry(0)
- width = int(monitor.width * 0.75)
- height = int(monitor.height * 0.75)
# user-configured window size
size = self._load_size('viz-window-size')
if size:
width, height = size
+ else:
+ # Use three-quarters of the screen by default
+ screen = self.get_screen()
+ monitor = screen.get_monitor_geometry(0)
+ width = int(monitor.width * 0.75)
+ height = int(monitor.height * 0.75)
self.set_default_size(width, height)
self.set_size_request(width/3, height/3)
self.connect("size-allocate", self._on_size_allocate, 'viz-window-size')
@@ -125,7 +126,7 @@
vbox.set_focus_child(self.paned)
vbox.show()
-
+
def construct_menubar(self):
menubar = gtk.MenuBar()
@@ -176,23 +177,31 @@
view_menu_compact = gtk.CheckMenuItem("Show Compact Graph")
view_menu_compact.set_active(self.compact_view)
view_menu_compact.connect('activate', self._brokenlines_toggled_cb)
-
+
view_menu_diffs = gtk.CheckMenuItem("Show Diffs")
view_menu_diffs.set_active(False)
if self.config.get_user_option('viz-show-diffs') == 'True':
view_menu_diffs.set_active(True)
view_menu_diffs.connect('toggled', self._diff_visibility_changed)
-
+
view_menu_wide_diffs = gtk.CheckMenuItem("Wide Diffs")
view_menu_wide_diffs.set_active(False)
if self.config.get_user_option('viz-wide-diffs') == 'True':
view_menu_wide_diffs.set_active(True)
view_menu_wide_diffs.connect('toggled', self._diff_placement_changed)
-
+
+ view_menu_wrap_diffs = gtk.CheckMenuItem("Wrap _long lines in Diffs")
+ view_menu_wrap_diffs.set_active(False)
+ if self.config.get_user_option('viz-wrap-diffs') == 'True':
+ view_menu_wrap_diffs.set_active(True)
+ view_menu_wrap_diffs.connect('toggled', self._diff_wrap_changed)
+
view_menu.add(view_menu_toolbar)
view_menu.add(view_menu_compact)
+ view_menu.add(gtk.SeparatorMenuItem())
view_menu.add(view_menu_diffs)
view_menu.add(view_menu_wide_diffs)
+ view_menu.add(view_menu_wrap_diffs)
view_menu.add(gtk.SeparatorMenuItem())
self.mnu_show_revno_column = gtk.CheckMenuItem("Show Revision _Number Column")
@@ -422,7 +431,6 @@
self.revisionview.set_revision(revision)
self.revisionview.set_children(children)
-
self.update_diff_panel(revision, parents)
def _tree_revision_activated(self, widget, path, col):
@@ -545,7 +553,12 @@
self._make_diff_nonzero_size()
self.treeview.emit('revision-selected')
-
+
+ def _diff_wrap_changed(self, widget):
+ """Toggle word wrap in the diff widget."""
+ self.config.set_user_option('viz-wrap-diffs', widget.get_active())
+ self.diff._on_wraplines_toggled(widget)
+
def _show_about_cb(self, w):
dialog = AboutDialog()
dialog.connect('response', lambda d,r: d.destroy())
@@ -640,4 +653,6 @@
parent_tree = self.branch.repository.revision_tree(parent_id)
self.diff.set_diff(rev_tree, parent_tree)
+ if self.config.get_user_option('viz-wrap-diffs') == 'True':
+ self.diff._on_wraplines_toggled(wrap=True)
self.diff.show_all()
# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWS5WsJQABnvfgERUWf///3+z
34C////wYAucPpoHuaEoAoi6wAAABIBEKBqajU9I9TQ0A0GgAAAAABoNPUBxkyaMQxNMBAwJpgjB
MTTTQAYQrSbQoeoyGmgGmgAaAAMg0AAAlNEAgRoIE1T/STapo9J6R6gNBoAGnqeoDjJk0YhiaYCB
gTTBGCYmmmgAwgVJJMTUwCGk9NAKYNTJkNU9HpR+jVNNqeoD00mDMG/PyTv6E0UL7M6gd/MUxMf2
/Z5h5uvYez/NaY7YajTSjIcoufF6fJwKf6dj+SK2cqj6E2yeDSC6Pk7SOjyPn0GmMmbxEcYxxzs9
CrM3OHKobJMkM2vfkfftGVbSu0qhcjOheItKpUueIDDNeJDV/482ff+3XwTkaClUKoKqVU9Rl6X/
LAbdc9776uSKdYKIgTVs7dHkdbUfq6LXKWu6acOURWw5YuJySSCcOPJ31lCFabOYVYFmCQSCfrhl
1wO0ZM8fCjtnEqaK+0/1xDZgcU2FwYg0FBHCX3cbnz5fdBHv2uN3f7PUkSytuwPlgW2Uy5XT40+o
EeGV66FxIyr0gbkINteSUmT+EwME1SAkeMsUuXHTq2i0nLBz9vZ/Tt+g9D8AjoTQvWM1AbRT3SJm
hT8/wIOfiuap4MzXMEuxaZ+Z0DgMkY+Hxf5kFjLN0QWY9h7kdmTcC/3nPcj0pKlcN4IIg0gpnGFA
eSvDZCaSb8O22f29dPDIpnxpB9tXW2cC0fZQU4mSoUIIJphxFNRGch0gUploxKS0oBAI7MhgQSyd
Siiqr/I6h/LX7OsTymB7J0PF8R22+DVxiapqsxp9k86O2jendVddWkdWirDmW9F3Sxyrd0onuweT
FhxAXaxdDoyWKDOIH+ufmN0NceOB3ck+f5yOPDl5e9pF9SfZSWqHKlql1Q4Z1j7PCJbClsZImGov
FmaaBofiZl+mcmWoZZ1NQ0M65cwNq6aDOiW05DGJPeuTLU5ml+PjE2iYUyps6/BldraWsY72rNu+
lx62F2vXE0kmxvtfR68zY1zYwGRbIJchrhWfNz5mD9wcioIyHDluot8diSNvTM72lIS5DtPiNIRQ
4HAzM7W6GlvrTM1GG65G1e3kKmFRK3l7DJSCTj5BcJeWHsGZU7ua2NAMBBNhqBfYWN/MCjULTgdM
E7ncWNBBIMNQtNRaVOdGmw3dVsajgURih3m+JMM4ihmxI5GZpImOYENqXJyDNrHUmaF5liC52uRd
1TKl40gKgpgVcZTTUFJNnBMFGZJzZ3sVH1JesyMuASGkbDWNTYYbcyzSWuxzJiNSlErGwxgD2uw5
dn1yDnDDZV5YRTOMilJy4m7OZljibGYcgmNwObDeZ6mG6z3xvGWs531FhJJKjO4rBYtybU1G6I2P
E4dOnMi+QWjbMd+RU4yVMmbY0LliDObToaWkaXTnZ1GWFik0xXorUu3LhM63hfDmByCTlwOp0JlC
hxNTiayAh331hajs4wC6HcVJNc2M70LGxqZ7SualC0tQcdi+z655PkrUJ2kpTmWhdCG0OBkGpI0I
NlQgQ+gybGDRq5npGfVhuXuYaG5oU0uE3vaPTPtjj9tWt+Xfv2mlKaXTVJxF25OEL61H9eujjpWS
fNUfJxknQ6DI3Sz1LWOZVPBSlLrljoqVqvQ9RvqNSC45CMCIJNl8PMYb/BNuDCYEYj43ol5MiyZL
6MQHdnAaWcwYIQgEhcQWiWZPSVAezw1f1EV1yEsfSYlwQ01n15PIt2ZHySmN+rodjFnYn0d3Vfhr
mt3JTOqGZoi5Ucy1zEzznzu7546aqpNUrMlT7o3qkpti58kyTYa8fi9b2vS2E9j3Pg838YRMz4MH
W52l8mDJqfhnXujY1utE7N9Dy8U23bXT3TNuXcjmh/XLUifvy/6hjaTczjlNlpBrUbj0flaL5JjO
//1+kfzlw/2+k0eDk62DY8TufmYsyze1xNO3spyVL2Dve76elmaMfbOFVyqLJlqROY+anYq2fBsc
H5EKcNitaxwXPzXn+rzYutSJi74naZ3sd+FG2oaTQ8ns7W/glM0mS9TZKioXf2dXa9C0UsUsUzzK
VU9Umcyk66t6Nti2laUstJm71nXvLU7DGSmYUsweTDeTbuuZPJ1Gc6vq5n7nTfpR03KNSvrTi9qV
2yinWwaW74zQu8OPqdhrt23Wv8el6i+mddjha1VKlFOWrMxNfLjx53JyXb722u5e2PgbHtk6TQ3V
zKm7cXwufTh6WdYnMZ+GRlUV2PUzfhZ3erT0rHniWV7Xg2OEkPw/s4JtdDCm5scmp4pROJ//UVFR
Mv4y0czkrf2ZmfcWvRykekpP0wTSl1SqMSiqVLtfbCkMZBg/XmRg1a0wm+5by+PhmqKlCVKh5XZs
y597Wd7uOn0sUYGrI97E0FKYDQpqRTFYaVJ5tC0k5z+5958I/mJm8bhokbPeseoc0xOVpYY1jEps
ZeCPjLKOtGd3orHe/+aE+lKV3uE8SfOy/MdGaZoav392eTNjrf39GZOMiX886m9Yn6zRC89x+xUi
fA4yPtlSKqSdx2N/XcTI4poJXxh5wb7nLxXLnz0Mig6c26Q2WdJ7mMmzCM5q8+/1jk5GUikapUPr
2Q/oL9jRQlImkfO3rRPXHl52Fod0kPv6oqR5xJ4M6/gNuNVx6ZnRgz+bU6I55lBvJj3eiBISMAaa
o5OzDyJoxzPQ6GaNz4QYPf78iNTsNv7WG5GaSWBLk5EH6WTOoWpFm4dtiOzpk0uNJjnKhhMS0G5m
Zi6j1DA1rjBE99o+8YrM4tROaiSybfE19T5Vz4U3fjjDuRMxzWYMyiqDqT9vkvOo0FjTr/XTIynj
NN+y0T7uGaPXmTlw9h+VQ/pJofpUTHuRnHOtIx16pMvLjmet63pHMm45mO5GkmajvyZRUtszHbjN
hM0Tlp875z/ZlLq1yu65aXKWta1opUvRLQofJ1zlUDDYkw6u8wXpPPofg4nBSXMtefK6NHR/DM72
HFGfVu5k4dGGycb1GHMkH2MNWeE30eyIPpcHhOkkoz/aMMpEjAISG7B/z6+u6n7j/2zMOEm8nEk6
EIdVh3Hcchwdd7evqAhsDOzV3GCBrG0vn3VHDi2pjOaFVs7765YKleh65VhU4sWJmv42ksosKTb6
I54mH3YL38nLpauA1P9Fo6MxY6jfJvJdH1/bqTRNc3Vzw6U7r9US7hRahg4TquvvSyMKJ9tJlx6O
nFHme/0Nq62neM2m7eLDUL/Y3Lt7V2ZQNyG8cdRIEmQ0xKtPG4vvQ5OUsm1KklUk55S/Kk05cHOn
SXx6pWOqI+ijSjAUm7tRNUj4RL+HW4zxLUKWmazLKLRPrE8J05o59LR/kXckU4UJAuVrCUA=
signature.asc
Description: OpenPGP digital signature
-- bzr-gtk mailing list [email protected] Modify settings or unsubscribe at: https://lists.canonical.com/mailman/listinfo/bzr-gtk
