Configurable shortcuts

This commit is contained in:
marco 2015-08-09 20:48:21 +02:00
parent b0bf94e378
commit beaa4e9383
17 changed files with 1075 additions and 409 deletions

View file

@ -95,6 +95,8 @@ SET(cockatrice_SOURCES
src/soundengine.cpp src/soundengine.cpp
src/pending_command.cpp src/pending_command.cpp
src/shortcutssettings.cpp src/shortcutssettings.cpp
src/sequenceEdit/secuenceedit.cpp
src/sequenceEdit/shortcutstab.cpp
${VERSION_STRING_CPP} ${VERSION_STRING_CPP}
) )

View file

@ -1,6 +1,6 @@
<RCC> <RCC>
<qresource prefix="/" > <qresource prefix="/">
<file alias="back.svg" >resources/back.svg</file> <file alias="back.svg">resources/back.svg</file>
<file>resources/lock.svg</file> <file>resources/lock.svg</file>
<file>resources/icon_delete.svg</file> <file>resources/icon_delete.svg</file>
<file>resources/icon_tab_changed.svg</file> <file>resources/icon_tab_changed.svg</file>
@ -31,33 +31,27 @@
<file>resources/icon_view.svg</file> <file>resources/icon_view.svg</file>
<file>resources/hr.jpg</file> <file>resources/hr.jpg</file>
<file alias="resources/appicon.svg">resources/cockatrice.svg</file> <file alias="resources/appicon.svg">resources/cockatrice.svg</file>
<file>resources/add_to_sideboard.svg</file> <file>resources/add_to_sideboard.svg</file>
<file>resources/decrement.svg</file> <file>resources/decrement.svg</file>
<file>resources/increment.svg</file> <file>resources/increment.svg</file>
<file>resources/remove_row.svg</file> <file>resources/remove_row.svg</file>
<file>resources/arrow_left_green.svg</file> <file>resources/arrow_left_green.svg</file>
<file>resources/arrow_right_green.svg</file> <file>resources/arrow_right_green.svg</file>
<file>resources/arrow_top_green.svg</file> <file>resources/arrow_top_green.svg</file>
<file>resources/arrow_up_green.svg</file> <file>resources/arrow_up_green.svg</file>
<file>resources/arrow_down_green.svg</file> <file>resources/arrow_down_green.svg</file>
<file>resources/arrow_bottom_green.svg</file> <file>resources/arrow_bottom_green.svg</file>
<file>resources/icon_ready_start.svg</file> <file>resources/icon_ready_start.svg</file>
<file>resources/icon_not_ready_start.svg</file> <file>resources/icon_not_ready_start.svg</file>
<file>resources/icon_conceded.svg</file> <file>resources/icon_conceded.svg</file>
<file>resources/icon_player.svg</file> <file>resources/icon_player.svg</file>
<file>resources/icon_spectator.svg</file> <file>resources/icon_spectator.svg</file>
<file>resources/replay_start.svg</file> <file>resources/replay_start.svg</file>
<file>resources/replay_fastforward.svg</file> <file>resources/replay_fastforward.svg</file>
<file>resources/replay_pause.svg</file> <file>resources/replay_pause.svg</file>
<file>resources/genders/male.svg</file> <file>resources/genders/male.svg</file>
<file>resources/genders/female.svg</file> <file>resources/genders/female.svg</file>
<file>resources/genders/unknown.svg</file> <file>resources/genders/unknown.svg</file>
<file>resources/countries/ad.svg</file> <file>resources/countries/ad.svg</file>
<file>resources/countries/ae.svg</file> <file>resources/countries/ae.svg</file>
<file>resources/countries/af.svg</file> <file>resources/countries/af.svg</file>
@ -307,7 +301,6 @@
<file>resources/countries/za.svg</file> <file>resources/countries/za.svg</file>
<file>resources/countries/zm.svg</file> <file>resources/countries/zm.svg</file>
<file>resources/countries/zw.svg</file> <file>resources/countries/zw.svg</file>
<file>resources/counters/w.svg</file> <file>resources/counters/w.svg</file>
<file>resources/counters/w_highlight.svg</file> <file>resources/counters/w_highlight.svg</file>
<file>resources/counters/u.svg</file> <file>resources/counters/u.svg</file>
@ -322,7 +315,6 @@
<file>resources/counters/storm_highlight.svg</file> <file>resources/counters/storm_highlight.svg</file>
<file>resources/counters/general.svg</file> <file>resources/counters/general.svg</file>
<file>resources/counters/general_highlight.svg</file> <file>resources/counters/general_highlight.svg</file>
<file>resources/userlevels/normal.svg</file> <file>resources/userlevels/normal.svg</file>
<file>resources/userlevels/registered.svg</file> <file>resources/userlevels/registered.svg</file>
<file>resources/userlevels/registered_buddy.svg</file> <file>resources/userlevels/registered_buddy.svg</file>
@ -330,8 +322,8 @@
<file>resources/userlevels/moderator_buddy.svg</file> <file>resources/userlevels/moderator_buddy.svg</file>
<file>resources/userlevels/admin.svg</file> <file>resources/userlevels/admin.svg</file>
<file>resources/userlevels/admin_buddy.svg</file> <file>resources/userlevels/admin_buddy.svg</file>
<file>resources/news/exclamation_mark.svg</file> <file>resources/news/exclamation_mark.svg</file>
<file>resources/news/question_mark.svg</file> <file>resources/news/question_mark.svg</file>
<file>resources/icon_config_shorcuts.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View file

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="icon_config_shorcuts.svg">
<defs
id="defs4">
<inkscape:path-effect
effect="bend_path"
id="path-effect3618"
is_visible="true"
bendpath="m 142.49072,814.69439 c 81.91729,17.90777 153.31508,14.77655 218.89021,0"
prop_scale="1"
scale_y_rel="false"
vertical="false"
bendpath-nodetypes="cc" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective4226"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6464"
id="linearGradient6470"
x1="32.090908"
y1="1.8181819"
x2="31.09091"
y2="62.909088"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-0.1818182)" />
<linearGradient
id="linearGradient6464">
<stop
style="stop-color:#0061ff;stop-opacity:1;"
offset="0"
id="stop6466" />
<stop
style="stop-color:#001c4c;stop-opacity:1;"
offset="1"
id="stop6468" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6482"
id="linearGradient6488"
x1="32.18182"
y1="3.2835093"
x2="32.18182"
y2="13.02554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0281354,0,0,1.0429299,-0.9963584,-0.6864152)" />
<linearGradient
id="linearGradient6482">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6484" />
<stop
style="stop-color:#00ff00;stop-opacity:0;"
offset="1"
id="stop6486" />
</linearGradient>
<linearGradient
y2="13.02554"
x2="32.18182"
y1="3.2835093"
x1="32.18182"
gradientTransform="matrix(1.0281354,0,0,1.0429299,-0.9963584,-0.6864152)"
gradientUnits="userSpaceOnUse"
id="linearGradient4241"
xlink:href="#linearGradient6482"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42293617"
inkscape:cx="401.93458"
inkscape:cy="251.13063"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="745"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-552.36218)">
<g
transform="matrix(7.8163235,0,0,7.8163235,-0.83292805,550.81868)"
id="g4214">
<rect
ry="5.6363635"
y="1.6363637"
x="1.2727273"
height="61.090908"
width="61.636364"
id="rect6462"
style="fill:url(#linearGradient6470);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1" />
<rect
ry="4.7325583"
y="2.7380548"
x="2.1926003"
height="13.251164"
width="59.796619"
id="rect6472"
style="fill:url(#linearGradient4241);fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<image
width="330.20697"
height="335.80368"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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 "
id="image4221"
x="89.958641"
y="628.24109" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

