[Mono-docs-list] store/restore editing settings

John Luke jluke@users.sourceforge.net
Mon, 22 Sep 2003 15:28:07 -0400


This is a multi-part message in MIME format.
--------------050103030002090503070904
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

Here is a quick patch to store and restore the editing settings.  This 
is only a temporary solution for two reasons: it doesn't effect monodoc 
until the next time it is run, and it is specific to having one 
setting.  Let me know if I can commit. Thanks.

--------------050103030002090503070904
Content-Type: text/plain;
 name="editsettings.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="editsettings.diff"

Index: Makefile.am
===================================================================
RCS file: /cvs/public/monodoc/browser/Makefile.am,v
retrieving revision 1.36
diff -u -r1.36 Makefile.am
--- Makefile.am	8 Sep 2003 03:40:37 -0000	1.36
+++ Makefile.am	22 Sep 2003 19:33:30 -0000
@@ -6,7 +6,7 @@
 CSC=mcs
 
 
-monodoc_sources = $(srcdir)/man-provider.cs $(srcdir)/monohb-provider.cs $(srcdir)/xhtml-provider.cs $(srcdir)/ecma-provider.cs $(srcdir)/simple-provider.cs $(srcdir)/html-helper.cs $(srcdir)/provider.cs $(srcdir)/index.cs $(srcdir)/error-provider.cs $(srcdir)/ecmaspec-provider.cs $(srcdir)/editing.cs
+monodoc_sources = $(srcdir)/man-provider.cs $(srcdir)/monohb-provider.cs $(srcdir)/xhtml-provider.cs $(srcdir)/ecma-provider.cs $(srcdir)/simple-provider.cs $(srcdir)/html-helper.cs $(srcdir)/provider.cs $(srcdir)/index.cs $(srcdir)/error-provider.cs $(srcdir)/ecmaspec-provider.cs $(srcdir)/editing.cs $(srcdir)/settings.cs
 
 assembler_sources = $(srcdir)/assembler.cs 
 dump_sources      = $(srcdir)/dump.cs 
Index: browser.cs
===================================================================
RCS file: /cvs/public/monodoc/browser/browser.cs,v
retrieving revision 1.65
diff -u -r1.65 browser.cs
--- browser.cs	14 Sep 2003 19:18:04 -0000	1.65
+++ browser.cs	22 Sep 2003 19:33:30 -0000
@@ -95,6 +95,7 @@
 	[Glade.Widget] Statusbar statusbar;
 	[Glade.Widget] Button back_button, forward_button;
 	[Glade.Widget] Entry index_entry;
+	[Glade.Widget] CheckMenuItem editing1;
 
 	//
 	// Editor
@@ -170,6 +171,10 @@
 
 		help_tree = RootTree.LoadTree ();
 		tree_browser = new TreeBrowser (help_tree, reference_tree, this);
+		
+		// restore the editing setting
+		editing1.Active = Settings.Restore ();
+		editable = Settings.Restore ();
 
 		//
 		// Setup the HTML rendering area
@@ -210,11 +215,6 @@
 	public enum Mode {
 		Viewer, Editor
 	}
-	
-	public bool IsEditable
-	{
-		get { return editable; }
-	}
 
 	public Mode BrowserMode {
 		get {
@@ -397,6 +397,7 @@
 	void OnEditingActivate (object o, EventArgs args)
 	{
 		editable = !editable;
+		Settings.Save (editable);
 	}
 	
 	void OnCollapseActivate (object o, EventArgs args)
Index: ecma-provider.cs
===================================================================
RCS file: /cvs/public/monodoc/browser/ecma-provider.cs,v
retrieving revision 1.69
diff -u -r1.69 ecma-provider.cs
--- ecma-provider.cs	7 Sep 2003 16:36:44 -0000	1.69
+++ ecma-provider.cs	22 Sep 2003 19:33:30 -0000
@@ -1066,7 +1066,7 @@
 		
 		static ExtensionObject ()
 		{
-			if (Environment.GetEnvironmentVariable ("MONODOC_EDITING") != null)
+			if (Settings.Restore ())
 				editing = true;
 		}
 		
Index: settings.cs
===================================================================
RCS file: settings.cs
diff -N settings.cs
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ settings.cs	22 Sep 2003 19:33:30 -0000
@@ -0,0 +1,35 @@
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+
+namespace Monodoc
+{
+	public class Settings
+	{
+		static string xmlfile;
+		
+		static Settings ()
+		{
+			string home = System.Environment.GetEnvironmentVariable ("HOME");
+			xmlfile = Path.Combine (home, ".monodoc/settings.xml");
+		}
+
+		public static void Save (bool val)
+		{
+			XmlSerializer settings = new XmlSerializer (typeof (bool));
+			settings.Serialize (new XmlTextWriter (xmlfile, Encoding.UTF8), val);
+		}
+
+		public static bool Restore ()
+		{
+			if (File.Exists (xmlfile))
+			{
+				XmlSerializer settings = new XmlSerializer (typeof (bool));
+				return (bool) settings.Deserialize (new XmlTextReader (xmlfile));
+			}
+			else { return false; }
+		}	
+	}
+}

--------------050103030002090503070904--