forked from openlp/openlp
added new dialog from superfly + few own changes
This commit is contained in:
parent
38c9393624
commit
9b84319c24
@ -30,44 +30,71 @@ from openlp.core.lib import translate, build_icon
|
||||
|
||||
class Ui_ShortcutListDialog(object):
|
||||
def setupUi(self, shortcutListDialog):
|
||||
shortcutListDialog.resize(440, 450)
|
||||
shortcutListDialog.setObjectName(u'shortcutListDialog')
|
||||
self.dialogLayout = QtGui.QVBoxLayout(shortcutListDialog)
|
||||
self.dialogLayout.setObjectName(u'dialogLayout')
|
||||
self.descriptionLabel = QtGui.QLabel(shortcutListDialog)
|
||||
self.descriptionLabel.setObjectName(u'descriptionLabel')
|
||||
self.descriptionLabel.setWordWrap(True)
|
||||
self.dialogLayout.addWidget(self.descriptionLabel)
|
||||
shortcutListDialog.setObjectName("shortcutListDialog")
|
||||
shortcutListDialog.resize(500, 438)
|
||||
self.shortcutListLayout = QtGui.QVBoxLayout(shortcutListDialog)
|
||||
self.shortcutListLayout.setSpacing(8)
|
||||
self.shortcutListLayout.setMargin(8)
|
||||
self.shortcutListLayout.setObjectName("shortcutListLayout")
|
||||
self.treeWidget = QtGui.QTreeWidget(shortcutListDialog)
|
||||
self.treeWidget.setAlternatingRowColors(True)
|
||||
self.treeWidget.setObjectName(u'treeWidget')
|
||||
self.treeWidget.setObjectName("treeWidget")
|
||||
self.treeWidget.setColumnCount(3)
|
||||
self.dialogLayout.addWidget(self.treeWidget)
|
||||
self.customLayout = QtGui.QHBoxLayout()
|
||||
self.customLayout.setObjectName(u'customLayout')
|
||||
self.shortcutButtonLabel = QtGui.QLabel(shortcutListDialog)
|
||||
self.shortcutButtonLabel.setObjectName(u'descriptionLabel')
|
||||
self.customLayout.addWidget(self.shortcutButtonLabel)
|
||||
self.shortcutButton = QtGui.QPushButton(shortcutListDialog)
|
||||
self.shortcutButton.setIcon(
|
||||
build_icon(u':/system/system_configure_shortcuts.png'))
|
||||
self.shortcutButton.setCheckable(True)
|
||||
self.shortcutButton.setObjectName(u'shortcutButton')
|
||||
self.shortcutButton.setFixedSize(150, 30)
|
||||
self.customLayout.addWidget(self.shortcutButton)
|
||||
self.clearShortcutButton = QtGui.QToolButton(shortcutListDialog)
|
||||
self.clearShortcutButton.setIcon(
|
||||
build_icon(u':/system/clear_shortcut.png'))
|
||||
self.clearShortcutButton.setAutoRaise(True)
|
||||
self.clearShortcutButton.setObjectName(u'clearShortcutButton')
|
||||
self.customLayout.addWidget(self.clearShortcutButton)
|
||||
self.customLayout.addStretch()
|
||||
self.dialogLayout.addLayout(self.customLayout)
|
||||
self.shortcutListLayout.addWidget(self.treeWidget)
|
||||
self.detailsLayout = QtGui.QGridLayout()
|
||||
self.detailsLayout.setSpacing(8)
|
||||
self.detailsLayout.setContentsMargins(-1, 0, -1, -1)
|
||||
self.detailsLayout.setObjectName("detailsLayout")
|
||||
self.defaultRadioButton = QtGui.QRadioButton(shortcutListDialog)
|
||||
self.defaultRadioButton.setChecked(True)
|
||||
self.defaultRadioButton.setObjectName("defaultRadioButton")
|
||||
self.detailsLayout.addWidget(self.defaultRadioButton, 0, 0, 1, 1)
|
||||
self.customRadioButton = QtGui.QRadioButton(shortcutListDialog)
|
||||
self.customRadioButton.setObjectName("customRadioButton")
|
||||
self.detailsLayout.addWidget(self.customRadioButton, 1, 0, 1, 1)
|
||||
self.primaryLayout = QtGui.QHBoxLayout()
|
||||
self.primaryLayout.setSpacing(8)
|
||||
self.primaryLayout.setObjectName("primaryLayout")
|
||||
self.primaryPushButton = QtGui.QPushButton(shortcutListDialog)
|
||||
self.primaryPushButton.setMinimumSize(QtCore.QSize(84, 0))
|
||||
self.primaryPushButton.setIcon(build_icon(u':/system/system_configure_shortcuts.png'))
|
||||
self.primaryPushButton.setCheckable(True)
|
||||
self.primaryPushButton.setChecked(False)
|
||||
self.primaryPushButton.setObjectName("primaryPushButton")
|
||||
self.primaryLayout.addWidget(self.primaryPushButton)
|
||||
self.clearPrimaryButton = QtGui.QToolButton(shortcutListDialog)
|
||||
self.clearPrimaryButton.setMinimumSize(QtCore.QSize(0, 16))
|
||||
self.clearPrimaryButton.setText("")
|
||||
self.clearPrimaryButton.setIcon(build_icon(u':/system/clear_shortcut.png'))
|
||||
self.clearPrimaryButton.setObjectName("clearPrimaryButton")
|
||||
self.primaryLayout.addWidget(self.clearPrimaryButton)
|
||||
self.detailsLayout.addLayout(self.primaryLayout, 1, 1, 1, 1)
|
||||
self.alternateLayout = QtGui.QHBoxLayout()
|
||||
self.alternateLayout.setSpacing(8)
|
||||
self.alternateLayout.setObjectName("alternateLayout")
|
||||
self.alternatePushButton = QtGui.QPushButton(shortcutListDialog)
|
||||
self.alternatePushButton.setIcon(build_icon(u':/system/system_configure_shortcuts.png'))
|
||||
self.alternatePushButton.setObjectName("alternatePushButton")
|
||||
self.alternateLayout.addWidget(self.alternatePushButton)
|
||||
self.clearAlternateButton = QtGui.QToolButton(shortcutListDialog)
|
||||
self.clearAlternateButton.setText("")
|
||||
self.clearAlternateButton.setIcon(build_icon(u':/system/clear_shortcut.png'))
|
||||
self.clearAlternateButton.setObjectName("clearAlternateButton")
|
||||
self.alternateLayout.addWidget(self.clearAlternateButton)
|
||||
self.detailsLayout.addLayout(self.alternateLayout, 1, 2, 1, 1)
|
||||
self.primaryLabel = QtGui.QLabel(shortcutListDialog)
|
||||
self.primaryLabel.setObjectName("primaryLabel")
|
||||
self.detailsLayout.addWidget(self.primaryLabel, 0, 1, 1, 1)
|
||||
self.alternateLabel = QtGui.QLabel(shortcutListDialog)
|
||||
self.alternateLabel.setObjectName("alternateLabel")
|
||||
self.detailsLayout.addWidget(self.alternateLabel, 0, 2, 1, 1)
|
||||
self.shortcutListLayout.addLayout(self.detailsLayout)
|
||||
self.buttonBox = QtGui.QDialogButtonBox(shortcutListDialog)
|
||||
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
|
||||
QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.RestoreDefaults)
|
||||
self.buttonBox.setObjectName(u'buttonBox')
|
||||
self.dialogLayout.addWidget(self.buttonBox)
|
||||
QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Reset)
|
||||
self.buttonBox.setObjectName("buttonBox")
|
||||
self.shortcutListLayout.addWidget(self.buttonBox)
|
||||
self.retranslateUi(shortcutListDialog)
|
||||
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'),
|
||||
shortcutListDialog.accept)
|
||||
@ -78,15 +105,17 @@ class Ui_ShortcutListDialog(object):
|
||||
def retranslateUi(self, shortcutListDialog):
|
||||
shortcutListDialog.setWindowTitle(
|
||||
translate('OpenLP.ShortcutListDialog', 'Customize Shortcuts'))
|
||||
self.descriptionLabel.setText(translate('OpenLP.ShortcutListDialog',
|
||||
'Select an action and click the button below to start capturing '
|
||||
'a new shortcut.'))
|
||||
#self.descriptionLabel.setText(translate('OpenLP.ShortcutListDialog',
|
||||
#'Select an action and click the button below to start capturing '
|
||||
#'a new shortcut.'))
|
||||
self.treeWidget.setHeaderLabels([
|
||||
translate('OpenLP.ShortcutListDialog', 'Action'),
|
||||
translate('OpenLP.ShortcutListDialog', 'Shortcut'),
|
||||
translate('OpenLP.ShortcutListDialog', 'Alternate')])
|
||||
self.shortcutButtonLabel.setText(
|
||||
self.primaryPushButton.setText(
|
||||
translate('OpenLP.ShortcutListDialog', 'Capture shortcut:'))
|
||||
self.clearShortcutButton.setToolTip(
|
||||
translate('OpenLP.ShortcutListDialog',
|
||||
'Restore the default shortcut(s) of this action.'))
|
||||
self.alternatePushButton.setText(
|
||||
translate('OpenLP.ShortcutListDialog', 'Capture shortcut:'))
|
||||
#self.clearShortcutButton.setToolTip(
|
||||
#translate('OpenLP.ShortcutListDialog',
|
||||
#'Restore the default shortcut(s) of this action.'))
|
||||
|
@ -47,24 +47,28 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
self.setupUi(self)
|
||||
self.column = -1
|
||||
self.changedActions = {}
|
||||
self.shortcutButton.setText(u'')
|
||||
self.shortcutButton.setEnabled(False)
|
||||
QtCore.QObject.connect(self.shortcutButton,
|
||||
QtCore.SIGNAL(u'toggled(bool)'), self.onShortcutButtonClicked)
|
||||
self.primaryPushButton.setText(u'')
|
||||
self.alternatePushButton.setText(u'')
|
||||
self.primaryPushButton.setEnabled(False)
|
||||
self.alternatePushButton.setEnabled(False)
|
||||
QtCore.QObject.connect(self.primaryPushButton,
|
||||
QtCore.SIGNAL(u'toggled(bool)'), self.onPrimaryPushButtonClicked)
|
||||
QtCore.QObject.connect(self.treeWidget,
|
||||
QtCore.SIGNAL(u'itemPressed(QTreeWidgetItem*, int)'),
|
||||
self.onItemPressed)
|
||||
QtCore.QObject.connect(self.treeWidget,
|
||||
QtCore.SIGNAL(u'itemDoubleClicked(QTreeWidgetItem*, int)'),
|
||||
self.onItemDoubleClicked)
|
||||
QtCore.QObject.connect(self.clearShortcutButton,
|
||||
QtCore.SIGNAL(u'clicked(bool)'), self.onClearShortcutButtonClicked)
|
||||
QtCore.QObject.connect(self.clearPrimaryButton,
|
||||
QtCore.SIGNAL(u'clicked(bool)'), self.onClearPrimaryButtonClicked)
|
||||
# QtCore.QObject.connect(self.clearShortcutButton,
|
||||
# QtCore.SIGNAL(u'clicked(bool)'), self.onClearPrimaryButtonClicked)
|
||||
QtCore.QObject.connect(self.buttonBox,
|
||||
QtCore.SIGNAL(u'clicked(QAbstractButton*)'),
|
||||
self.onRestoreDefaultsClicked)
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
if self.shortcutButton.isChecked():
|
||||
if self.primaryPushButton.isChecked():
|
||||
event.ignore()
|
||||
elif event.key() == QtCore.Qt.Key_Escape:
|
||||
event.accept()
|
||||
@ -72,7 +76,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
|
||||
def keyReleaseEvent(self, event):
|
||||
Qt = QtCore.Qt
|
||||
if not self.shortcutButton.isChecked():
|
||||
if not self.primaryPushButton.isChecked():
|
||||
return
|
||||
key = event.key()
|
||||
if key == Qt.Key_Shift or key == Qt.Key_Control or \
|
||||
@ -117,15 +121,15 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
QtGui.QMessageBox.Ok
|
||||
)
|
||||
else:
|
||||
self.shortcutButton.setText(key_sequence.toString())
|
||||
self.shortcutButton.setChecked(False)
|
||||
self.primaryPushButton.setText(key_sequence.toString())
|
||||
self.primaryPushButton.setChecked(False)
|
||||
|
||||
def exec_(self):
|
||||
self.changedActions = {}
|
||||
self.reloadShortcutList()
|
||||
self.shortcutButton.setChecked(False)
|
||||
self.shortcutButton.setEnabled(False)
|
||||
self.shortcutButton.setText(u'')
|
||||
self.primaryPushButton.setChecked(False)
|
||||
self.primaryPushButton.setEnabled(False)
|
||||
self.primaryPushButton.setText(u'')
|
||||
return QtGui.QDialog.exec_(self)
|
||||
|
||||
def reloadShortcutList(self):
|
||||
@ -172,7 +176,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
item.setText(1, shortcuts[0].toString())
|
||||
item.setText(2, shortcuts[1].toString())
|
||||
|
||||
def onShortcutButtonClicked(self, toggled):
|
||||
def onPrimaryPushButtonClicked(self, toggled):
|
||||
"""
|
||||
Save the new shortcut to the action if the button is unchanged.
|
||||
"""
|
||||
@ -188,14 +192,16 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
new_shortcuts = []
|
||||
# We are changing the primary shortcut.
|
||||
if self.column in [0, 1]:
|
||||
new_shortcuts.append(QtGui.QKeySequence(self.shortcutButton.text()))
|
||||
new_shortcuts.append(
|
||||
QtGui.QKeySequence(self.primaryPushButton.text()))
|
||||
if len(shortcuts) == 2:
|
||||
new_shortcuts.append(shortcuts[1])
|
||||
# We are changing the secondary shortcut.
|
||||
elif self.column == 2:
|
||||
if len(shortcuts) != 0:
|
||||
new_shortcuts.append(shortcuts[0])
|
||||
new_shortcuts.append(QtGui.QKeySequence(self.shortcutButton.text()))
|
||||
new_shortcuts.append(
|
||||
QtGui.QKeySequence(self.primaryPushButton.text()))
|
||||
else:
|
||||
return
|
||||
self.changedActions[action] = new_shortcuts
|
||||
@ -203,14 +209,14 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
|
||||
def onItemDoubleClicked(self, item, column):
|
||||
"""
|
||||
A item has been double clicked. ``The shortcutButton`` will be checked
|
||||
and the item's shortcut will be displayed.
|
||||
A item has been double clicked. ``The primaryPushButton`` will be
|
||||
checked and the item's shortcut will be displayed.
|
||||
"""
|
||||
action = item.data(0, QtCore.Qt.UserRole).toPyObject()
|
||||
if action is None:
|
||||
return
|
||||
self.shortcutButton.setChecked(True)
|
||||
self.shortcutButton.setFocus(QtCore.Qt.OtherFocusReason)
|
||||
self.primaryPushButton.setChecked(True)
|
||||
self.primaryPushButton.setFocus(QtCore.Qt.OtherFocusReason)
|
||||
self.onItemPressed(item, column)
|
||||
|
||||
def onItemPressed(self, item, column):
|
||||
@ -222,23 +228,23 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
action = item.data(0, QtCore.Qt.UserRole).toPyObject()
|
||||
text = u''
|
||||
if action is None:
|
||||
self.shortcutButton.setChecked(False)
|
||||
self.shortcutButton.setEnabled(False)
|
||||
self.primaryPushButton.setChecked(False)
|
||||
self.primaryPushButton.setEnabled(False)
|
||||
else:
|
||||
self.shortcutButton.setEnabled(True)
|
||||
self.primaryPushButton.setEnabled(True)
|
||||
shortcuts = self._actionShortcuts(action)
|
||||
if column != 2 and len(shortcuts) != 0:
|
||||
text = shortcuts[0].toString()
|
||||
elif len(shortcuts) == 2:
|
||||
text = shortcuts[1].toString()
|
||||
self.shortcutButton.setText(text)
|
||||
self.primaryPushButton.setText(text)
|
||||
|
||||
def onClearShortcutButtonClicked(self, toggled):
|
||||
def onClearPrimaryButtonClicked(self, toggled):
|
||||
"""
|
||||
Restore the defaults of this
|
||||
"""
|
||||
item = self.treeWidget.currentItem()
|
||||
self.shortcutButton.setChecked(False)
|
||||
self.primaryPushButton.setChecked(False)
|
||||
if item is None:
|
||||
return
|
||||
action = item.data(0, QtCore.Qt.UserRole).toPyObject()
|
||||
@ -261,8 +267,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
||||
QtGui.QMessageBox.Yes |
|
||||
QtGui.QMessageBox.No)) == QtGui.QMessageBox.No:
|
||||
return
|
||||
self.shortcutButton.setChecked(False)
|
||||
self.shortcutButton.setText(u'')
|
||||
self.primaryPushButton.setChecked(False)
|
||||
self.primaryPushButton.setText(u'')
|
||||
for category in ActionList.categories:
|
||||
for action in category.actions:
|
||||
self.changedActions[action] = action.defaultShortcuts
|
||||
|
@ -41,35 +41,35 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="shortcutLayout">
|
||||
<layout class="QGridLayout" name="detailsLayout">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QRadioButton" name="defaultRadioButton">
|
||||
<property name="text">
|
||||
<string>Default: None</string>
|
||||
<string>Default:</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="customShortcutLayout">
|
||||
<item row="1" column="0">
|
||||
<widget class="QRadioButton" name="customRadioButton">
|
||||
<property name="text">
|
||||
<string>Custom:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="shortcutLayout">
|
||||
<property name="spacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="customRadioButton">
|
||||
<property name="text">
|
||||
<string>Custom:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="shortcutPushButton">
|
||||
<property name="minimumSize">
|
||||
@ -83,7 +83,7 @@
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images/openlp-2.qrc">
|
||||
<normaloff>:/system/system_settings.png</normaloff>:/system/system_settings.png</iconset>
|
||||
<normaloff>:/system/system_configure_shortcuts.png</normaloff>:/system/system_configure_shortcuts.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
@ -110,21 +110,51 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<layout class="QHBoxLayout" name="alternateLayout">
|
||||
<property name="spacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="customShortcutSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<widget class="QPushButton" name="alternatePushButton">
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
<property name="icon">
|
||||
<iconset resource="../images/openlp-2.qrc">
|
||||
<normaloff>:/system/system_configure_shortcuts.png</normaloff>:/system/system_configure_shortcuts.png</iconset>
|
||||
</property>
|
||||
</spacer>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="clearAlternateButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images/openlp-2.qrc">
|
||||
<normaloff>:/system/clear_shortcut.png</normaloff>:/system/clear_shortcut.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="shortcutLabel">
|
||||
<property name="text">
|
||||
<string>Ctrl+V</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="alternateLabel">
|
||||
<property name="text">
|
||||
<string>Shift+Ins</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
Loading…
Reference in New Issue
Block a user