**
** \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
#endif
#include "layerparamtreestore.h"
-#include "iconcontroler.h"
+#include "iconcontroller.h"
#include <gtkmm/button.h>
#include <synfig/paramdesc.h>
#include "layertree.h"
#include "app.h"
#include <ETL/clock>
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
CanvasTreeStore (canvas_interface_),
layer_tree (layer_tree)
{
- queued=false;
+ queued=0;
// Connect all the signals
canvas_interface()->signal_value_node_changed().connect(sigc::mem_fun(*this,&studio::LayerParamTreeStore::on_value_node_changed));
+ canvas_interface()->signal_value_node_renamed().connect(sigc::mem_fun(*this,&studio::LayerParamTreeStore::on_value_node_renamed));
canvas_interface()->signal_value_node_added().connect(sigc::mem_fun(*this,&studio::LayerParamTreeStore::on_value_node_added));
canvas_interface()->signal_value_node_deleted().connect(sigc::mem_fun(*this,&studio::LayerParamTreeStore::on_value_node_deleted));
canvas_interface()->signal_value_node_replaced().connect(sigc::mem_fun(*this,&studio::LayerParamTreeStore::on_value_node_replaced));
changed_connection_list.back().disconnect();
changed_connection_list.pop_back();
}
- synfig::info("LayerParamTreeStore::~LayerParamTreeStore(): Deleted");
+
+ if (getenv("SYNFIG_DEBUG_DESTRUCTORS"))
+ synfig::info("LayerParamTreeStore::~LayerParamTreeStore(): Deleted");
}
Glib::RefPtr<LayerParamTreeStore>
Glib::Value<Glib::ustring> x;
g_value_init(x.gobj(),x.value_type());
-
- if(!layer->get_description().empty())
- x.set(layer->get_description());
- else
- x.set(layer->get_local_name());
+ x.set(layer->get_non_empty_description());
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
g_value_init(x.gobj(),model.active.type());
g_value_copy(value.gobj(),x.gobj());
- synfigapp::Action::Handle action(synfigapp::Action::create("layer_activate"));
+ synfigapp::Action::Handle action(synfigapp::Action::create("LayerActivate"));
if(!action)
return;
}
catch(std::exception x)
{
- g_warning(x.what());
+ g_warning("%s", x.what());
}
}
void
LayerParamTreeStore::rebuild()
{
- Profiler profiler("LayerParamTreeStore::rebuild()");
- if(queued)queued=false;
+ // Profiler profiler("LayerParamTreeStore::rebuild()");
+ if(queued)queued=0;
clear();
layer_list=layer_tree->get_selected_layers();
struct REBUILD_HELPER
{
ParamVocab vocab;
+ Layer::Handle layer_0;
static ParamVocab::iterator find_param_desc(ParamVocab& vocab, const synfig::String& x)
{
return iter;
}
- void process_vocab(ParamVocab x)
+ void process_vocab(synfig::Layer::Handle layer_n)
{
+ ParamVocab x = layer_n->get_param_vocab();
ParamVocab::iterator iter;
for(iter=vocab.begin();iter!=vocab.end();++iter)
{
- ParamVocab::iterator iter2(find_param_desc(x,iter->get_name()));
- if(iter2==x.end())
+ String name(iter->get_name());
+ ParamVocab::iterator iter2(find_param_desc(x,name));
+ if(iter2==x.end() ||
+ layer_0->get_param(name).get_type() != layer_n->get_param(name).get_type())
{
// remove it and start over
vocab.erase(iter);
{
LayerList::iterator iter(layer_list.begin());
rebuild_helper.vocab=(*iter)->get_param_vocab();
+ rebuild_helper.layer_0=*iter;
for(++iter;iter!=layer_list.end();++iter)
{
- rebuild_helper.process_vocab((*iter)->get_param_vocab());
+ rebuild_helper.process_vocab(*iter);
changed_connection_list.push_back(
(*iter)->signal_changed().connect(
sigc::mem_fun(
if(value!=((*iter2)->get_param(iter->get_name())))
{
row[model.is_inconsistent] = true;
- while(!row.children().empty() && erase(row.children().begin()));
+ while(!row.children().empty() && erase(row.children().begin()))
+ ;
break;
}
}
void
LayerParamTreeStore::refresh()
{
- if(queued)queued=false;
+ if(queued)queued=0;
Gtk::TreeModel::Children children_(children());
if(value!=((*iter2)->get_param(param_desc.get_name())))
{
row[model.is_inconsistent] = true;
- while(!row.children().empty() && erase(row.children().begin()));
+ while(!row.children().empty() && erase(row.children().begin()))
+ ;
return;
}
}
LayerParamTreeStore::set_row(Gtk::TreeRow row,synfigapp::ValueDesc value_desc)
{
Gtk::TreeModel::Children children = row.children();
- while(!children.empty() && erase(children.begin()));
+ while(!children.empty() && erase(children.begin()))
+ ;
CanvasTreeStore::set_row(row,value_desc);
}
void
-LayerParamTreeStore::on_value_node_added(ValueNode::Handle value_node)
+LayerParamTreeStore::on_value_node_added(synfig::ValueNode::Handle /*value_node*/)
{
// queue_refresh();
}
void
-LayerParamTreeStore::on_value_node_deleted(etl::handle<ValueNode> value_node)
+LayerParamTreeStore::on_value_node_deleted(synfig::ValueNode::Handle /*value_node*/)
{
// queue_refresh();
}
void
-LayerParamTreeStore::on_value_node_child_added(synfig::ValueNode::Handle value_node,synfig::ValueNode::Handle child)
+LayerParamTreeStore::on_value_node_child_added(synfig::ValueNode::Handle /*value_node*/,synfig::ValueNode::Handle /*child*/)
{
queue_rebuild();
}
void
-LayerParamTreeStore::on_value_node_child_removed(synfig::ValueNode::Handle value_node,synfig::ValueNode::Handle child)
+LayerParamTreeStore::on_value_node_child_removed(synfig::ValueNode::Handle /*value_node*/,synfig::ValueNode::Handle /*child*/)
{
rebuild();
}
void
-LayerParamTreeStore::on_value_node_changed(etl::handle<ValueNode> value_node)
+LayerParamTreeStore::on_value_node_changed(synfig::ValueNode::Handle /*value_node*/)
{
queue_refresh();
}
void
-LayerParamTreeStore::on_value_node_replaced(synfig::ValueNode::Handle replaced_value_node,synfig::ValueNode::Handle new_value_node)
+LayerParamTreeStore::on_value_node_renamed(synfig::ValueNode::Handle /*value_node*/)
+{
+ rebuild();
+}
+
+void
+LayerParamTreeStore::on_value_node_replaced(synfig::ValueNode::Handle /*replaced_value_node*/,synfig::ValueNode::Handle /*new_value_node*/)
{
queue_rebuild();
}
void
-LayerParamTreeStore::on_layer_param_changed(synfig::Layer::Handle handle,synfig::String param_name)
+LayerParamTreeStore::on_layer_param_changed(synfig::Layer::Handle /*handle*/,synfig::String /*param_name*/)
{
queue_refresh();
}