projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
"Create Gradient BLine" -> "Create Curve Gradient BLine" to match the other tools.
[synfig.git]
/
synfig-studio
/
trunk
/
src
/
gtkmm
/
dockmanager.cpp
diff --git
a/synfig-studio/trunk/src/gtkmm/dockmanager.cpp
b/synfig-studio/trunk/src/gtkmm/dockmanager.cpp
index
72c84d4
..
8a5198c
100644
(file)
--- a/
synfig-studio/trunk/src/gtkmm/dockmanager.cpp
+++ b/
synfig-studio/trunk/src/gtkmm/dockmanager.cpp
@@
-2,10
+2,11
@@
/*! \file dockmanager.cpp
** \brief Template File
**
/*! \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
**
** \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
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
@@
-37,6
+38,8
@@
#include <synfigapp/main.h>
#include <gdkmm/general.h>
#include <synfigapp/main.h>
#include <gdkmm/general.h>
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
#endif
/* === U S I N G =========================================================== */
@@
-53,13
+56,13
@@
using namespace studio;
class studio::DockSettings : public synfigapp::Settings
{
DockManager* dock_manager;
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");
}
public:
DockSettings(DockManager* dock_manager):dock_manager(dock_manager)
{
synfigapp::Main::settings().add_domain(this,"dock");
}
-
+
virtual ~DockSettings()
{
synfigapp::Main::settings().remove_domain("dock");
virtual ~DockSettings()
{
synfigapp::Main::settings().remove_domain("dock");
@@
-69,16
+72,16
@@
public:
{
int screen_w(Gdk::screen_width());
int screen_h(Gdk::screen_height());
{
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());
if(key_.size()>6 && String(key_.begin(),key_.begin()+6)=="dialog")try
{
synfig::String key(key_.begin()+7,key_.end());
-
int
separator=key.find_first_of('.');
+
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());
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));
DockDialog& dock_dialog(dock_manager->find_dock_dialog(id));
-
+
if(key=="contents_size")
{
dock_dialog.rebuild_sizes();
if(key=="contents_size")
{
dock_dialog.rebuild_sizes();
@@
-123,31
+126,39
@@
public:
if(key_.size()>6 && String(key_.begin(),key_.begin()+6)=="dialog")
{
synfig::String key(key_.begin()+7,key_.end());
if(key_.size()>6 && String(key_.begin(),key_.begin()+6)=="dialog")
{
synfig::String key(key_.begin()+7,key_.end());
-
int
separator=key.find_first_of('.');
+
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());
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 {
DockDialog& dock_dialog(dock_manager->find_dock_dialog(id));
if(key=="contents_size")
{
try {
-
+ int width, height;
+ Gtk::IconSize::lookup(Gtk::IconSize(4),width,height);
vector<int> data;
vector<int> data;
-
int
n=0;
+
String::size_type
n=0;
String value_(value);
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))
break;
value_=String(value_.begin()+n,value_.end());
int size;
if(!strscanf(value_,"%d",&size))
break;
+ if (size > SCALE_FACTOR) size = SCALE_FACTOR - 150;
+ if (size < 0) size = 0;
size=size*screen_h/SCALE_FACTOR;
size=size*screen_h/SCALE_FACTOR;
+
+ // prevent errors like this, by allowing space for at least the dockable's icon:
+ // ** CRITICAL **: clearlooks_style_draw_box_gap: assertion `height >= -1' failed
+ if (size < height + 9) size = height + 9;
+
data.push_back(size);
n=value_.find(" ");
data.push_back(size);
n=value_.find(" ");
- if(
(unsigned)n!
=String::npos)
-
n++
;
-
+ if(
n=
=String::npos)
+
break
;
+ n++;
}
dock_dialog.set_dock_book_sizes(data);
}
}
dock_dialog.set_dock_book_sizes(data);
}
@@
-163,8
+174,14
@@
public:
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
+ if (x > SCALE_FACTOR) x = SCALE_FACTOR - 150; if (x < 0) x = 0;
+ if (y > SCALE_FACTOR) y = SCALE_FACTOR - 150; if (y < 0) y = 0;
x=x*screen_w/SCALE_FACTOR;
y=y*screen_h/SCALE_FACTOR;
x=x*screen_w/SCALE_FACTOR;
y=y*screen_h/SCALE_FACTOR;
+ if(getenv("SYNFIG_WINDOW_POSITION_X_OFFSET"))
+ x += atoi(getenv("SYNFIG_WINDOW_POSITION_X_OFFSET"));
+ if(getenv("SYNFIG_WINDOW_POSITION_Y_OFFSET"))
+ y += atoi(getenv("SYNFIG_WINDOW_POSITION_Y_OFFSET"));
dock_dialog.move(x,y);
return true;
}
dock_dialog.move(x,y);
return true;
}
@@
-173,6
+190,8
@@
public:
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
+ if (x > SCALE_FACTOR) x = 150; if (x < 0) x = 0;
+ if (y > SCALE_FACTOR) y = 150; if (y < 0) y = 0;
x=x*screen_w/SCALE_FACTOR;
y=y*screen_h/SCALE_FACTOR;
dock_dialog.set_default_size(x,y);
x=x*screen_w/SCALE_FACTOR;
y=y*screen_h/SCALE_FACTOR;
dock_dialog.set_default_size(x,y);
@@
-195,7
+214,7
@@
public:
}
return synfigapp::Settings::set_value(key_,value);
}
}
return synfigapp::Settings::set_value(key_,value);
}
-
+
virtual KeyList get_key_list()const
{
synfigapp::Settings::KeyList ret(synfigapp::Settings::get_key_list());
virtual KeyList get_key_list()const
{
synfigapp::Settings::KeyList ret(synfigapp::Settings::get_key_list());
@@
-229,8
+248,8
@@
DockManager::~DockManager()
while(!dockable_list_.empty())
{
Dockable* dockable(dockable_list_.back());
while(!dockable_list_.empty())
{
Dockable* dockable(dockable_list_.back());
- synfig::info("DockManager::~DockManager(): Deleting dockable \"%s\"",dockable->get_name().c_str());
- dockable_list_.pop_back();
+
//
synfig::info("DockManager::~DockManager(): Deleting dockable \"%s\"",dockable->get_name().c_str());
+ dockable_list_.pop_back();
delete dockable;
}
}
delete dockable;
}
}
@@
-239,7
+258,7
@@
void
DockManager::register_dockable(Dockable& x)
{
dockable_list_.push_back(&x);
DockManager::register_dockable(Dockable& x)
{
dockable_list_.push_back(&x);
- synfig::info("DockManager::register_dockable(): Registered dockable \"%s\"",dockable_list_.back()->get_name().c_str());
+
//
synfig::info("DockManager::register_dockable(): Registered dockable \"%s\"",dockable_list_.back()->get_name().c_str());
signal_dockable_registered()(&x);
}
signal_dockable_registered()(&x);
}
@@
-267,7
+286,7
@@
DockManager::find_dockable(const synfig::String& x)
for(iter=dockable_list_.begin();iter!=dockable_list_.end();++iter)
if((*iter)->get_name()==x)
return **iter;
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");
}
throw std::runtime_error("DockManager::find_dockable(): not found");
}
@@
-304,6
+323,6
@@
DockManager::find_dock_dialog(int id)const
for(iter=dock_dialog_list_.begin();iter!=dock_dialog_list_.end();++iter)
if((*iter)->get_id()==id)
return **iter;
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");
}
throw std::runtime_error("DockManager::find_dock_dialog(int id)const: not found");
}