diff --git a/cockatrice/src/messagelogwidget.cpp b/cockatrice/src/messagelogwidget.cpp index 4fd3870f..e28c5555 100644 --- a/cockatrice/src/messagelogwidget.cpp +++ b/cockatrice/src/messagelogwidget.cpp @@ -24,7 +24,7 @@ bool MessageLogWidget::isFemale(Player *player) const bool MessageLogWidget::userIsFemale() const { - return (tabSupervisor && tabSupervisor->getUserInfo()->gender() & ServerInfo_User::Female); + return (tabSupervisor && tabSupervisor->getUserInfo() && (tabSupervisor->getUserInfo()->gender() & ServerInfo_User::Female)); } void MessageLogWidget::logGameJoined(int gameId) diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 0f649b1e..1175ca0e 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -205,6 +205,9 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare aAlwaysRevealTopCard = new QAction(this); aAlwaysRevealTopCard->setCheckable(true); connect(aAlwaysRevealTopCard, SIGNAL(triggered()), this, SLOT(actAlwaysRevealTopCard())); + aOpenDeckInDeckEditor = new QAction(this); + aOpenDeckInDeckEditor->setEnabled(false); + connect(aOpenDeckInDeckEditor, SIGNAL(triggered()), this, SLOT(actOpenDeckInDeckEditor())); } aViewGraveyard = new QAction(this); @@ -262,6 +265,7 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare playerLists.append(mRevealLibrary = libraryMenu->addMenu(QString())); playerLists.append(mRevealTopCard = libraryMenu->addMenu(QString())); libraryMenu->addAction(aAlwaysRevealTopCard); + libraryMenu->addAction(aOpenDeckInDeckEditor); libraryMenu->addSeparator(); libraryMenu->addAction(aMoveTopCardsToGrave); libraryMenu->addAction(aMoveTopCardsToExile); @@ -595,6 +599,7 @@ void Player::retranslateUi() mRevealLibrary->setTitle(tr("Reveal &library to")); mRevealTopCard->setTitle(tr("Reveal t&op card to")); aAlwaysRevealTopCard->setText(tr("&Always reveal top card")); + aOpenDeckInDeckEditor->setText(tr("O&pen deck in deck editor")); aViewSideboard->setText(tr("&View sideboard")); aDrawCard->setText(tr("&Draw card")); aDrawCards->setText(tr("D&raw cards...")); @@ -744,6 +749,7 @@ void Player::initSayMenu() void Player::setDeck(DeckList *_deck) { deck = _deck; + aOpenDeckInDeckEditor->setEnabled(deck); createPredefinedTokenMenu->clear(); predefinedTokens.clear(); @@ -783,6 +789,11 @@ void Player::actAlwaysRevealTopCard() sendGameCommand(cmd); } +void Player::actOpenDeckInDeckEditor() +{ + emit openDeckEditor(new DeckList(deck)); +} + void Player::actViewGraveyard() { static_cast(scene())->toggleZoneView(this, "grave", -1); diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index b52b6b87..7808e336 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -77,6 +77,7 @@ public: class Player : public QObject, public QGraphicsItem { Q_OBJECT signals: + void openDeckEditor(DeckList *deck); void newCardAdded(AbstractCardItem *card); // Log events void logSay(Player *player, QString message); @@ -134,6 +135,7 @@ private slots: void updateBoundingRect(); void rearrangeZones(); + void actOpenDeckInDeckEditor(); void actCreatePredefinedToken(); void cardMenuAction(); void actCardCounterTrigger(); @@ -161,7 +163,7 @@ private: QAction *aMoveHandToTopLibrary, *aMoveHandToBottomLibrary, *aMoveHandToGrave, *aMoveHandToRfg, *aMoveGraveToTopLibrary, *aMoveGraveToBottomLibrary, *aMoveGraveToHand, *aMoveGraveToRfg, *aMoveRfgToTopLibrary, *aMoveRfgToBottomLibrary, *aMoveRfgToHand, *aMoveRfgToGrave, - *aViewLibrary, *aViewTopCards, *aAlwaysRevealTopCard, *aMoveTopCardsToGrave, *aMoveTopCardsToExile, *aMoveTopCardToBottom, + *aViewLibrary, *aViewTopCards, *aAlwaysRevealTopCard, *aOpenDeckInDeckEditor, *aMoveTopCardsToGrave, *aMoveTopCardsToExile, *aMoveTopCardToBottom, *aViewGraveyard, *aViewRfg, *aViewSideboard, *aDrawCard, *aDrawCards, *aUndoDraw, *aMulligan, *aShuffle, *aUntapAll, *aRollDie, *aCreateToken, *aCreateAnotherToken, diff --git a/cockatrice/src/settingscache.cpp b/cockatrice/src/settingscache.cpp index 9597acd9..b3aa2d2e 100644 --- a/cockatrice/src/settingscache.cpp +++ b/cockatrice/src/settingscache.cpp @@ -19,6 +19,7 @@ SettingsCache::SettingsCache() playerBgPath = settings->value("zonebg/playerarea").toString(); cardBackPicturePath = settings->value("paths/cardbackpicture").toString(); + mainWindowGeometry = settings->value("interface/main_window_geometry").toByteArray(); picDownload = settings->value("personal/picturedownload", true).toBool(); doubleClickToPlay = settings->value("interface/doubleclicktoplay", true).toBool(); cardInfoMinimized = settings->value("interface/cardinfominimized", 0).toInt(); @@ -211,3 +212,9 @@ void SettingsCache::setIgnoreUnregisteredUsers(bool _ignoreUnregisteredUsers) settings->setValue("chat/ignore_unregistered", ignoreUnregisteredUsers); emit ignoreUnregisteredUsersChanged(); } + +void SettingsCache::setMainWindowGeometry(const QByteArray &_mainWindowGeometry) +{ + mainWindowGeometry = _mainWindowGeometry; + settings->setValue("interface/main_window_geometry", mainWindowGeometry); +} diff --git a/cockatrice/src/settingscache.h b/cockatrice/src/settingscache.h index b467a678..e1ef13d6 100644 --- a/cockatrice/src/settingscache.h +++ b/cockatrice/src/settingscache.h @@ -27,6 +27,7 @@ signals: private: QSettings *settings; + QByteArray mainWindowGeometry; QString customTranslationFile, lang; QString deckPath, replaysPath, picsPath, cardDatabasePath; QString handBgPath, stackBgPath, tableBgPath, playerBgPath, cardBackPicturePath; @@ -46,6 +47,7 @@ private: bool ignoreUnregisteredUsers; public: SettingsCache(); + const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; } QString getCustomTranslationFile() const { return customTranslationFile; } QString getLang() const { return lang; } QString getDeckPath() const { return deckPath; } @@ -73,6 +75,7 @@ public: bool getPriceTagFeature() const { return priceTagFeature; } bool getIgnoreUnregisteredUsers() const { return ignoreUnregisteredUsers; } public slots: + void setMainWindowGeometry(const QByteArray &_mainWindowGeometry); void setCustomTranslationFile(const QString &_customTranslationFile); void setLang(const QString &_lang); void setDeckPath(const QString &_deckPath); diff --git a/cockatrice/src/tab_deck_editor.cpp b/cockatrice/src/tab_deck_editor.cpp index bf2c06f3..3e5ee00f 100644 --- a/cockatrice/src/tab_deck_editor.cpp +++ b/cockatrice/src/tab_deck_editor.cpp @@ -181,7 +181,7 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent) connect(aPrintDeck, SIGNAL(triggered()), this, SLOT(actPrintDeck())); aClose = new QAction(tr("&Close"), this); aClose->setShortcut(tr("Ctrl+Q")); - connect(aClose, SIGNAL(triggered()), this, SLOT(close())); + connect(aClose, SIGNAL(triggered()), this, SLOT(closeRequest())); aEditSets = new QAction(tr("&Edit sets..."), this); connect(aEditSets, SIGNAL(triggered()), this, SLOT(actEditSets())); @@ -289,7 +289,6 @@ void TabDeckEditor::updateName(const QString &name) { deckModel->getDeckList()->setName(name); setWindowModified(true); - emit tabTextChanged(this, getTabText()); } void TabDeckEditor::updateComments() @@ -568,3 +567,9 @@ void TabDeckEditor::setDeck(DeckList *_deck, const QString &_lastFileName, DeckL deckView->expandAll(); setWindowModified(false); } + +void TabDeckEditor::setWindowModified(bool _windowModified) +{ + Tab::setWindowModified(_windowModified); + emit tabTextChanged(this, getTabText()); +} diff --git a/cockatrice/src/tab_deck_editor.h b/cockatrice/src/tab_deck_editor.h index 2278d920..b8c32be4 100644 --- a/cockatrice/src/tab_deck_editor.h +++ b/cockatrice/src/tab_deck_editor.h @@ -90,8 +90,10 @@ public: ~TabDeckEditor(); void retranslateUi(); QString getTabText() const; - void closeRequest(); void setDeck(DeckList *_deck, const QString &_lastFileName = QString(), DeckList::FileFormat _lastFileFormat = DeckList::CockatriceFormat); + void setWindowModified(bool _windowModified); +public slots: + void closeRequest(); signals: void deckEditorClosing(TabDeckEditor *tab); }; diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index 4243c170..5524fc78 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -734,6 +734,7 @@ Player *TabGame::addPlayer(int playerId, const ServerInfo_User &info) { bool local = ((clients.size() > 1) || (playerId == localPlayerId)); Player *newPlayer = new Player(info, playerId, local, this); + connect(newPlayer, SIGNAL(openDeckEditor(DeckList *)), this, SIGNAL(openDeckEditor(DeckList *))); scene->addPlayer(newPlayer); connect(newPlayer, SIGNAL(newCardAdded(AbstractCardItem *)), this, SLOT(newCardAdded(AbstractCardItem *))); diff --git a/cockatrice/src/tab_game.h b/cockatrice/src/tab_game.h index f62c33f8..96b4dadd 100644 --- a/cockatrice/src/tab_game.h +++ b/cockatrice/src/tab_game.h @@ -171,6 +171,7 @@ signals: void containerProcessingStarted(const GameEventContext &context); void containerProcessingDone(); void openMessageDialog(const QString &userName, bool focus); + void openDeckEditor(DeckList *deck); private slots: void replayNextEvent(); void replayFinished(); diff --git a/cockatrice/src/tab_supervisor.cpp b/cockatrice/src/tab_supervisor.cpp index d5d11aaf..ac6eae48 100644 --- a/cockatrice/src/tab_supervisor.cpp +++ b/cockatrice/src/tab_supervisor.cpp @@ -208,12 +208,14 @@ void TabSupervisor::stop() tabDeckStorage->deleteLater(); if (tabReplays) tabReplays->deleteLater(); + if (tabAdmin) + tabAdmin->deleteLater(); } tabUserLists = 0; tabServer = 0; tabDeckStorage = 0; tabReplays = 0; - clear(); + tabAdmin = 0; QMapIterator roomIterator(roomTabs); while (roomIterator.hasNext()) @@ -235,10 +237,6 @@ void TabSupervisor::stop() messageIterator.next().value()->deleteLater(); messageTabs.clear(); - QListIterator deckEditorIterator(deckEditorTabs); - while (deckEditorIterator.hasNext()) - deckEditorIterator.next()->deleteLater(); - delete userInfo; userInfo = 0; } @@ -250,7 +248,7 @@ void TabSupervisor::updatePingTime(int value, int max) if (tabServer->getContentsChanged()) return; - setTabIcon(0, QIcon(PingPixmapGenerator::generatePixmap(15, value, max))); + setTabIcon(indexOf(tabServer), QIcon(PingPixmapGenerator::generatePixmap(15, value, max))); } void TabSupervisor::closeButtonPressed() @@ -281,6 +279,7 @@ void TabSupervisor::gameJoined(const Event_GameJoined &event) TabGame *tab = new TabGame(this, QList() << client, event, roomGameTypes); connect(tab, SIGNAL(gameClosing(TabGame *)), this, SLOT(gameLeft(TabGame *))); connect(tab, SIGNAL(openMessageDialog(const QString &, bool)), this, SLOT(addMessageTab(const QString &, bool))); + connect(tab, SIGNAL(openDeckEditor(DeckList *)), this, SLOT(addDeckEditorTab(DeckList *))); int tabIndex = myAddTab(tab); addCloseButtonToTab(tab, tabIndex); gameTabs.insert(event.game_info().game_id(), tab); @@ -291,6 +290,7 @@ void TabSupervisor::localGameJoined(const Event_GameJoined &event) { TabGame *tab = new TabGame(this, localClients, event, QMap()); connect(tab, SIGNAL(gameClosing(TabGame *)), this, SLOT(gameLeft(TabGame *))); + connect(tab, SIGNAL(openDeckEditor(DeckList *)), this, SLOT(addDeckEditorTab(DeckList *))); int tabIndex = myAddTab(tab); addCloseButtonToTab(tab, tabIndex); gameTabs.insert(event.game_info().game_id(), tab); @@ -387,6 +387,8 @@ void TabSupervisor::talkLeft(TabMessage *tab) TabDeckEditor *TabSupervisor::addDeckEditorTab(DeckList *deckToOpen) { TabDeckEditor *tab = new TabDeckEditor(this); + if (deckToOpen) + tab->setDeck(deckToOpen); connect(tab, SIGNAL(deckEditorClosing(TabDeckEditor *)), this, SLOT(deckEditorClosed(TabDeckEditor *))); int tabIndex = myAddTab(tab); addCloseButtonToTab(tab, tabIndex); diff --git a/cockatrice/src/tab_supervisor.h b/cockatrice/src/tab_supervisor.h index b95cad64..b9785e3a 100644 --- a/cockatrice/src/tab_supervisor.h +++ b/cockatrice/src/tab_supervisor.h @@ -76,6 +76,7 @@ signals: void adminLockChanged(bool lock); public slots: TabDeckEditor *addDeckEditorTab(DeckList *deckToOpen); + void openReplay(GameReplay *replay); private slots: void closeButtonPressed(); void updateCurrent(int index); @@ -86,7 +87,6 @@ private slots: void addRoomTab(const ServerInfo_Room &info, bool setCurrent); void roomLeft(TabRoom *tab); TabMessage *addMessageTab(const QString &userName, bool focus); - void openReplay(GameReplay *replay); void replayLeft(TabGame *tab); void processUserLeft(const QString &userName); void processUserJoined(const ServerInfo_User &userInfo); diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index b5d40e87..d840794e 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -56,7 +56,7 @@ void MainWindow::updateTabMenu(const QList &newMenuList) menuBar()->removeAction(tabMenus[i]->menuAction()); tabMenus = newMenuList; for (int i = 0; i < tabMenus.size(); ++i) - menuBar()->insertMenu(tabMenus[i]->menuAction(), tabMenus[i]); + menuBar()->insertMenu(helpMenu->menuAction(), tabMenus[i]); } void MainWindow::processConnectionClosedEvent(const Event_ConnectionClosed &event) @@ -175,8 +175,7 @@ void MainWindow::actWatchReplay() GameReplay *replay = new GameReplay; replay->ParseFromArray(buf.data(), buf.size()); - TabGame *replayWatcher = new TabGame(0, replay); - replayWatcher->show(); + tabSupervisor->openReplay(replay); } void MainWindow::localGameEnded() @@ -386,6 +385,8 @@ MainWindow::MainWindow(QWidget *parent) retranslateUi(); resize(900, 700); + restoreGeometry(settingsCache->getMainWindowGeometry()); + aFullScreen->setChecked(windowState() & Qt::WindowFullScreen); } MainWindow::~MainWindow() @@ -403,6 +404,7 @@ void MainWindow::closeEvent(QCloseEvent *event) } } event->accept(); + settingsCache->setMainWindowGeometry(saveGeometry()); delete tabSupervisor; } diff --git a/cockatrice/translations/cockatrice_de.ts b/cockatrice/translations/cockatrice_de.ts index 7877b1da..ad1023f0 100644 --- a/cockatrice/translations/cockatrice_de.ts +++ b/cockatrice/translations/cockatrice_de.ts @@ -2313,7 +2313,7 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic MainWindow - + There are too many concurrent connections from your address. Es gibt zu viele gleichzeitige Verbindungen von Ihrer Adresse. @@ -2322,7 +2322,7 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic Gebannt von einem Moderator. - + Scheduled server shutdown. Planmäßige Serverabschaltung. @@ -2331,39 +2331,39 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic Unbekannter Grund. - + Banned by moderator Gebannt von einem Moderator - + Expected end time: %1 Voraussichtliches Ende: %1 - + This ban lasts indefinitely. Dieser Bann ist unbefristet. - + Connection closed Verbindung geschlossen - + The server has terminated your connection. Reason: %1 Der Server hat Ihre Verbindung beendet. Grund: %1 - + Scheduled server shutdown Planmäßige Serverabschaltung - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -2377,103 +2377,103 @@ Grund für die Abschaltung: %1 - + Number of players Spieleranzahl - + Please enter the number of players. Bitte die Spieleranzahl eingeben: - - + + Player %1 Spieler %1 - + Load replay Aufgezeichnetes Spiel laden - + About Cockatrice Über Cockatrice - + Version %1 Version %1 - + Authors: Autoren: - + Translators: Übersetzer: - + Spanish: Spanisch: - + Portugese (Portugal): Portugiesisch (Portugal): - + Portugese (Brazil): Portugiesisch (Brasilien): - + French: Französisch: - + Japanese: Japanisch: - + Russian: Russisch: - + Czech: Tschechisch: - + Italian: Italienisch: - + Swedish: Schwedisch: - + You are banned until %1. Sie sind gebannt bis: %1. - + You are banned indefinitely. Sie sind auf unbestimmte Zeit gebannt. - + Unknown login error: %1 Unbekannter Login-Fehler: %1 @@ -2482,29 +2482,29 @@ Grund für die Abschaltung: %1 Slowakisch: - + + - - - - - - + + + + + Error Fehler - + Server timeout Server Zeitüberschreitung - + Invalid login data. Ungültige Anmeldedaten. - + There is already an active session using this user name. Please close that session first and re-login. Es gibt bereits eine aktive Verbindung mit diesem Benutzernamen. @@ -2521,19 +2521,19 @@ Bitte schließen Sie diese Verbindung zuerst und versuchen Sie es dann erneut.Unbekannter Serverfehler: %1 - + Socket error: %1 Netzwerkfehler: %1 - + You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. Local version is %1, remote version is %2. Sie versuchen sich an einem veralteten Server anzumelden. Bitte verwenden Sie eine ältere Cockatrice-Version oder melden Sie sich an einem aktuellen Server an. Lokale Version ist %1, Serverversion ist %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Ihr Cockatrice-Client ist veraltet. Bitte laden Sie sich die neueste Version herunter. @@ -2544,52 +2544,52 @@ Lokale Version ist %1, Serverversion ist %2. Protokollversionen stimmen nicht überein. Lokale Version: %1, Serverversion: %2. - + Connecting to %1... Verbinde zu %1... - + Disconnected nicht verbunden - + Connected, logging in at %1 Verbunden, Anmeldung bei %1 - + Logged in at %1 Angemeldet bei %1 - + &Connect... &Verbinden... - + &Disconnect Verbindung &trennen - + Start &local game... &Lokales Spiel starten... - + &Watch replay... &Aufgezeichnetes Spiel abspielen... - + &About Cockatrice &Über Cockatrice - + &Help &Hilfe @@ -2616,27 +2616,27 @@ Lokale Version ist %1, Serverversion ist %2. Spiel ver&lassen - + &Deck editor &Deck-Editor - + &Full screen &Vollbild - + Ctrl+F Ctrl+F - + &Settings... &Einstellungen... - + &Exit &Beenden @@ -2649,7 +2649,7 @@ Lokale Version ist %1, Serverversion ist %2. Esc - + &Cockatrice &Cockatrice @@ -4484,21 +4484,21 @@ Lokale Version ist %1, Serverversion ist %2. Player - - - + + + Move to &top of library Oben auf die Biblio&thek legen - - - + + + Move to &bottom of library Unter die &Bibliothek legen - + &View library Bibliothek &ansehen @@ -4507,182 +4507,187 @@ Lokale Version ist %1, Serverversion ist %2. Oberste Karten in den F&riedhof legen... - + Move top cards to &exile... Oberste Karten ins &Exil schicken... - + F3 F3 - + View &top cards of library... Oberste Karten der Bibliothek a&nsehen... - + &View graveyard &Zeige Friedhof - + &Always reveal top card &Oberste Karte aufgedeckt lassen - + + O&pen deck in deck editor + Im &Deckeditor öffnen + + + Cr&eate predefined token &Vordefinierten Spielstein erstellen - + &All players &allen Spielern - + &Peek at card face &Vorderseite anschauen - + &Clone &Kopieren - + Ctrl+H Ctrl+H - + Attac&h to card... An Karte &anlegen... - + Ctrl+A Ctrl+A - + Unattac&h &Von Karte lösen - + &Draw arrow... &Pfeil zeichnen... - + &Increase power &Stärke erhöhen - + Ctrl++ Ctrl++ - + &Decrease power S&tärke senken - + Ctrl+- Ctrl+- - + I&ncrease toughness &Widerstandskraft erhöhen - + Alt++ Alt++ - + D&ecrease toughness W&iderstandskraft senken - + Alt+- Alt+- - + In&crease power and toughness Stärke und Widerstandskraft &erhöhen - + Ctrl+Alt++ Ctrl+Alt++ - + Dec&rease power and toughness Stärke und Widerstandskraft s&enken - + Ctrl+Alt+- Ctrl+Alt+- - + Set &power and toughness... &Kampfwerte setzen... - + Ctrl+P Ctrl+P - + red rot - + yellow gelb - + green grün - + &Add counter (%1) Zählmarke &hinzufügen (%1) - + &Remove counter (%1) Zählmarke &entfernen (%1) - + &Set counters (%1)... Zählmarken &setzen (%1)... - + Ctrl+F3 Ctrl+F3 - + F4 F4 @@ -4691,73 +4696,73 @@ Lokale Version ist %1, Serverversion ist %2. Zeige ent&fernte Karten - + &View sideboard Zeige &Sideboard - + Player "%1" Spieler "%1" - - + + Move to &graveyard Auf den &Friedhof legen - + Reveal &library to &Bibliothek jemandem zeigen - + Reveal t&op card to &Oberste Karte jemandem zeigen - + &Undo last draw Zuletzt gezogene Karte zur&ücklegen - + Take &mulligan &Mulligan nehmen - + Move top cards to &graveyard... Oberste Karten auf den F&riedhof legen... - + Put top card on &bottom Oberste Karte nach &unten legen - + &Hand &Hand - + &Reveal to Jemandem &zeigen - + Reveal r&andom card to Z&ufällige Karte jemandem zeigen - + &Library Bib&liothek - + &Graveyard &Friedhof @@ -4766,7 +4771,7 @@ Lokale Version ist %1, Serverversion ist %2. Entfe&rnte Karten - + &Sideboard &Sideboard @@ -4775,38 +4780,38 @@ Lokale Version ist %1, Serverversion ist %2. &Kampfwerte setzen... - + &Set annotation... &Hinweis setzen... - + View top cards of library Zeige die obersten Karten der Bibliothek - + Number of cards: Anzahl der Karten: - + &Draw card Karte &ziehen - + &View exile &Zeige Exil - + &Exile &Exil - - + + Move to &hand auf die &Hand nehmen @@ -4815,28 +4820,28 @@ Lokale Version ist %1, Serverversion ist %2. auf den &Friedhof legen - - + + Move to &exile ins &Exil schicken - + Ctrl+W Ctrl+W - + Ctrl+D Ctrl+D - + D&raw cards... Ka&rten ziehen... - + Ctrl+E Ctrl+E @@ -4845,37 +4850,37 @@ Lokale Version ist %1, Serverversion ist %2. &Mulligan nehmen... - + Ctrl+M Ctrl+M - + &Shuffle Mi&schen - + Ctrl+S Ctrl+S - + &Counters &Zähler - + &Untap all permanents &Enttappe alle bleibenden Karten - + Ctrl+Shift+D Ctrl+Shift+D - + Ctrl+U Ctrl+U @@ -4904,72 +4909,72 @@ Lokale Version ist %1, Serverversion ist %2. Ctrl+L - + R&oll die... &Würfeln... - + Ctrl+I Ctrl+I - + &Create token... Spiels&tein erstellen... - + Ctrl+T Ctrl+T - + C&reate another token &Noch einen Spielstein erstellen - + Ctrl+G Ctrl+G - + S&ay S&agen - + C&ard &Karte - + &Play &Ausspielen - + &Hide &Verstecken - + &Tap &Tappen - + &Untap E&nttappen - + Toggle &normal untapping &Normales Enttappen umschalten - + &Flip &Umdrehen @@ -4998,27 +5003,27 @@ Lokale Version ist %1, Serverversion ist %2. &Setze Zählmarken... - + &top of library &auf die Bibliothek - + &bottom of library &unter die Bibliothek - + &graveyard in den &Friedhof - + Ctrl+Del Ctrl+Del - + &exile ins &Exil @@ -5051,50 +5056,50 @@ Lokale Version ist %1, Serverversion ist %2. F10 - + Draw cards Karten ziehen - - - - + + + + Number: Anzahl: - + Move top cards to grave Oberste Karten in den Friedhof legen - + Move top cards to exile Oberste Karten ins Exil schicken - + Set power/toughness Kampfwerte setzen - + Please enter the new PT: Bitte die neuen Kampfwerte eingeben: - + Set annotation Hinweis setzen - + Please enter the new annotation: Bitte den Hinweis eingeben: - + Set counters Setze Zählmarken @@ -5107,12 +5112,12 @@ Lokale Version ist %1, Serverversion ist %2. Neue Lebenspunkte insgesamt: - + Roll die Würfeln - + Number of sides: Anzahl der Seiten: @@ -5227,7 +5232,7 @@ Lokale Version ist %1, Serverversion ist %2. Alle Dateien (*.*) - + Cockatrice replays (*.cor) Aufgezeichnete Cockatrice-Spiele (*.cor) @@ -5430,6 +5435,215 @@ Lokale Version ist %1, Serverversion ist %2. %1 hat den Raum verlassen. + + TabDeckEditor + + + Deck editor [*] + Deck-Editor [*] + + + + &Print deck... + Deck &drucken... + + + + &Close + S&chließen + + + + Ctrl+Q + Ctrl+Q + + + + &Edit sets... + &Editionen bearbeiten... + + + + &Search... + &Suchen... + + + + &Clear search + Suche a&ufheben + + + + &Search for: + &Suchen nach: + + + + Deck &name: + Deck&name: + + + + &Comments: + &Kommentare: + + + + Hash: + Hash: + + + + &Update prices + &Preise aktualisieren + + + + Ctrl+U + Ctrl+U + + + + &New deck + &Neues Deck + + + + &Load deck... + Deck &laden... + + + + &Save deck + Deck &speichern + + + + Save deck &as... + Deck s&peichern unter... + + + + Load deck from cl&ipboard... + Deck aus &Zwischenablage laden... + + + + Save deck to clip&board + Deck in Z&wischenablage speichern + + + + Add card to &maindeck + Karte zu&m Hauptdeck hinzufügen + + + + Return + Return + + + + Enter + Enter + + + + Add card to &sideboard + Karte zum &Sideboard hinzufügen + + + + Ctrl+Return + Ctrl+Return + + + + Ctrl+Enter + Ctrl+Enter + + + + &Remove row + Zeile entfe&rnen + + + + Del + Del + + + + &Increment number + Anzahl er&höhen + + + + + + + + + + + &Decrement number + Anzahl v&erringern + + + + - + - + + + + &Deck editor + &Deck-Editor + + + + C&ard database + &Kartendatenbank + + + + Deck: %1 + Deck: %1 + + + + Are you sure? + Sind Sie sicher? + + + + The decklist has been modified. +Do you want to save the changes? + Die Deckliste wurde verändert. +Möchten Sie die Änderungen speichern? + + + + Load deck + Deck laden + + + + + Error + Fehler + + + + + The deck could not be saved. +Please check that the directory is writable and try again. + Das Deck konnte nicht gespeichert werden. +Bitte überprüfen Sie, dass Sie Schreibrechte in dem Verzeichnis haben, und versuchen Sie es erneut. + + + + Save deck + Deck speichern + + TabDeckStorage @@ -5500,113 +5714,113 @@ Bitte geben Sie einen Namen ein: TabGame - + F5 F5 - + F6 F6 - + F7 F7 - + F8 F8 - + F9 F9 - + F10 F10 - + &Phases &Phasen - + &Game Spi&el - + Next &phase Nächste &Phase - + Ctrl+Space Ctrl+Space - + Next &turn Nächster &Zug - + Ctrl+Return Ctrl+Return - + Ctrl+Enter Ctrl+Enter - + &Remove all local arrows &Lokale Pfeile entfernen - + Ctrl+R Ctrl+R - + Game &information &Spielinformationen - + &Concede &Aufgeben - + F2 F2 - + &Leave game Spiel ver&lassen - - + + Ctrl+Q Ctrl+Q - + C&lose replay Replay sch&ließen - + Replay %1: %2 Replay %1: %2 @@ -5635,7 +5849,7 @@ Bitte geben Sie einen Namen ein: Spiel s&tarten - + &Say: &Sagen: @@ -5648,22 +5862,22 @@ Bitte geben Sie einen Namen ein: Esc - + Concede Aufgeben - + Are you sure you want to concede this game? Sind Sie sicher, dass Sie das Spiel aufgeben möchten? - + Leave game Spiel verlassen - + Are you sure you want to leave this game? Sind Sie sicher, dass Sie das Spiel verlassen möchten? @@ -5672,7 +5886,7 @@ Bitte geben Sie einen Namen ein: Deck laden - + Game %1: %2 Spiel %1: %2 @@ -5680,32 +5894,32 @@ Bitte geben Sie einen Namen ein: TabMessage - + Personal &talk Persönliches &Gespräch - + &Leave Ver&lassen - + This user is ignoring you. Dieser Benutzer ignoriert Sie. - + %1 has left the server. %1 hat den Server verlassen. - + %1 has joined the server. %1 hat den Server betreten. - + Talking to %1 Gespräch mit %1 @@ -5747,32 +5961,32 @@ Bitte geben Sie einen Namen ein: TabRoom - + &Say: &Sagen: - + Chat Unterhaltung - + &Room &Raum - + &Leave room Raum ver&lassen - + &Ignore unregistered users in chat Unregistrierte Benutzer im Chat &ignorieren - + You are flooding the chat. Please wait a couple of seconds. Sie überfluten den Chatraum. Bitte warten Sie ein paar Sekunden. @@ -6031,221 +6245,180 @@ Geben Sie 0 ein für einen unbefristeten Bann. WndDeckEditor - &Search for: - &Suchen nach: + &Suchen nach: - Deck &name: - Deck &Name: + Deck &Name: - &Comments: - &Kommentare: + &Kommentare: - Deck editor [*] - Deck-Editor [*] + Deck-Editor [*] - &New deck - &Neues Deck + &Neues Deck - &Load deck... - Deck &laden... + Deck &laden... - &Save deck - Deck &speichern + Deck &speichern &Save deck as... Deck &speichern unter... - Save deck &as... - Deck s&peichern unter... + Deck s&peichern unter... - Save deck to clip&board - Deck in Z&wischenablage speichern + Deck in Z&wischenablage speichern - &Print deck... - Deck &drucken... + Deck &drucken... - &Close - S&chließen + S&chließen - Ctrl+Q - Ctrl+Q + Ctrl+Q - &Edit sets... - &Editionen bearbeiten... + &Editionen bearbeiten... - &Deck - &Deck + &Deck &Sets &Editionen - Add card to &maindeck - Karte zu&m Hauptdeck hinzufügen + Karte zu&m Hauptdeck hinzufügen - Return - Return + Return - Enter - Enter + Enter - Ctrl+Return - Ctrl+Return + Ctrl+Return - Ctrl+Enter - Ctrl+Enter + Ctrl+Enter Ctrl+M Ctrl+M - Add card to &sideboard - Karte zum &Sideboard hinzufügen + Karte zum &Sideboard hinzufügen Ctrl+N Ctrl+N - &Search... - &Suchen... + &Suchen... - &Clear search - Suche a&ufheben + Suche a&ufheben - Hash: - Hash: + Hash: - &Update prices - &Preise aktualisieren + &Preise aktualisieren - Ctrl+U - Ctrl+U + Ctrl+U - Load deck from cl&ipboard... - Deck aus &Zwischenablage laden... + Deck aus &Zwischenablage laden... - &Card database - &Kartendatenbank + &Kartendatenbank - &Remove row - Zeile entfe&rnen + Zeile entfe&rnen - Del - Entf + Entf - &Increment number - Anzahl er&höhen + Anzahl er&höhen - + - + + + - &Decrement number - Anzahl v&erringern + Anzahl v&erringern - - - - + - - Are you sure? - Bist du sicher? + Bist du sicher? - The decklist has been modified. Do you want to save the changes? - Die Deckliste wurde verändert. + Die Deckliste wurde verändert. Willst du die Änderungen speichern? - Load deck - Deck laden + Deck laden - - Error - Fehler + Fehler - - The deck could not be saved. Please check that the directory is writable and try again. - Das Deck konnte nicht gespeichert werden. + Das Deck konnte nicht gespeichert werden. Bitte überprüfen Sie, dass Sie Schreibrechte in dem Verzeichnis haben, und versuchen Sie es erneut. - Save deck - Deck speichern + Deck speichern