counters menu

This commit is contained in:
Max-Wilhelm Bruker 2009-09-25 16:50:20 +02:00
parent 7baff1ab62
commit 85319ecc28
6 changed files with 258 additions and 200 deletions

View file

@ -4,10 +4,46 @@
#include <QtGui>
Counter::Counter(Player *_player, int _id, const QString &_name, QColor _color, int _radius, int _value, QGraphicsItem *parent)
: QGraphicsItem(parent), id(_id), name(_name), color(_color), radius(_radius), value(_value), player(_player)
: QGraphicsItem(parent), player(_player), id(_id), name(_name), color(_color), radius(_radius), value(_value), aDec(0), aInc(0)
{
if (radius > Player::counterAreaWidth / 2)
radius = Player::counterAreaWidth / 2;
menu = new QMenu(name);
aSet = new QAction(this);
connect(aSet, SIGNAL(triggered()), this, SLOT(setCounter()));
menu->addAction(aSet);
menu->addSeparator();
for (int i = -10; i <= 10; ++i)
if (i == 0)
menu->addSeparator();
else {
QAction *aIncrement = new QAction(QString(i < 0 ? "%1" : "+%1").arg(i), this);
if (i == -1)
aDec = aIncrement;
else if (i == 1)
aInc = aIncrement;
aIncrement->setData(i);
connect(aIncrement, SIGNAL(triggered()), this, SLOT(incrementCounter()));
menu->addAction(aIncrement);
}
retranslateUi();
}
Counter::~Counter()
{
delete menu;
}
void Counter::retranslateUi()
{
aSet->setText(tr("&Set counter..."));
if (name == "life") {
aSet->setShortcut(tr("Ctrl+L"));
aDec->setShortcut(tr("F11"));
aInc->setShortcut(tr("F12"));
}
}
QRectF Counter::boundingRect() const
@ -36,8 +72,26 @@ void Counter::setValue(int _value)
void Counter::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
player->client->incCounter(id, 1);
else if (event->button() == Qt::RightButton)
if (event->button() == Qt::LeftButton) {
player->client->incCounter(id, -1);
event->accept();
} else if (event->button() == Qt::RightButton) {
menu->exec(event->screenPos());
event->accept();
} else
event->ignore();
}
void Counter::incrementCounter()
{
int delta = static_cast<QAction *>(sender())->data().toInt();
player->client->incCounter(id, delta);
}
void Counter::setCounter()
{
bool ok;
int newValue = QInputDialog::getInteger(0, tr("Set counter"), tr("New value for counter '%1':").arg(name), value, 0, 2000000000, 1, &ok);
if (ok)
player->client->setCounter(id, newValue);
}

View file

