+ 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));
+ }