← Back to team overview

usb-creator-hackers team mailing list archive

[Merge] lp:~yuningdodo/usb-creator/usb-creator.lp978691-select-readded-source into lp:usb-creator

 

Yu Ning has proposed merging lp:~yuningdodo/usb-creator/usb-creator.lp978691-select-readded-source into lp:usb-creator.

Requested reviews:
  usb-creator hackers (usb-creator-hackers)
Related bugs:
  Bug #978691 in usb-creator (Ubuntu): "usb-creator ignores selected source disk image"
  https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/978691

For more details, see:
https://code.launchpad.net/~yuningdodo/usb-creator/usb-creator.lp978691-select-readded-source/+merge/238286

If a source is re-added we should select it and scroll to it in the list.

This patch works for only gtk and kde frontends, but not winui.
-- 
https://code.launchpad.net/~yuningdodo/usb-creator/usb-creator.lp978691-select-readded-source/+merge/238286
Your team usb-creator hackers is requested to review the proposed merge of lp:~yuningdodo/usb-creator/usb-creator.lp978691-select-readded-source into lp:usb-creator.
=== modified file 'debian/changelog'
--- debian/changelog	2014-09-02 20:13:14 +0000
+++ debian/changelog	2014-10-14 12:01:10 +0000
@@ -1,3 +1,10 @@
+usb-creator (0.2.63) utopic; urgency=medium
+
+  * GTK, KDE: select a source if it's already added. (LP: #978691)
+  * GTK: scroll to the selected source.
+
+ -- Yu Ning <ning.yu@xxxxxxxxxxxxx>  Tue, 14 Oct 2014 19:34:48 +0800
+
 usb-creator (0.2.62) utopic; urgency=medium
 
   * Re-create the udisks client otherwise it will not return the newly

=== modified file 'usbcreator/backends/base/backend.py'
--- usbcreator/backends/base/backend.py	2014-03-31 14:08:49 +0000
+++ usbcreator/backends/base/backend.py	2014-10-14 12:01:10 +0000
@@ -26,6 +26,7 @@
         if filename in self.sources:
             logging.warn('Source already added.')
             # TODO evand 2009-07-27: Scroll to source and select.
+            self.source_selected_cb(filename)
             return
 
         extension = os.path.splitext(filename)[1]
@@ -102,6 +103,9 @@
     def target_removed_cb(self, drive):
         pass
 
+    def source_selected_cb(self, drive):
+        pass
+
     def target_changed_cb(self, udi):
         pass
 

=== modified file 'usbcreator/frontends/gtk/frontend.py'
--- usbcreator/frontends/gtk/frontend.py	2014-07-25 11:40:08 +0000
+++ usbcreator/frontends/gtk/frontend.py	2014-10-14 12:01:10 +0000
@@ -120,6 +120,7 @@
         self.backend.install_progress_pulse_cb = self.progress_pulse
         self.backend.install_progress_pulse_stop_cb = self.progress_pulse_stop
         self.backend.retry_cb = self.retry
+        self.backend.source_selected_cb = self.select_source
         self.backend.target_changed_cb = self.update_target
         self.backend.format_ended_cb = self.format_ended
         self.backend.format_failed_cb = self.format_failed
@@ -432,6 +433,18 @@
         self.source_treeview.connect('drag_drop', drop_cb)
         self.source_treeview.connect('drag-data-received', data_received_cb)
 
+    def select_source(self, source):
+        treeview = self.source_treeview
+        model = treeview.get_model()
+        iterator = model.get_iter_first()
+        while iterator is not None:
+            if model.get_value(iterator, 0) == source:
+                path = model.get_path(iterator)
+                treeview.set_cursor(path, None, False)
+                treeview.scroll_to_cell(path)
+                return
+            iterator = model.iter_next(iterator)
+
     def update_target(self, udi):
         m = self.dest_treeview.get_model()
         iterator = m.get_iter_first()
@@ -814,6 +827,8 @@
     model = treeview.get_model()
     new_iter = model.append(new_row)
     if force_selection or (treeview.get_selection().get_selected()[1] is None):
-        treeview.set_cursor(model.get_path(new_iter), None, False)
+        path = model.get_path(new_iter)
+        treeview.set_cursor(path, None, False)
+        treeview.scroll_to_cell(path)
 
 # vim: set ai et sts=4 tabstop=4 sw=4:

=== modified file 'usbcreator/frontends/kde/frontend.py'
--- usbcreator/frontends/kde/frontend.py	2014-03-13 11:56:48 +0000
+++ usbcreator/frontends/kde/frontend.py	2014-10-14 12:01:10 +0000
@@ -84,6 +84,7 @@
         self.__backend.install_progress_cb = self.progress
         self.__backend.install_progress_message_cb = self.progress_message
         self.__backend.retry_cb = self.retry
+        self.__backend.source_selected_cb = self.select_source
         self.__backend.target_changed_cb = self.update_target
         self.__backend.format_ended_cb = self.format_ended
         self.__backend.format_failed_cb = self.format_failed
@@ -380,6 +381,13 @@
         else:
             return 0
 
+    def select_source(self, source):
+        for i in range(0,self.__mainWindow.ui_source_list.topLevelItemCount()):
+            item = self.__mainWindow.ui_source_list.topLevelItem(i)
+            if item.data(0,Qt.UserRole) == source:
+                self.__mainWindow.ui_source_list.setCurrentItem(item,True)
+                return
+
     def update_target(self, udi):
         for i in range(0,self.__mainWindow.ui_dest_list.topLevelItemCount()):
             item = self.__mainWindow.ui_dest_list.topLevelItem(i)


Follow ups