View file

@ -67,15 +67,15 @@ void AbstractCounter::setShortcutsActive()
{ {
if (name == "life") { if (name == "life") {
aSet->setShortcuts(settingsCache->shortcuts().getShortcut( aSet->setShortcuts(settingsCache->shortcuts().getShortcut(
"AbstractCounter/aSet", "Player/aSet",
QKeySequence("Ctrl+L"))); QKeySequence("Ctrl+L")));
aDec->setShortcuts(settingsCache->shortcuts().getShortcut( aDec->setShortcuts(settingsCache->shortcuts().getShortcut(
"AbstractCounter/aDec", "Player/aDec",
QKeySequence("F11"))); QKeySequence("F11")));
aInc->setShortcuts(settingsCache->shortcuts().getShortcut( aInc->setShortcuts(settingsCache->shortcuts().getShortcut(
"AbstractCounter/aInc", "Player/aInc",
QKeySequence("F12"))); QKeySequence("F12")));
} }
} }

View file

@ -28,6 +28,7 @@
#include "settingscache.h" #include "settingscache.h"
#include "priceupdater.h" #include "priceupdater.h"
#include "soundengine.h" #include "soundengine.h"
#include "sequenceEdit/shortcutstab.h"
#define LINKING_FAQ_URL "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Download-URLs" #define LINKING_FAQ_URL "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Download-URLs"
@ -858,6 +859,7 @@ DlgSettings::DlgSettings(QWidget *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);
createIcons(); createIcons();
contentsWidget->setCurrentRow(0); contentsWidget->setCurrentRow(0);
@ -912,6 +914,11 @@ void DlgSettings::createIcons()
soundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); soundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
soundButton->setIcon(QIcon(":/resources/icon_config_sound.svg")); soundButton->setIcon(QIcon(":/resources/icon_config_sound.svg"));
shortcutsButton = new QListWidgetItem(contentsWidget);
shortcutsButton->setTextAlignment(Qt::AlignHCenter);
shortcutsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
shortcutsButton->setIcon(QIcon(":/resources/icon_config_shorcuts.svg"));
connect(contentsWidget, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWidgetItem *))); connect(contentsWidget, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWidgetItem *)));
} }
@ -1021,6 +1028,7 @@ void DlgSettings::retranslateUi()
deckEditorButton->setText(tr("Deck Editor")); deckEditorButton->setText(tr("Deck Editor"));
messagesButton->setText(tr("Chat")); messagesButton->setText(tr("Chat"));
soundButton->setText(tr("Sound")); soundButton->setText(tr("Sound"));
shortcutsButton->setText(tr("Shortcuts"));
for (int i = 0; i < pagesWidget->count(); i++) for (int i = 0; i < pagesWidget->count(); i++)
dynamic_cast<AbstractSettingsPage *>(pagesWidget->widget(i))->retranslateUi(); dynamic_cast<AbstractSettingsPage *>(pagesWidget->widget(i))->retranslateUi();

View file

@ -223,6 +223,7 @@ private:
QListWidget *contentsWidget; QListWidget *contentsWidget;
QStackedWidget *pagesWidget; QStackedWidget *pagesWidget;
QListWidgetItem *generalButton, *appearanceButton, *userInterfaceButton, *deckEditorButton, *messagesButton, *soundButton; QListWidgetItem *generalButton, *appearanceButton, *userInterfaceButton, *deckEditorButton, *messagesButton, *soundButton;
QListWidgetItem *shortcutsButton;
void createIcons(); void createIcons();
void retranslateUi(); void retranslateUi();
protected: protected:

View file

@ -21,7 +21,7 @@ GameView::GameView(QGraphicsScene *scene, QWidget *parent)
aCloseMostRecentZoneView = new QAction(this); aCloseMostRecentZoneView = new QAction(this);
aCloseMostRecentZoneView->setShortcuts(settingsCache->shortcuts().getShortcut( aCloseMostRecentZoneView->setShortcuts(settingsCache->shortcuts().getShortcut(
"GameView/aCloseMostRecentZoneView", "Player/aCloseMostRecentZoneView",
QKeySequence("Esc"))); QKeySequence("Esc")));
connect(aCloseMostRecentZoneView, SIGNAL(triggered()), scene, SLOT(closeMostRecentZoneView())); connect(aCloseMostRecentZoneView, SIGNAL(triggered()), scene, SLOT(closeMostRecentZoneView()));
addAction(aCloseMostRecentZoneView); addAction(aCloseMostRecentZoneView);

View file

