#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<DataFile::Statement> &st) const
+{
+ GLtk::Root *root = find_ancestor<GLtk::Root>();
+ if(root)
+ {
+ const GLtk::Geometry &rgeom = root->get_geometry();
+ float x = static_cast<float>(geom.x)/(rgeom.w-geom.w);
+ float y = static_cast<float>(geom.y)/(rgeom.h-geom.h);
+ st.push_back((DataFile::Statement("position"), x, y));
+ }
+}
+
+
+DynamicDialog::StateLoader::StateLoader(DynamicDialog &dd):
+ DataFile::ObjectLoader<DynamicDialog>(dd)
+{
+ add("position", &StateLoader::position);
+}
+
+void DynamicDialog::StateLoader::position(float x, float y)
+{
+ GLtk::Root *root = obj.find_ancestor<GLtk::Root>();
+ if(root)
+ {
+ const GLtk::Geometry &rgeom = root->get_geometry();
+ obj.set_position(x*(rgeom.w-obj.geom.w), y*(rgeom.h-obj.geom.h));
+ }
}