gnome-scan r660 - in trunk: . lib



Author: bersace
Date: Fri Dec 12 19:50:40 2008
New Revision: 660
URL: http://svn.gnome.org/viewvc/gnome-scan?rev=660&view=rev

Log:
Select scanner when ready.

Modified:
   trunk/ChangeLog
   trunk/lib/gnome-scan-scanner-selector.vala

Modified: trunk/lib/gnome-scan-scanner-selector.vala
==============================================================================
--- trunk/lib/gnome-scan-scanner-selector.vala	(original)
+++ trunk/lib/gnome-scan-scanner-selector.vala	Fri Dec 12 19:50:40 2008
@@ -33,6 +33,7 @@
 	public class ScannerSelector : ScrolledWindow {
 		ListStore	scanners;
 		TreeView	view;
+		TreeSelection selection;
 		SList<Backend> backends;
 		int backends_probing_count;
 
@@ -43,7 +44,6 @@
 		construct {
 			CellRenderer renderer;
 			TreeViewColumn col;
-			TreeSelection selection;
 
 			this.backends_probing_count = 0;
 			this.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
@@ -107,7 +107,7 @@
 				this.backends.append(backend);
 				backend.scanner_added += this.on_scanner_added;
 				backend.probe_done += this.on_probe_done;
-				GLib.Idle.add(this.on_idle_check_probe_done);
+				GLib.Idle.add(this.on_check_probe_done);
 			}
 		}
 
@@ -129,7 +129,7 @@
 			this.backends_probing_count--;
 		}
 
-		private bool on_idle_check_probe_done()
+		private bool on_check_probe_done()
 		{
 			TreeIter iter;
 
@@ -148,7 +148,7 @@
 			return true;
 		}
 
-		private void on_selection_changed(TreeSelection selection)
+		private bool select_scanner_if_usable()
 		{
 			TreeModel model;
 			TreeIter iter;
@@ -159,7 +159,27 @@
 			else
 				scanner = null;
 
-			this.job.scanner = scanner;
+			if (scanner == null) {
+				this.job.scanner = null;
+				return false;
+			}
+
+			if (scanner.status == Status.FAILED) {
+				selection.unselect_all();
+				return false;
+			}
+
+			if ((int)scanner.status >= (int)Status.UNCONFIGURED) {
+				this.job.scanner = scanner;
+				return false;
+			}
+
+			return true;
+		}
+
+		private void on_selection_changed(TreeSelection selection)
+		{
+			GLib.Idle.add(this.select_scanner_if_usable);
 		}
 
 		private void on_scanner_status_changed(Scanner scanner, ParamSpec pspec)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]