@ -616,6 +616,7 @@ void Player::retranslateUi()
{ {
aViewGraveyard->setText(tr("&View graveyard")); aViewGraveyard->setText(tr("&View graveyard"));
aViewRfg->setText(tr("&View exile")); aViewRfg->setText(tr("&View exile"));
playerMenu->setTitle(tr("Player \"%1\"").arg(QString::fromStdString(userInfo->name()))); playerMenu->setTitle(tr("Player \"%1\"").arg(QString::fromStdString(userInfo->name())));
graveMenu->setTitle(tr("&Graveyard")); graveMenu->setTitle(tr("&Graveyard"));
rfgMenu->setTitle(tr("&Exile")); rfgMenu->setTitle(tr("&Exile"));
@ -682,14 +683,32 @@ void Player::retranslateUi()
} }
aPlay->setText(tr("&Play")); aPlay->setText(tr("&Play"));
aPlay->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aPlay", QKeySequence()));
aHide->setText(tr("&Hide")); aHide->setText(tr("&Hide"));
aPlayFacedown->setText(tr("Play &Face Down")); aPlayFacedown->setText(tr("Play &Face Down"));
aTap->setText(tr("&Tap")); aTap->setText(tr("&Tap"));
aTap->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aTap", QKeySequence()));
aUntap->setText(tr("&Untap")); aUntap->setText(tr("&Untap"));
aUntap->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aUntap", QKeySequence()));
aDoesntUntap->setText(tr("Toggle &normal untapping")); aDoesntUntap->setText(tr("Toggle &normal untapping"));
aDoesntUntap->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aDoesntUntap", QKeySequence()));
aFlip->setText(tr("&Flip")); aFlip->setText(tr("&Flip"));
aFlip->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aFlip", QKeySequence()));
aPeek->setText(tr("&Peek at card face")); aPeek->setText(tr("&Peek at card face"));
aPeek->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aPeek", QKeySequence()));
aClone->setText(tr("&Clone")); aClone->setText(tr("&Clone"));
aClone->setShortcuts(settingsCache->shortcuts().getShortcut( aClone->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aClone", QKeySequence("Ctrl+J"))); "Player/aClone", QKeySequence("Ctrl+J")));
@ -699,7 +718,12 @@ void Player::retranslateUi()
"Player/aAttach", QKeySequence("Ctrl+A"))); "Player/aAttach", QKeySequence("Ctrl+A")));
aUnattach->setText(tr("Unattac&h")); aUnattach->setText(tr("Unattac&h"));
aUnattach->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aUnattach", QKeySequence()));
aDrawArrow->setText(tr("&Draw arrow...")); aDrawArrow->setText(tr("&Draw arrow..."));
aDrawArrow->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aDrawArrow", QKeySequence()));
aIncP->setText(tr("&Increase power")); aIncP->setText(tr("&Increase power"));
aIncP->setShortcuts(settingsCache->shortcuts().getShortcut( aIncP->setShortcuts(settingsCache->shortcuts().getShortcut(
@ -730,23 +754,70 @@ void Player::retranslateUi()
"Player/aSetPT", QKeySequence("Ctrl+P"))); "Player/aSetPT", QKeySequence("Ctrl+P")));
aSetAnnotation->setText(tr("&Set annotation...")); aSetAnnotation->setText(tr("&Set annotation..."));
aSetAnnotation->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aSetAnnotation", QKeySequence()));
QStringList counterColors; QStringList counterColors;
counterColors.append(tr("Red")); counterColors.append(tr("Red"));
counterColors.append(tr("Yellow")); counterColors.append(tr("Yellow"));
counterColors.append(tr("Green")); counterColors.append(tr("Green"));
for (int i = 0; i < aAddCounter.size(); ++i)
QList<QKeySequence> addCCShortCuts;
addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aCCRed", QKeySequence()));
addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aCCYellow", QKeySequence()));
addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aCCGreen", QKeySequence()));
QList<QKeySequence> removeCCShortCuts;
removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aRCRed", QKeySequence()));
removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aRCYellow", QKeySequence()));
removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aRCGreen", QKeySequence()));
QList<QKeySequence> setCCShortCuts;
setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aSCRed", QKeySequence()));
setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aSCYellow", QKeySequence()));
setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut(
"Player/aSCGreen", QKeySequence()));
for (int i = 0; i < aAddCounter.size(); ++i){
aAddCounter[i]->setText(tr("&Add counter (%1)").arg(counterColors[i])); aAddCounter[i]->setText(tr("&Add counter (%1)").arg(counterColors[i]));
for (int i = 0; i < aRemoveCounter.size(); ++i) aAddCounter[i]->setShortcut(addCCShortCuts[i]);
}
for (int i = 0; i < aRemoveCounter.size(); ++i){
aRemoveCounter[i]->setText(tr("&Remove counter (%1)").arg(counterColors[i])); aRemoveCounter[i]->setText(tr("&Remove counter (%1)").arg(counterColors[i]));
for (int i = 0; i < aSetCounter.size(); ++i) aRemoveCounter[i]->setShortcut(removeCCShortCuts[i]);
}
for (int i = 0; i < aSetCounter.size(); ++i){
aSetCounter[i]->setText(tr("&Set counters (%1)...").arg(counterColors[i])); aSetCounter[i]->setText(tr("&Set counters (%1)...").arg(counterColors[i]));
aSetCounter[i]->setShortcut(setCCShortCuts[i]);
}
aMoveToTopLibrary->setText(tr("&Top of library")); aMoveToTopLibrary->setText(tr("&Top of library"));
aMoveToTopLibrary->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aMoveToTopLibrary", QKeySequence()));
aMoveToBottomLibrary->setText(tr("&Bottom of library")); aMoveToBottomLibrary->setText(tr("&Bottom of library"));
aMoveToBottomLibrary->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aMoveToBottomLibrary", QKeySequence()));
aMoveToHand->setText(tr("&Hand")); aMoveToHand->setText(tr("&Hand"));
aMoveToHand->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aMoveToHand", QKeySequence()));
aMoveToGraveyard->setText(tr("&Graveyard")); aMoveToGraveyard->setText(tr("&Graveyard"));
aMoveToGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut( aMoveToGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aMoveToGraveyard", QKeySequence("Ctrl+Del"))); "Player/aMoveToGraveyard", QKeySequence("Ctrl+Del")));
aMoveToExile->setText(tr("&Exile")); aMoveToExile->setText(tr("&Exile"));
aMoveToExile->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aMoveToExile", QKeySequence()));
QMapIterator<QString, CardZone *> zoneIterator(zones); QMapIterator<QString, CardZone *> zoneIterator(zones);
while (zoneIterator.hasNext()) while (zoneIterator.hasNext())
@ -769,6 +840,9 @@ void Player::setShortcutsActive()
aViewGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut( aViewGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aViewGraveyard", QKeySequence("F4"))); "Player/aViewGraveyard", QKeySequence("F4")));
aViewRfg->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aViewRfg", QKeySequence()));
aDrawCard->setShortcuts(settingsCache->shortcuts().getShortcut( aDrawCard->setShortcuts(settingsCache->shortcuts().getShortcut(
"Player/aDrawCard", QKeySequence("Ctrl+D"))); "Player/aDrawCard", QKeySequence("Ctrl+D")));
@ -838,14 +912,11 @@ void Player::initSayMenu()
QSettings settings; QSettings settings;
settings.beginGroup("messages"); settings.beginGroup("messages");
int count = settings.value("count", 0).toInt(); int count = settings.value("count", 0).toInt();
QString base = settingsCache->shortcuts().getSingleShortcut(
"Player/say", QKeySequence("Ctrl")).toString();
base = base.append("+");
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
QAction *newAction = new QAction(settings.value(QString("msg%1").arg(i)).toString(), this); QAction *newAction = new QAction(settings.value(QString("msg%1").arg(i)).toString(), this);
if (i <= 10){ if (i <= 10){
newAction->setShortcut(QKeySequence(base + QString::number((i + 1) % 10))); newAction->setShortcut(QKeySequence("Ctrl+" + QString::number((i + 1) % 10)));
} }
connect(newAction, SIGNAL(triggered()), this, SLOT(actSayMessage())); connect(newAction, SIGNAL(triggered()), this, SLOT(actSayMessage()));
sayMenu->addAction(newAction); sayMenu->addAction(newAction);
@ -861,10 +932,6 @@ void Player::setDeck(const DeckLoader &_deck)
predefinedTokens.clear(); predefinedTokens.clear();
InnerDecklistNode *tokenZone = dynamic_cast<InnerDecklistNode *>(deck->getRoot()->findChild("tokens")); InnerDecklistNode *tokenZone = dynamic_cast<InnerDecklistNode *>(deck->getRoot()->findChild("tokens"));
QString base = settingsCache->shortcuts().getSingleShortcut(
"Player/token", QKeySequence("Alt")).toString();
base = base.append("+");
if (tokenZone) if (tokenZone)
for (int i = 0; i < tokenZone->size(); ++i) { for (int i = 0; i < tokenZone->size(); ++i) {
const QString tokenName = tokenZone->at(i)->getName(); const QString tokenName = tokenZone->at(i)->getName();
@ -872,7 +939,7 @@ void Player::setDeck(const DeckLoader &_deck)
QAction *a = createPredefinedTokenMenu->addAction(tokenName); QAction *a = createPredefinedTokenMenu->addAction(tokenName);
if (i < 10) if (i < 10)
{ {
a->setShortcut(QKeySequence(base + QString::number((i + 1) % 10))); a->setShortcut(QKeySequence("Alt+" + QString::number((i + 1) % 10)));
} }
connect(a, SIGNAL(triggered()), this, SLOT(actCreatePredefinedToken())); connect(a, SIGNAL(triggered()), this, SLOT(actCreatePredefinedToken()));
} }

View file

@ -0,0 +1,150 @@
#include "secuenceedit.h"
#include "../settingscache.h"
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QEvent>
#include <QKeyEvent>
#include <QToolTip>
SecuenceEdit::SecuenceEdit(QString name, QWidget *parent) : QWidget(parent)
{
this->shorcutName = name;
currentKey = 0;
maxKeys = 4;
keys = 0;
valid = false;
lineEdit = new QLineEdit(this);
clearButton = new QPushButton("", this);
defaultButton = new QPushButton("", this);
lineEdit->setMinimumWidth(100);
clearButton->setMaximumWidth(lineEdit->height());
defaultButton->setMaximumWidth(lineEdit->height());
clearButton->setIcon(QIcon(":/resources/icon_clearsearch.svg"));
defaultButton->setIcon(QIcon(":/resources/icon_update.png"));
QHBoxLayout *layout = new QHBoxLayout(this);
layout->setContentsMargins(0,0,0,0);
layout->setSpacing(0);
layout->addWidget(lineEdit);
layout->addWidget(clearButton);
layout->addWidget(defaultButton);
connect(clearButton,SIGNAL(clicked()),this,SLOT(removeLastShortcut()));
connect(defaultButton,SIGNAL(clicked()),this,SLOT(restoreDefault()));
lineEdit->installEventFilter(this);
lineEdit->setText(settingsCache->shortcuts().getShortcutString(name));
}
QString SecuenceEdit::getSecuence()
{
return lineEdit->text();
}
void SecuenceEdit::removeLastShortcut()
{
QString secuences = lineEdit->text();
if(!secuences.isEmpty())
{
if(secuences.lastIndexOf(";") > 0){
QString valid = secuences.left(secuences.lastIndexOf(";"));
lineEdit->setText(valid);
}
else
lineEdit->clear();
updateSettings();
}
}
void SecuenceEdit::restoreDefault()
{
lineEdit->setText(settingsCache->shortcuts().getDefaultShortcutString(shorcutName));
updateSettings();
}
bool SecuenceEdit::eventFilter(QObject *, QEvent * event)
{
if(event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease)
{
QKeyEvent * keyEvent = (QKeyEvent *) event;
if(event->type() == QEvent::KeyPress && !keyEvent->isAutoRepeat())
processKey(keyEvent);
else if (event->type() == QEvent::KeyRelease && !keyEvent->isAutoRepeat())
finishShortcut();
return true;
}
return false;
}
void SecuenceEdit::processKey(QKeyEvent* e)
{
int key = e->key();
if(key != Qt::Key_Control && key != Qt::Key_Shift
&& key != Qt::Key_Meta && key != Qt::Key_Alt)
{
valid = true;
key |= translateModifiers(e->modifiers(), e->text());
}
keys = key;
currentKey++;
if(currentKey >= key)
finishShortcut();
}
int SecuenceEdit::translateModifiers(Qt::KeyboardModifiers state, const QString &text)
{
int result = 0;
// The shift modifier only counts when it is not used to type a symbol
// that is only reachable using the shift key anyway
if ((state & Qt::ShiftModifier) && (text.isEmpty() ||
!text.at(0).isPrint() ||
text.at(0).isLetterOrNumber() ||
text.at(0).isSpace()))
result |= Qt::SHIFT;
if (state & Qt::ControlModifier)
result |= Qt::CTRL;
if (state & Qt::MetaModifier)
result |= Qt::META;
if (state & Qt::AltModifier)
result |= Qt::ALT;
return result;
}
void SecuenceEdit::finishShortcut()
{
QKeySequence secuence(keys);
if(!secuence.isEmpty() && valid)
{
QString secuenceString = secuence.toString();
if(settingsCache->shortcuts().isValid(shorcutName,secuenceString))
{
if(!lineEdit->text().isEmpty())
{
if(lineEdit->text().contains(secuenceString))
return;
lineEdit->setText(lineEdit->text() + ";");
}
lineEdit->setText(lineEdit->text() + secuenceString);
}
else
{
QToolTip::showText(lineEdit->mapToGlobal(QPoint()), tr("Shortcut already in use"));
}
}
currentKey = 0;
keys = 0;
valid = false;
updateSettings();
}
void SecuenceEdit::updateSettings()
{
settingsCache->shortcuts().setShortcuts(shorcutName,lineEdit->text());
}

View file

@ -0,0 +1,40 @@
#ifndef SECUENCEEDIT_H
#define SECUENCEEDIT_H
#include <QWidget>
#include <QKeySequence>
class QLineEdit;
class QPushButton;
class QEvent;
class SecuenceEdit : public QWidget
{
Q_OBJECT
public:
SecuenceEdit(QString shorcutName, QWidget *parent = 0);
QString getSecuence();
signals:
private slots:
void removeLastShortcut();
void restoreDefault();
protected:
bool eventFilter(QObject *, QEvent *event);
private:
QString shorcutName;
QLineEdit *lineEdit;
QPushButton *clearButton;
QPushButton *defaultButton;
int keys;
int currentKey;
int maxKeys;
bool valid;
void processKey(QKeyEvent *e);
int translateModifiers(Qt::KeyboardModifiers state, const QString &text);
void finishShortcut();
void updateSettings();
};
#endif // SECUENCEEDIT_H

View file

@ -0,0 +1,18 @@
#include "shortcutstab.h"
#include "ui_shortcutstab.h"
ShortcutsTab::ShortcutsTab() :
ui(new Ui::shortcutsTab)
{
ui->setupUi(this);
}
void ShortcutsTab::retranslateUi()
{
ui->retranslateUi(this);
}
ShortcutsTab::~ShortcutsTab()
{
delete ui;
}

View file

@ -0,0 +1,25 @@
#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:
Ui::shortcutsTab *ui;
};
#endif // SHORTCUTSTAB_H

View file

@ -1,24 +1,18 @@
#include "shortcutssettings.h" #include "shortcutssettings.h"
#include <QFile>
#include <QDebug>
QList<QKeySequence> ShortcutsSettings::parseSecuenceString(QString stringSecuence)
{
QStringList secuences = stringSecuence.split(";");
QList<QKeySequence> secuenceList;
for(QStringList::const_iterator ss = secuences.cbegin(); ss != secuences.cend(); ++ss)
{
secuenceList.append(QKeySequence(*ss, QKeySequence::PortableText));
}
return secuenceList;
}
ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QObject(parent) ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QObject(parent)
{ {
this->settingsFilePath = settingsPath; this->settingsFilePath = settingsPath;
this->settingsFilePath.append("shortcuts.ini"); this->settingsFilePath.append("shortcuts.ini");
fillDefaultShorcuts();
shortCuts = QMap<QString,QList<QKeySequence> >(defaultShortCuts);
bool exists = QFile(settingsFilePath).exists();
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
if(exists){
shortCutsFile.beginGroup("Custom"); shortCutsFile.beginGroup("Custom");
const QStringList customKeys = shortCutsFile.allKeys(); const QStringList customKeys = shortCutsFile.allKeys();
for(QStringList::const_iterator it = customKeys.cbegin(); it != customKeys.cend(); ++it) for(QStringList::const_iterator it = customKeys.cbegin(); it != customKeys.cend(); ++it)
@ -38,6 +32,7 @@ ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QO
defaultShortCuts.insert(*it, secuenceList); defaultShortCuts.insert(*it, secuenceList);
} }
shortCutsFile.endGroup(); shortCutsFile.endGroup();
}
} }
QList<QKeySequence> ShortcutsSettings::getShortcut(QString name, QList<QKeySequence> defaultShortCut) QList<QKeySequence> ShortcutsSettings::getShortcut(QString name, QList<QKeySequence> defaultShortCut)
@ -66,9 +61,14 @@ QKeySequence ShortcutsSettings::getSingleShortcut(QString name, QKeySequence def
return getShortcut(name,defaultShortCut).at(0); return getShortcut(name,defaultShortCut).at(0);
} }
QList<QKeySequence> ShortcutsSettings::getDefaultShortCut(QString name) QString ShortcutsSettings::getDefaultShortcutString(QString name)
{ {
return defaultShortCuts.value(name); return stringifySecuence(defaultShortCuts.value(name));
}
QString ShortcutsSettings::getShortcutString(QString name)
{
return stringifySecuence(shortCuts.value(name));
} }
QString ShortcutsSettings::stringifySecuence(QList<QKeySequence> secuence) const QString ShortcutsSettings::stringifySecuence(QList<QKeySequence> secuence) const
@ -84,6 +84,18 @@ QString ShortcutsSettings::stringifySecuence(QList<QKeySequence> secuence) const
return stringSecuence; return stringSecuence;
} }
QList<QKeySequence> ShortcutsSettings::parseSecuenceString(QString stringSecuence)
{
QStringList secuences = stringSecuence.split(";");
QList<QKeySequence> secuenceList;
for(QStringList::const_iterator ss = secuences.cbegin(); ss != secuences.cend(); ++ss)
{
secuenceList.append(QKeySequence(*ss, QKeySequence::PortableText));
}
return secuenceList;
}
void ShortcutsSettings::setShortcuts(QString name, QList<QKeySequence> secuence) void ShortcutsSettings::setShortcuts(QString name, QList<QKeySequence> secuence)
{ {
shortCuts[name] = secuence; shortCuts[name] = secuence;
@ -100,3 +112,136 @@ void ShortcutsSettings::setShortcuts(QString name, QKeySequence secuence)
setShortcuts(name, QList<QKeySequence>() << secuence); setShortcuts(name, QList<QKeySequence>() << secuence);
} }
void ShortcutsSettings::setShortcuts(QString name, QString secuences)
{
setShortcuts(name,parseSecuenceString(secuences));
}
bool ShortcutsSettings::isValid(QString name, QString secuences)
{
QString checkKey = name.left(name.indexOf("/"));
QStringList stringSecuences = secuences.split(";");
QList<QString> allKeys = shortCuts.keys();
for(int i=0; i < allKeys.size(); i++){
QString key = allKeys.at(i);
if(key.startsWith(checkKey) || key.startsWith("MainWindow") || checkKey.startsWith("MainWindow"))
{
QString storedSecuence = stringifySecuence(shortCuts.value(key));
for(int j = 0; j < stringSecuences.size(); j++)
{
if(storedSecuence.contains(stringSecuences.at(j)))
return false;
}
}
}
return true;
}
void ShortcutsSettings::fillDefaultShorcuts()
{
defaultShortCuts["MainWindow/aCheckCardUpdates"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aConnect"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aDeckEditor"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aDisconnect"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aExit"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aFullScreen"] = parseSecuenceString("Ctrl+F");
defaultShortCuts["MainWindow/aRegister"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aSettings"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aSinglePlayer"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aWatchReplay"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aAnalyzeDeck"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterAll"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterOne"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClose"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aDecrement"] = parseSecuenceString("-");
defaultShortCuts["TabDeckEditor/aEditSets"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aEditTokens"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aIncrement"] = parseSecuenceString("+");
defaultShortCuts["TabDeckEditor/aLoadDeck"] = parseSecuenceString("Ctrl+O");
defaultShortCuts["TabDeckEditor/aLoadDeckFromClipboard"] = parseSecuenceString("Ctrl+V");
defaultShortCuts["TabDeckEditor/aNewDeck"] = parseSecuenceString("Ctrl+N");
defaultShortCuts["TabDeckEditor/aOpenCustomFolder"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aPrintDeck"] = parseSecuenceString("Ctrl+P");
defaultShortCuts["TabDeckEditor/aRemoveCard"] = parseSecuenceString("Del");
defaultShortCuts["TabDeckEditor/aResetLayout"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeck"] = parseSecuenceString("Ctrl+S");
defaultShortCuts["TabDeckEditor/aSaveDeckAs"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeckToClipboard"] = parseSecuenceString("Ctrl+C");
defaultShortCuts["DeckViewContainer/loadLocalButton"] = parseSecuenceString("Ctrl+O");
defaultShortCuts["DeckViewContainer/loadRemoteButton"] = parseSecuenceString("Ctrl+Alt+O");
defaultShortCuts["Player/aDec"] = parseSecuenceString("F11");
defaultShortCuts["Player/aInc"] = parseSecuenceString("F12");
defaultShortCuts["Player/aSet"] = parseSecuenceString("Ctrl+L");
defaultShortCuts["Player/aCloseMostRecentZoneView"] = parseSecuenceString("Esc");
defaultShortCuts["Player/IncP"] = parseSecuenceString("Ctrl++");
defaultShortCuts["Player/aAlwaysRevealTopCard"] = parseSecuenceString("Ctrl+N");
defaultShortCuts["Player/aAttach"] = parseSecuenceString("Ctrl+A");
defaultShortCuts["Player/aCCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aCCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aCCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aClone"] = parseSecuenceString("Ctrl+J");
defaultShortCuts["Player/aCreateAnotherToken"] = parseSecuenceString("Ctrl+G");
defaultShortCuts["Player/aCreateToken"] = parseSecuenceString("Ctrl+T");
defaultShortCuts["Player/aDecP"] = parseSecuenceString("Ctrl+-");
defaultShortCuts["Player/aDecPT"] = parseSecuenceString("Ctrl+Alt+-");
defaultShortCuts["Player/aDecT"] = parseSecuenceString("Alt+-");
defaultShortCuts["Player/aDoesntUntap"] = parseSecuenceString("");
defaultShortCuts["Player/aDrawArrow"] = parseSecuenceString("");
defaultShortCuts["Player/aDrawCard"] = parseSecuenceString("Ctrl+D");
defaultShortCuts["Player/aDrawCards"] = parseSecuenceString("Ctrl+E");
defaultShortCuts["Player/aFlip"] = parseSecuenceString("");
defaultShortCuts["Player/aIncPT"] = parseSecuenceString("Ctrl+Alt++");
defaultShortCuts["Player/aIncT"] = parseSecuenceString("Alt++");
defaultShortCuts["Player/aMoveToBottomLibrary"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToExile"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToGraveyard"] = parseSecuenceString("Ctrl+Del");
defaultShortCuts["Player/aMoveToHand"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToTopLibrary"] = parseSecuenceString("");
defaultShortCuts["Player/aMulligan"] = parseSecuenceString("Ctrl+M");
defaultShortCuts["Player/aPeek"] = parseSecuenceString("");
defaultShortCuts["Player/aPlay"] = parseSecuenceString("");
defaultShortCuts["Player/aRCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aRCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aRCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aRollDie"] = parseSecuenceString("Ctrl+I");
defaultShortCuts["Player/aSCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aSCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aSCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aSetAnnotation"] = parseSecuenceString("");
defaultShortCuts["Player/aSetPT"] = parseSecuenceString("Ctrl+P");
defaultShortCuts["Player/aShuffle"] = parseSecuenceString("Ctrl+S");
defaultShortCuts["Player/aTap"] = parseSecuenceString("");
defaultShortCuts["Player/aUnattach"] = parseSecuenceString("");
defaultShortCuts["Player/aUndoDraw"] = parseSecuenceString("Ctrl+Shift+D");
defaultShortCuts["Player/aUntap"] = parseSecuenceString("");
defaultShortCuts["Player/aUntapAll"] = parseSecuenceString("Ctrl+U");
defaultShortCuts["Player/aViewGraveyard"] = parseSecuenceString("F4");
defaultShortCuts["Player/aViewLibrary"] = parseSecuenceString("F3");
defaultShortCuts["Player/aViewRfg"] = parseSecuenceString("");
defaultShortCuts["Player/aViewSideboard"] = parseSecuenceString("Ctrl+F3");
defaultShortCuts["Player/aViewTopCards"] = parseSecuenceString("Ctrl+W");
defaultShortCuts["Player/aConcede"] = parseSecuenceString("F2");
defaultShortCuts["Player/aLeaveGame"] = parseSecuenceString("Ctrl+Q");
defaultShortCuts["Player/aNextPhase"] = parseSecuenceString("Ctrl+Space;Tab");
defaultShortCuts["Player/aNextTurn"] = parseSecuenceString("Ctrl+Return;Ctrl+Enter");
defaultShortCuts["Player/aRemoveLocalArrows"] = parseSecuenceString("Ctrl+R");
defaultShortCuts["Player/aRotateViewCCW"] = parseSecuenceString("Ctrl+[");
defaultShortCuts["Player/aRotateViewCW"] = parseSecuenceString("Ctrl+]");
defaultShortCuts["Player/phase0"] = parseSecuenceString("F5");
defaultShortCuts["Player/phase1"] = parseSecuenceString("");
defaultShortCuts["Player/phase10"] = parseSecuenceString("F10");
defaultShortCuts["Player/phase2"] = parseSecuenceString("F6");
defaultShortCuts["Player/phase3"] = parseSecuenceString("F7");
defaultShortCuts["Player/phase4"] = parseSecuenceString("F8");
defaultShortCuts["Player/phase5"] = parseSecuenceString("");
defaultShortCuts["Player/phase6"] = parseSecuenceString("");
defaultShortCuts["Player/phase7"] = parseSecuenceString("");
defaultShortCuts["Player/phase8"] = parseSecuenceString("");
defaultShortCuts["Player/phase9"] = parseSecuenceString("F9");
}

View file

@ -16,19 +16,20 @@ public:
QList<QKeySequence> getShortcut(QString name, QList<QKeySequence> defaultShortCut); QList<QKeySequence> getShortcut(QString name, QList<QKeySequence> defaultShortCut);
QList<QKeySequence> getShortcut(QString name, QKeySequence defaultShortCut); QList<QKeySequence> getShortcut(QString name, QKeySequence defaultShortCut);
QKeySequence getSingleShortcut(QString name, QKeySequence defaultShortCut); QKeySequence getSingleShortcut(QString name, QKeySequence defaultShortCut);
QList<QKeySequence> getDefaultShortCut(QString name);
QString getDefaultShortcutString(QString name);
QString getShortcutString(QString name);
void setShortcuts(QString name, QList<QKeySequence> secuence); void setShortcuts(QString name, QList<QKeySequence> secuence);
void setShortcuts(QString name, QKeySequence secuence); void setShortcuts(QString name, QKeySequence secuence);
void setShortcuts(QString name, QString secuences);
signals: bool isValid(QString name, QString secuences);
public slots:
private: private:
QString settingsFilePath; QString settingsFilePath;
QMap<QString,QList<QKeySequence> > shortCuts; QMap<QString,QList<QKeySequence> > shortCuts;
QMap<QString,QList<QKeySequence> > defaultShortCuts; QMap<QString,QList<QKeySequence> > defaultShortCuts;
void fillDefaultShorcuts();
QString stringifySecuence(QList<QKeySequence> secuence) const; QString stringifySecuence(QList<QKeySequence> secuence) const;
QList<QKeySequence> parseSecuenceString(QString stringSecuence); QList<QKeySequence> parseSecuenceString(QString stringSecuence);

View file

@ -254,26 +254,28 @@ void TabDeckEditor::createFiltersDock()
void TabDeckEditor::createMenus() void TabDeckEditor::createMenus()
{ {
aNewDeck = new QAction(QString(), this); aNewDeck = new QAction(QString(), this);
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
aNewDeck->setShortcuts(settingsCache->shortcuts().getShortcut( aNewDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aNewDeck", "TabDeckEditor/aNewDeck",
QKeySequence::New)); QKeySequence::New));
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
aLoadDeck = new QAction(QString(), this); aLoadDeck = new QAction(QString(), this);
connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck()));
aLoadDeck->setShortcuts(settingsCache->shortcuts().getShortcut( aLoadDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aLoadDeck", "TabDeckEditor/aLoadDeck",
QKeySequence::Open)); QKeySequence::Open));
connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck()));
aSaveDeck = new QAction(QString(), this); aSaveDeck = new QAction(QString(), this);
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
aSaveDeck->setShortcuts(settingsCache->shortcuts().getShortcut( aSaveDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aSaveDeck", "TabDeckEditor/aSaveDeck",
QKeySequence::Save)); QKeySequence::Save));
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
aSaveDeckAs = new QAction(QString(), this); aSaveDeckAs = new QAction(QString(), this);
// aSaveDeckAs->setShortcuts(QKeySequence::SaveAs);
connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs())); connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs()));
aSaveDeckAs->setShortcuts(QKeySequence::SaveAs);
aSaveDeckAs->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aSaveDeckAs", QKeySequence()));
aLoadDeckFromClipboard = new QAction(QString(), this); aLoadDeckFromClipboard = new QAction(QString(), this);
connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard())); connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard()));
@ -288,24 +290,39 @@ void TabDeckEditor::createMenus()
QKeySequence::Copy)); QKeySequence::Copy));
aPrintDeck = new QAction(QString(), this); aPrintDeck = new QAction(QString(), this);
connect(aPrintDeck, SIGNAL(triggered()), this, SLOT(actPrintDeck()));
aPrintDeck->setShortcuts(settingsCache->shortcuts().getShortcut( aPrintDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aPrintDeck",QKeySequence::Print)); "TabDeckEditor/aPrintDeck",QKeySequence::Print));
connect(aPrintDeck, SIGNAL(triggered()), this, SLOT(actPrintDeck()));
aAnalyzeDeck = new QAction(QString(), this); aAnalyzeDeck = new QAction(QString(), this);
connect(aAnalyzeDeck, SIGNAL(triggered()), this, SLOT(actAnalyzeDeck())); connect(aAnalyzeDeck, SIGNAL(triggered()), this, SLOT(actAnalyzeDeck()));
aAnalyzeDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aAnalyzeDeck", QKeySequence()));
aClose = new QAction(QString(), this); aClose = new QAction(QString(), this);
connect(aClose, SIGNAL(triggered()), this, SLOT(closeRequest())); connect(aClose, SIGNAL(triggered()), this, SLOT(closeRequest()));
aClose->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aClose", QKeySequence()));
aOpenCustomFolder = new QAction(QString(), this); aOpenCustomFolder = new QAction(QString(), this);
connect(aOpenCustomFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomFolder())); connect(aOpenCustomFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomFolder()));
aOpenCustomFolder->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aOpenCustomFolder", QKeySequence()));
aEditSets = new QAction(QString(), this); aEditSets = new QAction(QString(), this);
connect(aEditSets, SIGNAL(triggered()), this, SLOT(actEditSets())); connect(aEditSets, SIGNAL(triggered()), this, SLOT(actEditSets()));
aEditSets->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aEditSets", QKeySequence()));
aEditTokens = new QAction(QString(), this); aEditTokens = new QAction(QString(), this);
connect(aEditTokens, SIGNAL(triggered()), this, SLOT(actEditTokens())); connect(aEditTokens, SIGNAL(triggered()), this, SLOT(actEditTokens()));
aEditTokens->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aEditTokens", QKeySequence()));
aResetLayout = new QAction(QString(), this); aResetLayout = new QAction(QString(), this);
connect(aResetLayout,SIGNAL(triggered()),this,SLOT(restartLayout())); connect(aResetLayout,SIGNAL(triggered()),this,SLOT(restartLayout()));
aResetLayout->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aResetLayout", QKeySequence()));
deckMenu = new QMenu(this); deckMenu = new QMenu(this);
deckMenu->addAction(aNewDeck); deckMenu->addAction(aNewDeck);
@ -328,10 +345,14 @@ void TabDeckEditor::createMenus()
aClearFilterAll = new QAction(QString(), this); aClearFilterAll = new QAction(QString(), this);
aClearFilterAll->setIcon(QIcon(":/resources/icon_clearsearch.svg")); aClearFilterAll->setIcon(QIcon(":/resources/icon_clearsearch.svg"));
connect(aClearFilterAll, SIGNAL(triggered()), this, SLOT(actClearFilterAll())); connect(aClearFilterAll, SIGNAL(triggered()), this, SLOT(actClearFilterAll()));
aClearFilterAll->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aClearFilterAll", QKeySequence()));
aClearFilterOne = new QAction(QString(), this); aClearFilterOne = new QAction(QString(), this);
aClearFilterOne->setIcon(QIcon(":/resources/decrement.svg")); aClearFilterOne->setIcon(QIcon(":/resources/decrement.svg"));
connect(aClearFilterOne, SIGNAL(triggered()), this, SLOT(actClearFilterOne())); connect(aClearFilterOne, SIGNAL(triggered()), this, SLOT(actClearFilterOne()));
aClearFilterOne->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabDeckEditor/aClearFilterOne", QKeySequence()));
dbMenu = new QMenu(this); dbMenu = new QMenu(this);
dbMenu->addAction(aEditSets); dbMenu->addAction(aEditSets);

