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
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

Attachment: 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

Reply via email to