Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
abstract_tab_deck_editor.h
Go to the documentation of this file.
1
7
8#ifndef TAB_GENERIC_DECK_EDITOR_H
9#define TAB_GENERIC_DECK_EDITOR_H
10
13#include "tab.h"
14
15#include <QMap>
16#include <QSize>
17#include <QString>
18#include <qtmetamacros.h>
19
22class DeckEditorMenu;
28class Response;
29class FilterTree;
30class QMessageBox;
31class QDockWidget;
32class QMenu;
33class QAction;
34class ExactCard;
35class TabSupervisor;
36struct LoadedDeck;
37
77{
78 Q_OBJECT
79
80 friend class DeckEditorMenu;
81
82public:
87 explicit AbstractTabDeckEditor(TabSupervisor *_tabSupervisor);
88
90 virtual void createMenus() = 0;
91
93 [[nodiscard]] virtual QString getTabText() const override = 0;
94
96 bool confirmClose();
97
99 virtual void retranslateUi() override = 0;
100
104 void openDeck(const LoadedDeck &deck);
105
110
111 // UI Elements
120
121public slots:
123 virtual void onDeckChanged();
124
126 virtual void onDeckModified();
127
132 void updateCard(const ExactCard &card);
133
138 void updateCardInfo(const ExactCard &card);
139
145 void addCard(const ExactCard &card, const QString &zoneName);
146
156 void decrementCard(const ExactCard &card, const QString &zoneName);
157
159 void actOpenRecent(const QString &fileName);
160
162 void filterTreeChanged(FilterTree *filterTree);
163
165 bool closeRequest() override;
166
169
175 void openEdhrecTab(const CardInfoPtr &info, bool isCommander);
176
177signals:
179 void openDeckEditor(const LoadedDeck &deck);
180
183
184protected slots:
186 virtual void actNewDeck();
187
190
192 virtual void actLoadDeck();
193
195 bool actSaveDeck();
196
198 virtual bool actSaveDeckAs();
199
201 void actShareDeck();
202
204 virtual void actLoadDeckFromClipboard();
205
208
211
214
217
220
223
225 void actPrintDeck();
226
229
232
235
238
241
243 void saveDeckRemoteFinished(const Response &r);
244
245 // UI Layout Management
246 virtual void loadLayout() = 0;
247 virtual void restartLayout() = 0;
248 virtual void refreshShortcuts() = 0;
249
251 void closeEvent(QCloseEvent *event) override;
252
256 virtual void setDeck(const LoadedDeck &_deck);
257
258private:
260 void editDeckInClipboard(bool annotated);
261
266
267protected:
275
280 {
281 QMenu *menu;
282 QAction *aVisible;
283 QAction *aFloating;
285 };
286
291 void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize);
292
297 DeckOpenLocation confirmOpen(bool openInSameTabIfBlank = true);
298
302 QMessageBox *createSaveConfirmationWindow();
303
305 virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation);
306
307 // UI Menu Elements
308 QMenu *viewMenu;
309
310 QAction *aResetLayout;
311
313};
314
315#endif // TAB_GENERIC_DECK_EDITOR_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:15
virtual void createMenus()=0
Creates the menus for this tab. Pure virtual.
QMessageBox * createSaveConfirmationWindow()
Creates a save confirmation message box.
Definition abstract_tab_deck_editor.cpp:259
virtual QString getTabText() const override=0
Returns the display text for the tab.
void updateCardInfo(const ExactCard &card)
Updates just the card info dock.
Definition abstract_tab_deck_editor.cpp:139
QMap< QDockWidget *, DockActions > dockToActions
Definition abstract_tab_deck_editor.h:312
void saveDeckRemoteFinished(const Response &r)
Callback when a remote deck save finishes.
Definition abstract_tab_deck_editor.cpp:429
DeckEditorDeckDockWidget * getDeckDockWidget() const
Definition abstract_tab_deck_editor.h:106
virtual void restartLayout()=0
void actLoadDeckFromWebsite()
Loads a deck from an online website.
Definition abstract_tab_deck_editor.cpp:529
bool actSaveDeck()
Saves the current deck.
Definition abstract_tab_deck_editor.cpp:331
virtual void loadLayout()=0
virtual void actLoadDeck()
Loads a deck from file.
Definition abstract_tab_deck_editor.cpp:273
DeckEditorCardInfoDockWidget * cardInfoDockWidget
Card info dock.
Definition abstract_tab_deck_editor.h:116
virtual void refreshShortcuts()=0
void actExportDeckDecklist()
Exports the deck to decklist.org.
Definition abstract_tab_deck_editor.cpp:575
virtual void retranslateUi() override=0
Retranslates the UI text. Pure virtual.
bool closeRequest() override
Requests closing the tab.
Definition abstract_tab_deck_editor.cpp:632
void showPrintingSelector()
Shows the printing selector dock and updates it with the current card.
Definition abstract_tab_deck_editor.cpp:640
DeckEditorCardDatabaseDockWidget * cardDatabaseDockWidget
Database dock.
Definition abstract_tab_deck_editor.h:115
void actEditDeckInClipboardRaw()
Opens a raw clipboard deck editor.
Definition abstract_tab_deck_editor.cpp:488
void actSaveDeckToClipboardRawNoSetInfo()
Saves deck to clipboard in raw format without set info.
Definition abstract_tab_deck_editor.cpp:512
DeckEditorMenu * deckMenu
Menu for deck operations.
Definition abstract_tab_deck_editor.h:114
void updateCard(const ExactCard &card)
Updates the card info dock and printing selector.
Definition abstract_tab_deck_editor.cpp:133
CardDatabaseModel * databaseModel
Card database.
Definition abstract_tab_deck_editor.h:113
AbstractTabDeckEditor(TabSupervisor *_tabSupervisor)
Constructs an AbstractTabDeckEditor.
Definition abstract_tab_deck_editor.cpp:75
DeckOpenLocation
Enum describing deck open locations.
Definition abstract_tab_deck_editor.h:270
@ NEW_TAB
Open deck in a new tab.
Definition abstract_tab_deck_editor.h:273
@ SAME_TAB
Open deck in the same tab.
Definition abstract_tab_deck_editor.h:272
@ CANCELLED
Operation cancelled.
Definition abstract_tab_deck_editor.h:271
void exportToDecklistWebsite(DeckLoader::DecklistWebsite website)
Helper for exporting decks to websites.
Definition abstract_tab_deck_editor.cpp:555
friend class DeckEditorMenu
Definition abstract_tab_deck_editor.h:80
virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation)
Opens a deck from a file.
Definition abstract_tab_deck_editor.cpp:308
virtual void onDeckChanged()
Called when the deck changes.
Definition abstract_tab_deck_editor.cpp:145
DeckOpenLocation confirmOpen(bool openInSameTabIfBlank=true)
Confirms deck open action based on settings and modified state.
Definition abstract_tab_deck_editor.cpp:222
void actAnalyzeDeckTappedout()
Analyzes the deck using tappedout.net.
Definition abstract_tab_deck_editor.cpp:594
void editDeckInClipboard(bool annotated)
Helper for editing decks from the clipboard.
Definition abstract_tab_deck_editor.cpp:468
DeckStateManager * deckStateManager
Definition abstract_tab_deck_editor.h:112
DeckEditorPrintingSelectorDockWidget * printingSelectorDockWidget
Printing selector dock.
Definition abstract_tab_deck_editor.h:119
void actEditDeckInClipboard()
Opens a deck editor for clipboard contents.
Definition abstract_tab_deck_editor.cpp:482
void actAnalyzeDeckDeckstats()
Analyzes the deck using deckstats.net.
Definition abstract_tab_deck_editor.cpp:587
void openEdhrecTab(const CardInfoPtr &info, bool isCommander)
Opens an EDHRec tab for the given card.
Definition abstract_tab_deck_editor.cpp:647
void actOpenRecent(const QString &fileName)
Opens a recently opened deck file.
Definition abstract_tab_deck_editor.cpp:293
void cleanDeckAndResetModified()
Cleans the current deck and resets the modified state.
Definition abstract_tab_deck_editor.cpp:211
void actPrintDeck()
Prints the deck using a preview dialog.
Definition abstract_tab_deck_editor.cpp:518
QMenu * viewMenu
Definition abstract_tab_deck_editor.h:308
bool confirmClose()
Confirms whether the tab can be safely closed.
Definition abstract_tab_deck_editor.cpp:617
void openDeck(const LoadedDeck &deck)
Opens a deck in this tab.
Definition abstract_tab_deck_editor.cpp:172
void actSaveDeckToClipboardRaw()
Saves deck to clipboard in raw format.
Definition abstract_tab_deck_editor.cpp:506
void openDeckEditor(const LoadedDeck &deck)
Emitted when a deck should be opened in a new editor tab.
void decrementCard(const ExactCard &card, const QString &zoneName)
Decrements a card from the given zone.
Definition abstract_tab_deck_editor.cpp:163
void filterTreeChanged(FilterTree *filterTree)
Called when the filter tree changes.
Definition abstract_tab_deck_editor.cpp:601
DeckEditorFilterDockWidget * filterDockWidget
Filter dock.
Definition abstract_tab_deck_editor.h:118
void actSaveDeckToClipboardNoSetInfo()
Saves deck to clipboard without set info.
Definition abstract_tab_deck_editor.cpp:500
virtual bool actSaveDeckAs()
Saves the current deck under a new name.
Definition abstract_tab_deck_editor.cpp:371
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize)
registers a QDockWidget as a managed dock widget. Creates the associated actions and menu,...
Definition abstract_tab_deck_editor.cpp:103
DeckEditorDeckDockWidget * deckDockWidget
Deck dock.
Definition abstract_tab_deck_editor.h:117
void actShareDeck()
Opens the deck share dialog for the current deck.
Definition abstract_tab_deck_editor.cpp:407
virtual void onDeckModified()
Called when the deck is modified.
Definition abstract_tab_deck_editor.cpp:152
void addCard(const ExactCard &card, const QString &zoneName)
Adds a card to the given zone.
Definition abstract_tab_deck_editor.cpp:158
void deckEditorClosing(AbstractTabDeckEditor *tab)
Emitted before the tab is closed.
virtual void actLoadDeckFromClipboard()
Loads a deck from the clipboard.
Definition abstract_tab_deck_editor.cpp:442
virtual void actNewDeck()
Starts a new deck in this tab.
Definition abstract_tab_deck_editor.cpp:195
virtual void setDeck(const LoadedDeck &_deck)
Sets the deck for this tab.
Definition abstract_tab_deck_editor.cpp:185
void actSaveDeckToClipboard()
Saves deck to clipboard with full info.
Definition abstract_tab_deck_editor.cpp:494
void actExportDeckDecklistXyz()
Exports the deck to decklist.xyz.
Definition abstract_tab_deck_editor.cpp:581
QAction * aResetLayout
Definition abstract_tab_deck_editor.h:310
void closeEvent(QCloseEvent *event) override
Handles dock close events.
Definition abstract_tab_deck_editor.cpp:610
Definition card_database_model.h:23
Definition deck_editor_card_database_dock_widget.h:12
Definition deck_editor_card_info_dock_widget.h:19
Definition deck_editor_deck_dock_widget.h:42
Definition deck_editor_filter_dock_widget.h:24
Definition deck_editor_menu.h:17
Definition deck_editor_printing_selector_dock_widget.h:19
DecklistWebsite
Definition deck_loader.h:48
This class centralizes the management of the state of the deck in the deck editor tab....
Definition deck_state_manager.h:32
Represents a specific card instance, defined by its CardInfo and a particular printing.
Definition exact_card.h:24
Definition filter_tree.h:240
Definition game.h:18
Definition tab_supervisor.h:92
Tab(TabSupervisor *_tabSupervisor)
Definition tab.cpp:16
The actions associated with managing a QDockWidget.
Definition abstract_tab_deck_editor.h:280
QSize defaultSize
The default size of the dock.
Definition abstract_tab_deck_editor.h:284
QAction * aFloating
The menu action that toggles floating.
Definition abstract_tab_deck_editor.h:283
QMenu * menu
The menu containing the actions.
Definition abstract_tab_deck_editor.h:281
QAction * aVisible
The menu action that toggles visibility.
Definition abstract_tab_deck_editor.h:282
Represents a deck that was loaded from somewhere. Contains the DeckList itself, as well as info about...
Definition loaded_deck.h:14
Definition response.proto:11