Fix #6505 (Flesh out window settings and keyboard shortcuts.)

This commit is contained in:
Kovid Goyal 2010-08-15 14:56:17 -06:00
parent 233baa63c6
commit 388d8e34dc
4 changed files with 27 additions and 6 deletions

View File

@ -196,6 +196,7 @@ class CoverFlowMixin(object):
def show_cover_browser(self):
d = CBDialog(self, self.cover_flow)
d.addAction(self.cb_splitter.action_toggle)
self.cover_flow.setVisible(True)
self.cover_flow.setFocus(Qt.OtherFocusReason)
d.show()

View File

@ -14,7 +14,8 @@ from Queue import Empty, Queue
from PyQt4.Qt import QAbstractTableModel, QVariant, QModelIndex, Qt, \
QTimer, pyqtSignal, QIcon, QDialog, QAbstractItemDelegate, QApplication, \
QSize, QStyleOptionProgressBarV2, QString, QStyle, QToolTip, QFrame, \
QHBoxLayout, QVBoxLayout, QSizePolicy, QLabel, QCoreApplication
QHBoxLayout, QVBoxLayout, QSizePolicy, QLabel, QCoreApplication, QAction, \
QByteArray
from calibre.utils.ipc.server import Server
from calibre.utils.ipc.job import ParallelJob
@ -281,6 +282,7 @@ class JobsButton(QFrame):
self.pi = ProgressIndicator(self, size)
self._jobs = QLabel('<b>'+_('Jobs:')+' 0')
self._jobs.mouseReleaseEvent = self.mouseReleaseEvent
self.shortcut = _('Shift+Alt+J')
if horizontal:
self.setLayout(QHBoxLayout())
@ -297,15 +299,24 @@ class JobsButton(QFrame):
self.layout().setMargin(0)
self._jobs.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
self.setCursor(Qt.PointingHandCursor)
self.setToolTip(_('Click to see list of active jobs.'))
b = _('Click to see list of jobs')
self.setToolTip(b + u' (%s)'%self.shortcut)
self.action_toggle = QAction(b, parent)
parent.addAction(self.action_toggle)
self.action_toggle.setShortcut(self.shortcut)
self.action_toggle.triggered.connect(self.toggle)
def initialize(self, jobs_dialog, job_manager):
self.jobs_dialog = jobs_dialog
job_manager.job_added.connect(self.job_added)
job_manager.job_done.connect(self.job_done)
self.jobs_dialog.addAction(self.action_toggle)
def mouseReleaseEvent(self, event):
self.toggle()
def toggle(self, *args):
if self.jobs_dialog.isVisible():
self.jobs_dialog.hide()
else:
@ -372,6 +383,10 @@ class JobsDialog(QDialog, Ui_JobsDialog):
except:
pass
geom = gprefs.get('jobs_dialog_geometry', bytearray(''))
self.restoreGeometry(QByteArray(geom))
def show_job_details(self, index):
row = index.row()
job = self.jobs_view.model().row_to_job(row)
@ -397,6 +412,8 @@ class JobsDialog(QDialog, Ui_JobsDialog):
try:
state = bytearray(self.jobs_view.horizontalHeader().saveState())
gprefs['jobs view column layout'] = state
geom = bytearray(self.saveGeometry())
gprefs['jobs_dialog_geometry'] = geom
except:
pass
e.accept()

View File

@ -132,7 +132,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, # {{{
# Jobs Button {{{
self.job_manager = JobManager()
self.jobs_dialog = JobsDialog(self, self.job_manager)
self.jobs_button = JobsButton(horizontal=True)
self.jobs_button = JobsButton(horizontal=True, parent=self)
self.jobs_button.initialize(self.jobs_dialog, self.job_manager)
# }}}

View File

@ -871,14 +871,14 @@ class LayoutButton(QToolButton):
def set_state_to_show(self, *args):
self.setChecked(False)
label =_('Show')
self.setText(label + ' ' + self.label + ' ' + self.shortcut)
self.setText(label + ' ' + self.label + u' (%s)'%self.shortcut)
self.setToolTip(self.text())
self.setStatusTip(self.text())
def set_state_to_hide(self, *args):
self.setChecked(True)
label = _('Hide')
self.setText(label + ' ' + self.label+ ' ' + self.shortcut)
self.setText(label + ' ' + self.label+ u' (%s)'%self.shortcut)
self.setToolTip(self.text())
self.setStatusTip(self.text())
@ -941,7 +941,10 @@ class Splitter(QSplitter):
@property
def is_side_index_hidden(self):
sizes = list(self.sizes())
return sizes[self.side_index] == 0
try:
return sizes[self.side_index] == 0
except IndexError:
return True
@property
def save_name(self):