Dmitrijs Ledkovs has proposed merging 
lp:~dmitrij.ledkov/usb-creator/install-button into lp:usb-creator.

Requested reviews:
  usb-creator hackers (usb-creator-hackers)
Related bugs:
  #582531 trunk: install button does not become sensitive, when valid source 
image is selected
  https://bugs.launchpad.net/bugs/582531


The install button has sensitivity set to false in UI xml by default, because 
update_target might not run (no usb device attached).

Pre-populated images from --iso switch or from downloads dir where added to the 
backend's pool of source images, but none of them where set current while the 
UI had first one selected. Fixed by calling changed_source callback after the 
images are populated.

The above two were causing logic breakage in the update_target when it was 
calculating whether install button should be sensitive of not.

Also update_target was only checking if the current_source as seen by backend 
is SOURCE_IMG while SOURCE_ISO is a valid choice as well. Fixed that as well.

When testing all of this I've realised that there is no feedback to the user if 
the image supplied by --iso is indeed valid one. So if the image supplied by a 
switch, it becomes first choice and preselected as current_source, and other 
images are shown as well. If the image cannot be used the label next to the 
other tells that =) test with:

$ touch bla.iso
$ usb-creator-gtk -i bla.iso

Overall this bug in usb-creator-gtk caused me loads of head-keyboard banging 
while trying to test & compare with my infant cli frontend.

Should we scan ~/.cache/testdrive/iso/ for pre-populated images as well? =)
-- 
https://code.launchpad.net/~dmitrij.ledkov/usb-creator/install-button/+merge/26558
Your team usb-creator hackers is requested to review the proposed merge of 
lp:~dmitrij.ledkov/usb-creator/install-button into lp:usb-creator.
=== modified file 'debian/changelog'
--- debian/changelog	2010-05-27 15:13:58 +0000
+++ debian/changelog	2010-06-02 04:44:25 +0000
@@ -42,6 +42,8 @@
 
   * Use XDG_CACHE_DIR for usb-creator.log
   * Use XDG IconTheme spec for window icons (LP: #535061)
+  * Fix install button sensetivity (LP: #582531)
+  * Improve command line supplied --iso handling in gtk frontend
 
   [ Ignace Mouzannar ]
   * Initial Debian release (Closes: #582884, #576359)

=== modified file 'gui/usbcreator-gtk.ui'
--- gui/usbcreator-gtk.ui	2010-05-18 16:00:05 +0000
+++ gui/usbcreator-gtk.ui	2010-06-02 04:44:25 +0000
@@ -389,6 +389,7 @@
                   <object class="GtkButton" id="button_install">
                     <property name="label" translatable="yes">Make Startup Disk</property>
                     <property name="visible">True</property>
+                    <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="can_default">True</property>
                     <property name="has_default">True</property>

=== modified file 'usbcreator/frontends/gtk/frontend.py'
--- usbcreator/frontends/gtk/frontend.py	2010-05-21 04:09:58 +0000
+++ usbcreator/frontends/gtk/frontend.py	2010-06-02 04:44:25 +0000
@@ -151,8 +151,12 @@
 
         # Pre-populate the source view.
         if img is not None:
+            logging.debug('--iso: %s' % str(img))
             self.backend.add_image(img)
-            self.source_vbox.hide()
+            if not self.backend.sources:
+                logging.error('--iso: %s' % str(img))
+                msg = _('Cannot use: ')
+                self.source_status.set_text(msg + img)
 
         download_dir = glib.get_user_special_dir(glib.USER_DIRECTORY_DOWNLOAD)
         if download_dir and os.path.isdir(download_dir):
@@ -161,6 +165,9 @@
                 if fname.endswith('.iso') or fname.endswith('.img'):
                     self.backend.add_image(os.path.join(download_dir, fname))
 
+        # Sets first pre-populated image as current in the backend
+        self.selection_changed_source(self.source_treeview.get_selection())
+
         if not persistent:
             self.persist_disabled.set_active(True)
             self.persist_vbox.hide()
@@ -441,15 +448,11 @@
         # Update install button state.
         status = target['status']
         source = self.backend.get_current_source()
-        if status == CAN_USE:
-            self.button_install.set_sensitive(True)
-        else:
-            self.button_install.set_sensitive(False)
         if not source:
+            self.button_install.set_sensitive(False)
             return
         stype = self.backend.sources[source]['type']
-        if (self.button_install.get_property('sensitive')
-                and stype == SOURCE_IMG):
+        if status == CAN_USE and stype in (SOURCE_IMG, SOURCE_ISO):
             self.button_install.set_sensitive(True)
         else:
             self.button_install.set_sensitive(False)

_______________________________________________
Mailing list: https://launchpad.net/~usb-creator-hackers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~usb-creator-hackers
More help   : https://help.launchpad.net/ListHelp

Reply via email to