Merge branch 'master' of git://cockatrice.git.sourceforge.net/gitroot/cockatrice/cockatrice
This commit is contained in:
commit
6cebad2513
13 changed files with 262 additions and 356 deletions
|
@ -28,7 +28,6 @@ HEADERS += src/abstractcounter.h \
|
||||||
src/handcounter.h \
|
src/handcounter.h \
|
||||||
src/carddatabase.h \
|
src/carddatabase.h \
|
||||||
src/gameview.h \
|
src/gameview.h \
|
||||||
src/deck_picturecacher.h \
|
|
||||||
src/decklistmodel.h \
|
src/decklistmodel.h \
|
||||||
src/dlg_load_deck_from_clipboard.h \
|
src/dlg_load_deck_from_clipboard.h \
|
||||||
src/dlg_load_remote_deck.h \
|
src/dlg_load_remote_deck.h \
|
||||||
|
@ -111,7 +110,6 @@ SOURCES += src/abstractcounter.cpp \
|
||||||
src/handcounter.cpp \
|
src/handcounter.cpp \
|
||||||
src/carddatabase.cpp \
|
src/carddatabase.cpp \
|
||||||
src/gameview.cpp \
|
src/gameview.cpp \
|
||||||
src/deck_picturecacher.cpp \
|
|
||||||
src/decklistmodel.cpp \
|
src/decklistmodel.cpp \
|
||||||
src/dlg_load_deck_from_clipboard.cpp \
|
src/dlg_load_deck_from_clipboard.cpp \
|
||||||
src/dlg_load_remote_deck.cpp \
|
src/dlg_load_remote_deck.cpp \
|
||||||
|
|
|
@ -60,6 +60,62 @@ void SetList::sortByKey()
|
||||||
qSort(begin(), end(), CompareFunctor());
|
qSort(begin(), end(), CompareFunctor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PictureLoadingThread::PictureLoadingThread(QObject *parent)
|
||||||
|
: QThread(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PictureLoadingThread::~PictureLoadingThread()
|
||||||
|
{
|
||||||
|
quit();
|
||||||
|
wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PictureLoadingThread::run()
|
||||||
|
{
|
||||||
|
forever {
|
||||||
|
mutex.lock();
|
||||||
|
if (loadQueue.isEmpty()) {
|
||||||
|
mutex.unlock();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CardInfo *card = loadQueue.takeFirst();
|
||||||
|
QString correctedName = card->getCorrectedName();
|
||||||
|
QString picsPath = _picsPath;
|
||||||
|
SetList sortedSets = card->getSets();
|
||||||
|
mutex.unlock();
|
||||||
|
|
||||||
|
sortedSets.sortByKey();
|
||||||
|
|
||||||
|
QImage image;
|
||||||
|
for (int i = 0; i < sortedSets.size(); i++) {
|
||||||
|
if (image.load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg(sortedSets[i]->getShortName()).arg(correctedName)))
|
||||||
|
break;
|
||||||
|
if (image.load(QString("%1/%2/%3%4.full.jpg").arg(picsPath).arg(sortedSets[i]->getShortName()).arg(correctedName).arg(1)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (image.isNull())
|
||||||
|
image.load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg("downloadedPics").arg(correctedName));
|
||||||
|
|
||||||
|
emit imageLoaded(card, image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PictureLoadingThread::loadImage(CardInfo *card)
|
||||||
|
{
|
||||||
|
QMutexLocker locker(&mutex);
|
||||||
|
loadQueue.append(card);
|
||||||
|
|
||||||
|
if (!isRunning())
|
||||||
|
start(LowPriority);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PictureLoadingThread::setPicsPath(const QString &path)
|
||||||
|
{
|
||||||
|
QMutexLocker locker(&mutex);
|
||||||
|
_picsPath = path;
|
||||||
|
}
|
||||||
|
|
||||||
CardInfo::CardInfo(CardDatabase *_db, const QString &_name, const QString &_manacost, const QString &_cardtype, const QString &_powtough, const QString &_text, const QStringList &_colors, bool _cipt, int _tableRow, const SetList &_sets, const QString &_picURL)
|
CardInfo::CardInfo(CardDatabase *_db, const QString &_name, const QString &_manacost, const QString &_cardtype, const QString &_powtough, const QString &_text, const QStringList &_colors, bool _cipt, int _tableRow, const SetList &_sets, const QString &_picURL)
|
||||||
: db(_db), name(_name), sets(_sets), manacost(_manacost), cardtype(_cardtype), powtough(_powtough), text(_text), colors(_colors), picURL(_picURL), cipt(_cipt), tableRow(_tableRow), pixmap(NULL)
|
: db(_db), name(_name), sets(_sets), manacost(_manacost), cardtype(_cardtype), powtough(_powtough), text(_text), colors(_colors), picURL(_picURL), cipt(_cipt), tableRow(_tableRow), pixmap(NULL)
|
||||||
{
|
{
|
||||||
|
@ -119,34 +175,22 @@ QPixmap *CardInfo::loadPixmap()
|
||||||
if (pixmap)
|
if (pixmap)
|
||||||
return pixmap;
|
return pixmap;
|
||||||
pixmap = new QPixmap();
|
pixmap = new QPixmap();
|
||||||
QString picsPath = settingsCache->getPicsPath();
|
|
||||||
if (!QDir(picsPath).exists())
|
|
||||||
return pixmap;
|
|
||||||
|
|
||||||
if (getName().isEmpty()) {
|
if (getName().isEmpty()) {
|
||||||
pixmap->load(settingsCache->getCardBackPicturePath());
|
pixmap->load(settingsCache->getCardBackPicturePath());
|
||||||
return pixmap;
|
return pixmap;
|
||||||
}
|
}
|
||||||
SetList sortedSets = sets;
|
db->loadImage(this);
|
||||||
sortedSets.sortByKey();
|
|
||||||
|
|
||||||
QString debugOutput = QString("CardDatabase: loading pixmap for '%1' from ").arg(getName());
|
|
||||||
for (int i = 0; i < sortedSets.size(); i++)
|
|
||||||
debugOutput.append(QString("%1, ").arg(sortedSets[i]->getShortName()));
|
|
||||||
qDebug(debugOutput.toLatin1());
|
|
||||||
|
|
||||||
QString correctedName = getCorrectedName();
|
|
||||||
for (int i = 0; i < sortedSets.size(); i++) {
|
|
||||||
if (pixmap->load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg(sortedSets[i]->getShortName()).arg(correctedName)))
|
|
||||||
return pixmap;
|
|
||||||
if (pixmap->load(QString("%1/%2/%3%4.full.jpg").arg(picsPath).arg(sortedSets[i]->getShortName()).arg(correctedName).arg(1)))
|
|
||||||
return pixmap;
|
return pixmap;
|
||||||
}
|
}
|
||||||
if (pixmap->load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg("downloadedPics").arg(correctedName)))
|
|
||||||
return pixmap;
|
void CardInfo::imageLoaded(const QImage &image)
|
||||||
if (settingsCache->getPicDownload())
|
{
|
||||||
|
if (!image.isNull()) {
|
||||||
|
*pixmap = QPixmap::fromImage(image);
|
||||||
|
emit pixmapUpdated();
|
||||||
|
} else if (settingsCache->getPicDownload())
|
||||||
db->startPicDownload(this);
|
db->startPicDownload(this);
|
||||||
return pixmap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QPixmap *CardInfo::getPixmap(QSize size)
|
QPixmap *CardInfo::getPixmap(QSize size)
|
||||||
|
@ -244,6 +288,11 @@ CardDatabase::CardDatabase(QObject *parent)
|
||||||
|
|
||||||
loadCardDatabase();
|
loadCardDatabase();
|
||||||
|
|
||||||
|
loadingThread = new PictureLoadingThread(this);
|
||||||
|
loadingThread->setPicsPath(settingsCache->getPicsPath());
|
||||||
|
connect(loadingThread, SIGNAL(imageLoaded(CardInfo *, QImage)), this, SLOT(imageLoaded(CardInfo *, QImage)));
|
||||||
|
loadingThread->start();
|
||||||
|
|
||||||
noCard = new CardInfo(this);
|
noCard = new CardInfo(this);
|
||||||
noCard->loadPixmap(); // cache pixmap for card back
|
noCard->loadPixmap(); // cache pixmap for card back
|
||||||
connect(settingsCache, SIGNAL(cardBackPicturePathChanged()), noCard, SLOT(updatePixmapCache()));
|
connect(settingsCache, SIGNAL(cardBackPicturePathChanged()), noCard, SLOT(updatePixmapCache()));
|
||||||
|
@ -532,3 +581,21 @@ QStringList CardDatabase::getAllMainCardTypes() const
|
||||||
types.insert(cardIterator.next().value()->getMainCardType());
|
types.insert(cardIterator.next().value()->getMainCardType());
|
||||||
return types.toList();
|
return types.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CardDatabase::cacheCardPixmaps(const QStringList &cardNames)
|
||||||
|
{
|
||||||
|
qDebug("pixmapCache started");
|
||||||
|
for (int i = 0; i < cardNames.size(); ++i)
|
||||||
|
getCard(cardNames[i])->loadPixmap();
|
||||||
|
qDebug("pixmapCache finished");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabase::loadImage(CardInfo *card)
|
||||||
|
{
|
||||||
|
loadingThread->loadImage(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabase::imageLoaded(CardInfo *card, QImage image)
|
||||||
|
{
|
||||||
|
card->imageLoaded(image);
|
||||||
|
}
|
|
@ -8,6 +8,8 @@
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
#include <QNetworkRequest>
|
#include <QNetworkRequest>
|
||||||
|
#include <QThread>
|
||||||
|
#include <QMutex>
|
||||||
|
|
||||||
class CardDatabase;
|
class CardDatabase;
|
||||||
class CardInfo;
|
class CardInfo;
|
||||||
|
@ -35,6 +37,23 @@ public:
|
||||||
void sortByKey();
|
void sortByKey();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PictureLoadingThread : public QThread {
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
QString _picsPath;
|
||||||
|
QList<CardInfo *> loadQueue;
|
||||||
|
QMutex mutex;
|
||||||
|
protected:
|
||||||
|
void run();
|
||||||
|
public:
|
||||||
|
PictureLoadingThread(QObject *parent);
|
||||||
|
~PictureLoadingThread();
|
||||||
|
void setPicsPath(const QString &path);
|
||||||
|
void loadImage(CardInfo *card);
|
||||||
|
signals:
|
||||||
|
void imageLoaded(CardInfo *card, const QImage &image);
|
||||||
|
};
|
||||||
|
|
||||||
class CardInfo : public QObject {
|
class CardInfo : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
private:
|
||||||
|
@ -85,6 +104,7 @@ public:
|
||||||
QPixmap *getPixmap(QSize size);
|
QPixmap *getPixmap(QSize size);
|
||||||
void clearPixmapCache();
|
void clearPixmapCache();
|
||||||
void clearPixmapCacheMiss();
|
void clearPixmapCacheMiss();
|
||||||
|
void imageLoaded(const QImage &image);
|
||||||
public slots:
|
public slots:
|
||||||
void updatePixmapCache();
|
void updatePixmapCache();
|
||||||
signals:
|
signals:
|
||||||
|
@ -102,6 +122,7 @@ protected:
|
||||||
bool downloadRunning;
|
bool downloadRunning;
|
||||||
bool loadSuccess;
|
bool loadSuccess;
|
||||||
CardInfo *noCard;
|
CardInfo *noCard;
|
||||||
|
PictureLoadingThread *loadingThread;
|
||||||
private:
|
private:
|
||||||
void loadCardsFromXml(QXmlStreamReader &xml);
|
void loadCardsFromXml(QXmlStreamReader &xml);
|
||||||
void loadSetsFromXml(QXmlStreamReader &xml);
|
void loadSetsFromXml(QXmlStreamReader &xml);
|
||||||
|
@ -120,6 +141,8 @@ public:
|
||||||
QStringList getAllColors() const;
|
QStringList getAllColors() const;
|
||||||
QStringList getAllMainCardTypes() const;
|
QStringList getAllMainCardTypes() const;
|
||||||
bool getLoadSuccess() const { return loadSuccess; }
|
bool getLoadSuccess() const { return loadSuccess; }
|
||||||
|
void cacheCardPixmaps(const QStringList &cardNames);
|
||||||
|
void loadImage(CardInfo *card);
|
||||||
public slots:
|
public slots:
|
||||||
void clearPixmapCache();
|
void clearPixmapCache();
|
||||||
bool loadCardDatabase(const QString &path);
|
bool loadCardDatabase(const QString &path);
|
||||||
|
@ -127,6 +150,7 @@ public slots:
|
||||||
private slots:
|
private slots:
|
||||||
void picDownloadFinished(QNetworkReply *reply);
|
void picDownloadFinished(QNetworkReply *reply);
|
||||||
void picDownloadChanged();
|
void picDownloadChanged();
|
||||||
|
void imageLoaded(CardInfo *card, QImage image);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
#include <QProgressDialog>
|
|
||||||
#include "deck_picturecacher.h"
|
|
||||||
#include "decklist.h"
|
|
||||||
#include "carddatabase.h"
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
void Deck_PictureCacher::cacheHelper(InnerDecklistNode *item, QProgressDialog *progress)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < item->size(); i++) {
|
|
||||||
DecklistCardNode *node = dynamic_cast<DecklistCardNode *>(item->at(i));
|
|
||||||
if (node) {
|
|
||||||
db->getCard(node->getName())->loadPixmap();
|
|
||||||
progress->setValue(progress->value() + 1);
|
|
||||||
} else
|
|
||||||
cacheHelper(dynamic_cast<InnerDecklistNode *>(item->at(i)), progress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Deck_PictureCacher::cachePictures(DeckList *deck, QWidget *parent)
|
|
||||||
{
|
|
||||||
int totalCards = deck->getRoot()->recursiveCount();
|
|
||||||
|
|
||||||
QProgressDialog progress(tr("Caching card pictures..."), QString(), 0, totalCards, parent);
|
|
||||||
progress.setMinimumDuration(1000);
|
|
||||||
progress.setWindowModality(Qt::WindowModal);
|
|
||||||
|
|
||||||
cacheHelper(deck->getRoot(), &progress);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
#ifndef DECK_PICTURECACHER_H
|
|
||||||
#define DECK_PICTURECACHER_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
|
|
||||||
class InnerDecklistNode;
|
|
||||||
class QProgressDialog;
|
|
||||||
class DeckList;
|
|
||||||
class QWidget;
|
|
||||||
|
|
||||||
class Deck_PictureCacher : public QObject {
|
|
||||||
Q_OBJECT
|
|
||||||
private:
|
|
||||||
static void cacheHelper(InnerDecklistNode *item, QProgressDialog *progress);
|
|
||||||
public:
|
|
||||||
static void cachePictures(DeckList *deck, QWidget *parent);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include "zoneviewwidget.h"
|
#include "zoneviewwidget.h"
|
||||||
#include "deckview.h"
|
#include "deckview.h"
|
||||||
#include "decklist.h"
|
#include "decklist.h"
|
||||||
#include "deck_picturecacher.h"
|
|
||||||
#include "protocol_items.h"
|
#include "protocol_items.h"
|
||||||
#include "dlg_load_remote_deck.h"
|
#include "dlg_load_remote_deck.h"
|
||||||
#include "abstractclient.h"
|
#include "abstractclient.h"
|
||||||
|
@ -26,6 +25,7 @@
|
||||||
#include "arrowitem.h"
|
#include "arrowitem.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "settingscache.h"
|
#include "settingscache.h"
|
||||||
|
#include "carddatabase.h"
|
||||||
|
|
||||||
ReadyStartButton::ReadyStartButton(QWidget *parent)
|
ReadyStartButton::ReadyStartButton(QWidget *parent)
|
||||||
: QPushButton(parent), readyStart(false)
|
: QPushButton(parent), readyStart(false)
|
||||||
|
@ -131,7 +131,7 @@ void DeckViewContainer::deckSelectFinished(ProtocolResponse *r)
|
||||||
if (!resp)
|
if (!resp)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Deck_PictureCacher::cachePictures(resp->getDeck(), this);
|
db->cacheCardPixmaps(resp->getDeck()->getCardList());
|
||||||
deckView->setDeck(new DeckList(resp->getDeck()));
|
deckView->setDeck(new DeckList(resp->getDeck()));
|
||||||
readyStartButton->setEnabled(true);
|
readyStartButton->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
@ -508,7 +508,7 @@ void TabGame::eventGameStateChanged(Event_GameStateChanged *event, GameEventCont
|
||||||
}
|
}
|
||||||
player->processPlayerInfo(pl);
|
player->processPlayerInfo(pl);
|
||||||
if (player->getLocal() && !pl->getDeck()->isEmpty()) {
|
if (player->getLocal() && !pl->getDeck()->isEmpty()) {
|
||||||
Deck_PictureCacher::cachePictures(pl->getDeck(), this);
|
db->cacheCardPixmaps(pl->getDeck()->getCardList());
|
||||||
deckViewContainers.value(player->getId())->setDeck(new DeckList(pl->getDeck()));
|
deckViewContainers.value(player->getId())->setDeck(new DeckList(pl->getDeck()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
#include "carddatabasemodel.h"
|
#include "carddatabasemodel.h"
|
||||||
#include "decklistmodel.h"
|
#include "decklistmodel.h"
|
||||||
#include "cardinfowidget.h"
|
#include "cardinfowidget.h"
|
||||||
#include "deck_picturecacher.h"
|
|
||||||
#include "dlg_cardsearch.h"
|
#include "dlg_cardsearch.h"
|
||||||
#include "dlg_load_deck_from_clipboard.h"
|
#include "dlg_load_deck_from_clipboard.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
@ -467,7 +466,7 @@ void WndDeckEditor::setDeck(DeckList *_deck, const QString &_lastFileName, DeckL
|
||||||
deckView->expandAll();
|
deckView->expandAll();
|
||||||
setWindowModified(false);
|
setWindowModified(false);
|
||||||
|
|
||||||
Deck_PictureCacher::cachePictures(_deck, this);
|
db->cacheCardPixmaps(_deck->getCardList());
|
||||||
deckView->expandAll();
|
deckView->expandAll();
|
||||||
setWindowModified(false);
|
setWindowModified(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,32 +6,32 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="56"/>
|
<location filename="../src/abstractcounter.cpp" line="56"/>
|
||||||
<source>&Set counter...</source>
|
<source>&Set counter...</source>
|
||||||
<translation type="unfinished">E&stablecer contadores...</translation>
|
<translation>E&stablecer contador...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="63"/>
|
<location filename="../src/abstractcounter.cpp" line="63"/>
|
||||||
<source>Ctrl+L</source>
|
<source>Ctrl+L</source>
|
||||||
<translation type="unfinished">Ctrl+L</translation>
|
<translation>Ctrl+L</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="64"/>
|
<location filename="../src/abstractcounter.cpp" line="64"/>
|
||||||
<source>F11</source>
|
<source>F11</source>
|
||||||
<translation type="unfinished">F11</translation>
|
<translation>F11</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="65"/>
|
<location filename="../src/abstractcounter.cpp" line="65"/>
|
||||||
<source>F12</source>
|
<source>F12</source>
|
||||||
<translation type="unfinished">F12</translation>
|
<translation>F12</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="122"/>
|
<location filename="../src/abstractcounter.cpp" line="122"/>
|
||||||
<source>Set counter</source>
|
<source>Set counter</source>
|
||||||
<translation type="unfinished">Establecer contador</translation>
|
<translation>Establecer contador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="122"/>
|
<location filename="../src/abstractcounter.cpp" line="122"/>
|
||||||
<source>New value for counter '%1':</source>
|
<source>New value for counter '%1':</source>
|
||||||
<translation type="unfinished">Nuevo valor para el contador '%1':</translation>
|
<translation>Nuevo valor para el contador '%1':</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -175,12 +175,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="175"/>
|
<location filename="../src/carditem.cpp" line="175"/>
|
||||||
<source>&Play</source>
|
<source>&Play</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Jugar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="176"/>
|
<location filename="../src/carditem.cpp" line="176"/>
|
||||||
<source>&Hide</source>
|
<source>&Hide</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Ocultar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="178"/>
|
<location filename="../src/carditem.cpp" line="178"/>
|
||||||
|
@ -1103,7 +1103,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="114"/>
|
<location filename="../src/tab_room.cpp" line="114"/>
|
||||||
<source>Show &full games</source>
|
<source>Show &full games</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ver partidas &sin plazas libres</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Show full games</source>
|
<source>&Show full games</source>
|
||||||
|
@ -1248,42 +1248,42 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="158"/>
|
<location filename="../src/window_main.cpp" line="158"/>
|
||||||
<source>Version %1</source>
|
<source>Version %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Versión %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="159"/>
|
<location filename="../src/window_main.cpp" line="159"/>
|
||||||
<source>Authors:</source>
|
<source>Authors:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Autores:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="160"/>
|
<location filename="../src/window_main.cpp" line="160"/>
|
||||||
<source>Translators:</source>
|
<source>Translators:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Traductores:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="161"/>
|
<location filename="../src/window_main.cpp" line="161"/>
|
||||||
<source>Spanish:</source>
|
<source>Spanish:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Español:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="162"/>
|
<location filename="../src/window_main.cpp" line="162"/>
|
||||||
<source>Portugese (Portugal):</source>
|
<source>Portugese (Portugal):</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Portugués (Portugal):</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="163"/>
|
<location filename="../src/window_main.cpp" line="163"/>
|
||||||
<source>Portugese (Brazil):</source>
|
<source>Portugese (Brazil):</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Portugués (Brasil):</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="164"/>
|
<location filename="../src/window_main.cpp" line="164"/>
|
||||||
<source>French:</source>
|
<source>French:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Francés:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="165"/>
|
<location filename="../src/window_main.cpp" line="165"/>
|
||||||
<source>Japanese:</source>
|
<source>Japanese:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Japonés:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="171"/>
|
<location filename="../src/window_main.cpp" line="171"/>
|
||||||
|
@ -1499,7 +1499,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/messagelogwidget.cpp" line="202"/>
|
<location filename="../src/messagelogwidget.cpp" line="202"/>
|
||||||
<source>%1 gives %2 control over %3.</source>
|
<source>%1 gives %2 control over %3.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1 entrega a %2 el control sobre %3.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/messagelogwidget.cpp" line="208"/>
|
<location filename="../src/messagelogwidget.cpp" line="208"/>
|
||||||
|
@ -2165,7 +2165,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/player.cpp" line="416"/>
|
<location filename="../src/player.cpp" line="416"/>
|
||||||
<source>Put top card on &bottom</source>
|
<source>Put top card on &bottom</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Poner carta superior en la parte &inferior</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/player.cpp" line="419"/>
|
<location filename="../src/player.cpp" line="419"/>
|
||||||
|
@ -2337,32 +2337,32 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="51"/>
|
<location filename="../src/tab_server.cpp" line="51"/>
|
||||||
<source>Rooms</source>
|
<source>Rooms</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Salas</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="52"/>
|
<location filename="../src/tab_server.cpp" line="52"/>
|
||||||
<source>Joi&n</source>
|
<source>Joi&n</source>
|
||||||
<translation type="unfinished">E&ntrar</translation>
|
<translation>E&ntrar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="55"/>
|
<location filename="../src/tab_server.cpp" line="55"/>
|
||||||
<source>Room</source>
|
<source>Room</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Sala</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="56"/>
|
<location filename="../src/tab_server.cpp" line="56"/>
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<translation type="unfinished">Descripción</translation>
|
<translation>Descripción</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="57"/>
|
<location filename="../src/tab_server.cpp" line="57"/>
|
||||||
<source>Players</source>
|
<source>Players</source>
|
||||||
<translation type="unfinished">Jugadores</translation>
|
<translation>Jugadores</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="58"/>
|
<location filename="../src/tab_server.cpp" line="58"/>
|
||||||
<source>Games</source>
|
<source>Games</source>
|
||||||
<translation type="unfinished">Partidas</translation>
|
<translation>Partidas</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2390,37 +2390,37 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||||
<source>Update server &message</source>
|
<source>Update server &message</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Actualizar &mensaje del servidor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="41"/>
|
<location filename="../src/tab_admin.cpp" line="41"/>
|
||||||
<source>Server administration functions</source>
|
<source>Server administration functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Funciones de administración del servidor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="43"/>
|
<location filename="../src/tab_admin.cpp" line="43"/>
|
||||||
<source>&Unlock functions</source>
|
<source>&Unlock functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Desbloquear funciones</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="44"/>
|
<location filename="../src/tab_admin.cpp" line="44"/>
|
||||||
<source>&Lock functions</source>
|
<source>&Lock functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Bloquear funciones</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="54"/>
|
<location filename="../src/tab_admin.cpp" line="54"/>
|
||||||
<source>Unlock administration functions</source>
|
<source>Unlock administration functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Desbloquear funciones de administración</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="54"/>
|
<location filename="../src/tab_admin.cpp" line="54"/>
|
||||||
<source>Do you really want to unlock the administration functions?</source>
|
<source>Do you really want to unlock the administration functions?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>¿Realmente quieres desbloquear las funciones de administración?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.h" line="26"/>
|
<location filename="../src/tab_admin.h" line="26"/>
|
||||||
<source>Administration</source>
|
<source>Administration</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Administración</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2626,32 +2626,32 @@ Por favor, introduzca un nombre:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="219"/>
|
<location filename="../src/tab_room.cpp" line="219"/>
|
||||||
<source>&Say:</source>
|
<source>&Say:</source>
|
||||||
<translation type="unfinished">&Decir:</translation>
|
<translation>&Decir:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="220"/>
|
<location filename="../src/tab_room.cpp" line="220"/>
|
||||||
<source>Chat</source>
|
<source>Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="221"/>
|
<location filename="../src/tab_room.cpp" line="221"/>
|
||||||
<source>&Room</source>
|
<source>&Room</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Sala</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="222"/>
|
<location filename="../src/tab_room.cpp" line="222"/>
|
||||||
<source>&Leave room</source>
|
<source>&Leave room</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Dejar sala</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="268"/>
|
<location filename="../src/tab_room.cpp" line="268"/>
|
||||||
<source>%1 has joined the room.</source>
|
<source>%1 has joined the room.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1 se ha unido a la sala.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="274"/>
|
<location filename="../src/tab_room.cpp" line="274"/>
|
||||||
<source>%1 has left the room.</source>
|
<source>%1 has left the room.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1 ha dejado la sala.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2667,12 +2667,12 @@ Por favor, introduzca un nombre:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="38"/>
|
<location filename="../src/userinfobox.cpp" line="38"/>
|
||||||
<source>User information</source>
|
<source>User information</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Información del usuario</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="45"/>
|
<location filename="../src/userinfobox.cpp" line="45"/>
|
||||||
<source>Real name:</source>
|
<source>Real name:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Nombre real:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="46"/>
|
<location filename="../src/userinfobox.cpp" line="46"/>
|
||||||
|
@ -2687,22 +2687,22 @@ Por favor, introduzca un nombre:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="65"/>
|
<location filename="../src/userinfobox.cpp" line="65"/>
|
||||||
<source>Administrator</source>
|
<source>Administrator</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Administrador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="67"/>
|
<location filename="../src/userinfobox.cpp" line="67"/>
|
||||||
<source>Judge</source>
|
<source>Judge</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Juez</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="69"/>
|
<location filename="../src/userinfobox.cpp" line="69"/>
|
||||||
<source>Registered user</source>
|
<source>Registered user</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Usuario registrado</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="71"/>
|
<location filename="../src/userinfobox.cpp" line="71"/>
|
||||||
<source>Unregistered user</source>
|
<source>Unregistered user</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Usuario no registrado</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2738,17 +2738,17 @@ Por favor, introduzca un nombre:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="65"/>
|
<location filename="../src/userlist.cpp" line="65"/>
|
||||||
<source>Users in this room: %1</source>
|
<source>Users in this room: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Usuarios en esta sala: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="119"/>
|
<location filename="../src/userlist.cpp" line="119"/>
|
||||||
<source>User &details</source>
|
<source>User &details</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Detalles del usuario</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="120"/>
|
<location filename="../src/userlist.cpp" line="120"/>
|
||||||
<source>Direct &chat</source>
|
<source>Direct &chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Chat privado</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2837,14 +2837,15 @@ Por favor, introduzca un nombre:</translation>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation type="unfinished">Error</translation>
|
<translation>Error</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
||||||
<source>The deck could not be saved.
|
<source>The deck could not be saved.
|
||||||
Please check that the directory is writable and try again.</source>
|
Please check that the directory is writable and try again.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>El mazo no puede guardarse
|
||||||
|
Por favor, compruebe que tiene permisos de escritura en el directorio e intentelo de nuevo.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="318"/>
|
<location filename="../src/window_deckeditor.cpp" line="318"/>
|
||||||
|
@ -2935,7 +2936,7 @@ Please check that the directory is writable and try again.</source>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="254"/>
|
<location filename="../src/window_deckeditor.cpp" line="254"/>
|
||||||
<source>The decklist has been modified.
|
<source>The decklist has been modified.
|
||||||
Do you want to save the changes?</source>
|
Do you want to save the changes?</source>
|
||||||
<translation type="unfinished">La lista del mazo ha sido modificada
|
<translation>La lista del mazo ha sido modificada
|
||||||
¿Deseas guardar los cambios?</translation>
|
¿Deseas guardar los cambios?</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
|
|
@ -6,32 +6,32 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="56"/>
|
<location filename="../src/abstractcounter.cpp" line="56"/>
|
||||||
<source>&Set counter...</source>
|
<source>&Set counter...</source>
|
||||||
<translation type="unfinished">Alterar &marcador...</translation>
|
<translation>Alterar &marcador...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="63"/>
|
<location filename="../src/abstractcounter.cpp" line="63"/>
|
||||||
<source>Ctrl+L</source>
|
<source>Ctrl+L</source>
|
||||||
<translation type="unfinished">Ctrl+L</translation>
|
<translation>Ctrl+L</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="64"/>
|
<location filename="../src/abstractcounter.cpp" line="64"/>
|
||||||
<source>F11</source>
|
<source>F11</source>
|
||||||
<translation type="unfinished">F11</translation>
|
<translation>F11</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="65"/>
|
<location filename="../src/abstractcounter.cpp" line="65"/>
|
||||||
<source>F12</source>
|
<source>F12</source>
|
||||||
<translation type="unfinished">F12</translation>
|
<translation>F12</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="122"/>
|
<location filename="../src/abstractcounter.cpp" line="122"/>
|
||||||
<source>Set counter</source>
|
<source>Set counter</source>
|
||||||
<translation type="unfinished">Alterar marcador</translation>
|
<translation>Alterar marcador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="122"/>
|
<location filename="../src/abstractcounter.cpp" line="122"/>
|
||||||
<source>New value for counter '%1':</source>
|
<source>New value for counter '%1':</source>
|
||||||
<translation type="unfinished">Novo valor para o marcador '%1':</translation>
|
<translation>Novo valor para o marcador '%1':</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -171,12 +171,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="175"/>
|
<location filename="../src/carditem.cpp" line="175"/>
|
||||||
<source>&Play</source>
|
<source>&Play</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Jogar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="176"/>
|
<location filename="../src/carditem.cpp" line="176"/>
|
||||||
<source>&Hide</source>
|
<source>&Hide</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Ocultar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="178"/>
|
<location filename="../src/carditem.cpp" line="178"/>
|
||||||
|
@ -957,7 +957,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="114"/>
|
<location filename="../src/tab_room.cpp" line="114"/>
|
||||||
<source>Show &full games</source>
|
<source>Show &full games</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Mostrar os jogos cheios</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Show full games</source>
|
<source>&Show full games</source>
|
||||||
|
@ -1106,42 +1106,42 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="158"/>
|
<location filename="../src/window_main.cpp" line="158"/>
|
||||||
<source>Version %1</source>
|
<source>Version %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Versão %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="159"/>
|
<location filename="../src/window_main.cpp" line="159"/>
|
||||||
<source>Authors:</source>
|
<source>Authors:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Autores:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="160"/>
|
<location filename="../src/window_main.cpp" line="160"/>
|
||||||
<source>Translators:</source>
|
<source>Translators:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Tradutores:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="161"/>
|
<location filename="../src/window_main.cpp" line="161"/>
|
||||||
<source>Spanish:</source>
|
<source>Spanish:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Espanhol:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="162"/>
|
<location filename="../src/window_main.cpp" line="162"/>
|
||||||
<source>Portugese (Portugal):</source>
|
<source>Portugese (Portugal):</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Português (Portugal):</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="163"/>
|
<location filename="../src/window_main.cpp" line="163"/>
|
||||||
<source>Portugese (Brazil):</source>
|
<source>Portugese (Brazil):</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Português (Brasil):</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="164"/>
|
<location filename="../src/window_main.cpp" line="164"/>
|
||||||
<source>French:</source>
|
<source>French:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Francês:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="165"/>
|
<location filename="../src/window_main.cpp" line="165"/>
|
||||||
<source>Japanese:</source>
|
<source>Japanese:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Japonês:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="171"/>
|
<location filename="../src/window_main.cpp" line="171"/>
|
||||||
|
@ -1357,7 +1357,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/messagelogwidget.cpp" line="202"/>
|
<location filename="../src/messagelogwidget.cpp" line="202"/>
|
||||||
<source>%1 gives %2 control over %3.</source>
|
<source>%1 gives %2 control over %3.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1 dá controle para %2 sobre %3.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/messagelogwidget.cpp" line="208"/>
|
<location filename="../src/messagelogwidget.cpp" line="208"/>
|
||||||
|
@ -2015,7 +2015,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/player.cpp" line="416"/>
|
<location filename="../src/player.cpp" line="416"/>
|
||||||
<source>Put top card on &bottom</source>
|
<source>Put top card on &bottom</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Colocar o card do topo no &fundo</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/player.cpp" line="419"/>
|
<location filename="../src/player.cpp" line="419"/>
|
||||||
|
@ -2175,32 +2175,32 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="51"/>
|
<location filename="../src/tab_server.cpp" line="51"/>
|
||||||
<source>Rooms</source>
|
<source>Rooms</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Salas</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="52"/>
|
<location filename="../src/tab_server.cpp" line="52"/>
|
||||||
<source>Joi&n</source>
|
<source>Joi&n</source>
|
||||||
<translation type="unfinished">&Entrar</translation>
|
<translation>&Entrar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="55"/>
|
<location filename="../src/tab_server.cpp" line="55"/>
|
||||||
<source>Room</source>
|
<source>Room</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Sala</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="56"/>
|
<location filename="../src/tab_server.cpp" line="56"/>
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<translation type="unfinished">Descrição</translation>
|
<translation>Descrição</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="57"/>
|
<location filename="../src/tab_server.cpp" line="57"/>
|
||||||
<source>Players</source>
|
<source>Players</source>
|
||||||
<translation type="unfinished">Jogadores</translation>
|
<translation>Jogadores</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_server.cpp" line="58"/>
|
<location filename="../src/tab_server.cpp" line="58"/>
|
||||||
<source>Games</source>
|
<source>Games</source>
|
||||||
<translation type="unfinished">Jogos</translation>
|
<translation>Jogos</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2228,37 +2228,37 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||||
<source>Update server &message</source>
|
<source>Update server &message</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Atualizar mensagem do servidor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="41"/>
|
<location filename="../src/tab_admin.cpp" line="41"/>
|
||||||
<source>Server administration functions</source>
|
<source>Server administration functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Funções do administrador do servidor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="43"/>
|
<location filename="../src/tab_admin.cpp" line="43"/>
|
||||||
<source>&Unlock functions</source>
|
<source>&Unlock functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Desbloquear funções</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="44"/>
|
<location filename="../src/tab_admin.cpp" line="44"/>
|
||||||
<source>&Lock functions</source>
|
<source>&Lock functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Bloquear funções</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="54"/>
|
<location filename="../src/tab_admin.cpp" line="54"/>
|
||||||
<source>Unlock administration functions</source>
|
<source>Unlock administration functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Desbloquear funções do administrador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="54"/>
|
<location filename="../src/tab_admin.cpp" line="54"/>
|
||||||
<source>Do you really want to unlock the administration functions?</source>
|
<source>Do you really want to unlock the administration functions?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Você quer mesmo desbloquear as funções do administrador?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.h" line="26"/>
|
<location filename="../src/tab_admin.h" line="26"/>
|
||||||
<source>Administration</source>
|
<source>Administration</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Administração</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2464,32 +2464,32 @@ Por favor, entre um nome:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="219"/>
|
<location filename="../src/tab_room.cpp" line="219"/>
|
||||||
<source>&Say:</source>
|
<source>&Say:</source>
|
||||||
<translation type="unfinished">&Falar:</translation>
|
<translation>&Falar:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="220"/>
|
<location filename="../src/tab_room.cpp" line="220"/>
|
||||||
<source>Chat</source>
|
<source>Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="221"/>
|
<location filename="../src/tab_room.cpp" line="221"/>
|
||||||
<source>&Room</source>
|
<source>&Room</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Sala</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="222"/>
|
<location filename="../src/tab_room.cpp" line="222"/>
|
||||||
<source>&Leave room</source>
|
<source>&Leave room</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>S&air da sala</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="268"/>
|
<location filename="../src/tab_room.cpp" line="268"/>
|
||||||
<source>%1 has joined the room.</source>
|
<source>%1 has joined the room.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1 entrou na sala.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_room.cpp" line="274"/>
|
<location filename="../src/tab_room.cpp" line="274"/>
|
||||||
<source>%1 has left the room.</source>
|
<source>%1 has left the room.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1 saiu da sala.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2505,12 +2505,12 @@ Por favor, entre um nome:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="38"/>
|
<location filename="../src/userinfobox.cpp" line="38"/>
|
||||||
<source>User information</source>
|
<source>User information</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Informação do usuário</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="45"/>
|
<location filename="../src/userinfobox.cpp" line="45"/>
|
||||||
<source>Real name:</source>
|
<source>Real name:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Nome real:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="46"/>
|
<location filename="../src/userinfobox.cpp" line="46"/>
|
||||||
|
@ -2525,22 +2525,22 @@ Por favor, entre um nome:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="65"/>
|
<location filename="../src/userinfobox.cpp" line="65"/>
|
||||||
<source>Administrator</source>
|
<source>Administrator</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Administrador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="67"/>
|
<location filename="../src/userinfobox.cpp" line="67"/>
|
||||||
<source>Judge</source>
|
<source>Judge</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Juiz</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="69"/>
|
<location filename="../src/userinfobox.cpp" line="69"/>
|
||||||
<source>Registered user</source>
|
<source>Registered user</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Usuário registrado</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="71"/>
|
<location filename="../src/userinfobox.cpp" line="71"/>
|
||||||
<source>Unregistered user</source>
|
<source>Unregistered user</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Usuário não registrado</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2576,17 +2576,17 @@ Por favor, entre um nome:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="65"/>
|
<location filename="../src/userlist.cpp" line="65"/>
|
||||||
<source>Users in this room: %1</source>
|
<source>Users in this room: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Usuários nesta sala: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="119"/>
|
<location filename="../src/userlist.cpp" line="119"/>
|
||||||
<source>User &details</source>
|
<source>User &details</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Detalhes do usuário</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="120"/>
|
<location filename="../src/userlist.cpp" line="120"/>
|
||||||
<source>Direct &chat</source>
|
<source>Direct &chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Chat direto</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2675,14 +2675,15 @@ Por favor, entre um nome:</translation>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation type="unfinished">Erro</translation>
|
<translation>Erro</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
<location filename="../src/window_deckeditor.cpp" line="312"/>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
<location filename="../src/window_deckeditor.cpp" line="336"/>
|
||||||
<source>The deck could not be saved.
|
<source>The deck could not be saved.
|
||||||
Please check that the directory is writable and try again.</source>
|
Please check that the directory is writable and try again.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>O deck não pôde ser salvo.
|
||||||
|
Por favor, verifique se o diretório não é somente leitura e tente novamente.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_deckeditor.cpp" line="318"/>
|
<location filename="../src/window_deckeditor.cpp" line="318"/>
|
||||||
|
|
|
@ -6,32 +6,32 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="56"/>
|
<location filename="../src/abstractcounter.cpp" line="56"/>
|
||||||
<source>&Set counter...</source>
|
<source>&Set counter...</source>
|
||||||
<translation type="unfinished">Definir &marcador...</translation>
|
<translation>Definir &marcador...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="63"/>
|
<location filename="../src/abstractcounter.cpp" line="63"/>
|
||||||
<source>Ctrl+L</source>
|
<source>Ctrl+L</source>
|
||||||
<translation type="unfinished">Ctrl+L</translation>
|
<translation>Ctrl+L</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="64"/>
|
<location filename="../src/abstractcounter.cpp" line="64"/>
|
||||||
<source>F11</source>
|
<source>F11</source>
|
||||||
<translation type="unfinished">F11</translation>
|
<translation>F11</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="65"/>
|
<location filename="../src/abstractcounter.cpp" line="65"/>
|
||||||
<source>F12</source>
|
<source>F12</source>
|
||||||
<translation type="unfinished">F12</translation>
|
<translation>F12</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="122"/>
|
<location filename="../src/abstractcounter.cpp" line="122"/>
|
||||||
<source>Set counter</source>
|
<source>Set counter</source>
|
||||||
<translation type="unfinished">Definir marcador</translation>
|
<translation>Definir marcador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/abstractcounter.cpp" line="122"/>
|
<location filename="../src/abstractcounter.cpp" line="122"/>
|
||||||
<source>New value for counter '%1':</source>
|
<source>New value for counter '%1':</source>
|
||||||
<translation type="unfinished">Novo valor para o marcador '%1':</translation>
|
<translation>Novo valor para o marcador '%1':</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -176,7 +176,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="176"/>
|
<location filename="../src/carditem.cpp" line="176"/>
|
||||||
<source>&Hide</source>
|
<source>&Hide</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Esco&nder</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/carditem.cpp" line="178"/>
|
<location filename="../src/carditem.cpp" line="178"/>
|
||||||
|
@ -550,7 +550,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_game.cpp" line="86"/>
|
<location filename="../src/tab_game.cpp" line="86"/>
|
||||||
<source>Ready to s&tart</source>
|
<source>Ready to s&tart</source>
|
||||||
<translation>Pronto para &começar</translation>
|
<translation>&Pronto para começar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_game.cpp" line="98"/>
|
<location filename="../src/tab_game.cpp" line="98"/>
|
||||||
|
@ -1130,12 +1130,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="162"/>
|
<location filename="../src/window_main.cpp" line="162"/>
|
||||||
<source>Portugese (Portugal):</source>
|
<source>Portugese (Portugal):</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Português (Portugal):</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="163"/>
|
<location filename="../src/window_main.cpp" line="163"/>
|
||||||
<source>Portugese (Brazil):</source>
|
<source>Portugese (Brazil):</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Português (Brasil):</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="164"/>
|
<location filename="../src/window_main.cpp" line="164"/>
|
||||||
|
@ -1145,7 +1145,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="165"/>
|
<location filename="../src/window_main.cpp" line="165"/>
|
||||||
<source>Japanese:</source>
|
<source>Japanese:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Japonês:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/window_main.cpp" line="171"/>
|
<location filename="../src/window_main.cpp" line="171"/>
|
||||||
|
@ -2232,37 +2232,37 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||||
<source>Update server &message</source>
|
<source>Update server &message</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Actualizar mensagem do servidor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="41"/>
|
<location filename="../src/tab_admin.cpp" line="41"/>
|
||||||
<source>Server administration functions</source>
|
<source>Server administration functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Funções do administrador do servidor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="43"/>
|
<location filename="../src/tab_admin.cpp" line="43"/>
|
||||||
<source>&Unlock functions</source>
|
<source>&Unlock functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Desbloquear funções</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="44"/>
|
<location filename="../src/tab_admin.cpp" line="44"/>
|
||||||
<source>&Lock functions</source>
|
<source>&Lock functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>&Bloquear funções</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="54"/>
|
<location filename="../src/tab_admin.cpp" line="54"/>
|
||||||
<source>Unlock administration functions</source>
|
<source>Unlock administration functions</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Desbloquear funções de administração</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.cpp" line="54"/>
|
<location filename="../src/tab_admin.cpp" line="54"/>
|
||||||
<source>Do you really want to unlock the administration functions?</source>
|
<source>Do you really want to unlock the administration functions?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Quer mesmo desbloquear as funçõesde administração?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/tab_admin.h" line="26"/>
|
<location filename="../src/tab_admin.h" line="26"/>
|
||||||
<source>Administration</source>
|
<source>Administration</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Administração</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2509,12 +2509,12 @@ Por favor introduza um nome:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="38"/>
|
<location filename="../src/userinfobox.cpp" line="38"/>
|
||||||
<source>User information</source>
|
<source>User information</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Informação do utilizador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="45"/>
|
<location filename="../src/userinfobox.cpp" line="45"/>
|
||||||
<source>Real name:</source>
|
<source>Real name:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Nome real:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userinfobox.cpp" line="46"/>
|
<location filename="../src/userinfobox.cpp" line="46"/>
|
||||||
|
@ -2585,12 +2585,12 @@ Por favor introduza um nome:</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="119"/>
|
<location filename="../src/userlist.cpp" line="119"/>
|
||||||
<source>User &details</source>
|
<source>User &details</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Detalhes do &utilizador</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/userlist.cpp" line="120"/>
|
<location filename="../src/userlist.cpp" line="120"/>
|
||||||
<source>Direct &chat</source>
|
<source>Direct &chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Conversação &directa</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
|
|
@ -468,6 +468,24 @@ void DeckList::cleanList()
|
||||||
setComments();
|
setComments();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeckList::getCardListHelper(InnerDecklistNode *item, QSet<QString> &result) const
|
||||||
|
{
|
||||||
|
for (int i = 0; i < item->size(); ++i) {
|
||||||
|
DecklistCardNode *node = dynamic_cast<DecklistCardNode *>(item->at(i));
|
||||||
|
if (node)
|
||||||
|
result.insert(node->getName());
|
||||||
|
else
|
||||||
|
getCardListHelper(dynamic_cast<InnerDecklistNode *>(item->at(i)), result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList DeckList::getCardList() const
|
||||||
|
{
|
||||||
|
QSet<QString> result;
|
||||||
|
getCardListHelper(root, result);
|
||||||
|
return result.toList();
|
||||||
|
}
|
||||||
|
|
||||||
DecklistCardNode *DeckList::addCard(const QString &cardName, const QString &zoneName)
|
DecklistCardNode *DeckList::addCard(const QString &cardName, const QString &zoneName)
|
||||||
{
|
{
|
||||||
InnerDecklistNode *zoneNode = dynamic_cast<InnerDecklistNode *>(root->findChild(zoneName));
|
InnerDecklistNode *zoneNode = dynamic_cast<InnerDecklistNode *>(root->findChild(zoneName));
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <QPair>
|
#include <QPair>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QSet>
|
||||||
#include "serializable_item.h"
|
#include "serializable_item.h"
|
||||||
|
|
||||||
class CardDatabase;
|
class CardDatabase;
|
||||||
|
@ -115,6 +116,7 @@ private:
|
||||||
InnerDecklistNode *currentZone;
|
InnerDecklistNode *currentZone;
|
||||||
SideboardPlan *currentSideboardPlan;
|
SideboardPlan *currentSideboardPlan;
|
||||||
QString currentElementText;
|
QString currentElementText;
|
||||||
|
void getCardListHelper(InnerDecklistNode *node, QSet<QString> &result) const;
|
||||||
signals:
|
signals:
|
||||||
void deckLoaded();
|
void deckLoaded();
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -149,6 +151,7 @@ public:
|
||||||
|
|
||||||
void cleanList();
|
void cleanList();
|
||||||
bool isEmpty() const { return root->isEmpty() && name.isEmpty() && comments.isEmpty() && sideboardPlans.isEmpty(); }
|
bool isEmpty() const { return root->isEmpty() && name.isEmpty() && comments.isEmpty() && sideboardPlans.isEmpty(); }
|
||||||
|
QStringList getCardList() const;
|
||||||
|
|
||||||
InnerDecklistNode *getRoot() const { return root; }
|
InnerDecklistNode *getRoot() const { return root; }
|
||||||
DecklistCardNode *addCard(const QString &cardName, const QString &zoneName);
|
DecklistCardNode *addCard(const QString &cardName, const QString &zoneName);
|
||||||
|
|
157
doc/protocol.txt
157
doc/protocol.txt
|
@ -1,157 +0,0 @@
|
||||||
1. Abstract
|
|
||||||
|
|
||||||
The Cockatrice protocol is a client/server protocol intended for communication between
|
|
||||||
a card game client and a suitable server. It is designed with the goal in mind to make
|
|
||||||
playing card games, such as Magic the Gathering, over a network easy while eliminating
|
|
||||||
the possibility of unfair play. Because of that, the server stores all hidden information
|
|
||||||
and transmits pieces of it to clients only when necessary.
|
|
||||||
|
|
||||||
2. Protocol structure
|
|
||||||
|
|
||||||
All communication is done over a TCP/IP connection. The protocol is text based.
|
|
||||||
Strings are encoded in UTF-8 and have UNIX-style line endings (\n).
|
|
||||||
|
|
||||||
There are four distinct types of messages:
|
|
||||||
- Command (section 3)
|
|
||||||
- Response (section 4)
|
|
||||||
- Event (section 5)
|
|
||||||
- List (section 6)
|
|
||||||
|
|
||||||
3. Commands
|
|
||||||
|
|
||||||
A command can only be sent from client to server and has the following structure:
|
|
||||||
{ID}|{command}|{parameter1}|{parameter2}...
|
|
||||||
"ID" is an arbitrary number to be chosen uniquely for each command.
|
|
||||||
"command" is a command identifier (see section 3).
|
|
||||||
It depends on the command identifier what has to be passed as parameters.
|
|
||||||
|
|
||||||
3.1 ping
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
none
|
|
||||||
Parameters:
|
|
||||||
none
|
|
||||||
Valid response codes:
|
|
||||||
ok
|
|
||||||
|
|
||||||
No effect.
|
|
||||||
|
|
||||||
3.2 login
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
none
|
|
||||||
Parameters:
|
|
||||||
User name (string)
|
|
||||||
Password (string)
|
|
||||||
Valid response codes:
|
|
||||||
ok
|
|
||||||
password
|
|
||||||
|
|
||||||
If the supplied credentials are correct, "ok" is returned and the connection state
|
|
||||||
is set to authenticated. (The server is not required to actually check the validity
|
|
||||||
of the credentials.)
|
|
||||||
Otherwise, "password" is returned.
|
|
||||||
|
|
||||||
3.3 list_games
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
login needed
|
|
||||||
Parameters:
|
|
||||||
none
|
|
||||||
Valid response codes:
|
|
||||||
ok
|
|
||||||
|
|
||||||
If the connection state is unauthenticated, "login_needed" is returned.
|
|
||||||
Otherwise, "ok" is returned and for each game currently, a list_games event XXX is
|
|
||||||
sent to the client. The "accepts game list changes" flag of the connection is set.
|
|
||||||
|
|
||||||
3.4 create_game
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
login needed
|
|
||||||
Parameters:
|
|
||||||
Description (string)
|
|
||||||
Password (string)
|
|
||||||
Number of players (int)
|
|
||||||
Valid response codes:
|
|
||||||
ok
|
|
||||||
|
|
||||||
A game with the given parameters is created. The client is set as creator of the
|
|
||||||
game and joins it automatically. The "accepts game list changes" flag of the connection
|
|
||||||
is unset.
|
|
||||||
|
|
||||||
3.5 join_game
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
login needed
|
|
||||||
Parameters:
|
|
||||||
Game ID (int)
|
|
||||||
Password (string)
|
|
||||||
Valid response codes:
|
|
||||||
ok
|
|
||||||
password
|
|
||||||
|
|
||||||
If the password for the given game is correct, the client leaves the current game
|
|
||||||
(if any) and joins the given game. The "accepts game list changes" flag of the connection
|
|
||||||
is unset.
|
|
||||||
|
|
||||||
3.6 leave_game
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
login needed
|
|
||||||
game needed
|
|
||||||
Parameters:
|
|
||||||
none
|
|
||||||
Valid response codes:
|
|
||||||
ok
|
|
||||||
|
|
||||||
The client leaves the current game.
|
|
||||||
|
|
||||||
3.7 list_players
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
login needed
|
|
||||||
game needed
|
|
||||||
Parameters:
|
|
||||||
none
|
|
||||||
|
|
||||||
|
|
||||||
3.8 say
|
|
||||||
3.9 submit_deck
|
|
||||||
3.10 ready_start
|
|
||||||
3.11 shuffle
|
|
||||||
3.12 draw_cards
|
|
||||||
3.13 reveal_card
|
|
||||||
3.14 move_card
|
|
||||||
3.15 create_token
|
|
||||||
3.16 set_card_attr
|
|
||||||
3.17 inc_counter
|
|
||||||
3.18 add_counter
|
|
||||||
3.19 set_counter
|
|
||||||
3.20 del_counter
|
|
||||||
3.21 list_counters
|
|
||||||
3.22 list_zones
|
|
||||||
3.23 dump_zone
|
|
||||||
3.24 roll_dice
|
|
||||||
3.25 set_active_player
|
|
||||||
3.26 set_active_phase
|
|
||||||
|
|
||||||
4. Responses
|
|
||||||
|
|
||||||
After processing any command, the server sends a response to the client, indicating
|
|
||||||
whether the command was understood and valid.
|
|
||||||
A response can only be sent from server to client and has the following structure:
|
|
||||||
resp|{ID}|{resp-code}
|
|
||||||
|
|
||||||
{ID} is the identifier belonging to the command in question.
|
|
||||||
{resp-code} contains information about the processing of the command. It can have the
|
|
||||||
following values:
|
|
||||||
ok (Success)
|
|
||||||
login_needed (Error: Command requires login)
|
|
||||||
syntax (Error: Invalid command or parameters)
|
|
||||||
context (Error: Command cannot be applied here)
|
|
||||||
password (Error: Wrong login data)
|
|
||||||
|
|
||||||
The response code "syntax" is valid as a response to any command and is
|
|
||||||
hence not explicitly listed in section 3. The response code "login_needed" applies
|
|
||||||
to all commands with the "login needed" flag.
|
|
Loading…
Reference in a new issue