//+----------------------------------------------------------------------------+ //| Description: Magic Set Editor - Program to make Magic (tm) cards | //| Copyright: (C) 2001 - 2006 Twan van Laarhoven | //| License: GNU General Public License 2 or later (see file COPYING) | //+----------------------------------------------------------------------------+ // ----------------------------------------------------------------------------- : Includes #include #include #include #include #include #include #include #include #include // ----------------------------------------------------------------------------- : Field Field::Field() : index (0) // sensible default? , editable (true) , save_value (true) , show_statistics (true) , identifying (false) , card_list_column (-1) , card_list_width (100) , card_list_allow (true) , card_list_align (ALIGN_LEFT) , tab_index (0) {} Field::~Field() {} IMPLEMENT_REFLECTION(Field) { if (!tag.reading()) { String type = typeName(); REFLECT(type); } REFLECT(name); if (tag.reading()) name = cannocial_name_form(name); REFLECT(description); REFLECT(editable); REFLECT(save_value); REFLECT(show_statistics); REFLECT(identifying); REFLECT(card_list_column); REFLECT(card_list_width); REFLECT(card_list_allow); REFLECT(card_list_name); if (tag.reading() && card_list_name.empty()) card_list_name = name; REFLECT_N("card_list_alignment", card_list_align); REFLECT(tab_index); } template <> shared_ptr read_new(Reader& reader) { // there must be a type specified String type; reader.handle(_("type"), type); if (type == _("text")) return new_shared(); else if (type == _("choice")) return new_shared(); else if (type == _("multiple choice")) return new_shared(); else if (type == _("boolean")) return new_shared(); else if (type == _("image")) return new_shared(); else if (type == _("symbol")) return new_shared(); else if (type == _("color")) return new_shared(); else { throw ParseError(_("Unsupported field type: '") + type + _("'")); } } // ----------------------------------------------------------------------------- : Style Style::Style(const FieldP& field) : fieldP(field) , z_index(0) , left(0), width (1) , top (0), height(1) , visible(true) {} Style::~Style() {} IMPLEMENT_REFLECTION(Style) { REFLECT(z_index); REFLECT(left); REFLECT(top); REFLECT(width); REFLECT(height); REFLECT(visible); } void init_object(const FieldP& field, StyleP& style) { style = field->newStyle(field); } template <> StyleP read_new