X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Fdynamicdialog.cpp;h=4e3312fbe8ad5a6813b7b6cfd39a1583771f518f;hb=abed4a255060d5a233ec0ac2dd60af9132e29201;hp=87c74377795948a03e3583f17a1d071a3eefecdc;hpb=32cf18ff4306b36f2ce59d41056f888638a85578;p=r2c2.git diff --git a/source/engineer/dynamicdialog.cpp b/source/engineer/dynamicdialog.cpp index 87c7437..4e3312f 100644 --- a/source/engineer/dynamicdialog.cpp +++ b/source/engineer/dynamicdialog.cpp @@ -1,13 +1,45 @@ #include "dynamicdialog.h" -#include "engineer.h" +#include "userinterface.h" -DynamicDialog::DynamicDialog(Engineer &e): - engineer(e) +using namespace std; +using namespace Msp; + +DynamicDialog::DynamicDialog(UserInterface &u): + ui(u) { - engineer.add_dynamic_dialog(*this); + ui.add_dynamic_dialog(*this); } DynamicDialog::~DynamicDialog() { - engineer.remove_dynamic_dialog(*this); + 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)); + } }