View file

@ -473,12 +473,17 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
QAction *temp = new QAction(QString(), this); QAction *temp = new QAction(QString(), this);
connect(temp, SIGNAL(triggered()), this, SLOT(actPhaseAction())); connect(temp, SIGNAL(triggered()), this, SLOT(actPhaseAction()));
switch (i) { switch (i) {
case 0: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase0" ,QKeySequence("F5"))); break; case 0: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase0" ,QKeySequence("F5"))); break;
case 2: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase2" ,QKeySequence("F6"))); break; case 1: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase1" ,QKeySequence())); break;
case 3: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase3" ,QKeySequence("F7"))); break; case 2: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase2" ,QKeySequence("F6"))); break;
case 4: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase4" ,QKeySequence("F8"))); break; case 3: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase3" ,QKeySequence("F7"))); break;
case 9: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase9" ,QKeySequence("F9"))); break; case 4: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase4" ,QKeySequence("F8"))); break;
case 10:temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase10" ,QKeySequence("F10"))); break; case 5: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase5" ,QKeySequence())); break;
case 6: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase6" ,QKeySequence())); break;
case 7: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase7" ,QKeySequence())); break;
case 8: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase8" ,QKeySequence())); break;
case 9: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase9" ,QKeySequence("F9"))); break;
case 10:temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase10" ,QKeySequence("F10"))); break;
default: ; default: ;
} }
phasesMenu->addAction(temp); phasesMenu->addAction(temp);
@ -550,7 +555,7 @@ void TabGame::retranslateUi()
if (aNextPhase) { if (aNextPhase) {
aNextPhase->setText(tr("Next &phase")); aNextPhase->setText(tr("Next &phase"));
aNextPhase->setShortcuts(settingsCache->shortcuts().getShortcut( aNextPhase->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aNextPhase", "Player/aNextPhase",
QList<QKeySequence>() QList<QKeySequence>()
<< QKeySequence("Ctrl+Space") << QKeySequence("Ctrl+Space")
<< QKeySequence("Tab"))); << QKeySequence("Tab")));
@ -558,7 +563,7 @@ void TabGame::retranslateUi()
if (aNextTurn) { if (aNextTurn) {
aNextTurn->setText(tr("Next &turn")); aNextTurn->setText(tr("Next &turn"));
aNextTurn->setShortcuts(settingsCache->shortcuts().getShortcut( aNextTurn->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aNextTurn", "Player/aNextTurn",
QList<QKeySequence>() QList<QKeySequence>()
<< QKeySequence("Ctrl+Return") << QKeySequence("Ctrl+Return")
<< QKeySequence("Ctrl+Enter"))); << QKeySequence("Ctrl+Enter")));
@ -566,19 +571,19 @@ void TabGame::retranslateUi()
if (aRemoveLocalArrows) { if (aRemoveLocalArrows) {
aRemoveLocalArrows->setText(tr("&Remove all local arrows")); aRemoveLocalArrows->setText(tr("&Remove all local arrows"));
aRemoveLocalArrows->setShortcuts(settingsCache->shortcuts().getShortcut( aRemoveLocalArrows->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aRemoveLocalArrows", "Player/aRemoveLocalArrows",
QKeySequence("Ctrl+R"))); QKeySequence("Ctrl+R")));
} }
if (aRotateViewCW) { if (aRotateViewCW) {
aRotateViewCW->setText(tr("Rotate View Cl&ockwise")); aRotateViewCW->setText(tr("Rotate View Cl&ockwise"));
aRotateViewCW->setShortcuts(settingsCache->shortcuts().getShortcut( aRotateViewCW->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aRotateViewCW", "Player/aRotateViewCW",
QKeySequence("Ctrl+]"))); QKeySequence("Ctrl+]")));
} }
if (aRotateViewCCW) { if (aRotateViewCCW) {
aRotateViewCCW->setText(tr("Rotate View Co&unterclockwise")); aRotateViewCCW->setText(tr("Rotate View Co&unterclockwise"));
aRotateViewCCW->setShortcuts(settingsCache->shortcuts().getShortcut( aRotateViewCCW->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aRotateViewCCW", "Player/aRotateViewCCW",
QKeySequence("Ctrl+["))); QKeySequence("Ctrl+[")));
} }
if (aGameInfo) if (aGameInfo)
@ -586,19 +591,19 @@ void TabGame::retranslateUi()
if (aConcede) { if (aConcede) {
aConcede->setText(tr("&Concede")); aConcede->setText(tr("&Concede"));
aConcede->setShortcuts(settingsCache->shortcuts().getShortcut( aConcede->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aRotateViewCCW", "Player/aConcede",
QKeySequence("F2"))); QKeySequence("F2")));
} }
if (aLeaveGame) { if (aLeaveGame) {
aLeaveGame->setText(tr("&Leave game")); aLeaveGame->setText(tr("&Leave game"));
aLeaveGame->setShortcuts(settingsCache->shortcuts().getShortcut( aLeaveGame->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aLeaveGame", "Player/aLeaveGame",
QKeySequence("Ctrl+Q"))); QKeySequence("Ctrl+Q")));
} }
if (aCloseReplay) { if (aCloseReplay) {
aCloseReplay->setText(tr("C&lose replay")); aCloseReplay->setText(tr("C&lose replay"));
aCloseReplay->setShortcuts(settingsCache->shortcuts().getShortcut( aCloseReplay->setShortcuts(settingsCache->shortcuts().getShortcut(
"TabGame/aCloseReplay", "Player/aCloseReplay",
QKeySequence("Ctrl+Q"))); QKeySequence("Ctrl+Q")));
} }

