Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
3af58040
Commit
3af58040
authored
Jun 13, 2015
by
Fabio Bas
Browse files
Reworked deck editor
parent
50b908c7
Changes
13
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/carddatabase.cpp
View file @
3af58040
...
...
@@ -587,7 +587,7 @@ void CardInfo::imageLoaded(const QImage &image)
void
CardInfo
::
getPixmap
(
QSize
size
,
QPixmap
&
pixmap
)
{
QString
key
=
QLatin1String
(
"card_"
)
+
name
+
QLatin1Char
(
'_'
)
+
QString
::
number
(
size
.
width
());
QString
key
=
QLatin1String
(
"card_"
)
+
name
+
QLatin1Char
(
'_'
)
+
QString
::
number
(
size
.
width
())
+
QString
::
number
(
size
.
height
())
;
if
(
QPixmapCache
::
find
(
key
,
&
pixmap
))
return
;
...
...
@@ -598,15 +598,15 @@ void CardInfo::getPixmap(QSize size, QPixmap &pixmap)
pixmap
=
QPixmap
();
// null
return
;
}
else
{
pixmap
=
QPixmap
(
size
);
pixmap
.
fill
(
Qt
::
transparent
);
QSvgRenderer
svg
(
QString
(
":/back.svg"
));
QPainter
painter
(
&
pixmap
);
svg
.
render
(
&
painter
,
QRectF
(
0
,
0
,
size
.
width
(),
size
.
height
()));
bigPixmap
=
QPixmap
(
svg
.
defaultSize
());
bigPixmap
.
fill
(
Qt
::
transparent
);
QPainter
painter
(
&
bigPixmap
);
svg
.
render
(
&
painter
);
}
}
else
{
pixmap
=
bigPixmap
.
scaled
(
size
,
Qt
::
IgnoreAspectRatio
,
Qt
::
SmoothTransformation
);
}
pixmap
=
bigPixmap
.
scaled
(
size
,
Qt
::
KeepAspectRatio
,
Qt
::
SmoothTransformation
);
QPixmapCache
::
insert
(
key
,
pixmap
);
}
...
...
cockatrice/src/carddatabasemodel.cpp
View file @
3af58040
...
...
@@ -183,7 +183,7 @@ bool CardDatabaseDisplayModel::filterAcceptsRow(int sourceRow, const QModelIndex
return
true
;
}
void
CardDatabaseDisplayModel
::
clear
Search
()
void
CardDatabaseDisplayModel
::
clear
FilterAll
()
{
cardName
.
clear
();
cardText
.
clear
();
...
...
cockatrice/src/carddatabasemodel.h
View file @
3af58040
...
...
@@ -53,7 +53,7 @@ public:
void
setCardText
(
const
QString
&
_cardText
)
{
cardText
=
_cardText
;
invalidate
();
}
void
setCardTypes
(
const
QSet
<
QString
>
&
_cardTypes
)
{
cardTypes
=
_cardTypes
;
invalidate
();
}
void
setCardColors
(
const
QSet
<
QString
>
&
_cardColors
)
{
cardColors
=
_cardColors
;
invalidate
();
}
void
clear
Search
();
void
clear
FilterAll
();
protected:
bool
lessThan
(
const
QModelIndex
&
left
,
const
QModelIndex
&
right
)
const
;
bool
filterAcceptsRow
(
int
sourceRow
,
const
QModelIndex
&
sourceParent
)
const
;
...
...
cockatrice/src/cardframe.cpp
View file @
3af58040
...
...
@@ -5,26 +5,76 @@
#include
"main.h"
#include
"cardinfopicture.h"
#include
"cardinfotext.h"
#include
"settingscache.h"
#include
<QVBoxLayout>
#include
<QTabBar>
CardFrame
::
CardFrame
(
int
width
,
int
height
,
const
QString
&
cardName
,
QWidget
*
parent
)
:
Q
StackedWidget
(
parent
)
:
Q
Frame
(
parent
)
,
info
(
0
)
,
cardTextOnly
(
false
)
{
setFrameStyle
(
QFrame
::
Panel
|
QFrame
::
Raised
);
setMaximumWidth
(
width
);
setMinimumWidth
(
width
);
setMaximumHeight
(
height
);
setMinimumHeight
(
height
);
pic
=
new
CardInfoPicture
(
width
);
addWidget
(
pic
);
text
=
new
CardInfoText
();
addWidget
(
text
);
connect
(
pic
,
SIGNAL
(
hasPictureChanged
()),
this
,
SLOT
(
hasPictureChanged
()));
tabBar
=
new
QTabBar
(
this
);
tabBar
->
setDrawBase
(
false
);
tabBar
->
insertTab
(
ImageOnlyView
,
QString
());
tabBar
->
insertTab
(
TextOnlyView
,
QString
());
tabBar
->
insertTab
(
ImageAndTextView
,
QString
());
connect
(
tabBar
,
SIGNAL
(
currentChanged
(
int
)),
this
,
SLOT
(
setViewMode
(
int
)));
QVBoxLayout
*
layout
=
new
QVBoxLayout
();
layout
->
addWidget
(
tabBar
);
layout
->
addWidget
(
pic
);
layout
->
addWidget
(
text
);
layout
->
setContentsMargins
(
0
,
0
,
0
,
0
);
layout
->
setSpacing
(
0
);
setLayout
(
layout
);
setViewMode
(
settingsCache
->
getCardInfoViewMode
());
setCard
(
db
->
getCard
(
cardName
));
}
void
CardFrame
::
retranslateUi
()
{
tabBar
->
setTabText
(
ImageOnlyView
,
tr
(
"Image"
));
tabBar
->
setTabText
(
TextOnlyView
,
tr
(
"Description"
));
tabBar
->
setTabText
(
ImageAndTextView
,
tr
(
"Both"
));
}
void
CardFrame
::
setViewMode
(
int
mode
)
{
if
(
tabBar
->
currentIndex
()
!=
mode
)
tabBar
->
setCurrentIndex
(
mode
);
switch
(
mode
)
{
case
ImageOnlyView
:
pic
->
setVisible
(
true
);
text
->
setVisible
(
false
);
break
;
case
TextOnlyView
:
pic
->
setVisible
(
false
);
text
->
setVisible
(
true
);
break
;
case
ImageAndTextView
:
pic
->
setVisible
(
true
);
text
->
setVisible
(
true
);
break
;
}
settingsCache
->
setCardInfoViewMode
(
mode
);
}
void
CardFrame
::
setCard
(
CardInfo
*
card
)
{
if
(
info
)
...
...
@@ -49,11 +99,3 @@ void CardFrame::clear()
{
setCard
(
db
->
getCard
());
}
void
CardFrame
::
hasPictureChanged
()
{
if
(
pic
->
hasPicture
()
&&
!
cardTextOnly
)
setCurrentWidget
(
pic
);
else
setCurrentWidget
(
text
);
}
cockatrice/src/cardframe.h
View file @
3af58040
#ifndef CARDFRAME_H
#define CARDFRAME_H
#include
<Q
StackedWidget
>
#include
<Q
Frame
>
class
AbstractCardItem
;
class
CardInfo
;
class
CardInfoPicture
;
class
CardInfoText
;
class
QTabBar
;
class
CardFrame
:
public
Q
StackedWidget
{
class
CardFrame
:
public
Q
Frame
{
Q_OBJECT
private:
QTabBar
*
tabBar
;
CardInfo
*
info
;
CardInfoPicture
*
pic
;
CardInfoText
*
text
;
bool
cardTextOnly
;
public:
enum
ViewMode
{
ImageOnlyView
,
TextOnlyView
,
ImageAndTextView
};
CardFrame
(
int
width
,
int
height
,
const
QString
&
cardName
=
QString
(),
QWidget
*
parent
=
0
);
void
setCardTextOnly
(
bool
status
)
{
cardTextOnly
=
status
;
hasPictureChanged
();
}
void
retranslateUi
();
public
slots
:
void
setCard
(
CardInfo
*
card
);
void
setCard
(
const
QString
&
cardName
);
void
setCard
(
AbstractCardItem
*
card
);
void
clear
();
private
slots
:
void
hasPictureChanged
();
void
toggleCardTextOnly
()
{
setCardTextOnly
(
!
cardTextOnly
);
}
void
setViewMode
(
int
mode
);
};
#endif
cockatrice/src/cardinfopicture.cpp
View file @
3af58040
...
...
@@ -10,6 +10,7 @@ CardInfoPicture::CardInfoPicture(int maximumWidth, QWidget *parent)
,
info
(
0
)
,
noPicture
(
true
)
{
setAlignment
(
Qt
::
AlignCenter
);
setMaximumWidth
(
maximumWidth
);
}
...
...
@@ -31,22 +32,24 @@ void CardInfoPicture::setCard(CardInfo *card)
updatePixmap
();
}
void
CardInfoPicture
::
updatePixmap
(
)
void
CardInfoPicture
::
resizeEvent
(
QResizeEvent
*
/* e */
)
{
qreal
aspectRatio
=
(
qreal
)
CARD_HEIGHT
/
(
qreal
)
CARD_WIDTH
;
qreal
pixmapWidth
=
this
->
width
();
updatePixmap
()
;
}
if
(
pixmapWidth
==
0
)
{
void
CardInfoPicture
::
updatePixmap
()
{
if
(
info
==
0
||
width
()
==
0
||
height
()
==
0
)
{
setNoPicture
(
true
);
return
;
}
QPixmap
resizedPixmap
;
info
->
getPixmap
(
QS
ize
(
pixmapWidth
,
pixmapWidth
*
aspectRatio
),
resizedPixmap
);
info
->
getPixmap
(
s
ize
(),
resizedPixmap
);
if
(
resizedPixmap
.
isNull
())
{
setNoPicture
(
true
);
db
->
getCard
()
->
getPixmap
(
QS
ize
(
pixmapWidth
,
pixmapWidth
*
aspectRatio
),
resizedPixmap
);
db
->
getCard
()
->
getPixmap
(
s
ize
(),
resizedPixmap
);
}
else
{
setNoPicture
(
false
);
}
...
...
cockatrice/src/cardinfopicture.h
View file @
3af58040
...
...
@@ -19,16 +19,14 @@ private:
public:
CardInfoPicture
(
int
maximumWidth
,
QWidget
*
parent
=
0
);
bool
hasPicture
()
const
{
return
!
noPicture
;
}
private:
void
setNoPicture
(
bool
status
);
protected:
void
resizeEvent
(
QResizeEvent
*
event
);
public
slots
:
void
setCard
(
CardInfo
*
card
);
private
slots
:
void
updatePixmap
();
};
#endif
cockatrice/src/filterbuilder.cpp
View file @
3af58040
#include
"filterbuilder.h"
#include
<Q
HBox
Layout>
#include
<Q
Grid
Layout>
#include
<QComboBox>
#include
<QPushButton>
#include
<QLineEdit>
...
...
@@ -8,41 +8,36 @@
#include
"cardfilter.h"
FilterBuilder
::
FilterBuilder
(
QWidget
*
parent
)
:
Q
Frame
(
parent
)
:
Q
Widget
(
parent
)
{
int
i
;
QVBoxLayout
*
layout
=
new
QVBoxLayout
;
QHBoxLayout
*
addFilter
=
new
QHBoxLayout
;
filterCombo
=
new
QComboBox
;
for
(
i
=
0
;
i
<
CardFilter
::
AttrEnd
;
i
++
)
for
(
int
i
=
0
;
i
<
CardFilter
::
AttrEnd
;
i
++
)
filterCombo
->
addItem
(
tr
(
CardFilter
::
attrName
(
static_cast
<
CardFilter
::
Attr
>
(
i
))),
QVariant
(
i
)
);
typeCombo
=
new
QComboBox
;
for
(
i
=
0
;
i
<
CardFilter
::
TypeEnd
;
i
++
)
for
(
int
i
=
0
;
i
<
CardFilter
::
TypeEnd
;
i
++
)
typeCombo
->
addItem
(
tr
(
CardFilter
::
typeName
(
static_cast
<
CardFilter
::
Type
>
(
i
))),
QVariant
(
i
)
);
QPushButton
*
ok
=
new
QPushButton
(
"+"
);
QPushButton
*
ok
=
new
QPushButton
(
QIcon
(
":/resources/increment.svg"
),
QString
()
);
ok
->
setMaximumSize
(
20
,
20
);
addFilter
->
addWidget
(
ok
);
addFilter
->
addWidget
(
typeCombo
);
addFilter
->
addWidget
(
filterCombo
,
Qt
::
AlignLeft
);
edit
=
new
QLineEdit
;
edit
->
setSizePolicy
(
QSizePolicy
::
Expanding
,
QSizePolicy
::
Fixed
);
layout
->
addLayout
(
addFilter
);
layout
->
addWidget
(
edit
);
setFrameStyle
(
QFrame
::
Panel
|
QFrame
::
Raised
);
layout
->
setAlignment
(
Qt
::
AlignTop
);
QGridLayout
*
layout
=
new
QGridLayout
;
layout
->
setContentsMargins
(
0
,
0
,
0
,
0
);
layout
->
addWidget
(
typeCombo
,
0
,
0
,
1
,
2
);
layout
->
addWidget
(
filterCombo
,
0
,
2
,
1
,
2
);
layout
->
addWidget
(
edit
,
1
,
0
,
1
,
3
);
layout
->
addWidget
(
ok
,
1
,
3
);
setLayout
(
layout
);
connect
(
edit
,
SIGNAL
(
returnPressed
()),
this
,
SLOT
(
emit_add
()));
...
...
cockatrice/src/filterbuilder.h
View file @
3af58040
#ifndef FILTERBUILDER_H
#define FILTERBUILDER_H
#include
<Q
Frame
>
#include
<Q
Widget
>
class
QCheckBox
;
class
QComboBox
;
class
QLineEdit
;
class
CardFilter
;
class
FilterBuilder
:
public
Q
Frame
{
class
FilterBuilder
:
public
Q
Widget
{
Q_OBJECT
private:
...
...
cockatrice/src/settingscache.cpp
View file @
3af58040
...
...
@@ -79,6 +79,13 @@ SettingsCache::SettingsCache()
leftJustified
=
settings
->
value
(
"interface/leftjustified"
,
false
).
toBool
();
masterVolume
=
settings
->
value
(
"sound/mastervolume"
,
100
).
toInt
();
cardInfoViewMode
=
settings
->
value
(
"cards/cardinfoviewmode"
,
0
).
toInt
();
}
void
SettingsCache
::
setCardInfoViewMode
(
const
int
_viewMode
)
{
cardInfoViewMode
=
_viewMode
;
settings
->
setValue
(
"cards/cardinfoviewmode"
,
cardInfoViewMode
);
}
void
SettingsCache
::
setMasterVolume
(
int
_masterVolume
)
{
...
...
cockatrice/src/settingscache.h
View file @
3af58040
...
...
@@ -81,6 +81,7 @@ private:
bool
showMentionPopups
;
bool
leftJustified
;
int
masterVolume
;
int
cardInfoViewMode
;
public:
SettingsCache
();
const
QByteArray
&
getMainWindowGeometry
()
const
{
return
mainWindowGeometry
;
}
...
...
@@ -136,6 +137,7 @@ public:
bool
getShowMentionPopup
()
const
{
return
showMentionPopups
;
}
bool
getLeftJustified
()
const
{
return
leftJustified
;
}
int
getMasterVolume
()
const
{
return
masterVolume
;
}
int
getCardInfoViewMode
()
const
{
return
cardInfoViewMode
;
}
public
slots
:
void
setMainWindowGeometry
(
const
QByteArray
&
_mainWindowGeometry
);
void
setLang
(
const
QString
&
_lang
);
...
...
@@ -184,7 +186,8 @@ public slots:
void
setShowMessagePopups
(
const
int
_showMessagePopups
);
void
setShowMentionPopups
(
const
int
_showMentionPopups
);
void
setLeftJustified
(
const
int
_leftJustified
);
void
setMasterVolume
(
const
int
_masterVolume
);
void
setMasterVolume
(
const
int
_masterVolume
);
void
setCardInfoViewMode
(
const
int
_viewMode
);
};
extern
SettingsCache
*
settingsCache
;
...
...
cockatrice/src/tab_deck_editor.cpp
View file @
3af58040
...
...
@@ -9,6 +9,7 @@
#include
<QAction>
#include
<QCloseEvent>
#include
<QFileDialog>
#include
<QGroupBox>
#include
<QMenuBar>
#include
<QMessageBox>
#include
<QPrintPreviewDialog>
...
...
@@ -49,9 +50,14 @@ void SearchLineEdit::keyPressEvent(QKeyEvent *event)
TabDeckEditor
::
TabDeckEditor
(
TabSupervisor
*
_tabSupervisor
,
QWidget
*
parent
)
:
Tab
(
_tabSupervisor
,
parent
),
modified
(
false
)
{
aClearSearch
=
new
QAction
(
QString
(),
this
);
aClearSearch
->
setIcon
(
QIcon
(
":/resources/icon_clearsearch.svg"
));
connect
(
aClearSearch
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
actClearSearch
()));
aClearFilterAll
=
new
QAction
(
QString
(),
this
);
aClearFilterAll
->
setIcon
(
QIcon
(
":/resources/icon_clearsearch.svg"
));
connect
(
aClearFilterAll
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
actClearFilterAll
()));
aClearFilterOne
=
new
QAction
(
QString
(),
this
);
aClearFilterOne
->
setIcon
(
QIcon
(
":/resources/decrement.svg"
));
connect
(
aClearFilterOne
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
actClearFilterOne
()));
searchEdit
=
new
SearchLineEdit
;
#if QT_VERSION >= 0x050300
searchEdit
->
addAction
(
QIcon
(
":/resources/icon_search_black.svg"
),
QLineEdit
::
LeadingPosition
);
...
...
@@ -103,9 +109,6 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
leftFrame
->
addWidget
(
databaseView
);
cardInfo
=
new
CardFrame
(
250
,
356
);
aCardTextOnly
=
new
QAction
(
QString
(),
this
);
aCardTextOnly
->
setCheckable
(
true
);
connect
(
aCardTextOnly
,
SIGNAL
(
triggered
()),
cardInfo
,
SLOT
(
toggleCardTextOnly
()));
filterModel
=
new
FilterTreeModel
();
databaseDisplayModel
->
setFilterTree
(
filterModel
->
filterTree
());
...
...
@@ -119,16 +122,29 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
connect
(
filterView
,
SIGNAL
(
customContextMenuRequested
(
const
QPoint
&
)),
this
,
SLOT
(
filterViewCustomContextMenu
(
const
QPoint
&
)));
FilterBuilder
*
filterBuilder
=
new
FilterBuilder
;
filterBuilder
->
setMaximumWidth
(
250
);
connect
(
filterBuilder
,
SIGNAL
(
add
(
const
CardFilter
*
)),
filterModel
,
SLOT
(
addFilter
(
const
CardFilter
*
)));
QVBoxLayout
*
filter
=
new
QVBoxLayout
;
filter
->
addWidget
(
filterBuilder
,
0
,
Qt
::
AlignTop
);
filter
->
addWidget
(
filterView
,
10
);
QToolButton
*
filterDelOne
=
new
QToolButton
();
filterDelOne
->
setDefaultAction
(
aClearFilterOne
);
filterDelOne
->
setToolButtonStyle
(
Qt
::
ToolButtonTextBesideIcon
);
QToolButton
*
filterDelAll
=
new
QToolButton
();
filterDelAll
->
setDefaultAction
(
aClearFilterAll
);
filterDelAll
->
setToolButtonStyle
(
Qt
::
ToolButtonTextBesideIcon
);
QGridLayout
*
filterLayout
=
new
QGridLayout
;
filterLayout
->
addWidget
(
filterBuilder
,
0
,
0
,
1
,
2
);
filterLayout
->
addWidget
(
filterView
,
1
,
0
,
1
,
2
);
filterLayout
->
addWidget
(
filterDelOne
,
2
,
0
);
filterLayout
->
addWidget
(
filterDelAll
,
2
,
1
);
filterBox
=
new
QGroupBox
();
filterBox
->
setMaximumWidth
(
250
);
filterBox
->
setLayout
(
filterLayout
);
QVBoxLayout
*
middleFrame
=
new
QVBoxLayout
;
middleFrame
->
addWidget
(
cardInfo
,
0
,
Qt
::
AlignTop
);
middleFrame
->
add
Layou
t
(
filter
,
1
0
);
middleFrame
->
add
Widge
t
(
filter
Box
,
0
);
deckModel
=
new
DeckListModel
(
this
);
connect
(
deckModel
,
SIGNAL
(
deckHashChanged
()),
this
,
SLOT
(
updateHash
()));
...
...
@@ -258,8 +274,7 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
dbMenu
->
addAction
(
aEditSets
);
dbMenu
->
addAction
(
aEditTokens
);
dbMenu
->
addSeparator
();
dbMenu
->
addAction
(
aClearSearch
);
dbMenu
->
addAction
(
aCardTextOnly
);
dbMenu
->
addAction
(
aClearFilterAll
);
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
dbMenu
->
addSeparator
();
dbMenu
->
addAction
(
aOpenCustomFolder
);
...
...
@@ -303,8 +318,11 @@ TabDeckEditor::~TabDeckEditor()
void
TabDeckEditor
::
retranslateUi
()
{
aCardTextOnly
->
setText
(
tr
(
"Show card text only"
));
aClearSearch
->
setText
(
tr
(
"&Clear search"
));
cardInfo
->
retranslateUi
();
filterBox
->
setTitle
(
tr
(
"Filters"
));
aClearFilterAll
->
setText
(
tr
(
"&Clear all filters"
));
aClearFilterOne
->
setText
(
tr
(
"Delete selected"
));
nameLabel
->
setText
(
tr
(
"Deck &name:"
));
commentsLabel
->
setText
(
tr
(
"&Comments:"
));
...
...
@@ -570,9 +588,16 @@ void TabDeckEditor::actEditTokens()
db
->
saveToFile
(
settingsCache
->
getTokenDatabasePath
(),
true
);
}
void
TabDeckEditor
::
actClearSearch
()
void
TabDeckEditor
::
actClearFilterAll
()
{
databaseDisplayModel
->
clearFilterAll
();
}
void
TabDeckEditor
::
actClearFilterOne
()
{
databaseDisplayModel
->
clearSearch
();
QModelIndexList
selIndexes
=
filterView
->
selectionModel
()
->
selectedIndexes
();
foreach
(
QModelIndex
idx
,
selIndexes
)
filterModel
->
removeRow
(
idx
.
row
(),
idx
.
parent
());
}
void
TabDeckEditor
::
recursiveExpand
(
const
QModelIndex
&
index
)
...
...
cockatrice/src/tab_deck_editor.h
View file @
3af58040
...
...
@@ -17,7 +17,9 @@ class QLabel;
class
DeckLoader
;
class
Response
;
class
FilterTreeModel
;
class
FilterBuilder
;
class
CardInfo
;
class
QGroupBox
;
class
SearchLineEdit
:
public
QLineEdit
{
private:
...
...
@@ -52,7 +54,8 @@ class TabDeckEditor : public Tab {
void
actEditSets
();
void
actEditTokens
();
void
actClearSearch
();
void
actClearFilterAll
();
void
actClearFilterOne
();
void
actSwapCard
();
void
actAddCard
();
...
...
@@ -96,10 +99,11 @@ private:
QLabel
*
hashLabel
;
FilterTreeModel
*
filterModel
;
QTreeView
*
filterView
;
QGroupBox
*
filterBox
;
QMenu
*
deckMenu
,
*
dbMenu
;
QAction
*
aNewDeck
,
*
aLoadDeck
,
*
aSaveDeck
,
*
aSaveDeckAs
,
*
aLoadDeckFromClipboard
,
*
aSaveDeckToClipboard
,
*
aPrintDeck
,
*
aAnalyzeDeck
,
*
aClose
,
*
aOpenCustomFolder
;
QAction
*
aEditSets
,
*
aEditTokens
,
*
aClear
Search
,
*
aCardTextOnly
;
QAction
*
aEditSets
,
*
aEditTokens
,
*
aClear
FilterAll
,
*
aClearFilterOne
;
QAction
*
aAddCard
,
*
aAddCardToSideboard
,
*
aRemoveCard
,
*
aIncrement
,
*
aDecrement
;
// *aUpdatePrices;
bool
modified
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment