X-Git-Url: http://git.tdb.fi/?p=r2c2.git;a=blobdiff_plain;f=source%2Fengineer%2Fdynamicdialog.cpp;h=4e3312fbe8ad5a6813b7b6cfd39a1583771f518f;hp=6d9afb4861432c208a305ce673a16d6f0a0b68b8;hb=abed4a255060d5a233ec0ac2dd60af9132e29201;hpb=9e96d36a21c24befc88c7bf9c1014c22169e3a6a diff --git a/source/engineer/dynamicdialog.cpp b/source/engineer/dynamicdialog.cpp index 6d9afb4..4e3312f 100644 --- a/source/engineer/dynamicdialog.cpp +++ b/source/engineer/dynamicdialog.cpp @@ -1,6 +1,9 @@ #include "dynamicdialog.h" #include "userinterface.h" +using namespace std; +using namespace Msp; + DynamicDialog::DynamicDialog(UserInterface &u): ui(u) { @@ -11,3 +14,32 @@ DynamicDialog::~DynamicDialog() { ui.remove_dynamic_dialog(*this); } + +void DynamicDialog::save_position(list &st) const +{ + GLtk::Root *root = find_ancestor(); + if(root) + { + const GLtk::Geometry &rgeom = root->get_geometry(); + float x = static_cast(geom.x)/(rgeom.w-geom.w); + float y = static_cast(geom.y)/(rgeom.h-geom.h); + st.push_back((DataFile::Statement("position"), x, y)); + } +} + + +DynamicDialog::StateLoader::StateLoader(DynamicDialog &dd): + DataFile::ObjectLoader(dd) +{ + add("position", &StateLoader::position); +} + +void DynamicDialog::StateLoader::position(float x, float y) +{ + GLtk::Root *root = obj.find_ancestor(); + if(root) + { + const GLtk::Geometry &rgeom = root->get_geometry(); + obj.set_position(x*(rgeom.w-obj.geom.w), y*(rgeom.h-obj.geom.h)); + } +}