Cockatrice 2026-09-01-Development-3.1.0-beta.10
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
12#include "../interface/widgets/deck_editor/deck_editor_card_database_dock_widget.h"
13#include "../interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h"
14#include "../interface/widgets/deck_editor/deck_editor_database_display_widget.h"
15#include "../interface/widgets/deck_editor/deck_editor_deck_dock_widget.h"
16#include "../interface/widgets/deck_editor/deck_editor_filter_dock_widget.h"
17#include "../interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h"
18#include "../interface/widgets/menus/deck_editor_menu.h"
19#include "../interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h"
20#include "tab.h"
21
23
27
29class DeckLoader;
30class DeckEditorMenu;
37class Response;
38class FilterTree;
39class FilterTreeModel;
40class FilterBuilder;
41
42class QTreeView;
43class QTextEdit;
44class QLabel;
45class QComboBox;
46class QGroupBox;
47class QMessageBox;
48class QHBoxLayout;
49class QVBoxLayout;
50class QPushButton;
51class QDockWidget;
52class QMenu;
53class QAction;
54
94{
95 Q_OBJECT
96
97 friend class DeckEditorMenu;
98
99public:
104 explicit AbstractTabDeckEditor(TabSupervisor *_tabSupervisor);
105
107 virtual void createMenus() = 0;
108
110 [[nodiscard]] virtual QString getTabText() const override = 0;
111
113 bool confirmClose();
114
116 virtual void retranslateUi() override = 0;
117
121 void openDeck(const LoadedDeck &deck);
122
127
128 // UI Elements
137
138public slots:
140 virtual void onDeckChanged();
141
143 virtual void onDeckModified();
144
149 void updateCard(const ExactCard &card);
150
155 void updateCardInfo(const ExactCard &card);
156
162 void addCard(const ExactCard &card, const QString &zoneName);
163
173 void decrementCard(const ExactCard &card, const QString &zoneName);
174
176 void actOpenRecent(const QString &fileName);
177
179 void filterTreeChanged(FilterTree *filterTree);
180
182 bool closeRequest() override;
183
186
192 void openEdhrecTab(const CardInfoPtr &info, bool isCommander);
193
194signals:
196 void openDeckEditor(const LoadedDeck &deck);
197
200
201protected slots:
203 virtual void actNewDeck();
204
207
209 virtual void actLoadDeck();
210
212 bool actSaveDeck();
213
215 virtual bool actSaveDeckAs();
216
218 virtual void actLoadDeckFromClipboard();
219
222
225
228
231
234
237
239 void actPrintDeck();
240
243
246
249
252
255
257 void saveDeckRemoteFinished(const Response &r);
258
259 // UI Layout Management
260 virtual void loadLayout() = 0;
261 virtual void restartLayout() = 0;
262 virtual void refreshShortcuts() = 0;
263
265 void closeEvent(QCloseEvent *event) override;
266
270 virtual void setDeck(const LoadedDeck &_deck);
271
272private:
274 void editDeckInClipboard(bool annotated);
275
280
281protected:
289
294 {
295 QMenu *menu;
296 QAction *aVisible;
297 QAction *aFloating;
299 };
300
305 void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize);
306
311 DeckOpenLocation confirmOpen(bool openInSameTabIfBlank = true);
312
316 QMessageBox *createSaveConfirmationWindow();
317
319 virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation);
320
321 // UI Menu Elements
322 QMenu *viewMenu;
323
324 QAction *aResetLayout;
325
326 QMap<QDockWidget *, DockActions> dockToActions;
327};
328
329#endif // TAB_GENERIC_DECK_EDITOR_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:19
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:241
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:121
QMap< QDockWidget *, DockActions > dockToActions
Definition abstract_tab_deck_editor.h:326
void saveDeckRemoteFinished(const Response &r)
Callback when a remote deck save finishes.
Definition abstract_tab_deck_editor.cpp:389
DeckEditorDeckDockWidget * getDeckDockWidget() const
Definition abstract_tab_deck_editor.h:123
virtual void restartLayout()=0
void actLoadDeckFromWebsite()
Loads a deck from an online website.
Definition abstract_tab_deck_editor.cpp:489
bool actSaveDeck()
Saves the current deck.
Definition abstract_tab_deck_editor.cpp:313
virtual void loadLayout()=0
virtual void actLoadDeck()
Loads a deck from file.
Definition abstract_tab_deck_editor.cpp:255
DeckEditorCardInfoDockWidget * cardInfoDockWidget
Card info dock.
Definition abstract_tab_deck_editor.h:133
virtual void refreshShortcuts()=0
void actExportDeckDecklist()
Exports the deck to decklist.org.
Definition abstract_tab_deck_editor.cpp:535
virtual void retranslateUi() override=0
Retranslates the UI text. Pure virtual.
bool closeRequest() override
Requests closing the tab.
Definition abstract_tab_deck_editor.cpp:592
void showPrintingSelector()
Shows the printing selector dock and updates it with the current card.
Definition abstract_tab_deck_editor.cpp:600
DeckEditorCardDatabaseDockWidget * cardDatabaseDockWidget
Database dock.
Definition abstract_tab_deck_editor.h:132
void actEditDeckInClipboardRaw()
Opens a raw clipboard deck editor.
Definition abstract_tab_deck_editor.cpp:448
void actSaveDeckToClipboardRawNoSetInfo()
Saves deck to clipboard in raw format without set info.
Definition abstract_tab_deck_editor.cpp:472
DeckEditorMenu * deckMenu
Menu for deck operations.
Definition abstract_tab_deck_editor.h:131
void updateCard(const ExactCard &card)
Updates the card info dock and printing selector.
Definition abstract_tab_deck_editor.cpp:115
CardDatabaseModel * databaseModel
Card database.
Definition abstract_tab_deck_editor.h:130
AbstractTabDeckEditor(TabSupervisor *_tabSupervisor)
Constructs an AbstractTabDeckEditor.
Definition abstract_tab_deck_editor.cpp:57
DeckOpenLocation
Enum describing deck open locations.
Definition abstract_tab_deck_editor.h:284
@ NEW_TAB
Open deck in a new tab.
Definition abstract_tab_deck_editor.h:287
@ SAME_TAB
Open deck in the same tab.
Definition abstract_tab_deck_editor.h:286
@ CANCELLED
Operation cancelled.
Definition abstract_tab_deck_editor.h:285
void exportToDecklistWebsite(DeckLoader::DecklistWebsite website)
Helper for exporting decks to websites.
Definition abstract_tab_deck_editor.cpp:515
friend class DeckEditorMenu
Definition abstract_tab_deck_editor.h:97
virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation)
Opens a deck from a file.
Definition abstract_tab_deck_editor.cpp:290
virtual void onDeckChanged()
Called when the deck changes.
Definition abstract_tab_deck_editor.cpp:127
DeckOpenLocation confirmOpen(bool openInSameTabIfBlank=true)
Confirms deck open action based on settings and modified state.
Definition abstract_tab_deck_editor.cpp:204
void actAnalyzeDeckTappedout()
Analyzes the deck using tappedout.net.
Definition abstract_tab_deck_editor.cpp:554
void editDeckInClipboard(bool annotated)
Helper for editing decks from the clipboard.
Definition abstract_tab_deck_editor.cpp:428
DeckStateManager * deckStateManager
Definition abstract_tab_deck_editor.h:129
DeckEditorPrintingSelectorDockWidget * printingSelectorDockWidget
Printing selector dock.
Definition abstract_tab_deck_editor.h:136
void actEditDeckInClipboard()
Opens a deck editor for clipboard contents.
Definition abstract_tab_deck_editor.cpp:442
void actAnalyzeDeckDeckstats()
Analyzes the deck using deckstats.net.
Definition abstract_tab_deck_editor.cpp:547
void openEdhrecTab(const CardInfoPtr &info, bool isCommander)
Opens an EDHRec tab for the given card.
Definition abstract_tab_deck_editor.cpp:607
void actOpenRecent(const QString &fileName)
Opens a recently opened deck file.
Definition abstract_tab_deck_editor.cpp:275
void cleanDeckAndResetModified()
Cleans the current deck and resets the modified state.
Definition abstract_tab_deck_editor.cpp:193
void actPrintDeck()
Prints the deck using a preview dialog.
Definition abstract_tab_deck_editor.cpp:478
QMenu * viewMenu
Definition abstract_tab_deck_editor.h:322
bool confirmClose()
Confirms whether the tab can be safely closed.
Definition abstract_tab_deck_editor.cpp:577
void openDeck(const LoadedDeck &deck)
Opens a deck in this tab.
Definition abstract_tab_deck_editor.cpp:154
void actSaveDeckToClipboardRaw()
Saves deck to clipboard in raw format.
Definition abstract_tab_deck_editor.cpp:466
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:145
void filterTreeChanged(FilterTree *filterTree)
Called when the filter tree changes.
Definition abstract_tab_deck_editor.cpp:561
DeckEditorFilterDockWidget * filterDockWidget
Filter dock.
Definition abstract_tab_deck_editor.h:135
void actSaveDeckToClipboardNoSetInfo()
Saves deck to clipboard without set info.
Definition abstract_tab_deck_editor.cpp:460
virtual bool actSaveDeckAs()
Saves the current deck under a new name.
Definition abstract_tab_deck_editor.cpp:352
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:85
DeckEditorDeckDockWidget * deckDockWidget
Deck dock.
Definition abstract_tab_deck_editor.h:134
virtual void onDeckModified()
Called when the deck is modified.
Definition abstract_tab_deck_editor.cpp:134
void addCard(const ExactCard &card, const QString &zoneName)
Adds a card to the given zone.
Definition abstract_tab_deck_editor.cpp:140
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:402
virtual void actNewDeck()
Starts a new deck in this tab.
Definition abstract_tab_deck_editor.cpp:177
virtual void setDeck(const LoadedDeck &_deck)
Sets the deck for this tab.
Definition abstract_tab_deck_editor.cpp:167
void actSaveDeckToClipboard()
Saves deck to clipboard with full info.
Definition abstract_tab_deck_editor.cpp:454
void actExportDeckDecklistXyz()
Exports the deck to decklist.xyz.
Definition abstract_tab_deck_editor.cpp:541
QAction * aResetLayout
Definition abstract_tab_deck_editor.h:324
void closeEvent(QCloseEvent *event) override
Handles dock close events.
Definition abstract_tab_deck_editor.cpp:570
Definition card_database_display_model.h:17
Definition card_database_model.h:16
Definition card_info_frame_widget.h:22
Definition deck_editor_card_database_dock_widget.h:14
Definition deck_editor_card_info_dock_widget.h:18
Definition deck_editor_deck_dock_widget.h:32
Definition deck_editor_filter_dock_widget.h:19
Definition deck_editor_menu.h:14
Definition deck_editor_printing_selector_dock_widget.h:19
Definition deck_loader.h:21
DecklistWebsite
Definition deck_loader.h:38
Definition deck_preview_deck_tags_display_widget.h:16
This class centralizes the management of the state of the deck in the deck editor tab....
Definition deck_state_manager.h:22
Represents a specific card instance, defined by its CardInfo and a particular printing.
Definition exact_card.h:19
Definition filter_builder.h:18
Definition filter_tree_model.h:18
Definition filter_tree.h:229
Definition tab_supervisor.h:84
Tab(TabSupervisor *_tabSupervisor)
Definition tab.cpp:11
The actions associated with managing a QDockWidget.
Definition abstract_tab_deck_editor.h:294
QSize defaultSize
The default size of the dock.
Definition abstract_tab_deck_editor.h:298
QAction * aFloating
The menu action that toggles floating.
Definition abstract_tab_deck_editor.h:297
QMenu * menu
The menu containing the actions.
Definition abstract_tab_deck_editor.h:295
QAction * aVisible
The menu action that toggles visibility.
Definition abstract_tab_deck_editor.h:296
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