[Mono-docs-list] Patch for pasting in monodoc

Peter Williams peter@newton.cx
Wed, 28 Jul 2004 00:21:42 -0400


--=-BYlfrw8QERTZxR1TmBT0
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hi,

The attached patch adds a menu item to allow pasting when editing in
Monodoc. Otherwise it's disabled. Ok for me to commit?

Peter

-- 
Peter Williams                          peter@newton.cx

"[Ninjas] are cool; and by cool, I mean totally sweet."
                              -- REAL Ultimate Power

--=-BYlfrw8QERTZxR1TmBT0
Content-Disposition: attachment; filename=pasting.diff
Content-Type: text/x-patch; name=pasting.diff; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Index: browser/ChangeLog
===================================================================
RCS file: /cvs/public/monodoc/browser/ChangeLog,v
retrieving revision 1.133
diff -u -r1.133 ChangeLog
--- browser/ChangeLog	27 Jul 2004 02:49:45 -0000	1.133
+++ browser/ChangeLog	28 Jul 2004 03:15:29 -0000
@@ -1,3 +1,9 @@
+2004-07-28  Peter Williams  <peter@newton.cx>
+
+	* browser.cs: Add support for pasting from the clipboard.
+
+	* browser.glade: Add a Paste menu item.
+
 2004-07-26  Ben Maurer  <bmaurer@ximian.com>
 
 	* mono-ecma.xsl: rendering editing urls is fairly slow, so limit
Index: browser/browser.cs
===================================================================
RCS file: /cvs/public/monodoc/browser/browser.cs,v
retrieving revision 1.106
diff -u -r1.106 browser.cs
--- browser/browser.cs	23 Jun 2004 16:58:49 -0000	1.106
+++ browser/browser.cs	28 Jul 2004 03:15:29 -0000
@@ -106,6 +106,7 @@
 	[Glade.Widget] CheckMenuItem showinheritedmembers;
 	[Glade.Widget] CheckMenuItem comments1;
 	[Glade.Widget] MenuItem postcomment;
+	[Glade.Widget] MenuItem paste1;
 
 	[Glade.Widget] MenuItem bookmarksMenu;
 
@@ -228,6 +229,8 @@
 		text_editor.Buffer.Changed += new EventHandler (EditedTextChanged);
 		text_editor.WrapMode = WrapMode.Word;
 		
+		paste1.Sensitive = false;
+
 		//
 		// Other bits
 		//
@@ -263,10 +266,13 @@
 		if (browser_mode == m)
 			return;
 		
-		if (m == Mode.Viewer)
+		if (m == Mode.Viewer) {
 			html_and_editor_notebook.Page = 0;
-		else
+			paste1.Sensitive = false;
+		} else {
 			html_and_editor_notebook.Page = 1;
+			paste1.Sensitive = true;
+		}
 
 		browser_mode = m;
 	}
@@ -557,6 +563,21 @@
 	void OnCopyActivate (object sender, EventArgs a)
 	{
 		html.Copy ();
+	}
+
+	//
+	// Invoked by Edit/Paste menu entry.
+	//
+	void OnPasteActivate (object sender, EventArgs a)
+	{
+		Clipboard cb = Clipboard.Get (Gdk.Selection.Clipboard);
+		
+		if (!cb.WaitIsTextAvailable ())
+			return;
+
+		string text = cb.WaitForText ();
+
+		text_editor.Buffer.InsertAtCursor (text);
 	}
 
 	class About {
Index: browser/browser.glade
===================================================================
RCS file: /cvs/public/monodoc/browser/browser.glade,v
retrieving revision 1.49
diff -u -r1.49 browser.glade
--- browser/browser.glade	23 Jun 2004 14:00:25 -0000	1.49
+++ browser/browser.glade	28 Jul 2004 03:15:30 -0000
@@ -122,6 +122,28 @@
 		    </widget>
 		  </child>
 
+                  <child>
+                   <widget class="GtkImageMenuItem" id="paste1">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">_Paste</property>
+                     <property name="use_underline">True</property>
+                     <signal name="activate" handler="OnPasteActivate" last_modification_time="Wed, 28 Jul 2004 03:59:03 GMT"/>
+                     <accelerator key="V" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+                     <child internal-child="image">
+                       <widget class="GtkImage" id="image132">
+                         <property name="visible">True</property>
+                         <property name="stock">gtk-paste</property>
+                         <property name="icon_size">1</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                       </widget>
+                     </child>
+                   </widget>
+                 </child>
+
 		  <child>
 		    <widget class="GtkMenuItem" id="select_all1">
 		      <property name="visible">True</property>

--=-BYlfrw8QERTZxR1TmBT0--