diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index d00dd2782c..07b5063e6c 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -689,14 +689,28 @@ class DeviceMixin(object): # {{{ self.device_error_dialog.show() # Device connected {{{ - def device_detected(self, connected, is_folder_device): - ''' - Called when a device is connected to the computer. - ''' + + def set_device_menu_items_state(self, connected, is_folder_device): if connected: self._sync_menu.connect_to_folder_action.setEnabled(False) if is_folder_device: self._sync_menu.disconnect_from_folder_action.setEnabled(True) + self._sync_menu.enable_device_actions(True, + self.device_manager.device.card_prefix(), + self.device_manager.device) + self.eject_action.setEnabled(True) + else: + self._sync_menu.connect_to_folder_action.setEnabled(True) + self._sync_menu.disconnect_from_folder_action.setEnabled(False) + self._sync_menu.enable_device_actions(False) + self.eject_action.setEnabled(False) + + def device_detected(self, connected, is_folder_device): + ''' + Called when a device is connected to the computer. + ''' + self.set_device_menu_items_state(connected, is_folder_device) + if connected: self.device_manager.get_device_information(\ Dispatcher(self.info_read)) self.set_default_thumbnail(\ @@ -705,17 +719,10 @@ class DeviceMixin(object): # {{{ self.device_manager.device.__class__.get_gui_name()+\ _(' detected.'), 3000) self.device_connected = 'device' if not is_folder_device else 'folder' - self._sync_menu.enable_device_actions(True, - self.device_manager.device.card_prefix(), - self.device_manager.device) self.location_view.model().device_connected(self.device_manager.device) - self.eject_action.setEnabled(True) self.refresh_ondevice_info (device_connected = True, reset_only = True) else: - self._sync_menu.connect_to_folder_action.setEnabled(True) - self._sync_menu.disconnect_from_folder_action.setEnabled(False) self.device_connected = None - self._sync_menu.enable_device_actions(False) self.location_view.model().update_devices() self.vanity.setText(self.vanity_template%\ dict(version=self.latest_version, device=' ')) @@ -723,7 +730,6 @@ class DeviceMixin(object): # {{{ if self.current_view() != self.library_view: self.book_details.reset_info() self.location_view.setCurrentIndex(self.location_view.model().index(0)) - self.eject_action.setEnabled(False) self.refresh_ondevice_info (device_connected = False) def info_read(self, job): diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index aa2d94a637..6452890883 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -410,6 +410,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, # {{{ self.tags_view.set_new_model() # in case columns changed self.tags_view.recount() self.create_device_menu() + self.set_device_menu_items_state(bool(self.device_connected), + self.device_connected == 'folder') if not patheq(self.library_path, d.database_location): newloc = d.database_location