/*! \file dockmanager.cpp
** \brief Template File
**
-** $Id: dockmanager.cpp,v 1.2 2005/01/12 07:03:42 darco Exp $
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
class studio::DockSettings : public synfigapp::Settings
{
DockManager* dock_manager;
-
+
public:
DockSettings(DockManager* dock_manager):dock_manager(dock_manager)
{
synfigapp::Main::settings().add_domain(this,"dock");
}
-
+
virtual ~DockSettings()
{
synfigapp::Main::settings().remove_domain("dock");
{
int screen_w(Gdk::screen_width());
int screen_h(Gdk::screen_height());
-
+
if(key_.size()>6 && String(key_.begin(),key_.begin()+6)=="dialog")try
{
synfig::String key(key_.begin()+7,key_.end());
synfig::String::size_type separator=key.find_first_of('.');
int id(atoi(synfig::String(key.begin(),key.begin()+separator).c_str()));
key=synfig::String(key.begin()+separator+1,key.end());
-
+
DockDialog& dock_dialog(dock_manager->find_dock_dialog(id));
-
+
if(key=="contents_size")
{
dock_dialog.rebuild_sizes();
synfig::String::size_type separator=key.find_first_of('.');
int id(atoi(synfig::String(key.begin(),key.begin()+separator).c_str()));
key=synfig::String(key.begin()+separator+1,key.end());
-
+
DockDialog& dock_dialog(dock_manager->find_dock_dialog(id));
if(key=="contents_size")
{
try {
-
+
vector<int> data;
String::size_type n=0;
String value_(value);
- while(value_.size() && (signed)value_.size()>n && n>=0){
+ while(value_.size() && value_.size()>n){
value_=String(value_.begin()+n,value_.end());
int size;
if(!strscanf(value_,"%d",&size))
data.push_back(size);
n=value_.find(" ");
- if(n!=String::npos)
- n++;
-
+ if(n==String::npos)
+ break;
+ n++;
}
dock_dialog.set_dock_book_sizes(data);
}
}
return synfigapp::Settings::set_value(key_,value);
}
-
+
virtual KeyList get_key_list()const
{
synfigapp::Settings::KeyList ret(synfigapp::Settings::get_key_list());
{
Dockable* dockable(dockable_list_.back());
synfig::info("DockManager::~DockManager(): Deleting dockable \"%s\"",dockable->get_name().c_str());
- dockable_list_.pop_back();
+ dockable_list_.pop_back();
delete dockable;
}
}
for(iter=dockable_list_.begin();iter!=dockable_list_.end();++iter)
if((*iter)->get_name()==x)
return **iter;
-
+
throw std::runtime_error("DockManager::find_dockable(): not found");
}
for(iter=dock_dialog_list_.begin();iter!=dock_dialog_list_.end();++iter)
if((*iter)->get_id()==id)
return **iter;
-
+
throw std::runtime_error("DockManager::find_dock_dialog(int id)const: not found");
}