@ -4,22 +4,35 @@
#include <QGraphicsItem>
class Player;
class QMenu;
class QAction;
class Counter : public QGraphicsItem {
class Counter : public QObject, public QGraphicsItem {
Q_OBJECT
private:
Player *player;
int id;
QString name;
QColor color;
int radius;
int value;
QAction *aSet, *aDec, *aInc;
QMenu *menu;
private slots:
void incrementCounter();
void setCounter();
protected:
Player *player;
void mousePressEvent(QGraphicsSceneMouseEvent *event);
public:
Counter(Player *_player, int _id, const QString &_name, QColor _color, int _radius, int _value, QGraphicsItem *parent = 0);
~Counter();
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QMenu *getMenu() const { return menu; }
void retranslateUi();
int getId() const { return id; }
QString getName() const { return name; }
int getValue() const { return value; }

View file

@ -151,13 +151,6 @@ Player::Player(const QString &_name, int _id, bool _local, CardDatabase *_db, Cl
aUntapAll = new QAction(this);
connect(aUntapAll, SIGNAL(triggered()), this, SLOT(actUntapAll()));
aDecLife = new QAction(this);
connect(aDecLife, SIGNAL(triggered()), this, SLOT(actDecLife()));
aIncLife = new QAction(this);
connect(aIncLife, SIGNAL(triggered()), this, SLOT(actIncLife()));
aSetLife = new QAction(this);
connect(aSetLife, SIGNAL(triggered()), this, SLOT(actSetLife()));
aRollDie = new QAction(this);
connect(aRollDie, SIGNAL(triggered()), this, SLOT(actRollDie()));
@ -165,11 +158,9 @@ Player::Player(const QString &_name, int _id, bool _local, CardDatabase *_db, Cl
connect(aCreateToken, SIGNAL(triggered()), this, SLOT(actCreateToken()));
playerMenu->addSeparator();
playerMenu->addAction(aUntapAll);
countersMenu = playerMenu->addMenu(QString());
playerMenu->addSeparator();
playerMenu->addAction(aDecLife);
playerMenu->addAction(aIncLife);
playerMenu->addAction(aSetLife);
playerMenu->addAction(aUntapAll);
playerMenu->addSeparator();
playerMenu->addAction(aRollDie);
playerMenu->addSeparator();
@ -177,7 +168,6 @@ Player::Player(const QString &_name, int _id, bool _local, CardDatabase *_db, Cl
playerMenu->addSeparator();
sayMenu = playerMenu->addMenu(QString());
initSayMenu();
} else
sbMenu = 0;
@ -231,20 +221,19 @@ void Player::retranslateUi()
handMenu->setTitle(tr("&Hand"));
sbMenu->setTitle(tr("&Sideboard"));
libraryMenu->setTitle(tr("&Library"));
countersMenu->setTitle(tr("&Counters"));
aUntapAll->setText(tr("&Untap all permanents"));
aUntapAll->setShortcut(tr("Ctrl+U"));
aDecLife->setText(tr("&Decrement life"));
aDecLife->setShortcut(tr("F11"));
aIncLife->setText(tr("&Increment life"));
aIncLife->setShortcut(tr("F12"));
aSetLife->setText(tr("&Set life"));
aSetLife->setShortcut(tr("Ctrl+L"));
aRollDie->setText(tr("R&oll die..."));
aRollDie->setShortcut(tr("Ctrl+I"));
aCreateToken->setText(tr("&Create token..."));
aCreateToken->setShortcut(tr("Ctrl+T"));
sayMenu->setTitle(tr("S&ay"));
QMapIterator<int, Counter *> counterIterator(counters);
while (counterIterator.hasNext())
counterIterator.next().value()->retranslateUi();
}
}
@ -324,26 +313,6 @@ void Player::actUntapAll()
client->setCardAttr("table", -1, "tapped", "false");
}
void Player::actIncLife()
{
// XXX
client->incCounter(lifeCounter->getId(), 1);
}
void Player::actDecLife()
{
// XXX
client->incCounter(lifeCounter->getId(), -1);
}
void Player::actSetLife()
{
bool ok;
int life = QInputDialog::getInteger(0, tr("Set life"), tr("New life total:"), lifeCounter->getValue(), 0, 2000000000, 1, &ok);
if (ok)
client->setCounter(lifeCounter->getId(), life);
}
void Player::actRollDie()
{
bool ok;
@ -633,9 +602,7 @@ void Player::addCounter(int counterId, const QString &name, QColor color, int ra
{
Counter *c = new Counter(this, counterId, name, color, radius, value, this);
counters.insert(counterId, c);
if (name == "life")
lifeCounter = c;
// XXX
countersMenu->addMenu(c->getMenu());
rearrangeCounters();
}

View file

@ -37,9 +37,6 @@ signals:
void sizeChanged();
public slots:
void actUntapAll();
void actIncLife();
void actDecLife();
void actSetLife();
void actRollDie();
void actCreateToken();
@ -57,11 +54,11 @@ private slots:
void actViewRfg();
void actViewSideboard();
private:
QMenu *playerMenu, *handMenu, *graveMenu, *rfgMenu, *libraryMenu, *sbMenu, *sayMenu;
QMenu *playerMenu, *handMenu, *graveMenu, *rfgMenu, *libraryMenu, *sbMenu, *countersMenu, *sayMenu;
QAction *aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToHand, *aMoveToGraveyard, *aMoveToRfg,
*aViewLibrary, *aViewTopCards, *aViewGraveyard, *aViewRfg, *aViewSideboard,
*aDrawCard, *aDrawCards, *aShuffle,
*aUntapAll, *aDecLife, *aIncLife, *aSetLife, *aRollDie, *aCreateToken;
*aUntapAll, *aRollDie, *aCreateToken;
int defaultNumberTopCards;
QString name;
@ -80,9 +77,8 @@ private:
QRectF bRect;
QMap<int, Counter *> counters;
Counter *lifeCounter;
void rearrangeCounters();
void initSayMenu();
public:
static const int counterAreaWidth = 65;

View file

@ -281,6 +281,39 @@
<translation>Spielerzahl</translation>
</message>
</context>
<context>
<name>Counter</name>
<message>
<location filename="../src/counter.cpp" line="41"/>
<source>&amp;Set counter...</source>
<translation>Zähler &amp;setzen...</translation>
</message>
<message>
<location filename="../src/counter.cpp" line="43"/>
<source>Ctrl+L</source>
<translation>Ctrl+L</translation>
</message>
<message>
<location filename="../src/counter.cpp" line="44"/>
<source>F11</source>
<translation>F11</translation>
</message>
<message>
<location filename="../src/counter.cpp" line="45"/>
<source>F12</source>
<translation>F12</translation>
</message>
<message>
<location filename="../src/counter.cpp" line="94"/>
<source>Set counter</source>
<translation>Zähler setzen</translation>
</message>
<message>
<location filename="../src/counter.cpp" line="94"/>
<source>New value for counter &apos;%1&apos;:</source>
<translation>Neuer Wert für den Zähler &apos;%1&apos;:</translation>
</message>
</context>
<context>
<name>DeckList</name>
<message>
@ -1623,37 +1656,37 @@
<context>
<name>Player</name>
<message>
<location filename="../src/player.cpp" line="214"/>
<location filename="../src/player.cpp" line="204"/>
<source>Move to &amp;top of library</source>
<translation>Oben auf die Biblio&amp;thek legen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="215"/>
<location filename="../src/player.cpp" line="205"/>
<source>Move to &amp;bottom of library</source>
<translation>Unter die &amp;Bibliothek legen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="219"/>
<location filename="../src/player.cpp" line="209"/>
<source>&amp;View library</source>
<translation>&amp;Zeige Bibliothek</translation>
</message>
<message>
<location filename="../src/player.cpp" line="220"/>
<location filename="../src/player.cpp" line="210"/>
<source>F3</source>
<translation>F3</translation>
</message>
<message>
<location filename="../src/player.cpp" line="221"/>
<location filename="../src/player.cpp" line="211"/>
<source>View &amp;top cards of library...</source>
<translation>Zeige die oberen Kar&amp;ten der Bibliothek...</translation>
</message>
<message>
<location filename="../src/player.cpp" line="207"/>
<location filename="../src/player.cpp" line="197"/>
<source>&amp;View graveyard</source>
<translation>&amp;Zeige Friedhof</translation>
</message>
<message>
<location filename="../src/player.cpp" line="222"/>
<location filename="../src/player.cpp" line="212"/>
<source>F4</source>
<translation>F4</translation>
</message>
@ -1662,27 +1695,27 @@
<translation type="obsolete">Zeige ent&amp;fernte Karten</translation>
</message>
<message>
<location filename="../src/player.cpp" line="223"/>
<location filename="../src/player.cpp" line="213"/>
<source>&amp;View sideboard</source>
<translation>Zeige &amp;Sideboard</translation>
</message>
<message>
<location filename="../src/player.cpp" line="209"/>
<location filename="../src/player.cpp" line="199"/>
<source>Player &quot;%1&quot;</source>
<translation>Spieler &quot;%1&quot;</translation>
</message>
<message>
<location filename="../src/player.cpp" line="231"/>
<location filename="../src/player.cpp" line="221"/>
<source>&amp;Hand</source>
<translation>&amp;Hand</translation>
</message>
<message>
<location filename="../src/player.cpp" line="233"/>
<location filename="../src/player.cpp" line="223"/>
<source>&amp;Library</source>
<translation>Bib&amp;liothek</translation>
</message>
<message>
<location filename="../src/player.cpp" line="210"/>
<location filename="../src/player.cpp" line="200"/>
<source>&amp;Graveyard</source>
<translation>&amp;Friedhof</translation>
</message>
@ -1691,207 +1724,204 @@
<translation type="obsolete">Entfe&amp;rnte Karten</translation>
</message>
<message>
<location filename="../src/player.cpp" line="232"/>
<location filename="../src/player.cpp" line="222"/>
<source>&amp;Sideboard</source>
<translation>&amp;Sideboard</translation>
</message>
<message>
<location filename="../src/player.cpp" line="283"/>
<location filename="../src/player.cpp" line="272"/>
<source>View top cards of library</source>
<translation>Zeige die obersten Karten der Bibliothek</translation>
</message>
<message>
<location filename="../src/player.cpp" line="283"/>
<location filename="../src/player.cpp" line="272"/>
<source>Number of cards:</source>
<translation>Anzahl der Karten:</translation>
</message>
<message>
<location filename="../src/player.cpp" line="224"/>
<location filename="../src/player.cpp" line="214"/>
<source>&amp;Draw card</source>
<translation>Karte &amp;ziehen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="208"/>
<location filename="../src/player.cpp" line="198"/>
<source>&amp;View exile</source>
<translation>&amp;Zeige Exil</translation>
</message>
<message>
<location filename="../src/player.cpp" line="211"/>
<location filename="../src/player.cpp" line="201"/>
<source>&amp;Exile</source>
<translation>&amp;Exil</translation>
</message>
<message>
<location filename="../src/player.cpp" line="216"/>
<location filename="../src/player.cpp" line="206"/>
<source>Move to &amp;hand</source>
<translation>auf die &amp;Hand nehmen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="217"/>
<location filename="../src/player.cpp" line="207"/>
<source>Move to g&amp;raveyard</source>
<translation>auf den &amp;Friedhof legen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="218"/>
<location filename="../src/player.cpp" line="208"/>
<source>Move to &amp;exile</source>
<translation>ins &amp;Exil schicken</translation>
</message>
<message>
<location filename="../src/player.cpp" line="225"/>
<location filename="../src/player.cpp" line="215"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="../src/player.cpp" line="226"/>
<location filename="../src/player.cpp" line="216"/>
<source>D&amp;raw cards...</source>
<translation>Ka&amp;rten ziehen...</translation>
</message>
<message>
<location filename="../src/player.cpp" line="227"/>
<location filename="../src/player.cpp" line="217"/>
<source>Ctrl+E</source>
<translation>Ctrl+E</translation>
</message>
<message>
<location filename="../src/player.cpp" line="228"/>
<location filename="../src/player.cpp" line="218"/>
<source>&amp;Shuffle</source>
<translation>Mi&amp;schen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="229"/>
<location filename="../src/player.cpp" line="219"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../src/player.cpp" line="235"/>
<location filename="../src/player.cpp" line="224"/>
<source>&amp;Counters</source>
<translation>&amp;Zähler</translation>
</message>
<message>
<location filename="../src/player.cpp" line="226"/>
<source>&amp;Untap all permanents</source>
<translation>&amp;Enttappe alle bleibenden Karten</translation>
</message>
<message>
<location filename="../src/player.cpp" line="236"/>
<location filename="../src/player.cpp" line="227"/>
<source>Ctrl+U</source>
<translation>Ctrl+U</translation>
</message>
<message>
<location filename="../src/player.cpp" line="237"/>
<source>&amp;Decrement life</source>
<translation>Lebenspunkte &amp;verringern</translation>
<translation type="obsolete">Lebenspunkte &amp;verringern</translation>
</message>
<message>
<location filename="../src/player.cpp" line="238"/>
<source>F11</source>
<translation>F11</translation>
<translation type="obsolete">F11</translation>
</message>
<message>
<location filename="../src/player.cpp" line="239"/>
<source>&amp;Increment life</source>
<translation>Lebens&amp;punkte erhöhen</translation>
<translation type="obsolete">Lebens&amp;punkte erhöhen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="240"/>
<source>F12</source>
<translation>F12</translation>
<translation type="obsolete">F12</translation>
</message>
<message>
<location filename="../src/player.cpp" line="241"/>
<source>&amp;Set life</source>
<translation>&amp;Setze Lebenspunkte</translation>
<translation type="obsolete">&amp;Setze Lebenspunkte</translation>
</message>
<message>
<location filename="../src/player.cpp" line="242"/>
<source>Ctrl+L</source>
<translation>Ctrl+L</translation>
<translation type="obsolete">Ctrl+L</translation>
</message>
<message>
<location filename="../src/player.cpp" line="243"/>
<location filename="../src/player.cpp" line="228"/>
<source>R&amp;oll die...</source>
<translation>&amp;Würfeln...</translation>
</message>
<message>
<location filename="../src/player.cpp" line="244"/>
<location filename="../src/player.cpp" line="229"/>
<source>Ctrl+I</source>
<translation>Ctrl+I</translation>
</message>
<message>
<location filename="../src/player.cpp" line="245"/>
<location filename="../src/player.cpp" line="230"/>
<source>&amp;Create token...</source>
<translation>&amp;Token erstellen...</translation>
</message>
<message>
<location filename="../src/player.cpp" line="246"/>
<location filename="../src/player.cpp" line="231"/>
<source>Ctrl+T</source>
<translation>Ctrl+T</translation>
</message>
<message>
<location filename="../src/player.cpp" line="247"/>
<location filename="../src/player.cpp" line="232"/>
<source>S&amp;ay</source>
<translation>&amp;Sagen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="262"/>
<location filename="../src/player.cpp" line="251"/>
<source>F5</source>
<translation>F5</translation>
</message>
<message>
<location filename="../src/player.cpp" line="263"/>
<location filename="../src/player.cpp" line="252"/>
<source>F6</source>
<translation>F6</translation>
</message>
<message>
<location filename="../src/player.cpp" line="264"/>
<location filename="../src/player.cpp" line="253"/>
<source>F7</source>
<translation>F7</translation>
</message>
<message>
<location filename="../src/player.cpp" line="265"/>
<location filename="../src/player.cpp" line="254"/>
<source>F8</source>
<translation>F8</translation>
</message>
<message>
<location filename="../src/player.cpp" line="266"/>
<location filename="../src/player.cpp" line="255"/>
<source>F9</source>
<translation>F9</translation>
</message>
<message>
<location filename="../src/player.cpp" line="267"/>
<location filename="../src/player.cpp" line="256"/>
<source>F10</source>
<translation>F10</translation>
</message>
<message>
<location filename="../src/player.cpp" line="317"/>
<location filename="../src/player.cpp" line="306"/>
<source>Draw cards</source>
<translation>Karten ziehen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="317"/>
<location filename="../src/player.cpp" line="306"/>
<source>Number:</source>
<translation>Anzahl:</translation>
</message>
<message>
<location filename="../src/player.cpp" line="342"/>
<source>Set life</source>
<translation>Lebenspunkte setzen</translation>
<translation type="obsolete">Lebenspunkte setzen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="342"/>
<source>New life total:</source>
<translation>Neue Lebenspunkte insgesamt:</translation>
<translation type="obsolete">Neue Lebenspunkte insgesamt:</translation>
</message>
<message>
<location filename="../src/player.cpp" line="350"/>
<location filename="../src/player.cpp" line="319"/>
<source>Roll die</source>
<translation>Würfeln</translation>
</message>
<message>
<location filename="../src/player.cpp" line="350"/>
<location filename="../src/player.cpp" line="319"/>
<source>Number of sides:</source>
<translation>Anzahl der Seiten:</translation>
</message>
<message>
<location filename="../src/player.cpp" line="357"/>
<location filename="../src/player.cpp" line="326"/>
<source>Create token</source>
<translation>Token erstellen</translation>
</message>
<message>
<location filename="../src/player.cpp" line="357"/>
<location filename="../src/player.cpp" line="326"/>
<source>Name:</source>
<translation>Name:</translation>
</message>

View file

@ -246,6 +246,39 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Counter</name>
<message>
<location filename="../src/counter.cpp" line="41"/>
<source>&amp;Set counter...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/counter.cpp" line="43"/>
<source>Ctrl+L</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/counter.cpp" line="44"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/counter.cpp" line="45"/>
<source>F12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/counter.cpp" line="94"/>
<source>Set counter</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/counter.cpp" line="94"/>
<source>New value for counter &apos;%1&apos;:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DeckList</name>
<message>
@ -1161,267 +1194,232 @@
<context>
<name>Player</name>
<message>
<location filename="../src/player.cpp" line="214"/>
<location filename="../src/player.cpp" line="204"/>
<source>Move to &amp;top of library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="215"/>
<location filename="../src/player.cpp" line="205"/>
<source>Move to &amp;bottom of library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="219"/>
<location filename="../src/player.cpp" line="209"/>
<source>&amp;View library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="220"/>
<location filename="../src/player.cpp" line="210"/>
<source>F3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="221"/>
<location filename="../src/player.cpp" line="211"/>
<source>View &amp;top cards of library...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="207"/>
<location filename="../src/player.cpp" line="197"/>
<source>&amp;View graveyard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="222"/>
<location filename="../src/player.cpp" line="212"/>
<source>F4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="223"/>
<location filename="../src/player.cpp" line="213"/>
<source>&amp;View sideboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="209"/>
<location filename="../src/player.cpp" line="199"/>
<source>Player &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="231"/>
<location filename="../src/player.cpp" line="221"/>
<source>&amp;Hand</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="233"/>
<location filename="../src/player.cpp" line="223"/>
<source>&amp;Library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="210"/>
<location filename="../src/player.cpp" line="200"/>
<source>&amp;Graveyard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="232"/>
<location filename="../src/player.cpp" line="222"/>
<source>&amp;Sideboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="283"/>
<location filename="../src/player.cpp" line="272"/>
<source>View top cards of library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="283"/>
<location filename="../src/player.cpp" line="272"/>
<source>Number of cards:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="224"/>
<location filename="../src/player.cpp" line="214"/>
<source>&amp;Draw card</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="208"/>
<location filename="../src/player.cpp" line="198"/>
<source>&amp;View exile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="211"/>
<location filename="../src/player.cpp" line="201"/>
<source>&amp;Exile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="216"/>
<location filename="../src/player.cpp" line="206"/>
<source>Move to &amp;hand</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="217"/>
<location filename="../src/player.cpp" line="207"/>
<source>Move to g&amp;raveyard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="218"/>
<location filename="../src/player.cpp" line="208"/>
<source>Move to &amp;exile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="225"/>
<location filename="../src/player.cpp" line="215"/>
<source>Ctrl+D</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="226"/>
<location filename="../src/player.cpp" line="216"/>
<source>D&amp;raw cards...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="227"/>
<location filename="../src/player.cpp" line="217"/>
<source>Ctrl+E</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="228"/>
<location filename="../src/player.cpp" line="218"/>
<source>&amp;Shuffle</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="229"/>
<location filename="../src/player.cpp" line="219"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="235"/>
<location filename="../src/player.cpp" line="224"/>
<source>&amp;Counters</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="226"/>
<source>&amp;Untap all permanents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="236"/>
<location filename="../src/player.cpp" line="227"/>
<source>Ctrl+U</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="237"/>
<source>&amp;Decrement life</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="238"/>
<source>F11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="239"/>
<source>&amp;Increment life</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="240"/>
<source>F12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="241"/>
<source>&amp;Set life</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="242"/>
<source>Ctrl+L</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="243"/>
<location filename="../src/player.cpp" line="228"/>
<source>R&amp;oll die...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="244"/>
<location filename="../src/player.cpp" line="229"/>
<source>Ctrl+I</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="245"/>
<location filename="../src/player.cpp" line="230"/>
<source>&amp;Create token...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="246"/>
<location filename="../src/player.cpp" line="231"/>
<source>Ctrl+T</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="247"/>
<location filename="../src/player.cpp" line="232"/>
<source>S&amp;ay</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="262"/>
<location filename="../src/player.cpp" line="251"/>
<source>F5</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="263"/>
<location filename="../src/player.cpp" line="252"/>
<source>F6</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="264"/>
<location filename="../src/player.cpp" line="253"/>
<source>F7</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="265"/>
<location filename="../src/player.cpp" line="254"/>
<source>F8</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="266"/>
<location filename="../src/player.cpp" line="255"/>
<source>F9</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="267"/>
<location filename="../src/player.cpp" line="256"/>
<source>F10</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="317"/>
<location filename="../src/player.cpp" line="306"/>
<source>Draw cards</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="317"/>
<location filename="../src/player.cpp" line="306"/>
<source>Number:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="342"/>
<source>Set life</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="342"/>
<source>New life total:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="350"/>
<location filename="../src/player.cpp" line="319"/>
<source>Roll die</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="350"/>
<location filename="../src/player.cpp" line="319"/>
<source>Number of sides:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="357"/>
<location filename="../src/player.cpp" line="326"/>
<source>Create token</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/player.cpp" line="357"/>
<location filename="../src/player.cpp" line="326"/>
<source>Name:</source>
<translation type="unfinished"></translation>
</message>