X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fdialogsettings.cpp;h=7f38a8347a1f074bc8a3b386008c3bb750c947a5;hb=b5c3d66d7714b6a2b6a10eb968206c6a46b0f026;hp=260b750c3dfb10b680839835e5fe1f922d377371;hpb=3a3c4bca3a17137bec5d7960560934b91ef4146e;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/dialogsettings.cpp b/synfig-studio/trunk/src/gtkmm/dialogsettings.cpp index 260b750..7f38a83 100644 --- a/synfig-studio/trunk/src/gtkmm/dialogsettings.cpp +++ b/synfig-studio/trunk/src/gtkmm/dialogsettings.cpp @@ -1,20 +1,22 @@ -/* === S I N F G =========================================================== */ +/* === S Y N F I G ========================================================= */ /*! \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 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007, 2008 Chris Moore ** -** This software and associated documentation -** are CONFIDENTIAL and PROPRIETARY property of -** the above-mentioned copyright holder. +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. ** -** You may not copy, print, publish, or in any -** other way distribute this software without -** a prior written agreement with -** the copyright holder. +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. ** \endlegal */ /* ========================================================================= */ @@ -29,7 +31,10 @@ #endif #include "dialogsettings.h" -#include +#include +#include + +#include "general.h" #endif @@ -37,7 +42,7 @@ using namespace std; using namespace etl; -using namespace sinfg; +using namespace synfig; using namespace studio; /* === M A C R O S ========================================================= */ @@ -48,31 +53,31 @@ using namespace studio; /* === M E T H O D S ======================================================= */ -DialogSettings::DialogSettings(Gtk::Window* window,const sinfg::String& name): +DialogSettings::DialogSettings(Gtk::Window* window,const synfig::String& name): window(window), name(name) { - sinfgapp::Main::settings().add_domain(this,"window."+name); + synfigapp::Main::settings().add_domain(this,"window."+name); } DialogSettings::~DialogSettings() { - sinfgapp::Main::settings().remove_domain("window."+name); + synfigapp::Main::settings().remove_domain("window."+name); } bool -DialogSettings::get_value(const sinfg::String& key, sinfg::String& value)const +DialogSettings::get_value(const synfig::String& key, synfig::String& value)const { 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; @@ -107,32 +112,43 @@ DialogSettings::get_value(const sinfg::String& key, sinfg::String& value)const return true; } - return sinfgapp::Settings::get_value(key,value); + return synfigapp::Settings::get_value(key,value); } bool -DialogSettings::set_value(const sinfg::String& key,const sinfg::String& value) +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()); @@ -169,17 +185,17 @@ DialogSettings::set_value(const sinfg::String& key,const sinfg::String& value) return true; } - return sinfgapp::Settings::set_value(key,value); + return synfigapp::Settings::set_value(key,value); } -sinfgapp::Settings::KeyList +synfigapp::Settings::KeyList DialogSettings::get_key_list()const { - sinfgapp::Settings::KeyList ret(sinfgapp::Settings::get_key_list()); - + synfigapp::Settings::KeyList ret(synfigapp::Settings::get_key_list()); + ret.push_back("size"); ret.push_back("pos"); ret.push_back("visible"); - + return ret; }