diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index 5a039e7bc1..f59d228ce6 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -231,7 +231,7 @@ class LibraryViewMixin(object): # {{{ ('connect_to_search_box', (self.search, self.search_done)), ('connect_to_book_display', - (self.status_bar.book_info.show_data,)), + (self.book_details.show_data,)), ]: for view in (self.library_view, self.memory_view, self.card_a_view, self.card_b_view): getattr(view, func)(*args) @@ -360,7 +360,7 @@ class LayoutMixin(object): # {{{ if config['gui_layout'] == 'narrow': from calibre.gui2.status import StatusBar - self.status_bar = StatusBar(self) + self.status_bar = self.book_details = StatusBar(self) self.stack = Stack(self) self.bd_splitter = Splitter('book_details_splitter', _('Book Details'), I('book.svg'), diff --git a/src/calibre/gui2/status.py b/src/calibre/gui2/status.py index fa8a249ae8..7c78d6f3e1 100644 --- a/src/calibre/gui2/status.py +++ b/src/calibre/gui2/status.py @@ -178,16 +178,32 @@ class StatusBarInterface(object): msg = msg.encode('utf-8') self.notifier(msg) + def clear_message(self): + QStatusBar.clearMessage(self) -class StatusBar(QStatusBar, StatusBarInterface): +class BookDetailsInterface(object): + + # These signals must be defined in the class implementing this interface + files_dropped = None + show_book_info = None + + def reset_info(self): + raise NotImplementedError() + + def show_data(self, data): + raise NotImplementedError() + +class StatusBar(QStatusBar, StatusBarInterface, BookDetailsInterface): - resized = pyqtSignal(object) files_dropped = pyqtSignal(object, object) show_book_info = pyqtSignal() + + resized = pyqtSignal(object) + def initialize(self, systray=None): StatusBarInterface.initialize(self, systray=systray) - self.book_info = BookInfoDisplay(self.clearMessage) + self.book_info = BookInfoDisplay(self.clear_message) self.book_info.setAcceptDrops(True) self.scroll_area = QScrollArea() self.scroll_area.setWidget(self.book_info) @@ -207,4 +223,6 @@ class StatusBar(QStatusBar, StatusBarInterface): def reset_info(self): self.book_info.show_data({}) + def show_data(self, data): + self.book_info.show_data(data) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 1d268235a9..5824171213 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -256,8 +256,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, ####################### Status Bar ##################### self.status_bar.initialize(self.system_tray_icon) - self.status_bar.show_book_info.connect(self.show_book_info) - self.status_bar.files_dropped.connect(self.files_dropped_on_book) + self.book_details.show_book_info.connect(self.show_book_info) + self.book_details.files_dropped.connect(self.files_dropped_on_book) ####################### Setup Toolbar ##################### ToolbarMixin.__init__(self) @@ -503,7 +503,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, dict(version=self.latest_version, device=' ')) self.device_info = ' ' if self.current_view() != self.library_view: - self.status_bar.reset_info() + 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) @@ -1802,9 +1802,9 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, self.library_view.set_database(db) self.tags_view.set_database(db, self.tag_match, self.popularity) self.library_view.model().set_book_on_device_func(self.book_on_device) - self.status_bar.clearMessage() + self.status_bar.clear_message() self.search.clear_to_help() - self.status_bar.reset_info() + self.book_details.reset_info() self.library_view.model().count_changed() prefs['library_path'] = self.library_path @@ -1831,7 +1831,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, ''' page = 0 if location == 'library' else 1 if location == 'main' else 2 if location == 'carda' else 3 self.stack.setCurrentIndex(page) - self.status_bar.reset_info() + self.book_details.reset_info() for x in ('tb', 'cb'): splitter = getattr(self, x+'_splitter') splitter.button.setEnabled(location == 'library')