mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Refactoring to make the status bar and book details pane logically separate
This commit is contained in:
parent
b94a1252c2
commit
f0d571df33
@ -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'),
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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')
|
||||
|
Loading…
x
Reference in New Issue
Block a user