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
|
for ex in ${exts[@]}; do
|
||||||
reg+=(${include[@]/%/.*\\.$ex\$})
|
reg+=(${include[@]/%/.*\\.$ex\$})
|
||||||
done
|
done
|
||||||
names=$(git diff --name-only $base | grep ${reg[@]/#/-e ^})
|
names=$(git diff --diff-filter=d --name-only $base | grep ${reg[@]/#/-e ^})
|
||||||
else
|
else
|
||||||
names=$(find ${include[@]} -type f -false ${exts[@]/#/-o -name *\\.})
|
names=$(find ${include[@]} -type f -false ${exts[@]/#/-o -name *\\.})
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -105,7 +105,6 @@ SET(cockatrice_SOURCES
|
||||||
src/pictureloader.cpp
|
src/pictureloader.cpp
|
||||||
src/shortcutssettings.cpp
|
src/shortcutssettings.cpp
|
||||||
src/sequenceEdit/sequenceedit.cpp
|
src/sequenceEdit/sequenceedit.cpp
|
||||||
src/sequenceEdit/shortcutstab.cpp
|
|
||||||
src/lineeditcompleter.cpp
|
src/lineeditcompleter.cpp
|
||||||
src/settings/settingsmanager.cpp
|
src/settings/settingsmanager.cpp
|
||||||
src/settings/carddatabasesettings.cpp
|
src/settings/carddatabasesettings.cpp
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include "carddatabase.h"
|
#include "carddatabase.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "releasechannel.h"
|
#include "releasechannel.h"
|
||||||
#include "sequenceEdit/shortcutstab.h"
|
#include "sequenceEdit/sequenceedit.h"
|
||||||
#include "settingscache.h"
|
#include "settingscache.h"
|
||||||
#include "soundengine.h"
|
#include "soundengine.h"
|
||||||
#include "spoilerbackgroundupdater.h"
|
#include "spoilerbackgroundupdater.h"
|
||||||
|
@ -18,6 +18,7 @@
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
|
@ -30,8 +31,11 @@
|
||||||
#include <QStackedWidget>
|
#include <QStackedWidget>
|
||||||
#include <QToolBar>
|
#include <QToolBar>
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
|
#include <QTreeWidget>
|
||||||
|
#include <QTreeWidgetItem>
|
||||||
|
|
||||||
#define WIKI_CUSTOM_PIC_URL "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Picture-Download-URLs"
|
#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()
|
GeneralSettingsPage::GeneralSettingsPage()
|
||||||
{
|
{
|
||||||
|
@ -961,6 +965,168 @@ void SoundSettingsPage::retranslateUi()
|
||||||
masterVolumeLabel.setText(tr("Master volume"));
|
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)
|
DlgSettings::DlgSettings(QWidget *parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
QRect rec = QApplication::desktop()->availableGeometry();
|
QRect rec = QApplication::desktop()->availableGeometry();
|
||||||
|
@ -984,7 +1150,7 @@ DlgSettings::DlgSettings(QWidget *parent) : QDialog(parent)
|
||||||
pagesWidget->addWidget(new DeckEditorSettingsPage);
|
pagesWidget->addWidget(new DeckEditorSettingsPage);
|
||||||
pagesWidget->addWidget(new MessagesSettingsPage);
|
pagesWidget->addWidget(new MessagesSettingsPage);
|
||||||
pagesWidget->addWidget(new SoundSettingsPage);
|
pagesWidget->addWidget(new SoundSettingsPage);
|
||||||
pagesWidget->addWidget(new ShortcutsTab);
|
pagesWidget->addWidget(new ShortcutSettingsPage);
|
||||||
|
|
||||||
createIcons();
|
createIcons();
|
||||||
contentsWidget->setCurrentRow(0);
|
contentsWidget->setCurrentRow(0);
|
||||||
|
|
|
@ -10,21 +10,19 @@
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
|
|
||||||
class CardDatabase;
|
class CardDatabase;
|
||||||
|
class QCloseEvent;
|
||||||
|
class QGridLayout;
|
||||||
|
class QHBoxLayout;
|
||||||
|
class QLineEdit;
|
||||||
class QListWidget;
|
class QListWidget;
|
||||||
class QListWidgetItem;
|
class QListWidgetItem;
|
||||||
class QStackedWidget;
|
|
||||||
class QLineEdit;
|
|
||||||
class QPushButton;
|
|
||||||
class QComboBox;
|
|
||||||
class QGroupBox;
|
|
||||||
class QCheckBox;
|
|
||||||
class QLabel;
|
|
||||||
class QCloseEvent;
|
|
||||||
class QSpinBox;
|
|
||||||
class QRadioButton;
|
class QRadioButton;
|
||||||
class QSpinBox;
|
|
||||||
class QSlider;
|
class QSlider;
|
||||||
class QSpinBox;
|
class QStackedWidget;
|
||||||
|
class QTreeWidget;
|
||||||
|
class QTreeWidgetItem;
|
||||||
|
class QVBoxLayout;
|
||||||
|
class SequenceEdit;
|
||||||
|
|
||||||
class AbstractSettingsPage : public QWidget
|
class AbstractSettingsPage : public QWidget
|
||||||
{
|
{
|
||||||
|
@ -228,6 +226,37 @@ private slots:
|
||||||
void themeBoxChanged(int index);
|
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
|
class DlgSettings : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -243,8 +272,7 @@ private:
|
||||||
QListWidget *contentsWidget;
|
QListWidget *contentsWidget;
|
||||||
QStackedWidget *pagesWidget;
|
QStackedWidget *pagesWidget;
|
||||||
QListWidgetItem *generalButton, *appearanceButton, *userInterfaceButton, *deckEditorButton, *messagesButton,
|
QListWidgetItem *generalButton, *appearanceButton, *userInterfaceButton, *deckEditorButton, *messagesButton,
|
||||||
*soundButton;
|
*soundButton, *shortcutsButton;
|
||||||
QListWidgetItem *shortcutsButton;
|
|
||||||
void createIcons();
|
void createIcons();
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
|
|
||||||
|
|
|
@ -5,24 +5,16 @@
|
||||||
#include <QToolTip>
|
#include <QToolTip>
|
||||||
#include <utility>
|
#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);
|
lineEdit = new QLineEdit(this);
|
||||||
clearButton = new QPushButton("", this);
|
clearButton = new QPushButton("", this);
|
||||||
defaultButton = new QPushButton("", this);
|
defaultButton = new QPushButton("", this);
|
||||||
|
|
||||||
lineEdit->setMinimumWidth(70);
|
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"));
|
clearButton->setIcon(QPixmap("theme:icons/clearsearch"));
|
||||||
defaultButton->setIcon(QPixmap("theme:icons/update"));
|
defaultButton->setIcon(QPixmap("theme:icons/update"));
|
||||||
|
|
||||||
clearButton->setAttribute(Qt::WA_LayoutUsesWidgetRect);
|
|
||||||
defaultButton->setAttribute(Qt::WA_LayoutUsesWidgetRect);
|
|
||||||
|
|
||||||
auto *layout = new QHBoxLayout(this);
|
auto *layout = new QHBoxLayout(this);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->setSpacing(1);
|
layout->setSpacing(1);
|
||||||
|
@ -34,7 +26,26 @@ SequenceEdit::SequenceEdit(const QString &_shortcutName, QWidget *parent) : QWid
|
||||||
connect(defaultButton, SIGNAL(clicked()), this, SLOT(restoreDefault()));
|
connect(defaultButton, SIGNAL(clicked()), this, SLOT(restoreDefault()));
|
||||||
lineEdit->installEventFilter(this);
|
lineEdit->installEventFilter(this);
|
||||||
|
|
||||||
|
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->setText(settingsCache->shortcuts().getShortcutString(shortcutName));
|
||||||
|
lineEdit->setPlaceholderText(tr("Hit the key/combination of keys you want to set for this action"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString SequenceEdit::getSequence()
|
QString SequenceEdit::getSequence()
|
||||||
|
@ -73,11 +84,23 @@ void SequenceEdit::clear()
|
||||||
lineEdit->setText("");
|
lineEdit->setText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SequenceEdit::eventFilter(QObject *, QEvent *event)
|
bool SequenceEdit::eventFilter(QObject *obj, QEvent *event)
|
||||||
{
|
{
|
||||||
if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
|
if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
|
||||||
auto *keyEvent = reinterpret_cast<QKeyEvent *>(event);
|
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()) {
|
if (event->type() == QEvent::KeyPress && !keyEvent->isAutoRepeat()) {
|
||||||
processKey(keyEvent);
|
processKey(keyEvent);
|
||||||
} else if (event->type() == QEvent::KeyRelease && !keyEvent->isAutoRepeat()) {
|
} else if (event->type() == QEvent::KeyRelease && !keyEvent->isAutoRepeat()) {
|
||||||
|
@ -161,3 +184,10 @@ void SequenceEdit::updateSettings()
|
||||||
{
|
{
|
||||||
settingsCache->shortcuts().setShortcuts(shortcutName, lineEdit->text());
|
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:
|
public:
|
||||||
SequenceEdit(const QString &_shortcutName, QWidget *parent = nullptr);
|
SequenceEdit(const QString &_shortcutName, QWidget *parent = nullptr);
|
||||||
QString getSequence();
|
QString getSequence();
|
||||||
|
void setShortcutName(const QString &_shortcutName);
|
||||||
void refreshShortcut();
|
void refreshShortcut();
|
||||||
void clear();
|
void clear();
|
||||||
|
void retranslateUi();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void removeLastShortcut();
|
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 <QStringList>
|
||||||
#include <utility>
|
#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)
|
ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
shortCuts = defaultShortCuts;
|
shortCuts = defaultShortCuts;
|
||||||
|
@ -23,8 +28,8 @@ ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *paren
|
||||||
QString stringSequence = shortCutsFile.value(*it).toString();
|
QString stringSequence = shortCutsFile.value(*it).toString();
|
||||||
// check whether shortcut is forbidden
|
// check whether shortcut is forbidden
|
||||||
if (isKeyAllowed(*it, stringSequence)) {
|
if (isKeyAllowed(*it, stringSequence)) {
|
||||||
QList<QKeySequence> SequenceList = parseSequenceString(stringSequence);
|
auto shortcut = getShortcut(*it);
|
||||||
shortCuts.insert(*it, SequenceList);
|
shortcut.setSequence(parseSequenceString(stringSequence));
|
||||||
} else {
|
} else {
|
||||||
invalidItems.insert(*it, stringSequence);
|
invalidItems.insert(*it, stringSequence);
|
||||||
}
|
}
|
||||||
|
@ -45,21 +50,16 @@ ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *paren
|
||||||
}
|
}
|
||||||
msgBox.setDetailedText(detailedMessage);
|
msgBox.setDetailedText(detailedMessage);
|
||||||
msgBox.exec();
|
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)) {
|
if (shortCuts.contains(name)) {
|
||||||
return shortCuts.value(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)
|
void ShortcutsSettings::setShortcuts(const QString &name, const QList<QKeySequence> &Sequence)
|
||||||
{
|
{
|
||||||
shortCuts[name] = Sequence;
|
shortCuts[name].setSequence(Sequence);
|
||||||
|
|
||||||
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
||||||
shortCutsFile.beginGroup(custom);
|
shortCutsFile.beginGroup(custom);
|
||||||
|
@ -132,7 +132,6 @@ void ShortcutsSettings::resetAllShortcuts()
|
||||||
shortCutsFile.remove("");
|
shortCutsFile.remove("");
|
||||||
shortCutsFile.endGroup();
|
shortCutsFile.endGroup();
|
||||||
emit shortCutChanged();
|
emit shortCutChanged();
|
||||||
emit allShortCutsReset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShortcutsSettings::clearAllShortcuts()
|
void ShortcutsSettings::clearAllShortcuts()
|
||||||
|
@ -140,12 +139,11 @@ void ShortcutsSettings::clearAllShortcuts()
|
||||||
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
||||||
shortCutsFile.beginGroup(custom);
|
shortCutsFile.beginGroup(custom);
|
||||||
for (auto it = shortCuts.begin(); it != shortCuts.end(); ++it) {
|
for (auto it = shortCuts.begin(); it != shortCuts.end(); ++it) {
|
||||||
it.value() = parseSequenceString("");
|
it.value().setSequence(parseSequenceString(""));
|
||||||
shortCutsFile.setValue(it.key(), "");
|
shortCutsFile.setValue(it.key(), "");
|
||||||
}
|
}
|
||||||
shortCutsFile.endGroup();
|
shortCutsFile.endGroup();
|
||||||
emit shortCutChanged();
|
emit shortCutChanged();
|
||||||
emit allShortCutsClear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShortcutsSettings::isKeyAllowed(const QString &name, const QString &Sequences) const
|
bool ShortcutsSettings::isKeyAllowed(const QString &name, const QString &Sequences) const
|
||||||
|
|
|
@ -1,22 +1,115 @@
|
||||||
#ifndef SHORTCUTSSETTINGS_H
|
#ifndef SHORTCUTSSETTINGS_H
|
||||||
#define SHORTCUTSSETTINGS_H
|
#define SHORTCUTSSETTINGS_H
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include <QKeySequence>
|
#include <QKeySequence>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSettings>
|
#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
|
class ShortcutsSettings : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
ShortcutsSettings(const QString &settingsFilePath, QObject *parent = nullptr);
|
ShortcutsSettings(const QString &settingsFilePath, QObject *parent = nullptr);
|
||||||
|
|
||||||
QList<QKeySequence> getDefaultShortcut(const QString &name) const;
|
ShortcutKey getDefaultShortcut(const QString &name) const;
|
||||||
QList<QKeySequence> getShortcut(const QString &name) const;
|
ShortcutKey getShortcut(const QString &name) const;
|
||||||
QKeySequence getSingleShortcut(const QString &name) const;
|
QKeySequence getSingleShortcut(const QString &name) const;
|
||||||
QString getDefaultShortcutString(const QString &name) const;
|
QString getDefaultShortcutString(const QString &name) const;
|
||||||
QString getShortcutString(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 QList<QKeySequence> &Sequence);
|
||||||
void setShortcuts(const QString &name, const QKeySequence &Sequence);
|
void setShortcuts(const QString &name, const QKeySequence &Sequence);
|
||||||
|
@ -30,168 +123,359 @@ public:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void shortCutChanged();
|
void shortCutChanged();
|
||||||
void allShortCutsReset();
|
|
||||||
void allShortCutsClear();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const QChar sep = ';';
|
const QChar sep = ';';
|
||||||
const QString custom = "Custom";
|
const QString custom = "Custom";
|
||||||
QString settingsFilePath;
|
QString settingsFilePath;
|
||||||
QHash<QString, QList<QKeySequence>> shortCuts;
|
QHash<QString, ShortcutKey> shortCuts;
|
||||||
|
|
||||||
QString stringifySequence(const QList<QKeySequence> &Sequence) const;
|
QString stringifySequence(const QList<QKeySequence> &Sequence) const;
|
||||||
QList<QKeySequence> parseSequenceString(const QString &stringSequence) const;
|
QList<QKeySequence> parseSequenceString(const QString &stringSequence) const;
|
||||||
|
|
||||||
const QHash<QString, QList<QKeySequence>> defaultShortCuts{
|
typedef ShortcutKey SK;
|
||||||
{"MainWindow/aCheckCardUpdates", parseSequenceString("")},
|
const QHash<QString, ShortcutKey> defaultShortCuts = {
|
||||||
{"MainWindow/aConnect", parseSequenceString("Ctrl+L")},
|
{"MainWindow/aCheckCardUpdates", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Check for card updates"),
|
||||||
{"MainWindow/aDeckEditor", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"MainWindow/aDisconnect", parseSequenceString("")},
|
ShortcutGroup::Main_Window)},
|
||||||
{"MainWindow/aExit", parseSequenceString("")},
|
{"MainWindow/aConnect",
|
||||||
{"MainWindow/aFullScreen", parseSequenceString("Ctrl+F")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Connect"), parseSequenceString("Ctrl+L"), ShortcutGroup::Main_Window)},
|
||||||
{"MainWindow/aRegister", parseSequenceString("")},
|
{"MainWindow/aDeckEditor",
|
||||||
{"MainWindow/aSettings", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Deck editor"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||||
{"MainWindow/aSinglePlayer", parseSequenceString("")},
|
{"MainWindow/aDisconnect",
|
||||||
{"MainWindow/aWatchReplay", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Disconnect"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||||
|
{"MainWindow/aExit",
|
||||||
{"TabDeckEditor/aAnalyzeDeck", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Exit"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||||
{"TabDeckEditor/aClearFilterAll", parseSequenceString("")},
|
{"MainWindow/aFullScreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Full screen"),
|
||||||
{"TabDeckEditor/aClearFilterOne", parseSequenceString("")},
|
parseSequenceString("Ctrl+F"),
|
||||||
{"TabDeckEditor/aClose", parseSequenceString("")},
|
ShortcutGroup::Main_Window)},
|
||||||
{"TabDeckEditor/aDecrement", parseSequenceString("-")},
|
{"MainWindow/aRegister",
|
||||||
{"TabDeckEditor/aManageSets", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Register"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||||
{"TabDeckEditor/aEditTokens", parseSequenceString("")},
|
{"MainWindow/aSettings",
|
||||||
{"TabDeckEditor/aExportDeckDecklist", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Settings"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||||
{"TabDeckEditor/aIncrement", parseSequenceString("+")},
|
{"MainWindow/aSinglePlayer",
|
||||||
{"TabDeckEditor/aLoadDeck", parseSequenceString("Ctrl+O")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Local gameplay"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||||
{"TabDeckEditor/aLoadDeckFromClipboard", parseSequenceString("Ctrl+Shift+V")},
|
{"MainWindow/aWatchReplay",
|
||||||
{"TabDeckEditor/aNewDeck", parseSequenceString("Ctrl+N")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Watch replay"), parseSequenceString(""), ShortcutGroup::Main_Window)},
|
||||||
{"TabDeckEditor/aOpenCustomFolder", parseSequenceString("")},
|
{"TabDeckEditor/aAnalyzeDeck",
|
||||||
{"TabDeckEditor/aPrintDeck", parseSequenceString("Ctrl+P")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Analyze deck"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
{"TabDeckEditor/aRemoveCard", parseSequenceString("")},
|
{"TabDeckEditor/aClearFilterAll", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Clear all filters"),
|
||||||
{"TabDeckEditor/aResetLayout", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"TabDeckEditor/aSaveDeck", parseSequenceString("Ctrl+S")},
|
ShortcutGroup::Deck_Editor)},
|
||||||
{"TabDeckEditor/aSaveDeckAs", parseSequenceString("")},
|
{"TabDeckEditor/aClearFilterOne", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Clear selected filter"),
|
||||||
{"TabDeckEditor/aSaveDeckToClipboard", parseSequenceString("Ctrl+Shift+C")},
|
parseSequenceString(""),
|
||||||
{"TabDeckEditor/aSaveDeckToClipboardRaw", parseSequenceString("Ctrl+Shift+R")},
|
ShortcutGroup::Deck_Editor)},
|
||||||
|
{"TabDeckEditor/aClose",
|
||||||
{"DeckViewContainer/loadLocalButton", parseSequenceString("Ctrl+O")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Close"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
{"DeckViewContainer/loadRemoteButton", parseSequenceString("Ctrl+Alt+O")},
|
{"TabDeckEditor/aDecrement",
|
||||||
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove card"), parseSequenceString("-"), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aSet", parseSequenceString("Ctrl+L")},
|
{"TabDeckEditor/aManageSets",
|
||||||
{"Player/aAlwaysRevealTopCard", parseSequenceString("Ctrl+N")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Manage sets"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aCloseMostRecentZoneView", parseSequenceString("Esc")},
|
{"TabDeckEditor/aEditTokens",
|
||||||
{"Player/aDrawCard", parseSequenceString("Ctrl+D")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Edit tokens"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aDrawCards", parseSequenceString("Ctrl+E")},
|
{"TabDeckEditor/aExportDeckDecklist",
|
||||||
{"Player/aDec", parseSequenceString("F11")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Export deck"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aInc", parseSequenceString("F12")},
|
{"TabDeckEditor/aIncrement",
|
||||||
{"Player/aMoveTopCardToGraveyard", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add card"), parseSequenceString("+"), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aMoveTopCardsToGraveyard", parseSequenceString("Ctrl+Shift+M")},
|
{"TabDeckEditor/aLoadDeck",
|
||||||
{"Player/aMoveTopCardToExile", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load deck"), parseSequenceString("Ctrl+O"), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aMoveTopCardsToExile", parseSequenceString("")},
|
{"TabDeckEditor/aLoadDeckFromClipboard", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load deck (clipboard)"),
|
||||||
{"Player/aMoveTopToPlayFaceDown", parseSequenceString("Ctrl+Shift+E")},
|
parseSequenceString("Ctrl+Shift+V"),
|
||||||
{"Player/aMulligan", parseSequenceString("Ctrl+M")},
|
ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aPeek", parseSequenceString("")},
|
{"TabDeckEditor/aNewDeck",
|
||||||
{"Player/aPlay", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "New deck"), parseSequenceString("Ctrl+N"), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aResetLayout", parseSequenceString("")},
|
{"TabDeckEditor/aOpenCustomFolder", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Open custom pic folder"),
|
||||||
{"Player/aRollDie", parseSequenceString("Ctrl+I")},
|
parseSequenceString(""),
|
||||||
{"Player/aShuffle", parseSequenceString("Ctrl+S")},
|
ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aUndoDraw", parseSequenceString("Ctrl+Shift+D")},
|
{"TabDeckEditor/aPrintDeck", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Print deck"),
|
||||||
{"Player/aUntapAll", parseSequenceString("Ctrl+U")},
|
parseSequenceString("Ctrl+P"),
|
||||||
{"Player/aViewGraveyard", parseSequenceString("F4")},
|
ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aViewLibrary", parseSequenceString("F3")},
|
{"TabDeckEditor/aRemoveCard",
|
||||||
{"Player/aViewRfg", parseSequenceString("")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Delete card"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aViewSideboard", parseSequenceString("Ctrl+F3")},
|
{"TabDeckEditor/aResetLayout",
|
||||||
{"Player/aViewTopCards", parseSequenceString("Ctrl+W")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Reset layout"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
|
{"TabDeckEditor/aSaveDeck",
|
||||||
{"Player/aAttach", parseSequenceString("Ctrl+Alt+A")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck"), parseSequenceString("Ctrl+S"), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aClone", parseSequenceString("Ctrl+J")},
|
{"TabDeckEditor/aSaveDeckAs",
|
||||||
{"Player/aCreateAnotherToken", parseSequenceString("Ctrl+G")},
|
SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck as"), parseSequenceString(""), ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aCreateToken", parseSequenceString("Ctrl+T")},
|
{"TabDeckEditor/aSaveDeckToClipboard", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck (clipboard; annotated)"),
|
||||||
{"Player/aCreateRelatedTokens", parseSequenceString("Ctrl+Shift+T")},
|
parseSequenceString("Ctrl+Shift+C"),
|
||||||
{"Player/aDoesntUntap", parseSequenceString("")},
|
ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aDrawArrow", parseSequenceString("")},
|
{"TabDeckEditor/aSaveDeckToClipboardRaw", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Save deck (clipboard, raw)"),
|
||||||
{"Player/aFlip", parseSequenceString("")},
|
parseSequenceString("Ctrl+Shift+R"),
|
||||||
{"Player/aMoveToBottomLibrary", parseSequenceString("")},
|
ShortcutGroup::Deck_Editor)},
|
||||||
{"Player/aMoveToExile", parseSequenceString("")},
|
{"DeckViewContainer/loadLocalButton", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load local deck"),
|
||||||
{"Player/aMoveToGraveyard", parseSequenceString("Ctrl+Del")},
|
parseSequenceString("Ctrl+O"),
|
||||||
{"Player/aMoveToHand", parseSequenceString("")},
|
ShortcutGroup::Game_Lobby)},
|
||||||
{"Player/aMoveToTopLibrary", parseSequenceString("")},
|
{"DeckViewContainer/loadRemoteButton", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Load remote deck"),
|
||||||
{"Player/aSetAnnotation", parseSequenceString("")},
|
parseSequenceString("Ctrl+Alt+O"),
|
||||||
{"Player/aTap", parseSequenceString("")},
|
ShortcutGroup::Game_Lobby)},
|
||||||
{"Player/aUnattach", parseSequenceString("")},
|
{"Player/aCCGreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add green counter"),
|
||||||
|
parseSequenceString(""),
|
||||||
{"Player/aCCGreen", parseSequenceString("")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aCCRed", parseSequenceString("")},
|
{"Player/aRCGreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove green counter"),
|
||||||
{"Player/aCCYellow", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/aRCGreen", parseSequenceString("")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aRCRed", parseSequenceString("")},
|
{"Player/aSCGreen", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set green counters"),
|
||||||
{"Player/aRCYellow", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/aSCGreen", parseSequenceString("")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aSCRed", parseSequenceString("")},
|
{"Player/aCCYellow", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add yellow counter"),
|
||||||
{"Player/aSCYellow", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aDecP", parseSequenceString("Ctrl+-")},
|
{"Player/aRCYellow", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove yellow counter"),
|
||||||
{"Player/aDecPT", parseSequenceString("Ctrl+Alt+-")},
|
parseSequenceString(""),
|
||||||
{"Player/aDecT", parseSequenceString("Alt+-")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aIncP", parseSequenceString("Ctrl++")},
|
{"Player/aSCYellow", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set yellow counters"),
|
||||||
{"Player/aIncPT", parseSequenceString("Ctrl+Alt++")},
|
parseSequenceString(""),
|
||||||
{"Player/aIncT", parseSequenceString("Alt++")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aSetPT", parseSequenceString("Ctrl+P")},
|
{"Player/aCCRed", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add red counter"),
|
||||||
{"Player/aResetPT", parseSequenceString("Ctrl+Alt+0")},
|
parseSequenceString(""),
|
||||||
{"Player/aFlowP", parseSequenceString("")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aFlowT", parseSequenceString("")},
|
{"Player/aRCRed", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove red counter"),
|
||||||
|
parseSequenceString(""),
|
||||||
{"Player/aConcede", parseSequenceString("F2")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aLeaveGame", parseSequenceString("Ctrl+Q")},
|
{"Player/aSCRed", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set red counters"),
|
||||||
{"Player/aNextPhase", parseSequenceString("Ctrl+Space;Tab")},
|
parseSequenceString(""),
|
||||||
{"Player/aNextPhaseAction", parseSequenceString("Shift+Tab")},
|
ShortcutGroup::Card_Counters)},
|
||||||
{"Player/aNextTurn", parseSequenceString("Ctrl+Return;Ctrl+Enter")},
|
{"Player/aInc", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add life counter"),
|
||||||
{"Player/aRemoveLocalArrows", parseSequenceString("Ctrl+R")},
|
parseSequenceString("F12"),
|
||||||
{"Player/aRotateViewCCW", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aRotateViewCW", parseSequenceString("")},
|
{"Player/aDec", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove life counter"),
|
||||||
{"Player/phase0", parseSequenceString("F5")},
|
parseSequenceString("F11"),
|
||||||
{"Player/phase1", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/phase10", parseSequenceString("F10")},
|
{"Player/aSet", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set life counters"),
|
||||||
{"Player/phase2", parseSequenceString("F6")},
|
parseSequenceString("Ctrl+L"),
|
||||||
{"Player/phase3", parseSequenceString("F7")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/phase4", parseSequenceString("F8")},
|
{"Player/aIncCounter_w", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add white counter"),
|
||||||
{"Player/phase5", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/phase6", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/phase7", parseSequenceString("")},
|
{"Player/aDecCounter_w", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove white counter"),
|
||||||
{"Player/phase8", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/phase9", parseSequenceString("F9")},
|
ShortcutGroup::Player_Counters)},
|
||||||
|
{"Player/aSetCounter_w", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set white counters"),
|
||||||
{"Player/aDecCounter_w", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/aIncCounter_w", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aSetCounter_w", parseSequenceString("")},
|
{"Player/aIncCounter_u", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add blue counter"),
|
||||||
|
parseSequenceString(""),
|
||||||
{"Player/aDecCounter_u", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aIncCounter_u", parseSequenceString("")},
|
{"Player/aDecCounter_u", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove blue counter"),
|
||||||
{"Player/aSetCounter_u", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aDecCounter_b", parseSequenceString("")},
|
{"Player/aSetCounter_u", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set blue counters"),
|
||||||
{"Player/aIncCounter_b", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/aSetCounter_b", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
|
{"Player/aIncCounter_b", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add black counter"),
|
||||||
{"Player/aDecCounter_r", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/aIncCounter_r", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aSetCounter_r", parseSequenceString("")},
|
{"Player/aDecCounter_b", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove black counter"),
|
||||||
|
parseSequenceString(""),
|
||||||
{"Player/aDecCounter_g", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aIncCounter_g", parseSequenceString("")},
|
{"Player/aSetCounter_b", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set black counters"),
|
||||||
{"Player/aSetCounter_g", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aDecCounter_x", parseSequenceString("")},
|
{"Player/aIncCounter_r", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Add red counter"),
|
||||||
{"Player/aIncCounter_x", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/aSetCounter_x", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
|
{"Player/aDecCounter_r", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove red counter"),
|
||||||
{"Player/aDecCounter_storm", parseSequenceString("")},
|
parseSequenceString(""),
|
||||||
{"Player/aIncCounter_storm", parseSequenceString("")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"Player/aSetCounter_storm", parseSequenceString("")},
|
{"Player/aSetCounter_r", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Set red counters"),
|
||||||
|
parseSequenceString(""),
|
||||||
{"tab_room/aClearChat", parseSequenceString("F12")},
|
ShortcutGroup::Player_Counters)},
|
||||||
{"DlgLoadDeckFromClipboard/refreshButton", parseSequenceString("F5")}};
|
{"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
|
#endif // SHORTCUTSSETTINGS_H
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -253,7 +253,7 @@
|
||||||
<context>
|
<context>
|
||||||
<name>OracleImporter</name>
|
<name>OracleImporter</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/oracleimporter.cpp" line="344"/>
|
<location filename="../src/oracleimporter.cpp" line="370"/>
|
||||||
<source>Dummy set containing tokens</source>
|
<source>Dummy set containing tokens</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
Loading…
Reference in a new issue