[gnome-subtitles] Show line lengths according to the option in the View menu



commit 10e0a0a5fcdaa98e00c4f8a5d7e903e2b9039769
Author: Pedro Castro <pedro gnomesubtitles org>
Date:   Sun Jul 17 17:39:41 2011 +0100

    Show line lengths according to the option in the View menu
    
    Also, check the option directly in Config, not in Menus.

 src/Glade/MainWindow.glade                         |   17 +++++----
 src/GnomeSubtitles/Core/Config.cs                  |   18 ++++++++--
 src/GnomeSubtitles/Core/EventHandlers.cs           |    5 +++
 .../Ui/Edit/SubtitleEditTextViewMargin.cs          |   37 +++++++++++++++++--
 src/GnomeSubtitles/Ui/Menus.cs                     |   27 +++------------
 src/GnomeSubtitles/Ui/View/SubtitleView.cs         |    8 ++++-
 6 files changed, 74 insertions(+), 38 deletions(-)
---
diff --git a/src/Glade/MainWindow.glade b/src/Glade/MainWindow.glade
index 3d20921..bb035ca 100644
--- a/src/Glade/MainWindow.glade
+++ b/src/Glade/MainWindow.glade
@@ -247,8 +247,8 @@
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="OnEditRedo"/>
-                        <accelerator key="Z" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
                         <accelerator key="Y" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <accelerator key="Z" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
                       </widget>
                     </child>
                     <child>
@@ -506,6 +506,7 @@
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">_Line Lengths</property>
                         <property name="use_underline">True</property>
+                        <signal name="toggled" handler="OnViewLineLengthsToggled"/>
                       </widget>
                     </child>
                     <child>
@@ -586,8 +587,8 @@
                         <property name="label" translatable="yes">Find Ne_xt</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="OnSearchFindNext"/>
-                        <accelerator key="g" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <accelerator key="F3" signal="activate"/>
+                        <accelerator key="g" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                       </widget>
                     </child>
                     <child>
@@ -597,8 +598,8 @@
                         <property name="label" translatable="yes">Find Pre_vious</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="OnSearchFindPrevious"/>
-                        <accelerator key="g" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
                         <accelerator key="F3" signal="activate" modifiers="GDK_SHIFT_MASK"/>
+                        <accelerator key="g" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
                       </widget>
                     </child>
                     <child>
@@ -842,8 +843,8 @@
                         <property name="use_underline">True</property>
                         <property name="use_stock">False</property>
                         <signal name="activate" handler="OnVideoPlayPause"/>
-                        <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <accelerator key="F5" signal="activate"/>
+                        <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <child internal-child="image">
                           <widget class="GtkImage" id="videoPlayPauseImage">
                             <property name="visible">True</property>
@@ -870,8 +871,8 @@
                         <property name="use_underline">True</property>
                         <property name="use_stock">False</property>
                         <signal name="activate" handler="OnVideoRewind"/>
-                        <accelerator key="k" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <accelerator key="F6" signal="activate"/>
+                        <accelerator key="k" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <child internal-child="image">
                           <widget class="GtkImage" id="videoRewindImage">
                             <property name="visible">True</property>
@@ -889,8 +890,8 @@
                         <property name="use_underline">True</property>
                         <property name="use_stock">False</property>
                         <signal name="activate" handler="OnVideoForward"/>
-                        <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <accelerator key="F7" signal="activate"/>
+                        <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <child internal-child="image">
                           <widget class="GtkImage" id="videoForwardImage">
                             <property name="visible">True</property>
@@ -930,8 +931,8 @@
                         <property name="label" translatable="yes">Seek _to Selection</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="OnVideoSeekToSelection"/>
-                        <accelerator key="r" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
                         <accelerator key="F4" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
+                        <accelerator key="r" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
                       </widget>
                     </child>
                     <child>
@@ -941,8 +942,8 @@
                         <property name="label" translatable="yes">Select Nearest Subtitle</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="OnVideoSelectNearestSubtitle"/>
-                        <accelerator key="F4" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <accelerator key="r" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <accelerator key="F4" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                       </widget>
                     </child>
                     <child>
diff --git a/src/GnomeSubtitles/Core/Config.cs b/src/GnomeSubtitles/Core/Config.cs
index d7c8be1..54ff8bf 100644
--- a/src/GnomeSubtitles/Core/Config.cs
+++ b/src/GnomeSubtitles/Core/Config.cs
@@ -79,6 +79,8 @@ public class Config {
 	private const string keyPrefsTimingsTimeBetweenSubtitles = keyPrefsTimings + "time_between_subs";
 	
 	/* Cached values */
+	private bool isValuePrefsViewLineLengthsCached = false;
+	private bool valuePrefsViewLineLengths = false;
 	private bool isValuePrefsVideoApplyReactionDelayCached = false;
 	private bool valuePrefsVideoApplyReactionDelay = false;
 	private int valuePrefsVideoReactionDelay = -1;
@@ -181,10 +183,20 @@ public class Config {
 	}
 	
 	public bool PrefsViewLineLengths {
-		get { return GetBool(keyPrefsViewLineLengths, true); }
-		set { Set(keyPrefsViewLineLengths, value); }
+		get {
+			if (!isValuePrefsViewLineLengthsCached) {
+				this.valuePrefsViewLineLengths = GetBool(keyPrefsViewLineLengths, true);
+				this.isValuePrefsViewLineLengthsCached = true;
+			}
+			return valuePrefsViewLineLengths;
+		}
+		set {
+			Set(keyPrefsViewLineLengths, value);
+			this.valuePrefsViewLineLengths = value;
+			this.isValuePrefsViewLineLengthsCached = true;
+		}
 	}
-	
+
 	public int PrefsWindowHeight {
 		get { return GetInt(keyPrefsWindowHeight, 600, 200, true, 0, false); }
 		set { Set(keyPrefsWindowHeight, value); }
diff --git a/src/GnomeSubtitles/Core/EventHandlers.cs b/src/GnomeSubtitles/Core/EventHandlers.cs
index 9ec7ad3..014fc54 100644
--- a/src/GnomeSubtitles/Core/EventHandlers.cs
+++ b/src/GnomeSubtitles/Core/EventHandlers.cs
@@ -184,6 +184,11 @@ public class EventHandlers {
 		if ((o as RadioMenuItem).Active)
 			Base.TimingMode = TimingMode.Frames;
 	}
+			
+	public void OnViewLineLengthsToggled (object o, EventArgs args) {
+		CheckMenuItem menuItem = o as CheckMenuItem;
+		Base.Config.PrefsViewLineLengths = menuItem.Active;
+	}
 	
 	public void OnViewVideo (object o, EventArgs args) {
 		if ((o as CheckMenuItem).Active)
diff --git a/src/GnomeSubtitles/Ui/Edit/SubtitleEditTextViewMargin.cs b/src/GnomeSubtitles/Ui/Edit/SubtitleEditTextViewMargin.cs
index 3326893..af067a8 100644
--- a/src/GnomeSubtitles/Ui/Edit/SubtitleEditTextViewMargin.cs
+++ b/src/GnomeSubtitles/Ui/Edit/SubtitleEditTextViewMargin.cs
@@ -150,6 +150,26 @@ public class SubtitleEditTextViewMargin {
     private void Refresh () {
     	textView.QueueDraw();
     }
+    
+    private void HideMarginWindow () {
+    	this.textView.SetBorderWindowSize(TextWindowType.Right, 0);
+    }
+    
+    private void Enable () {
+    	textView.ExposeEvent += OnExposeEvent;
+		textView.Buffer.Changed += OnBufferChanged; //To calculate margin digit count (based on the largest line char count)
+		textView.StateChanged += OnStateChanged;
+		
+		Refresh();
+    }
+    
+    private void Disable () {
+    	textView.ExposeEvent -= OnExposeEvent;
+		textView.Buffer.Changed -= OnBufferChanged; //To calculate margin digit count (based on the largest line char count)
+		textView.StateChanged -= OnStateChanged;
+		
+		HideMarginWindow();
+    }
    
     	
 	/* Event members */
@@ -168,10 +188,11 @@ public class SubtitleEditTextViewMargin {
 		this.textLayout.GetPixelSize(out this.marginCharWidth, out marginCharHeight);
 
 		/* Events */
-		textView.ExposeEvent += OnExposeEvent;
-		textView.Buffer.Changed += OnBufferChanged; //To calculate margin digit count (based on the largest line char count)
 		textView.StyleSet += OnStyleSet; //To update colors if the style is changed
-		textView.StateChanged += OnStateChanged;
+		(Base.Ui.Menus.GetMenuItem(WidgetNames.ViewLineLengths) as CheckMenuItem).Toggled += OnViewLineLengthsToggled;
+		if (Base.Config.PrefsViewLineLengths) {
+			Enable();
+		}
 	}
 	
 	private void OnExposeEvent (object o, ExposeEventArgs args) {
@@ -192,9 +213,17 @@ public class SubtitleEditTextViewMargin {
 	private void OnStateChanged (object o, StateChangedArgs args) {
 		TextView textView = o as TextView;
 		if (textView.State == StateType.Insensitive) {
-			textView.SetBorderWindowSize(TextWindowType.Right, 0); //Don't show the margin if the text view is insensitive
+			HideMarginWindow();
 		}
 	}
+	
+	private void OnViewLineLengthsToggled (object o, EventArgs args) {
+    	CheckMenuItem menuItem = o as CheckMenuItem;
+    	if (menuItem.Active)
+    		Enable();
+    	else
+    		Disable();
+	}
 
 	
 }
diff --git a/src/GnomeSubtitles/Ui/Menus.cs b/src/GnomeSubtitles/Ui/Menus.cs
index dd69a07..25db2d5 100644
--- a/src/GnomeSubtitles/Ui/Menus.cs
+++ b/src/GnomeSubtitles/Ui/Menus.cs
@@ -31,9 +31,6 @@ public class Menus {
 
 	/* Constant strings */
 	private string videoTagText = Catalog.GetString("Video");
-	
-	/* Stored values */
-	private bool viewLineLengthsEnabled = false;
 
 	public Menus () {
 		SetToolbarHomogeneity(); //TODO needed until homogeneity definition in glade starts working
@@ -58,10 +55,6 @@ public class Menus {
 		}
 	}
 	
-	public bool ViewLineLengthsEnabled {
-		get { return viewLineLengthsEnabled; }
-	}
-	
 	
 	/* Public methods */
 	
@@ -125,6 +118,10 @@ public class Menus {
 			}
 		}
 	}
+	
+	public MenuItem GetMenuItem (string widgetName) {
+		return Base.GetWidget(WidgetNames.ViewLineLengths) as MenuItem;
+	}
 
 	
 	/* Private members */
@@ -165,10 +162,7 @@ public class Menus {
 
 	private void SetBlankActivity () {
 		SetCheckMenuItemActivity(WidgetNames.ToolsAutocheckSpelling, Base.SpellLanguages.Enabled);
-		
-		/* Set View Line Lengths */
-		this.viewLineLengthsEnabled = Base.Config.PrefsViewLineLengths;
-		SetCheckMenuItemActivity(WidgetNames.ViewLineLengths, this.viewLineLengthsEnabled);
+		SetCheckMenuItemActivity(WidgetNames.ViewLineLengths, Base.Config.PrefsViewLineLengths);
 	}
 	
 	private void SetViewVideoActivity (bool activity) {
@@ -523,8 +517,6 @@ public class Menus {
 		Base.CommandManager.UndoToggled += OnCommandManagerUndoToggled;
 		Base.CommandManager.RedoToggled += OnCommandManagerRedoToggled;
 		Base.CommandManager.CommandActivated += OnCommandManagerCommandActivated;
-		
-		(Base.GetWidget(WidgetNames.ViewLineLengths) as CheckMenuItem).Toggled += OnViewLineLengthsToggled;
 	}
 	
 	private void OnBaseDocumentLoaded (Document document) {
@@ -648,15 +640,6 @@ public class Menus {
 				menuItem.Toggled -= handler;
 		}
 	}
-		
-	private void OnViewLineLengthsToggled (object o, EventArgs args) {
-		bool newValue = ((o as CheckMenuItem).Active);
-		if (newValue != viewLineLengthsEnabled) {
-			viewLineLengthsEnabled = newValue;
-			Base.Config.PrefsViewLineLengths = newValue;
-			Base.Ui.View.Refresh();
-		}
-	}
 
 }
 
diff --git a/src/GnomeSubtitles/Ui/View/SubtitleView.cs b/src/GnomeSubtitles/Ui/View/SubtitleView.cs
index 0822879..6d4b296 100644
--- a/src/GnomeSubtitles/Ui/View/SubtitleView.cs
+++ b/src/GnomeSubtitles/Ui/View/SubtitleView.cs
@@ -353,7 +353,7 @@ public class SubtitleView {
 		GetStyleMarkup(subtitleStyle, ref stylePrefix, ref styleSuffix);
 		
 		bool first = true;
-		bool viewLineLengths = Base.Ui.Menus.ViewLineLengthsEnabled;
+		bool viewLineLengths = Base.Config.PrefsViewLineLengths;
 		foreach (string line in subtitleText) {
 			textMarkup += (first ? String.Empty : "\n") + stylePrefix + GLib.Markup.EscapeText(line) + styleSuffix + (viewLineLengths ? " <span size=\"small\"><sup>(" + line.Length + ")</sup></span>" : String.Empty);
 			if (first)
@@ -389,6 +389,8 @@ public class SubtitleView {
 		Base.TranslationLoaded += OnBaseTranslationLoaded;
 		Base.TranslationUnloaded += OnBaseTranslationUnloaded;
 		Base.TimingModeChanged += OnBaseTimingModeChanged;
+		
+		(Base.Ui.Menus.GetMenuItem(WidgetNames.ViewLineLengths) as CheckMenuItem).Toggled += OnViewLineLengthsToggled;
 	}
 	
 	private void OnBaseDocumentLoaded (Document document) {
@@ -443,6 +445,10 @@ public class SubtitleView {
     private void SetEmptyModel () {
     	tree.Model = new ListStore(typeof(Subtitle));
     }
+    
+    private void OnViewLineLengthsToggled (object o, EventArgs args) {
+    	Refresh();
+	}
 		
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]