Shortcuts preference pane (#3641)
* Shortcuts preference pane * Honor and glory to the hypnoclangifier * clanfigy: exclude deleted files from being checked * keep the olf translation context to be able to reuse old translations * Fix gcc; extract translations * Moved generic buttons after the groupbox * Update current item on "clear/reset all" * Sequenceedit: make buttons larger and translatable, add text * Event filter * Don't filter arrow keys; added placeholder text * group counters
This commit is contained in:
parent
11b2942d09
commit
389f7fdc25
13 changed files with 1606 additions and 3123 deletions
|
@ -162,7 +162,7 @@ if [[ $branch ]]; then
|
|||
for ex in ${exts[@]}; do
|
||||
reg+=(${include[@]/%/.*\\.$ex\$})
|
||||
done
|
||||
names=$(git diff --name-only $base | grep ${reg[@]/#/-e ^})
|
||||
names=$(git diff --diff-filter=d --name-only $base | grep ${reg[@]/#/-e ^})
|
||||
else
|
||||
names=$(find ${include[@]} -type f -false ${exts[@]/#/-o -name *\\.})
|
||||
fi
|
||||
|
|
|
@ -105,7 +105,6 @@ SET(cockatrice_SOURCES
|
|||
src/pictureloader.cpp
|
||||
src/shortcutssettings.cpp
|
||||
src/sequenceEdit/sequenceedit.cpp
|
||||
src/sequenceEdit/shortcutstab.cpp
|
||||
src/lineeditcompleter.cpp
|
||||
src/settings/settingsmanager.cpp
|
||||
src/settings/carddatabasesettings.cpp
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#include "carddatabase.h"
|
||||
#include "main.h"
|
||||
#include "releasechannel.h"
|
||||
#include "sequenceEdit/shortcutstab.h"
|
||||
#include "sequenceEdit/sequenceedit.h"
|
||||
#include "settingscache.h"
|
||||
#include "soundengine.h"
|
||||
#include "spoilerbackgroundupdater.h"
|
||||
|
@ -18,6 +18,7 @@
|
|||
#include <QFileDialog>
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QHeaderView>
|
||||
#include <QInputDialog>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
|
@ -30,8 +31,11 @@
|
|||
#include <QStackedWidget>
|
||||
#include <QToolBar>
|
||||
#include <QTranslator>
|
||||
#include <QTreeWidget>
|
||||
#include <QTreeWidgetItem>
|
||||
|
||||
#define WIKI_CUSTOM_PIC_URL "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Picture-Download-URLs"
|
||||
#define WIKI_CUSTOM_SHORTCUTS "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Keyboard-Shortcuts"
|
||||
|
||||
GeneralSettingsPage::GeneralSettingsPage()
|
||||
{
|
||||
|
@ -961,6 +965,168 @@ void SoundSettingsPage::retranslateUi()
|
|||
masterVolumeLabel.setText(tr("Master volume"));
|
||||
}
|
||||
|
||||
ShortcutSettingsPage::ShortcutSettingsPage()
|
||||
{
|
||||
// table
|
||||
shortcutsTable = new QTreeWidget();
|
||||
shortcutsTable->setColumnCount(2);
|
||||
shortcutsTable->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
shortcutsTable->setUniformRowHeights(true);
|
||||
shortcutsTable->setAlternatingRowColors(true);
|
||||
shortcutsTable->header()->resizeSection(0, shortcutsTable->width() / 3 * 2);
|
||||
|
||||
// edit widget
|
||||
currentActionGroupLabel = new QLabel(this);
|
||||
currentActionGroupName = new QLabel(this);
|
||||
currentActionLabel = new QLabel(this);
|
||||
currentActionName = new QLabel(this);
|
||||
currentShortcutLabel = new QLabel(this);
|
||||
editTextBox = new SequenceEdit("", this);
|
||||
shortcutsTable->installEventFilter(editTextBox);
|
||||
|
||||
// buttons
|
||||
faqLabel = new QLabel(this);
|
||||
faqLabel->setTextInteractionFlags(Qt::LinksAccessibleByMouse);
|
||||
faqLabel->setOpenExternalLinks(true);
|
||||
|
||||
btnResetAll = new QPushButton(this);
|
||||
btnClearAll = new QPushButton(this);
|
||||
|
||||
btnResetAll->setIcon(QPixmap("theme:icons/update"));
|
||||
btnClearAll->setIcon(QPixmap("theme:icons/clearsearch"));
|
||||
|
||||
// layout
|
||||
auto *editLayout = new QGridLayout;
|
||||
editLayout->addWidget(currentActionGroupLabel, 0, 0);
|
||||
editLayout->addWidget(currentActionGroupName, 0, 1);
|
||||
editLayout->addWidget(currentActionLabel, 1, 0);
|
||||
editLayout->addWidget(currentActionName, 1, 1);
|
||||
editLayout->addWidget(currentShortcutLabel, 2, 0);
|
||||
editLayout->addWidget(editTextBox, 2, 1);
|
||||
|
||||
editShortcutGroupBox = new QGroupBox;
|
||||
editShortcutGroupBox->setLayout(editLayout);
|
||||
|
||||
auto *buttonsLayout = new QHBoxLayout;
|
||||
buttonsLayout->addWidget(faqLabel);
|
||||
buttonsLayout->addWidget(btnResetAll);
|
||||
buttonsLayout->addWidget(btnClearAll);
|
||||
|
||||
auto *mainLayout = new QVBoxLayout;
|
||||
mainLayout->addWidget(shortcutsTable);
|
||||
mainLayout->addWidget(editShortcutGroupBox);
|
||||
mainLayout->addLayout(buttonsLayout);
|
||||
|
||||
setLayout(mainLayout);
|
||||
|
||||
connect(btnResetAll, SIGNAL(clicked()), this, SLOT(resetShortcuts()));
|
||||
connect(btnClearAll, SIGNAL(clicked()), this, SLOT(clearShortcuts()));
|
||||
connect(shortcutsTable, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this,
|
||||
SLOT(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
|
||||
connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts()));
|
||||
|
||||
createShortcuts();
|
||||
}
|
||||
|
||||
void ShortcutSettingsPage::currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem * /*previous */)
|
||||
{
|
||||
if (current == nullptr) {
|
||||
currentActionGroupName->setText("");
|
||||
currentActionName->setText("");
|
||||
editTextBox->setShortcutName("");
|
||||
} else {
|
||||
QString key = current->data(2, Qt::DisplayRole).toString();
|
||||
QString group = settingsCache->shortcuts().getShortcut(key).getGroupName();
|
||||
QString action = settingsCache->shortcuts().getShortcut(key).getName();
|
||||
currentActionGroupName->setText(group);
|
||||
currentActionName->setText(action);
|
||||
editTextBox->setShortcutName(key);
|
||||
}
|
||||
}
|
||||
|
||||
void ShortcutSettingsPage::resetShortcuts()
|
||||
{
|
||||
if (QMessageBox::question(this, tr("Restore all default shortcuts"),
|
||||
tr("Do you really want to restore all default shortcuts?")) == QMessageBox::Yes) {
|
||||
settingsCache->shortcuts().resetAllShortcuts();
|
||||
}
|
||||
}
|
||||
|
||||
void ShortcutSettingsPage::createShortcuts()
|
||||
{
|
||||
QHash<QString, QTreeWidgetItem *> parentItems;
|
||||
QTreeWidgetItem *curParent = nullptr;
|
||||
for (const auto &key : settingsCache->shortcuts().getAllShortcutKeys()) {
|
||||
QString name = settingsCache->shortcuts().getShortcut(key).getName();
|
||||
QString group = settingsCache->shortcuts().getShortcut(key).getGroupName();
|
||||
QString shortcut = settingsCache->shortcuts().getShortcutString(key);
|
||||
|
||||
if (parentItems.contains(group)) {
|
||||
curParent = parentItems.value(group);
|
||||
} else {
|
||||
curParent = new QTreeWidgetItem((QTreeWidget *)nullptr, QStringList({group, "", ""}));
|
||||
static QFont font = curParent->font(0);
|
||||
font.setBold(true);
|
||||
curParent->setFont(0, font);
|
||||
parentItems.insert(group, curParent);
|
||||
}
|
||||
|
||||
new QTreeWidgetItem(curParent, QStringList({name, shortcut, key}));
|
||||
}
|
||||
shortcutsTable->clear();
|
||||
shortcutsTable->insertTopLevelItems(0, parentItems.values());
|
||||
shortcutsTable->setCurrentItem(nullptr);
|
||||
shortcutsTable->expandAll();
|
||||
shortcutsTable->sortItems(0, Qt::AscendingOrder);
|
||||
}
|
||||
|
||||
void ShortcutSettingsPage::refreshShortcuts()
|
||||
{
|
||||
QTreeWidgetItem *curParent = nullptr;
|
||||
QTreeWidgetItem *curChild = nullptr;
|
||||
for (int i = 0; i < shortcutsTable->topLevelItemCount(); ++i) {
|
||||
curParent = shortcutsTable->topLevelItem(i);
|
||||
for (int j = 0; j < curParent->childCount(); ++j) {
|
||||
curChild = curParent->child(j);
|
||||
QString key = curChild->data(2, Qt::DisplayRole).toString();
|
||||
QString name = settingsCache->shortcuts().getShortcut(key).getName();
|
||||
QString shortcut = settingsCache->shortcuts().getShortcutString(key);
|
||||
curChild->setText(0, name);
|
||||
curChild->setText(1, shortcut);
|
||||
|
||||
if (j == 0) {
|
||||
// the first child also updates the parent's group name
|
||||
QString group = settingsCache->shortcuts().getShortcut(key).getGroupName();
|
||||
curParent->setText(0, group);
|
||||
}
|
||||
}
|
||||
}
|
||||
shortcutsTable->sortItems(0, Qt::AscendingOrder);
|
||||
currentItemChanged(shortcutsTable->currentItem(), nullptr);
|
||||
}
|
||||
|
||||
void ShortcutSettingsPage::clearShortcuts()
|
||||
{
|
||||
if (QMessageBox::question(this, tr("Clear all default shortcuts"),
|
||||
tr("Do you really want to clear all shortcuts?")) == QMessageBox::Yes) {
|
||||
settingsCache->shortcuts().clearAllShortcuts();
|
||||
}
|
||||
}
|
||||
|
||||
void ShortcutSettingsPage::retranslateUi()
|
||||
{
|
||||
shortcutsTable->setHeaderLabels(QStringList() << tr("Action") << tr("Shortcut"));
|
||||
refreshShortcuts();
|
||||
|
||||
currentActionGroupLabel->setText(tr("Section:"));
|
||||
currentActionLabel->setText(tr("Action:"));
|
||||
currentShortcutLabel->setText(tr("Shortcut:"));
|
||||
editTextBox->retranslateUi();
|
||||
faqLabel->setText(QString("<a href='%1'>%2</a>").arg(WIKI_CUSTOM_SHORTCUTS).arg(tr("How to set custom shortcuts")));
|
||||
btnResetAll->setText("Restore all default shortcuts");
|
||||
btnClearAll->setText("Clear all shortcuts");
|
||||
}
|
||||
|
||||
DlgSettings::DlgSettings(QWidget *parent) : QDialog(parent)
|
||||
{
|
||||
QRect rec = QApplication::desktop()->availableGeometry();
|
||||
|
@ -984,7 +1150,7 @@ DlgSettings::DlgSettings(QWidget *parent) : QDialog(parent)
|
|||
pagesWidget->addWidget(new DeckEditorSettingsPage);
|
||||
pagesWidget->addWidget(new MessagesSettingsPage);
|
||||
pagesWidget->addWidget(new SoundSettingsPage);
|
||||
pagesWidget->addWidget(new ShortcutsTab);
|
||||
pagesWidget->addWidget(new ShortcutSettingsPage);
|
||||
|
||||
createIcons();
|
||||
contentsWidget->setCurrentRow(0);
|
||||
|
|
|
@ -10,21 +10,19 @@
|
|||
#include <QSpinBox>
|
||||
|
||||
class CardDatabase;
|
||||
class QCloseEvent;
|
||||
class QGridLayout;
|
||||
class QHBoxLayout;
|
||||
class QLineEdit;
|
||||
class QListWidget;
|
||||
class QListWidgetItem;
|
||||
class QStackedWidget;
|
||||
class QLineEdit;
|
||||
class QPushButton;
|
||||
class QComboBox;
|
||||
class QGroupBox;
|
||||
class QCheckBox;
|
||||
class QLabel;
|
||||
class QCloseEvent;
|
||||
class QSpinBox;
|
||||
class QRadioButton;
|
||||
class QSpinBox;
|
||||
class QSlider;
|
||||
class QSpinBox;
|
||||
class QStackedWidget;
|
||||
class QTreeWidget;
|
||||
class QTreeWidgetItem;
|
||||
class QVBoxLayout;
|
||||
class SequenceEdit;
|
||||
|
||||
class AbstractSettingsPage : public QWidget
|
||||
{
|
||||
|
@ -228,6 +226,37 @@ private slots:
|
|||
void themeBoxChanged(int index);
|
||||
};
|
||||
|
||||
class ShortcutSettingsPage : public AbstractSettingsPage
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ShortcutSettingsPage();
|
||||
void retranslateUi() override;
|
||||
|
||||
private:
|
||||
QTreeWidget *shortcutsTable;
|
||||
QVBoxLayout *mainLayout;
|
||||
QHBoxLayout *buttonsLayout;
|
||||
QGroupBox *editShortcutGroupBox;
|
||||
QGridLayout *editLayout;
|
||||
QLabel *currentActionGroupLabel;
|
||||
QLabel *currentActionGroupName;
|
||||
QLabel *currentActionLabel;
|
||||
QLabel *currentActionName;
|
||||
QLabel *currentShortcutLabel;
|
||||
SequenceEdit *editTextBox;
|
||||
QLabel *faqLabel;
|
||||
QPushButton *btnResetAll;
|
||||
QPushButton *btnClearAll;
|
||||
|
||||
private slots:
|
||||
void resetShortcuts();
|
||||
void refreshShortcuts();
|
||||
void createShortcuts();
|
||||
void clearShortcuts();
|
||||
void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
||||
};
|
||||
|
||||
class DlgSettings : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -243,8 +272,7 @@ private:
|
|||
QListWidget *contentsWidget;
|
||||
QStackedWidget *pagesWidget;
|
||||
QListWidgetItem *generalButton, *appearanceButton, *userInterfaceButton, *deckEditorButton, *messagesButton,
|
||||
*soundButton;
|
||||
QListWidgetItem *shortcutsButton;
|
||||
*soundButton, *shortcutsButton;
|
||||
void createIcons();
|
||||
void retranslateUi();
|
||||
|
||||
|
|
|
@ -5,24 +5,16 @@
|
|||
#include <QToolTip>
|
||||
#include <utility>
|
||||
|
||||
SequenceEdit::SequenceEdit(const QString &_shortcutName, QWidget *parent) : QWidget(parent), shortcutName(_shortcutName)
|
||||
SequenceEdit::SequenceEdit(const QString &_shortcutName, QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
lineEdit = new QLineEdit(this);
|
||||
clearButton = new QPushButton("", this);
|
||||
defaultButton = new QPushButton("", this);
|
||||
|
||||
lineEdit->setMinimumWidth(70);
|
||||
clearButton->setMaximumWidth(lineEdit->height());
|
||||
defaultButton->setMaximumWidth(lineEdit->height());
|
||||
clearButton->setMaximumHeight(lineEdit->height());
|
||||
defaultButton->setMaximumHeight(lineEdit->height());
|
||||
|
||||
clearButton->setIcon(QPixmap("theme:icons/clearsearch"));
|
||||
defaultButton->setIcon(QPixmap("theme:icons/update"));
|
||||
|
||||
clearButton->setAttribute(Qt::WA_LayoutUsesWidgetRect);
|
||||
defaultButton->setAttribute(Qt::WA_LayoutUsesWidgetRect);
|
||||
|
||||
auto *layout = new QHBoxLayout(this);
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
layout->setSpacing(1);
|
||||
|
@ -34,7 +26,26 @@ SequenceEdit::SequenceEdit(const QString &_shortcutName, QWidget *parent) : QWid
|
|||
connect(defaultButton, SIGNAL(clicked()), this, SLOT(restoreDefault()));
|
||||
lineEdit->installEventFilter(this);
|
||||
|
||||
lineEdit->setText(settingsCache->shortcuts().getShortcutString(shortcutName));
|
||||
setShortcutName(_shortcutName);
|
||||
retranslateUi();
|
||||
}
|
||||
|
||||
void SequenceEdit::setShortcutName(const QString &_shortcutName)
|
||||
{
|
||||
shortcutName = _shortcutName;
|
||||
if (shortcutName.isEmpty()) {
|
||||
clearButton->setEnabled(false);
|
||||
defaultButton->setEnabled(false);
|
||||
lineEdit->setEnabled(false);
|
||||
lineEdit->setText("");
|
||||
lineEdit->setPlaceholderText(tr("Choose an action from the table"));
|
||||
} else {
|
||||
clearButton->setEnabled(true);
|
||||
defaultButton->setEnabled(true);
|
||||
lineEdit->setEnabled(true);
|
||||
lineEdit->setText(settingsCache->shortcuts().getShortcutString(shortcutName));
|
||||
lineEdit->setPlaceholderText(tr("Hit the key/combination of keys you want to set for this action"));
|
||||
}
|
||||
}
|
||||
|
||||
QString SequenceEdit::getSequence()
|
||||
|
@ -73,11 +84,23 @@ void SequenceEdit::clear()
|
|||
lineEdit->setText("");
|
||||
}
|
||||
|
||||
bool SequenceEdit::eventFilter(QObject *, QEvent *event)
|
||||
bool SequenceEdit::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
|
||||
auto *keyEvent = reinterpret_cast<QKeyEvent *>(event);
|
||||
|
||||
// don't filter outside arrow key events
|
||||
if (obj != lineEdit) {
|
||||
switch (keyEvent->key()) {
|
||||
case Qt::Key_Up:
|
||||
case Qt::Key_Down:
|
||||
case Qt::Key_Left:
|
||||
case Qt::Key_Right:
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (event->type() == QEvent::KeyPress && !keyEvent->isAutoRepeat()) {
|
||||
processKey(keyEvent);
|
||||
} else if (event->type() == QEvent::KeyRelease && !keyEvent->isAutoRepeat()) {
|
||||
|
@ -161,3 +184,10 @@ void SequenceEdit::updateSettings()
|
|||
{
|
||||
settingsCache->shortcuts().setShortcuts(shortcutName, lineEdit->text());
|
||||
}
|
||||
|
||||
void SequenceEdit::retranslateUi()
|
||||
{
|
||||
clearButton->setText(tr("Clear"));
|
||||
defaultButton->setText(tr("Restore default"));
|
||||
setShortcutName(shortcutName);
|
||||
}
|
||||
|
|
|
@ -13,8 +13,10 @@ class SequenceEdit : public QWidget
|
|||
public:
|
||||
SequenceEdit(const QString &_shortcutName, QWidget *parent = nullptr);
|
||||
QString getSequence();
|
||||
void setShortcutName(const QString &_shortcutName);
|
||||
void refreshShortcut();
|
||||
void clear();
|
||||
void retranslateUi();
|
||||
|
||||
private slots:
|
||||
void removeLastShortcut();
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
#include "shortcutstab.h"
|
||||
#include "ui_shortcutstab.h"
|
||||
|
||||
#include "../settingscache.h"
|
||||
#include <QMessageBox>
|
||||
|
||||
ShortcutsTab::ShortcutsTab() : ui(new Ui::shortcutsTab)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
connect(ui->btnResetAll, SIGNAL(clicked()), this, SLOT(resetShortcuts()));
|
||||
connect(ui->btnClearAll, SIGNAL(clicked()), this, SLOT(clearShortcuts()));
|
||||
connect(&settingsCache->shortcuts(), SIGNAL(allShortCutsReset()), this, SLOT(refreshEdits()));
|
||||
connect(&settingsCache->shortcuts(), SIGNAL(allShortCutsClear()), this, SLOT(afterClear()));
|
||||
}
|
||||
|
||||
void ShortcutsTab::retranslateUi()
|
||||
{
|
||||
ui->retranslateUi(this);
|
||||
}
|
||||
|
||||
ShortcutsTab::~ShortcutsTab()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ShortcutsTab::resetShortcuts()
|
||||
{
|
||||
if (QMessageBox::question(this, tr("Restore all default shortcuts"),
|
||||
tr("Do you really want to restore all default shortcuts?")) == QMessageBox::Yes) {
|
||||
settingsCache->shortcuts().resetAllShortcuts();
|
||||
}
|
||||
}
|
||||
|
||||
void ShortcutsTab::refreshEdits()
|
||||
{
|
||||
QList<SequenceEdit *> edits = this->findChildren<SequenceEdit *>();
|
||||
for (auto edit : edits) {
|
||||
edit->refreshShortcut();
|
||||
}
|
||||
}
|
||||
|
||||
void ShortcutsTab::clearShortcuts()
|
||||
{
|
||||
if (QMessageBox::question(this, tr("Clear all default shortcuts"),
|
||||
tr("Do you really want to clear all shortcuts?")) == QMessageBox::Yes) {
|
||||
settingsCache->shortcuts().clearAllShortcuts();
|
||||
}
|
||||
}
|
||||
|
||||
void ShortcutsTab::afterClear()
|
||||
{
|
||||
QList<SequenceEdit *> edits = this->findChildren<SequenceEdit *>();
|
||||
for (auto edit : edits) {
|
||||
edit->clear();
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
#ifndef SHORTCUTSTAB_H
|
||||
#define SHORTCUTSTAB_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "../dlg_settings.h"
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class shortcutsTab;
|
||||
}
|
||||
|
||||
class ShortcutsTab : public AbstractSettingsPage
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ShortcutsTab();
|
||||
void retranslateUi();
|
||||
~ShortcutsTab();
|
||||
|
||||
private slots:
|
||||
void resetShortcuts();
|
||||
void refreshEdits();
|
||||
void clearShortcuts();
|
||||
void afterClear();
|
||||
|
||||
private:
|
||||
Ui::shortcutsTab *ui;
|
||||
};
|
||||
|
||||
#endif // SHORTCUTSTAB_H
|
File diff suppressed because it is too large
Load diff
|
@ -4,6 +4,11 @@
|
|||
#include <QStringList>
|
||||
#include <utility>
|
||||
|
||||
ShortcutKey::ShortcutKey(const QString &_name, QList<QKeySequence> _sequence, ShortcutGroup::Groups _group)
|
||||
: QList<QKeySequence>(_sequence), name(_name), group(_group)
|
||||
{
|
||||
}
|
||||
|
||||
ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *parent) : QObject(parent)
|
||||
{
|
||||
shortCuts = defaultShortCuts;
|
||||
|
@ -23,8 +28,8 @@ ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *paren
|
|||
QString stringSequence = shortCutsFile.value(*it).toString();
|
||||
// check whether shortcut is forbidden
|
||||
if (isKeyAllowed(*it, stringSequence)) {
|
||||
QList<QKeySequence> SequenceList = parseSequenceString(stringSequence);
|
||||
shortCuts.insert(*it, SequenceList);
|
||||
auto shortcut = getShortcut(*it);
|
||||
shortcut.setSequence(parseSequenceString(stringSequence));
|
||||
} else {
|
||||
invalidItems.insert(*it, stringSequence);
|
||||
}
|
||||
|
@ -45,21 +50,16 @@ ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *paren
|
|||
}
|
||||
msgBox.setDetailedText(detailedMessage);
|
||||
msgBox.exec();
|
||||
|
||||
// set default shortcut where stored value was invalid
|
||||
for (const QString &key : invalidItems.keys()) {
|
||||
setShortcuts(key, getDefaultShortcutString(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QList<QKeySequence> ShortcutsSettings::getDefaultShortcut(const QString &name) const
|
||||
ShortcutKey ShortcutsSettings::getDefaultShortcut(const QString &name) const
|
||||
{
|
||||
return defaultShortCuts.value(name, QList<QKeySequence>());
|
||||
return defaultShortCuts.value(name, ShortcutKey());
|
||||
}
|
||||
|
||||
QList<QKeySequence> ShortcutsSettings::getShortcut(const QString &name) const
|
||||
ShortcutKey ShortcutsSettings::getShortcut(const QString &name) const
|
||||
{
|
||||
if (shortCuts.contains(name)) {
|
||||
return shortCuts.value(name);
|
||||
|
@ -105,7 +105,7 @@ QList<QKeySequence> ShortcutsSettings::parseSequenceString(const QString &string
|
|||
|
||||
void ShortcutsSettings::setShortcuts(const QString &name, const QList<QKeySequence> &Sequence)
|
||||
{
|
||||
shortCuts[name] = Sequence;
|
||||
shortCuts[name].setSequence(Sequence);
|
||||
|
||||
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
||||
shortCutsFile.beginGroup(custom);
|
||||
|
@ -132,7 +132,6 @@ void ShortcutsSettings::resetAllShortcuts()
|
|||
shortCutsFile.remove("");
|
||||
shortCutsFile.endGroup();
|
||||
emit shortCutChanged();
|
||||
emit allShortCutsReset();
|
||||
}
|
||||
|
||||
void ShortcutsSettings::clearAllShortcuts()
|
||||
|
@ -140,12 +139,11 @@ void ShortcutsSettings::clearAllShortcuts()
|
|||
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
||||
shortCutsFile.beginGroup(custom);
|
||||
for (auto it = shortCuts.begin(); it != shortCuts.end(); ++it) {
|
||||
it.value() = parseSequenceString("");
|
||||
it.value().setSequence(parseSequenceString(""));
|
||||
shortCutsFile.setValue(it.key(), "");
|
||||
}
|
||||
shortCutsFile.endGroup();
|
||||
emit shortCutChanged();
|
||||
emit allShortCutsClear();
|
||||
}
|
||||
|
||||
bool ShortcutsSettings::isKeyAllowed(const QString &name, const QString &Sequences) const
|
||||
|
|
|
@ -1,22 +1,115 @@
|
|||
#ifndef SHORTCUTSSETTINGS_H
|
||||
#define SHORTCUTSSETTINGS_H
|
||||
|
||||
#include <QApplication>
|
||||
#include <QHash>
|
||||
#include <QKeySequence>
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
|
||||
class ShortcutGroup
|
||||
{
|
||||
public:
|
||||
enum Groups
|
||||
{
|
||||
Main_Window,
|
||||
Deck_Editor,
|
||||
Game_Lobby,
|
||||
Card_Counters,
|
||||
Player_Counters,
|
||||
Power_Toughness,
|
||||
Game_Phases,
|
||||
Playing_Area,
|
||||
Move_selected,
|
||||
View,
|
||||
Move_top,
|
||||
Gameplay,
|
||||
Drawing,
|
||||
Chat_room,
|
||||
Game_window,
|
||||
Load_deck
|
||||
};
|
||||
|
||||
static QString getGroupName(ShortcutGroup::Groups group)
|
||||
{
|
||||
switch (group) {
|
||||
case Main_Window:
|
||||
return QApplication::translate("shortcutsTab", "Main Window");
|
||||
case Deck_Editor:
|
||||
return QApplication::translate("shortcutsTab", "Deck Editor");
|
||||
case Game_Lobby:
|
||||
return QApplication::translate("shortcutsTab", "Game Lobby");
|
||||
case Card_Counters:
|
||||
return QApplication::translate("shortcutsTab", "Card counters");
|
||||
case Player_Counters:
|
||||
return QApplication::translate("shortcutsTab", "Player counters");
|
||||
case Power_Toughness:
|
||||
return QApplication::translate("shortcutsTab", "Power and Toughness");
|
||||
case Game_Phases:
|
||||
return QApplication::translate("shortcutsTab", "Game Phases");
|
||||
case Playing_Area:
|
||||
return QApplication::translate("shortcutsTab", "Playing Area");
|
||||
case Move_selected:
|
||||
return QApplication::translate("shortcutsTab", "Move selected card to");
|
||||
case View:
|
||||
return QApplication::translate("shortcutsTab", "View");
|
||||
case Move_top:
|
||||
return QApplication::translate("shortcutsTab", "Move top card to");
|
||||
case Gameplay:
|
||||
return QApplication::translate("shortcutsTab", "Gameplay");
|
||||
case Drawing:
|
||||
return QApplication::translate("shortcutsTab", "Drawing");
|
||||
case Chat_room:
|
||||
return QApplication::translate("shortcutsTab", "Chat room");
|
||||
case Game_window:
|
||||
return QApplication::translate("shortcutsTab", "Game window");
|
||||
case Load_deck:
|
||||
return QApplication::translate("shortcutsTab", "Load deck from clipboard");
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
};
|
||||
|
||||
class ShortcutKey : public QList<QKeySequence>
|
||||
{
|
||||
public:
|
||||
ShortcutKey(const QString &_name = QString(),
|
||||
QList<QKeySequence> _sequence = QList<QKeySequence>(),
|
||||
ShortcutGroup::Groups _group = ShortcutGroup::Main_Window);
|
||||
void setSequence(QList<QKeySequence> _sequence)
|
||||
{
|
||||
QList<QKeySequence>::operator=(_sequence);
|
||||
};
|
||||
const QString getName() const
|
||||
{
|
||||
return QApplication::translate("shortcutsTab", name.toUtf8().data());
|
||||
};
|
||||
const QString getGroupName() const
|
||||
{
|
||||
return ShortcutGroup::getGroupName(group);
|
||||
};
|
||||
|
||||
private:
|
||||
QString name;
|
||||
ShortcutGroup::Groups group;
|
||||
};
|
||||
|
||||
class ShortcutsSettings : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ShortcutsSettings(const QString &settingsFilePath, QObject *parent = nullptr);
|
||||
|
||||
QList<QKeySequence> getDefaultShortcut(const QString &name) const;
|
||||
QList<QKeySequence> getShortcut(const QString &name) const;
|
||||
ShortcutKey getDefaultShortcut(const QString &name) const;
|
||||
ShortcutKey getShortcut(const QString &name) const;
|
||||
QKeySequence getSingleShortcut(const QString &name) const;
|
||||
QString getDefaultShortcutString(const QString &name) const;
|
||||
QString getShortcutString(const QString &name) const;
|
||||
QList<QString> getAllShortcutKeys() const
|
||||
{
|
||||
return shortCuts.keys();
|
||||
};
|
||||
|
||||
void setShortcuts(const QString &name, const QList<QKeySequence> &Sequence);
|
||||
void setShortcuts(const QString &name, const QKeySequence &Sequence);
|
||||
|
@ -30,168 +123,359 @@ public:
|
|||
|
||||
signals:
|
||||
void shortCutChanged();
|
||||
void allShortCutsReset();
|
||||
void allShortCutsClear();
|
||||
|
||||
private:
|
||||
const QChar sep = ';';
|
||||
const QString custom = "Custom";
|
||||
QString settingsFilePath;
|
||||
QHash<QString, QList<QKeySequence>> shortCuts;
|
||||
QHash<QString, ShortcutKey> shortCuts;
|
||||
|
||||
QString stringifySequence(const QList<QKeySequence> &Sequence) const;
|
||||
QList<QKeySequence> parseSequenceString(const QString &stringSequence) const;
|
||||
|
||||
const QHash<QString, QList<QKeySequence>> defaultShortCuts{
|
||||
{"MainWindow/aCheckCardUpdates", parseSequenceString("")},
|
||||
{"MainWindow/aConnect", parseSequenceString("Ctrl+L")},
|
||||
{"MainWindow/aDeckEditor", parseSequenceString("")},
|
||||
{"MainWindow/aDisconnect", parseSequenceString("")},
|
||||
{"MainWindow/aExit", parseSequenceString("")},
|
||||
{"MainWindow/aFullScreen", parseSequenceString("Ctrl+F")},
|
||||
{"MainWindow/aRegister", parseSequenceString("")},
|
||||
{"MainWindow/aSettings", parseSequenceString("")},
|
||||
{"MainWindow/aSinglePlayer", parseSequenceString("")},
|
||||
{"MainWindow/aWatchReplay", parseSequenceString("")},
|
||||
|
||||
{"TabDeckEditor/aAnalyzeDeck", parseSequenceString("")},
|
||||
{"TabDeckEditor/aClearFilterAll", parseSequenceString("")},
|
||||
{"TabDeckEditor/aClearFilterOne", parseSequenceString("")},
|
||||
{"TabDeckEditor/aClose", parseSequenceString("")},
|
||||
{"TabDeckEditor/aDecrement", parseSequenceString("-")},
|
||||
{"TabDeckEditor/aManageSets", parseSequenceString("")},
|
||||
{"TabDeckEditor/aEditTokens", parseSequenceString("")},
|
||||
{"TabDeckEditor/aExportDeckDecklist", parseSequenceString("")},
|
||||
{"TabDeckEditor/aIncrement", parseSequenceString("+")},
|
||||
{"TabDeckEditor/aLoadDeck", parseSequenceString("Ctrl+O")},
|
||||
{"TabDeckEditor/aLoadDeckFromClipboard", parseSequenceString("Ctrl+Shift+V")},
|
||||
{"TabDeckEditor/aNewDeck", parseSequenceString("Ctrl+N")},
|
||||
{"TabDeckEditor/aOpenCustomFolder", parseSequenceString("")},
|
||||
{"TabDeckEditor/aPrintDeck", parseSequenceString("Ctrl+P")},
|
||||
{"TabDeckEditor/aRemoveCard", parseSequenceString("")},
|
||||
{"TabDeckEditor/aResetLayout", parseSequenceString("")},
|
||||
{"TabDeckEditor/aSaveDeck", parseSequenceString("Ctrl+S")},
|
||||
{"TabDeckEditor/aSaveDeckAs", parseSequenceString("")},
|
||||
{"TabDeckEditor/aSaveDeckToClipboard", parseSequenceString("Ctrl+Shift+C")},
|
||||
{"TabDeckEditor/aSaveDeckToClipboardRaw", parseSequenceString("Ctrl+Shift+R")},
|
||||
|
||||
{"DeckViewContainer/loadLocalButton", parseSequenceString("Ctrl+O")},
|
||||
{"DeckViewContainer/loadRemoteButton", parseSequenceString("Ctrl+Alt+O")},
|
||||
|
||||
{"Player/aSet", parseSequenceString("Ctrl+L")},
|
||||
{"Player/aAlwaysRevealTopCard", parseSequenceString("Ctrl+N")},
|
||||
{"Player/aCloseMostRecentZoneView", parseSequenceString("Esc")},
|
||||
{"Player/aDrawCard", parseSequenceString("Ctrl+D")},
|
||||
{"Player/aDrawCards", parseSequenceString("Ctrl+E")},
|
||||
{"Player/aDec", parseSequenceString("F11")},
|
||||
{"Player/aInc", parseSequenceString("F12")},
|
||||
{"Player/aMoveTopCardToGraveyard", parseSequenceString("")},
|
||||
{"Player/aMoveTopCardsToGraveyard", parseSequenceString("Ctrl+Shift+M")},
|
||||
{"Player/aMoveTopCardToExile", parseSequenceString("")},
|
||||
{"Player/aMoveTopCardsToExile", parseSequenceString("")},
|
||||
{"Player/aMoveTopToPlayFaceDown", parseSequenceString("Ctrl+Shift+E")},
|
||||
{"Player/aMulligan", parseSequenceString("Ctrl+M")},
|
||||
{"Player/aPeek", parseSequenceString("")},
|
||||
{"Player/aPlay", parseSequenceString("")},
|
||||
{"Player/aResetLayout", parseSequenceString("")},
|
||||
{"Player/aRollDie", parseSequenceString("Ctrl+I")},
|
||||
{"Player/aShuffle", parseSequenceString("Ctrl+S")},
|
||||
{"Player/aUndoDraw", parseSequenceString("Ctrl+Shift+D")},
|
||||
{"Player/aUntapAll", parseSequenceString("Ctrl+U")},
|
||||
{"Player/aViewGraveyard", parseSequenceString("F4")},
|
||||
{"Player/aViewLibrary", parseSequenceString("F3")},
|
||||
{"Player/aViewRfg", parseSequenceString("")},
|
||||
{"Player/aViewSideboard", parseSequenceString("Ctrl+F3")},
|
||||
{"Player/aViewTopCards", parseSequenceString("Ctrl+W")},
|
||||
|
||||
{"Player/aAttach", parseSequenceString("Ctrl+Alt+A")},
|
||||
{"Player/aClone", parseSequenceString("Ctrl+J")},
|
||||
{"Player/aCreateAnotherToken", parseSequenceString("Ctrl+G")},
|
||||
{"Player/aCreateToken", parseSequenceString("Ctrl+T")},
|
||||
{"Player/aCreateRelatedTokens", parseSequenceString("Ctrl+Shift+T")},
|
||||
{"Player/aDoesntUntap", parseSequenceString("")},
|
||||
{"Player/aDrawArrow", parseSequenceString("")},
|
||||
{"Player/aFlip", parseSequenceString("")},
|
||||
{"Player/aMoveToBottomLibrary", parseSequenceString("")},
|
||||
{"Player/aMoveToExile", parseSequenceString("")},
|
||||
{"Player/aMoveToGraveyard", parseSequenceString("Ctrl+Del")},
|
||||
{"Player/aMoveToHand", parseSequenceString("")},
|
||||
{"Player/aMoveToTopLibrary", parseSequenceString("")},
|
||||
{"Player/aSetAnnotation", parseSequenceString("")},
|
||||
{"Player/aTap", parseSequenceString("")},
|
||||
{"Player/aUnattach", parseSequenceString("")},
|
||||
|
||||
{"Player/aCCGreen", parseSequenceString("")},
|
||||
{"Player/aCCRed", parseSequenceString("")},
|
||||
{"Player/aCCYellow", parseSequenceString("")},
|
||||
{"Player/aRCGreen", parseSequenceString("")},
|
||||
{"Player/aRCRed", parseSequenceString("")},
|
||||
{"Player/aRCYellow", parseSequenceString("")},
|
||||
{"Player/aSCGreen", parseSequenceString("")},
|
||||
{"Player/aSCRed", parseSequenceString("")},
|
||||
{"Player/aSCYellow", parseSequenceString("")},
|
||||
|
||||
{"Player/aDecP", parseSequenceString("Ctrl+-")},
|
||||
{"Player/aDecPT", parseSequenceString("Ctrl+Alt+-")},
|
||||
{"Player/aDecT", parseSequenceString("Alt+-")},
|
||||
{"Player/aIncP", parseSequenceString("Ctrl++")},
|
||||
{"Player/aIncPT", parseSequenceString("Ctrl+Alt++")},
|
||||
{"Player/aIncT", parseSequenceString("Alt++")},
|
||||
{"Player/aSetPT", parseSequenceString("Ctrl+P")},
|
||||
{"Player/aResetPT", parseSequenceString("Ctrl+Alt+0")},
|
||||
{"Player/aFlowP", parseSequenceString("")},
|
||||
{"Player/aFlowT", parseSequenceString("")},
|
||||
|
||||
{"Player/aConcede", parseSequenceString("F2")},
|
||||
{"Player/aLeaveGame", parseSequenceString("Ctrl+Q")},
|
||||
{"Player/aNextPhase", parseSequenceString("Ctrl+Space;Tab")},
|
||||
{"Player/aNextPhaseAction", parseSequenceString("Shift+Tab")},
|
||||
{"Player/aNextTurn", parseSequenceString("Ctrl+Return;Ctrl+Enter")},
|
||||
{"Player/aRemoveLocalArrows", parseSequenceString("Ctrl+R")},
|
||||
{"Player/aRotateViewCCW", parseSequenceString("")},
|
||||
{"Player/aRotateViewCW", parseSequenceString("")},
|
||||
{"Player/phase0", parseSequenceString("F5")},
|
||||
{"Player/phase1", parseSequenceString("")},
|
||||
{"Player/phase10", parseSequenceString("F10")},
|
||||
{"Player/phase2", parseSequenceString("F6")},
|
||||
{"Player/phase3", parseSequenceString("F7")},
|
||||
{"Player/phase4", parseSequenceString("F8")},
|
||||
{"Player/phase5", parseSequenceString("")},
|
||||
{"Player/phase6", parseSequenceString("")},
|
||||
{"Player/phase7", parseSequenceString("")},
|
||||
{"Player/phase8", parseSequenceString("")},
|
||||
{"Player/phase9", parseSequenceString("F9")},
|
||||
|
||||
{"Player/aDecCounter_w", parseSequenceString("")},
|
||||
{"Player/aIncCounter_w", parseSequenceString("")},
|
||||
{"Player/aSetCounter_w", parseSequenceString("")},
|
||||
|
||||
{"Player/aDecCounter_u", parseSequenceString("")},
|
||||
{"Player/aIncCounter_u", parseSequenceString("")},
|
||||
{"Player/aSetCounter_u", parseSequenceString("")},
|
||||
|
||||
{"Player/aDecCounter_b", parseSequenceString("")},
|
||||
{"Player/aIncCounter_b", parseSequenceString("")},
|
||||
{"Player/aSetCounter_b", parseSequenceString("")},
|
||||
|
||||
{"Player/aDecCounter_r", parseSequenceString("")},
|
||||
{"Player/aIncCounter_r", parseSequenceString("")},
|
||||
{"Player/aSetCounter_r", parseSequenceString("")},
|
||||
|
||||
{"Player/aDecCounter_g", parseSequenceString("")},
|
||||
{"Player/aIncCounter_g", parseSequenceString("")},
|
||||
{"Player/aSetCounter_g", parseSequenceString("")},
|
||||
|
||||
{"Player/aDecCounter_x", parseSequenceString("")},
|
||||
{"Player/aIncCounter_x", parseSequenceString("")},
|
||||
{"Player/aSetCounter_x", parseSequenceString("")},
|
||||
|
||||
{"Player/aDecCounter_storm", parseSequenceString("")},
|
||||
{"Player/aIncCounter_storm", parseSequenceString("")},
|
||||
{"Player/aSetCounter_storm", parseSequenceString("")},
|
||||
|
||||
{"tab_room/aClearChat", parseSequenceString("F12")},
|
||||
{"DlgLoadDeckFromClipboard/refreshButton", parseSequenceString("F5")}};
|
||||
typedef ShortcutKey SK;
|
||||
const QHash<QString, ShortcutKey> defaultShortCuts = {
|
||||
{"MainWindow/aCheckCardUpdates", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Check for card updates"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aConnect",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Connect"), parseSequenceString("Ctrl+L"), ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aDeckEditor",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Deck editor"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aDisconnect",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Disconnect"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aExit",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Exit"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aFullScreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Full screen"),
|
||||
parseSequenceString("Ctrl+F"),
|
||||
ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aRegister",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Register"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aSettings",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Settings"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aSinglePlayer",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Local gameplay"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||
{"MainWindow/aWatchReplay",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Watch replay"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||
{"TabDeckEditor/aAnalyzeDeck",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Analyze deck"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aClearFilterAll", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Clear all filters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aClearFilterOne", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Clear selected filter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aClose",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Close"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aDecrement",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove card"), parseSequenceString("-"), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aManageSets",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Manage sets"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aEditTokens",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Edit tokens"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aExportDeckDecklist",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Export deck"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aIncrement",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add card"), parseSequenceString("+"), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aLoadDeck",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load deck"), parseSequenceString("Ctrl+O"), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aLoadDeckFromClipboard", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load deck (clipboard)"),
|
||||
parseSequenceString("Ctrl+Shift+V"),
|
||||
ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aNewDeck",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "New deck"), parseSequenceString("Ctrl+N"), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aOpenCustomFolder", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Open custom pic folder"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aPrintDeck", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Print deck"),
|
||||
parseSequenceString("Ctrl+P"),
|
||||
ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aRemoveCard",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Delete card"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aResetLayout",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Reset layout"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aSaveDeck",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck"), parseSequenceString("Ctrl+S"), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aSaveDeckAs",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck as"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aSaveDeckToClipboard", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck (clipboard; annotated)"),
|
||||
parseSequenceString("Ctrl+Shift+C"),
|
||||
ShortcutGroup::Deck_Editor)},
|
||||
{"TabDeckEditor/aSaveDeckToClipboardRaw", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck (clipboard, raw)"),
|
||||
parseSequenceString("Ctrl+Shift+R"),
|
||||
ShortcutGroup::Deck_Editor)},
|
||||
{"DeckViewContainer/loadLocalButton", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load local deck"),
|
||||
parseSequenceString("Ctrl+O"),
|
||||
ShortcutGroup::Game_Lobby)},
|
||||
{"DeckViewContainer/loadRemoteButton", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load remote deck"),
|
||||
parseSequenceString("Ctrl+Alt+O"),
|
||||
ShortcutGroup::Game_Lobby)},
|
||||
{"Player/aCCGreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add green counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aRCGreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove green counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aSCGreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set green counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aCCYellow", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add yellow counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aRCYellow", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove yellow counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aSCYellow", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set yellow counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aCCRed", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add red counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aRCRed", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove red counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aSCRed", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set red counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Card_Counters)},
|
||||
{"Player/aInc", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add life counter"),
|
||||
parseSequenceString("F12"),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDec", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove life counter"),
|
||||
parseSequenceString("F11"),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSet", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set life counters"),
|
||||
parseSequenceString("Ctrl+L"),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncCounter_w", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add white counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDecCounter_w", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove white counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSetCounter_w", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set white counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncCounter_u", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add blue counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDecCounter_u", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove blue counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSetCounter_u", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set blue counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncCounter_b", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add black counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDecCounter_b", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove black counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSetCounter_b", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set black counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncCounter_r", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add red counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDecCounter_r", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove red counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSetCounter_r", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set red counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncCounter_g", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add green counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDecCounter_g", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove green counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSetCounter_g", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set green counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncCounter_x", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add X counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDecCounter_x", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove X counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSetCounter_x", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set X counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncCounter_storm", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add storm counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aDecCounter_storm", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove storm counter"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aSetCounter_storm", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set storm counters"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Player_Counters)},
|
||||
{"Player/aIncP", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add power (+1/+0)"),
|
||||
parseSequenceString("Ctrl++"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aDecP", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove power (-1/-0)"),
|
||||
parseSequenceString("Ctrl+-"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aFlowP", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Move to power (+1/-1)"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aIncT", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add toughness (+0/+1)"),
|
||||
parseSequenceString("Alt++"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aDecT", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove toughness (-0/-1)"),
|
||||
parseSequenceString("Alt+-"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aFlowT", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Move to toughness (-1/+1)"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aIncPT", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add power and toughness (+1/+1)"),
|
||||
parseSequenceString("Ctrl+Alt++"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aDecPT", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove power and toughness (-1/-1)"),
|
||||
parseSequenceString("Ctrl+Alt+-"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aSetPT", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set power and toughness"),
|
||||
parseSequenceString("Ctrl+P"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/aResetPT", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Reset power and toughness"),
|
||||
parseSequenceString("Ctrl+Alt+0"),
|
||||
ShortcutGroup::Power_Toughness)},
|
||||
{"Player/phase0",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Untap"), parseSequenceString("F5"), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase1",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Upkeep"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase2",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Draw"), parseSequenceString("F6"), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase3",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Main 1"), parseSequenceString("F7"), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase4",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Start combat"), parseSequenceString("F8"), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase5",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Attack"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase6",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Block"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase7",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Damage"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase8",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "End combat"), parseSequenceString(""), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase9",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Main 2"), parseSequenceString("F9"), ShortcutGroup::Game_Phases)},
|
||||
{"Player/phase10",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "End"), parseSequenceString("F10"), ShortcutGroup::Game_Phases)},
|
||||
{"Player/aNextPhase", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Next phase"),
|
||||
parseSequenceString("Ctrl+Space;Tab"),
|
||||
ShortcutGroup::Game_Phases)},
|
||||
{"Player/aNextPhaseAction", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Next phase action"),
|
||||
parseSequenceString("Shift+Tab"),
|
||||
ShortcutGroup::Game_Phases)},
|
||||
{"Player/aNextTurn", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Next turn"),
|
||||
parseSequenceString("Ctrl+Return;Ctrl+Enter"),
|
||||
ShortcutGroup::Game_Phases)},
|
||||
{"Player/aTap", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Tap / Untap Card"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Playing_Area)},
|
||||
{"Player/aUntapAll", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Untap all"),
|
||||
parseSequenceString("Ctrl+U"),
|
||||
ShortcutGroup::Playing_Area)},
|
||||
{"Player/aDoesntUntap",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle untap"), parseSequenceString(""), ShortcutGroup::Playing_Area)},
|
||||
{"Player/aFlip",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Flip card"), parseSequenceString(""), ShortcutGroup::Playing_Area)},
|
||||
{"Player/aPeek",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Peek card"), parseSequenceString(""), ShortcutGroup::Playing_Area)},
|
||||
{"Player/aPlay",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Play card"), parseSequenceString(""), ShortcutGroup::Playing_Area)},
|
||||
{"Player/aAttach", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Attach card"),
|
||||
parseSequenceString("Ctrl+Alt+A"),
|
||||
ShortcutGroup::Playing_Area)},
|
||||
{"Player/aUnattach",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Unattach card"), parseSequenceString(""), ShortcutGroup::Playing_Area)},
|
||||
{"Player/aClone", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Clone card"),
|
||||
parseSequenceString("Ctrl+J"),
|
||||
ShortcutGroup::Playing_Area)},
|
||||
{"Player/aCreateToken", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Create token"),
|
||||
parseSequenceString("Ctrl+T"),
|
||||
ShortcutGroup::Playing_Area)},
|
||||
{"Player/aCreateRelatedTokens", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Create all related tokens"),
|
||||
parseSequenceString("Ctrl+Shift+T"),
|
||||
ShortcutGroup::Playing_Area)},
|
||||
{"Player/aCreateAnotherToken", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Create another token"),
|
||||
parseSequenceString("Ctrl+G"),
|
||||
ShortcutGroup::Playing_Area)},
|
||||
{"Player/aSetAnnotation",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set annotation"), parseSequenceString(""), ShortcutGroup::Playing_Area)},
|
||||
{"Player/aMoveToBottomLibrary", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom library"),
|
||||
parseSequenceString(""),
|
||||
ShortcutGroup::Move_selected)},
|
||||
{"Player/aMoveToExile",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::Move_selected)},
|
||||
{"Player/aMoveToGraveyard", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"),
|
||||
parseSequenceString("Ctrl+Del"),
|
||||
ShortcutGroup::Move_selected)},
|
||||
{"Player/aMoveToHand",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Hand"), parseSequenceString(""), ShortcutGroup::Move_selected)},
|
||||
{"Player/aMoveToTopLibrary",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Top library"), parseSequenceString(""), ShortcutGroup::Move_selected)},
|
||||
{"Player/aMoveTopToPlayFaceDown", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Play face down"),
|
||||
parseSequenceString("Ctrl+Shift+E"),
|
||||
ShortcutGroup::Move_selected)},
|
||||
{"Player/aViewGraveyard",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard"), parseSequenceString("F4"), ShortcutGroup::View)},
|
||||
{"Player/aViewLibrary",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Library"), parseSequenceString("F3"), ShortcutGroup::View)},
|
||||
{"Player/aViewRfg",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Exile"), parseSequenceString(""), ShortcutGroup::View)},
|
||||
{"Player/aViewSideboard",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Sideboard"), parseSequenceString("Ctrl+F3"), ShortcutGroup::View)},
|
||||
{"Player/aViewTopCards", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Top cards of library"),
|
||||
parseSequenceString("Ctrl+W"),
|
||||
ShortcutGroup::View)},
|
||||
{"Player/aCloseMostRecentZoneView",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Close recent view"), parseSequenceString("Esc"), ShortcutGroup::View)},
|
||||
{"Player/aMoveTopCardToGraveyard",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard Once"), parseSequenceString(""), ShortcutGroup::Move_top)},
|
||||
{"Player/aMoveTopCardsToGraveyard", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Graveyard Multiple"),
|
||||
parseSequenceString("Ctrl+Shift+M"),
|
||||
ShortcutGroup::Move_top)},
|
||||
{"Player/aMoveTopCardToExile",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Exile Once"), parseSequenceString(""), ShortcutGroup::Move_top)},
|
||||
{"Player/aMoveTopCardsToExile",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Exile Multiple"), parseSequenceString(""), ShortcutGroup::Move_top)},
|
||||
{"Player/aDrawArrow",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Draw arrow"), parseSequenceString(""), ShortcutGroup::Gameplay)},
|
||||
{"Player/aRemoveLocalArrows", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove local arrows"),
|
||||
parseSequenceString("Ctrl+R"),
|
||||
ShortcutGroup::Gameplay)},
|
||||
{"Player/aLeaveGame",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Leave game"), parseSequenceString("Ctrl+Q"), ShortcutGroup::Gameplay)},
|
||||
{"Player/aConcede",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Concede"), parseSequenceString("F2"), ShortcutGroup::Gameplay)},
|
||||
{"Player/aRollDie",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Roll dice"), parseSequenceString("Ctrl+I"), ShortcutGroup::Gameplay)},
|
||||
{"Player/aShuffle", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Shuffle library"),
|
||||
parseSequenceString("Ctrl+S"),
|
||||
ShortcutGroup::Gameplay)},
|
||||
{"Player/aMulligan",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan"), parseSequenceString("Ctrl+M"), ShortcutGroup::Drawing)},
|
||||
{"Player/aDrawCard",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Draw card"), parseSequenceString("Ctrl+D"), ShortcutGroup::Drawing)},
|
||||
{"Player/aDrawCards",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Draw cards"), parseSequenceString("Ctrl+E"), ShortcutGroup::Drawing)},
|
||||
{"Player/aUndoDraw", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Undo draw"),
|
||||
parseSequenceString("Ctrl+Shift+D"),
|
||||
ShortcutGroup::Drawing)},
|
||||
{"Player/aAlwaysRevealTopCard", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Always reveal top card"),
|
||||
parseSequenceString("Ctrl+N"),
|
||||
ShortcutGroup::Drawing)},
|
||||
{"Player/aRotateViewCW",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate view CW"), parseSequenceString(""), ShortcutGroup::Drawing)},
|
||||
{"Player/aRotateViewCCW",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Rotate view CCW"), parseSequenceString(""), ShortcutGroup::Drawing)},
|
||||
{"tab_room/aClearChat",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Clear chat"), parseSequenceString("F12"), ShortcutGroup::Chat_room)},
|
||||
{"Player/aResetLayout",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Reset layout"), parseSequenceString(""), ShortcutGroup::Game_window)},
|
||||
{"DlgLoadDeckFromClipboard/refreshButton",
|
||||
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Refresh"), parseSequenceString("F5"), ShortcutGroup::Load_deck)}};
|
||||
};
|
||||
|
||||
#endif // SHORTCUTSSETTINGS_H
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -253,7 +253,7 @@
|
|||
<context>
|
||||
<name>OracleImporter</name>
|
||||
<message>
|
||||
<location filename="../src/oracleimporter.cpp" line="344"/>
|
||||
<location filename="../src/oracleimporter.cpp" line="370"/>
|
||||
<source>Dummy set containing tokens</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in a new issue