← Back to team overview

simple-scan-team team mailing list archive

[Merge] lp:~wmack-y/simple-scan/page-reorder into lp:simple-scan

 

Walter Mack has proposed merging lp:~wmack-y/simple-scan/page-reorder into lp:simple-scan.

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

For more details, see:
https://code.launchpad.net/~wmack-y/simple-scan/page-reorder/+merge/214473

Adding a menu item in page menu.
Item is labeled repage.
Its intent is to allow a stack of two-sided pages to be scanned on a scanner that can only do one side.
The procedure: Take the stack of pages and scan the top side. Take the same stack of pages and add the scans of the bottom sides. Then click on the repage menu choice. Scanned pages are then re-ordered as such:
1front,1back,2front,2back,...
The repage menu item is disabled if
* there are an odd number of scanned pages
* there are less than 4 scanned pages

-- 
https://code.launchpad.net/~wmack-y/simple-scan/page-reorder/+merge/214473
Your team Simple Scan Development Team is requested to review the proposed merge of lp:~wmack-y/simple-scan/page-reorder into lp:simple-scan.
=== modified file 'data/simple-scan.ui'
--- data/simple-scan.ui	2013-12-26 14:58:57 +0000
+++ data/simple-scan.ui	2014-04-07 04:52:10 +0000
@@ -626,6 +626,15 @@
                         <signal name="activate" handler="page_delete_menuitem_activate_cb" swapped="no"/>
                       </object>
                     </child>
+                    <child>
+                      <object class="GtkMenuItem" id="repage_menuitem">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes" comments="Menu item to re-arrange pages">Repage</property>
+                        <property name="use_underline">True</property>
+                        <signal name="activate" handler="repage_menuitem_activate_cb" swapped="no"/>
+                      </object>
+                    </child>
                   </object>
                 </child>
               </object>

=== modified file 'src/book.vala'
--- src/book.vala	2013-11-01 18:02:57 +0000
+++ src/book.vala	2014-04-07 04:52:10 +0000
@@ -87,8 +87,8 @@
     {
         page.pixels_changed.disconnect (page_changed_cb);
         page.crop_changed.disconnect (page_changed_cb);
+        pages.remove (page);
         page_removed (page);
-        pages.remove (page);
         needs_saving = true;
     }
 

=== modified file 'src/ui.vala'
--- src/ui.vala	2014-02-01 08:34:42 +0000
+++ src/ui.vala	2014-04-07 04:52:10 +0000
@@ -43,6 +43,7 @@
     private Gtk.MenuItem page_move_left_menuitem;
     private Gtk.MenuItem page_move_right_menuitem;
     private Gtk.MenuItem page_delete_menuitem;
+    private Gtk.MenuItem repage_menuitem;
     private Gtk.MenuItem crop_rotate_menuitem;
     private Gtk.MenuItem save_menuitem;
     private Gtk.MenuItem save_as_menuitem;
@@ -851,12 +852,18 @@
         {
             page_move_left_menuitem.set_sensitive (false);
             page_move_right_menuitem.set_sensitive (false);
+	    repage_menuitem.set_sensitive ( false );
         }
         else
         {
             var index = book.get_page_index (page);
             page_move_left_menuitem.set_sensitive (index > 0);
             page_move_right_menuitem.set_sensitive (index < book.n_pages - 1);
+	    uint cnt = book.n_pages ;
+	    bool enable_repage = ( 0 == ( cnt & 0x1 )) && 
+				( cnt > 2 )
+					  ;
+	    repage_menuitem.set_sensitive ( enable_repage );
         }
     }
 
@@ -1094,6 +1101,27 @@
         book_view.book.delete_page (book_view.selected_page);
     }
 
+    [CCode (cname = "G_MODULE_EXPORT repage_menuitem_activate_cb", instance_pos = -1)]
+    public void repage_menuitem_activate_cb (Gtk.Widget widget)
+    {
+	List<Page> copy ;
+	copy = new List<Page> ();
+	var ix = 0 ;
+	uint cnt = book .n_pages ;
+	for ( ix = 0 ; ix != cnt ; ix ++ ){
+	    var page = book.get_page ( ix );
+	    copy.append ( page );
+	}
+
+	book .clear ();
+	for ( ix = 0 ; ix != cnt / 2 ; ix ++ ){
+	    book.append_page ( copy.nth_data ( ix ));
+	    book.append_page ( copy.nth_data ( cnt - ix - 1 ));
+	}
+
+        update_page_menu ();
+    }
+
     [CCode (cname = "G_MODULE_EXPORT save_file_button_clicked_cb", instance_pos = -1)]
     public void save_file_button_clicked_cb (Gtk.Widget widget)
     {
@@ -1462,6 +1490,7 @@
         page_move_left_menuitem = (Gtk.MenuItem) builder.get_object ("page_move_left_menuitem");
         page_move_right_menuitem = (Gtk.MenuItem) builder.get_object ("page_move_right_menuitem");
         page_delete_menuitem = (Gtk.MenuItem) builder.get_object ("page_delete_menuitem");
+	repage_menuitem = ( Gtk.MenuItem) builder.get_object ( "repage_menuitem" );
         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");


Follow ups