Cockatrice 2026-01-14-Development-2.11.0-beta.46
A cross-platform 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
11#include "../interface/widgets/deck_editor/deck_editor_card_database_dock_widget.h"
12#include "../interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h"
13#include "../interface/widgets/deck_editor/deck_editor_database_display_widget.h"
14#include "../interface/widgets/deck_editor/deck_editor_deck_dock_widget.h"
15#include "../interface/widgets/deck_editor/deck_editor_filter_dock_widget.h"
16#include "../interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h"
17#include "../interface/widgets/menus/deck_editor_menu.h"
18#include "../interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h"
19#include "tab.h"
20
22
26
28class DeckLoader;
29class DeckEditorMenu;
36class Response;
37class FilterTree;
38class FilterTreeModel;
39class FilterBuilder;
40
41class QTreeView;
42class QTextEdit;
43class QLabel;
44class QComboBox;
45class QGroupBox;
46class QMessageBox;
47class QHBoxLayout;
48class QVBoxLayout;
49class QPushButton;
50class QDockWidget;
51class QMenu;
52class QAction;
53
93{
94 Q_OBJECT
95
96 friend class DeckEditorMenu;
97
98public:
103 explicit AbstractTabDeckEditor(TabSupervisor *_tabSupervisor);
104
106 virtual void createMenus() = 0;
107
109 [[nodiscard]] virtual QString getTabText() const override = 0;
110
112 bool confirmClose();
113
115 virtual void retranslateUi() override = 0;
116
120 void openDeck(const LoadedDeck &deck);
121
126
127 // UI Elements
135
136public slots:
138 virtual void onDeckChanged();
139
141 virtual void onDeckModified();
142
146 void updateCard(const ExactCard &card);
147
149 void actAddCard(const ExactCard &card);
150
152 void actAddCardToSideboard(const ExactCard &card);
153
155 void actDecrementCard(const ExactCard &card);
156
159
161 void actOpenRecent(const QString &fileName);
162
164 void filterTreeChanged(FilterTree *filterTree);
165
167 bool closeRequest() override;
168
170 virtual void showPrintingSelector() = 0;
171
173 virtual void dockTopLevelChanged(bool topLevel) = 0;
174
175signals:
177 void openDeckEditor(const LoadedDeck &deck);
178
181
182protected slots:
184 virtual void actNewDeck();
185
188
190 virtual void actLoadDeck();
191
193 bool actSaveDeck();
194
196 virtual bool actSaveDeckAs();
197
199 virtual void actLoadDeckFromClipboard();
200
203
206
209
212
215
218
220 void actPrintDeck();
221
224
227
230
233
236
238 void saveDeckRemoteFinished(const Response &r);
239
240 // UI Layout Management
241 virtual void loadLayout() = 0;
242 virtual void restartLayout() = 0;
243 virtual void freeDocksSize() = 0;
244 virtual void refreshShortcuts() = 0;
245
247 void closeEvent(QCloseEvent *event) override;
248
250 virtual void dockVisibleTriggered() = 0;
251
253 virtual void dockFloatingTriggered() = 0;
254
255private:
259 virtual void setDeck(const LoadedDeck &_deck);
260
262 void editDeckInClipboard(bool annotated);
263
268
269protected:
277
282 {
283 QMenu *menu;
284 QAction *aVisible;
285 QAction *aFloating;
286 };
287
292 void registerDockWidget(QDockWidget *widget);
293
298 DeckOpenLocation confirmOpen(bool openInSameTabIfBlank = true);
299
303 QMessageBox *createSaveConfirmationWindow();
304
306 void addCardHelper(const ExactCard &card, const QString &zoneName);
307
309 virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation);
310
311 // UI Menu Elements
312 QMenu *viewMenu;
313
314 QAction *aResetLayout;
315
316 QMap<QDockWidget *, DockActions> dockToActions;
317};
318
319#endif // TAB_GENERIC_DECK_EDITOR_H
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:249
virtual QString getTabText() const override=0
Returns the display text for the tab.
void addCardHelper(const ExactCard &card, const QString &zoneName)
Helper function to add a card to a specific deck zone.
Definition abstract_tab_deck_editor.cpp:123
QMap< QDockWidget *, DockActions > dockToActions
Definition abstract_tab_deck_editor.h:316
void saveDeckRemoteFinished(const Response &r)
Callback when a remote deck save finishes.
Definition abstract_tab_deck_editor.cpp:395
DeckEditorDeckDockWidget * getDeckDockWidget() const
Definition abstract_tab_deck_editor.h:122
virtual void restartLayout()=0
void actLoadDeckFromWebsite()
Loads a deck from an online website.
Definition abstract_tab_deck_editor.cpp:491
bool actSaveDeck()
Saves the current deck.
Definition abstract_tab_deck_editor.cpp:318
virtual void loadLayout()=0
virtual void actLoadDeck()
Loads a deck from file.
Definition abstract_tab_deck_editor.cpp:263
DeckEditorCardInfoDockWidget * cardInfoDockWidget
Card info dock.
Definition abstract_tab_deck_editor.h:131
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:591
DeckEditorCardDatabaseDockWidget * cardDatabaseDockWidget
Database dock.
Definition abstract_tab_deck_editor.h:130
void actEditDeckInClipboardRaw()
Opens a raw clipboard deck editor.
Definition abstract_tab_deck_editor.cpp:450
void actSaveDeckToClipboardRawNoSetInfo()
Saves deck to clipboard in raw format without set info.
Definition abstract_tab_deck_editor.cpp:474
DeckEditorMenu * deckMenu
Menu for deck operations.
Definition abstract_tab_deck_editor.h:129
void updateCard(const ExactCard &card)
Updates the card info panel.
Definition abstract_tab_deck_editor.cpp:98
AbstractTabDeckEditor(TabSupervisor *_tabSupervisor)
Constructs an AbstractTabDeckEditor.
Definition abstract_tab_deck_editor.cpp:52
DeckOpenLocation
Enum describing deck open locations.
Definition abstract_tab_deck_editor.h:272
@ NEW_TAB
Open deck in a new tab.
Definition abstract_tab_deck_editor.h:275
@ SAME_TAB
Open deck in the same tab.
Definition abstract_tab_deck_editor.h:274
@ CANCELLED
Operation cancelled.
Definition abstract_tab_deck_editor.h:273
void exportToDecklistWebsite(DeckLoader::DecklistWebsite website)
Helper for exporting decks to websites.
Definition abstract_tab_deck_editor.cpp:515
virtual void showPrintingSelector()=0
Shows the printing selector dock. Pure virtual.
friend class DeckEditorMenu
Definition abstract_tab_deck_editor.h:96
virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation)
Opens a deck from a file.
Definition abstract_tab_deck_editor.cpp:295
virtual void onDeckChanged()
Called when the deck changes.
Definition abstract_tab_deck_editor.cpp:105
DeckOpenLocation confirmOpen(bool openInSameTabIfBlank=true)
Confirms deck open action based on settings and modified state.
Definition abstract_tab_deck_editor.cpp:215
void actAnalyzeDeckTappedout()
Analyzes the deck using tappedout.net.
Definition abstract_tab_deck_editor.cpp:554
void actDecrementCardFromSideboard(const ExactCard &card)
Decrements a card from the sideboard.
Definition abstract_tab_deck_editor.cpp:157
void editDeckInClipboard(bool annotated)
Helper for editing decks from the clipboard.
Definition abstract_tab_deck_editor.cpp:431
void actAddCard(const ExactCard &card)
Adds a card to the main deck or sideboard based on Ctrl key.
Definition abstract_tab_deck_editor.cpp:133
DeckStateManager * deckStateManager
Definition abstract_tab_deck_editor.h:128
DeckEditorPrintingSelectorDockWidget * printingSelectorDockWidget
Printing selector dock.
Definition abstract_tab_deck_editor.h:134
void actEditDeckInClipboard()
Opens a deck editor for clipboard contents.
Definition abstract_tab_deck_editor.cpp:444
void registerDockWidget(QDockWidget *widget)
registers a QDockWidget as a managed dock widget. Creates the associated actions and menu,...
Definition abstract_tab_deck_editor.cpp:80
void actAnalyzeDeckDeckstats()
Analyzes the deck using deckstats.net.
Definition abstract_tab_deck_editor.cpp:547
void actOpenRecent(const QString &fileName)
Opens a recently opened deck file.
Definition abstract_tab_deck_editor.cpp:281
void cleanDeckAndResetModified()
Cleans the current deck and resets the modified state.
Definition abstract_tab_deck_editor.cpp:204
void actPrintDeck()
Prints the deck using a preview dialog.
Definition abstract_tab_deck_editor.cpp:480
QMenu * viewMenu
Definition abstract_tab_deck_editor.h:312
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:166
void actSaveDeckToClipboardRaw()
Saves deck to clipboard in raw format.
Definition abstract_tab_deck_editor.cpp:468
virtual void dockVisibleTriggered()=0
Slot triggered when a dock visibility changes. Pure virtual.
void openDeckEditor(const LoadedDeck &deck)
Emitted when a deck should be opened in a new editor tab.
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:133
void actSaveDeckToClipboardNoSetInfo()
Saves deck to clipboard without set info.
Definition abstract_tab_deck_editor.cpp:462
virtual bool actSaveDeckAs()
Saves the current deck under a new name.
Definition abstract_tab_deck_editor.cpp:358
virtual void dockTopLevelChanged(bool topLevel)=0
Slot for when a dock's top-level state changes. Pure virtual.
DeckEditorDeckDockWidget * deckDockWidget
Deck dock.
Definition abstract_tab_deck_editor.h:132
virtual void onDeckModified()
Called when the deck is modified.
Definition abstract_tab_deck_editor.cpp:112
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:407
virtual void dockFloatingTriggered()=0
Slot triggered when a dock floating state changes. Pure virtual.
void actDecrementCard(const ExactCard &card)
Decrements a card from the main deck.
Definition abstract_tab_deck_editor.cpp:151
void actAddCardToSideboard(const ExactCard &card)
Adds a card to the sideboard explicitly.
Definition abstract_tab_deck_editor.cpp:144
virtual void actNewDeck()
Starts a new deck in this tab.
Definition abstract_tab_deck_editor.cpp:189
virtual void setDeck(const LoadedDeck &_deck)
Sets the deck for this tab.
Definition abstract_tab_deck_editor.cpp:179
virtual void freeDocksSize()=0
void actSaveDeckToClipboard()
Saves deck to clipboard with full info.
Definition abstract_tab_deck_editor.cpp:456
void actExportDeckDecklistXyz()
Exports the deck to decklist.xyz.
Definition abstract_tab_deck_editor.cpp:541
QAction * aResetLayout
Definition abstract_tab_deck_editor.h:314
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:27
Definition deck_editor_filter_dock_widget.h:19
Definition deck_editor_menu.h:14
Definition deck_editor_printing_selector_dock_widget.h:17
Definition deck_loader.h:20
DecklistWebsite
Definition deck_loader.h:38
Definition deck_preview_deck_tags_display_widget.h:17
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:224
Definition tab_supervisor.h:83
Tab(TabSupervisor *_tabSupervisor)
Definition tab.cpp:11
The actions associated with managing a QDockWidget.
Definition abstract_tab_deck_editor.h:282
QAction * aFloating
The menu action that toggles floating.
Definition abstract_tab_deck_editor.h:285
QMenu * menu
The menu containing the actions.
Definition abstract_tab_deck_editor.h:283
QAction * aVisible
The menu action that toggles visibility.
Definition abstract_tab_deck_editor.h:284
Represents a deck that was loaded from somewhere. Contains the DeckList itself, as well as info about...
Definition loaded_deck.h:14
TODO: Document this.