diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index bee7311d..c91e693d 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -94,6 +94,9 @@ SET(cockatrice_SOURCES src/qt-json/json.cpp src/soundengine.cpp src/pending_command.cpp + src/shortcutssettings.cpp + src/sequenceEdit/sequenceedit.cpp + src/sequenceEdit/shortcutstab.cpp ${VERSION_STRING_CPP} ) diff --git a/cockatrice/cockatrice.qrc b/cockatrice/cockatrice.qrc index ebf5f44e..2e66b2df 100644 --- a/cockatrice/cockatrice.qrc +++ b/cockatrice/cockatrice.qrc @@ -1,337 +1,329 @@ - - resources/back.svg - resources/lock.svg - resources/icon_delete.svg - resources/icon_tab_changed.svg - resources/icon_config_general.svg - resources/icon_config_appearance.svg - resources/icon_config_interface.svg - resources/icon_config_messages.svg - resources/icon_config_deckeditor.svg - resources/icon_config_sound.svg - resources/phases/icon_phase_untap.svg - resources/phases/icon_phase_upkeep.svg - resources/phases/icon_phase_draw.svg - resources/phases/icon_phase_main1.svg - resources/phases/icon_phase_combat_start.svg - resources/phases/icon_phase_combat_attackers.svg - resources/phases/icon_phase_combat_blockers.svg - resources/phases/icon_phase_combat_damage.svg - resources/phases/icon_phase_combat_end.svg - resources/phases/icon_phase_main2.svg - resources/phases/icon_phase_cleanup.svg - resources/phases/icon_phase_nextturn.svg - resources/icon_settings.svg - resources/hand.svg - resources/pencil.svg - resources/icon_search_black.svg - resources/icon_clearsearch.svg - resources/icon_update.png - resources/icon_view.svg - resources/hr.jpg - resources/cockatrice.svg - - resources/add_to_sideboard.svg - resources/decrement.svg - resources/increment.svg - resources/remove_row.svg - resources/arrow_left_green.svg - resources/arrow_right_green.svg - - resources/arrow_top_green.svg - resources/arrow_up_green.svg - resources/arrow_down_green.svg - resources/arrow_bottom_green.svg - - resources/icon_ready_start.svg - resources/icon_not_ready_start.svg - resources/icon_conceded.svg - resources/icon_player.svg - resources/icon_spectator.svg - - resources/replay_start.svg - resources/replay_fastforward.svg - resources/replay_pause.svg - - resources/genders/male.svg - resources/genders/female.svg - resources/genders/unknown.svg - - resources/countries/ad.svg - resources/countries/ae.svg - resources/countries/af.svg - resources/countries/ag.svg - resources/countries/ai.svg - resources/countries/al.svg - resources/countries/am.svg - resources/countries/ao.svg - resources/countries/aq.svg - resources/countries/ar.svg - resources/countries/as.svg - resources/countries/at.svg - resources/countries/au.svg - resources/countries/aw.svg - resources/countries/ax.svg - resources/countries/az.svg - resources/countries/ba.svg - resources/countries/bb.svg - resources/countries/bd.svg - resources/countries/be.svg - resources/countries/bf.svg - resources/countries/bg.svg - resources/countries/bh.svg - resources/countries/bi.svg - resources/countries/bj.svg - resources/countries/bl.svg - resources/countries/bm.svg - resources/countries/bn.svg - resources/countries/bo.svg - resources/countries/bq.svg - resources/countries/br.svg - resources/countries/bs.svg - resources/countries/bt.svg - resources/countries/bv.svg - resources/countries/bw.svg - resources/countries/by.svg - resources/countries/bz.svg - resources/countries/ca.svg - resources/countries/cc.svg - resources/countries/cd.svg - resources/countries/cf.svg - resources/countries/cg.svg - resources/countries/ch.svg - resources/countries/ci.svg - resources/countries/ck.svg - resources/countries/cl.svg - resources/countries/cm.svg - resources/countries/cn.svg - resources/countries/co.svg - resources/countries/cr.svg - resources/countries/cu.svg - resources/countries/cv.svg - resources/countries/cw.svg - resources/countries/cx.svg - resources/countries/cy.svg - resources/countries/cz.svg - resources/countries/de.svg - resources/countries/dj.svg - resources/countries/dk.svg - resources/countries/dm.svg - resources/countries/do.svg - resources/countries/dz.svg - resources/countries/ec.svg - resources/countries/ee.svg - resources/countries/eg.svg - resources/countries/eh.svg - resources/countries/er.svg - resources/countries/es.svg - resources/countries/et.svg - resources/countries/fi.svg - resources/countries/fj.svg - resources/countries/fk.svg - resources/countries/fm.svg - resources/countries/fo.svg - resources/countries/fr.svg - resources/countries/ga.svg - resources/countries/gb.svg - resources/countries/gd.svg - resources/countries/ge.svg - resources/countries/gf.svg - resources/countries/gg.svg - resources/countries/gh.svg - resources/countries/gi.svg - resources/countries/gl.svg - resources/countries/gm.svg - resources/countries/gn.svg - resources/countries/gp.svg - resources/countries/gq.svg - resources/countries/gr.svg - resources/countries/gs.svg - resources/countries/gt.svg - resources/countries/gu.svg - resources/countries/gw.svg - resources/countries/gy.svg - resources/countries/hk.svg - resources/countries/hm.svg - resources/countries/hn.svg - resources/countries/hr.svg - resources/countries/ht.svg - resources/countries/hu.svg - resources/countries/id.svg - resources/countries/ie.svg - resources/countries/il.svg - resources/countries/im.svg - resources/countries/in.svg - resources/countries/io.svg - resources/countries/iq.svg - resources/countries/ir.svg - resources/countries/is.svg - resources/countries/it.svg - resources/countries/je.svg - resources/countries/jm.svg - resources/countries/jo.svg - resources/countries/jp.svg - resources/countries/ke.svg - resources/countries/kg.svg - resources/countries/kh.svg - resources/countries/ki.svg - resources/countries/km.svg - resources/countries/kn.svg - resources/countries/kp.svg - resources/countries/kr.svg - resources/countries/kw.svg - resources/countries/ky.svg - resources/countries/kz.svg - resources/countries/la.svg - resources/countries/lb.svg - resources/countries/lc.svg - resources/countries/li.svg - resources/countries/lk.svg - resources/countries/lr.svg - resources/countries/ls.svg - resources/countries/lt.svg - resources/countries/lu.svg - resources/countries/lv.svg - resources/countries/ly.svg - resources/countries/ma.svg - resources/countries/mc.svg - resources/countries/md.svg - resources/countries/me.svg - resources/countries/mf.svg - resources/countries/mg.svg - resources/countries/mh.svg - resources/countries/mk.svg - resources/countries/ml.svg - resources/countries/mm.svg - resources/countries/mn.svg - resources/countries/mo.svg - resources/countries/mp.svg - resources/countries/mq.svg - resources/countries/mr.svg - resources/countries/ms.svg - resources/countries/mt.svg - resources/countries/mu.svg - resources/countries/mv.svg - resources/countries/mw.svg - resources/countries/mx.svg - resources/countries/my.svg - resources/countries/mz.svg - resources/countries/na.svg - resources/countries/nc.svg - resources/countries/ne.svg - resources/countries/nf.svg - resources/countries/ng.svg - resources/countries/ni.svg - resources/countries/nl.svg - resources/countries/no.svg - resources/countries/np.svg - resources/countries/nr.svg - resources/countries/nu.svg - resources/countries/nz.svg - resources/countries/om.svg - resources/countries/pa.svg - resources/countries/pe.svg - resources/countries/pf.svg - resources/countries/pg.svg - resources/countries/ph.svg - resources/countries/pk.svg - resources/countries/pl.svg - resources/countries/pm.svg - resources/countries/pn.svg - resources/countries/pr.svg - resources/countries/ps.svg - resources/countries/pt.svg - resources/countries/pw.svg - resources/countries/py.svg - resources/countries/qa.svg - resources/countries/re.svg - resources/countries/ro.svg - resources/countries/rs.svg - resources/countries/ru.svg - resources/countries/rw.svg - resources/countries/sa.svg - resources/countries/sb.svg - resources/countries/sc.svg - resources/countries/sd.svg - resources/countries/se.svg - resources/countries/sg.svg - resources/countries/sh.svg - resources/countries/si.svg - resources/countries/sj.svg - resources/countries/sk.svg - resources/countries/sl.svg - resources/countries/sm.svg - resources/countries/sn.svg - resources/countries/so.svg - resources/countries/sr.svg - resources/countries/ss.svg - resources/countries/st.svg - resources/countries/sv.svg - resources/countries/sx.svg - resources/countries/sy.svg - resources/countries/sz.svg - resources/countries/tc.svg - resources/countries/td.svg - resources/countries/tf.svg - resources/countries/tg.svg - resources/countries/th.svg - resources/countries/tj.svg - resources/countries/tk.svg - resources/countries/tl.svg - resources/countries/tm.svg - resources/countries/tn.svg - resources/countries/to.svg - resources/countries/tr.svg - resources/countries/tt.svg - resources/countries/tv.svg - resources/countries/tw.svg - resources/countries/tz.svg - resources/countries/ua.svg - resources/countries/ug.svg - resources/countries/um.svg - resources/countries/us.svg - resources/countries/uy.svg - resources/countries/uz.svg - resources/countries/va.svg - resources/countries/vc.svg - resources/countries/ve.svg - resources/countries/vg.svg - resources/countries/vi.svg - resources/countries/vn.svg - resources/countries/vu.svg - resources/countries/wf.svg - resources/countries/ws.svg - resources/countries/ye.svg - resources/countries/yt.svg - resources/countries/za.svg - resources/countries/zm.svg - resources/countries/zw.svg - - resources/counters/w.svg - resources/counters/w_highlight.svg - resources/counters/u.svg - resources/counters/u_highlight.svg - resources/counters/b.svg - resources/counters/b_highlight.svg - resources/counters/r.svg - resources/counters/r_highlight.svg - resources/counters/g.svg - resources/counters/g_highlight.svg - resources/counters/storm.svg - resources/counters/storm_highlight.svg - resources/counters/general.svg - resources/counters/general_highlight.svg - - resources/userlevels/normal.svg - resources/userlevels/registered.svg - resources/userlevels/registered_buddy.svg - resources/userlevels/moderator.svg - resources/userlevels/moderator_buddy.svg - resources/userlevels/admin.svg - resources/userlevels/admin_buddy.svg - - resources/news/exclamation_mark.svg - resources/news/question_mark.svg - + + resources/back.svg + resources/lock.svg + resources/icon_delete.svg + resources/icon_tab_changed.svg + resources/icon_config_general.svg + resources/icon_config_appearance.svg + resources/icon_config_interface.svg + resources/icon_config_messages.svg + resources/icon_config_deckeditor.svg + resources/icon_config_sound.svg + resources/phases/icon_phase_untap.svg + resources/phases/icon_phase_upkeep.svg + resources/phases/icon_phase_draw.svg + resources/phases/icon_phase_main1.svg + resources/phases/icon_phase_combat_start.svg + resources/phases/icon_phase_combat_attackers.svg + resources/phases/icon_phase_combat_blockers.svg + resources/phases/icon_phase_combat_damage.svg + resources/phases/icon_phase_combat_end.svg + resources/phases/icon_phase_main2.svg + resources/phases/icon_phase_cleanup.svg + resources/phases/icon_phase_nextturn.svg + resources/icon_settings.svg + resources/hand.svg + resources/pencil.svg + resources/icon_search_black.svg + resources/icon_clearsearch.svg + resources/icon_update.png + resources/icon_view.svg + resources/hr.jpg + resources/cockatrice.svg + resources/add_to_sideboard.svg + resources/decrement.svg + resources/increment.svg + resources/remove_row.svg + resources/arrow_left_green.svg + resources/arrow_right_green.svg + resources/arrow_top_green.svg + resources/arrow_up_green.svg + resources/arrow_down_green.svg + resources/arrow_bottom_green.svg + resources/icon_ready_start.svg + resources/icon_not_ready_start.svg + resources/icon_conceded.svg + resources/icon_player.svg + resources/icon_spectator.svg + resources/replay_start.svg + resources/replay_fastforward.svg + resources/replay_pause.svg + resources/genders/male.svg + resources/genders/female.svg + resources/genders/unknown.svg + resources/countries/ad.svg + resources/countries/ae.svg + resources/countries/af.svg + resources/countries/ag.svg + resources/countries/ai.svg + resources/countries/al.svg + resources/countries/am.svg + resources/countries/ao.svg + resources/countries/aq.svg + resources/countries/ar.svg + resources/countries/as.svg + resources/countries/at.svg + resources/countries/au.svg + resources/countries/aw.svg + resources/countries/ax.svg + resources/countries/az.svg + resources/countries/ba.svg + resources/countries/bb.svg + resources/countries/bd.svg + resources/countries/be.svg + resources/countries/bf.svg + resources/countries/bg.svg + resources/countries/bh.svg + resources/countries/bi.svg + resources/countries/bj.svg + resources/countries/bl.svg + resources/countries/bm.svg + resources/countries/bn.svg + resources/countries/bo.svg + resources/countries/bq.svg + resources/countries/br.svg + resources/countries/bs.svg + resources/countries/bt.svg + resources/countries/bv.svg + resources/countries/bw.svg + resources/countries/by.svg + resources/countries/bz.svg + resources/countries/ca.svg + resources/countries/cc.svg + resources/countries/cd.svg + resources/countries/cf.svg + resources/countries/cg.svg + resources/countries/ch.svg + resources/countries/ci.svg + resources/countries/ck.svg + resources/countries/cl.svg + resources/countries/cm.svg + resources/countries/cn.svg + resources/countries/co.svg + resources/countries/cr.svg + resources/countries/cu.svg + resources/countries/cv.svg + resources/countries/cw.svg + resources/countries/cx.svg + resources/countries/cy.svg + resources/countries/cz.svg + resources/countries/de.svg + resources/countries/dj.svg + resources/countries/dk.svg + resources/countries/dm.svg + resources/countries/do.svg + resources/countries/dz.svg + resources/countries/ec.svg + resources/countries/ee.svg + resources/countries/eg.svg + resources/countries/eh.svg + resources/countries/er.svg + resources/countries/es.svg + resources/countries/et.svg + resources/countries/fi.svg + resources/countries/fj.svg + resources/countries/fk.svg + resources/countries/fm.svg + resources/countries/fo.svg + resources/countries/fr.svg + resources/countries/ga.svg + resources/countries/gb.svg + resources/countries/gd.svg + resources/countries/ge.svg + resources/countries/gf.svg + resources/countries/gg.svg + resources/countries/gh.svg + resources/countries/gi.svg + resources/countries/gl.svg + resources/countries/gm.svg + resources/countries/gn.svg + resources/countries/gp.svg + resources/countries/gq.svg + resources/countries/gr.svg + resources/countries/gs.svg + resources/countries/gt.svg + resources/countries/gu.svg + resources/countries/gw.svg + resources/countries/gy.svg + resources/countries/hk.svg + resources/countries/hm.svg + resources/countries/hn.svg + resources/countries/hr.svg + resources/countries/ht.svg + resources/countries/hu.svg + resources/countries/id.svg + resources/countries/ie.svg + resources/countries/il.svg + resources/countries/im.svg + resources/countries/in.svg + resources/countries/io.svg + resources/countries/iq.svg + resources/countries/ir.svg + resources/countries/is.svg + resources/countries/it.svg + resources/countries/je.svg + resources/countries/jm.svg + resources/countries/jo.svg + resources/countries/jp.svg + resources/countries/ke.svg + resources/countries/kg.svg + resources/countries/kh.svg + resources/countries/ki.svg + resources/countries/km.svg + resources/countries/kn.svg + resources/countries/kp.svg + resources/countries/kr.svg + resources/countries/kw.svg + resources/countries/ky.svg + resources/countries/kz.svg + resources/countries/la.svg + resources/countries/lb.svg + resources/countries/lc.svg + resources/countries/li.svg + resources/countries/lk.svg + resources/countries/lr.svg + resources/countries/ls.svg + resources/countries/lt.svg + resources/countries/lu.svg + resources/countries/lv.svg + resources/countries/ly.svg + resources/countries/ma.svg + resources/countries/mc.svg + resources/countries/md.svg + resources/countries/me.svg + resources/countries/mf.svg + resources/countries/mg.svg + resources/countries/mh.svg + resources/countries/mk.svg + resources/countries/ml.svg + resources/countries/mm.svg + resources/countries/mn.svg + resources/countries/mo.svg + resources/countries/mp.svg + resources/countries/mq.svg + resources/countries/mr.svg + resources/countries/ms.svg + resources/countries/mt.svg + resources/countries/mu.svg + resources/countries/mv.svg + resources/countries/mw.svg + resources/countries/mx.svg + resources/countries/my.svg + resources/countries/mz.svg + resources/countries/na.svg + resources/countries/nc.svg + resources/countries/ne.svg + resources/countries/nf.svg + resources/countries/ng.svg + resources/countries/ni.svg + resources/countries/nl.svg + resources/countries/no.svg + resources/countries/np.svg + resources/countries/nr.svg + resources/countries/nu.svg + resources/countries/nz.svg + resources/countries/om.svg + resources/countries/pa.svg + resources/countries/pe.svg + resources/countries/pf.svg + resources/countries/pg.svg + resources/countries/ph.svg + resources/countries/pk.svg + resources/countries/pl.svg + resources/countries/pm.svg + resources/countries/pn.svg + resources/countries/pr.svg + resources/countries/ps.svg + resources/countries/pt.svg + resources/countries/pw.svg + resources/countries/py.svg + resources/countries/qa.svg + resources/countries/re.svg + resources/countries/ro.svg + resources/countries/rs.svg + resources/countries/ru.svg + resources/countries/rw.svg + resources/countries/sa.svg + resources/countries/sb.svg + resources/countries/sc.svg + resources/countries/sd.svg + resources/countries/se.svg + resources/countries/sg.svg + resources/countries/sh.svg + resources/countries/si.svg + resources/countries/sj.svg + resources/countries/sk.svg + resources/countries/sl.svg + resources/countries/sm.svg + resources/countries/sn.svg + resources/countries/so.svg + resources/countries/sr.svg + resources/countries/ss.svg + resources/countries/st.svg + resources/countries/sv.svg + resources/countries/sx.svg + resources/countries/sy.svg + resources/countries/sz.svg + resources/countries/tc.svg + resources/countries/td.svg + resources/countries/tf.svg + resources/countries/tg.svg + resources/countries/th.svg + resources/countries/tj.svg + resources/countries/tk.svg + resources/countries/tl.svg + resources/countries/tm.svg + resources/countries/tn.svg + resources/countries/to.svg + resources/countries/tr.svg + resources/countries/tt.svg + resources/countries/tv.svg + resources/countries/tw.svg + resources/countries/tz.svg + resources/countries/ua.svg + resources/countries/ug.svg + resources/countries/um.svg + resources/countries/us.svg + resources/countries/uy.svg + resources/countries/uz.svg + resources/countries/va.svg + resources/countries/vc.svg + resources/countries/ve.svg + resources/countries/vg.svg + resources/countries/vi.svg + resources/countries/vn.svg + resources/countries/vu.svg + resources/countries/wf.svg + resources/countries/ws.svg + resources/countries/ye.svg + resources/countries/yt.svg + resources/countries/za.svg + resources/countries/zm.svg + resources/countries/zw.svg + resources/counters/w.svg + resources/counters/w_highlight.svg + resources/counters/u.svg + resources/counters/u_highlight.svg + resources/counters/b.svg + resources/counters/b_highlight.svg + resources/counters/r.svg + resources/counters/r_highlight.svg + resources/counters/g.svg + resources/counters/g_highlight.svg + resources/counters/storm.svg + resources/counters/storm_highlight.svg + resources/counters/general.svg + resources/counters/general_highlight.svg + resources/userlevels/normal.svg + resources/userlevels/registered.svg + resources/userlevels/registered_buddy.svg + resources/userlevels/moderator.svg + resources/userlevels/moderator_buddy.svg + resources/userlevels/admin.svg + resources/userlevels/admin_buddy.svg + resources/news/exclamation_mark.svg + resources/news/question_mark.svg + resources/icon_config_shorcuts.svg + diff --git a/cockatrice/resources/icon_config_shorcuts.svg b/cockatrice/resources/icon_config_shorcuts.svg new file mode 100644 index 00000000..d52858cb --- /dev/null +++ b/cockatrice/resources/icon_config_shorcuts.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/cockatrice/src/abstractcounter.cpp b/cockatrice/src/abstractcounter.cpp index 6e6393e7..0b07d980 100644 --- a/cockatrice/src/abstractcounter.cpp +++ b/cockatrice/src/abstractcounter.cpp @@ -1,5 +1,6 @@ #include "abstractcounter.h" #include "player.h" +#include "settingscache.h" #include #include #include @@ -17,6 +18,8 @@ AbstractCounter::AbstractCounter(Player *_player, int _id, const QString &_name, setAcceptHoverEvents(true); #endif + shortcutActive = false; + if (player->getLocal()) { menu = new QMenu(name); aSet = new QAction(this); @@ -39,6 +42,8 @@ AbstractCounter::AbstractCounter(Player *_player, int _id, const QString &_name, } else menu = 0; + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); retranslateUi(); } @@ -65,14 +70,16 @@ void AbstractCounter::retranslateUi() void AbstractCounter::setShortcutsActive() { if (name == "life") { - aSet->setShortcut(QKeySequence("Ctrl+L")); - aDec->setShortcut(QKeySequence("F11")); - aInc->setShortcut(QKeySequence("F12")); + shortcutActive = true; + aSet->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aSet")); + aDec->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDec")); + aInc->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aInc")); } } void AbstractCounter::setShortcutsInactive() { + shortcutActive = false; if (name == "life") { aSet->setShortcut(QKeySequence()); aDec->setShortcut(QKeySequence()); @@ -80,6 +87,12 @@ void AbstractCounter::setShortcutsInactive() } } +void AbstractCounter::refreshShortcuts() +{ + if(shortcutActive) + setShortcutsActive(); +} + void AbstractCounter::setValue(int _value) { value = _value; diff --git a/cockatrice/src/abstractcounter.h b/cockatrice/src/abstractcounter.h index 174cbf84..f5a04e9d 100644 --- a/cockatrice/src/abstractcounter.h +++ b/cockatrice/src/abstractcounter.h @@ -26,6 +26,7 @@ private: bool dialogSemaphore, deleteAfterDialog; bool shownInCounterArea; private slots: + void refreshShortcuts(); void incrementCounter(); void setCounter(); public: @@ -44,6 +45,7 @@ public: void setShortcutsActive(); void setShortcutsInactive(); + bool shortcutActive; }; #endif diff --git a/cockatrice/src/dlg_load_deck_from_clipboard.cpp b/cockatrice/src/dlg_load_deck_from_clipboard.cpp index 67051c19..1c41cc1a 100644 --- a/cockatrice/src/dlg_load_deck_from_clipboard.cpp +++ b/cockatrice/src/dlg_load_deck_from_clipboard.cpp @@ -10,6 +10,7 @@ #include #include "dlg_load_deck_from_clipboard.h" #include "deck_loader.h" +#include "settingscache.h" DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent) : QDialog(parent), deckList(0) @@ -17,7 +18,6 @@ DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent) contentsEdit = new QPlainTextEdit; refreshButton = new QPushButton(tr("&Refresh")); - refreshButton->setShortcut(QKeySequence("F5")); connect(refreshButton, SIGNAL(clicked()), this, SLOT(actRefresh())); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); @@ -35,6 +35,8 @@ DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent) resize(500, 500); actRefresh(); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); } void DlgLoadDeckFromClipboard::actRefresh() @@ -42,6 +44,11 @@ void DlgLoadDeckFromClipboard::actRefresh() contentsEdit->setPlainText(QApplication::clipboard()->text()); } +void DlgLoadDeckFromClipboard::refreshShortcuts() +{ + refreshButton->setShortcut(settingsCache->shortcuts().getSingleShortcut("DlgLoadDeckFromClipboard/refreshButton")); +} + void DlgLoadDeckFromClipboard::actOK() { QString buffer = contentsEdit->toPlainText(); diff --git a/cockatrice/src/dlg_load_deck_from_clipboard.h b/cockatrice/src/dlg_load_deck_from_clipboard.h index 375c713d..ec133a1b 100644 --- a/cockatrice/src/dlg_load_deck_from_clipboard.h +++ b/cockatrice/src/dlg_load_deck_from_clipboard.h @@ -12,6 +12,7 @@ class DlgLoadDeckFromClipboard : public QDialog { private slots: void actOK(); void actRefresh(); + void refreshShortcuts(); private: DeckLoader *deckList; public: diff --git a/cockatrice/src/dlg_settings.cpp b/cockatrice/src/dlg_settings.cpp index 6c9bd25e..da47aa8d 100644 --- a/cockatrice/src/dlg_settings.cpp +++ b/cockatrice/src/dlg_settings.cpp @@ -28,6 +28,7 @@ #include "settingscache.h" #include "priceupdater.h" #include "soundengine.h" +#include "sequenceEdit/shortcutstab.h" #define LINKING_FAQ_URL "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Download-URLs" @@ -863,6 +864,7 @@ DlgSettings::DlgSettings(QWidget *parent) pagesWidget->addWidget(new DeckEditorSettingsPage); pagesWidget->addWidget(new MessagesSettingsPage); pagesWidget->addWidget(new SoundSettingsPage); + pagesWidget->addWidget(new ShortcutsTab); createIcons(); contentsWidget->setCurrentRow(0); @@ -917,6 +919,11 @@ void DlgSettings::createIcons() soundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); 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 *))); } @@ -1026,6 +1033,7 @@ void DlgSettings::retranslateUi() deckEditorButton->setText(tr("Deck Editor")); messagesButton->setText(tr("Chat")); soundButton->setText(tr("Sound")); + shortcutsButton->setText(tr("Shortcuts")); for (int i = 0; i < pagesWidget->count(); i++) dynamic_cast(pagesWidget->widget(i))->retranslateUi(); diff --git a/cockatrice/src/dlg_settings.h b/cockatrice/src/dlg_settings.h index 56329f8c..208c9b63 100644 --- a/cockatrice/src/dlg_settings.h +++ b/cockatrice/src/dlg_settings.h @@ -224,6 +224,7 @@ private: QListWidget *contentsWidget; QStackedWidget *pagesWidget; QListWidgetItem *generalButton, *appearanceButton, *userInterfaceButton, *deckEditorButton, *messagesButton, *soundButton; + QListWidgetItem *shortcutsButton; void createIcons(); void retranslateUi(); protected: diff --git a/cockatrice/src/gameview.cpp b/cockatrice/src/gameview.cpp index 1c4a6984..2c5c6163 100644 --- a/cockatrice/src/gameview.cpp +++ b/cockatrice/src/gameview.cpp @@ -1,5 +1,6 @@ #include "gameview.h" #include "gamescene.h" +#include "settingscache.h" #include #include #include @@ -19,10 +20,11 @@ GameView::GameView(QGraphicsScene *scene, QWidget *parent) connect(scene, SIGNAL(sigStopRubberBand()), this, SLOT(stopRubberBand())); aCloseMostRecentZoneView = new QAction(this); - aCloseMostRecentZoneView->setShortcut(QKeySequence("Esc")); + connect(aCloseMostRecentZoneView, SIGNAL(triggered()), scene, SLOT(closeMostRecentZoneView())); addAction(aCloseMostRecentZoneView); - + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); rubberBand = new QRubberBand(QRubberBand::Rectangle, this); } @@ -59,3 +61,8 @@ void GameView::stopRubberBand() { rubberBand->hide(); } + +void GameView::refreshShortcuts() +{ + aCloseMostRecentZoneView->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aCloseMostRecentZoneView")); +} diff --git a/cockatrice/src/gameview.h b/cockatrice/src/gameview.h index e678f293..c5fdfe30 100644 --- a/cockatrice/src/gameview.h +++ b/cockatrice/src/gameview.h @@ -17,6 +17,7 @@ private slots: void startRubberBand(const QPointF &selectionOrigin); void resizeRubberBand(const QPointF &cursorPoint); void stopRubberBand(); + void refreshShortcuts(); public slots: void updateSceneRect(const QRectF &rect); public: diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 6e3eca54..1caeba45 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -454,6 +454,8 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare rearrangeZones(); retranslateUi(); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); } Player::~Player() @@ -616,6 +618,7 @@ void Player::retranslateUi() { aViewGraveyard->setText(tr("&View graveyard")); aViewRfg->setText(tr("&View exile")); + playerMenu->setTitle(tr("Player \"%1\"").arg(QString::fromStdString(userInfo->name()))); graveMenu->setTitle(tr("&Graveyard")); rfgMenu->setTitle(tr("&Exile")); @@ -684,50 +687,45 @@ void Player::retranslateUi() aPlay->setText(tr("&Play")); aHide->setText(tr("&Hide")); aPlayFacedown->setText(tr("Play &Face Down")); - aTap->setText(tr("&Tap")); aUntap->setText(tr("&Untap")); aDoesntUntap->setText(tr("Toggle &normal untapping")); aFlip->setText(tr("&Flip")); aPeek->setText(tr("&Peek at card face")); aClone->setText(tr("&Clone")); - aClone->setShortcut(QKeySequence("Ctrl+J")); aAttach->setText(tr("Attac&h to card...")); - aAttach->setShortcut(QKeySequence("Ctrl+A")); aUnattach->setText(tr("Unattac&h")); aDrawArrow->setText(tr("&Draw arrow...")); aIncP->setText(tr("&Increase power")); - aIncP->setShortcut(QKeySequence("Ctrl++")); aDecP->setText(tr("&Decrease power")); - aDecP->setShortcut(QKeySequence("Ctrl+-")); aIncT->setText(tr("I&ncrease toughness")); - aIncT->setShortcut(QKeySequence("Alt++")); aDecT->setText(tr("D&ecrease toughness")); - aDecT->setShortcut(QKeySequence("Alt+-")); aIncPT->setText(tr("In&crease power and toughness")); - aIncPT->setShortcut(QKeySequence("Ctrl+Alt++")); aDecPT->setText(tr("Dec&rease power and toughness")); - aDecPT->setShortcut(QKeySequence("Ctrl+Alt+-")); aSetPT->setText(tr("Set &power and toughness...")); - aSetPT->setShortcut(QKeySequence("Ctrl+P")); aSetAnnotation->setText(tr("&Set annotation...")); + QStringList counterColors; counterColors.append(tr("Red")); counterColors.append(tr("Yellow")); counterColors.append(tr("Green")); - for (int i = 0; i < aAddCounter.size(); ++i) + + for (int i = 0; i < aAddCounter.size(); ++i){ aAddCounter[i]->setText(tr("&Add counter (%1)").arg(counterColors[i])); - for (int i = 0; i < aRemoveCounter.size(); ++i) + } + for (int i = 0; i < aRemoveCounter.size(); ++i){ aRemoveCounter[i]->setText(tr("&Remove counter (%1)").arg(counterColors[i])); - for (int i = 0; i < aSetCounter.size(); ++i) + } + for (int i = 0; i < aSetCounter.size(); ++i){ aSetCounter[i]->setText(tr("&Set counters (%1)...").arg(counterColors[i])); + } + aMoveToTopLibrary->setText(tr("&Top of library")); aMoveToBottomLibrary->setText(tr("&Bottom of library")); aMoveToHand->setText(tr("&Hand")); aMoveToGraveyard->setText(tr("&Graveyard")); - aMoveToGraveyard->setShortcut(QKeySequence("Ctrl+Del")); aMoveToExile->setText(tr("&Exile")); - + QMapIterator zoneIterator(zones); while (zoneIterator.hasNext()) zoneIterator.next().value()->retranslateUi(); @@ -737,24 +735,73 @@ void Player::setShortcutsActive() { shortcutsActive = true; - aViewSideboard->setShortcut(QKeySequence("Ctrl+F3")); - aViewLibrary->setShortcut(QKeySequence("F3")); - aViewTopCards->setShortcut(QKeySequence("Ctrl+W")); - aViewGraveyard->setShortcut(QKeySequence("F4")); - aDrawCard->setShortcut(QKeySequence("Ctrl+D")); - aDrawCards->setShortcut(QKeySequence("Ctrl+E")); - aUndoDraw->setShortcut(QKeySequence("Ctrl+Shift+D")); - aMulligan->setShortcut(QKeySequence("Ctrl+M")); - aShuffle->setShortcut(QKeySequence("Ctrl+S")); - aUntapAll->setShortcut(QKeySequence("Ctrl+U")); - aRollDie->setShortcut(QKeySequence("Ctrl+I")); - aCreateToken->setShortcut(QKeySequence("Ctrl+T")); - aCreateAnotherToken->setShortcut(QKeySequence("Ctrl+G")); - aAlwaysRevealTopCard->setShortcut(QKeySequence("Ctrl+N")); + aPlay->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aPlay")); + aTap->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aTap")); + aUntap->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aUntap")); + aDoesntUntap->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDoesntUntap")); + aFlip->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aFlip")); + aPeek->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aPeek")); + aClone->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aClone")); + aAttach->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aAttach")); + aUnattach->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aUnattach")); + aDrawArrow->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDrawArrow")); + aIncP->setShortcuts(settingsCache->shortcuts().getShortcut("Player/IncP")); + aDecP->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDecP")); + aIncT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aIncT")); + aDecT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDecT")); + aIncPT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aIncPT")); + aDecPT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDecPT")); + aSetPT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aSetPT")); + aSetAnnotation->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aSetAnnotation")); + aMoveToTopLibrary->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToTopLibrary")); + aMoveToBottomLibrary->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToBottomLibrary")); + aMoveToHand->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToHand")); + aMoveToGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToGraveyard")); + aMoveToExile->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToExile")); + + QList addCCShortCuts; + addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aCCRed")); + addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aCCYellow")); + addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aCCGreen")); + + QList removeCCShortCuts; + removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aRCRed")); + removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aRCYellow")); + removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aRCGreen")); + + QList setCCShortCuts; + setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aSCRed")); + setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aSCYellow")); + setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aSCGreen")); + + for (int i = 0; i < aAddCounter.size(); ++i){ + aAddCounter[i]->setShortcut(addCCShortCuts.at(i)); + } + for (int i = 0; i < aRemoveCounter.size(); ++i){ + aRemoveCounter[i]->setShortcut(removeCCShortCuts.at(i)); + } + for (int i = 0; i < aSetCounter.size(); ++i){ + aSetCounter[i]->setShortcut(setCCShortCuts.at(i)); + } QMapIterator counterIterator(counters); while (counterIterator.hasNext()) counterIterator.next().value()->setShortcutsActive(); + + aViewSideboard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewSideboard")); + aViewLibrary->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewLibrary")); + aViewTopCards->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewTopCards")); + aViewGraveyard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewGraveyard")); + aDrawCard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aDrawCard")); + aDrawCards->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aDrawCards")); + aUndoDraw->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aUndoDraw")); + aMulligan->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aMulligan")); + aShuffle->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aShuffle")); + aUntapAll->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aUntapAll")); + aRollDie->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aRollDie")); + aCreateToken->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aCreateToken")); + aCreateAnotherToken->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aCreateAnotherToken")); + aAlwaysRevealTopCard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aAlwaysRevealTopCard")); } void Player::setShortcutsInactive() @@ -788,10 +835,12 @@ void Player::initSayMenu() QSettings settings; settings.beginGroup("messages"); int count = settings.value("count", 0).toInt(); + for (int i = 0; i < count; i++) { QAction *newAction = new QAction(settings.value(QString("msg%1").arg(i)).toString(), this); - if (i <= 10) - newAction->setShortcut(QKeySequence(QString("Ctrl+%1").arg((i + 1) % 10))); + if (i <= 10){ + newAction->setShortcut(QKeySequence("Ctrl+" + QString::number((i + 1) % 10))); + } connect(newAction, SIGNAL(triggered()), this, SLOT(actSayMessage())); sayMenu->addAction(newAction); } @@ -805,13 +854,16 @@ void Player::setDeck(const DeckLoader &_deck) createPredefinedTokenMenu->clear(); predefinedTokens.clear(); InnerDecklistNode *tokenZone = dynamic_cast(deck->getRoot()->findChild("tokens")); + if (tokenZone) for (int i = 0; i < tokenZone->size(); ++i) { const QString tokenName = tokenZone->at(i)->getName(); predefinedTokens.append(tokenName); QAction *a = createPredefinedTokenMenu->addAction(tokenName); if (i < 10) + { a->setShortcut(QKeySequence("Alt+" + QString::number((i + 1) % 10))); + } connect(a, SIGNAL(triggered()), this, SLOT(actCreatePredefinedToken())); } } @@ -2238,6 +2290,12 @@ void Player::actPlayFacedown() playCard(game->getActiveCard(), true, false); } +void Player::refreshShortcuts() +{ + if(shortcutsActive) + setShortcutsActive(); +} + void Player::updateCardMenu(CardItem *card) { QMenu *cardMenu = card->getCardMenu(); diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index 45baa7ae..5eb1a57f 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -159,6 +159,7 @@ private slots: void actPlay(); void actHide(); void actPlayFacedown(); + void refreshShortcuts(); private: TabGame *game; diff --git a/cockatrice/src/sequenceEdit/sequenceedit.cpp b/cockatrice/src/sequenceEdit/sequenceedit.cpp new file mode 100644 index 00000000..1056b576 --- /dev/null +++ b/cockatrice/src/sequenceEdit/sequenceedit.cpp @@ -0,0 +1,155 @@ +#include "sequenceedit.h" +#include "../settingscache.h" +#include +#include +#include +#include +#include +#include + +SequenceEdit::SequenceEdit(QString _shorcutName, QWidget *parent) : QWidget(parent) +{ + shorcutName = _shorcutName; + currentKey = 0; + maxKeys = 4; + keys = 0; + valid = false; + + lineEdit = new QLineEdit(this); + clearButton = new QPushButton("", this); + defaultButton = new QPushButton("", this); + + lineEdit->setMinimumWidth(70); + clearButton->setMaximumWidth(lineEdit->height()); + defaultButton->setMaximumWidth(lineEdit->height()); + clearButton->setMaximumHeight(lineEdit->height()); + defaultButton->setMaximumHeight(lineEdit->height()); + + clearButton->setIcon(QIcon(":/resources/icon_clearsearch.svg")); + defaultButton->setIcon(QIcon(":/resources/icon_update.png")); + + clearButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); + defaultButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setContentsMargins(0,0,0,0); + layout->setSpacing(1); + 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(shorcutName)); +} + +QString SequenceEdit::getSecuence() +{ + return lineEdit->text(); +} + +void SequenceEdit::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 SequenceEdit::restoreDefault() +{ + lineEdit->setText(settingsCache->shortcuts().getDefaultShortcutString(shorcutName)); + updateSettings(); +} + +bool SequenceEdit::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 SequenceEdit::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 SequenceEdit::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 SequenceEdit::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 SequenceEdit::updateSettings() +{ + settingsCache->shortcuts().setShortcuts(shorcutName,lineEdit->text()); +} + diff --git a/cockatrice/src/sequenceEdit/sequenceedit.h b/cockatrice/src/sequenceEdit/sequenceedit.h new file mode 100644 index 00000000..0a016c2c --- /dev/null +++ b/cockatrice/src/sequenceEdit/sequenceedit.h @@ -0,0 +1,40 @@ +#ifndef SECUENCEEDIT_H +#define SECUENCEEDIT_H + +#include +#include + +class QLineEdit; +class QPushButton; +class QEvent; + +class SequenceEdit : public QWidget +{ + Q_OBJECT +public: + SequenceEdit(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 diff --git a/cockatrice/src/sequenceEdit/shortcutstab.cpp b/cockatrice/src/sequenceEdit/shortcutstab.cpp new file mode 100644 index 00000000..b28a1466 --- /dev/null +++ b/cockatrice/src/sequenceEdit/shortcutstab.cpp @@ -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; +} diff --git a/cockatrice/src/sequenceEdit/shortcutstab.h b/cockatrice/src/sequenceEdit/shortcutstab.h new file mode 100644 index 00000000..c2e88d39 --- /dev/null +++ b/cockatrice/src/sequenceEdit/shortcutstab.h @@ -0,0 +1,25 @@ +#ifndef SHORTCUTSTAB_H +#define SHORTCUTSTAB_H + +#include + +#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 diff --git a/cockatrice/src/sequenceEdit/ui_shortcutstab.h b/cockatrice/src/sequenceEdit/ui_shortcutstab.h new file mode 100644 index 00000000..da61fd7c --- /dev/null +++ b/cockatrice/src/sequenceEdit/ui_shortcutstab.h @@ -0,0 +1,1570 @@ +#ifndef UI_SHORTCUTSTAB_H +#define UI_SHORTCUTSTAB_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "sequenceedit.h" + +QT_BEGIN_NAMESPACE + +class Ui_shortcutsTab +{ +public: + QGridLayout *gridLayout_9; + QTabWidget *tabWidget; + QWidget *tab; + QGridLayout *gridLayout_3; + QGroupBox *groupBox; + QGridLayout *gridLayout_2; + QLabel *lbl_MainWindow_aDeckEditor; + SequenceEdit *MainWindow_aDeckEditor; + QLabel *lbl_MainWindow_aSinglePlayer; + SequenceEdit *MainWindow_aSinglePlayer; + QLabel *lbl_MainWindow_aWatchReplay; + QLabel *lbl_MainWindow_aConnect; + SequenceEdit *MainWindow_aConnect; + QLabel *lbl_MainWindow_aRegister; + QLabel *lbl_MainWindow_aFullScreen; + SequenceEdit *MainWindow_aFullScreen; + QLabel *lbl_MainWindow_aSettings; + SequenceEdit *MainWindow_aRegister; + QLabel *lbl_MainWindow_aCheckCardUpdates; + SequenceEdit *MainWindow_aSettings; + SequenceEdit *MainWindow_aCheckCardUpdates; + SequenceEdit *MainWindow_aWatchReplay; + SequenceEdit *MainWindow_aDisconnect; + QLabel *lbl_MainWindow_aDisconnect; + QLabel *lbl_MainWindow_aExit; + SequenceEdit *MainWindow_aExit; + QGroupBox *groupBox_2; + QGridLayout *gridLayout; + QLabel *lbl_TabDeckEditor_aAnalyzeDeck; + SequenceEdit *TabDeckEditor_aAnalyzeDeck; + QLabel *lbl_TabDeckEditor_aLoadDeckFromClipboard; + SequenceEdit *TabDeckEditor_aLoadDeckFromClipboard; + QLabel *lbl_TabDeckEditor_aClearFilterAll; + SequenceEdit *TabDeckEditor_aClearFilterAll; + QLabel *lbl_TabDeckEditor_aNewDeck; + SequenceEdit *TabDeckEditor_aNewDeck; + QLabel *lbl_TabDeckEditor_aClearFilterOne; + SequenceEdit *TabDeckEditor_aClearFilterOne; + QLabel *lbl_TabDeckEditor_aOpenCustomFolder; + SequenceEdit *TabDeckEditor_aOpenCustomFolder; + QLabel *lbl_TabDeckEditor_aClose; + SequenceEdit *TabDeckEditor_aClose; + QLabel *lbl_TabDeckEditor_aPrintDeck; + SequenceEdit *TabDeckEditor_aPrintDeck; + QLabel *lbl_TabDeckEditor_aEditSets; + SequenceEdit *TabDeckEditor_aEditSets; + QLabel *lbl_TabDeckEditor_aRemoveCard; + SequenceEdit *TabDeckEditor_aRemoveCard; + QLabel *lbl_TabDeckEditor_aEditTokens; + SequenceEdit *TabDeckEditor_aEditTokens; + QLabel *lbl_TabDeckEditor_aResetLayout; + SequenceEdit *TabDeckEditor_aResetLayout; + QLabel *lbl_TabDeckEditor_aIncrement; + SequenceEdit *TabDeckEditor_aIncrement; + QLabel *lbl_TabDeckEditor_aSaveDeck; + SequenceEdit *TabDeckEditor_aSaveDeck; + QLabel *lbl_TabDeckEditor_aDecrement; + SequenceEdit *TabDeckEditor_aDecrement; + QLabel *lbl_TabDeckEditor_aSaveDeckAs; + SequenceEdit *TabDeckEditor_aSaveDeckAs; + QLabel *lbl_TabDeckEditor_aLoadDeck; + SequenceEdit *TabDeckEditor_aLoadDeck; + QLabel *lbl_TabDeckEditor_aSaveDeckToClipboard; + SequenceEdit *TabDeckEditor_aSaveDeckToClipboard; + QGroupBox *groupBox_3; + QHBoxLayout *horizontalLayout; + QGroupBox *groupBox_4; + QGridLayout *gridLayout_4; + QLabel *lbl_abstractCounter_sSet; + SequenceEdit *abstractCounter_aSet; + QLabel *lbl_abstractCounter_aInc; + SequenceEdit *abstractCounter_Inc; + QLabel *lbl_abstractCounter_aDec; + SequenceEdit *abstractCounter_aDec; + QGroupBox *groupBox_5; + QGridLayout *gridLayout_6; + QLabel *lbl_Player_aSCRed; + SequenceEdit *Player_aSCRed; + QLabel *lbl_Player_aCCRed; + SequenceEdit *Player_aCCRed; + QLabel *lbl_Player_aRCRed; + SequenceEdit *Player_aRCRed; + QGroupBox *groupBox_6; + QGridLayout *gridLayout_7; + QLabel *lbl_Player_aSCGreen; + SequenceEdit *Player_aSCGreen; + QLabel *lbl_Player_aCCGreen; + SequenceEdit *Player_aCCGreen; + QLabel *lbl_Player_aRCGreen; + SequenceEdit *Player_aRCGreen; + QGroupBox *groupBox_7; + QGridLayout *gridLayout_8; + QLabel *lbl_Player_aSCYellow; + SequenceEdit *Player_aSCYellow; + QLabel *lbl_Player_aCCYellow; + SequenceEdit *Player_aCCYellow; + QLabel *lbl_Player_aRCYellow; + SequenceEdit *Player_aRCYellow; + QSpacerItem *verticalSpacer; + QWidget *tab_2; + QGridLayout *gridLayout_17; + QGroupBox *groupBox_9; + QVBoxLayout *verticalLayout; + QGroupBox *groupBox_12; + QGridLayout *gridLayout_12; + SequenceEdit *Player_aDecPT; + SequenceEdit *Player_aIncPT; + QLabel *lbl_Player_aIncPT; + QLabel *lbl_Player_aDecPT; + SequenceEdit *Player_aSetPT; + QLabel *lbl_Player_aSetPT; + QGroupBox *groupBox_11; + QGridLayout *gridLayout_11; + QLabel *lbl_Player_aDecT; + SequenceEdit *Player_aDecT; + QLabel *lbl_Player_aIncT; + SequenceEdit *Player_aIncT; + QGroupBox *groupBox_10; + QGridLayout *gridLayout_10; + QLabel *lbl_Player_aDecP; + SequenceEdit *Player_aDecP; + SequenceEdit *Player_IncP; + QLabel *lbl_Player_IncP; + QGroupBox *groupBox_8; + QGridLayout *gridLayout_5; + QLabel *lbl_TabGame_phase0; + SequenceEdit *TabGame_phase0; + QLabel *lbl_TabGame_phase1; + SequenceEdit *TabGame_phase1; + QLabel *lbl_TabGame_phase2; + SequenceEdit *TabGame_phase2; + QLabel *lbl_TabGame_phase3; + SequenceEdit *TabGame_phase3; + QLabel *lbl_TabGame_phase4; + SequenceEdit *TabGame_phase4; + QLabel *lbl_TabGame_phase5; + SequenceEdit *TabGame_phase5; + QLabel *lbl_TabGame_phase6; + QLabel *lbl_TabGame_phase7; + SequenceEdit *TabGame_phase6; + QLabel *lbl_TabGame_phase8; + SequenceEdit *TabGame_phase7; + QLabel *lbl_TabGame_phase9; + SequenceEdit *TabGame_phase8; + QLabel *lbl_TabGame_phase10; + SequenceEdit *TabGame_phase9; + QLabel *lbl_TabGame_aNextPhase; + SequenceEdit *TabGame_phase10; + QLabel *lbl_TabGame_aNextTurn; + SequenceEdit *TabGame_aNextPhase; + SequenceEdit *TabGame_aNextTurn; + QGroupBox *groupBox_13; + QGridLayout *gridLayout_13; + QLabel *lbl_Player_aTap; + SequenceEdit *Player_aTap; + QLabel *lbl_Player_aUntap; + SequenceEdit *Player_aUntap; + QLabel *lbl_Player_aUntapAll; + SequenceEdit *Player_aUntapAll; + QLabel *lbl_Player_aDoesntUntap; + SequenceEdit *Player_aDoesntUntap; + QLabel *lbl_Player_aFlip; + SequenceEdit *Player_aFlip; + QLabel *lbl_Player_aPeek; + SequenceEdit *Player_aPeek; + QLabel *lbl_Player_aPlay; + SequenceEdit *Player_aPlay; + QLabel *lbl_Player_aAttach; + SequenceEdit *Player_aAttach; + QLabel *lbl_Player_aUnattach; + SequenceEdit *Player_aUnattach; + QLabel *lbl_Player_aClone; + SequenceEdit *Player_aClone; + QLabel *lbl_Player_aCreateToken; + SequenceEdit *Player_aCreateToken; + QLabel *lbl_Player_aCreateAnotherToken; + SequenceEdit *Player_aCreateAnotherToken; + QLabel *lbl_Player_aSetAnnotation; + SequenceEdit *Player_aSetAnnotation; + QSpacerItem *verticalSpacer_2; + QWidget *tab_3; + QGridLayout *gridLayout_20; + QGroupBox *groupBox_15; + QGridLayout *gridLayout_15; + QLabel *lbl_Player_aMoveToBottomLibrary; + SequenceEdit *Player_aMoveToBottomLibrary; + QLabel *lbl_Player_aMoveToTopLibrary; + SequenceEdit *Player_aMoveToTopLibrary; + QLabel *lbl_Player_aMoveToGraveyard; + SequenceEdit *Player_aMoveToGraveyard; + QLabel *lbl_Player_aMoveToExile; + SequenceEdit *Player_aMoveToExile; + QLabel *lbl_Player_aMoveToHand; + SequenceEdit *Player_aMoveToHand; + QGroupBox *groupBox_16; + QGridLayout *gridLayout_16; + QLabel *lbl_Player_aViewGraveyard; + SequenceEdit *Player_aViewGraveyard; + QLabel *lbl_Player_aViewLibrary; + SequenceEdit *Player_aViewLibrary; + QLabel *lbl_Player_aViewTopCards; + SequenceEdit *Player_aViewTopCards; + QLabel *lbl_Player_aViewSideboard; + SequenceEdit *Player_aViewSideboard; + QLabel *lbl_Player_aViewRfg; + SequenceEdit *Player_aViewRfg; + QLabel *lbl_GameView_aCloseMostRecentZoneView; + SequenceEdit *GameView_aCloseMostRecentZoneView; + QGroupBox *groupBox_17; + QGridLayout *gridLayout_18; + SequenceEdit *DeckViewContainer_loadRemoteButton; + SequenceEdit *DeckViewContainer_loadLocalButton; + QLabel *lbl_DeckViewContainer_loadRemoteButton; + QLabel *lbl_DeckViewContainer_loadLocalButton; + QGroupBox *groupBox_18; + QGridLayout *gridLayout_19; + QLabel *lbl_Player_aDrawArrow; + SequenceEdit *Player_aDrawArrow; + QLabel *lbl_TabGame_aLeaveGame; + SequenceEdit *TabGame_aLeaveGame; + QLabel *lbl_TabGame_aRemoveLocalArrows; + SequenceEdit *TabGame_aRemoveLocalArrows; + QLabel *lbl_TabGame_aConcede; + SequenceEdit *TabGame_aConcede; + QLabel *lbl_Player_aRollDie; + SequenceEdit *Player_aRollDie; + QLabel *lbl_TabGame_aRotateViewCW; + SequenceEdit *TabGame_aRotateViewCW; + QLabel *lbl_Player_aShuffle; + SequenceEdit *Player_aShuffle; + QLabel *lbl_TabGame_aRotateViewCCW; + SequenceEdit *TabGame_aRotateViewCCW; + QGroupBox *groupBox_14; + QGridLayout *gridLayout_14; + QLabel *lbl_Player_aMulligan; + SequenceEdit *Player_aMulligan; + QLabel *lbl_Player_aDrawCard; + SequenceEdit *Player_aDrawCard; + QLabel *lbl_Player_aDrawCards; + SequenceEdit *Player_aDrawCards; + QLabel *lbl_Player_aUndoDraw; + SequenceEdit *Player_aUndoDraw; + QLabel *lbl_Player_aAlwaysRevealTopCard; + SequenceEdit *Player_aAlwaysRevealTopCard; + QSpacerItem *verticalSpacer_3; + QWidget * tab_4; + + void setupUi(QWidget *shortcutsTab) + { + if (shortcutsTab->objectName().isEmpty()) + shortcutsTab->setObjectName("shortcutsTab"); + shortcutsTab->resize(819, 477); + gridLayout_9 = new QGridLayout(shortcutsTab); + gridLayout_9->setObjectName("gridLayout_9"); + tabWidget = new QTabWidget(shortcutsTab); + tabWidget->setObjectName("tabWidget"); + tab = new QWidget(); + tab->setObjectName("tab"); + gridLayout_3 = new QGridLayout(tab); + gridLayout_3->setObjectName("gridLayout_3"); + groupBox = new QGroupBox(tab); + groupBox->setObjectName("groupBox"); + gridLayout_2 = new QGridLayout(groupBox); + gridLayout_2->setObjectName("gridLayout_2"); + lbl_MainWindow_aDeckEditor = new QLabel(groupBox); + lbl_MainWindow_aDeckEditor->setObjectName("lbl_MainWindow_aDeckEditor"); + + gridLayout_2->addWidget(lbl_MainWindow_aDeckEditor, 1, 0, 1, 1); + + MainWindow_aDeckEditor = new SequenceEdit("MainWindow/aDeckEditor",groupBox); + MainWindow_aDeckEditor->setObjectName("MainWindow_aDeckEditor"); + + gridLayout_2->addWidget(MainWindow_aDeckEditor, 1, 1, 1, 2); + + lbl_MainWindow_aSinglePlayer = new QLabel(groupBox); + lbl_MainWindow_aSinglePlayer->setObjectName("lbl_MainWindow_aSinglePlayer"); + + gridLayout_2->addWidget(lbl_MainWindow_aSinglePlayer, 2, 0, 1, 1); + + MainWindow_aSinglePlayer = new SequenceEdit("MainWindow/aSinglePlayer",groupBox); + MainWindow_aSinglePlayer->setObjectName("MainWindow_aSinglePlayer"); + + gridLayout_2->addWidget(MainWindow_aSinglePlayer, 2, 1, 1, 2); + + lbl_MainWindow_aWatchReplay = new QLabel(groupBox); + lbl_MainWindow_aWatchReplay->setObjectName("lbl_MainWindow_aWatchReplay"); + + gridLayout_2->addWidget(lbl_MainWindow_aWatchReplay, 4, 0, 1, 1); + + lbl_MainWindow_aConnect = new QLabel(groupBox); + lbl_MainWindow_aConnect->setObjectName("lbl_MainWindow_aConnect"); + + gridLayout_2->addWidget(lbl_MainWindow_aConnect, 6, 0, 1, 1); + + MainWindow_aConnect = new SequenceEdit("MainWindow/aConnect",groupBox); + MainWindow_aConnect->setObjectName("MainWindow_aConnect"); + + gridLayout_2->addWidget(MainWindow_aConnect, 6, 1, 1, 2); + + lbl_MainWindow_aRegister = new QLabel(groupBox); + lbl_MainWindow_aRegister->setObjectName("lbl_MainWindow_aRegister"); + + gridLayout_2->addWidget(lbl_MainWindow_aRegister, 10, 0, 1, 1); + + lbl_MainWindow_aFullScreen = new QLabel(groupBox); + lbl_MainWindow_aFullScreen->setObjectName("lbl_MainWindow_aFullScreen"); + + gridLayout_2->addWidget(lbl_MainWindow_aFullScreen, 9, 0, 1, 1); + + MainWindow_aFullScreen = new SequenceEdit("MainWindow/aFullScreen",groupBox); + MainWindow_aFullScreen->setObjectName("MainWindow_aFullScreen"); + + gridLayout_2->addWidget(MainWindow_aFullScreen, 9, 1, 1, 2); + + lbl_MainWindow_aSettings = new QLabel(groupBox); + lbl_MainWindow_aSettings->setObjectName("lbl_MainWindow_aSettings"); + + gridLayout_2->addWidget(lbl_MainWindow_aSettings, 11, 0, 1, 1); + + MainWindow_aRegister = new SequenceEdit("MainWindow/aRegister",groupBox); + MainWindow_aRegister->setObjectName("MainWindow_aRegister"); + + gridLayout_2->addWidget(MainWindow_aRegister, 10, 1, 1, 2); + + lbl_MainWindow_aCheckCardUpdates = new QLabel(groupBox); + lbl_MainWindow_aCheckCardUpdates->setObjectName("lbl_MainWindow_aCheckCardUpdates"); + + gridLayout_2->addWidget(lbl_MainWindow_aCheckCardUpdates, 0, 0, 1, 1); + + MainWindow_aSettings = new SequenceEdit("MainWindow/aSettings",groupBox); + MainWindow_aSettings->setObjectName("MainWindow_aSettings"); + + gridLayout_2->addWidget(MainWindow_aSettings, 11, 1, 1, 2); + + MainWindow_aCheckCardUpdates = new SequenceEdit("MainWindow/aCheckCardUpdates",groupBox); + MainWindow_aCheckCardUpdates->setObjectName("MainWindow_aCheckCardUpdates"); + + gridLayout_2->addWidget(MainWindow_aCheckCardUpdates, 0, 1, 1, 2); + + MainWindow_aWatchReplay = new SequenceEdit("MainWindow/aWatchReplay",groupBox); + MainWindow_aWatchReplay->setObjectName("MainWindow_aWatchReplay"); + + gridLayout_2->addWidget(MainWindow_aWatchReplay, 4, 1, 1, 2); + + MainWindow_aDisconnect = new SequenceEdit("MainWindow/aDisconnect",groupBox); + MainWindow_aDisconnect->setObjectName("MainWindow_aDisconnect"); + + gridLayout_2->addWidget(MainWindow_aDisconnect, 7, 1, 1, 2); + + lbl_MainWindow_aDisconnect = new QLabel(groupBox); + lbl_MainWindow_aDisconnect->setObjectName("lbl_MainWindow_aDisconnect"); + + gridLayout_2->addWidget(lbl_MainWindow_aDisconnect, 7, 0, 1, 1); + + lbl_MainWindow_aExit = new QLabel(groupBox); + lbl_MainWindow_aExit->setObjectName("lbl_MainWindow_aExit"); + + gridLayout_2->addWidget(lbl_MainWindow_aExit, 8, 0, 1, 1); + + MainWindow_aExit = new SequenceEdit("MainWindow/aExit",groupBox); + MainWindow_aExit->setObjectName("MainWindow_aExit"); + + gridLayout_2->addWidget(MainWindow_aExit, 8, 1, 1, 2); + + gridLayout_3->addWidget(groupBox, 0, 0, 1, 1); + + groupBox_2 = new QGroupBox(tab); + groupBox_2->setObjectName("groupBox_2"); + gridLayout = new QGridLayout(groupBox_2); + gridLayout->setObjectName("gridLayout"); + lbl_TabDeckEditor_aAnalyzeDeck = new QLabel(groupBox_2); + lbl_TabDeckEditor_aAnalyzeDeck->setObjectName("lbl_TabDeckEditor_aAnalyzeDeck"); + + gridLayout->addWidget(lbl_TabDeckEditor_aAnalyzeDeck, 0, 0, 1, 1); + + TabDeckEditor_aAnalyzeDeck = new SequenceEdit("TabDeckEditor/aAnalyzeDeck",groupBox_2); + TabDeckEditor_aAnalyzeDeck->setObjectName("TabDeckEditor_aAnalyzeDeck"); + + gridLayout->addWidget(TabDeckEditor_aAnalyzeDeck, 0, 1, 1, 1); + + lbl_TabDeckEditor_aLoadDeckFromClipboard = new QLabel(groupBox_2); + lbl_TabDeckEditor_aLoadDeckFromClipboard->setObjectName("lbl_TabDeckEditor_aLoadDeckFromClipboard"); + + gridLayout->addWidget(lbl_TabDeckEditor_aLoadDeckFromClipboard, 0, 2, 1, 1); + + TabDeckEditor_aLoadDeckFromClipboard = new SequenceEdit("TabDeckEditor/aLoadDeckFromClipboard",groupBox_2); + TabDeckEditor_aLoadDeckFromClipboard->setObjectName("TabDeckEditor_aLoadDeckFromClipboard"); + + gridLayout->addWidget(TabDeckEditor_aLoadDeckFromClipboard, 0, 3, 1, 1); + + lbl_TabDeckEditor_aClearFilterAll = new QLabel(groupBox_2); + lbl_TabDeckEditor_aClearFilterAll->setObjectName("lbl_TabDeckEditor_aClearFilterAll"); + + gridLayout->addWidget(lbl_TabDeckEditor_aClearFilterAll, 1, 0, 1, 1); + + TabDeckEditor_aClearFilterAll = new SequenceEdit("TabDeckEditor/aClearFilterAll",groupBox_2); + TabDeckEditor_aClearFilterAll->setObjectName("TabDeckEditor_aClearFilterAll"); + + gridLayout->addWidget(TabDeckEditor_aClearFilterAll, 1, 1, 1, 1); + + lbl_TabDeckEditor_aNewDeck = new QLabel(groupBox_2); + lbl_TabDeckEditor_aNewDeck->setObjectName("lbl_TabDeckEditor_aNewDeck"); + + gridLayout->addWidget(lbl_TabDeckEditor_aNewDeck, 1, 2, 1, 1); + + TabDeckEditor_aNewDeck = new SequenceEdit("TabDeckEditor/aNewDeck",groupBox_2); + TabDeckEditor_aNewDeck->setObjectName("TabDeckEditor_aNewDeck"); + + gridLayout->addWidget(TabDeckEditor_aNewDeck, 1, 3, 1, 1); + + lbl_TabDeckEditor_aClearFilterOne = new QLabel(groupBox_2); + lbl_TabDeckEditor_aClearFilterOne->setObjectName("lbl_TabDeckEditor_aClearFilterOne"); + + gridLayout->addWidget(lbl_TabDeckEditor_aClearFilterOne, 2, 0, 1, 1); + + TabDeckEditor_aClearFilterOne = new SequenceEdit("TabDeckEditor/aClearFilterOne",groupBox_2); + TabDeckEditor_aClearFilterOne->setObjectName("TabDeckEditor_aClearFilterOne"); + + gridLayout->addWidget(TabDeckEditor_aClearFilterOne, 2, 1, 1, 1); + + lbl_TabDeckEditor_aOpenCustomFolder = new QLabel(groupBox_2); + lbl_TabDeckEditor_aOpenCustomFolder->setObjectName("lbl_TabDeckEditor_aOpenCustomFolder"); + + gridLayout->addWidget(lbl_TabDeckEditor_aOpenCustomFolder, 2, 2, 1, 1); + + TabDeckEditor_aOpenCustomFolder = new SequenceEdit("TabDeckEditor/aOpenCustomFolder",groupBox_2); + TabDeckEditor_aOpenCustomFolder->setObjectName("TabDeckEditor_aOpenCustomFolder"); + + gridLayout->addWidget(TabDeckEditor_aOpenCustomFolder, 2, 3, 1, 1); + + lbl_TabDeckEditor_aClose = new QLabel(groupBox_2); + lbl_TabDeckEditor_aClose->setObjectName("lbl_TabDeckEditor_aClose"); + + gridLayout->addWidget(lbl_TabDeckEditor_aClose, 3, 0, 1, 1); + + TabDeckEditor_aClose = new SequenceEdit("TabDeckEditor/aClose",groupBox_2); + TabDeckEditor_aClose->setObjectName("TabDeckEditor_aClose"); + + gridLayout->addWidget(TabDeckEditor_aClose, 3, 1, 1, 1); + + lbl_TabDeckEditor_aPrintDeck = new QLabel(groupBox_2); + lbl_TabDeckEditor_aPrintDeck->setObjectName("lbl_TabDeckEditor_aPrintDeck"); + + gridLayout->addWidget(lbl_TabDeckEditor_aPrintDeck, 3, 2, 1, 1); + + TabDeckEditor_aPrintDeck = new SequenceEdit("TabDeckEditor/aPrintDeck",groupBox_2); + TabDeckEditor_aPrintDeck->setObjectName("TabDeckEditor_aPrintDeck"); + + gridLayout->addWidget(TabDeckEditor_aPrintDeck, 3, 3, 1, 1); + + lbl_TabDeckEditor_aEditSets = new QLabel(groupBox_2); + lbl_TabDeckEditor_aEditSets->setObjectName("lbl_TabDeckEditor_aEditSets"); + + gridLayout->addWidget(lbl_TabDeckEditor_aEditSets, 4, 0, 1, 1); + + TabDeckEditor_aEditSets = new SequenceEdit("TabDeckEditor/aEditSets",groupBox_2); + TabDeckEditor_aEditSets->setObjectName("TabDeckEditor_aEditSets"); + + gridLayout->addWidget(TabDeckEditor_aEditSets, 4, 1, 1, 1); + + lbl_TabDeckEditor_aRemoveCard = new QLabel(groupBox_2); + lbl_TabDeckEditor_aRemoveCard->setObjectName("lbl_TabDeckEditor_aRemoveCard"); + + gridLayout->addWidget(lbl_TabDeckEditor_aRemoveCard, 4, 2, 1, 1); + + TabDeckEditor_aRemoveCard = new SequenceEdit("TabDeckEditor/aRemoveCard",groupBox_2); + TabDeckEditor_aRemoveCard->setObjectName("TabDeckEditor_aRemoveCard"); + + gridLayout->addWidget(TabDeckEditor_aRemoveCard, 4, 3, 1, 1); + + lbl_TabDeckEditor_aEditTokens = new QLabel(groupBox_2); + lbl_TabDeckEditor_aEditTokens->setObjectName("lbl_TabDeckEditor_aEditTokens"); + + gridLayout->addWidget(lbl_TabDeckEditor_aEditTokens, 5, 0, 1, 1); + + TabDeckEditor_aEditTokens = new SequenceEdit("TabDeckEditor/aEditTokens",groupBox_2); + TabDeckEditor_aEditTokens->setObjectName("TabDeckEditor_aEditTokens"); + + gridLayout->addWidget(TabDeckEditor_aEditTokens, 5, 1, 1, 1); + + lbl_TabDeckEditor_aResetLayout = new QLabel(groupBox_2); + lbl_TabDeckEditor_aResetLayout->setObjectName("lbl_TabDeckEditor_aResetLayout"); + + gridLayout->addWidget(lbl_TabDeckEditor_aResetLayout, 5, 2, 1, 1); + + TabDeckEditor_aResetLayout = new SequenceEdit("TabDeckEditor/aResetLayout",groupBox_2); + TabDeckEditor_aResetLayout->setObjectName("TabDeckEditor_aResetLayout"); + + gridLayout->addWidget(TabDeckEditor_aResetLayout, 5, 3, 1, 1); + + lbl_TabDeckEditor_aIncrement = new QLabel(groupBox_2); + lbl_TabDeckEditor_aIncrement->setObjectName("lbl_TabDeckEditor_aIncrement"); + + gridLayout->addWidget(lbl_TabDeckEditor_aIncrement, 6, 0, 1, 1); + + TabDeckEditor_aIncrement = new SequenceEdit("TabDeckEditor/aIncrement",groupBox_2); + TabDeckEditor_aIncrement->setObjectName("TabDeckEditor_aIncrement"); + + gridLayout->addWidget(TabDeckEditor_aIncrement, 6, 1, 1, 1); + + lbl_TabDeckEditor_aSaveDeck = new QLabel(groupBox_2); + lbl_TabDeckEditor_aSaveDeck->setObjectName("lbl_TabDeckEditor_aSaveDeck"); + + gridLayout->addWidget(lbl_TabDeckEditor_aSaveDeck, 6, 2, 1, 1); + + TabDeckEditor_aSaveDeck = new SequenceEdit("TabDeckEditor/aSaveDeck",groupBox_2); + TabDeckEditor_aSaveDeck->setObjectName("TabDeckEditor_aSaveDeck"); + + gridLayout->addWidget(TabDeckEditor_aSaveDeck, 6, 3, 1, 1); + + lbl_TabDeckEditor_aDecrement = new QLabel(groupBox_2); + lbl_TabDeckEditor_aDecrement->setObjectName("lbl_TabDeckEditor_aDecrement"); + + gridLayout->addWidget(lbl_TabDeckEditor_aDecrement, 7, 0, 1, 1); + + TabDeckEditor_aDecrement = new SequenceEdit("TabDeckEditor/aDecrement",groupBox_2); + TabDeckEditor_aDecrement->setObjectName("TabDeckEditor_aDecrement"); + + gridLayout->addWidget(TabDeckEditor_aDecrement, 7, 1, 1, 1); + + lbl_TabDeckEditor_aSaveDeckAs = new QLabel(groupBox_2); + lbl_TabDeckEditor_aSaveDeckAs->setObjectName("lbl_TabDeckEditor_aSaveDeckAs"); + + gridLayout->addWidget(lbl_TabDeckEditor_aSaveDeckAs, 7, 2, 1, 1); + + TabDeckEditor_aSaveDeckAs = new SequenceEdit("TabDeckEditor/aSaveDeckAs",groupBox_2); + TabDeckEditor_aSaveDeckAs->setObjectName("TabDeckEditor_aSaveDeckAs"); + + gridLayout->addWidget(TabDeckEditor_aSaveDeckAs, 7, 3, 1, 1); + + lbl_TabDeckEditor_aLoadDeck = new QLabel(groupBox_2); + lbl_TabDeckEditor_aLoadDeck->setObjectName("lbl_TabDeckEditor_aLoadDeck"); + + gridLayout->addWidget(lbl_TabDeckEditor_aLoadDeck, 8, 0, 1, 1); + + TabDeckEditor_aLoadDeck = new SequenceEdit("TabDeckEditor/aLoadDeck",groupBox_2); + TabDeckEditor_aLoadDeck->setObjectName("TabDeckEditor_aLoadDeck"); + + gridLayout->addWidget(TabDeckEditor_aLoadDeck, 8, 1, 1, 1); + + lbl_TabDeckEditor_aSaveDeckToClipboard = new QLabel(groupBox_2); + lbl_TabDeckEditor_aSaveDeckToClipboard->setObjectName("lbl_TabDeckEditor_aSaveDeckToClipboard"); + + gridLayout->addWidget(lbl_TabDeckEditor_aSaveDeckToClipboard, 8, 2, 1, 1); + + TabDeckEditor_aSaveDeckToClipboard = new SequenceEdit("TabDeckEditor/aSaveDeckToClipboard",groupBox_2); + TabDeckEditor_aSaveDeckToClipboard->setObjectName("TabDeckEditor_aSaveDeckToClipboard"); + + gridLayout->addWidget(TabDeckEditor_aSaveDeckToClipboard, 8, 3, 1, 1); + + gridLayout_3->addWidget(groupBox_2, 0, 1, 1, 1); + + groupBox_3 = new QGroupBox(tab); + groupBox_3->setObjectName("groupBox_3"); + horizontalLayout = new QHBoxLayout(groupBox_3); + horizontalLayout->setObjectName("horizontalLayout"); + groupBox_4 = new QGroupBox(groupBox_3); + groupBox_4->setObjectName("groupBox_4"); + gridLayout_4 = new QGridLayout(groupBox_4); + gridLayout_4->setObjectName("gridLayout_4"); + lbl_abstractCounter_sSet = new QLabel(groupBox_4); + lbl_abstractCounter_sSet->setObjectName("lbl_abstractCounter_sSet"); + + gridLayout_4->addWidget(lbl_abstractCounter_sSet, 0, 0, 1, 1); + + abstractCounter_aSet = new SequenceEdit("Player/aSet",groupBox_4); + abstractCounter_aSet->setObjectName("abstractCounter_aSet"); + + gridLayout_4->addWidget(abstractCounter_aSet, 0, 1, 1, 1); + + lbl_abstractCounter_aInc = new QLabel(groupBox_4); + lbl_abstractCounter_aInc->setObjectName("lbl_abstractCounter_aInc"); + + gridLayout_4->addWidget(lbl_abstractCounter_aInc, 1, 0, 1, 1); + + abstractCounter_Inc = new SequenceEdit("Player/Inc",groupBox_4); + abstractCounter_Inc->setObjectName("abstractCounter_Inc"); + + gridLayout_4->addWidget(abstractCounter_Inc, 1, 1, 1, 1); + + lbl_abstractCounter_aDec = new QLabel(groupBox_4); + lbl_abstractCounter_aDec->setObjectName("lbl_abstractCounter_aDec"); + + gridLayout_4->addWidget(lbl_abstractCounter_aDec, 2, 0, 1, 1); + + abstractCounter_aDec = new SequenceEdit("Player/aDec",groupBox_4); + abstractCounter_aDec->setObjectName("abstractCounter_aDec"); + + gridLayout_4->addWidget(abstractCounter_aDec, 2, 1, 1, 1); + + horizontalLayout->addWidget(groupBox_4); + + groupBox_5 = new QGroupBox(groupBox_3); + groupBox_5->setObjectName("groupBox_5"); + gridLayout_6 = new QGridLayout(groupBox_5); + gridLayout_6->setObjectName("gridLayout_6"); + lbl_Player_aSCRed = new QLabel(groupBox_5); + lbl_Player_aSCRed->setObjectName("lbl_Player_aSCRed"); + + gridLayout_6->addWidget(lbl_Player_aSCRed, 0, 0, 1, 1); + + Player_aSCRed = new SequenceEdit("Player/aSCRed",groupBox_5); + Player_aSCRed->setObjectName("Player_aSCRed"); + + gridLayout_6->addWidget(Player_aSCRed, 0, 1, 1, 1); + + lbl_Player_aCCRed = new QLabel(groupBox_5); + lbl_Player_aCCRed->setObjectName("lbl_Player_aCCRed"); + + gridLayout_6->addWidget(lbl_Player_aCCRed, 1, 0, 1, 1); + + Player_aCCRed = new SequenceEdit("Player/aCCRed",groupBox_5); + Player_aCCRed->setObjectName("Player_aCCRed"); + + gridLayout_6->addWidget(Player_aCCRed, 1, 1, 1, 1); + + lbl_Player_aRCRed = new QLabel(groupBox_5); + lbl_Player_aRCRed->setObjectName("lbl_Player_aRCRed"); + + gridLayout_6->addWidget(lbl_Player_aRCRed, 2, 0, 1, 1); + + Player_aRCRed = new SequenceEdit("Player/aRCRed",groupBox_5); + Player_aRCRed->setObjectName("Player_aRCRed"); + + gridLayout_6->addWidget(Player_aRCRed, 2, 1, 1, 1); + + horizontalLayout->addWidget(groupBox_5); + + groupBox_6 = new QGroupBox(groupBox_3); + groupBox_6->setObjectName("groupBox_6"); + gridLayout_7 = new QGridLayout(groupBox_6); + gridLayout_7->setObjectName("gridLayout_7"); + lbl_Player_aSCGreen = new QLabel(groupBox_6); + lbl_Player_aSCGreen->setObjectName("lbl_Player_aSCGreen"); + + gridLayout_7->addWidget(lbl_Player_aSCGreen, 0, 0, 1, 1); + + Player_aSCGreen = new SequenceEdit("Player/aSCGreen",groupBox_6); + Player_aSCGreen->setObjectName("Player_aSCGreen"); + + gridLayout_7->addWidget(Player_aSCGreen, 0, 1, 1, 1); + + lbl_Player_aCCGreen = new QLabel(groupBox_6); + lbl_Player_aCCGreen->setObjectName("lbl_Player_aCCGreen"); + + gridLayout_7->addWidget(lbl_Player_aCCGreen, 1, 0, 1, 1); + + Player_aCCGreen = new SequenceEdit("Player/aCCGreen",groupBox_6); + Player_aCCGreen->setObjectName("Player_aCCGreen"); + + gridLayout_7->addWidget(Player_aCCGreen, 1, 1, 1, 1); + + lbl_Player_aRCGreen = new QLabel(groupBox_6); + lbl_Player_aRCGreen->setObjectName("lbl_Player_aRCGreen"); + + gridLayout_7->addWidget(lbl_Player_aRCGreen, 2, 0, 1, 1); + + Player_aRCGreen = new SequenceEdit("Player/aRCGreen",groupBox_6); + Player_aRCGreen->setObjectName("Player_aRCGreen"); + + gridLayout_7->addWidget(Player_aRCGreen, 2, 1, 1, 1); + + horizontalLayout->addWidget(groupBox_6); + + groupBox_7 = new QGroupBox(groupBox_3); + groupBox_7->setObjectName("groupBox_7"); + gridLayout_8 = new QGridLayout(groupBox_7); + gridLayout_8->setObjectName("gridLayout_8"); + lbl_Player_aSCYellow = new QLabel(groupBox_7); + lbl_Player_aSCYellow->setObjectName("lbl_Player_aSCYellow"); + + gridLayout_8->addWidget(lbl_Player_aSCYellow, 0, 0, 1, 1); + + Player_aSCYellow = new SequenceEdit("Player/aSCYellow",groupBox_7); + Player_aSCYellow->setObjectName("Player_aSCYellow"); + + gridLayout_8->addWidget(Player_aSCYellow, 0, 1, 1, 1); + + lbl_Player_aCCYellow = new QLabel(groupBox_7); + lbl_Player_aCCYellow->setObjectName("lbl_Player_aCCYellow"); + + gridLayout_8->addWidget(lbl_Player_aCCYellow, 1, 0, 1, 1); + + Player_aCCYellow = new SequenceEdit("Player/aCCYellow",groupBox_7); + Player_aCCYellow->setObjectName("Player_aCCYellow"); + + gridLayout_8->addWidget(Player_aCCYellow, 1, 1, 1, 1); + + lbl_Player_aRCYellow = new QLabel(groupBox_7); + lbl_Player_aRCYellow->setObjectName("lbl_Player_aRCYellow"); + + gridLayout_8->addWidget(lbl_Player_aRCYellow, 2, 0, 1, 1); + + Player_aRCYellow = new SequenceEdit("Player/aRCYellow",groupBox_7); + Player_aRCYellow->setObjectName("Player_aRCYellow"); + + gridLayout_8->addWidget(Player_aRCYellow, 2, 1, 1, 1); + + horizontalLayout->addWidget(groupBox_7); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_3->addItem(verticalSpacer, 2, 0, 1, 1); + + tabWidget->addTab(tab, QString()); + tab_2 = new QWidget(); + tab_2->setObjectName("tab_2"); + gridLayout_17 = new QGridLayout(tab_2); + gridLayout_17->setObjectName("gridLayout_17"); + groupBox_9 = new QGroupBox(tab_2); + groupBox_9->setObjectName("groupBox_9"); + verticalLayout = new QVBoxLayout(groupBox_9); + verticalLayout->setObjectName("verticalLayout"); + groupBox_12 = new QGroupBox(groupBox_9); + groupBox_12->setObjectName("groupBox_12"); + gridLayout_12 = new QGridLayout(groupBox_12); + gridLayout_12->setObjectName("gridLayout_12"); + Player_aDecPT = new SequenceEdit("Player/aDecPT",groupBox_12); + Player_aDecPT->setObjectName("Player_aDecPT"); + + gridLayout_12->addWidget(Player_aDecPT, 2, 1, 1, 1); + + Player_aIncPT = new SequenceEdit("Player/aIncPT",groupBox_12); + Player_aIncPT->setObjectName("Player_aIncPT"); + + gridLayout_12->addWidget(Player_aIncPT, 1, 1, 1, 1); + + lbl_Player_aIncPT = new QLabel(groupBox_12); + lbl_Player_aIncPT->setObjectName("lbl_Player_aIncPT"); + + gridLayout_12->addWidget(lbl_Player_aIncPT, 1, 0, 1, 1); + + lbl_Player_aDecPT = new QLabel(groupBox_12); + lbl_Player_aDecPT->setObjectName("lbl_Player_aDecPT"); + + gridLayout_12->addWidget(lbl_Player_aDecPT, 2, 0, 1, 1); + + Player_aSetPT = new SequenceEdit("Player/aSetPT",groupBox_12); + Player_aSetPT->setObjectName("Player_aSetPT"); + + gridLayout_12->addWidget(Player_aSetPT, 0, 1, 1, 1); + + lbl_Player_aSetPT = new QLabel(groupBox_12); + lbl_Player_aSetPT->setObjectName("lbl_Player_aSetPT"); + + gridLayout_12->addWidget(lbl_Player_aSetPT, 0, 0, 1, 1); + + verticalLayout->addWidget(groupBox_12); + + groupBox_11 = new QGroupBox(groupBox_9); + groupBox_11->setObjectName("groupBox_11"); + gridLayout_11 = new QGridLayout(groupBox_11); + gridLayout_11->setObjectName("gridLayout_11"); + lbl_Player_aDecT = new QLabel(groupBox_11); + lbl_Player_aDecT->setObjectName("lbl_Player_aDecT"); + + gridLayout_11->addWidget(lbl_Player_aDecT, 1, 0, 1, 1); + + Player_aDecT = new SequenceEdit("Player/aDecT",groupBox_11); + Player_aDecT->setObjectName("Player_aDecT"); + + gridLayout_11->addWidget(Player_aDecT, 1, 1, 1, 1); + + lbl_Player_aIncT = new QLabel(groupBox_11); + lbl_Player_aIncT->setObjectName("lbl_Player_aIncT"); + + gridLayout_11->addWidget(lbl_Player_aIncT, 0, 0, 1, 1); + + Player_aIncT = new SequenceEdit("Player/aIncT",groupBox_11); + Player_aIncT->setObjectName("Player_aIncT"); + + gridLayout_11->addWidget(Player_aIncT, 0, 1, 1, 1); + + verticalLayout->addWidget(groupBox_11); + + groupBox_10 = new QGroupBox(groupBox_9); + groupBox_10->setObjectName("groupBox_10"); + gridLayout_10 = new QGridLayout(groupBox_10); + gridLayout_10->setObjectName("gridLayout_10"); + lbl_Player_aDecP = new QLabel(groupBox_10); + lbl_Player_aDecP->setObjectName("lbl_Player_aDecP"); + + gridLayout_10->addWidget(lbl_Player_aDecP, 1, 0, 1, 1); + + Player_aDecP = new SequenceEdit("Player/aDecP",groupBox_10); + Player_aDecP->setObjectName("Player_aDecP"); + + gridLayout_10->addWidget(Player_aDecP, 1, 1, 1, 1); + + Player_IncP = new SequenceEdit("Player/IncP",groupBox_10); + Player_IncP->setObjectName("Player_IncP"); + + gridLayout_10->addWidget(Player_IncP, 0, 1, 1, 1); + + lbl_Player_IncP = new QLabel(groupBox_10); + lbl_Player_IncP->setObjectName("lbl_Player_IncP"); + + gridLayout_10->addWidget(lbl_Player_IncP, 0, 0, 1, 1); + + verticalLayout->addWidget(groupBox_10); + + gridLayout_17->addWidget(groupBox_9, 0, 1, 1, 1); + + groupBox_8 = new QGroupBox(tab_2); + groupBox_8->setObjectName("groupBox_8"); + gridLayout_5 = new QGridLayout(groupBox_8); + gridLayout_5->setObjectName("gridLayout_5"); + lbl_TabGame_phase0 = new QLabel(groupBox_8); + lbl_TabGame_phase0->setObjectName("lbl_TabGame_phase0"); + + gridLayout_5->addWidget(lbl_TabGame_phase0, 0, 0, 1, 1); + + TabGame_phase0 = new SequenceEdit("Player/phase0",groupBox_8); + TabGame_phase0->setObjectName("TabGame_phase0"); + + gridLayout_5->addWidget(TabGame_phase0, 0, 1, 1, 1); + + lbl_TabGame_phase1 = new QLabel(groupBox_8); + lbl_TabGame_phase1->setObjectName("lbl_TabGame_phase1"); + + gridLayout_5->addWidget(lbl_TabGame_phase1, 1, 0, 1, 1); + + TabGame_phase1 = new SequenceEdit("Player/phase1",groupBox_8); + TabGame_phase1->setObjectName("TabGame_phase1"); + + gridLayout_5->addWidget(TabGame_phase1, 1, 1, 1, 1); + + lbl_TabGame_phase2 = new QLabel(groupBox_8); + lbl_TabGame_phase2->setObjectName("lbl_TabGame_phase2"); + + gridLayout_5->addWidget(lbl_TabGame_phase2, 2, 0, 1, 1); + + TabGame_phase2 = new SequenceEdit("Player/phase2",groupBox_8); + TabGame_phase2->setObjectName("TabGame_phase2"); + + gridLayout_5->addWidget(TabGame_phase2, 2, 1, 1, 1); + + lbl_TabGame_phase3 = new QLabel(groupBox_8); + lbl_TabGame_phase3->setObjectName("lbl_TabGame_phase3"); + + gridLayout_5->addWidget(lbl_TabGame_phase3, 3, 0, 1, 1); + + TabGame_phase3 = new SequenceEdit("Player/phase3",groupBox_8); + TabGame_phase3->setObjectName("TabGame_phase3"); + + gridLayout_5->addWidget(TabGame_phase3, 3, 1, 1, 1); + + lbl_TabGame_phase4 = new QLabel(groupBox_8); + lbl_TabGame_phase4->setObjectName("lbl_TabGame_phase4"); + + gridLayout_5->addWidget(lbl_TabGame_phase4, 4, 0, 1, 1); + + TabGame_phase4 = new SequenceEdit("Player/phase4",groupBox_8); + TabGame_phase4->setObjectName("TabGame_phase4"); + + gridLayout_5->addWidget(TabGame_phase4, 4, 1, 1, 1); + + lbl_TabGame_phase5 = new QLabel(groupBox_8); + lbl_TabGame_phase5->setObjectName("lbl_TabGame_phase5"); + + gridLayout_5->addWidget(lbl_TabGame_phase5, 5, 0, 1, 1); + + TabGame_phase5 = new SequenceEdit("Player/phase5",groupBox_8); + TabGame_phase5->setObjectName("TabGame_phase5"); + + gridLayout_5->addWidget(TabGame_phase5, 5, 1, 1, 1); + + lbl_TabGame_phase6 = new QLabel(groupBox_8); + lbl_TabGame_phase6->setObjectName("lbl_TabGame_phase6"); + + gridLayout_5->addWidget(lbl_TabGame_phase6, 6, 0, 1, 1); + + lbl_TabGame_phase7 = new QLabel(groupBox_8); + lbl_TabGame_phase7->setObjectName("lbl_TabGame_phase7"); + + gridLayout_5->addWidget(lbl_TabGame_phase7, 7, 0, 1, 1); + + TabGame_phase6 = new SequenceEdit("Player/phase6",groupBox_8); + TabGame_phase6->setObjectName("TabGame_phase6"); + + gridLayout_5->addWidget(TabGame_phase6, 6, 1, 1, 1); + + lbl_TabGame_phase8 = new QLabel(groupBox_8); + lbl_TabGame_phase8->setObjectName("lbl_TabGame_phase8"); + + gridLayout_5->addWidget(lbl_TabGame_phase8, 8, 0, 1, 1); + + TabGame_phase7 = new SequenceEdit("Player/phase7",groupBox_8); + TabGame_phase7->setObjectName("TabGame_phase7"); + + gridLayout_5->addWidget(TabGame_phase7, 7, 1, 1, 1); + + lbl_TabGame_phase9 = new QLabel(groupBox_8); + lbl_TabGame_phase9->setObjectName("lbl_TabGame_phase9"); + + gridLayout_5->addWidget(lbl_TabGame_phase9, 9, 0, 1, 1); + + TabGame_phase8 = new SequenceEdit("Player/phase8",groupBox_8); + TabGame_phase8->setObjectName("TabGame_phase8"); + + gridLayout_5->addWidget(TabGame_phase8, 8, 1, 1, 1); + + lbl_TabGame_phase10 = new QLabel(groupBox_8); + lbl_TabGame_phase10->setObjectName("lbl_TabGame_phase10"); + + gridLayout_5->addWidget(lbl_TabGame_phase10, 10, 0, 1, 1); + + TabGame_phase9 = new SequenceEdit("Player/phase9",groupBox_8); + TabGame_phase9->setObjectName("TabGame_phase9"); + + gridLayout_5->addWidget(TabGame_phase9, 9, 1, 1, 1); + + lbl_TabGame_aNextPhase = new QLabel(groupBox_8); + lbl_TabGame_aNextPhase->setObjectName("lbl_TabGame_aNextPhase"); + + gridLayout_5->addWidget(lbl_TabGame_aNextPhase, 11, 0, 1, 1); + + TabGame_phase10 = new SequenceEdit("Player/phase10",groupBox_8); + TabGame_phase10->setObjectName("TabGame_phase10"); + + gridLayout_5->addWidget(TabGame_phase10, 10, 1, 1, 1); + + lbl_TabGame_aNextTurn = new QLabel(groupBox_8); + lbl_TabGame_aNextTurn->setObjectName("lbl_TabGame_aNextTurn"); + + gridLayout_5->addWidget(lbl_TabGame_aNextTurn, 12, 0, 1, 1); + + TabGame_aNextPhase = new SequenceEdit("Player/aNextPhase",groupBox_8); + TabGame_aNextPhase->setObjectName("TabGame_aNextPhase"); + + gridLayout_5->addWidget(TabGame_aNextPhase, 11, 1, 1, 1); + + TabGame_aNextTurn = new SequenceEdit("Player/aNextTurn",groupBox_8); + TabGame_aNextTurn->setObjectName("TabGame_aNextTurn"); + + gridLayout_5->addWidget(TabGame_aNextTurn, 12, 1, 1, 1); + + gridLayout_17->addWidget(groupBox_8, 0, 0, 1, 1); + + groupBox_13 = new QGroupBox(tab_2); + groupBox_13->setObjectName("groupBox_13"); + gridLayout_13 = new QGridLayout(groupBox_13); + gridLayout_13->setObjectName("gridLayout_13"); + lbl_Player_aTap = new QLabel(groupBox_13); + lbl_Player_aTap->setObjectName("lbl_Player_aTap"); + + gridLayout_13->addWidget(lbl_Player_aTap, 0, 0, 1, 1); + + Player_aTap = new SequenceEdit("Player/aTap",groupBox_13); + Player_aTap->setObjectName("Player_aTap"); + + gridLayout_13->addWidget(Player_aTap, 0, 1, 1, 1); + + lbl_Player_aUntap = new QLabel(groupBox_13); + lbl_Player_aUntap->setObjectName("lbl_Player_aUntap"); + + gridLayout_13->addWidget(lbl_Player_aUntap, 1, 0, 1, 1); + + Player_aUntap = new SequenceEdit("Player/aUntap",groupBox_13); + Player_aUntap->setObjectName("Player_aUntap"); + + gridLayout_13->addWidget(Player_aUntap, 1, 1, 1, 1); + + lbl_Player_aUntapAll = new QLabel(groupBox_13); + lbl_Player_aUntapAll->setObjectName("lbl_Player_aUntapAll"); + + gridLayout_13->addWidget(lbl_Player_aUntapAll, 2, 0, 1, 1); + + Player_aUntapAll = new SequenceEdit("Player/aUntapAll",groupBox_13); + Player_aUntapAll->setObjectName("Player_aUntapAll"); + + gridLayout_13->addWidget(Player_aUntapAll, 2, 1, 1, 1); + + lbl_Player_aDoesntUntap = new QLabel(groupBox_13); + lbl_Player_aDoesntUntap->setObjectName("lbl_Player_aDoesntUntap"); + + gridLayout_13->addWidget(lbl_Player_aDoesntUntap, 3, 0, 1, 1); + + Player_aDoesntUntap = new SequenceEdit("Player/aDoesntUntap",groupBox_13); + Player_aDoesntUntap->setObjectName("Player_aDoesntUntap"); + + gridLayout_13->addWidget(Player_aDoesntUntap, 3, 1, 1, 1); + + lbl_Player_aFlip = new QLabel(groupBox_13); + lbl_Player_aFlip->setObjectName("lbl_Player_aFlip"); + + gridLayout_13->addWidget(lbl_Player_aFlip, 4, 0, 1, 1); + + Player_aFlip = new SequenceEdit("Player/aFlip",groupBox_13); + Player_aFlip->setObjectName("Player_aFlip"); + + gridLayout_13->addWidget(Player_aFlip, 4, 1, 1, 1); + + lbl_Player_aPeek = new QLabel(groupBox_13); + lbl_Player_aPeek->setObjectName("lbl_Player_aPeek"); + + gridLayout_13->addWidget(lbl_Player_aPeek, 5, 0, 1, 1); + + Player_aPeek = new SequenceEdit("Player/aPeek",groupBox_13); + Player_aPeek->setObjectName("Player_aPeek"); + + gridLayout_13->addWidget(Player_aPeek, 5, 1, 1, 1); + + lbl_Player_aPlay = new QLabel(groupBox_13); + lbl_Player_aPlay->setObjectName("lbl_Player_aPlay"); + + gridLayout_13->addWidget(lbl_Player_aPlay, 6, 0, 1, 1); + + Player_aPlay = new SequenceEdit("Player/aPlay",groupBox_13); + Player_aPlay->setObjectName("Player_aPlay"); + + gridLayout_13->addWidget(Player_aPlay, 6, 1, 1, 1); + + lbl_Player_aAttach = new QLabel(groupBox_13); + lbl_Player_aAttach->setObjectName("lbl_Player_aAttach"); + + gridLayout_13->addWidget(lbl_Player_aAttach, 7, 0, 1, 1); + + Player_aAttach = new SequenceEdit("Player/aAttach",groupBox_13); + Player_aAttach->setObjectName("Player_aAttach"); + + gridLayout_13->addWidget(Player_aAttach, 7, 1, 1, 1); + + lbl_Player_aUnattach = new QLabel(groupBox_13); + lbl_Player_aUnattach->setObjectName("lbl_Player_aUnattach"); + + gridLayout_13->addWidget(lbl_Player_aUnattach, 8, 0, 1, 1); + + Player_aUnattach = new SequenceEdit("Player/aUnattach",groupBox_13); + Player_aUnattach->setObjectName("Player_aUnattach"); + + gridLayout_13->addWidget(Player_aUnattach, 8, 1, 1, 1); + + lbl_Player_aClone = new QLabel(groupBox_13); + lbl_Player_aClone->setObjectName("lbl_Player_aClone"); + + gridLayout_13->addWidget(lbl_Player_aClone, 9, 0, 1, 1); + + Player_aClone = new SequenceEdit("Player/aClone",groupBox_13); + Player_aClone->setObjectName("Player_aClone"); + + gridLayout_13->addWidget(Player_aClone, 9, 1, 1, 1); + + lbl_Player_aCreateToken = new QLabel(groupBox_13); + lbl_Player_aCreateToken->setObjectName("lbl_Player_aCreateToken"); + + gridLayout_13->addWidget(lbl_Player_aCreateToken, 10, 0, 1, 1); + + Player_aCreateToken = new SequenceEdit("Player/aCreateToken",groupBox_13); + Player_aCreateToken->setObjectName("Player_aCreateToken"); + + gridLayout_13->addWidget(Player_aCreateToken, 10, 1, 1, 1); + + lbl_Player_aCreateAnotherToken = new QLabel(groupBox_13); + lbl_Player_aCreateAnotherToken->setObjectName("lbl_Player_aCreateAnotherToken"); + + gridLayout_13->addWidget(lbl_Player_aCreateAnotherToken, 11, 0, 1, 1); + + Player_aCreateAnotherToken = new SequenceEdit("Player/aCreateAnotherToken",groupBox_13); + Player_aCreateAnotherToken->setObjectName("Player_aCreateAnotherToken"); + + gridLayout_13->addWidget(Player_aCreateAnotherToken, 11, 1, 1, 1); + + lbl_Player_aSetAnnotation = new QLabel(groupBox_13); + lbl_Player_aSetAnnotation->setObjectName("lbl_Player_aSetAnnotation"); + + gridLayout_13->addWidget(lbl_Player_aSetAnnotation, 12, 0, 1, 1); + + Player_aSetAnnotation = new SequenceEdit("Player/aSetAnnotation",groupBox_13); + Player_aSetAnnotation->setObjectName("Player_aSetAnnotation"); + + gridLayout_13->addWidget(Player_aSetAnnotation, 12, 1, 1, 1); + + gridLayout_17->addWidget(groupBox_13, 0, 2, 1, 1); + + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_17->addItem(verticalSpacer_2, 1, 1, 1, 1); + + tabWidget->addTab(tab_2, QString()); + tab_3 = new QWidget(); + tab_3->setObjectName("tab_3"); + gridLayout_20 = new QGridLayout(tab_3); + gridLayout_20->setObjectName("gridLayout_20"); + groupBox_15 = new QGroupBox(tab_3); + groupBox_15->setObjectName("groupBox_15"); + gridLayout_15 = new QGridLayout(groupBox_15); + gridLayout_15->setObjectName("gridLayout_15"); + lbl_Player_aMoveToBottomLibrary = new QLabel(groupBox_15); + lbl_Player_aMoveToBottomLibrary->setObjectName("lbl_Player_aMoveToBottomLibrary"); + + gridLayout_15->addWidget(lbl_Player_aMoveToBottomLibrary, 0, 0, 1, 1); + + Player_aMoveToBottomLibrary = new SequenceEdit("Player/aMoveToBottomLibrary",groupBox_15); + Player_aMoveToBottomLibrary->setObjectName("Player_aMoveToBottomLibrary"); + + gridLayout_15->addWidget(Player_aMoveToBottomLibrary, 0, 1, 1, 1); + + lbl_Player_aMoveToTopLibrary = new QLabel(groupBox_15); + lbl_Player_aMoveToTopLibrary->setObjectName("lbl_Player_aMoveToTopLibrary"); + + gridLayout_15->addWidget(lbl_Player_aMoveToTopLibrary, 1, 0, 1, 1); + + Player_aMoveToTopLibrary = new SequenceEdit("Player/aMoveToTopLibrary",groupBox_15); + Player_aMoveToTopLibrary->setObjectName("Player_aMoveToTopLibrary"); + + gridLayout_15->addWidget(Player_aMoveToTopLibrary, 1, 1, 1, 1); + + lbl_Player_aMoveToGraveyard = new QLabel(groupBox_15); + lbl_Player_aMoveToGraveyard->setObjectName("lbl_Player_aMoveToGraveyard"); + + gridLayout_15->addWidget(lbl_Player_aMoveToGraveyard, 2, 0, 1, 1); + + Player_aMoveToGraveyard = new SequenceEdit("Player/aMoveToGraveyard",groupBox_15); + Player_aMoveToGraveyard->setObjectName("Player_aMoveToGraveyard"); + + gridLayout_15->addWidget(Player_aMoveToGraveyard, 2, 1, 1, 1); + + lbl_Player_aMoveToExile = new QLabel(groupBox_15); + lbl_Player_aMoveToExile->setObjectName("lbl_Player_aMoveToExile"); + + gridLayout_15->addWidget(lbl_Player_aMoveToExile, 3, 0, 1, 1); + + Player_aMoveToExile = new SequenceEdit("Player/aMoveToExile",groupBox_15); + Player_aMoveToExile->setObjectName("Player_aMoveToExile"); + + gridLayout_15->addWidget(Player_aMoveToExile, 3, 1, 1, 1); + + lbl_Player_aMoveToHand = new QLabel(groupBox_15); + lbl_Player_aMoveToHand->setObjectName("lbl_Player_aMoveToHand"); + + gridLayout_15->addWidget(lbl_Player_aMoveToHand, 4, 0, 1, 1); + + Player_aMoveToHand = new SequenceEdit("Player/aMoveToHand",groupBox_15); + Player_aMoveToHand->setObjectName("Player_aMoveToHand"); + + gridLayout_15->addWidget(Player_aMoveToHand, 4, 1, 1, 1); + + gridLayout_20->addWidget(groupBox_15, 0, 1, 1, 1); + + groupBox_16 = new QGroupBox(tab_3); + groupBox_16->setObjectName("groupBox_16"); + gridLayout_16 = new QGridLayout(groupBox_16); + gridLayout_16->setObjectName("gridLayout_16"); + lbl_Player_aViewGraveyard = new QLabel(groupBox_16); + lbl_Player_aViewGraveyard->setObjectName("lbl_Player_aViewGraveyard"); + + gridLayout_16->addWidget(lbl_Player_aViewGraveyard, 0, 0, 1, 1); + + Player_aViewGraveyard = new SequenceEdit("Player/aViewGraveyard",groupBox_16); + Player_aViewGraveyard->setObjectName("Player_aViewGraveyard"); + + gridLayout_16->addWidget(Player_aViewGraveyard, 0, 1, 1, 1); + + lbl_Player_aViewLibrary = new QLabel(groupBox_16); + lbl_Player_aViewLibrary->setObjectName("lbl_Player_aViewLibrary"); + + gridLayout_16->addWidget(lbl_Player_aViewLibrary, 1, 0, 1, 1); + + Player_aViewLibrary = new SequenceEdit("Player/aViewLibrary",groupBox_16); + Player_aViewLibrary->setObjectName("Player_aViewLibrary"); + + gridLayout_16->addWidget(Player_aViewLibrary, 1, 1, 1, 1); + + lbl_Player_aViewTopCards = new QLabel(groupBox_16); + lbl_Player_aViewTopCards->setObjectName("lbl_Player_aViewTopCards"); + + gridLayout_16->addWidget(lbl_Player_aViewTopCards, 2, 0, 1, 1); + + Player_aViewTopCards = new SequenceEdit("Player/aViewTopCards",groupBox_16); + Player_aViewTopCards->setObjectName("Player_aViewTopCards"); + + gridLayout_16->addWidget(Player_aViewTopCards, 2, 1, 1, 1); + + lbl_Player_aViewSideboard = new QLabel(groupBox_16); + lbl_Player_aViewSideboard->setObjectName("lbl_Player_aViewSideboard"); + + gridLayout_16->addWidget(lbl_Player_aViewSideboard, 3, 0, 1, 1); + + Player_aViewSideboard = new SequenceEdit("Player/aViewSideboard",groupBox_16); + Player_aViewSideboard->setObjectName("Player_aViewSideboard"); + + gridLayout_16->addWidget(Player_aViewSideboard, 3, 1, 1, 1); + + lbl_Player_aViewRfg = new QLabel(groupBox_16); + lbl_Player_aViewRfg->setObjectName("lbl_Player_aViewRfg"); + + gridLayout_16->addWidget(lbl_Player_aViewRfg, 4, 0, 1, 1); + + Player_aViewRfg = new SequenceEdit("Player/aViewRfg",groupBox_16); + Player_aViewRfg->setObjectName("Player_aViewRfg"); + + gridLayout_16->addWidget(Player_aViewRfg, 4, 1, 1, 1); + + lbl_GameView_aCloseMostRecentZoneView = new QLabel(groupBox_16); + lbl_GameView_aCloseMostRecentZoneView->setObjectName("lbl_GameView_aCloseMostRecentZoneView"); + + gridLayout_16->addWidget(lbl_GameView_aCloseMostRecentZoneView, 5, 0, 1, 1); + + GameView_aCloseMostRecentZoneView = new SequenceEdit("Player/aCloseMostRecentZoneView",groupBox_16); + GameView_aCloseMostRecentZoneView->setObjectName("GameView_aCloseMostRecentZoneView"); + + gridLayout_16->addWidget(GameView_aCloseMostRecentZoneView, 5, 1, 1, 1); + + gridLayout_20->addWidget(groupBox_16, 0, 2, 1, 1); + + groupBox_17 = new QGroupBox(tab_3); + groupBox_17->setObjectName("groupBox_17"); + gridLayout_18 = new QGridLayout(groupBox_17); + gridLayout_18->setObjectName("gridLayout_18"); + DeckViewContainer_loadRemoteButton = new SequenceEdit("DeckViewContainer/loadRemoteButton",groupBox_17); + DeckViewContainer_loadRemoteButton->setObjectName("DeckViewContainer_loadRemoteButton"); + + gridLayout_18->addWidget(DeckViewContainer_loadRemoteButton, 2, 1, 1, 1); + + DeckViewContainer_loadLocalButton = new SequenceEdit("DeckViewContainer/loadLocalButton",groupBox_17); + DeckViewContainer_loadLocalButton->setObjectName("DeckViewContainer_loadLocalButton"); + + gridLayout_18->addWidget(DeckViewContainer_loadLocalButton, 0, 1, 1, 1); + + lbl_DeckViewContainer_loadRemoteButton = new QLabel(groupBox_17); + lbl_DeckViewContainer_loadRemoteButton->setObjectName("lbl_DeckViewContainer_loadRemoteButton"); + + gridLayout_18->addWidget(lbl_DeckViewContainer_loadRemoteButton, 2, 0, 1, 1); + + lbl_DeckViewContainer_loadLocalButton = new QLabel(groupBox_17); + lbl_DeckViewContainer_loadLocalButton->setObjectName("lbl_DeckViewContainer_loadLocalButton"); + + gridLayout_18->addWidget(lbl_DeckViewContainer_loadLocalButton, 0, 0, 1, 1); + + gridLayout_20->addWidget(groupBox_17, 1, 0, 1, 1); + + groupBox_18 = new QGroupBox(tab_3); + groupBox_18->setObjectName("groupBox_18"); + gridLayout_19 = new QGridLayout(groupBox_18); + gridLayout_19->setObjectName("gridLayout_19"); + lbl_Player_aDrawArrow = new QLabel(groupBox_18); + lbl_Player_aDrawArrow->setObjectName("lbl_Player_aDrawArrow"); + + gridLayout_19->addWidget(lbl_Player_aDrawArrow, 0, 0, 1, 1); + + Player_aDrawArrow = new SequenceEdit("Player/aDrawArrow",groupBox_18); + Player_aDrawArrow->setObjectName("Player_aDrawArrow"); + + gridLayout_19->addWidget(Player_aDrawArrow, 0, 1, 1, 1); + + lbl_TabGame_aLeaveGame = new QLabel(groupBox_18); + lbl_TabGame_aLeaveGame->setObjectName("lbl_TabGame_aLeaveGame"); + + gridLayout_19->addWidget(lbl_TabGame_aLeaveGame, 0, 2, 1, 1); + + TabGame_aLeaveGame = new SequenceEdit("Player/aLeaveGame",groupBox_18); + TabGame_aLeaveGame->setObjectName("TabGame_aLeaveGame"); + + gridLayout_19->addWidget(TabGame_aLeaveGame, 0, 3, 1, 1); + + lbl_TabGame_aRemoveLocalArrows = new QLabel(groupBox_18); + lbl_TabGame_aRemoveLocalArrows->setObjectName("lbl_TabGame_aRemoveLocalArrows"); + + gridLayout_19->addWidget(lbl_TabGame_aRemoveLocalArrows, 1, 0, 1, 1); + + TabGame_aRemoveLocalArrows = new SequenceEdit("Player/aRemoveLocalArrows",groupBox_18); + TabGame_aRemoveLocalArrows->setObjectName("TabGame_aRemoveLocalArrows"); + + gridLayout_19->addWidget(TabGame_aRemoveLocalArrows, 1, 1, 1, 1); + + lbl_TabGame_aConcede = new QLabel(groupBox_18); + lbl_TabGame_aConcede->setObjectName("lbl_TabGame_aConcede"); + + gridLayout_19->addWidget(lbl_TabGame_aConcede, 1, 2, 1, 1); + + TabGame_aConcede = new SequenceEdit("Player/aConcede",groupBox_18); + TabGame_aConcede->setObjectName("TabGame_aConcede"); + + gridLayout_19->addWidget(TabGame_aConcede, 1, 3, 1, 1); + + lbl_Player_aRollDie = new QLabel(groupBox_18); + lbl_Player_aRollDie->setObjectName("lbl_Player_aRollDie"); + + gridLayout_19->addWidget(lbl_Player_aRollDie, 2, 0, 1, 1); + + Player_aRollDie = new SequenceEdit("Player/aRollDie",groupBox_18); + Player_aRollDie->setObjectName("Player_aRollDie"); + + gridLayout_19->addWidget(Player_aRollDie, 2, 1, 1, 1); + + lbl_TabGame_aRotateViewCW = new QLabel(groupBox_18); + lbl_TabGame_aRotateViewCW->setObjectName("lbl_TabGame_aRotateViewCW"); + + gridLayout_19->addWidget(lbl_TabGame_aRotateViewCW, 2, 2, 1, 1); + + TabGame_aRotateViewCW = new SequenceEdit("Player/aRotateViewCW",groupBox_18); + TabGame_aRotateViewCW->setObjectName("TabGame_aRotateViewCW"); + + gridLayout_19->addWidget(TabGame_aRotateViewCW, 2, 3, 1, 1); + + lbl_Player_aShuffle = new QLabel(groupBox_18); + lbl_Player_aShuffle->setObjectName("lbl_Player_aShuffle"); + + gridLayout_19->addWidget(lbl_Player_aShuffle, 3, 0, 1, 1); + + Player_aShuffle = new SequenceEdit("Player/aShuffle",groupBox_18); + Player_aShuffle->setObjectName("Player_aShuffle"); + + gridLayout_19->addWidget(Player_aShuffle, 3, 1, 1, 1); + + lbl_TabGame_aRotateViewCCW = new QLabel(groupBox_18); + lbl_TabGame_aRotateViewCCW->setObjectName("lbl_TabGame_aRotateViewCCW"); + + gridLayout_19->addWidget(lbl_TabGame_aRotateViewCCW, 3, 2, 1, 1); + + TabGame_aRotateViewCCW = new SequenceEdit("Player/aRotateViewCCW",groupBox_18); + TabGame_aRotateViewCCW->setObjectName("TabGame_aRotateViewCCW"); + + gridLayout_19->addWidget(TabGame_aRotateViewCCW, 3, 3, 1, 1); + + gridLayout_20->addWidget(groupBox_18, 1, 1, 1, 2); + + groupBox_14 = new QGroupBox(tab_3); + groupBox_14->setObjectName("groupBox_14"); + gridLayout_14 = new QGridLayout(groupBox_14); + gridLayout_14->setObjectName("gridLayout_14"); + lbl_Player_aMulligan = new QLabel(groupBox_14); + lbl_Player_aMulligan->setObjectName("lbl_Player_aMulligan"); + + gridLayout_14->addWidget(lbl_Player_aMulligan, 4, 0, 1, 1); + + Player_aMulligan = new SequenceEdit("Player/aMulligan",groupBox_14); + Player_aMulligan->setObjectName("Player_aMulligan"); + + gridLayout_14->addWidget(Player_aMulligan, 4, 1, 1, 1); + + lbl_Player_aDrawCard = new QLabel(groupBox_14); + lbl_Player_aDrawCard->setObjectName("lbl_Player_aDrawCard"); + + gridLayout_14->addWidget(lbl_Player_aDrawCard, 0, 0, 1, 1); + + Player_aDrawCard = new SequenceEdit("Player/aDrawCard",groupBox_14); + Player_aDrawCard->setObjectName("Player_aDrawCard"); + + gridLayout_14->addWidget(Player_aDrawCard, 0, 1, 1, 1); + + lbl_Player_aDrawCards = new QLabel(groupBox_14); + lbl_Player_aDrawCards->setObjectName("lbl_Player_aDrawCards"); + + gridLayout_14->addWidget(lbl_Player_aDrawCards, 1, 0, 1, 1); + + Player_aDrawCards = new SequenceEdit("Player/aDrawCards",groupBox_14); + Player_aDrawCards->setObjectName("Player_aDrawCards"); + + gridLayout_14->addWidget(Player_aDrawCards, 1, 1, 1, 1); + + lbl_Player_aUndoDraw = new QLabel(groupBox_14); + lbl_Player_aUndoDraw->setObjectName("lbl_Player_aUndoDraw"); + + gridLayout_14->addWidget(lbl_Player_aUndoDraw, 2, 0, 1, 1); + + Player_aUndoDraw = new SequenceEdit("Player/aUndoDraw",groupBox_14); + Player_aUndoDraw->setObjectName("Player_aUndoDraw"); + + gridLayout_14->addWidget(Player_aUndoDraw, 2, 1, 1, 1); + + lbl_Player_aAlwaysRevealTopCard = new QLabel(groupBox_14); + lbl_Player_aAlwaysRevealTopCard->setObjectName("lbl_Player_aAlwaysRevealTopCard"); + + gridLayout_14->addWidget(lbl_Player_aAlwaysRevealTopCard, 3, 0, 1, 1); + + Player_aAlwaysRevealTopCard = new SequenceEdit("Player/aAlwaysRevealTopCard",groupBox_14); + Player_aAlwaysRevealTopCard->setObjectName("Player_aAlwaysRevealTopCard"); + + gridLayout_14->addWidget(Player_aAlwaysRevealTopCard, 3, 1, 1, 1); + gridLayout_20->addWidget(groupBox_14, 0, 0, 1, 1); + verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout_20->addItem(verticalSpacer_3, 2, 1, 1, 1); + tabWidget->addTab(tab_3, QString()); + tab_4 = new QWidget(tabWidget); + QGridLayout* grid = new QGridLayout(tab_4); + grid->addWidget(groupBox_3); + grid->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding),1,0); + + tabWidget->addTab(tab_4, QString()); + gridLayout_9->addWidget(tabWidget, 0, 0, 1, 1); + tabWidget->setCurrentIndex(0); + + grid->setSpacing(3); + gridLayout->setSpacing(3); + gridLayout_2->setSpacing(3); + gridLayout_3->setSpacing(3); + gridLayout_4->setSpacing(3); + gridLayout_5->setSpacing(3); + gridLayout_6->setSpacing(3); + gridLayout_7->setSpacing(3); + gridLayout_8->setSpacing(3); + gridLayout_9->setSpacing(3); + gridLayout_10->setSpacing(3); + gridLayout_11->setSpacing(3); + gridLayout_12->setSpacing(3); + gridLayout_13->setSpacing(3); + gridLayout_14->setSpacing(3); + gridLayout_15->setSpacing(3); + gridLayout_16->setSpacing(3); + gridLayout_17->setSpacing(3); + gridLayout_18->setSpacing(3); + gridLayout_19->setSpacing(3); + gridLayout_20->setSpacing(3); + + verticalLayout->setSpacing(3); + horizontalLayout->setSpacing(3); + QMetaObject::connectSlotsByName(shortcutsTab); + retranslateUi(shortcutsTab); + } // setupUi + + void retranslateUi(QWidget *shortcutsTab) + { + shortcutsTab->setWindowTitle(QApplication::translate("shortcutsTab", "Form", 0)); + groupBox->setTitle(QApplication::translate("shortcutsTab", "Main Window", 0)); + lbl_MainWindow_aDeckEditor->setText(QApplication::translate("shortcutsTab", "Deck editor", 0)); + lbl_MainWindow_aSinglePlayer->setText(QApplication::translate("shortcutsTab", "Local gameplay", 0)); + lbl_MainWindow_aWatchReplay->setText(QApplication::translate("shortcutsTab", "Watch replay", 0)); + lbl_MainWindow_aConnect->setText(QApplication::translate("shortcutsTab", "Connect", 0)); + lbl_MainWindow_aRegister->setText(QApplication::translate("shortcutsTab", "Register", 0)); + lbl_MainWindow_aFullScreen->setText(QApplication::translate("shortcutsTab", "Full screen", 0)); + lbl_MainWindow_aSettings->setText(QApplication::translate("shortcutsTab", "Settings", 0)); + lbl_MainWindow_aCheckCardUpdates->setText(QApplication::translate("shortcutsTab", "Check for card updates", 0)); + lbl_MainWindow_aDisconnect->setText(QApplication::translate("shortcutsTab", "Diconnect", 0)); + lbl_MainWindow_aExit->setText(QApplication::translate("shortcutsTab", "Exit", 0)); + groupBox_2->setTitle(QApplication::translate("shortcutsTab", "Deck Editor", 0)); + lbl_TabDeckEditor_aAnalyzeDeck->setText(QApplication::translate("shortcutsTab", "Analyze deck", 0)); + lbl_TabDeckEditor_aLoadDeckFromClipboard->setText(QApplication::translate("shortcutsTab", "Load deck (clipboard)", 0)); + lbl_TabDeckEditor_aClearFilterAll->setText(QApplication::translate("shortcutsTab", "Clerar all filters", 0)); + lbl_TabDeckEditor_aNewDeck->setText(QApplication::translate("shortcutsTab", "New deck", 0)); + lbl_TabDeckEditor_aClearFilterOne->setText(QApplication::translate("shortcutsTab", "Clear one filter", 0)); + lbl_TabDeckEditor_aOpenCustomFolder->setText(QApplication::translate("shortcutsTab", "Open custom folder", 0)); + lbl_TabDeckEditor_aClose->setText(QApplication::translate("shortcutsTab", "Close", 0)); + lbl_TabDeckEditor_aPrintDeck->setText(QApplication::translate("shortcutsTab", "Print deck", 0)); + lbl_TabDeckEditor_aEditSets->setText(QApplication::translate("shortcutsTab", "Edit sets", 0)); + lbl_TabDeckEditor_aRemoveCard->setText(QApplication::translate("shortcutsTab", "Delete card", 0)); + lbl_TabDeckEditor_aEditTokens->setText(QApplication::translate("shortcutsTab", "Edit tokens", 0)); + lbl_TabDeckEditor_aResetLayout->setText(QApplication::translate("shortcutsTab", "Reset layout", 0)); + lbl_TabDeckEditor_aIncrement->setText(QApplication::translate("shortcutsTab", "Add card", 0)); + lbl_TabDeckEditor_aSaveDeck->setText(QApplication::translate("shortcutsTab", "Save deck", 0)); + lbl_TabDeckEditor_aDecrement->setText(QApplication::translate("shortcutsTab", "Remove card", 0)); + lbl_TabDeckEditor_aSaveDeckAs->setText(QApplication::translate("shortcutsTab", "Save deck as", 0)); + lbl_TabDeckEditor_aLoadDeck->setText(QApplication::translate("shortcutsTab", "Load deck", 0)); + lbl_TabDeckEditor_aSaveDeckToClipboard->setText(QApplication::translate("shortcutsTab", "Save deck (clipboard)", 0)); + groupBox_3->setTitle(QApplication::translate("shortcutsTab", "Counters", 0)); + groupBox_4->setTitle(QApplication::translate("shortcutsTab", "Life", 0)); + lbl_abstractCounter_sSet->setText(QApplication::translate("shortcutsTab", "Set", 0)); + lbl_abstractCounter_aInc->setText(QApplication::translate("shortcutsTab", "Add", 0)); + lbl_abstractCounter_aDec->setText(QApplication::translate("shortcutsTab", "Remove", 0)); + groupBox_5->setTitle(QApplication::translate("shortcutsTab", "Red", 0)); + lbl_Player_aSCRed->setText(QApplication::translate("shortcutsTab", "Set", 0)); + lbl_Player_aCCRed->setText(QApplication::translate("shortcutsTab", "Add", 0)); + lbl_Player_aRCRed->setText(QApplication::translate("shortcutsTab", "Remove", 0)); + groupBox_6->setTitle(QApplication::translate("shortcutsTab", "Green", 0)); + lbl_Player_aSCGreen->setText(QApplication::translate("shortcutsTab", "Set", 0)); + lbl_Player_aCCGreen->setText(QApplication::translate("shortcutsTab", "Add", 0)); + lbl_Player_aRCGreen->setText(QApplication::translate("shortcutsTab", "Remove", 0)); + groupBox_7->setTitle(QApplication::translate("shortcutsTab", "Yellow", 0)); + lbl_Player_aSCYellow->setText(QApplication::translate("shortcutsTab", "Set", 0)); + lbl_Player_aCCYellow->setText(QApplication::translate("shortcutsTab", "Add", 0)); + lbl_Player_aRCYellow->setText(QApplication::translate("shortcutsTab", "Remove", 0)); + tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate("shortcutsTab", "Mainwindow / Deck editor", 0)); + groupBox_9->setTitle(QApplication::translate("shortcutsTab", "Power / toughness", 0)); + groupBox_12->setTitle(QApplication::translate("shortcutsTab", "Power and toughness", 0)); + lbl_Player_aIncPT->setText(QApplication::translate("shortcutsTab", "Add (+1/+1)", 0)); + lbl_Player_aDecPT->setText(QApplication::translate("shortcutsTab", "Remove (-1/-1)", 0)); + lbl_Player_aSetPT->setText(QApplication::translate("shortcutsTab", "Set", 0)); + groupBox_11->setTitle(QApplication::translate("shortcutsTab", "Toughness", 0)); + lbl_Player_aDecT->setText(QApplication::translate("shortcutsTab", "Remove (-0/-1)", 0)); + lbl_Player_aIncT->setText(QApplication::translate("shortcutsTab", "Add (+0/+1)", 0)); + groupBox_10->setTitle(QApplication::translate("shortcutsTab", "Power", 0)); + lbl_Player_aDecP->setText(QApplication::translate("shortcutsTab", "Remove (-1/-0)", 0)); + lbl_Player_IncP->setText(QApplication::translate("shortcutsTab", "Add (+1/+0)", 0)); + groupBox_8->setTitle(QApplication::translate("shortcutsTab", "Game Phases", 0)); + lbl_TabGame_phase0->setText(QApplication::translate("shortcutsTab", "Untap", 0)); + lbl_TabGame_phase1->setText(QApplication::translate("shortcutsTab", "Unkeep", 0)); + lbl_TabGame_phase2->setText(QApplication::translate("shortcutsTab", "Draw", 0)); + lbl_TabGame_phase3->setText(QApplication::translate("shortcutsTab", "Main 1", 0)); + lbl_TabGame_phase4->setText(QApplication::translate("shortcutsTab", "Start combat", 0)); + lbl_TabGame_phase5->setText(QApplication::translate("shortcutsTab", "Attack", 0)); + lbl_TabGame_phase6->setText(QApplication::translate("shortcutsTab", "Block", 0)); + lbl_TabGame_phase7->setText(QApplication::translate("shortcutsTab", "Damage", 0)); + lbl_TabGame_phase8->setText(QApplication::translate("shortcutsTab", "End combat", 0)); + lbl_TabGame_phase9->setText(QApplication::translate("shortcutsTab", "Main 2", 0)); + lbl_TabGame_phase10->setText(QApplication::translate("shortcutsTab", "End", 0)); + lbl_TabGame_aNextPhase->setText(QApplication::translate("shortcutsTab", "Next phase", 0)); + lbl_TabGame_aNextTurn->setText(QApplication::translate("shortcutsTab", "Next turn", 0)); + groupBox_13->setTitle(QApplication::translate("shortcutsTab", "Player", 0)); + lbl_Player_aTap->setText(QApplication::translate("shortcutsTab", "Tap Card", 0)); + lbl_Player_aUntap->setText(QApplication::translate("shortcutsTab", "Untap Card", 0)); + lbl_Player_aUntapAll->setText(QApplication::translate("shortcutsTab", "Untap all", 0)); + lbl_Player_aDoesntUntap->setText(QApplication::translate("shortcutsTab", "Toogle untap", 0)); + lbl_Player_aFlip->setText(QApplication::translate("shortcutsTab", "Flip card", 0)); + lbl_Player_aPeek->setText(QApplication::translate("shortcutsTab", "Peek card", 0)); + lbl_Player_aPlay->setText(QApplication::translate("shortcutsTab", "Play card", 0)); + lbl_Player_aAttach->setText(QApplication::translate("shortcutsTab", "Attach card", 0)); + lbl_Player_aUnattach->setText(QApplication::translate("shortcutsTab", "Unattach card", 0)); + lbl_Player_aClone->setText(QApplication::translate("shortcutsTab", "Clone card", 0)); + lbl_Player_aCreateToken->setText(QApplication::translate("shortcutsTab", "Create token", 0)); + lbl_Player_aCreateAnotherToken->setText(QApplication::translate("shortcutsTab", "Create another token", 0)); + lbl_Player_aSetAnnotation->setText(QApplication::translate("shortcutsTab", "Set annotation", 0)); + tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate("shortcutsTab", "Phases / P/T / Player", 0)); + groupBox_15->setTitle(QApplication::translate("shortcutsTab", "Move card to", 0)); + lbl_Player_aMoveToBottomLibrary->setText(QApplication::translate("shortcutsTab", "Bottom library", 0)); + lbl_Player_aMoveToTopLibrary->setText(QApplication::translate("shortcutsTab", "Top library", 0)); + lbl_Player_aMoveToGraveyard->setText(QApplication::translate("shortcutsTab", "Graveyard", 0)); + lbl_Player_aMoveToExile->setText(QApplication::translate("shortcutsTab", "Exile", 0)); + lbl_Player_aMoveToHand->setText(QApplication::translate("shortcutsTab", "Hand", 0)); + groupBox_16->setTitle(QApplication::translate("shortcutsTab", "View", 0)); + lbl_Player_aViewGraveyard->setText(QApplication::translate("shortcutsTab", "Graveyard", 0)); + lbl_Player_aViewLibrary->setText(QApplication::translate("shortcutsTab", "Library", 0)); + lbl_Player_aViewTopCards->setText(QApplication::translate("shortcutsTab", "Tops card of library", 0)); + lbl_Player_aViewSideboard->setText(QApplication::translate("shortcutsTab", "Sideboard", 0)); + lbl_Player_aViewRfg->setText(QApplication::translate("shortcutsTab", "Exile", 0)); + lbl_GameView_aCloseMostRecentZoneView->setText(QApplication::translate("shortcutsTab", "Close recent view", 0)); + groupBox_17->setTitle(QApplication::translate("shortcutsTab", "Pre-play", 0)); + lbl_DeckViewContainer_loadRemoteButton->setText(QApplication::translate("shortcutsTab", "Load remote deck", 0)); + lbl_DeckViewContainer_loadLocalButton->setText(QApplication::translate("shortcutsTab", "Load local deck", 0)); + groupBox_18->setTitle(QApplication::translate("shortcutsTab", "Game play", 0)); + lbl_Player_aDrawArrow->setText(QApplication::translate("shortcutsTab", "Draw arrow", 0)); + lbl_TabGame_aLeaveGame->setText(QApplication::translate("shortcutsTab", "Leave game", 0)); + lbl_TabGame_aRemoveLocalArrows->setText(QApplication::translate("shortcutsTab", "Remove local arrows", 0)); + lbl_TabGame_aConcede->setText(QApplication::translate("shortcutsTab", "Concede", 0)); + lbl_Player_aRollDie->setText(QApplication::translate("shortcutsTab", "Roll dice", 0)); + lbl_TabGame_aRotateViewCW->setText(QApplication::translate("shortcutsTab", "Rotate view CW", 0)); + lbl_Player_aShuffle->setText(QApplication::translate("shortcutsTab", "Shuffle library", 0)); + lbl_TabGame_aRotateViewCCW->setText(QApplication::translate("shortcutsTab", "Rotate view CCW", 0)); + groupBox_14->setTitle(QApplication::translate("shortcutsTab", "Draw", 0)); + lbl_Player_aMulligan->setText(QApplication::translate("shortcutsTab", "Mulligan", 0)); + lbl_Player_aDrawCard->setText(QApplication::translate("shortcutsTab", "Draw card", 0)); + lbl_Player_aDrawCards->setText(QApplication::translate("shortcutsTab", "Draw cards", 0)); + lbl_Player_aUndoDraw->setText(QApplication::translate("shortcutsTab", "Undo draw", 0)); + lbl_Player_aAlwaysRevealTopCard->setText(QApplication::translate("shortcutsTab", "Always reveal top card", 0)); + tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate("shortcutsTab", "Draw / Move / View / Game play", 0)); + tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate("shortcutsTab","Counters", 0)); + } // retranslateUi + +}; + +namespace Ui { + class shortcutsTab: public Ui_shortcutsTab {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_SHORTCUTSTAB_H diff --git a/cockatrice/src/settingscache.cpp b/cockatrice/src/settingscache.cpp index dd7b34fd..462001c6 100644 --- a/cockatrice/src/settingscache.cpp +++ b/cockatrice/src/settingscache.cpp @@ -6,17 +6,17 @@ #include #endif -QString SettingsCache::getLayoutsSettingsPath() +QString SettingsCache::getSettingsPath() { QString file = ""; #ifndef PORTABLE_BUILD - #if QT_VERSION >= 0x050000 +#if QT_VERSION >= 0x050000 file = QStandardPaths::writableLocation(QStandardPaths::DataLocation); #else file = QDesktopServices::storageLocation(QDesktopServices::DataLocation); #endif - file.append("/settings/layouts/"); + file.append("/settings/"); #endif return file; @@ -25,6 +25,7 @@ QString SettingsCache::getLayoutsSettingsPath() SettingsCache::SettingsCache() { settings = new QSettings(this); + shortcutsSettings = new ShortcutsSettings(getSettingsPath(),this); lang = settings->value("personal/lang").toString(); keepalive = settings->value("personal/keepalive", 5).toInt(); @@ -119,8 +120,8 @@ SettingsCache::SettingsCache() spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool(); clientID = settings->value("personal/clientid", "notset").toString(); - QString file = getLayoutsSettingsPath(); - file.append("deckLayout.ini"); + QString file = getSettingsPath(); + file.append("layouts/deckLayout.ini"); QSettings layout_settings(file , QSettings::IniFormat); deckEditorLayoutState = layout_settings.value("layouts/deckEditor_state").toByteArray(); @@ -505,8 +506,8 @@ void SettingsCache::setDeckEditorLayoutState(const QByteArray &value) { deckEditorLayoutState = value; - QString file = getLayoutsSettingsPath(); - file.append("deckLayout.ini"); + QString file = getSettingsPath(); + file.append("layouts/deckLayout.ini"); QSettings layout_settings(file , QSettings::IniFormat); layout_settings.setValue("layouts/deckEditor_state",value); } @@ -515,8 +516,8 @@ void SettingsCache::setDeckEditorGeometry(const QByteArray &value) { deckEditorGeometry = value; - QString file = getLayoutsSettingsPath(); - file.append("deckLayout.ini"); + QString file = getSettingsPath(); + file.append("layouts/deckLayout.ini"); QSettings layout_settings(file , QSettings::IniFormat); layout_settings.setValue("layouts/deckEditor_geometry",value); } @@ -525,8 +526,8 @@ void SettingsCache::setDeckEditorCardSize(const QSize &value) { deckEditorCardSize = value; - QString file = getLayoutsSettingsPath(); - file.append("deckLayout.ini"); + QString file = getSettingsPath(); + file.append("layouts/deckLayout.ini"); QSettings layout_settings(file , QSettings::IniFormat); layout_settings.setValue("layouts/deckEditor_CardSize",value); } @@ -535,8 +536,8 @@ void SettingsCache::setDeckEditorDeckSize(const QSize &value) { deckEditorDeckSize = value; - QString file = getLayoutsSettingsPath(); - file.append("deckLayout.ini"); + QString file = getSettingsPath(); + file.append("layouts/deckLayout.ini"); QSettings layout_settings(file , QSettings::IniFormat); layout_settings.setValue("layouts/deckEditor_DeckSize",value); } @@ -545,8 +546,8 @@ void SettingsCache::setDeckEditorFilterSize(const QSize &value) { deckEditorFilterSize = value; - QString file = getLayoutsSettingsPath(); - file.append("deckLayout.ini"); + QString file = getSettingsPath(); + file.append("layouts/deckLayout.ini"); QSettings layout_settings(file , QSettings::IniFormat); layout_settings.setValue("layouts/deckEditor_FilterSize",value); } diff --git a/cockatrice/src/settingscache.h b/cockatrice/src/settingscache.h index 28d32e4b..f8227efc 100644 --- a/cockatrice/src/settingscache.h +++ b/cockatrice/src/settingscache.h @@ -4,6 +4,7 @@ #include #include #include +#include "shortcutssettings.h" // the falbacks are used for cards without a muid #define PIC_URL_DEFAULT "http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=!cardid!&type=card" @@ -46,7 +47,7 @@ signals: void chatMentionCompleterChanged(); private: QSettings *settings; - + ShortcutsSettings *shortcutsSettings; QByteArray mainWindowGeometry; QString lang; QString deckPath, replaysPath, picsPath, cardDatabasePath, tokenDatabasePath; @@ -104,7 +105,7 @@ private: int keepalive; QByteArray deckEditorLayoutState, deckEditorGeometry; QSize deckEditorFilterSize, deckEditorDeckSize, deckEditorCardSize; - QString getLayoutsSettingsPath(); + QString getSettingsPath(); public: SettingsCache(); @@ -190,6 +191,7 @@ public: void setDeckEditorDeckSize(const QSize &value); QSize getDeckEditorFilterSize() const { return deckEditorFilterSize; } void setDeckEditorFilterSize(const QSize &value); + ShortcutsSettings& shortcuts() const { return *shortcutsSettings; } public slots: void setMainWindowGeometry(const QByteArray &_mainWindowGeometry); diff --git a/cockatrice/src/shortcutssettings.cpp b/cockatrice/src/shortcutssettings.cpp new file mode 100644 index 00000000..242140a3 --- /dev/null +++ b/cockatrice/src/shortcutssettings.cpp @@ -0,0 +1,228 @@ +#include "shortcutssettings.h" +#include +#include + +ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QObject(parent) +{ + this->settingsFilePath = settingsPath; + this->settingsFilePath.append("shortcuts.ini"); + fillDefaultShorcuts(); + shortCuts = QMap >(defaultShortCuts); + + bool exists = QFile(settingsFilePath).exists(); + + QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); + + if(exists){ + shortCutsFile.beginGroup("Custom"); + const QStringList customKeys = shortCutsFile.allKeys(); + for(QStringList::const_iterator it = customKeys.constBegin(); it != customKeys.constEnd(); ++it) + { + QString stringSecuence = shortCutsFile.value(*it).toString(); + QList secuenceList = parseSecuenceString(stringSecuence); + shortCuts.insert(*it, secuenceList); + } + shortCutsFile.endGroup(); + } +} + +QList ShortcutsSettings::getShortcut(QString name) +{ + if(shortCuts.contains(name)) + return shortCuts.value(name); + + return defaultShortCuts.value(name, QList()); +} + +QKeySequence ShortcutsSettings::getSingleShortcut(QString name) +{ + return getShortcut(name).at(0); +} + +QString ShortcutsSettings::getDefaultShortcutString(QString name) +{ + return stringifySecuence(defaultShortCuts.value(name)); +} + +QString ShortcutsSettings::getShortcutString(QString name) +{ + return stringifySecuence(shortCuts.value(name)); +} + +QString ShortcutsSettings::stringifySecuence(QList secuence) const +{ + QString stringSecuence; + for(int i=0; i < secuence.size(); ++i) + { + stringSecuence.append(secuence.at(i).toString(QKeySequence::PortableText)); + if(i < secuence.size() - 1) + stringSecuence.append(";"); + } + + return stringSecuence; +} + +QList ShortcutsSettings::parseSecuenceString(QString stringSecuence) +{ + QStringList secuences = stringSecuence.split(";"); + QList secuenceList; + for(QStringList::const_iterator ss = secuences.constBegin(); ss != secuences.constEnd(); ++ss) + { + secuenceList.append(QKeySequence(*ss, QKeySequence::PortableText)); + } + + return secuenceList; +} + +void ShortcutsSettings::setShortcuts(QString name, QList secuence) +{ + shortCuts[name] = secuence; + + QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); + shortCutsFile.beginGroup("Custom"); + QString stringSecuence = stringifySecuence(secuence); + shortCutsFile.setValue(name, stringSecuence); + shortCutsFile.endGroup(); + emit shortCutchanged(); +} + +void ShortcutsSettings::setShortcuts(QString name, QKeySequence secuence) +{ + setShortcuts(name, QList() << 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 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"); + defaultShortCuts["tab_room/aClearChat"] = parseSecuenceString("F12"); + defaultShortCuts["DlgLoadDeckFromClipboard/refreshButton"] = parseSecuenceString("F5"); +} + diff --git a/cockatrice/src/shortcutssettings.h b/cockatrice/src/shortcutssettings.h new file mode 100644 index 00000000..45324106 --- /dev/null +++ b/cockatrice/src/shortcutssettings.h @@ -0,0 +1,40 @@ +#ifndef SHORTCUTSSETTINGS_H +#define SHORTCUTSSETTINGS_H + +#include +#include +#include +#include + +class ShortcutsSettings : public QObject +{ + Q_OBJECT +public: + ShortcutsSettings(QString settingsFilePath, QObject *parent = 0); + ~ShortcutsSettings() { } + + QList getShortcut(QString name); + QKeySequence getSingleShortcut(QString name); + + QString getDefaultShortcutString(QString name); + QString getShortcutString(QString name); + + void setShortcuts(QString name, QList secuence); + void setShortcuts(QString name, QKeySequence secuence); + void setShortcuts(QString name, QString secuences); + + bool isValid(QString name, QString secuences); +signals: + void shortCutchanged(); + +private: + QString settingsFilePath; + QMap > shortCuts; + QMap > defaultShortCuts; + void fillDefaultShorcuts(); + + QString stringifySecuence(QList secuence) const; + QList parseSecuenceString(QString stringSecuence); +}; + +#endif // SHORTCUTSSETTINGS_H diff --git a/cockatrice/src/tab_deck_editor.cpp b/cockatrice/src/tab_deck_editor.cpp index c5a40ab0..52c24995 100644 --- a/cockatrice/src/tab_deck_editor.cpp +++ b/cockatrice/src/tab_deck_editor.cpp @@ -256,37 +256,41 @@ void TabDeckEditor::createFiltersDock() void TabDeckEditor::createMenus() { aNewDeck = new QAction(QString(), this); - aNewDeck->setShortcuts(QKeySequence::New); connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck())); + aLoadDeck = new QAction(QString(), this); - aLoadDeck->setShortcuts(QKeySequence::Open); connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck())); + aSaveDeck = new QAction(QString(), this); - aSaveDeck->setShortcuts(QKeySequence::Save); connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck())); + aSaveDeckAs = new QAction(QString(), this); -// aSaveDeckAs->setShortcuts(QKeySequence::SaveAs); connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs())); + + aOpenCustomsetsFolder = new QAction(QString(), this); + connect(aOpenCustomsetsFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomsetsFolder())); + aLoadDeckFromClipboard = new QAction(QString(), this); connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard())); - aLoadDeckFromClipboard->setShortcuts(QKeySequence::Paste); + aSaveDeckToClipboard = new QAction(QString(), this); connect(aSaveDeckToClipboard, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboard())); - aSaveDeckToClipboard->setShortcuts(QKeySequence::Copy); + aPrintDeck = new QAction(QString(), this); - aPrintDeck->setShortcuts(QKeySequence::Print); connect(aPrintDeck, SIGNAL(triggered()), this, SLOT(actPrintDeck())); + aAnalyzeDeck = new QAction(QString(), this); connect(aAnalyzeDeck, SIGNAL(triggered()), this, SLOT(actAnalyzeDeck())); + aClose = new QAction(QString(), this); connect(aClose, SIGNAL(triggered()), this, SLOT(closeRequest())); + aOpenCustomFolder = new QAction(QString(), this); connect(aOpenCustomFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomFolder())); - aOpenCustomsetsFolder = new QAction(QString(), this); - connect(aOpenCustomsetsFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomsetsFolder())); aEditSets = new QAction(QString(), this); connect(aEditSets, SIGNAL(triggered()), this, SLOT(actEditSets())); + aEditTokens = new QAction(QString(), this); connect(aEditTokens, SIGNAL(triggered()), this, SLOT(actEditTokens())); @@ -424,7 +428,7 @@ void TabDeckEditor::createCentralFrame() QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->setObjectName("mainLayout"); mainLayout->addWidget(MainWindow); - setLayout(mainLayout); + setLayout(mainLayout); } void TabDeckEditor::restartLayout() @@ -464,6 +468,30 @@ void TabDeckEditor::freeDocksSize() filterDock->setMaximumSize(5000,5000); } +void TabDeckEditor::refreshShortcuts() +{ + aNewDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aNewDeck")); + aLoadDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aLoadDeck")); + aSaveDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aSaveDeck")); + aSaveDeckAs->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aSaveDeckAs")); + aLoadDeckFromClipboard->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aLoadDeckFromClipboard")); + aPrintDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aPrintDeck")); + aAnalyzeDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aAnalyzeDeck")); + aClose->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClose")); + aOpenCustomFolder->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aOpenCustomFolder")); + aEditSets->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aEditSets")); + aEditTokens->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aEditTokens")); + aResetLayout->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aResetLayout")); + aClearFilterAll->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClearFilterAll")); + aClearFilterOne->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClearFilterOne")); + aSaveDeckToClipboard->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aSaveDeckToClipboard")); + aClearFilterOne->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClearFilterOne")); + aClose->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClose")); + aRemoveCard->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aRemoveCard")); + aIncrement->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aIncrement")); + aDecrement->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aDecrement")); +} + void TabDeckEditor::loadLayout() { MainWindow->restoreState(settingsCache->getDeckEditorLayoutState()); @@ -504,6 +532,9 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent) this->installEventFilter(this); retranslateUi(); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); + QTimer::singleShot(0, this, SLOT(checkFirstRunDetected())); QTimer::singleShot(0, this, SLOT(loadLayout())); } @@ -519,7 +550,6 @@ void TabDeckEditor::retranslateUi() aClearFilterAll->setText(tr("&Clear all filters")); aClearFilterOne->setText(tr("Delete selected")); - aClearFilterOne->setShortcut(QKeySequence("Backspace")); nameLabel->setText(tr("Deck &name:")); commentsLabel->setText(tr("&Comments:")); @@ -537,19 +567,17 @@ void TabDeckEditor::retranslateUi() aPrintDeck->setText(tr("&Print deck...")); aAnalyzeDeck->setText(tr("&Analyze deck on deckstats.net")); aOpenCustomFolder->setText(tr("Open custom image folder")); - aOpenCustomsetsFolder->setText(tr("Open custom sets folder")); + aOpenCustomsetsFolder->setText(tr("Open custom sets folder")); aClose->setText(tr("&Close")); - aClose->setShortcut(QKeySequence("Ctrl+Q")); aAddCard->setText(tr("Add card to &maindeck")); aAddCardToSideboard->setText(tr("Add card to &sideboard")); aRemoveCard->setText(tr("&Remove row")); - aRemoveCard->setShortcut(QKeySequence("Del")); + aIncrement->setText(tr("&Increment number")); - aIncrement->setShortcut(QKeySequence("+")); + aDecrement->setText(tr("&Decrement number")); - aDecrement->setShortcut(QKeySequence("-")); deckMenu->setTitle(tr("&Deck Editor")); dbMenu->setTitle(tr("C&ard Database")); diff --git a/cockatrice/src/tab_deck_editor.h b/cockatrice/src/tab_deck_editor.h index 19591e3f..996e3ec8 100644 --- a/cockatrice/src/tab_deck_editor.h +++ b/cockatrice/src/tab_deck_editor.h @@ -83,6 +83,7 @@ class TabDeckEditor : public Tab { void loadLayout(); void restartLayout(); void freeDocksSize(); + void refreshShortcuts(); private: CardInfo *currentCardInfo() const; diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index a99f8517..22f54831 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -120,14 +120,14 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent) setLayout(deckViewLayout); retranslateUi(); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); } void DeckViewContainer::retranslateUi() { loadLocalButton->setText(tr("Load local deck")); - loadLocalButton->setShortcut(QKeySequence("Ctrl+O")); loadRemoteButton->setText(tr("Load deck from server")); - loadRemoteButton->setShortcut(QKeySequence("Ctrl+Alt+O")); readyStartButton->setText(tr("Ready to s&tart")); updateSideboardLockButtonText(); } @@ -148,6 +148,58 @@ void DeckViewContainer::updateSideboardLockButtonText() sideboardLockButton->setText(tr("S&ideboard locked")); } +void DeckViewContainer::refreshShortcuts() +{ + loadLocalButton->setShortcut(settingsCache->shortcuts().getSingleShortcut("DeckViewContainer/loadLocalButton")); + loadRemoteButton->setShortcut(settingsCache->shortcuts().getSingleShortcut("DeckViewContainer/loadRemoteButton")); +} + +void TabGame::refreshShortcuts() +{ + for (int i = 0; i < phaseActions.size(); ++i) { + QAction *temp = phaseActions.at(i); + switch (i) { + case 0: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase0")); break; + case 1: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase1")); break; + case 2: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase2")); break; + case 3: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase3")); break; + case 4: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase4")); break; + case 5: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase5")); break; + case 6: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase6")); break; + case 7: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase7")); break; + case 8: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase8")); break; + case 9: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase9")); break; + case 10:temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase10")); break; + default: ; + } + } + + if (aNextPhase) { + aNextPhase->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aNextPhase")); + } + if (aNextTurn) { + aNextTurn->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aNextTurn")); + } + if (aRemoveLocalArrows) { + aRemoveLocalArrows->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aRemoveLocalArrows")); + } + if (aRotateViewCW) { + aRotateViewCW->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aRotateViewCW")); + } + if (aRotateViewCCW) { + aRotateViewCCW->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aRotateViewCCW")); + } + if (aConcede) { + aConcede->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aConcede")); + } + if (aLeaveGame) { + aLeaveGame->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aLeaveGame")); + } + if (aCloseReplay) { + aCloseReplay->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aCloseReplay")); + } +} + void DeckViewContainer::loadLocalDeck() { QFileDialog dialog(this, tr("Load deck")); @@ -359,6 +411,8 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) addTabMenu(gameMenu); retranslateUi(); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); setLayout(superMainLayout); splitter->restoreState(settingsCache->getTabGameSplitterSizes()); @@ -468,18 +522,10 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList &_client for (int i = 0; i < phasesToolbar->phaseCount(); ++i) { QAction *temp = new QAction(QString(), this); connect(temp, SIGNAL(triggered()), this, SLOT(actPhaseAction())); - switch (i) { - case 0: temp->setShortcut(QKeySequence("F5")); break; - case 2: temp->setShortcut(QKeySequence("F6")); break; - case 3: temp->setShortcut(QKeySequence("F7")); break; - case 4: temp->setShortcut(QKeySequence("F8")); break; - case 9: temp->setShortcut(QKeySequence("F9")); break; - case 10: temp->setShortcut(QKeySequence("F10")); break; - default: ; - } phasesMenu->addAction(temp); phaseActions.append(temp); } + phasesMenu->addSeparator(); phasesMenu->addAction(aNextPhase); @@ -498,6 +544,8 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList &_client addTabMenu(gameMenu); retranslateUi(); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); setLayout(mainLayout); splitter->restoreState(settingsCache->getTabGameSplitterSizes()); @@ -545,37 +593,29 @@ void TabGame::retranslateUi() gameMenu->setTitle(tr("&Game")); if (aNextPhase) { aNextPhase->setText(tr("Next &phase")); - aNextPhase->setShortcuts(QList() << QKeySequence("Ctrl+Space") << QKeySequence("Tab")); } if (aNextTurn) { aNextTurn->setText(tr("Next &turn")); - aNextTurn->setShortcuts(QList() << QKeySequence("Ctrl+Return") << QKeySequence("Ctrl+Enter")); } if (aRemoveLocalArrows) { aRemoveLocalArrows->setText(tr("&Remove all local arrows")); - aRemoveLocalArrows->setShortcut(QKeySequence("Ctrl+R")); } if (aRotateViewCW) { aRotateViewCW->setText(tr("Rotate View Cl&ockwise")); - aRotateViewCW->setShortcut(QKeySequence("Ctrl+]")); } if (aRotateViewCCW) { aRotateViewCCW->setText(tr("Rotate View Co&unterclockwise")); - aRotateViewCCW->setShortcut(QKeySequence("Ctrl+[")); } if (aGameInfo) aGameInfo->setText(tr("Game &information")); if (aConcede) { aConcede->setText(tr("&Concede")); - aConcede->setShortcut(QKeySequence("F2")); } if (aLeaveGame) { aLeaveGame->setText(tr("&Leave game")); - aLeaveGame->setShortcut(QKeySequence("Ctrl+Q")); } if (aCloseReplay) { aCloseReplay->setText(tr("C&lose replay")); - aCloseReplay->setShortcut(QKeySequence("Ctrl+Q")); } if (sayLabel) diff --git a/cockatrice/src/tab_game.h b/cockatrice/src/tab_game.h index e704b569..719d4dd5 100644 --- a/cockatrice/src/tab_game.h +++ b/cockatrice/src/tab_game.h @@ -84,6 +84,7 @@ private slots: void sideboardPlanChanged(); void sideboardLockButtonClicked(); void updateSideboardLockButtonText(); + void refreshShortcuts(); signals: void newCardAdded(AbstractCardItem *card); public: @@ -199,6 +200,7 @@ private slots: void addMentionTag(QString value); void commandFinished(const Response &response); + void refreshShortcuts(); public: TabGame(TabSupervisor *_tabSupervisor, QList &_clients, const Event_GameJoined &event, const QMap &_roomGameTypes); TabGame(TabSupervisor *_tabSupervisor, GameReplay *replay); diff --git a/cockatrice/src/tab_room.cpp b/cockatrice/src/tab_room.cpp index b49b6604..45b6f281 100644 --- a/cockatrice/src/tab_room.cpp +++ b/cockatrice/src/tab_room.cpp @@ -68,7 +68,6 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI QMenu *chatSettingsMenu = new QMenu(this); aClearChat = chatSettingsMenu->addAction(QString()); - aClearChat->setShortcut(QKeySequence("F12")); connect(aClearChat, SIGNAL(triggered()), this, SLOT(actClearChat())); chatSettingsMenu->addSeparator(); @@ -132,6 +131,8 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI sayEdit->setCompleter(completer); actCompleterChanged(); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); } TabRoom::~TabRoom() @@ -282,6 +283,11 @@ void TabRoom::processRoomSayEvent(const Event_RoomSay &event) emit userEvent(false); } +void TabRoom::refreshShortcuts() +{ + aClearChat->setShortcuts(settingsCache->shortcuts().getShortcut("tab_room/aClearChat")); +} + void TabRoom::addMentionTag(QString mentionTag) { sayEdit->insert(mentionTag + " "); sayEdit->setFocus(); @@ -416,4 +422,4 @@ void CustomLineEdit::updateCompleterModel(QStringList completionList) model = new QStringListModel(); QStringList updatedList = completionList; model->setStringList(updatedList); -} \ No newline at end of file +} diff --git a/cockatrice/src/tab_room.h b/cockatrice/src/tab_room.h index 98a74d8f..d8201e08 100644 --- a/cockatrice/src/tab_room.h +++ b/cockatrice/src/tab_room.h @@ -73,6 +73,7 @@ private slots: void processJoinRoomEvent(const Event_JoinRoom &event); void processLeaveRoomEvent(const Event_LeaveRoom &event); void processRoomSayEvent(const Event_RoomSay &event); + void refreshShortcuts(); public: TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerInfo_User *_ownUser, const ServerInfo_Room &info); ~TabRoom(); diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index 9eff2c60..a2edd199 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -461,7 +461,6 @@ void MainWindow::retranslateUi() aWatchReplay->setText(tr("&Watch replay...")); aDeckEditor->setText(tr("&Deck editor")); aFullScreen->setText(tr("&Full screen")); - aFullScreen->setShortcut(QKeySequence("Ctrl+F")); aRegister->setText(tr("&Register to server...")); aSettings->setText(tr("&Settings...")); aExit->setText(tr("&Exit")); @@ -471,10 +470,10 @@ void MainWindow::retranslateUi() #else cockatriceMenu->setTitle(tr("&Cockatrice")); #endif + aAbout->setText(tr("&About Cockatrice")); helpMenu->setTitle(tr("&Help")); aCheckCardUpdates->setText(tr("Check for card updates...")); - tabSupervisor->retranslateUi(); } @@ -593,6 +592,9 @@ MainWindow::MainWindow(QWidget *parent) createTrayActions(); createTrayIcon(); } + + connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts())); + refreshShortcuts(); } MainWindow::~MainWindow() @@ -772,3 +774,17 @@ void MainWindow::cardUpdateFinished(int, QProcess::ExitStatus) // this will force a database reload settingsCache->setCardDatabasePath(settingsCache->getCardDatabasePath()); } + +void MainWindow::refreshShortcuts() +{ + aConnect->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aConnect")); + aDisconnect->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aDisconnect")); + aSinglePlayer->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aSinglePlayer")); + aWatchReplay->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aWatchReplay")); + aDeckEditor->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aDeckEditor")); + aFullScreen->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aFullScreen")); + aRegister->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aRegister")); + aSettings->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aSettings")); + aExit->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aExit")); + aCheckCardUpdates->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aCheckCardUpdates")); +} diff --git a/cockatrice/src/window_main.h b/cockatrice/src/window_main.h index 5c319318..5a12676e 100644 --- a/cockatrice/src/window_main.h +++ b/cockatrice/src/window_main.h @@ -73,6 +73,7 @@ private slots: void actCheckCardUpdates(); void cardUpdateError(QProcess::ProcessError err); void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus); + void refreshShortcuts(); private: static const QString appName; void setClientStatusTitle(); diff --git a/oracle/CMakeLists.txt b/oracle/CMakeLists.txt index fd442f26..c91e958e 100644 --- a/oracle/CMakeLists.txt +++ b/oracle/CMakeLists.txt @@ -13,6 +13,7 @@ SET(oracle_SOURCES src/oracleimporter.cpp ../cockatrice/src/carddatabase.cpp ../cockatrice/src/settingscache.cpp + ../cockatrice/src/shortcutssettings.cpp ../cockatrice/src/qt-json/json.cpp )