mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-06 05:23:56 -07:00
Add options to include/exclude set name and collector number during clipboard import/export. (#5482)
* Add options to include/exclude set name and collector number during clipboard import/export. * Missing parentheses in action label. * Revert the silliest lint in the world. --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
315c224f24
commit
80165c28a9
6 changed files with 108 additions and 17 deletions
|
|
@ -337,9 +337,17 @@ void TabDeckEditor::createMenus()
|
||||||
aSaveDeckToClipboard = new QAction(QString(), this);
|
aSaveDeckToClipboard = new QAction(QString(), this);
|
||||||
connect(aSaveDeckToClipboard, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboard()));
|
connect(aSaveDeckToClipboard, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboard()));
|
||||||
|
|
||||||
|
aSaveDeckToClipboardNoSetNameAndNumber = new QAction(QString(), this);
|
||||||
|
connect(aSaveDeckToClipboardNoSetNameAndNumber, SIGNAL(triggered()), this,
|
||||||
|
SLOT(actSaveDeckToClipboardNoSetNameAndNumber()));
|
||||||
|
|
||||||
aSaveDeckToClipboardRaw = new QAction(QString(), this);
|
aSaveDeckToClipboardRaw = new QAction(QString(), this);
|
||||||
connect(aSaveDeckToClipboardRaw, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboardRaw()));
|
connect(aSaveDeckToClipboardRaw, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboardRaw()));
|
||||||
|
|
||||||
|
aSaveDeckToClipboardRawNoSetNameAndNumber = new QAction(QString(), this);
|
||||||
|
connect(aSaveDeckToClipboardRawNoSetNameAndNumber, SIGNAL(triggered()), this,
|
||||||
|
SLOT(actSaveDeckToClipboardRawNoSetNameAndNumber()));
|
||||||
|
|
||||||
aPrintDeck = new QAction(QString(), this);
|
aPrintDeck = new QAction(QString(), this);
|
||||||
connect(aPrintDeck, SIGNAL(triggered()), this, SLOT(actPrintDeck()));
|
connect(aPrintDeck, SIGNAL(triggered()), this, SLOT(actPrintDeck()));
|
||||||
|
|
||||||
|
|
@ -370,7 +378,9 @@ void TabDeckEditor::createMenus()
|
||||||
|
|
||||||
saveDeckToClipboardMenu = new QMenu(this);
|
saveDeckToClipboardMenu = new QMenu(this);
|
||||||
saveDeckToClipboardMenu->addAction(aSaveDeckToClipboard);
|
saveDeckToClipboardMenu->addAction(aSaveDeckToClipboard);
|
||||||
|
saveDeckToClipboardMenu->addAction(aSaveDeckToClipboardNoSetNameAndNumber);
|
||||||
saveDeckToClipboardMenu->addAction(aSaveDeckToClipboardRaw);
|
saveDeckToClipboardMenu->addAction(aSaveDeckToClipboardRaw);
|
||||||
|
saveDeckToClipboardMenu->addAction(aSaveDeckToClipboardRawNoSetNameAndNumber);
|
||||||
|
|
||||||
deckMenu = new QMenu(this);
|
deckMenu = new QMenu(this);
|
||||||
deckMenu->addAction(aNewDeck);
|
deckMenu->addAction(aNewDeck);
|
||||||
|
|
@ -741,7 +751,9 @@ void TabDeckEditor::retranslateUi()
|
||||||
|
|
||||||
saveDeckToClipboardMenu->setTitle(tr("Save deck to clipboard"));
|
saveDeckToClipboardMenu->setTitle(tr("Save deck to clipboard"));
|
||||||
aSaveDeckToClipboard->setText(tr("Annotated"));
|
aSaveDeckToClipboard->setText(tr("Annotated"));
|
||||||
|
aSaveDeckToClipboardNoSetNameAndNumber->setText(tr("Annotated (No set name or number)"));
|
||||||
aSaveDeckToClipboardRaw->setText(tr("Not Annotated"));
|
aSaveDeckToClipboardRaw->setText(tr("Not Annotated"));
|
||||||
|
aSaveDeckToClipboardRawNoSetNameAndNumber->setText(tr("Not Annotated (No set name or number)"));
|
||||||
|
|
||||||
aPrintDeck->setText(tr("&Print deck..."));
|
aPrintDeck->setText(tr("&Print deck..."));
|
||||||
|
|
||||||
|
|
@ -1172,6 +1184,15 @@ void TabDeckEditor::actSaveDeckToClipboard()
|
||||||
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
|
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::actSaveDeckToClipboardNoSetNameAndNumber()
|
||||||
|
{
|
||||||
|
QString buffer;
|
||||||
|
QTextStream stream(&buffer);
|
||||||
|
deckModel->getDeckList()->saveToStream_Plain(stream, true, false);
|
||||||
|
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
|
||||||
|
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
|
||||||
|
}
|
||||||
|
|
||||||
void TabDeckEditor::actSaveDeckToClipboardRaw()
|
void TabDeckEditor::actSaveDeckToClipboardRaw()
|
||||||
{
|
{
|
||||||
QString buffer;
|
QString buffer;
|
||||||
|
|
@ -1181,6 +1202,15 @@ void TabDeckEditor::actSaveDeckToClipboardRaw()
|
||||||
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
|
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::actSaveDeckToClipboardRawNoSetNameAndNumber()
|
||||||
|
{
|
||||||
|
QString buffer;
|
||||||
|
QTextStream stream(&buffer);
|
||||||
|
deckModel->getDeckList()->saveToStream_Plain(stream, false, false);
|
||||||
|
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
|
||||||
|
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
|
||||||
|
}
|
||||||
|
|
||||||
void TabDeckEditor::actPrintDeck()
|
void TabDeckEditor::actPrintDeck()
|
||||||
{
|
{
|
||||||
auto *dlg = new QPrintPreviewDialog(this);
|
auto *dlg = new QPrintPreviewDialog(this);
|
||||||
|
|
@ -1723,7 +1753,9 @@ void TabDeckEditor::setSaveStatus(bool newStatus)
|
||||||
aSaveDeck->setEnabled(newStatus);
|
aSaveDeck->setEnabled(newStatus);
|
||||||
aSaveDeckAs->setEnabled(newStatus);
|
aSaveDeckAs->setEnabled(newStatus);
|
||||||
aSaveDeckToClipboard->setEnabled(newStatus);
|
aSaveDeckToClipboard->setEnabled(newStatus);
|
||||||
|
aSaveDeckToClipboardNoSetNameAndNumber->setEnabled(newStatus);
|
||||||
aSaveDeckToClipboardRaw->setEnabled(newStatus);
|
aSaveDeckToClipboardRaw->setEnabled(newStatus);
|
||||||
|
aSaveDeckToClipboardRawNoSetNameAndNumber->setEnabled(newStatus);
|
||||||
saveDeckToClipboardMenu->setEnabled(newStatus);
|
saveDeckToClipboardMenu->setEnabled(newStatus);
|
||||||
aPrintDeck->setEnabled(newStatus);
|
aPrintDeck->setEnabled(newStatus);
|
||||||
analyzeDeckMenu->setEnabled(newStatus);
|
analyzeDeckMenu->setEnabled(newStatus);
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,9 @@ private slots:
|
||||||
bool actSaveDeckAs();
|
bool actSaveDeckAs();
|
||||||
void actLoadDeckFromClipboard();
|
void actLoadDeckFromClipboard();
|
||||||
void actSaveDeckToClipboard();
|
void actSaveDeckToClipboard();
|
||||||
|
void actSaveDeckToClipboardNoSetNameAndNumber();
|
||||||
void actSaveDeckToClipboardRaw();
|
void actSaveDeckToClipboardRaw();
|
||||||
|
void actSaveDeckToClipboardRawNoSetNameAndNumber();
|
||||||
void actPrintDeck();
|
void actPrintDeck();
|
||||||
void actExportDeckDecklist();
|
void actExportDeckDecklist();
|
||||||
void actAnalyzeDeckDeckstats();
|
void actAnalyzeDeckDeckstats();
|
||||||
|
|
@ -145,7 +147,8 @@ private:
|
||||||
QMenu *deckMenu, *viewMenu, *cardInfoDockMenu, *deckDockMenu, *filterDockMenu, *printingSelectorDockMenu,
|
QMenu *deckMenu, *viewMenu, *cardInfoDockMenu, *deckDockMenu, *filterDockMenu, *printingSelectorDockMenu,
|
||||||
*analyzeDeckMenu, *saveDeckToClipboardMenu, *loadRecentDeckMenu;
|
*analyzeDeckMenu, *saveDeckToClipboardMenu, *loadRecentDeckMenu;
|
||||||
QAction *aNewDeck, *aLoadDeck, *aClearRecents, *aSaveDeck, *aSaveDeckAs, *aLoadDeckFromClipboard,
|
QAction *aNewDeck, *aLoadDeck, *aClearRecents, *aSaveDeck, *aSaveDeckAs, *aLoadDeckFromClipboard,
|
||||||
*aSaveDeckToClipboard, *aSaveDeckToClipboardRaw, *aPrintDeck, *aExportDeckDecklist, *aAnalyzeDeckDeckstats,
|
*aSaveDeckToClipboard, *aSaveDeckToClipboardNoSetNameAndNumber, *aSaveDeckToClipboardRaw,
|
||||||
|
*aSaveDeckToClipboardRawNoSetNameAndNumber, *aPrintDeck, *aExportDeckDecklist, *aAnalyzeDeckDeckstats,
|
||||||
*aAnalyzeDeckTappedout, *aClose;
|
*aAnalyzeDeckTappedout, *aClose;
|
||||||
QAction *aClearFilterAll, *aClearFilterOne;
|
QAction *aClearFilterAll, *aClearFilterOne;
|
||||||
QAction *aAddCard, *aAddCardToSideboard, *aRemoveCard, *aIncrement, *aDecrement, *aSwapCard;
|
QAction *aAddCard, *aAddCardToSideboard, *aRemoveCard, *aIncrement, *aDecrement, *aSwapCard;
|
||||||
|
|
|
||||||
|
|
@ -328,6 +328,37 @@ void DeckLoader::resolveSetNameAndNumberToProviderID()
|
||||||
forEachCard(setProviderId);
|
forEachCard(setProviderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This struct is here to support the forEachCard function call, defined in decklist.
|
||||||
|
// It requires a function to be called for each card, and it will set the providerId.
|
||||||
|
struct ClearSetNameAndNumber
|
||||||
|
{
|
||||||
|
// Main operator for struct, allowing the foreachcard to work.
|
||||||
|
ClearSetNameAndNumber()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator()(const InnerDecklistNode *node, DecklistCardNode *card) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(node);
|
||||||
|
// Set the providerId on the card
|
||||||
|
card->setCardSetShortName(nullptr);
|
||||||
|
card->setCardCollectorNumber(nullptr);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function iterates through each card in the decklist and sets the providerId
|
||||||
|
* on each card based on its set name and collector number.
|
||||||
|
*/
|
||||||
|
void DeckLoader::clearSetNamesAndNumbers()
|
||||||
|
{
|
||||||
|
// Set up the struct to call.
|
||||||
|
ClearSetNameAndNumber clearSetNameAndNumber;
|
||||||
|
|
||||||
|
// Call the forEachCard method for each card in the deck
|
||||||
|
forEachCard(clearSetNameAndNumber);
|
||||||
|
}
|
||||||
|
|
||||||
DeckLoader::FileFormat DeckLoader::getFormatFromName(const QString &fileName)
|
DeckLoader::FileFormat DeckLoader::getFormatFromName(const QString &fileName)
|
||||||
{
|
{
|
||||||
if (fileName.endsWith(".cod", Qt::CaseInsensitive)) {
|
if (fileName.endsWith(".cod", Qt::CaseInsensitive)) {
|
||||||
|
|
@ -336,7 +367,7 @@ DeckLoader::FileFormat DeckLoader::getFormatFromName(const QString &fileName)
|
||||||
return PlainTextFormat;
|
return PlainTextFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments)
|
bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments, bool addSetNameAndNumber)
|
||||||
{
|
{
|
||||||
if (addComments) {
|
if (addComments) {
|
||||||
saveToStream_DeckHeader(out);
|
saveToStream_DeckHeader(out);
|
||||||
|
|
@ -346,7 +377,7 @@ bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments)
|
||||||
for (int i = 0; i < getRoot()->size(); i++) {
|
for (int i = 0; i < getRoot()->size(); i++) {
|
||||||
const auto *zoneNode = dynamic_cast<InnerDecklistNode *>(getRoot()->at(i));
|
const auto *zoneNode = dynamic_cast<InnerDecklistNode *>(getRoot()->at(i));
|
||||||
|
|
||||||
saveToStream_DeckZone(out, zoneNode, addComments);
|
saveToStream_DeckZone(out, zoneNode, addComments, addSetNameAndNumber);
|
||||||
|
|
||||||
// end of zone
|
// end of zone
|
||||||
out << "\n";
|
out << "\n";
|
||||||
|
|
@ -370,7 +401,10 @@ void DeckLoader::saveToStream_DeckHeader(QTextStream &out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckLoader::saveToStream_DeckZone(QTextStream &out, const InnerDecklistNode *zoneNode, bool addComments)
|
void DeckLoader::saveToStream_DeckZone(QTextStream &out,
|
||||||
|
const InnerDecklistNode *zoneNode,
|
||||||
|
bool addComments,
|
||||||
|
bool addSetNameAndNumber)
|
||||||
{
|
{
|
||||||
// group cards by card type and count the subtotals
|
// group cards by card type and count the subtotals
|
||||||
QMultiMap<QString, DecklistCardNode *> cardsByType;
|
QMultiMap<QString, DecklistCardNode *> cardsByType;
|
||||||
|
|
@ -406,7 +440,7 @@ void DeckLoader::saveToStream_DeckZone(QTextStream &out, const InnerDecklistNode
|
||||||
|
|
||||||
QList<DecklistCardNode *> cards = cardsByType.values(cardType);
|
QList<DecklistCardNode *> cards = cardsByType.values(cardType);
|
||||||
|
|
||||||
saveToStream_DeckZoneCards(out, zoneNode, cards, addComments);
|
saveToStream_DeckZoneCards(out, zoneNode, cards, addComments, addSetNameAndNumber);
|
||||||
|
|
||||||
if (addComments) {
|
if (addComments) {
|
||||||
out << "\n";
|
out << "\n";
|
||||||
|
|
@ -417,7 +451,8 @@ void DeckLoader::saveToStream_DeckZone(QTextStream &out, const InnerDecklistNode
|
||||||
void DeckLoader::saveToStream_DeckZoneCards(QTextStream &out,
|
void DeckLoader::saveToStream_DeckZoneCards(QTextStream &out,
|
||||||
const InnerDecklistNode *zoneNode,
|
const InnerDecklistNode *zoneNode,
|
||||||
QList<DecklistCardNode *> cards,
|
QList<DecklistCardNode *> cards,
|
||||||
bool addComments)
|
bool addComments,
|
||||||
|
bool addSetNameAndNumber)
|
||||||
{
|
{
|
||||||
// QMultiMap sorts values in reverse order
|
// QMultiMap sorts values in reverse order
|
||||||
for (int i = cards.size() - 1; i >= 0; --i) {
|
for (int i = cards.size() - 1; i >= 0; --i) {
|
||||||
|
|
@ -433,12 +468,14 @@ void DeckLoader::saveToStream_DeckZoneCards(QTextStream &out,
|
||||||
if (!card->getName().isNull() && !card->getName().isEmpty()) {
|
if (!card->getName().isNull() && !card->getName().isEmpty()) {
|
||||||
out << " " << card->getName();
|
out << " " << card->getName();
|
||||||
}
|
}
|
||||||
if (!card->getCardSetShortName().isNull() && !card->getCardSetShortName().isEmpty()) {
|
if (addSetNameAndNumber) {
|
||||||
out << " "
|
if (!card->getCardSetShortName().isNull() && !card->getCardSetShortName().isEmpty()) {
|
||||||
<< "(" << card->getCardSetShortName() << ")";
|
out << " "
|
||||||
}
|
<< "(" << card->getCardSetShortName() << ")";
|
||||||
if (!card->getCardCollectorNumber().isNull()) {
|
}
|
||||||
out << " " << card->getCardCollectorNumber();
|
if (!card->getCardCollectorNumber().isNull()) {
|
||||||
|
out << " " << card->getCardCollectorNumber();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
out << "\n";
|
out << "\n";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ public:
|
||||||
return lastRemoteDeckId;
|
return lastRemoteDeckId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clearSetNamesAndNumbers();
|
||||||
static FileFormat getFormatFromName(const QString &fileName);
|
static FileFormat getFormatFromName(const QString &fileName);
|
||||||
|
|
||||||
bool loadFromFile(const QString &fileName, FileFormat fmt, bool userRequest = false);
|
bool loadFromFile(const QString &fileName, FileFormat fmt, bool userRequest = false);
|
||||||
|
|
@ -57,15 +58,19 @@ public:
|
||||||
void resolveSetNameAndNumberToProviderID();
|
void resolveSetNameAndNumberToProviderID();
|
||||||
|
|
||||||
// overload
|
// overload
|
||||||
bool saveToStream_Plain(QTextStream &out, bool addComments = true);
|
bool saveToStream_Plain(QTextStream &out, bool addComments = true, bool addSetNameAndNumber = true);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void saveToStream_DeckHeader(QTextStream &out);
|
void saveToStream_DeckHeader(QTextStream &out);
|
||||||
void saveToStream_DeckZone(QTextStream &out, const InnerDecklistNode *zoneNode, bool addComments = true);
|
void saveToStream_DeckZone(QTextStream &out,
|
||||||
|
const InnerDecklistNode *zoneNode,
|
||||||
|
bool addComments = true,
|
||||||
|
bool addSetNameAndNumber = true);
|
||||||
void saveToStream_DeckZoneCards(QTextStream &out,
|
void saveToStream_DeckZoneCards(QTextStream &out,
|
||||||
const InnerDecklistNode *zoneNode,
|
const InnerDecklistNode *zoneNode,
|
||||||
QList<DecklistCardNode *> cards,
|
QList<DecklistCardNode *> cards,
|
||||||
bool addComments = true);
|
bool addComments = true,
|
||||||
|
bool addSetNameAndNumber = true);
|
||||||
[[nodiscard]] QString getCardZoneFromName(QString cardName, QString currentZoneName) override;
|
[[nodiscard]] QString getCardZoneFromName(QString cardName, QString currentZoneName) override;
|
||||||
[[nodiscard]] QString getCompleteCardName(const QString &cardName) const override;
|
[[nodiscard]] QString getCompleteCardName(const QString &cardName) const override;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include "../settings/cache_settings.h"
|
#include "../settings/cache_settings.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QCheckBox>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
@ -24,9 +25,16 @@ DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent) : QDialog(pa
|
||||||
connect(buttonBox, SIGNAL(accepted()), this, SLOT(actOK()));
|
connect(buttonBox, SIGNAL(accepted()), this, SLOT(actOK()));
|
||||||
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
||||||
|
|
||||||
|
loadSetNameAndNumberCheckBox = new QCheckBox(tr("Parse Set Name and Number (if available)"));
|
||||||
|
loadSetNameAndNumberCheckBox->setChecked(true);
|
||||||
|
|
||||||
|
auto *buttonLayout = new QHBoxLayout;
|
||||||
|
buttonLayout->addWidget(loadSetNameAndNumberCheckBox);
|
||||||
|
buttonLayout->addWidget(buttonBox);
|
||||||
|
|
||||||
auto *mainLayout = new QVBoxLayout;
|
auto *mainLayout = new QVBoxLayout;
|
||||||
mainLayout->addWidget(contentsEdit);
|
mainLayout->addWidget(contentsEdit);
|
||||||
mainLayout->addWidget(buttonBox);
|
mainLayout->addLayout(buttonLayout);
|
||||||
|
|
||||||
setLayout(mainLayout);
|
setLayout(mainLayout);
|
||||||
|
|
||||||
|
|
@ -65,7 +73,11 @@ void DlgLoadDeckFromClipboard::actOK()
|
||||||
}
|
}
|
||||||
} else if (deckLoader->loadFromStream_Plain(stream)) {
|
} else if (deckLoader->loadFromStream_Plain(stream)) {
|
||||||
deckList = deckLoader;
|
deckList = deckLoader;
|
||||||
deckList->resolveSetNameAndNumberToProviderID();
|
if (loadSetNameAndNumberCheckBox->isChecked()) {
|
||||||
|
deckList->resolveSetNameAndNumberToProviderID();
|
||||||
|
} else {
|
||||||
|
deckList->clearSetNamesAndNumbers();
|
||||||
|
}
|
||||||
accept();
|
accept();
|
||||||
} else {
|
} else {
|
||||||
QMessageBox::critical(this, tr("Error"), tr("Invalid deck list."));
|
QMessageBox::critical(this, tr("Error"), tr("Invalid deck list."));
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef DLG_LOAD_DECK_FROM_CLIPBOARD_H
|
#ifndef DLG_LOAD_DECK_FROM_CLIPBOARD_H
|
||||||
#define DLG_LOAD_DECK_FROM_CLIPBOARD_H
|
#define DLG_LOAD_DECK_FROM_CLIPBOARD_H
|
||||||
|
|
||||||
|
#include <QCheckBox>
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
class DeckLoader;
|
class DeckLoader;
|
||||||
|
|
@ -19,6 +20,7 @@ private:
|
||||||
DeckLoader *deckList;
|
DeckLoader *deckList;
|
||||||
QPlainTextEdit *contentsEdit;
|
QPlainTextEdit *contentsEdit;
|
||||||
QPushButton *refreshButton;
|
QPushButton *refreshButton;
|
||||||
|
QCheckBox *loadSetNameAndNumberCheckBox;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DlgLoadDeckFromClipboard(QWidget *parent = nullptr);
|
explicit DlgLoadDeckFromClipboard(QWidget *parent = nullptr);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue