#include <gtkmm/button.h>
#include <synfig/paramdesc.h>
#include <synfigapp/action.h>
#include <synfigapp/instance.h>
#include "app.h"
#include "instance.h"
#include <gtkmm/button.h>
#include <synfig/paramdesc.h>
#include <synfigapp/action.h>
#include <synfigapp/instance.h>
#include "app.h"
#include "instance.h"
//canvas_interface()->signal_value_node_replaced().connect(sigc::mem_fun(*this,&studio::LayerTreeStore::on_value_node_replaced));
set_default_sort_func(sigc::ptr_fun(index_sorter));
//canvas_interface()->signal_value_node_replaced().connect(sigc::mem_fun(*this,&studio::LayerTreeStore::on_value_node_replaced));
set_default_sort_func(sigc::ptr_fun(index_sorter));
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
//g_value_copy(x.gobj(),value.gobj());
value=x;
}
g_value_init(value.gobj(),x.value_type());
//g_value_copy(x.gobj(),value.gobj());
value=x;
}
g_value_init(value.gobj(),x.value_type());
//g_value_copy(x.gobj(),value.gobj());
value=x;
}
g_value_init(value.gobj(),x.value_type());
//g_value_copy(x.gobj(),value.gobj());
value=x;
}
g_value_init(value.gobj(),x.value_type());
//g_value_copy(x.gobj(),value.gobj());
value=x;
}
g_value_init(value.gobj(),x.value_type());
//g_value_copy(x.gobj(),value.gobj());
value=x;
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
g_value_init(value.gobj(),x.value_type());
g_value_copy(x.gobj(),value.gobj());
}
Glib::Value<Glib::ustring> x;
g_value_init(x.gobj(),model.label.type());
g_value_copy(value.gobj(),x.gobj());
Glib::Value<Glib::ustring> x;
g_value_init(x.gobj(),model.label.type());
g_value_copy(value.gobj(),x.gobj());
if(new_desc==layer->get_local_name())
new_desc=synfig::String();
if(new_desc==layer->get_description())
return;
if(new_desc==layer->get_local_name())
new_desc=synfig::String();
if(new_desc==layer->get_description())
return;
action->set_param("canvas",canvas_interface()->get_canvas());
action->set_param("canvas_interface",canvas_interface());
action->set_param("layer",layer);
action->set_param("new_description",synfig::String(x.get()));
action->set_param("canvas",canvas_interface()->get_canvas());
action->set_param("canvas_interface",canvas_interface());
action->set_param("layer",layer);
action->set_param("new_description",synfig::String(x.get()));
if(!layer)return;
Glib::Value<bool> x;
g_value_init(x.gobj(),model.active.type());
g_value_copy(value.gobj(),x.gobj());
if(!layer)return;
Glib::Value<bool> x;
g_value_init(x.gobj(),model.active.type());
g_value_copy(value.gobj(),x.gobj());
action->set_param("canvas",canvas_interface()->get_canvas());
action->set_param("canvas_interface",canvas_interface());
action->set_param("layer",layer);
action->set_param("new_status",bool(x.get()));
action->set_param("canvas",canvas_interface()->get_canvas());
action->set_param("canvas_interface",canvas_interface());
action->set_param("layer",layer);
action->set_param("new_status",bool(x.get()));
//gtk_selection_data_set (selection_data, gdk_atom_intern("LAYER",false), 8, reinterpret_cast<const guchar*>(&layer), sizeof(layer));
std::vector<Layer*> layers;
//gtk_selection_data_set (selection_data, gdk_atom_intern("LAYER",false), 8, reinterpret_cast<const guchar*>(&layer), sizeof(layer));
std::vector<Layer*> layers;
if(!included)
layers.push_back(layer);
selection_data.set("LAYER", 8, reinterpret_cast<const guchar*>(&layers.front()), sizeof(void*)*layers.size());
if(!included)
layers.push_back(layer);
selection_data.set("LAYER", 8, reinterpret_cast<const guchar*>(&layers.front()), sizeof(void*)*layers.size());
//synfig::info("possible_drop -- data of type \"%s\"",selection_data.get_data_type());
//synfig::info("possible_drop -- data of target \"%s\"",gdk_atom_name(selection_data->target));
//synfig::info("possible_drop -- selection=\"%s\"",gdk_atom_name(selection_data->selection));
//synfig::info("possible_drop -- data of type \"%s\"",selection_data.get_data_type());
//synfig::info("possible_drop -- data of target \"%s\"",gdk_atom_name(selection_data->target));
//synfig::info("possible_drop -- selection=\"%s\"",gdk_atom_name(selection_data->selection));
//Gtk::TreeModel::Row row(*get_iter(dest));
if(synfig::String(selection_data.get_data_type())=="LAYER" && (bool)true)
//Gtk::TreeModel::Row row(*get_iter(dest));
if(synfig::String(selection_data.get_data_type())=="LAYER" && (bool)true)
- else
- {
- if((bool)const_cast<LayerTreeStore*>(this)->get_iter(dest_parent))
- return (bool)(Canvas::Handle)(*const_cast<LayerTreeStore*>(this)->get_iter(dest_parent))[model.contained_canvas];
- else
- return false;
- }
+ else if((bool)const_cast<LayerTreeStore*>(this)->get_iter(dest_parent))
+ return (bool)(Canvas::Handle)(*const_cast<LayerTreeStore*>(this)->get_iter(dest_parent))[model.contained_canvas];
//synfig::info("Dropped data of type \"%s\"",selection_data.get_data_type());
//synfig::info("Dropped data of target \"%s\"",gdk_atom_name(selection_data->target));
//synfig::info("Dropped selection=\"%s\"",gdk_atom_name(selection_data->selection));
synfigapp::Action::PassiveGrouper passive_grouper(canvas_interface()->get_instance().get(),_("Move Layers"));
//synfig::info("Dropped data of type \"%s\"",selection_data.get_data_type());
//synfig::info("Dropped data of target \"%s\"",gdk_atom_name(selection_data->target));
//synfig::info("Dropped selection=\"%s\"",gdk_atom_name(selection_data->selection));
synfigapp::Action::PassiveGrouper passive_grouper(canvas_interface()->get_instance().get(),_("Move Layers"));
// Save the selection data
synfigapp::SelectionManager::LayerList selected_layer_list=canvas_interface()->get_selection_manager()->get_selected_layers();
// Save the selection data
synfigapp::SelectionManager::LayerList selected_layer_list=canvas_interface()->get_selection_manager()->get_selected_layers();
Layer::Handle dest_layer(row[model.layer]);
if(synfig::String(selection_data.get_data_type())=="LAYER")for(unsigned int i=0;i<selection_data.get_length()/sizeof(void*);i++)
{
//synfig::info("dest_layer_depth=%d",dest_layer_depth);
Layer::Handle dest_layer(row[model.layer]);
if(synfig::String(selection_data.get_data_type())=="LAYER")for(unsigned int i=0;i<selection_data.get_length()/sizeof(void*);i++)
{
//synfig::info("dest_layer_depth=%d",dest_layer_depth);
// In this case, we are just moving.
// if(dest_canvas==src->get_canvas())
{
// In this case, we are just moving.
// if(dest_canvas==src->get_canvas())
{
synfigapp::Action::Handle action(synfigapp::Action::create("layer_move"));
action->set_param("canvas",dest_canvas);
action->set_param("canvas_interface",canvas_interface());
synfigapp::Action::Handle action(synfigapp::Action::create("layer_move"));
action->set_param("canvas",dest_canvas);
action->set_param("canvas_interface",canvas_interface());
action->set_param("new_index",dest_layer_depth);
action->set_param("dest_canvas",dest_canvas);
if(canvas_interface()->get_instance()->perform_action(action))
action->set_param("new_index",dest_layer_depth);
action->set_param("dest_canvas",dest_canvas);
if(canvas_interface()->get_instance()->perform_action(action))
synfigapp::Action::Handle action;
action=synfigapp::Action::create("layer_remove");
action->set_param("canvas",Canvas::Handle(src->get_canvas()));
synfigapp::Action::Handle action;
action=synfigapp::Action::create("layer_remove");
action->set_param("canvas",Canvas::Handle(src->get_canvas()));
// Reselect the previously selected layers
canvas_interface()->get_selection_manager()->set_selected_layers(selected_layer_list);
// Reselect the previously selected layers
canvas_interface()->get_selection_manager()->set_selected_layers(selected_layer_list);
// Go ahead and and add all the layers
std::for_each(
canvas_interface()->get_canvas()->rbegin(), canvas_interface()->get_canvas()->rend(),
// Go ahead and and add all the layers
std::for_each(
canvas_interface()->get_canvas()->rbegin(), canvas_interface()->get_canvas()->rend(),
LayerTreeStore::set_row_layer(Gtk::TreeRow &row,synfig::Layer::Handle &handle)
{
//row[model.id] = handle->get_name();
LayerTreeStore::set_row_layer(Gtk::TreeRow &row,synfig::Layer::Handle &handle)
{
//row[model.id] = handle->get_name();
//row[model.active] = handle->active();
row[model.layer] = handle;
//row[model.canvas] = handle->get_canvas();
//row[model.active] = handle->active();
row[model.layer] = handle;
//row[model.canvas] = handle->get_canvas();
synfig::Layer::ParamList paramlist=handle->get_param_list();
synfig::Layer::Vocab vocab=handle->get_param_vocab();
synfig::Layer::Vocab::iterator iter;
synfig::Layer::ParamList paramlist=handle->get_param_list();
synfig::Layer::Vocab vocab=handle->get_param_vocab();
synfig::Layer::Vocab::iterator iter;
for(iter=vocab.begin();iter!=vocab.end();++iter)
{
if(iter->get_hidden())
continue;
if(handle->get_param(iter->get_name()).get_type()!=ValueBase::TYPE_CANVAS)
continue;
for(iter=vocab.begin();iter!=vocab.end();++iter)
{
if(iter->get_hidden())
continue;
if(handle->get_param(iter->get_name()).get_type()!=ValueBase::TYPE_CANVAS)
continue;
for(iter=canvas->rbegin();iter!=canvas->rend();++iter)
{
Gtk::TreeRow row_(*(prepend(row.children())));
set_row_layer(row_,*iter);
for(iter=canvas->rbegin();iter!=canvas->rend();++iter)
{
Gtk::TreeRow row_(*(prepend(row.children())));
set_row_layer(row_,*iter);
/*
etl::handle<ValueNode> value_node;
if(handle.constant()->dynamic_param_list().count(iter->get_name()))
/*
etl::handle<ValueNode> value_node;
if(handle.constant()->dynamic_param_list().count(iter->get_name()))
Gtk::TreeModel::Children children_(children());
if(canvas_interface()->get_canvas()!=handle->get_canvas())
{
Gtk::TreeModel::Children children_(children());
if(canvas_interface()->get_canvas()!=handle->get_canvas())
{
Gtk::TreeModel::Row row(*insert(iter));
set_row_layer(row,handle);
Gtk::TreeModel::Row row(*insert(iter));
set_row_layer(row,handle);
{
Gtk::TreeModel::Children::iterator iter;
if(find_layer_row(handle,iter))
{
Gtk::TreeModel::Children::iterator iter;
if(find_layer_row(handle,iter))
Gtk::TreeModel::Children::iterator iter, iter2;
if(find_layer_row(layer,iter))
{
Gtk::TreeModel::Children::iterator iter, iter2;
if(find_layer_row(layer,iter))
{
//Gtk::TreeModel::Row row(*iter);
Gtk::TreeModel::Row row2 = *iter2;
synfig::Layer::Handle layer2=row2[model.layer];
//Gtk::TreeModel::Row row(*iter);
Gtk::TreeModel::Row row2 = *iter2;
synfig::Layer::Handle layer2=row2[model.layer];
if(find_layer_row_(layer, canvas_interface()->get_canvas(), children_, iter,iter2))
{
if(iter!=iter2)
if(find_layer_row_(layer, canvas_interface()->get_canvas(), children_, iter,iter2))
{
if(iter!=iter2)
//Gtk::TreeModel::Row row = *iter;
Gtk::TreeModel::Row row2 = *iter2;
synfig::Layer::Handle layer2=row2[model.layer];
//Gtk::TreeModel::Row row = *iter;
Gtk::TreeModel::Row row2 = *iter2;
synfig::Layer::Handle layer2=row2[model.layer];
-LayerTreeStore::on_layer_moved(synfig::Layer::Handle layer,int depth, synfig::Canvas::Handle canvas)
+LayerTreeStore::on_layer_moved(synfig::Layer::Handle layer,int depth, synfig::Canvas::Handle /*canvas*/)
for(iter = children.begin(); iter && iter != children.end(); ++iter)
{
if((Glib::ustring)(*iter)[model.param_name]==param_name)
for(iter = children.begin(); iter && iter != children.end(); ++iter)
{
if((Glib::ustring)(*iter)[model.param_name]==param_name)
bool
LayerTreeStore::find_canvas_row_(synfig::Canvas::Handle canvas, synfig::Canvas::Handle parent, Gtk::TreeModel::Children layers, Gtk::TreeModel::Children::iterator &iter)
bool
LayerTreeStore::find_canvas_row_(synfig::Canvas::Handle canvas, synfig::Canvas::Handle parent, Gtk::TreeModel::Children layers, Gtk::TreeModel::Children::iterator &iter)
for(iter2 = layers.begin(); iter2 && iter2 != layers.end(); ++iter2)
{
Gtk::TreeModel::Row row = *iter2;
assert((bool)true);
for(iter2 = layers.begin(); iter2 && iter2 != layers.end(); ++iter2)
{
Gtk::TreeModel::Row row = *iter2;
assert((bool)true);
if(find_canvas_row_(canvas,sub_canvas,iter2->children(),iter))
return true;
}
if(find_canvas_row_(canvas,sub_canvas,iter2->children(),iter))
return true;
}
-LayerTreeStore::find_layer_row_(const synfig::Layer::Handle &layer, synfig::Canvas::Handle canvas, Gtk::TreeModel::Children layers, Gtk::TreeModel::Children::iterator &iter, Gtk::TreeModel::Children::iterator &prev)
+LayerTreeStore::find_layer_row_(const synfig::Layer::Handle &layer, synfig::Canvas::Handle /*canvas*/, Gtk::TreeModel::Children layers, Gtk::TreeModel::Children::iterator &iter, Gtk::TreeModel::Children::iterator &prev)
//if(layer->get_canvas()==canvas)
{
for(iter=prev=layers.begin(); iter && iter != layers.end(); prev=iter++)
//if(layer->get_canvas()==canvas)
{
for(iter=prev=layers.begin(); iter && iter != layers.end(); prev=iter++)
for(iter2 = layers.begin(); iter2 && iter2 != layers.end(); ++iter2)
{
Gtk::TreeModel::Row row = *iter2;
assert((bool)true);
for(iter2 = layers.begin(); iter2 && iter2 != layers.end(); ++iter2)
{
Gtk::TreeModel::Row row = *iter2;
assert((bool)true);
if(find_layer_row_(layer,canvas,iter2->children(),iter,prev))
return true;
}
if(find_layer_row_(layer,canvas,iter2->children(),iter,prev))
return true;
}