mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-12 05:36:59 -04:00
MultipleChoiceValueEditor: implemented drop down list
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@252 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -42,10 +42,11 @@ class ChoiceValueEditor : public ChoiceValueViewer, public ValueEditor {
|
||||
|
||||
// ----------------------------------------------------------------------------- : DropDownChoiceList
|
||||
|
||||
// A drop down list of color choices
|
||||
class DropDownChoiceList : public DropDownList {
|
||||
/// A drop down list of choices
|
||||
/** This is a base class, used for single and multiple choice fields */
|
||||
class DropDownChoiceListBase : public DropDownList {
|
||||
public:
|
||||
DropDownChoiceList(Window* parent, bool is_submenu, ChoiceValueEditor& cve, ChoiceField::ChoiceP group);
|
||||
DropDownChoiceListBase(Window* parent, bool is_submenu, ValueViewer& cve, ChoiceField::ChoiceP group);
|
||||
|
||||
protected:
|
||||
virtual size_t itemCount() const;
|
||||
@@ -54,23 +55,24 @@ class DropDownChoiceList : public DropDownList {
|
||||
virtual void drawIcon(DC& dc, int x, int y, size_t item, bool selected) const;
|
||||
virtual DropDownList* submenu(size_t item) const;
|
||||
|
||||
virtual void select(size_t item);
|
||||
virtual size_t selection() const;
|
||||
protected:
|
||||
virtual DropDownList* createSubMenu(ChoiceField::ChoiceP group) const = 0;
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE();
|
||||
|
||||
ChoiceValueEditor& cve;
|
||||
ValueViewer& cve; ///< Editor this list belongs to
|
||||
ChoiceField::ChoiceP group; ///< Group this menu shows
|
||||
mutable vector<DropDownListP> submenus;
|
||||
mutable int default_id; ///< Item id for the default item (if !hasFieldDefault()) this is undefined)
|
||||
|
||||
inline const ChoiceField& field() const { return cve.field(); }
|
||||
inline ChoiceField& field() const { return static_cast<ChoiceField&>(*cve.getField()); }
|
||||
inline ChoiceStyle& style() const { return static_cast<ChoiceStyle&>(*cve.getStyle()); }
|
||||
|
||||
inline bool isRoot() const { return group == field().choices; }
|
||||
inline bool hasFieldDefault() const { return isRoot() && field().default_script; }
|
||||
inline bool hasGroupDefault() const { return group->hasDefault(); }
|
||||
inline bool hasDefault() const { return hasFieldDefault() || hasGroupDefault(); }
|
||||
virtual bool hasDefault() const { return hasFieldDefault() || hasGroupDefault(); }
|
||||
inline bool isFieldDefault(size_t item) const { return item == 0 && hasFieldDefault(); }
|
||||
inline bool isGroupDefault(size_t item) const { return item == 0 && hasGroupDefault(); }
|
||||
inline bool isDefault (size_t item) const { return item == 0 && hasDefault(); }
|
||||
@@ -82,5 +84,18 @@ class DropDownChoiceList : public DropDownList {
|
||||
void onIdle(wxIdleEvent&);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : DropDownChoiceList
|
||||
|
||||
/// A drop down list of color choices
|
||||
class DropDownChoiceList : public DropDownChoiceListBase {
|
||||
public:
|
||||
DropDownChoiceList(Window* parent, bool is_submenu, ValueViewer& cve, ChoiceField::ChoiceP group);
|
||||
|
||||
protected:
|
||||
virtual void select(size_t item);
|
||||
virtual size_t selection() const;
|
||||
virtual DropDownList* createSubMenu(ChoiceField::ChoiceP group) const;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user