← Back to team overview

simple-scan-team team mailing list archive

[Merge] lp:~mriya3/simple-scan/copy-to-clipboard-branch into lp:simple-scan

 

Amos Brocco has proposed merging lp:~mriya3/simple-scan/copy-to-clipboard-branch into lp:simple-scan.

Requested reviews:
  Simple Scan Development Team (simple-scan-team)

For more details, see:
https://code.launchpad.net/~mriya3/simple-scan/copy-to-clipboard-branch/+merge/163648

The included patch implements "copy to clipboard",  to directly copy a scanned page (or a portion of it) to the clipboard.
-- 
https://code.launchpad.net/~mriya3/simple-scan/copy-to-clipboard-branch/+merge/163648
Your team Simple Scan Development Team is requested to review the proposed merge of lp:~mriya3/simple-scan/copy-to-clipboard-branch into lp:simple-scan.
=== modified file 'data/simple-scan.ui'
--- data/simple-scan.ui	2012-09-07 02:08:34 +0000
+++ data/simple-scan.ui	2013-05-14 06:43:28 +0000
@@ -121,6 +121,17 @@
                       </object>
                     </child>
                     <child>
+                      <object class="GtkImageMenuItem" id="copy_to_clipboard_menuitem">
+                        <property name="label">gtk-copy</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="copy_to_clipboard_button_clicked_cb"/>
+                      </object>
+                    </child>                    
+                    <child>
                       <object class="GtkImageMenuItem" id="email_menuitem">
                         <property name="label" translatable="yes" comments="Label on email menu item">_Email</property>
                         <property name="visible">True</property>
@@ -427,6 +438,22 @@
                 <property name="homogeneous">True</property>
               </packing>
             </child>
+			<child>
+              <object class="GtkToolButton" id="copy_toolbutton">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="tooltip_text" translatable="yes" comments="Tooltip for save toolbar button">Copy document to clipboard</property>
+                <property name="is_important">True</property>
+                <property name="label" translatable="yes">Copy</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-copy</property>
+                <signal name="clicked" handler="copy_to_clipboard_button_clicked_cb"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>            
             <child>
               <object class="GtkToolButton" id="stop_toolbutton">
                 <property name="visible">True</property>

=== modified file 'src/page.vala'
--- src/page.vala	2013-01-19 02:45:11 +0000
+++ src/page.vala	2013-05-14 06:43:28 +0000
@@ -683,6 +683,14 @@
         /* Encode into base64 */
         return Base64.encode ((uchar[]) contents.to_utf8 ());
     }
+    
+    public void copy_to_clipboard (Gtk.Window window)
+    {        
+        Gdk.Display display = window.get_display ();
+		Gtk.Clipboard clipboard = Gtk.Clipboard.get_for_display (display, Gdk.SELECTION_CLIPBOARD);
+		var image = get_image (true);
+		clipboard.set_image(image);
+	}
 
     public void save (string type, File file) throws Error
     {

=== modified file 'src/ui.vala'
--- src/ui.vala	2013-04-18 08:49:12 +0000
+++ src/ui.vala	2013-05-14 06:43:28 +0000
@@ -31,7 +31,9 @@
     private Gtk.MenuItem crop_rotate_menuitem;
     private Gtk.MenuItem save_menuitem;
     private Gtk.MenuItem save_as_menuitem;
+    private Gtk.MenuItem copy_to_clipboard_menuitem;
     private Gtk.ToolButton save_toolbutton;
+    private Gtk.ToolButton copy_toolbutton;
     private Gtk.MenuItem stop_menuitem;
     private Gtk.ToolButton stop_toolbutton;
 
@@ -533,6 +535,8 @@
         book_uri = null;
         book.set_needs_saving (false);
         save_as_menuitem.set_sensitive (false);
+        copy_to_clipboard_menuitem.set_sensitive (false);
+        copy_toolbutton.set_sensitive (false);
     }
 
     [CCode (cname = "G_MODULE_EXPORT new_button_clicked_cb", instance_pos = -1)]
@@ -1011,6 +1015,14 @@
         save_document (false);
     }
 
+	[CCode (cname = "G_MODULE_EXPORT copy_to_clipboard_button_clicked_cb", instance_pos = -1)]
+    public void copy_to_clipboard_button_clicked_cb (Gtk.Widget widget)
+    {
+		var page = book_view.get_selected ();
+        if (page != null)
+            page.copy_to_clipboard (window);
+    }
+
     [CCode (cname = "G_MODULE_EXPORT save_as_file_button_clicked_cb", instance_pos = -1)]
     public void save_as_file_button_clicked_cb (Gtk.Widget widget)
     {
@@ -1272,6 +1284,8 @@
         save_toolbutton.set_sensitive (book.get_needs_saving ());
         if (book.get_needs_saving ())
             save_as_menuitem.set_sensitive (true);
+            copy_to_clipboard_menuitem.set_sensitive (true);
+			copy_toolbutton.set_sensitive (true);
     }
 
     private void load ()
@@ -1306,7 +1320,9 @@
         crop_rotate_menuitem = (Gtk.MenuItem) builder.get_object ("crop_rotate_menuitem");
         save_menuitem = (Gtk.MenuItem) builder.get_object ("save_menuitem");
         save_as_menuitem = (Gtk.MenuItem) builder.get_object ("save_as_menuitem");
+        copy_to_clipboard_menuitem = (Gtk.MenuItem) builder.get_object ("copy_to_clipboard_menuitem");
         save_toolbutton = (Gtk.ToolButton) builder.get_object ("save_toolbutton");
+        copy_toolbutton = (Gtk.ToolButton) builder.get_object ("copy_toolbutton");
         stop_menuitem = (Gtk.MenuItem) builder.get_object ("stop_scan_menuitem");
         stop_toolbutton = (Gtk.ToolButton) builder.get_object ("stop_toolbutton");
 


Follow ups