From 4fde933a11c6dd7c6451e650b9654974ca91e5f9 Mon Sep 17 00:00:00 2001 From: twanvl Date: Fri, 9 Jan 2009 19:07:14 +0000 Subject: [PATCH] added time_created and time_modified to Card. This changes the file format git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1321 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/data/card.cpp | 11 +++++++++-- src/data/card.hpp | 2 ++ src/util/io/reader.cpp | 7 +++++++ src/util/io/writer.cpp | 5 +++++ src/util/version.cpp | 5 +++-- 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/data/card.cpp b/src/data/card.cpp index 1760fb2b..9a518bc7 100644 --- a/src/data/card.cpp +++ b/src/data/card.cpp @@ -21,7 +21,10 @@ DECLARE_TYPEOF_NO_REV(IndexMap); // ----------------------------------------------------------------------------- : Card Card::Card() - : has_styling(false) + // for files made before we saved these times, set the time to 'yesterday' + : time_created (wxDateTime::Now().Subtract(wxDateSpan::Day()).ResetTime()) + , time_modified(wxDateTime::Now().Subtract(wxDateSpan::Day()).ResetTime()) + , has_styling(false) { if (!game_for_reading()) { throw InternalError(_("game_for_reading not set")); @@ -30,7 +33,9 @@ Card::Card() } Card::Card(const Game& game) - : has_styling(false) + : time_created (wxDateTime::Now()) + , time_modified(wxDateTime::Now()) + , has_styling(false) { data.init(game.card_fields); } @@ -73,6 +78,8 @@ IMPLEMENT_REFLECTION(Card) { } } REFLECT(notes); + REFLECT_NO_SCRIPT(time_created); + REFLECT_NO_SCRIPT(time_modified); REFLECT(extra_data); // don't allow scripts to depend on style specific data REFLECT_NAMELESS(data); } diff --git a/src/data/card.hpp b/src/data/card.hpp index 61fb6116..76d79a37 100644 --- a/src/data/card.hpp +++ b/src/data/card.hpp @@ -37,6 +37,8 @@ class Card : public IntrusivePtrVirtualBase { IndexMap data; /// Notes for this card String notes; + /// Time the card was created/last modified + wxDateTime time_created, time_modified; /// Alternative style to use for this card /** Optional; if not set use the card style from the set */ StyleSheetP stylesheet; diff --git a/src/util/io/reader.cpp b/src/util/io/reader.cpp index 84d7acc3..e9a318d8 100644 --- a/src/util/io/reader.cpp +++ b/src/util/io/reader.cpp @@ -371,8 +371,15 @@ template <> void Reader::handle(tribool& b) { const String& v = getValue(); b = (v==_("true") || v==_("1") || v==_("yes")); } + // ----------------------------------------------------------------------------- : Handling less basic util types +template <> void Reader::handle(wxDateTime& date) { + if (!date.ParseDateTime(getValue().c_str())) { + throw ParseError(_("Expected a date and time")); + } +} + template <> void Reader::handle(Vector2D& vec) { if (!wxSscanf(getValue().c_str(), _("(%lf,%lf)"), &vec.x, &vec.y)) { throw ParseError(_("Expected (x,y)")); diff --git a/src/util/io/writer.cpp b/src/util/io/writer.cpp index e4c19358..c0732ed9 100644 --- a/src/util/io/writer.cpp +++ b/src/util/io/writer.cpp @@ -113,6 +113,11 @@ template <> void Writer::handle(const tribool& value) { // ----------------------------------------------------------------------------- : Handling less basic util types +template <> void Writer::handle(const wxDateTime& date) { + if (date.IsValid()) { + handle(date.Format(_("%Y-%m-%d %H:%M:%S"))); + } +} template <> void Writer::handle(const Vector2D& vec) { handle(String::Format(_("(%.10lf,%.10lf)"), vec.x, vec.y)); } diff --git a/src/util/version.cpp b/src/util/version.cpp index eab81e91..186fe6f8 100644 --- a/src/util/version.cpp +++ b/src/util/version.cpp @@ -78,14 +78,15 @@ const Char* version_suffix = _(" (beta, ascii build)"); * - tag_contents function fixed * - alignment:justify behavior changed * - more scriptable fields. + * - store time created,modified for cards -> changes set and clipboard format */ const Version file_version_locale = 308; // 0.3.8 -const Version file_version_set = 306; // 0.3.6 +const Version file_version_set = 308; // 0.3.8 const Version file_version_game = 308; // 0.3.8 const Version file_version_stylesheet = 308; // 0.3.8 const Version file_version_symbol_font = 306; // 0.3.6 const Version file_version_export_template = 307; // 0.3.7 const Version file_version_installer = 307; // 0.3.7 const Version file_version_symbol = 305; // 0.3.5 -const Version file_version_clipboard = 306; // 0.3.6 +const Version file_version_clipboard = 308; // 0.3.8 const Version file_version_script = 307; // 0.3.7