fix: conflicts && add: new translation
|
@ -21,7 +21,7 @@ Dependencies:
|
|||
- [protobuf](http://code.google.com/p/protobuf/)
|
||||
- [CMake](http://www.cmake.org/)
|
||||
|
||||
The server requires an additional dependency:
|
||||
The server requires an additional dependency when compiled under Qt4:
|
||||
|
||||
- [libgcrypt](http://www.gnu.org/software/libgcrypt/)
|
||||
|
||||
|
|
|
@ -51,21 +51,24 @@ Section "Application" SecApplication
|
|||
SectionEnd
|
||||
|
||||
Section "Update configuration" SecUpdateConfig
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "carddatabase" "$APPDATA\Cockatrice\cards.xml"
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "decks" "$APPDATA\Cockatrice\decks"
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "pics" "$APPDATA\Cockatrice\pics"
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\sound" "path" "$APPDATA\Cockatrice\sounds"
|
||||
SetShellVarContext current
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "carddatabase" "$LOCALAPPDATA\Cockatrice\cards.xml"
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "decks" "$LOCALAPPDATA\Cockatrice\decks"
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "pics" "$LOCALAPPDATA\Cockatrice\pics"
|
||||
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\sound" "path" "$LOCALAPPDATA\Cockatrice\sounds"
|
||||
SectionEnd
|
||||
|
||||
Section "Start menu item" SecStartMenu
|
||||
SetShellVarContext all
|
||||
createDirectory "$SMPROGRAMS\Cockatrice"
|
||||
createShortCut "$SMPROGRAMS\Cockatrice\Cockatrice.lnk" "$INSTDIR\cockatrice.exe" '--debug-output'
|
||||
createShortCut "$SMPROGRAMS\Cockatrice\Oracle.lnk" "$INSTDIR\oracle.exe"
|
||||
createShortCut "$SMPROGRAMS\Cockatrice\Servatrice.lnk" "$INSTDIR\servatrice.exe"
|
||||
createShortCut "$SMPROGRAMS\Cockatrice\Usermanual.lnk" "$INSTDIR\Usermanual.pdf"
|
||||
SectionEnd
|
||||
|
||||
Section Uninstall
|
||||
SetShellVarContext all
|
||||
SetShellVarContext all
|
||||
RMDir /r "$INSTDIR\zonebg"
|
||||
RMDir /r "$INSTDIR\plugins"
|
||||
RMDir /r "$INSTDIR\sounds"
|
||||
|
@ -73,18 +76,23 @@ SetShellVarContext all
|
|||
Delete "$INSTDIR\uninstall.exe"
|
||||
Delete "$INSTDIR\cockatrice.exe"
|
||||
Delete "$INSTDIR\oracle.exe"
|
||||
Delete "$INSTDIR\servatrice.exe"
|
||||
Delete "$INSTDIR\Usermanual.pdf"
|
||||
Delete "$INSTDIR\libprotobuf.lib"
|
||||
Delete "$INSTDIR\Qt*.dll"
|
||||
Delete "$INSTDIR\icu*.dll"
|
||||
Delete "$INSTDIR\qt.conf"
|
||||
Delete "$INSTDIR\qdebug.txt"
|
||||
Delete "$INSTDIR\servatrice.sql"
|
||||
Delete "$INSTDIR\servatrice.ini.example"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
RMDir "$SMPROGRAMS\Cockatrice"
|
||||
|
||||
DeleteRegKey HKCU "Software\Cockatrice"
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice"
|
||||
|
||||
SetShellVarContext current
|
||||
DeleteRegKey HKCU "Software\Cockatrice"
|
||||
SectionEnd
|
||||
|
||||
LangString DESC_SecApplication ${LANG_ENGLISH} "Cockatrice program files"
|
||||
|
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 345 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 192 KiB |
|
@ -76,8 +76,8 @@ void SetList::sortByKey()
|
|||
qSort(begin(), end(), CompareFunctor());
|
||||
}
|
||||
|
||||
PictureToLoad::PictureToLoad(CardInfo *_card, bool _stripped, bool _hq)
|
||||
: card(_card), stripped(_stripped), setIndex(0), hq(_hq)
|
||||
PictureToLoad::PictureToLoad(CardInfo *_card, bool _hq)
|
||||
: card(_card), setIndex(0), hq(_hq)
|
||||
{
|
||||
if (card) {
|
||||
sortedSets = card->getSets();
|
||||
|
@ -135,14 +135,14 @@ void PictureLoader::processLoadQueue()
|
|||
mutex.unlock();
|
||||
|
||||
//The list of paths to the folders in which to search for images
|
||||
QList<QString> picsPaths = QList<QString>() << _picsPath + "/CUSTOM/" + ptl.getCard()->getCorrectedName() + ".full";
|
||||
QList<QString> picsPaths = QList<QString>() << _picsPath + "/CUSTOM/" + ptl.getCard()->getCorrectedName();
|
||||
|
||||
|
||||
QString setName=ptl.getSetName();
|
||||
if(!setName.isEmpty())
|
||||
{
|
||||
picsPaths << _picsPath + "/" + setName + "/" + ptl.getCard()->getCorrectedName() + ".full"
|
||||
<< _picsPath + "/downloadedPics/" + setName + "/" + ptl.getCard()->getCorrectedName() + ".full";
|
||||
picsPaths << _picsPath + "/" + setName + "/" + ptl.getCard()->getCorrectedName()
|
||||
<< _picsPath + "/downloadedPics/" + setName + "/" + ptl.getCard()->getCorrectedName();
|
||||
}
|
||||
|
||||
QImage image;
|
||||
|
@ -153,6 +153,12 @@ void PictureLoader::processLoadQueue()
|
|||
//Iterates through the list of paths, searching for images with the desired name with any QImageReader-supported extension
|
||||
for (int i = 0; i < picsPaths.length() && !found; i ++) {
|
||||
imgReader.setFileName(picsPaths.at(i));
|
||||
if (imgReader.read(&image)) {
|
||||
emit imageLoaded(ptl.getCard(), image);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
imgReader.setFileName(picsPaths.at(i) + ".full");
|
||||
if (imgReader.read(&image)) {
|
||||
emit imageLoaded(ptl.getCard(), image);
|
||||
found = true;
|
||||
|
@ -257,14 +263,14 @@ void PictureLoader::picDownloadFinished(QNetworkReply *reply)
|
|||
|
||||
const QByteArray &picData = reply->peek(reply->size()); //peek is used to keep the data in the buffer for use by QImageReader
|
||||
QImage testImage;
|
||||
|
||||
|
||||
QImageReader imgReader;
|
||||
imgReader.setDecideFormatFromContent(true);
|
||||
imgReader.setDevice(reply);
|
||||
QString extension = "." + imgReader.format(); //the format is determined prior to reading the QImageReader data into a QImage object, as that wipes the QImageReader buffer
|
||||
if (extension == ".jpeg")
|
||||
extension = ".jpg";
|
||||
|
||||
|
||||
if (imgReader.read(&testImage)) {
|
||||
QString setName = cardBeingDownloaded.getSetName();
|
||||
if(!setName.isEmpty())
|
||||
|
@ -274,11 +280,7 @@ void PictureLoader::picDownloadFinished(QNetworkReply *reply)
|
|||
return;
|
||||
}
|
||||
|
||||
QString suffix;
|
||||
if (!cardBeingDownloaded.getStripped())
|
||||
suffix = ".full";
|
||||
|
||||
QFile newPic(picsPath + "/downloadedPics/" + setName + "/" + cardBeingDownloaded.getCard()->getCorrectedName() + suffix + extension);
|
||||
QFile newPic(picsPath + "/downloadedPics/" + setName + "/" + cardBeingDownloaded.getCard()->getCorrectedName() + extension);
|
||||
if (!newPic.open(QIODevice::WriteOnly))
|
||||
return;
|
||||
newPic.write(picData);
|
||||
|
@ -306,11 +308,11 @@ void PictureLoader::picDownloadFinished(QNetworkReply *reply)
|
|||
startNextPicDownload();
|
||||
}
|
||||
|
||||
void PictureLoader::loadImage(CardInfo *card, bool stripped)
|
||||
void PictureLoader::loadImage(CardInfo *card)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
|
||||
loadQueue.append(PictureToLoad(card, stripped));
|
||||
loadQueue.append(PictureToLoad(card));
|
||||
emit startLoadQueue();
|
||||
}
|
||||
|
||||
|
@ -491,7 +493,7 @@ void CardInfo::updatePixmapCache()
|
|||
qDebug() << "Updating pixmap cache for" << name;
|
||||
clearPixmapCache();
|
||||
loadPixmap();
|
||||
|
||||
|
||||
emit pixmapUpdated();
|
||||
}
|
||||
|
||||
|
@ -603,7 +605,7 @@ CardDatabase::~CardDatabase()
|
|||
{
|
||||
clear();
|
||||
delete noCard;
|
||||
|
||||
|
||||
pictureLoader->deleteLater();
|
||||
pictureLoaderThread->wait();
|
||||
delete pictureLoaderThread;
|
||||
|
@ -617,7 +619,7 @@ void CardDatabase::clear()
|
|||
delete setIt.value();
|
||||
}
|
||||
sets.clear();
|
||||
|
||||
|
||||
QHashIterator<QString, CardInfo *> i(cards);
|
||||
while (i.hasNext()) {
|
||||
i.next();
|
||||
|
@ -708,7 +710,7 @@ void CardDatabase::loadSetsFromXml(QXmlStreamReader &xml)
|
|||
}
|
||||
}
|
||||
|
||||
void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml)
|
||||
void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens)
|
||||
{
|
||||
while (!xml.atEnd()) {
|
||||
if (xml.readNext() == QXmlStreamReader::EndElement)
|
||||
|
@ -760,16 +762,38 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml)
|
|||
else if (xml.name() == "token")
|
||||
isToken = xml.readElementText().toInt();
|
||||
}
|
||||
addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids));
|
||||
|
||||
if (isToken == tokens) {
|
||||
addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CardInfo *CardNameMap::findByPrefix(const std::string &prefix) {
|
||||
int count = 0;
|
||||
CardInfo *found;
|
||||
|
||||
for (CardNameMap::iterator it = this->begin(); it != this->end(); ++it) {
|
||||
if (std::mismatch(prefix.begin(), prefix.end(),
|
||||
it.key().toStdString().begin()).first == prefix.end()) {
|
||||
count++;
|
||||
found = it.value();
|
||||
}
|
||||
}
|
||||
|
||||
return (count == 1 ? found : NULL);
|
||||
}
|
||||
|
||||
CardInfo *CardDatabase::getCardFromMap(CardNameMap &cardMap, const QString &cardName, bool createIfNotFound) {
|
||||
CardInfo *foundCard;
|
||||
|
||||
if (cardName.isEmpty())
|
||||
return noCard;
|
||||
else if (cardMap.contains(cardName))
|
||||
return cardMap.value(cardName);
|
||||
else if ((foundCard = cardMap.findByPrefix(cardName.toStdString())))
|
||||
return foundCard;
|
||||
else if (createIfNotFound) {
|
||||
CardInfo *newCard = new CardInfo(this, cardName, true);
|
||||
newCard->addToSet(getSet("TK"));
|
||||
|
@ -779,7 +803,7 @@ CardInfo *CardDatabase::getCardFromMap(CardNameMap &cardMap, const QString &card
|
|||
return 0;
|
||||
}
|
||||
|
||||
LoadStatus CardDatabase::loadFromFile(const QString &fileName)
|
||||
LoadStatus CardDatabase::loadFromFile(const QString &fileName, bool tokens)
|
||||
{
|
||||
QFile file(fileName);
|
||||
file.open(QIODevice::ReadOnly);
|
||||
|
@ -802,7 +826,7 @@ LoadStatus CardDatabase::loadFromFile(const QString &fileName)
|
|||
if (xml.name() == "sets")
|
||||
loadSetsFromXml(xml);
|
||||
else if (xml.name() == "cards")
|
||||
loadCardsFromXml(xml);
|
||||
loadCardsFromXml(xml, tokens);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -837,7 +861,9 @@ bool CardDatabase::saveToFile(const QString &fileName, bool tokens)
|
|||
QHashIterator<QString, CardInfo *> cardIterator(cards);
|
||||
while (cardIterator.hasNext()) {
|
||||
CardInfo *card = cardIterator.next().value();
|
||||
xml << card;
|
||||
if (tokens == card->getIsToken()) {
|
||||
xml << card;
|
||||
}
|
||||
}
|
||||
xml.writeEndElement(); // cards
|
||||
|
||||
|
@ -871,7 +897,7 @@ LoadStatus CardDatabase::loadCardDatabase(const QString &path, bool tokens)
|
|||
{
|
||||
LoadStatus tempLoadStatus = NotLoaded;
|
||||
if (!path.isEmpty())
|
||||
tempLoadStatus = loadFromFile(path);
|
||||
tempLoadStatus = loadFromFile(path, tokens);
|
||||
|
||||
if (tempLoadStatus == Ok) {
|
||||
SetList allSets;
|
||||
|
@ -936,7 +962,7 @@ void CardDatabase::cacheCardPixmaps(const QStringList &cardNames)
|
|||
|
||||
void CardDatabase::loadImage(CardInfo *card)
|
||||
{
|
||||
pictureLoader->loadImage(card, false);
|
||||
pictureLoader->loadImage(card);
|
||||
}
|
||||
|
||||
void CardDatabase::imageLoaded(CardInfo *card, QImage image)
|
||||
|
|
|
@ -47,14 +47,12 @@ public:
|
|||
class PictureToLoad {
|
||||
private:
|
||||
CardInfo *card;
|
||||
bool stripped;
|
||||
SetList sortedSets;
|
||||
int setIndex;
|
||||
bool hq;
|
||||
public:
|
||||
PictureToLoad(CardInfo *_card = 0, bool _stripped = false, bool _hq = true);
|
||||
PictureToLoad(CardInfo *_card = 0, bool _hq = true);
|
||||
CardInfo *getCard() const { return card; }
|
||||
bool getStripped() const { return stripped; }
|
||||
QString getSetName() const;
|
||||
bool nextSet();
|
||||
bool getHq() const { return hq; }
|
||||
|
@ -79,7 +77,7 @@ public:
|
|||
void setPicsPath(const QString &path);
|
||||
void setPicDownload(bool _picDownload);
|
||||
void setPicDownloadHq(bool _picDownloadHq);
|
||||
void loadImage(CardInfo *card, bool stripped);
|
||||
void loadImage(CardInfo *card);
|
||||
private slots:
|
||||
void picDownloadFinished(QNetworkReply *reply);
|
||||
public slots:
|
||||
|
@ -182,7 +180,13 @@ signals:
|
|||
|
||||
enum LoadStatus { Ok, VersionTooOld, Invalid, NotLoaded, FileError, NoCards };
|
||||
|
||||
typedef QHash<QString, CardInfo *> CardNameMap;
|
||||
|
||||
class CardNameMap: public QHash<QString, CardInfo *>
|
||||
{
|
||||
public:
|
||||
CardInfo *findByPrefix(const std::string &prefix);
|
||||
};
|
||||
|
||||
typedef QHash<QString, CardSet *> SetNameMap;
|
||||
|
||||
class CardDatabase : public QObject {
|
||||
|
@ -210,7 +214,7 @@ protected:
|
|||
LoadStatus loadStatus;
|
||||
private:
|
||||
static const int versionNeeded;
|
||||
void loadCardsFromXml(QXmlStreamReader &xml);
|
||||
void loadCardsFromXml(QXmlStreamReader &xml, bool tokens);
|
||||
void loadSetsFromXml(QXmlStreamReader &xml);
|
||||
|
||||
CardInfo *getCardFromMap(CardNameMap &cardMap, const QString &cardName, bool createIfNotFound);
|
||||
|
@ -231,7 +235,7 @@ public:
|
|||
CardSet *getSet(const QString &setName);
|
||||
QList<CardInfo *> getCardList() const { return cards.values(); }
|
||||
SetList getSetList() const;
|
||||
LoadStatus loadFromFile(const QString &fileName);
|
||||
LoadStatus loadFromFile(const QString &fileName, bool tokens = false);
|
||||
bool saveToFile(const QString &fileName, bool tokens = false);
|
||||
QStringList getAllColors() const;
|
||||
QStringList getAllMainCardTypes() const;
|
||||
|
|
|
@ -84,7 +84,9 @@ void CardDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
|||
sc->removeItem(c);
|
||||
}
|
||||
}
|
||||
currentZone->handleDropEvent(dragItemList, startZone, (sp - currentZone->scenePos()).toPoint());
|
||||
|
||||
if(currentZone)
|
||||
currentZone->handleDropEvent(dragItemList, startZone, (sp - currentZone->scenePos()).toPoint());
|
||||
|
||||
event->accept();
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include <QGridLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QDebug>
|
||||
#include <iostream>
|
||||
#include "dlg_connect.h"
|
||||
|
||||
DlgConnect::DlgConnect(QWidget *parent)
|
||||
|
@ -32,6 +34,19 @@ DlgConnect::DlgConnect(QWidget *parent)
|
|||
savePasswordCheckBox = new QCheckBox(tr("&Save password"));
|
||||
savePasswordCheckBox->setChecked(settings.value("save_password", 1).toInt());
|
||||
|
||||
autoConnectCheckBox = new QCheckBox(tr("A&uto connect at start"));
|
||||
if(savePasswordCheckBox->isChecked())
|
||||
{
|
||||
autoConnectCheckBox->setChecked(settings.value("auto_connect", 0).toInt());
|
||||
autoConnectCheckBox->setEnabled(true);
|
||||
} else {
|
||||
settings.setValue("auto_connect", 0);
|
||||
autoConnectCheckBox->setChecked(0);
|
||||
autoConnectCheckBox->setEnabled(false);
|
||||
}
|
||||
|
||||
connect(savePasswordCheckBox, SIGNAL(stateChanged(int)), this, SLOT(passwordSaved(int)));
|
||||
|
||||
QGridLayout *grid = new QGridLayout;
|
||||
grid->addWidget(hostLabel, 0, 0);
|
||||
grid->addWidget(hostEdit, 0, 1);
|
||||
|
@ -42,10 +57,11 @@ DlgConnect::DlgConnect(QWidget *parent)
|
|||
grid->addWidget(passwordLabel, 3, 0);
|
||||
grid->addWidget(passwordEdit, 3, 1);
|
||||
grid->addWidget(savePasswordCheckBox, 4, 0, 1, 2);
|
||||
grid->addWidget(autoConnectCheckBox, 5, 0, 1, 2);
|
||||
|
||||
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
connect(buttonBox, SIGNAL(accepted()), this, SLOT(actOk()));
|
||||
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
||||
connect(buttonBox, SIGNAL(rejected()), this, SLOT(actCancel()));
|
||||
|
||||
QVBoxLayout *mainLayout = new QVBoxLayout;
|
||||
mainLayout->addLayout(grid);
|
||||
|
@ -57,6 +73,16 @@ DlgConnect::DlgConnect(QWidget *parent)
|
|||
setMinimumWidth(300);
|
||||
}
|
||||
|
||||
void DlgConnect::passwordSaved(int state)
|
||||
{
|
||||
if(savePasswordCheckBox->isChecked()) {
|
||||
autoConnectCheckBox->setEnabled(true);
|
||||
} else {
|
||||
autoConnectCheckBox->setChecked(0);
|
||||
autoConnectCheckBox->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void DlgConnect::actOk()
|
||||
{
|
||||
QSettings settings;
|
||||
|
@ -66,7 +92,19 @@ void DlgConnect::actOk()
|
|||
settings.setValue("playername", playernameEdit->text());
|
||||
settings.setValue("password", savePasswordCheckBox->isChecked() ? passwordEdit->text() : QString());
|
||||
settings.setValue("save_password", savePasswordCheckBox->isChecked() ? 1 : 0);
|
||||
settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0);
|
||||
settings.endGroup();
|
||||
|
||||
accept();
|
||||
}
|
||||
|
||||
void DlgConnect::actCancel()
|
||||
{
|
||||
QSettings settings;
|
||||
settings.beginGroup("server");
|
||||
settings.setValue("save_password", savePasswordCheckBox->isChecked() ? 1 : 0);
|
||||
settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0);
|
||||
settings.endGroup();
|
||||
|
||||
reject();
|
||||
}
|
||||
|
|
|
@ -18,10 +18,12 @@ public:
|
|||
QString getPassword() const { return passwordEdit->text(); }
|
||||
private slots:
|
||||
void actOk();
|
||||
void actCancel();
|
||||
void passwordSaved(int state);
|
||||
private:
|
||||
QLabel *hostLabel, *portLabel, *playernameLabel, *passwordLabel;
|
||||
QLineEdit *hostEdit, *portEdit, *playernameEdit, *passwordEdit;
|
||||
QCheckBox *savePasswordCheckBox;
|
||||
QCheckBox *savePasswordCheckBox, *autoConnectCheckBox;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -56,6 +56,10 @@ bool KeySignals::eventFilter(QObject * /*object*/, QEvent *event) {
|
|||
&& kevent->modifiers().testFlag(Qt::ControlModifier) )
|
||||
emit onCtrlAltRBracket();
|
||||
|
||||
break;
|
||||
case Qt::Key_S:
|
||||
emit onS();
|
||||
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
|
|
|
@ -18,6 +18,7 @@ signals:
|
|||
void onCtrlAltEqual();
|
||||
void onCtrlAltLBracket();
|
||||
void onCtrlAltRBracket();
|
||||
void onS();
|
||||
|
||||
protected:
|
||||
virtual bool eventFilter(QObject *, QEvent *event);
|
||||
|
|
|
@ -100,7 +100,7 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare
|
|||
: QObject(_parent),
|
||||
game(_parent),
|
||||
shortcutsActive(false),
|
||||
defaultNumberTopCards(3),
|
||||
defaultNumberTopCards(1),
|
||||
lastTokenDestroy(true),
|
||||
id(_id),
|
||||
active(false),
|
||||
|
@ -1092,8 +1092,12 @@ void Player::eventCreateToken(const Event_CreateToken &event)
|
|||
return;
|
||||
|
||||
CardItem *card = new CardItem(this, QString::fromStdString(event.card_name()), event.card_id());
|
||||
// use db PT if not provided in event
|
||||
if (!QString::fromStdString(event.pt()).isEmpty())
|
||||
card->setPT(QString::fromStdString(event.pt()));
|
||||
else
|
||||
card->setPT(db->getCard(QString::fromStdString(event.card_name()))->getPowTough());
|
||||
card->setColor(QString::fromStdString(event.color()));
|
||||
card->setPT(QString::fromStdString(event.pt()));
|
||||
card->setAnnotation(QString::fromStdString(event.annotation()));
|
||||
card->setDestroyOnZoneChange(event.destroy_on_zone_change());
|
||||
|
||||
|
|
|
@ -48,6 +48,8 @@ SettingsCache::SettingsCache()
|
|||
priceTagSource = settings->value("deckeditor/pricetagsource", 0).toInt();
|
||||
|
||||
ignoreUnregisteredUsers = settings->value("chat/ignore_unregistered", false).toBool();
|
||||
|
||||
attemptAutoConnect = settings->value("server/auto_connect", 0).toBool();
|
||||
}
|
||||
|
||||
void SettingsCache::setLang(const QString &_lang)
|
||||
|
@ -267,6 +269,12 @@ void SettingsCache::setMainWindowGeometry(const QByteArray &_mainWindowGeometry)
|
|||
settings->setValue("interface/main_window_geometry", mainWindowGeometry);
|
||||
}
|
||||
|
||||
void SettingsCache::setAutoConnect(const bool &_autoConnect)
|
||||
{
|
||||
attemptAutoConnect = _autoConnect;
|
||||
settings->setValue("server/auto_connect", attemptAutoConnect ? 1 : 0);
|
||||
}
|
||||
|
||||
void SettingsCache::copyPath(const QString &src, const QString &dst)
|
||||
{
|
||||
// test source && return if inexistent
|
||||
|
|
|
@ -57,6 +57,7 @@ private:
|
|||
bool ignoreUnregisteredUsers;
|
||||
QString picUrl;
|
||||
QString picUrlHq;
|
||||
bool attemptAutoConnect;
|
||||
public:
|
||||
SettingsCache();
|
||||
const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; }
|
||||
|
@ -93,6 +94,7 @@ public:
|
|||
QString getPicUrl() const { return picUrl; }
|
||||
QString getPicUrlHq() const { return picUrlHq; }
|
||||
void copyPath(const QString &src, const QString &dst);
|
||||
bool getAutoConnect() const { return attemptAutoConnect; }
|
||||
public slots:
|
||||
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
|
||||
void setLang(const QString &_lang);
|
||||
|
@ -127,6 +129,7 @@ public slots:
|
|||
void setIgnoreUnregisteredUsers(bool _ignoreUnregisteredUsers);
|
||||
void setPicUrl(const QString &_picUrl);
|
||||
void setPicUrlHq(const QString &_picUrlHq);
|
||||
void setAutoConnect(const bool &_autoConnect);
|
||||
};
|
||||
|
||||
extern SettingsCache *settingsCache;
|
||||
|
|
|
@ -141,6 +141,8 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
|||
#endif
|
||||
deckView->installEventFilter(&deckViewKeySignals);
|
||||
connect(deckView->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(updateCardInfoRight(const QModelIndex &, const QModelIndex &)));
|
||||
connect(deckView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(actSwapCard()));
|
||||
connect(&deckViewKeySignals, SIGNAL(onS()), this, SLOT(actSwapCard()));
|
||||
connect(&deckViewKeySignals, SIGNAL(onEnter()), this, SLOT(actIncrement()));
|
||||
connect(&deckViewKeySignals, SIGNAL(onCtrlAltEqual()), this, SLOT(actIncrement()));
|
||||
connect(&deckViewKeySignals, SIGNAL(onCtrlAltMinus()), this, SLOT(actDecrement()));
|
||||
|
@ -571,6 +573,27 @@ void TabDeckEditor::addCardHelper(QString zoneName)
|
|||
setModified(true);
|
||||
}
|
||||
|
||||
void TabDeckEditor::actSwapCard()
|
||||
{
|
||||
const QModelIndex currentIndex = deckView->selectionModel()->currentIndex();
|
||||
if (!currentIndex.isValid())
|
||||
return;
|
||||
const QString cardName = currentIndex.sibling(currentIndex.row(), 1).data().toString();
|
||||
const QModelIndex gparent = currentIndex.parent().parent();
|
||||
if (!gparent.isValid())
|
||||
return;
|
||||
|
||||
const QString zoneName = gparent.sibling(gparent.row(), 1).data().toString();
|
||||
actDecrement();
|
||||
|
||||
const QString otherZoneName = zoneName == "Maindeck" ? "side" : "main";
|
||||
|
||||
QModelIndex newCardIndex = deckModel->addCard(cardName, otherZoneName);
|
||||
recursiveExpand(newCardIndex);
|
||||
deckView->setCurrentIndex(newCardIndex);
|
||||
setModified(true);
|
||||
}
|
||||
|
||||
void TabDeckEditor::actAddCard()
|
||||
{
|
||||
addCardHelper("main");
|
||||
|
|
|
@ -53,6 +53,7 @@ private slots:
|
|||
|
||||
void actClearSearch();
|
||||
|
||||
void actSwapCard();
|
||||
void actAddCard();
|
||||
void actAddCardToSideboard();
|
||||
void actRemoveCard();
|
||||
|
|
|
@ -359,7 +359,7 @@ void MainWindow::createMenus()
|
|||
}
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent), localServer(0)
|
||||
: QMainWindow(parent), localServer(0), bHasActivated(false)
|
||||
{
|
||||
QPixmapCache::setCacheLimit(200000);
|
||||
|
||||
|
@ -417,5 +417,16 @@ void MainWindow::changeEvent(QEvent *event)
|
|||
{
|
||||
if (event->type() == QEvent::LanguageChange)
|
||||
retranslateUi();
|
||||
else if(event->type() == QEvent::ActivationChange) {
|
||||
if(isActiveWindow() && !bHasActivated){
|
||||
bHasActivated = true;
|
||||
if(settingsCache->getAutoConnect()) {
|
||||
qDebug() << "Attempting auto-connect...";
|
||||
DlgConnect dlg(this);
|
||||
client->connectToServer(dlg.getHost(), dlg.getPort(), dlg.getPlayerName(), dlg.getPassword());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QMainWindow::changeEvent(event);
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@ private:
|
|||
QThread *clientThread;
|
||||
|
||||
LocalServer *localServer;
|
||||
bool bHasActivated;
|
||||
public:
|
||||
MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="cs_CZ">
|
||||
<TS version="2.0" language="cs_CZ">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Cesta k pozadí ruky:</translation>
|
||||
<translation type="obsolete">Cesta k pozadí ruky:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Cesta k pozadí stacku:</translation>
|
||||
<translation type="obsolete">Cesta k pozadí stacku:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Cesta k pozadí stolu:</translation>
|
||||
<translation type="obsolete">Cesta k pozadí stolu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Cesta k pozadí informací o uživateli:</translation>
|
||||
<translation type="obsolete">Cesta k pozadí informací o uživateli:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Cesta k rubu karet:</translation>
|
||||
<translation type="obsolete">Cesta k rubu karet:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="366"/>
|
||||
|
@ -1063,7 +1063,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">&Povolit zobrazovaní cen (použijí se data z blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">&Povolit zobrazovaní cen (použijí se data z blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1202,30 +1202,35 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Hostitel:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Port:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>Jméno &hráče:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>H&eslo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
|
@ -1235,7 +1240,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<translation type="obsolete">&Zrušit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Připojit k serveru</translation>
|
||||
</message>
|
||||
|
@ -1636,7 +1641,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">Cesta k databázi je neplatná. Chcete se vrátit a nastavit správnou?</translation>
|
||||
<translation type="obsolete">Cesta k databázi je neplatná. Chcete se vrátit a nastavit správnou?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -2022,7 +2027,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Karetní databáze:</translation>
|
||||
<translation type="obsolete">Karetní databáze:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2141,7 +2146,7 @@ Reason for shutdown: %1</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Čeština:</translation>
|
||||
<translation type="obsolete">Čeština:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slovak:</source>
|
||||
|
@ -2204,7 +2209,7 @@ Reason for shutdown: %1</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Nesprávné údaje uživatele.</translation>
|
||||
<translation type="obsolete">Nesprávné údaje uživatele.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="242"/>
|
||||
|
@ -2518,12 +2523,12 @@ Lokální verze je %1, verze serveru je %2.</translation>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 nahrál balíček %2.</translation>
|
||||
<translation type="obsolete">%1 nahrál balíček %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 nahrál balíček %2.</translation>
|
||||
<translation type="obsolete">%1 nahrál balíček %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="93"/>
|
||||
|
@ -4624,7 +4629,7 @@ Lokální verze je %1, verze serveru je %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Administrace</translation>
|
||||
<translation type="obsolete">Administrace</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4933,7 +4938,7 @@ Prosím vložte jméno:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Uložiště balíčků</translation>
|
||||
<translation type="obsolete">Uložiště balíčků</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5218,14 +5223,14 @@ Prosím vložte jméno:</translation>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Server</translation>
|
||||
<translation type="obsolete">Server</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Seznam uživatelů</translation>
|
||||
<translation type="obsolete">Seznam uživatelů</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="de_DE">
|
||||
<TS version="2.0" language="de_DE">
|
||||
<context>
|
||||
<name></name>
|
||||
<message>
|
||||
|
@ -66,23 +66,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Hintergrundbild für die Hand:</translation>
|
||||
<translation type="obsolete">Hintergrundbild für die Hand:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Hintergrundbild für den Stapel:</translation>
|
||||
<translation type="obsolete">Hintergrundbild für den Stapel:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Hintergrundbild für das Spielfeld:</translation>
|
||||
<translation type="obsolete">Hintergrundbild für das Spielfeld:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Hintergrundbild für den Spielerbereich:</translation>
|
||||
<translation type="obsolete">Hintergrundbild für den Spielerbereich:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Pfad zum Bild der Kartenrückseite:</translation>
|
||||
<translation type="obsolete">Pfad zum Bild der Kartenrückseite:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="366"/>
|
||||
|
@ -1384,7 +1384,7 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">Karten&preisfunktionen anschalten (benutzt Daten von blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">Karten&preisfunktionen anschalten (benutzt Daten von blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1545,30 +1545,35 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Server:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Port:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>Spieler&name:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>P&asswort:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation>Passwort &speichern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
|
@ -1578,7 +1583,7 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic
|
|||
<translation type="obsolete">&Abbruch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Verbinde zum Server</translation>
|
||||
</message>
|
||||
|
@ -2030,7 +2035,7 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">Ihre Kartendatenbank ist ungültig. Möchten Sie zurückgehen und den korrekten Pfad einstellen?</translation>
|
||||
<translation type="obsolete">Ihre Kartendatenbank ist ungültig. Möchten Sie zurückgehen und den korrekten Pfad einstellen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -2684,11 +2689,11 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Pfad zur Kartendatenbank:</translation>
|
||||
<translation type="obsolete">Pfad zur Kartendatenbank:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to token database:</source>
|
||||
<translation type="vanished">Pfad zur Spielsteindatenbank:</translation>
|
||||
<translation type="obsolete">Pfad zur Spielsteindatenbank:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="39"/>
|
||||
|
@ -2842,7 +2847,7 @@ Grund für die Abschaltung: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Tschechisch:</translation>
|
||||
<translation type="obsolete">Tschechisch:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="228"/>
|
||||
|
@ -2904,7 +2909,7 @@ Grund für die Abschaltung: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Ungültige Anmeldedaten.</translation>
|
||||
<translation type="obsolete">Ungültige Anmeldedaten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="245"/>
|
||||
|
@ -3709,12 +3714,12 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 hat ein Deck geladen (%2).</translation>
|
||||
<translation type="obsolete">%1 hat ein Deck geladen (%2).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 hat ein Deck geladen (%2).</translation>
|
||||
<translation type="obsolete">%1 hat ein Deck geladen (%2).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="93"/>
|
||||
|
@ -4985,7 +4990,7 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+H</source>
|
||||
<translation type="vanished">Ctrl+H</translation>
|
||||
<translation type="obsolete">Ctrl+H</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="648"/>
|
||||
|
@ -5652,11 +5657,11 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Cockatrice decks (*.cod)</source>
|
||||
<translation type="vanished">Cockatrice Decks (*.cod)</translation>
|
||||
<translation type="obsolete">Cockatrice Decks (*.cod)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Plain text decks (*.dec *.mwDeck)</source>
|
||||
<translation type="vanished">Text Decks (*.dec *.mwDeck)</translation>
|
||||
<translation type="obsolete">Text Decks (*.dec *.mwDeck)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/deck_loader.cpp" line="8"/>
|
||||
|
@ -5792,11 +5797,11 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&OK</translation>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Abbrechen</translation>
|
||||
<translation type="obsolete">&Abbrechen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -5847,7 +5852,7 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Wartung</translation>
|
||||
<translation type="obsolete">Wartung</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5897,7 +5902,7 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>&Search...</source>
|
||||
<translation type="vanished">&Suchen...</translation>
|
||||
<translation type="obsolete">&Suchen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="293"/>
|
||||
|
@ -5976,11 +5981,11 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Return</source>
|
||||
<translation type="vanished">Return</translation>
|
||||
<translation type="obsolete">Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter</source>
|
||||
<translation type="vanished">Enter</translation>
|
||||
<translation type="obsolete">Enter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="315"/>
|
||||
|
@ -5989,11 +5994,11 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Return</source>
|
||||
<translation type="vanished">Ctrl+Return</translation>
|
||||
<translation type="obsolete">Ctrl+Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Enter</source>
|
||||
<translation type="vanished">Ctrl+Enter</translation>
|
||||
<translation type="obsolete">Ctrl+Enter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="292"/>
|
||||
|
@ -6179,7 +6184,7 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Deckspeicherplatz</translation>
|
||||
<translation type="obsolete">Deckspeicherplatz</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -6456,7 +6461,7 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Game replays</source>
|
||||
<translation type="vanished">Replays</translation>
|
||||
<translation type="obsolete">Replays</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -6504,7 +6509,7 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Server</translation>
|
||||
<translation type="obsolete">Server</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -6526,7 +6531,7 @@ Bitte geben Sie einen Namen ein:</translation>
|
|||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Benutzerlisten</translation>
|
||||
<translation type="obsolete">Benutzerlisten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en_US">
|
||||
<TS version="2.0" language="en_US">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -725,32 +725,37 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="es_ES">
|
||||
<TS version="2.0" language="es_ES">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Ruta a la imagen de fondo de la mano:</translation>
|
||||
<translation type="obsolete">Ruta a la imagen de fondo de la mano:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Ruta a la imagen de fondo de la pila:</translation>
|
||||
<translation type="obsolete">Ruta a la imagen de fondo de la pila:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Ruta a la imagen de fondo de la mesa:</translation>
|
||||
<translation type="obsolete">Ruta a la imagen de fondo de la mesa:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Ruta a la imagen de fondo de la información del jugador:</translation>
|
||||
<translation type="obsolete">Ruta a la imagen de fondo de la información del jugador:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Ruta al reverso de las cartas:</translation>
|
||||
<translation type="obsolete">Ruta al reverso de las cartas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="366"/>
|
||||
|
@ -1315,7 +1315,7 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">Activar tag de &precios (usando datos de blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">Activar tag de &precios (usando datos de blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1461,30 +1461,35 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Dirección:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Puerto:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>&Nombre del jugador:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>&Contraseña:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation>&Guardar contraseña</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&Aceptar</translation>
|
||||
|
@ -1494,7 +1499,7 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona
|
|||
<translation type="obsolete">&Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Conectar con el servidor</translation>
|
||||
</message>
|
||||
|
@ -1911,7 +1916,7 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">Tu base de datos de cartas es invalida. ¿Deseas volver y seleccionar la ruta correcta?</translation>
|
||||
<translation type="obsolete">Tu base de datos de cartas es invalida. ¿Deseas volver y seleccionar la ruta correcta?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -2299,11 +2304,11 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Ruta a la base de datos de las cartas:</translation>
|
||||
<translation type="obsolete">Ruta a la base de datos de las cartas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to token database:</source>
|
||||
<translation type="vanished">Ruta a la base de datos de fichas:</translation>
|
||||
<translation type="obsolete">Ruta a la base de datos de fichas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="39"/>
|
||||
|
@ -2457,7 +2462,7 @@ Motivo para la desconexión: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Checo:</translation>
|
||||
<translation type="obsolete">Checo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="228"/>
|
||||
|
@ -2519,7 +2524,7 @@ Motivo para la desconexión: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Datos de conexión invalidos.</translation>
|
||||
<translation type="obsolete">Datos de conexión invalidos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="245"/>
|
||||
|
@ -3107,12 +3112,12 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 ha cargado el mazo %2.</translation>
|
||||
<translation type="obsolete">%1 ha cargado el mazo %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 ha cargado el mazo %2.</translation>
|
||||
<translation type="obsolete">%1 ha cargado el mazo %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="93"/>
|
||||
|
@ -4482,7 +4487,7 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+H</source>
|
||||
<translation type="vanished">Ctrl+H</translation>
|
||||
<translation type="obsolete">Ctrl+H</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="648"/>
|
||||
|
@ -4782,11 +4787,11 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Cockatrice decks (*.cod)</source>
|
||||
<translation type="vanished">Mazos de Cockatrice (*.cod)</translation>
|
||||
<translation type="obsolete">Mazos de Cockatrice (*.cod)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Plain text decks (*.dec *.mwDeck)</source>
|
||||
<translation type="vanished">Archivos de texto plano (*.dec *.mwDeck)</translation>
|
||||
<translation type="obsolete">Archivos de texto plano (*.dec *.mwDeck)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/deck_loader.cpp" line="8"/>
|
||||
|
@ -4922,11 +4927,11 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&Aceptar</translation>
|
||||
<translation type="obsolete">&Aceptar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Cancelar</translation>
|
||||
<translation type="obsolete">&Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4973,7 +4978,7 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Administración</translation>
|
||||
<translation type="obsolete">Administración</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4999,7 +5004,7 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
<name>TabDeckEditor</name>
|
||||
<message>
|
||||
<source>&Search...</source>
|
||||
<translation type="vanished">&Buscar...</translation>
|
||||
<translation type="obsolete">&Buscar...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="292"/>
|
||||
|
@ -5098,11 +5103,11 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Return</source>
|
||||
<translation type="vanished">Return</translation>
|
||||
<translation type="obsolete">Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter</source>
|
||||
<translation type="vanished">Enter</translation>
|
||||
<translation type="obsolete">Enter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="315"/>
|
||||
|
@ -5111,11 +5116,11 @@ La versión local es %1, la versión remota es %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Return</source>
|
||||
<translation type="vanished">Ctrl+Return</translation>
|
||||
<translation type="obsolete">Ctrl+Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Enter</source>
|
||||
<translation type="vanished">Ctrl+Enter</translation>
|
||||
<translation type="obsolete">Ctrl+Enter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="317"/>
|
||||
|
@ -5301,7 +5306,7 @@ Por favor, introduzca un nombre:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Almacen de mazos</translation>
|
||||
<translation type="obsolete">Almacen de mazos</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5550,7 +5555,7 @@ Por favor, introduzca un nombre:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Game replays</source>
|
||||
<translation type="vanished">Replays de partidas</translation>
|
||||
<translation type="obsolete">Replays de partidas</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5598,14 +5603,14 @@ Por favor, introduzca un nombre:</translation>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Servidor</translation>
|
||||
<translation type="obsolete">Servidor</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Lista de usuarios</translation>
|
||||
<translation type="obsolete">Lista de usuarios</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="fr_FR">
|
||||
<TS version="2.0" language="fr_FR">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -55,11 +55,35 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation>Chemin vers l'image de fond d'affichage d'informations:</translation>
|
||||
<translation>Chemin vers l'image de fond d'informations joueur:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation>Chemin vers l'image de dos des cartes:</translation>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="366"/>
|
||||
<source>Hand background:</source>
|
||||
<translation>Image de fond de la zone de main:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="367"/>
|
||||
<source>Stack background:</source>
|
||||
<translation>Image de fond de la pile:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="368"/>
|
||||
<source>Table background:</source>
|
||||
<translation>Image de fond de la zone de jeu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="369"/>
|
||||
<source>Player info background:</source>
|
||||
<translation>Image de fond de la zone d'informations joueur:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="370"/>
|
||||
<source>Card back:</source>
|
||||
<translation>Dos de carte:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="372"/>
|
||||
|
@ -1154,7 +1178,7 @@ Cette information sera consultable uniquement par les modérateurs.</translation
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">Activer le guide de &prix des cartes (source : blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">Activer le guide de &prix des cartes (source : blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1300,30 +1324,35 @@ Cette information sera consultable uniquement par les modérateurs.</translation
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Hôte:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Port:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>&Nom du joueur:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>Mot de p&asse:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
|
@ -1333,7 +1362,7 @@ Cette information sera consultable uniquement par les modérateurs.</translation
|
|||
<translation type="obsolete">&Annuler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Connexion au serveur</translation>
|
||||
</message>
|
||||
|
@ -1738,7 +1767,7 @@ Cette information sera consultable uniquement par les modérateurs.</translation
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">Votre base de carte est invalide. Souhaitez-vous redéfinir le chemin d'accès?</translation>
|
||||
<translation type="obsolete">Votre base de carte est invalide. Souhaitez-vous redéfinir le chemin d'accès?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -2133,7 +2162,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Chemin vers la base de cartes:</translation>
|
||||
<translation type="obsolete">Chemin vers la base de cartes:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2229,7 +2258,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Information de connexion érronée.</translation>
|
||||
<translation type="obsolete">Information de connexion érronée.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="250"/>
|
||||
|
@ -2312,7 +2341,7 @@ Raison de la fermeture : %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Tchèque :</translation>
|
||||
<translation type="obsolete">Tchèque :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slovak:</source>
|
||||
|
@ -2961,12 +2990,12 @@ La version la plus récente est %1, l'ancienne version est %2.</translation
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 a chargé le deck %2.</translation>
|
||||
<translation type="obsolete">%1 a chargé le deck %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 a chargé le deck %2.</translation>
|
||||
<translation type="obsolete">%1 a chargé le deck %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="93"/>
|
||||
|
@ -4750,11 +4779,11 @@ La version la plus récente est %1, l'ancienne version est %2.</translation
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&OK</translation>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Annuler</translation>
|
||||
<translation type="obsolete">&Annuler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4801,7 +4830,7 @@ La version la plus récente est %1, l'ancienne version est %2.</translation
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Administration</translation>
|
||||
<translation type="obsolete">Administration</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5129,7 +5158,7 @@ Entrez un nom s'il vous plaît:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Stockage de deck</translation>
|
||||
<translation type="obsolete">Stockage de deck</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5423,14 +5452,14 @@ Entrez un nom s'il vous plaît:</translation>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Serveur</translation>
|
||||
<translation type="obsolete">Serveur</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Listes de l'utilisateur</translation>
|
||||
<translation type="obsolete">Listes de l'utilisateur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en" sourcelanguage="en">
|
||||
<TS version="2.0" language="en" sourcelanguage="en">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -755,30 +755,35 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>Ò&stair:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Port:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>&Ainm a' chluicheadair:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>&Facal-faire:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&Ceart ma-thà</translation>
|
||||
|
@ -788,7 +793,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<translation type="obsolete">&Sguir dheth</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Dèan ceangal ris an fhrithealaiche</translation>
|
||||
</message>
|
||||
|
@ -3786,11 +3791,11 @@ Local version is %1, remote version is %2.</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&Ceart ma-thà</translation>
|
||||
<translation type="obsolete">&Ceart ma-thà</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Sguir dheth</translation>
|
||||
<translation type="obsolete">&Sguir dheth</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4404,7 +4409,7 @@ Please enter a name:</source>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Fhrithealaiche</translation>
|
||||
<translation type="obsolete">Fhrithealaiche</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="it_IT">
|
||||
<TS version="2.0" language="it_IT">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Percorso sfondo della mano:</translation>
|
||||
<translation type="obsolete">Percorso sfondo della mano:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Percorso sfondo della pila:</translation>
|
||||
<translation type="obsolete">Percorso sfondo della pila:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Percorso sfondo del tavolo:</translation>
|
||||
<translation type="obsolete">Percorso sfondo del tavolo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Percorso sfondo info giocatore:</translation>
|
||||
<translation type="obsolete">Percorso sfondo info giocatore:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Percorso sfondo retro delle carte:</translation>
|
||||
<translation type="obsolete">Percorso sfondo retro delle carte:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="366"/>
|
||||
|
@ -959,7 +959,7 @@ Questo è solo visibile ai moderatori e non alla persona bannata.</translation>
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">Abilita la &ricerca del costo (utilizzando i dati di blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">Abilita la &ricerca del costo (utilizzando i dati di blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1098,30 +1098,35 @@ Questo è solo visibile ai moderatori e non alla persona bannata.</translation>
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Host:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Porta:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>Nome &Giocatore:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>P&assword:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation>&Salva password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
|
@ -1131,7 +1136,7 @@ Questo è solo visibile ai moderatori e non alla persona bannata.</translation>
|
|||
<translation type="obsolete">&Annulla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Connetti al server</translation>
|
||||
</message>
|
||||
|
@ -1532,7 +1537,7 @@ Questo è solo visibile ai moderatori e non alla persona bannata.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">Il tuo database è invalido. Vuoi tornare indietro e impostare il percorso corretto?</translation>
|
||||
<translation type="obsolete">Il tuo database è invalido. Vuoi tornare indietro e impostare il percorso corretto?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -1922,11 +1927,11 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Percorso database delle carte:</translation>
|
||||
<translation type="obsolete">Percorso database delle carte:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to token database:</source>
|
||||
<translation type="vanished">Percorso database pedine:</translation>
|
||||
<translation type="obsolete">Percorso database pedine:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2048,7 +2053,7 @@ Ragione dello spegnimento: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Ceco:</translation>
|
||||
<translation type="obsolete">Ceco:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slovak:</source>
|
||||
|
@ -2111,7 +2116,7 @@ Ragione dello spegnimento: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Dati login non validi.</translation>
|
||||
<translation type="obsolete">Dati login non validi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="242"/>
|
||||
|
@ -2348,12 +2353,12 @@ La tua versione è la %1, la versione online è la %2.</translation>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 ha aperto un mazzo %2.</translation>
|
||||
<translation type="obsolete">%1 ha aperto un mazzo %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 ha aperto un mazzo %2.</translation>
|
||||
<translation type="obsolete">%1 ha aperto un mazzo %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="93"/>
|
||||
|
@ -3792,7 +3797,7 @@ La tua versione è la %1, la versione online è la %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+H</source>
|
||||
<translation type="vanished">Ctrl+H</translation>
|
||||
<translation type="obsolete">Ctrl+H</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="647"/>
|
||||
|
@ -4134,11 +4139,11 @@ La tua versione è la %1, la versione online è la %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Cockatrice decks (*.cod)</source>
|
||||
<translation type="vanished">Mazzi Cockatrice (*.cod)</translation>
|
||||
<translation type="obsolete">Mazzi Cockatrice (*.cod)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Plain text decks (*.dec *.mwDeck)</source>
|
||||
<translation type="vanished">Mazzi in formato testo (*.dec *.mwDeck)</translation>
|
||||
<translation type="obsolete">Mazzi in formato testo (*.dec *.mwDeck)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/deck_loader.cpp" line="8"/>
|
||||
|
@ -4267,11 +4272,11 @@ La tua versione è la %1, la versione online è la %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&OK</translation>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Annulla</translation>
|
||||
<translation type="obsolete">&Annulla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4318,14 +4323,14 @@ La tua versione è la %1, la versione online è la %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Amministrazione</translation>
|
||||
<translation type="obsolete">Amministrazione</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabDeckEditor</name>
|
||||
<message>
|
||||
<source>&Search...</source>
|
||||
<translation type="vanished">&Cerca...</translation>
|
||||
<translation type="obsolete">&Cerca...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="292"/>
|
||||
|
@ -4424,11 +4429,11 @@ La tua versione è la %1, la versione online è la %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Return</source>
|
||||
<translation type="vanished">Return</translation>
|
||||
<translation type="obsolete">Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter</source>
|
||||
<translation type="vanished">Invio</translation>
|
||||
<translation type="obsolete">Invio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="315"/>
|
||||
|
@ -4437,11 +4442,11 @@ La tua versione è la %1, la versione online è la %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Return</source>
|
||||
<translation type="vanished">Ctrl+Return</translation>
|
||||
<translation type="obsolete">Ctrl+Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Enter</source>
|
||||
<translation type="vanished">Ctrl+Invio</translation>
|
||||
<translation type="obsolete">Ctrl+Invio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="317"/>
|
||||
|
@ -4626,7 +4631,7 @@ Please enter a name:</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Cartella mazzi</translation>
|
||||
<translation type="obsolete">Cartella mazzi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4875,7 +4880,7 @@ Please enter a name:</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Game replays</source>
|
||||
<translation type="vanished">Replay partite</translation>
|
||||
<translation type="obsolete">Replay partite</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4915,14 +4920,14 @@ Please enter a name:</source>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Server</translation>
|
||||
<translation type="obsolete">Server</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Lista utenti</translation>
|
||||
<translation type="obsolete">Lista utenti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ja_JP">
|
||||
<TS version="2.0" language="ja_JP">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">手札の背景画像へのパス:</translation>
|
||||
<translation type="obsolete">手札の背景画像へのパス:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">スタックゾーンの背景画像へのパス:</translation>
|
||||
<translation type="obsolete">スタックゾーンの背景画像へのパス:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">テーブルの背景画像へのパス:</translation>
|
||||
<translation type="obsolete">テーブルの背景画像へのパス:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">プレイヤー画像へのパス:</translation>
|
||||
<translation type="obsolete">プレイヤー画像へのパス:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">カード背面画像へのパス:</translation>
|
||||
<translation type="obsolete">カード背面画像へのパス:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="372"/>
|
||||
|
@ -780,7 +780,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">価格タグを表示可能に(blacklotusproject.comからのデータを使用)</translation>
|
||||
<translation type="obsolete">価格タグを表示可能に(blacklotusproject.comからのデータを使用)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -919,32 +919,37 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>ホストIP:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>ポート:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>プレイヤーネーム:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>パスワード:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>サーバーに接続</translation>
|
||||
</message>
|
||||
|
@ -1309,7 +1314,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">あなたのカードデータベースは無効です.前に戻って正しいパスを設定してください.</translation>
|
||||
<translation type="obsolete">あなたのカードデータベースは無効です.前に戻って正しいパスを設定してください.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -1697,7 +1702,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">カードデータベースのパス:</translation>
|
||||
<translation type="obsolete">カードデータベースのパス:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="39"/>
|
||||
|
@ -1823,7 +1828,7 @@ Reason for shutdown: %1</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">チェコ語:</translation>
|
||||
<translation type="obsolete">チェコ語:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slovak:</source>
|
||||
|
@ -1886,7 +1891,7 @@ Reason for shutdown: %1</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">無効なログインデータです.</translation>
|
||||
<translation type="obsolete">無効なログインデータです.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="242"/>
|
||||
|
@ -3148,12 +3153,12 @@ Local version is %1, remote version is %2.</source>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1はデッキ%2をロードしました.</translation>
|
||||
<translation type="obsolete">%1はデッキ%2をロードしました.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1はデッキ%2をロードしました.</translation>
|
||||
<translation type="obsolete">%1はデッキ%2をロードしました.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="381"/>
|
||||
|
@ -4039,11 +4044,11 @@ Local version is %1, remote version is %2.</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">OK</translation>
|
||||
<translation type="obsolete">OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">Cancel</translation>
|
||||
<translation type="obsolete">Cancel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4090,7 +4095,7 @@ Local version is %1, remote version is %2.</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">管理者</translation>
|
||||
<translation type="obsolete">管理者</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4399,7 +4404,7 @@ Please enter a name:</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">デッキストレージ</translation>
|
||||
<translation type="obsolete">デッキストレージ</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4692,14 +4697,14 @@ Please enter a name:</source>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">サーバー</translation>
|
||||
<translation type="obsolete">サーバー</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">ユーザーリスト</translation>
|
||||
<translation type="obsolete">ユーザーリスト</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="pl_PL">
|
||||
<TS version="2.0" language="pl_PL">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -670,7 +670,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">Włącz oznaczenia &ceny (korzystając z danych z blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">Włącz oznaczenia &ceny (korzystając z danych z blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -809,32 +809,37 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -1605,7 +1610,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Ścieżka do bazy kart:</translation>
|
||||
<translation type="obsolete">Ścieżka do bazy kart:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4454,14 +4459,14 @@ Please enter a name:</source>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Serwer</translation>
|
||||
<translation type="obsolete">Serwer</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Lista użytkowników</translation>
|
||||
<translation type="obsolete">Lista użytkowników</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="pt_BR" sourcelanguage="en_US">
|
||||
<TS version="2.0" language="pt_BR" sourcelanguage="en_US">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Caminho para o fundo da mão:</translation>
|
||||
<translation type="obsolete">Caminho para o fundo da mão:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Caminho para o fundo da pilha:</translation>
|
||||
<translation type="obsolete">Caminho para o fundo da pilha:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Caminho para o fundo da mesa:</translation>
|
||||
<translation type="obsolete">Caminho para o fundo da mesa:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Caminho para o fundo das informações do jogador:</translation>
|
||||
<translation type="obsolete">Caminho para o fundo das informações do jogador:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Caminho para a imagem do verso dos cards:</translation>
|
||||
<translation type="obsolete">Caminho para a imagem do verso dos cards:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="372"/>
|
||||
|
@ -1264,30 +1264,35 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Servidor:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Porta:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>Nome do &jogador:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>S&enha:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
|
@ -1297,7 +1302,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<translation type="obsolete">&Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Conectar ao servidor</translation>
|
||||
</message>
|
||||
|
@ -1702,7 +1707,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">O seu banco de dados de cards é inválido. Você gostaria de voltar e corrigir o caminho?</translation>
|
||||
<translation type="obsolete">O seu banco de dados de cards é inválido. Você gostaria de voltar e corrigir o caminho?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -2086,7 +2091,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Caminho para o banco de dados dos cards:</translation>
|
||||
<translation type="obsolete">Caminho para o banco de dados dos cards:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="39"/>
|
||||
|
@ -2193,7 +2198,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Informações de login inválidas.</translation>
|
||||
<translation type="obsolete">Informações de login inválidas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="250"/>
|
||||
|
@ -2882,7 +2887,7 @@ A versão local é %1 e a versão remota é %2.</translation>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 carregou o deck %2.</translation>
|
||||
<translation type="obsolete">%1 carregou o deck %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
|
@ -4732,7 +4737,7 @@ A versão local é %1 e a versão remota é %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Administração</translation>
|
||||
<translation type="obsolete">Administração</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5060,7 +5065,7 @@ Por favor, entre um nome:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Armazenamento de decks</translation>
|
||||
<translation type="obsolete">Armazenamento de decks</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5353,14 +5358,14 @@ Por favor, entre um nome:</translation>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Servidor</translation>
|
||||
<translation type="obsolete">Servidor</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Listas de usuários</translation>
|
||||
<translation type="obsolete">Listas de usuários</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="pt_PT">
|
||||
<TS version="2.0" language="pt_PT">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Directório da imagem de fundo da mão:</translation>
|
||||
<translation type="obsolete">Directório da imagem de fundo da mão:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Directório da imagem de fundo da pilha:</translation>
|
||||
<translation type="obsolete">Directório da imagem de fundo da pilha:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Directório da imagem de fundo do campo de batalha:</translation>
|
||||
<translation type="obsolete">Directório da imagem de fundo do campo de batalha:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Directório da imagem de fundo da informação de jogador:</translation>
|
||||
<translation type="obsolete">Directório da imagem de fundo da informação de jogador:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Directório da imagem do verso da carta:</translation>
|
||||
<translation type="obsolete">Directório da imagem do verso da carta:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="372"/>
|
||||
|
@ -1181,7 +1181,7 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">&Permitir função de tag de preços (utilizando informação de blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">&Permitir função de tag de preços (utilizando informação de blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1327,30 +1327,35 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Servidor:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Porta:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>&Nome do jogador:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>P&assword:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation>&Guardar password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
|
@ -1360,7 +1365,7 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban
|
|||
<translation type="obsolete">&Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Ligar ao servidor</translation>
|
||||
</message>
|
||||
|
@ -1761,7 +1766,7 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">A sua base de dados é inválida. Gostaria de voltar atrás e corrigir o directório?</translation>
|
||||
<translation type="obsolete">A sua base de dados é inválida. Gostaria de voltar atrás e corrigir o directório?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -2155,11 +2160,11 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Directório da base de dados de cartas:</translation>
|
||||
<translation type="obsolete">Directório da base de dados de cartas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to token database:</source>
|
||||
<translation type="vanished">Directório da base de dados de fichas:</translation>
|
||||
<translation type="obsolete">Directório da base de dados de fichas:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2264,7 +2269,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Informação de login incorrecta.</translation>
|
||||
<translation type="obsolete">Informação de login incorrecta.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="250"/>
|
||||
|
@ -2339,7 +2344,7 @@ Motivo para o encerramento: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Checo:</translation>
|
||||
<translation type="obsolete">Checo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slovak:</source>
|
||||
|
@ -3662,12 +3667,12 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 carregou o deck %2.</translation>
|
||||
<translation type="obsolete">%1 carregou o deck %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 carregou o deck %2.</translation>
|
||||
<translation type="obsolete">%1 carregou o deck %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="350"/>
|
||||
|
@ -4260,7 +4265,7 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+H</source>
|
||||
<translation type="vanished">Ctrl+H</translation>
|
||||
<translation type="obsolete">Ctrl+H</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/player.cpp" line="647"/>
|
||||
|
@ -4622,11 +4627,11 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Cockatrice decks (*.cod)</source>
|
||||
<translation type="vanished">Decks do Cockatrice (*.cod)</translation>
|
||||
<translation type="obsolete">Decks do Cockatrice (*.cod)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Plain text decks (*.dec *.mwDeck)</source>
|
||||
<translation type="vanished">Decks baseados em texto simples (*.dec *.mwDeck)</translation>
|
||||
<translation type="obsolete">Decks baseados em texto simples (*.dec *.mwDeck)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/deck_loader.cpp" line="8"/>
|
||||
|
@ -4762,11 +4767,11 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&OK</translation>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Cancelar</translation>
|
||||
<translation type="obsolete">&Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4813,7 +4818,7 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Administração</translation>
|
||||
<translation type="obsolete">Administração</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4839,7 +4844,7 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
<name>TabDeckEditor</name>
|
||||
<message>
|
||||
<source>&Search...</source>
|
||||
<translation type="vanished">&Procurar...</translation>
|
||||
<translation type="obsolete">&Procurar...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="292"/>
|
||||
|
@ -4938,11 +4943,11 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Return</source>
|
||||
<translation type="vanished">Return</translation>
|
||||
<translation type="obsolete">Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter</source>
|
||||
<translation type="vanished">Enter</translation>
|
||||
<translation type="obsolete">Enter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="315"/>
|
||||
|
@ -4951,11 +4956,11 @@ Versão local é %1, versão remota é %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Return</source>
|
||||
<translation type="vanished">Ctrl+Return</translation>
|
||||
<translation type="obsolete">Ctrl+Return</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Enter</source>
|
||||
<translation type="vanished">Ctrl+Enter</translation>
|
||||
<translation type="obsolete">Ctrl+Enter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="317"/>
|
||||
|
@ -5141,7 +5146,7 @@ Por favor introduza um nome:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Armazenamento de decks</translation>
|
||||
<translation type="obsolete">Armazenamento de decks</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5390,7 +5395,7 @@ Por favor introduza um nome:</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Game replays</source>
|
||||
<translation type="vanished">Replays de jogos</translation>
|
||||
<translation type="obsolete">Replays de jogos</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5438,14 +5443,14 @@ Por favor introduza um nome:</translation>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Servidor</translation>
|
||||
<translation type="obsolete">Servidor</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Lista de utilizadores</translation>
|
||||
<translation type="obsolete">Lista de utilizadores</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
<TS version="2.0" language="ru_RU">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Рука:</translation>
|
||||
<translation type="obsolete">Рука:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Стек:</translation>
|
||||
<translation type="obsolete">Стек:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Поле битвы:</translation>
|
||||
<translation type="obsolete">Поле битвы:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Панель игрока:</translation>
|
||||
<translation type="obsolete">Панель игрока:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Рубашки карт:</translation>
|
||||
<translation type="obsolete">Рубашки карт:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="366"/>
|
||||
|
@ -1091,7 +1091,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">Подписывать &цены (по данным blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">Подписывать &цены (по данным blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1230,30 +1230,35 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Хост:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Порт:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>&Ник:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>П&ароль:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&Ок</translation>
|
||||
|
@ -1263,7 +1268,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<translation type="obsolete">&Отмена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Соединение</translation>
|
||||
</message>
|
||||
|
@ -1668,7 +1673,7 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">База карт не найдена. Вернуться и задать правильный путь?</translation>
|
||||
<translation type="obsolete">База карт не найдена. Вернуться и задать правильный путь?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -2058,7 +2063,7 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Путь к базе карт:</translation>
|
||||
<translation type="obsolete">Путь к базе карт:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2179,7 +2184,7 @@ Reason for shutdown: %1</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Чешский:</translation>
|
||||
<translation type="obsolete">Чешский:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slovak:</source>
|
||||
|
@ -2242,7 +2247,7 @@ Reason for shutdown: %1</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Неверный логин/пароль.</translation>
|
||||
<translation type="obsolete">Неверный логин/пароль.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="242"/>
|
||||
|
@ -2852,12 +2857,12 @@ Local version is %1, remote version is %2.</source>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 загрузила колоду %2.</translation>
|
||||
<translation type="obsolete">%1 загрузила колоду %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 загрузил колоду %2.</translation>
|
||||
<translation type="obsolete">%1 загрузил колоду %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="93"/>
|
||||
|
@ -4653,11 +4658,11 @@ Local version is %1, remote version is %2.</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&Ок</translation>
|
||||
<translation type="obsolete">&Ок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Отмена</translation>
|
||||
<translation type="obsolete">&Отмена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4704,7 +4709,7 @@ Local version is %1, remote version is %2.</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Администрирование</translation>
|
||||
<translation type="obsolete">Администрирование</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4997,7 +5002,7 @@ Please enter a name:</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Хранилище колод</translation>
|
||||
<translation type="obsolete">Хранилище колод</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -5282,14 +5287,14 @@ Please enter a name:</source>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Сервер</translation>
|
||||
<translation type="obsolete">Сервер</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Панели пользователей</translation>
|
||||
<translation type="obsolete">Панели пользователей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="sk_SK">
|
||||
<TS version="2.0" language="sk_SK">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -725,32 +725,37 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="sv_SE">
|
||||
<TS version="2.0" language="sv_SE">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -43,23 +43,23 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to hand background:</source>
|
||||
<translation type="vanished">Sökväg till handbakgrund:</translation>
|
||||
<translation type="obsolete">Sökväg till handbakgrund:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to stack background:</source>
|
||||
<translation type="vanished">Sökväg till stapelbakgrund:</translation>
|
||||
<translation type="obsolete">Sökväg till stapelbakgrund:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to table background:</source>
|
||||
<translation type="vanished">Sökväg till bordbakgrund:</translation>
|
||||
<translation type="obsolete">Sökväg till bordbakgrund:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to player info background:</source>
|
||||
<translation type="vanished">Sökväg till spelarinfobakgrund:</translation>
|
||||
<translation type="obsolete">Sökväg till spelarinfobakgrund:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to picture of card back:</source>
|
||||
<translation type="vanished">Sökväg till kortbaksidans bild:</translation>
|
||||
<translation type="obsolete">Sökväg till kortbaksidans bild:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="366"/>
|
||||
|
@ -923,7 +923,7 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen.
|
|||
<name>DeckEditorSettingsPage</name>
|
||||
<message>
|
||||
<source>Enable &price tag feature (using data from blacklotusproject.com)</source>
|
||||
<translation type="vanished">Aktivera &prislappsfunktionen (använder data från blacklotusproject.com)</translation>
|
||||
<translation type="obsolete">Aktivera &prislappsfunktionen (använder data från blacklotusproject.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="600"/>
|
||||
|
@ -1062,30 +1062,35 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen.
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation>&Värd:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation>&Port:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation>Spelar&namn:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation>&Lösenord:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation>&Spara lösenord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
|
@ -1095,7 +1100,7 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen.
|
|||
<translation type="obsolete">&Avbryt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation>Anslut till server</translation>
|
||||
</message>
|
||||
|
@ -1492,7 +1497,7 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen.
|
|||
</message>
|
||||
<message>
|
||||
<source>Your card database is invalid. Would you like to go back and set the correct path?</source>
|
||||
<translation type="vanished">Din kortdatabas är ogiltig. Vill du gå tillbaka och ange den korrekta sökvägen?</translation>
|
||||
<translation type="obsolete">Din kortdatabas är ogiltig. Vill du gå tillbaka och ange den korrekta sökvägen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_settings.cpp" line="776"/>
|
||||
|
@ -1878,11 +1883,11 @@ Would you like to change your database location setting?</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Path to card database:</source>
|
||||
<translation type="vanished">Sökväg till kortdatabas:</translation>
|
||||
<translation type="obsolete">Sökväg till kortdatabas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path to token database:</source>
|
||||
<translation type="vanished">Sökväg till jetongdatabas:</translation>
|
||||
<translation type="obsolete">Sökväg till jetongdatabas:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2030,7 +2035,7 @@ Anledning till nedstängning: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Czech:</source>
|
||||
<translation type="vanished">Tjeckiska:</translation>
|
||||
<translation type="obsolete">Tjeckiska:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="228"/>
|
||||
|
@ -2063,7 +2068,7 @@ Anledning till nedstängning: %1</numerusform>
|
|||
</message>
|
||||
<message>
|
||||
<source>Invalid login data.</source>
|
||||
<translation type="vanished">Ogiltig inloggningsdata.</translation>
|
||||
<translation type="obsolete">Ogiltig inloggningsdata.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/window_main.cpp" line="242"/>
|
||||
|
@ -2280,12 +2285,12 @@ Lokal version är %1, avlägsen version är %2.</translation>
|
|||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>female</comment>
|
||||
<translation type="vanished">%1 har laddat en lek (%2).</translation>
|
||||
<translation type="obsolete">%1 har laddat en lek (%2).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has loaded a deck (%2).</source>
|
||||
<comment>male</comment>
|
||||
<translation type="vanished">%1 har laddat en lek (%2).</translation>
|
||||
<translation type="obsolete">%1 har laddat en lek (%2).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/messagelogwidget.cpp" line="93"/>
|
||||
|
@ -4054,11 +4059,11 @@ Lokal version är %1, avlägsen version är %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Cockatrice decks (*.cod)</source>
|
||||
<translation type="vanished">Cockatricelekar (*.cod)</translation>
|
||||
<translation type="obsolete">Cockatricelekar (*.cod)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Plain text decks (*.dec *.mwDeck)</source>
|
||||
<translation type="vanished">Klartextlekar (*.dec *.mwDeck)</translation>
|
||||
<translation type="obsolete">Klartextlekar (*.dec *.mwDeck)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/deck_loader.cpp" line="8"/>
|
||||
|
@ -4187,11 +4192,11 @@ Lokal version är %1, avlägsen version är %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="vanished">&OK</translation>
|
||||
<translation type="obsolete">&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="vanished">&Avbryt</translation>
|
||||
<translation type="obsolete">&Avbryt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_admin.cpp" line="40"/>
|
||||
|
@ -4238,14 +4243,14 @@ Lokal version är %1, avlägsen version är %2.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>Administration</source>
|
||||
<translation type="vanished">Administration</translation>
|
||||
<translation type="obsolete">Administration</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabDeckEditor</name>
|
||||
<message>
|
||||
<source>&Search...</source>
|
||||
<translation type="vanished">&Sök...</translation>
|
||||
<translation type="obsolete">&Sök...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_deck_editor.cpp" line="292"/>
|
||||
|
@ -4529,7 +4534,7 @@ Please enter a name:</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Deck storage</source>
|
||||
<translation type="vanished">Leklagring</translation>
|
||||
<translation type="obsolete">Leklagring</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4778,7 +4783,7 @@ Please enter a name:</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Game replays</source>
|
||||
<translation type="vanished">Spelrepriser</translation>
|
||||
<translation type="obsolete">Spelrepriser</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -4818,14 +4823,14 @@ Please enter a name:</source>
|
|||
<name>TabServer</name>
|
||||
<message>
|
||||
<source>Server</source>
|
||||
<translation type="vanished">Server</translation>
|
||||
<translation type="obsolete">Server</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabUserLists</name>
|
||||
<message>
|
||||
<source>User lists</source>
|
||||
<translation type="vanished">Användarlistor</translation>
|
||||
<translation type="obsolete">Användarlistor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/tab_userlists.cpp" line="48"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="zh_CN">
|
||||
<TS version="2.0" language="zh_CN">
|
||||
<context>
|
||||
<name>AbstractCounter</name>
|
||||
<message>
|
||||
|
@ -725,32 +725,37 @@ This is only saved for moderators and cannot be seen by the banned person.</sour
|
|||
<context>
|
||||
<name>DlgConnect</name>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="15"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="17"/>
|
||||
<source>&Host:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="19"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="21"/>
|
||||
<source>&Port:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="23"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="25"/>
|
||||
<source>Player &name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="27"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="29"/>
|
||||
<source>P&assword:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="32"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="34"/>
|
||||
<source>&Save password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="55"/>
|
||||
<location filename="../src/dlg_connect.cpp" line="37"/>
|
||||
<source>A&uto connect at start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_connect.cpp" line="71"/>
|
||||
<source>Connect to server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include <QCoreApplication>
|
||||
#include <QThread>
|
||||
#include <QDebug>
|
||||
#include <QSettings>
|
||||
|
||||
Server::Server(bool _threaded, QObject *parent)
|
||||
: QObject(parent), threaded(_threaded), nextLocalGameId(0)
|
||||
|
@ -132,8 +131,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString
|
|||
} else if (authState == UnknownUser) {
|
||||
// Change user name so that no two users have the same names,
|
||||
// don't interfere with registered user names though.
|
||||
QSettings settings("servatrice.ini", QSettings::IniFormat);
|
||||
bool requireReg = settings.value("authentication/regonly", 0).toBool();
|
||||
bool requireReg = databaseInterface->getRequireRegistration();
|
||||
if (requireReg) {
|
||||
qDebug("Login denied: registration required");
|
||||
databaseInterface->unlockSessionTables();
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define SERVER_DATABASE_INTERFACE_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
|
||||
#include "server.h"
|
||||
|
||||
|
@ -32,6 +33,8 @@ public:
|
|||
virtual void lockSessionTables() { }
|
||||
virtual void unlockSessionTables() { }
|
||||
virtual bool userSessionExists(const QString & /* userName */) { return false; }
|
||||
|
||||
virtual bool getRequireRegistration() { return false; }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -210,11 +210,13 @@ int OracleImporter::importTextSpoiler(CardSet *set, const QVariant &data)
|
|||
}
|
||||
}
|
||||
|
||||
CardInfo *card = addCard(set->getShortName(), cardName, cardIsToken, cardId, cardCost, cardType, cardPT, cardLoyalty, cardText.split("\n"));
|
||||
if (!cardIsToken) {
|
||||
CardInfo *card = addCard(set->getShortName(), cardName, cardIsToken, cardId, cardCost, cardType, cardPT, cardLoyalty, cardText.split("\n"));
|
||||
|
||||
if (!set->contains(card)) {
|
||||
card->addToSet(set);
|
||||
cards++;
|
||||
if (!set->contains(card)) {
|
||||
card->addToSet(set);
|
||||
cards++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#endif
|
||||
#include <QAbstractButton>
|
||||
#include <QCheckBox>
|
||||
#include <QDir>
|
||||
#include <QFileDialog>
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
|
@ -403,15 +404,13 @@ bool SaveSetsPage::validatePage()
|
|||
QStandardPaths::standardLocations(QStandardPaths::DataLocation).first();
|
||||
#endif
|
||||
QSettings* settings = new QSettings(this);
|
||||
QString savePath = settings->value("paths/carddatabase").toString();
|
||||
if (savePath.isEmpty()) {
|
||||
QDir().mkpath(dataDir);
|
||||
}
|
||||
QString defaultPath = settings->value("paths/carddatabase").toString();
|
||||
QString windowName = tr("Save card database");
|
||||
QString fileType = tr("XML; card database (*.xml)");
|
||||
|
||||
do {
|
||||
QString fileName;
|
||||
if (savePath.isEmpty()) {
|
||||
if (defaultPath.isEmpty()) {
|
||||
if (defaultPathCheckBox->isChecked())
|
||||
fileName = dataDir + "/cards.xml";
|
||||
else
|
||||
|
@ -420,19 +419,25 @@ bool SaveSetsPage::validatePage()
|
|||
}
|
||||
else {
|
||||
if (defaultPathCheckBox->isChecked())
|
||||
fileName = savePath;
|
||||
fileName = defaultPath;
|
||||
else
|
||||
fileName = QFileDialog::getSaveFileName(this, windowName, savePath, fileType);
|
||||
fileName = QFileDialog::getSaveFileName(this, windowName, defaultPath, fileType);
|
||||
}
|
||||
if (fileName.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
QFileInfo fi(fileName);
|
||||
QDir fileDir(fi.path());
|
||||
if (!fileDir.exists() && !fileDir.mkpath(fileDir.absolutePath())) {
|
||||
return false;
|
||||
}
|
||||
if (wizard()->importer->saveToFile(fileName))
|
||||
{
|
||||
ok = true;
|
||||
QMessageBox::information(this, tr("Success"), tr("The card database has been saved successfully."));
|
||||
} else {
|
||||
QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to the desired location."));
|
||||
QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to %1").arg(fileName));;
|
||||
if (defaultPathCheckBox->isChecked())
|
||||
defaultPathCheckBox->setChecked(false);
|
||||
}
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
PROJECT(servatrice)
|
||||
|
||||
FIND_PACKAGE(Libgcrypt REQUIRED)
|
||||
|
||||
SET(servatrice_SOURCES
|
||||
src/main.cpp
|
||||
src/passwordhasher.cpp
|
||||
|
@ -14,10 +12,24 @@ SET(servatrice_SOURCES
|
|||
src/servatrice_database_interface.cpp
|
||||
src/server_logger.cpp
|
||||
src/serversocketinterface.cpp
|
||||
src/settingscache.cpp
|
||||
src/isl_interface.cpp
|
||||
${VERSION_STRING_CPP}
|
||||
)
|
||||
|
||||
set(servatrice_RESOURCES servatrice.qrc)
|
||||
|
||||
if(WIN32)
|
||||
set(servatrice_SOURCES ${servatrice_SOURCES} servatrice.rc)
|
||||
endif(WIN32)
|
||||
|
||||
|
||||
if(APPLE)
|
||||
set(MACOSX_BUNDLE_ICON_FILE appicon.icns)
|
||||
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
set(servatrice_SOURCES ${servatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns)
|
||||
ENDIF(APPLE)
|
||||
|
||||
set(SERVATRICE_LIBS)
|
||||
|
||||
# Qt4 stuff
|
||||
|
@ -29,6 +41,11 @@ if(Qt4_FOUND)
|
|||
INCLUDE(${QT_USE_FILE})
|
||||
include_directories(${QT_INCLUDES})
|
||||
LIST(APPEND SERVATRICE_LIBS ${QT_LIBRARIES})
|
||||
|
||||
# Libgcrypt is required only with Qt4 to support SHA512 hashing
|
||||
FIND_PACKAGE(Libgcrypt REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${LIBGCRYPT_INCLUDE_DIR})
|
||||
QT4_ADD_RESOURCES(servatrice_RESOURCES_RCC ${servatrice_RESOURCES})
|
||||
endif()
|
||||
|
||||
# qt5 stuff
|
||||
|
@ -50,6 +67,8 @@ if(Qt5Widgets_FOUND)
|
|||
list(APPEND SERVATRICE_LIBS Sql)
|
||||
endif()
|
||||
|
||||
QT5_ADD_RESOURCES(servatrice_RESOURCES_RCC ${servatrice_RESOURCES})
|
||||
|
||||
# guess plugins and libraries directory
|
||||
set(QT_PLUGINS_DIR "${Qt5Widgets_DIR}/../../../plugins")
|
||||
get_target_property(QT_LIBRARY_DIR Qt5::Core LOCATION)
|
||||
|
@ -60,13 +79,12 @@ SET(QT_DONT_USE_QTGUI TRUE)
|
|||
|
||||
# Include directories
|
||||
INCLUDE_DIRECTORIES(../common)
|
||||
INCLUDE_DIRECTORIES(${LIBGCRYPT_INCLUDE_DIR})
|
||||
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../common)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# Build servatrice binary and link it
|
||||
ADD_EXECUTABLE(servatrice MACOSX_BUNDLE ${servatrice_SOURCES} ${servatrice_MOC_SRCS})
|
||||
ADD_EXECUTABLE(servatrice MACOSX_BUNDLE ${servatrice_SOURCES} ${servatrice_RESOURCES_RCC} ${servatrice_MOC_SRCS})
|
||||
|
||||
if(Qt4_FOUND)
|
||||
if(MSVC)
|
||||
|
@ -87,12 +105,18 @@ endif()
|
|||
if(UNIX)
|
||||
if(APPLE)
|
||||
INSTALL(TARGETS servatrice BUNDLE DESTINATION ./)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./servatrice.app/Contents/Resources/)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./servatrice.app/Contents/Resources/)
|
||||
else()
|
||||
# Assume linux
|
||||
INSTALL(TARGETS servatrice RUNTIME DESTINATION bin/)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION share/servatice/)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION share/servatice/)
|
||||
endif()
|
||||
elseif(WIN32)
|
||||
INSTALL(TARGETS servatrice RUNTIME DESTINATION ./)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
|
|
BIN
servatrice/resources/appicon.icns
Normal file
BIN
servatrice/resources/appicon.ico
Normal file
After Width: | Height: | Size: 361 KiB |
BIN
servatrice/resources/servatrice.png
Normal file
After Width: | Height: | Size: 18 KiB |
323
servatrice/resources/servatrice.svg
Normal file
After Width: | Height: | Size: 20 KiB |
8
servatrice/servatrice.desktop
Normal file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env xdg-open
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=Servatrice
|
||||
Exec=servatrice
|
||||
Icon=servatrice
|
||||
Categories=Game;CardGame;
|
|
@ -1,50 +1,160 @@
|
|||
; Servatrice configuration file
|
||||
;
|
||||
; This is the main configuration file for Servatrice; while using a configuration is not mandatory,
|
||||
; you may want to customize some aspects of your servatrice instance, like its name, port or the way
|
||||
; users can authenticate to the server.
|
||||
|
||||
|
||||
[server]
|
||||
port=4747
|
||||
statusupdate=15000
|
||||
logfile=server.log
|
||||
|
||||
; This is the name that servatrice exposes to the users; the default value is pretty boring
|
||||
name="My Cockatrice server"
|
||||
|
||||
; Multiple servatrice servers can run on the same host using the same database; each server instance
|
||||
; must have a different id; the default id is 1
|
||||
id=1
|
||||
|
||||
; The TCP port number servatrice will listen on for clients; default is 4747
|
||||
port=4747
|
||||
|
||||
; Servatrice can scale up to serve big number of users using more than one parallel thread of execution;
|
||||
; If your server is hosting a lot of players and they frequently report of being unable to login or
|
||||
; long delays (lag), you may want to try increasing this value; default is 1.
|
||||
number_pools=1
|
||||
|
||||
; When database is enabled, servatrice writes the server status in the "update" database table; this
|
||||
; setting defines every how many milliseconds servatrice will update its status; default is 15000 (15 secs)
|
||||
statusupdate=15000
|
||||
|
||||
; Do you want servatrice to write important events and errors to a logfile? Default is 1 (yes).
|
||||
writelog=1
|
||||
|
||||
; Choose a name for the log file, if enabled; you can specify an absolute path or a path relative to
|
||||
; the servatrice executable; the default file name is server.log (in the same path as servatrice)
|
||||
logfile=server.log
|
||||
|
||||
; You may want to silence some commonly recurring messages in the logfile. This setting can contain a
|
||||
; comma-separed list of words; if any message that is about to be logged contains at least one of these words,
|
||||
; it won't be logged. Default is empty; example: "kittens,ponies,faires"
|
||||
logfilters=""
|
||||
|
||||
[servernetwork]
|
||||
active=0
|
||||
port=14747
|
||||
ssl_cert=ssl_cert.pem
|
||||
ssl_key=ssl_key.pem
|
||||
|
||||
[authentication]
|
||||
|
||||
; Servatrice can authenticate users connecting. It currently supports 3 different authentication methods:
|
||||
; * none: no authentication, accept every user;
|
||||
; * password: require users to specify a common password to log in;
|
||||
; * sql: authenticate users against the "users" table of the database;
|
||||
; Please note that only the "sql" method permits to have registered users and store their data on the server.
|
||||
method=none
|
||||
|
||||
; if the chosen authentication method is password, here you can define the password your users will use to log in
|
||||
password=123456
|
||||
|
||||
; Accept only registered users? default is 0 (accept unregistered users)
|
||||
regonly=0
|
||||
|
||||
|
||||
[database]
|
||||
|
||||
; Database type. Valid values are:
|
||||
; * none: no database;
|
||||
; * mysql: mysql or compatible database;
|
||||
type=none
|
||||
|
||||
; Prefix used in he database for table names; default is cockatrice
|
||||
prefix=cockatrice
|
||||
|
||||
; Database connection parameter: server hostname or IP
|
||||
hostname=localhost
|
||||
|
||||
; Database connection parameter: database name
|
||||
database=servatrice
|
||||
|
||||
; Database connection parameter: database user
|
||||
user=servatrice
|
||||
|
||||
; Database connection parameter: database user's password
|
||||
password=foobar
|
||||
|
||||
[rooms]
|
||||
|
||||
; A servtrice server can expose to the users different "rooms" to chat and create games. Rooms can be defined
|
||||
; with two different methods:
|
||||
; config: rooms are defined in this configuration (see the following example)
|
||||
; sql: rooms are defined in the "rooms" table of the database
|
||||
method=config
|
||||
|
||||
; Example configuration for a server with rooms configured in the configuration file. Number of rooms defined
|
||||
roomlist\size=1
|
||||
|
||||
; Room name for the room number 1
|
||||
roomlist\1\name="General room"
|
||||
|
||||
; Room description for the room number 1
|
||||
roomlist\1\description="Play anything here."
|
||||
|
||||
; Wether to make users autojoin this room when connected to the server
|
||||
roomlist\1\autojoin=true
|
||||
|
||||
; Message displayed to each user when he joins room number 1
|
||||
roomlist\1\joinmessage="This message is only here to show that rooms can have a join message."
|
||||
|
||||
; Number of game types allowed (defined) in the room number 1
|
||||
roomlist\1\game_types\size=3
|
||||
|
||||
; Name of the three game types for the room number 1
|
||||
roomlist\1\game_types\1\name="GameType1"
|
||||
roomlist\1\game_types\2\name="GameType2"
|
||||
roomlist\1\game_types\3\name="GameType3"
|
||||
|
||||
|
||||
[game]
|
||||
max_game_inactivity_time=120
|
||||
|
||||
; Maximum time in seconds a player can stay inactive, with his client hot even responding to pings, before is
|
||||
; considered disconnected; default is 15
|
||||
max_player_inactivity_time=15
|
||||
|
||||
; Maximum time in seconds all players in a game can stay inactive before the game is automatically closed;
|
||||
; default is 120
|
||||
max_game_inactivity_time=120
|
||||
|
||||
|
||||
[security]
|
||||
|
||||
; Maximum number of users that can connect from the same IP address; useful to avoid bots, default is 4
|
||||
max_users_per_address=4
|
||||
|
||||
; Servatrice can avoid users from flooding rooms with large number messages in an interval of time.
|
||||
; This setting defines the length in seconds of the considered interval; default is 10
|
||||
message_counting_interval=10
|
||||
|
||||
; Maximum size in characters of all messages in an interval before new messages gets dropped; default is 1000
|
||||
max_message_size_per_interval=1000
|
||||
|
||||
; Maximum number of messages in an interval before new messages gets dropped; default is 10
|
||||
max_message_count_per_interval=10
|
||||
|
||||
; Maximum number of games a single user can create; default is 5
|
||||
max_games_per_user=5
|
||||
|
||||
|
||||
; EXPERIMENTAL - NOT WORKING YET
|
||||
; The following settings are relative to the server network functionality, that is not yet complete.
|
||||
; Avoid enabling it unless you are willing to test it and help its development.
|
||||
|
||||
[servernetwork]
|
||||
|
||||
; Servatrice servers can connect themselves and build a network. This settins enable the ability of servatrice
|
||||
; of waiting for other server's connections and connect to other servers. Other servers can be defined in the
|
||||
; "servers" table of the database. Default is 0 (disabled)
|
||||
active=0
|
||||
|
||||
; The TCP port number servatrice will listen on for other servers; default is 14747
|
||||
port=14747
|
||||
|
||||
; Server-to-server communication needs a valid certificate in PEM format. Enter its filename in this setting
|
||||
ssl_cert=ssl_cert.pem
|
||||
|
||||
; Filename of the private key for the server-to-server certificate
|
||||
ssl_key=ssl_key.pem
|
||||
|
|
5
servatrice/servatrice.qrc
Normal file
|
@ -0,0 +1,5 @@
|
|||
<RCC>
|
||||
<qresource prefix="/" >
|
||||
<file alias="resources/appicon.svg">resources/servatrice.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
1
servatrice/servatrice.rc
Normal file
|
@ -0,0 +1 @@
|
|||
ID1_ICON1 ICON DISCARDABLE "resources/appicon.ico"
|
|
@ -1,4 +1,4 @@
|
|||
-- phpMyAdmin SQL Dump
|
||||
-- phpMyAdmin SQL Dump
|
||||
-- version 2.11.8.1deb1ubuntu0.2
|
||||
-- http://www.phpmyadmin.net
|
||||
--
|
||||
|
@ -208,3 +208,18 @@ CREATE TABLE `cockatrice_replays_access` (
|
|||
KEY `id_game` (`id_game`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `cockatrice_rooms` (
|
||||
`id` int(7) unsigned NOT NULL auto_increment,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`descr` varchar(255) NOT NULL,
|
||||
`auto_join` tinyint(1) default 0,
|
||||
`join_message` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `cockatrice_rooms_gametypes` (
|
||||
`id_room` int(7) unsigned NOT NULL,
|
||||
`name` varchar(50) NOT NULL,
|
||||
PRIMARY KEY (`id_room`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
|
|
|
@ -20,13 +20,14 @@
|
|||
|
||||
#include <QCoreApplication>
|
||||
#include <QTextCodec>
|
||||
#include <QtGlobal>
|
||||
#include <iostream>
|
||||
#include <QMetaType>
|
||||
#include <QSettings>
|
||||
#include <QDateTime>
|
||||
#include "passwordhasher.h"
|
||||
#include "servatrice.h"
|
||||
#include "server_logger.h"
|
||||
#include "settingscache.h"
|
||||
#include "rng_sfmt.h"
|
||||
#include "version_string.h"
|
||||
#include <google/protobuf/stubs/common.h>
|
||||
|
@ -37,6 +38,7 @@
|
|||
RNG_Abstract *rng;
|
||||
ServerLogger *logger;
|
||||
QThread *loggerThread;
|
||||
SettingsCache *settingsCache;
|
||||
|
||||
/* Prototypes */
|
||||
|
||||
|
@ -150,6 +152,10 @@ int main(int argc, char *argv[])
|
|||
bool testRandom = args.contains("--test-random");
|
||||
bool testHashFunction = args.contains("--test-hash");
|
||||
bool logToConsole = args.contains("--log-to-console");
|
||||
QString configPath;
|
||||
int hasConfigPath=args.indexOf("--config");
|
||||
if(hasConfigPath > -1 && args.count() > hasConfigPath + 1)
|
||||
configPath = args.at(hasConfigPath + 1);
|
||||
|
||||
qRegisterMetaType<QList<int> >("QList<int>");
|
||||
|
||||
|
@ -158,7 +164,9 @@ int main(int argc, char *argv[])
|
|||
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
|
||||
#endif
|
||||
|
||||
QSettings *settings = new QSettings("servatrice.ini", QSettings::IniFormat);
|
||||
configPath = SettingsCache::guessConfigurationPath(configPath);
|
||||
qWarning() << "Using configuration file: " << configPath;
|
||||
settingsCache = new SettingsCache(configPath);
|
||||
|
||||
loggerThread = new QThread;
|
||||
loggerThread->setObjectName("logger");
|
||||
|
@ -166,7 +174,7 @@ int main(int argc, char *argv[])
|
|||
logger->moveToThread(loggerThread);
|
||||
|
||||
loggerThread->start();
|
||||
QMetaObject::invokeMethod(logger, "startLog", Qt::BlockingQueuedConnection, Q_ARG(QString, settings->value("server/logfile").toString()));
|
||||
QMetaObject::invokeMethod(logger, "startLog", Qt::BlockingQueuedConnection, Q_ARG(QString, settingsCache->value("server/logfile", QString("server.log")).toString()));
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
if (logToConsole)
|
||||
|
@ -209,7 +217,7 @@ int main(int argc, char *argv[])
|
|||
if (testHashFunction)
|
||||
testHash();
|
||||
|
||||
Servatrice *server = new Servatrice(settings);
|
||||
Servatrice *server = new Servatrice();
|
||||
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()), Qt::QueuedConnection);
|
||||
int retval = 0;
|
||||
if (server->initServer()) {
|
||||
|
@ -228,7 +236,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
delete rng;
|
||||
delete settings;
|
||||
delete settingsCache;
|
||||
|
||||
logger->deleteLater();
|
||||
loggerThread->wait();
|
||||
|
|
|
@ -1,32 +1,53 @@
|
|||
#include "passwordhasher.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <gcrypt.h>
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <gcrypt.h>
|
||||
#else
|
||||
#include <QCryptographicHash>
|
||||
#endif
|
||||
|
||||
void PasswordHasher::initialize()
|
||||
{
|
||||
// These calls are required by libgcrypt before we use any of its functions.
|
||||
gcry_check_version(0);
|
||||
gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
|
||||
gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
|
||||
#if QT_VERSION < 0x050000
|
||||
// These calls are required by libgcrypt before we use any of its functions.
|
||||
gcry_check_version(0);
|
||||
gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
|
||||
gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
QString PasswordHasher::computeHash(const QString &password, const QString &salt)
|
||||
{
|
||||
const int algo = GCRY_MD_SHA512;
|
||||
const int rounds = 1000;
|
||||
const int algo = GCRY_MD_SHA512;
|
||||
const int rounds = 1000;
|
||||
|
||||
QByteArray passwordBuffer = (salt + password).toUtf8();
|
||||
int hashLen = gcry_md_get_algo_dlen(algo);
|
||||
char *hash = new char[hashLen], *tmp = new char[hashLen];
|
||||
gcry_md_hash_buffer(algo, hash, passwordBuffer.data(), passwordBuffer.size());
|
||||
for (int i = 1; i < rounds; ++i) {
|
||||
memcpy(tmp, hash, hashLen);
|
||||
gcry_md_hash_buffer(algo, hash, tmp, hashLen);
|
||||
}
|
||||
QString hashedPass = salt + QString(QByteArray(hash, hashLen).toBase64());
|
||||
delete[] tmp;
|
||||
delete[] hash;
|
||||
return hashedPass;
|
||||
QByteArray passwordBuffer = (salt + password).toUtf8();
|
||||
int hashLen = gcry_md_get_algo_dlen(algo);
|
||||
char *hash = new char[hashLen], *tmp = new char[hashLen];
|
||||
gcry_md_hash_buffer(algo, hash, passwordBuffer.data(), passwordBuffer.size());
|
||||
for (int i = 1; i < rounds; ++i) {
|
||||
memcpy(tmp, hash, hashLen);
|
||||
gcry_md_hash_buffer(algo, hash, tmp, hashLen);
|
||||
}
|
||||
QString hashedPass = salt + QString(QByteArray(hash, hashLen).toBase64());
|
||||
delete[] tmp;
|
||||
delete[] hash;
|
||||
return hashedPass;
|
||||
}
|
||||
#else
|
||||
QString PasswordHasher::computeHash(const QString &password, const QString &salt)
|
||||
{
|
||||
QCryptographicHash::Algorithm algo = QCryptographicHash::Sha512;
|
||||
const int rounds = 1000;
|
||||
|
||||
QByteArray hash = (salt + password).toUtf8();
|
||||
for (int i = 0; i < rounds; ++i) {
|
||||
hash = QCryptographicHash::hash(hash, algo);
|
||||
}
|
||||
QString hashedPass = salt + QString(hash.toBase64());
|
||||
return hashedPass;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
#include <QSqlQuery>
|
||||
#include <QSettings>
|
||||
#include <QFile>
|
||||
#include <QTimer>
|
||||
#include <QDateTime>
|
||||
|
@ -28,6 +27,7 @@
|
|||
#include "servatrice_database_interface.h"
|
||||
#include "servatrice_connection_pool.h"
|
||||
#include "server_room.h"
|
||||
#include "settingscache.h"
|
||||
#include "serversocketinterface.h"
|
||||
#include "isl_interface.h"
|
||||
#include "server_logger.h"
|
||||
|
@ -120,8 +120,8 @@ void Servatrice_IslServer::incomingConnection(int socketDescriptor)
|
|||
QMetaObject::invokeMethod(interface, "initServer", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
Servatrice::Servatrice(QSettings *_settings, QObject *parent)
|
||||
: Server(true, parent), settings(_settings), uptime(0), shutdownTimer(0)
|
||||
Servatrice::Servatrice(QObject *parent)
|
||||
: Server(true, parent), uptime(0), shutdownTimer(0)
|
||||
{
|
||||
qRegisterMetaType<QSqlDatabase>("QSqlDatabase");
|
||||
}
|
||||
|
@ -134,22 +134,28 @@ Servatrice::~Servatrice()
|
|||
|
||||
bool Servatrice::initServer()
|
||||
{
|
||||
serverName = settings->value("server/name").toString();
|
||||
serverId = settings->value("server/id", 0).toInt();
|
||||
bool regServerOnly = settings->value("server/regonly", 0).toBool();
|
||||
serverName = settingsCache->value("server/name", "My Cockatrice server").toString();
|
||||
serverId = settingsCache->value("server/id", 0).toInt();
|
||||
bool regServerOnly = settingsCache->value("authentication/regonly", 0).toBool();
|
||||
|
||||
const QString authenticationMethodStr = settings->value("authentication/method").toString();
|
||||
const QString authenticationMethodStr = settingsCache->value("authentication/method").toString();
|
||||
if (authenticationMethodStr == "sql") {
|
||||
qDebug() << "Authenticating method: sql";
|
||||
authenticationMethod = AuthenticationSql;
|
||||
} else if(authenticationMethodStr == "password") {
|
||||
qDebug() << "Authenticating method: password";
|
||||
authenticationMethod = AuthenticationPassword;
|
||||
} else {
|
||||
if (regServerOnly) {
|
||||
qDebug() << "Registration only server enabled but no DB Connection : Error.";
|
||||
qDebug() << "Registration only server enabled but no authentication method defined: Error.";
|
||||
return false;
|
||||
}
|
||||
|
||||
qDebug() << "Authenticating method: none";
|
||||
authenticationMethod = AuthenticationNone;
|
||||
}
|
||||
|
||||
QString dbTypeStr = settings->value("database/type").toString();
|
||||
QString dbTypeStr = settingsCache->value("database/type").toString();
|
||||
if (dbTypeStr == "mysql")
|
||||
databaseType = DatabaseMySql;
|
||||
else
|
||||
|
@ -159,14 +165,14 @@ bool Servatrice::initServer()
|
|||
setDatabaseInterface(servatriceDatabaseInterface);
|
||||
|
||||
if (databaseType != DatabaseNone) {
|
||||
settings->beginGroup("database");
|
||||
dbPrefix = settings->value("prefix").toString();
|
||||
settingsCache->beginGroup("database");
|
||||
dbPrefix = settingsCache->value("prefix").toString();
|
||||
servatriceDatabaseInterface->initDatabase("QMYSQL",
|
||||
settings->value("hostname").toString(),
|
||||
settings->value("database").toString(),
|
||||
settings->value("user").toString(),
|
||||
settings->value("password").toString());
|
||||
settings->endGroup();
|
||||
settingsCache->value("hostname").toString(),
|
||||
settingsCache->value("database").toString(),
|
||||
settingsCache->value("user").toString(),
|
||||
settingsCache->value("password").toString());
|
||||
settingsCache->endGroup();
|
||||
|
||||
updateServerList();
|
||||
|
||||
|
@ -174,7 +180,7 @@ bool Servatrice::initServer()
|
|||
servatriceDatabaseInterface->clearSessionTables();
|
||||
}
|
||||
|
||||
const QString roomMethod = settings->value("rooms/method").toString();
|
||||
const QString roomMethod = settingsCache->value("rooms/method").toString();
|
||||
if (roomMethod == "sql") {
|
||||
QSqlQuery query(servatriceDatabaseInterface->getDatabase());
|
||||
query.prepare("select id, name, descr, auto_join, join_message from " + dbPrefix + "_rooms order by id asc");
|
||||
|
@ -198,47 +204,63 @@ bool Servatrice::initServer()
|
|||
));
|
||||
}
|
||||
} else {
|
||||
int size = settings->beginReadArray("rooms/roomlist");
|
||||
int size = settingsCache->beginReadArray("rooms/roomlist");
|
||||
for (int i = 0; i < size; ++i) {
|
||||
settings->setArrayIndex(i);
|
||||
settingsCache->setArrayIndex(i);
|
||||
|
||||
QStringList gameTypes;
|
||||
int size2 = settings->beginReadArray("game_types");
|
||||
int size2 = settingsCache->beginReadArray("game_types");
|
||||
for (int j = 0; j < size2; ++j) {
|
||||
settings->setArrayIndex(j);
|
||||
gameTypes.append(settings->value("name").toString());
|
||||
settingsCache->setArrayIndex(j);
|
||||
gameTypes.append(settingsCache->value("name").toString());
|
||||
}
|
||||
settings->endArray();
|
||||
settingsCache->endArray();
|
||||
|
||||
Server_Room *newRoom = new Server_Room(
|
||||
i,
|
||||
settings->value("name").toString(),
|
||||
settings->value("description").toString(),
|
||||
settings->value("autojoin").toBool(),
|
||||
settings->value("joinmessage").toString(),
|
||||
settingsCache->value("name").toString(),
|
||||
settingsCache->value("description").toString(),
|
||||
settingsCache->value("autojoin").toBool(),
|
||||
settingsCache->value("joinmessage").toString(),
|
||||
gameTypes,
|
||||
this
|
||||
);
|
||||
addRoom(newRoom);
|
||||
}
|
||||
settings->endArray();
|
||||
|
||||
if(size==0)
|
||||
{
|
||||
// no room defined in config, add a dummy one
|
||||
Server_Room *newRoom = new Server_Room(
|
||||
0,
|
||||
"General room",
|
||||
"Play anything here.",
|
||||
true,
|
||||
"",
|
||||
QStringList("Standard"),
|
||||
this
|
||||
);
|
||||
addRoom(newRoom);
|
||||
}
|
||||
|
||||
settingsCache->endArray();
|
||||
}
|
||||
|
||||
updateLoginMessage();
|
||||
|
||||
maxGameInactivityTime = settings->value("game/max_game_inactivity_time").toInt();
|
||||
maxPlayerInactivityTime = settings->value("game/max_player_inactivity_time").toInt();
|
||||
maxGameInactivityTime = settingsCache->value("game/max_game_inactivity_time", 120).toInt();
|
||||
maxPlayerInactivityTime = settingsCache->value("game/max_player_inactivity_time", 15).toInt();
|
||||
|
||||
maxUsersPerAddress = settings->value("security/max_users_per_address").toInt();
|
||||
messageCountingInterval = settings->value("security/message_counting_interval").toInt();
|
||||
maxMessageCountPerInterval = settings->value("security/max_message_count_per_interval").toInt();
|
||||
maxMessageSizePerInterval = settings->value("security/max_message_size_per_interval").toInt();
|
||||
maxGamesPerUser = settings->value("security/max_games_per_user").toInt();
|
||||
maxUsersPerAddress = settingsCache->value("security/max_users_per_address", 4).toInt();
|
||||
messageCountingInterval = settingsCache->value("security/message_counting_interval", 10).toInt();
|
||||
maxMessageCountPerInterval = settingsCache->value("security/max_message_count_per_interval", 10).toInt();
|
||||
maxMessageSizePerInterval = settingsCache->value("security/max_message_size_per_interval", 1000).toInt();
|
||||
maxGamesPerUser = settingsCache->value("security/max_games_per_user", 5).toInt();
|
||||
|
||||
try { if (settings->value("servernetwork/active", 0).toInt()) {
|
||||
try { if (settingsCache->value("servernetwork/active", 0).toInt()) {
|
||||
qDebug() << "Connecting to ISL network.";
|
||||
const QString certFileName = settings->value("servernetwork/ssl_cert").toString();
|
||||
const QString keyFileName = settings->value("servernetwork/ssl_key").toString();
|
||||
const QString certFileName = settingsCache->value("servernetwork/ssl_cert").toString();
|
||||
const QString keyFileName = settingsCache->value("servernetwork/ssl_key").toString();
|
||||
qDebug() << "Loading certificate...";
|
||||
QFile certFile(certFileName);
|
||||
if (!certFile.open(QIODevice::ReadOnly))
|
||||
|
@ -282,7 +304,7 @@ bool Servatrice::initServer()
|
|||
QMetaObject::invokeMethod(interface, "initClient", Qt::BlockingQueuedConnection);
|
||||
}
|
||||
|
||||
const int networkPort = settings->value("servernetwork/port", 14747).toInt();
|
||||
const int networkPort = settingsCache->value("servernetwork/port", 14747).toInt();
|
||||
qDebug() << "Starting ISL server on port" << networkPort;
|
||||
|
||||
islServer = new Servatrice_IslServer(this, cert, key, this);
|
||||
|
@ -299,7 +321,7 @@ bool Servatrice::initServer()
|
|||
connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout()));
|
||||
pingClock->start(1000);
|
||||
|
||||
int statusUpdateTime = settings->value("server/statusupdate").toInt();
|
||||
int statusUpdateTime = settingsCache->value("server/statusupdate", 15000).toInt();
|
||||
statusUpdateClock = new QTimer(this);
|
||||
connect(statusUpdateClock, SIGNAL(timeout()), this, SLOT(statusUpdate()));
|
||||
if (statusUpdateTime != 0) {
|
||||
|
@ -307,10 +329,10 @@ bool Servatrice::initServer()
|
|||
statusUpdateClock->start(statusUpdateTime);
|
||||
}
|
||||
|
||||
const int numberPools = settings->value("server/number_pools", 1).toInt();
|
||||
const int numberPools = settingsCache->value("server/number_pools", 1).toInt();
|
||||
gameServer = new Servatrice_GameServer(this, numberPools, servatriceDatabaseInterface->getDatabase(), this);
|
||||
gameServer->setMaxPendingConnections(1000);
|
||||
const int gamePort = settings->value("server/port", 4747).toInt();
|
||||
const int gamePort = settingsCache->value("server/port", 4747).toInt();
|
||||
qDebug() << "Starting server on port" << gamePort;
|
||||
if (gameServer->listen(QHostAddress::Any, gamePort))
|
||||
qDebug() << "Server listening.";
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
|
||||
Q_DECLARE_METATYPE(QSqlDatabase)
|
||||
|
||||
class QSettings;
|
||||
class QSqlQuery;
|
||||
class QTimer;
|
||||
|
||||
|
@ -89,7 +88,7 @@ class Servatrice : public Server
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum AuthenticationMethod { AuthenticationNone, AuthenticationSql };
|
||||
enum AuthenticationMethod { AuthenticationNone, AuthenticationSql, AuthenticationPassword };
|
||||
private slots:
|
||||
void statusUpdate();
|
||||
void shutdownTimeout();
|
||||
|
@ -106,7 +105,6 @@ private:
|
|||
mutable QMutex loginMessageMutex;
|
||||
QString loginMessage;
|
||||
QString dbPrefix;
|
||||
QSettings *settings;
|
||||
Servatrice_DatabaseInterface *servatriceDatabaseInterface;
|
||||
int serverId;
|
||||
int uptime;
|
||||
|
@ -128,7 +126,7 @@ public slots:
|
|||
void scheduleShutdown(const QString &reason, int minutes);
|
||||
void updateLoginMessage();
|
||||
public:
|
||||
Servatrice(QSettings *_settings, QObject *parent = 0);
|
||||
Servatrice(QObject *parent = 0);
|
||||
~Servatrice();
|
||||
bool initServer();
|
||||
QString getServerName() const { return serverName; }
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "servatrice_database_interface.h"
|
||||
#include "passwordhasher.h"
|
||||
#include "serversocketinterface.h"
|
||||
#include "settingscache.h"
|
||||
#include "decklist.h"
|
||||
#include "pb/game_replay.pb.h"
|
||||
#include <QDebug>
|
||||
|
@ -88,10 +89,22 @@ bool Servatrice_DatabaseInterface::usernameIsValid(const QString &user)
|
|||
return (result.size() > 0);
|
||||
}
|
||||
|
||||
bool Servatrice_DatabaseInterface::getRequireRegistration()
|
||||
{
|
||||
return settingsCache->value("authentication/regonly", 0).toBool();
|
||||
}
|
||||
|
||||
AuthenticationResult Servatrice_DatabaseInterface::checkUserPassword(Server_ProtocolHandler *handler, const QString &user, const QString &password, QString &reasonStr, int &banSecondsLeft)
|
||||
{
|
||||
switch (server->getAuthenticationMethod()) {
|
||||
case Servatrice::AuthenticationNone: return UnknownUser;
|
||||
case Servatrice::AuthenticationPassword: {
|
||||
QString configPassword = settingsCache->value("authentication/password").toString();
|
||||
if (configPassword == password)
|
||||
return PasswordRight;
|
||||
|
||||
return NotLoggedIn;
|
||||
}
|
||||
case Servatrice::AuthenticationSql: {
|
||||
if (!checkSql())
|
||||
return UnknownUser;
|
||||
|
|
|
@ -50,7 +50,8 @@ public:
|
|||
void lockSessionTables();
|
||||
void unlockSessionTables();
|
||||
bool userSessionExists(const QString &userName);
|
||||
|
||||
|
||||
bool getRequireRegistration();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include "server_logger.h"
|
||||
#include "settingscache.h"
|
||||
#include <QSocketNotifier>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QDateTime>
|
||||
#include <QSettings>
|
||||
#include <iostream>
|
||||
#ifdef Q_OS_UNIX
|
||||
# include <sys/types.h>
|
||||
|
@ -26,7 +26,7 @@ ServerLogger::~ServerLogger()
|
|||
void ServerLogger::startLog(const QString &logFileName)
|
||||
{
|
||||
if (!logFileName.isEmpty()) {
|
||||
logFile = new QFile("server.log", this);
|
||||
logFile = new QFile(logFileName, this);
|
||||
logFile->open(QIODevice::Append);
|
||||
#ifdef Q_OS_UNIX
|
||||
::socketpair(AF_UNIX, SOCK_STREAM, 0, sigHupFD);
|
||||
|
@ -50,9 +50,8 @@ void ServerLogger::logMessage(QString message, void *caller)
|
|||
callerString = QString::number((qulonglong) caller, 16) + " ";
|
||||
|
||||
//filter out all log entries based on values in configuration file
|
||||
QSettings settings("servatrice.ini", QSettings::IniFormat);
|
||||
bool shouldWeWriteLog = settings.value("server/writelog").toBool();
|
||||
QString logFilters = settings.value("server/logfilters").toString();
|
||||
bool shouldWeWriteLog = settingsCache->value("server/writelog").toBool();
|
||||
QString logFilters = settingsCache->value("server/logfilters").toString();
|
||||
QStringList listlogFilters = logFilters.split(",", QString::SkipEmptyParts);
|
||||
bool shouldWeSkipLine = false;
|
||||
|
||||
|
|
43
servatrice/src/settingscache.cpp
Normal file
|
@ -0,0 +1,43 @@
|
|||
#include "settingscache.h"
|
||||
#include <QCoreApplication>
|
||||
#include <QFile>
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QStandardPaths>
|
||||
#else
|
||||
#include <QDesktopServices>
|
||||
#endif
|
||||
|
||||
SettingsCache::SettingsCache(const QString & fileName, QSettings::Format format, QObject * parent)
|
||||
:QSettings(fileName, format, parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QString SettingsCache::guessConfigurationPath(QString & specificPath)
|
||||
{
|
||||
const QString fileName="servatrice.ini";
|
||||
QString guessFileName;
|
||||
|
||||
// specific path
|
||||
if(!specificPath.isEmpty() && QFile::exists(specificPath))
|
||||
return specificPath;
|
||||
|
||||
// application directory path
|
||||
guessFileName = QCoreApplication::applicationDirPath() + "/" + fileName;
|
||||
if(QFile::exists(guessFileName))
|
||||
return guessFileName;
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
// /etc
|
||||
guessFileName = "/etc/servatrice/" + fileName;
|
||||
if(QFile::exists(guessFileName))
|
||||
return guessFileName;
|
||||
#endif
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
guessFileName = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + fileName;
|
||||
#else
|
||||
guessFileName = QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/" + fileName;
|
||||
#endif
|
||||
return guessFileName;
|
||||
}
|
18
servatrice/src/settingscache.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#ifndef SERVATRICE_SETTINGSCACHE_H
|
||||
#define SERVATRICE_SETTINGSCACHE_H
|
||||
|
||||
#include <QSettings>
|
||||
#include <QString>
|
||||
|
||||
class SettingsCache : public QSettings {
|
||||
Q_OBJECT
|
||||
private:
|
||||
QSettings *settings;
|
||||
public:
|
||||
SettingsCache(const QString & fileName="servatrice.ini", QSettings::Format format=QSettings::IniFormat, QObject * parent = 0);
|
||||
static QString guessConfigurationPath(QString & specificPath);
|
||||
};
|
||||
|
||||
extern SettingsCache *settingsCache;
|
||||
|
||||
#endif
|