View file

@ -453,24 +453,54 @@ void MainWindow::retranslateUi()
setClientStatusTitle(); setClientStatusTitle();
aConnect->setText(tr("&Connect...")); aConnect->setText(tr("&Connect..."));
aConnect->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aConnect", QKeySequence()));
aDisconnect->setText(tr("&Disconnect")); aDisconnect->setText(tr("&Disconnect"));
aDisconnect->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aDisconnect", QKeySequence()));
aSinglePlayer->setText(tr("Start &local game...")); aSinglePlayer->setText(tr("Start &local game..."));
aSinglePlayer->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aSinglePlayer", QKeySequence()));
aWatchReplay->setText(tr("&Watch replay...")); aWatchReplay->setText(tr("&Watch replay..."));
aWatchReplay->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aWatchReplay", QKeySequence()));
aDeckEditor->setText(tr("&Deck editor")); aDeckEditor->setText(tr("&Deck editor"));
aDeckEditor->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aDeckEditor", QKeySequence()));
aFullScreen->setText(tr("&Full screen")); aFullScreen->setText(tr("&Full screen"));
aFullScreen->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aFullScreen", QKeySequence("Ctrl+F"))); aFullScreen->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aFullScreen", QKeySequence("Ctrl+F")));
aRegister->setText(tr("&Register to server...")); aRegister->setText(tr("&Register to server..."));
aRegister->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aRegister", QKeySequence()));
aSettings->setText(tr("&Settings...")); aSettings->setText(tr("&Settings..."));
aSettings->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aSettings", QKeySequence()));
aExit->setText(tr("&Exit")); aExit->setText(tr("&Exit"));
aExit->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aExit", QKeySequence()));
#if defined(__APPLE__) /* For OSX */ #if defined(__APPLE__) /* For OSX */
cockatriceMenu->setTitle(tr("A&ctions")); cockatriceMenu->setTitle(tr("A&ctions"));
#else #else
cockatriceMenu->setTitle(tr("&Cockatrice")); cockatriceMenu->setTitle(tr("&Cockatrice"));
#endif #endif
aAbout->setText(tr("&About Cockatrice")); aAbout->setText(tr("&About Cockatrice"));
helpMenu->setTitle(tr("&Help")); helpMenu->setTitle(tr("&Help"));
aCheckCardUpdates->setText(tr("Check for card updates...")); aCheckCardUpdates->setText(tr("Check for card updates..."));
aCheckCardUpdates->setShortcuts(settingsCache->shortcuts().getShortcut(
"MainWindow/aCheckCardUpdates",
QKeySequence()));
tabSupervisor->retranslateUi(); tabSupervisor->retranslateUi();
} }