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:
twanvl
2007-04-12 19:18:17 +00:00
parent 958da421d9
commit 3dd0521c40
4 changed files with 199 additions and 59 deletions
+23 -8
View File
@@ -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