/*! \file dialogsettings.cpp
** \brief Template File
**
-** $Id: dialogsettings.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007, 2008 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
#include "dialogsettings.h"
#include <synfigapp/main.h>
+#include <gdkmm/general.h>
+
+#include "general.h"
#endif
{
if(key=="pos")
{
- if(!window->is_visible())return false;
+ // if(!window->is_visible())return false;
int x,y; window->get_position(x,y);
value=strprintf("%d %d",x,y);
return true;
}
if(key=="size")
{
- if(!window->is_visible())return false;
+ // if(!window->is_visible())return false;
int x,y; window->get_size(x,y);
value=strprintf("%d %d",x,y);
return true;
bool
DialogSettings::set_value(const synfig::String& key,const synfig::String& value)
{
+ int screen_w(Gdk::screen_width());
+ int screen_h(Gdk::screen_height());
+
if(value.empty())
return false;
-
- if(key=="pos")
+
+ if(key=="pos")
{
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
+
+ if (x > screen_w) x = screen_w - 150; if (x < 0) x = 0;
+ if (y > screen_h) y = screen_h - 150; if (y < 0) y = 0;
+
window->move(x,y);
return true;
}
- if(key=="size")
+ if(key=="size")
{
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
+
+ if (x > screen_w) x = 150; if (x < 0) x = 0;
+ if (y > screen_h) y = 150; if (y < 0) y = 0;
+
window->set_default_size(x,y);
return true;
}
- if(key=="x")
+ if(key=="x")
{
int x,y; window->get_position(x,y);
x=atoi(value.c_str());
DialogSettings::get_key_list()const
{
synfigapp::Settings::KeyList ret(synfigapp::Settings::get_key_list());
-
+
ret.push_back("size");
ret.push_back("pos");
ret.push_back("visible");
-
+
return ret;
}