← Back to team overview

simple-scan-team team mailing list archive

[Merge] lp:~mbarnes.redhat/simple-scan/default-save-format into lp:simple-scan

 

Matthew Barnes has proposed merging lp:~mbarnes.redhat/simple-scan/default-save-format into lp:simple-scan.

Requested reviews:
  Matthew Barnes (mbarnes.redhat)

For more details, see:
https://code.launchpad.net/~mbarnes.redhat/simple-scan/default-save-format/+merge/322293

I frequently use simple-scan to save scanned images as JPEG files.  However, each time I have to  manually change the save format from PDF to JPEG, even though the "document-hint" setting is "photo".

This branch sets the default save format according to the "document-hint" setting: PDF for text scans, JPEG for photo scans.  (This assumes, I think correctly, that JPEG is most likely wanted for photos.)

Also, for convenience, if the user manually selects a different file format in the save dialog, simple-scan will remember that in subsequent save dialogs for the remainder of the session, or until the user changes the "document-hint" setting again.

Note, this branch alters a translated string ("Scanned Document.pdf" -> "Scanned Document").
-- 
Your team Simple Scan Development Team is subscribed to branch lp:simple-scan.
=== modified file 'src/ui.vala'
--- src/ui.vala	2017-03-29 09:40:01 +0000
+++ src/ui.vala	2017-04-10 14:26:17 +0000
@@ -156,6 +156,7 @@
 
     private Gtk.FileChooserDialog? save_dialog;
     private ProgressBarDialog progress_dialog;
+    private string? save_dialog_extension = ".pdf";
 
     private bool have_error;
     private string error_title;
@@ -507,9 +508,12 @@
         if (book_uri != null)
             save_dialog.set_uri (book_uri);
         else {
+            var filename = _("Scanned Document") + save_dialog_extension;
+
             save_dialog.set_current_folder (directory);
             /* Default filename to use when saving document */
-            save_dialog.set_current_name (_("Scanned Document.pdf"));
+            debug ("Setting filename to '%s'", filename);
+            save_dialog.set_current_name (filename);
         }
 
         /* Filter to only show images by default */
@@ -556,18 +560,16 @@
         box.pack_start (label, false, false, 0);
 
         var file_type_combo = new Gtk.ComboBox.with_model (file_type_store);
+        file_type_combo.set_id_column (1);
         file_type_combo.visible = true;
         var renderer = new Gtk.CellRendererText ();
         file_type_combo.pack_start (renderer, true);
         file_type_combo.add_attribute (renderer, "text", 0);
 
-        file_type_combo.set_active (0);
+        file_type_combo.set_active_id (save_dialog_extension);
         file_type_combo.changed.connect (() =>
         {
-            var extension = "";
-            Gtk.TreeIter i;
-            if (file_type_combo.get_active_iter (out i))
-                file_type_store.get (i, 1, out extension, -1);
+            save_dialog_extension = file_type_combo.get_active_id ();
 
             var path = save_dialog.get_filename ();
             var filename = Path.get_basename (path);
@@ -576,7 +578,8 @@
             var extension_index = filename.last_index_of_char ('.');
             if (extension_index >= 0)
                 filename = filename.slice (0, extension_index);
-            filename = filename + extension;
+            filename = filename + save_dialog_extension;
+            debug ("Setting filename to '%s'", filename);
             save_dialog.set_current_name (filename);
         });
         box.pack_start (file_type_combo, false, false, 0);
@@ -588,17 +591,12 @@
             if (response != Gtk.ResponseType.ACCEPT)
                 break;
 
-            var extension = "";
-            Gtk.TreeIter i;
-            if (file_type_combo.get_active_iter (out i))
-                file_type_store.get (i, 1, out extension, -1);
-
             var path = save_dialog.get_filename ();
             var filename = Path.get_basename (path);
 
             var extension_index = filename.last_index_of_char ('.');
             if (extension_index < 0)
-                path += extension;
+                path += save_dialog_extension;
 
             uri = File.new_for_path (path).get_uri ();
 
@@ -780,12 +778,14 @@
             text_button_menuitem.active = true;
             text_button_hb_menuitem.active = true;
             text_menuitem.active = true;
+            save_dialog_extension = ".pdf";
         }
         else if (document_hint == "photo")
         {
             photo_button_menuitem.active = true;
             photo_button_hb_menuitem.active = true;
             photo_menuitem.active = true;
+            save_dialog_extension = ".jpg";
         }
 
         if (save)


Follow ups