X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Flayergrouptreestore.cpp;h=6334c0924ae218c9d7df52fdcb07e9f3be609d91;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=c20ddf6a164e623366486ff47d53881fdac55352;hpb=ce408de81ca266b1f334ee9bc6c8fb7ba1492ed4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/layergrouptreestore.cpp b/synfig-studio/trunk/src/gtkmm/layergrouptreestore.cpp index c20ddf6..6334c09 100644 --- a/synfig-studio/trunk/src/gtkmm/layergrouptreestore.cpp +++ b/synfig-studio/trunk/src/gtkmm/layergrouptreestore.cpp @@ -1,11 +1,12 @@ /* === S Y N F I G ========================================================= */ -/*! \file layertreestore.cpp +/*! \file layergrouptreestore.cpp ** \brief Template File ** -** $Id: layergrouptreestore.cpp,v 1.2 2005/01/13 18:37:30 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 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 @@ -30,7 +31,7 @@ #endif #include "layergrouptreestore.h" -#include "iconcontroler.h" +#include "iconcontroller.h" #include #include #include @@ -40,10 +41,11 @@ #include #include "dockmanager.h" #include "dockable.h" -#include "iconcontroler.h" #include #include +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -94,7 +96,9 @@ LayerGroupTreeStore::LayerGroupTreeStore(etl::loose_handle&,int,const Glib:: Glib::ustring substr(x.uppercase()); Glib::ustring label((*iter)[model.label]); label=label.uppercase(); - + return label.find(substr)==Glib::ustring::npos; } @@ -123,11 +127,11 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int { Glib::Value x; g_value_init(x.gobj(),x.value_type()); - + if((bool)(*iter)[model.is_group]) { set layer_set(canvas_interface()->get_canvas()->get_layers_in_group((Glib::ustring)(*iter)[model.group_name])); - + x.set(LayerList(layer_set.begin(),layer_set.end())); } else if((bool)(*iter)[model.is_layer]) @@ -136,7 +140,7 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int layer_list.push_back((Layer::Handle)(*iter)[model.layer]); x.set(layer_list); } - + g_value_init(value.gobj(),x.value_type()); value=x; } @@ -144,7 +148,7 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int { Glib::Value x; g_value_init(x.gobj(),x.value_type()); - + if((bool)(*iter)[model.is_group]) { LayerList layer_list; @@ -163,7 +167,7 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int layer_list.push_back((Layer::Handle)(*iter)[model.layer]); x.set(layer_list); } - + g_value_init(value.gobj(),x.value_type()); value=x; } @@ -189,15 +193,15 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int { Glib::Value x; g_value_init(x.gobj(),x.value_type()); - + Glib::ustring group_name((*iter)[model.group_name]); - + // Get rid of any parent group crap while(group_name.find(GROUP_NEST_CHAR)!=Glib::ustring::npos) group_name=Glib::ustring(group_name,group_name.find(GROUP_NEST_CHAR)+1,Glib::ustring::npos); - + x.set(group_name); - + g_value_init(value.gobj(),x.value_type()); value=x; @@ -205,18 +209,14 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int else if((bool)(*iter)[model.is_layer]) { synfig::Layer::Handle layer((*iter)[model.layer]); - + if(!layer)return; - + Glib::Value 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()); value=x; @@ -234,7 +234,7 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int x.set(layer->get_local_name()); - + g_value_init(value.gobj(),x.value_type()); //g_value_copy(x.gobj(),value.gobj()); value=x; @@ -251,7 +251,7 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int x.set(layer->get_canvas()); - + g_value_init(value.gobj(),x.value_type()); //g_value_copy(x.gobj(),value.gobj()); value=x; @@ -281,7 +281,7 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int } else x.set(false); - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -300,7 +300,7 @@ LayerGroupTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int } if((bool)(*iter)[model.is_group]) x.set(group_icon); - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -333,30 +333,30 @@ LayerGroupTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int co Glib::Value x; g_value_init(x.gobj(),model.label.type()); g_value_copy(value.gobj(),x.gobj()); - + if((bool)(*iter)[model.is_layer]) { synfig::Layer::Handle layer((*iter)[model.layer]); if(!layer) return; synfig::String new_desc(x.get()); - + if(new_desc==layer->get_local_name()) new_desc=synfig::String(); - + if(new_desc==layer->get_description()) return; - - synfigapp::Action::Handle action(synfigapp::Action::create("layer_set_desc")); - + + synfigapp::Action::Handle action(synfigapp::Action::create("LayerSetDesc")); + if(!action) 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())); - + canvas_interface()->get_instance()->perform_action(action); return; } @@ -364,14 +364,14 @@ LayerGroupTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int co { synfig::String group((Glib::ustring)(*iter)[model.label]); synfig::String new_group(x.get()); - + if(x.get()==group) return; Glib::ustring group_name((*iter)[model.group_name]); group=group_name; new_group.clear(); - + // Get rid of any parent group crap while(group_name.find(GROUP_NEST_CHAR)!=Glib::ustring::npos) { @@ -379,9 +379,9 @@ LayerGroupTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int co group_name=Glib::ustring(group_name,group_name.find(GROUP_NEST_CHAR)+1,Glib::ustring::npos); } new_group+=x.get(); - + synfig::info("Renaming group \"%s\" to \"%s\"...",group.c_str(),new_group.c_str()); - + // Check to see if this group is real or not. // If it isn't real, then renaming it is a cinch. // We know it isn't real if it doesn't have any @@ -392,16 +392,16 @@ LayerGroupTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int co } else { - synfigapp::Action::Handle action(synfigapp::Action::create("group_rename")); - + synfigapp::Action::Handle action(synfigapp::Action::create("GroupRename")); + if(!action) return; - + action->set_param("canvas",canvas_interface()->get_canvas()); action->set_param("canvas_interface",canvas_interface()); action->set_param("group",group); action->set_param("new_group",new_group); - + canvas_interface()->get_instance()->perform_action(action); } return; @@ -414,23 +414,23 @@ LayerGroupTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int co Glib::Value x; g_value_init(x.gobj(),model.active.type()); g_value_copy(value.gobj(),x.gobj()); - + if((bool)(*iter)[model.is_layer]) - { + { synfig::Layer::Handle layer((*iter)[model.layer]); if(!layer)return; - - synfigapp::Action::Handle action(synfigapp::Action::create("layer_activate")); - + + synfigapp::Action::Handle action(synfigapp::Action::create("LayerActivate")); + if(!action) 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_status",bool(x.get())); - + canvas_interface()->get_instance()->perform_action(action); return; } @@ -442,12 +442,12 @@ LayerGroupTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int co x.get()?_("Activate "):_("Deactivate ") )+(Glib::ustring)(*iter)[model.label] ); - + Gtk::TreeModel::iterator child_iter(iter->children().begin()); - + for(;child_iter;++child_iter) (*child_iter)[model.active]=x.get(); - + Gtk::TreeStore::set_value_impl(iter,column, value); } } @@ -457,19 +457,19 @@ LayerGroupTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int co } catch(std::exception x) { - g_warning(x.what()); - } + g_warning("%s", x.what()); + } } bool -LayerGroupTreeStore::row_draggable_vfunc (const TreeModel::Path& path)const +LayerGroupTreeStore::row_draggable_vfunc (const TreeModel::Path& /*path*/)const { //if(!get_iter(path)) return false; // Gtk::TreeModel::Row row(*get_iter(path)); - + return true; // return (bool)true; } @@ -492,7 +492,7 @@ LayerGroupTreeStore::drag_data_get_vfunc (const TreeModel::Path& path, Gtk::Sele std::vector layers; layers.push_back(layer); - + selection_data.set("LAYER", 8, reinterpret_cast(&layers.front()), sizeof(void*)*layers.size()); return true; @@ -502,17 +502,17 @@ LayerGroupTreeStore::drag_data_get_vfunc (const TreeModel::Path& path, Gtk::Sele synfig::String group((Glib::ustring)row[model.group_name]); if(group.empty()) return false; - + selection_data.set("GROUP", 8, reinterpret_cast(&*group.begin()), sizeof(void*)*group.size()); - return true; + return true; } - + return false; } bool -LayerGroupTreeStore::drag_data_delete_vfunc (const TreeModel::Path& path) +LayerGroupTreeStore::drag_data_delete_vfunc (const TreeModel::Path& /*path*/) { return true; } @@ -531,18 +531,18 @@ LayerGroupTreeStore::row_drop_possible_vfunc (const TreeModel::Path& dest, const synfig::String dest_group((Glib::ustring)(*iter)[model.group_name]); synfig::String src_group(reinterpret_cast(selection_data.get_data())); //synfig::String src_group(const_cast(selection_data.get_data())); - + // Avoid putting a group inside of itself if(dest_group.size()>src_group.size() && src_group==String(dest_group,0,src_group.size())) return false; return true; } - + return false; //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) @@ -557,7 +557,7 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons if(!get_iter(dest)) return false; // bool ret=false; //int i(0); - + Gtk::TreeModel::Row row(*get_iter(dest)); //synfig::info("Dropped data of type \"%s\"",selection_data.get_data_type()); @@ -568,19 +568,19 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons if ((selection_data.get_length() >= 0) && (selection_data.get_format() == 8)) { synfig::String dest_group; - + dest_group=(Glib::ustring)row[model.group_name]; - + if(dest_group.empty()) return false; if(synfig::String(selection_data.get_data_type())=="LAYER") { - synfigapp::Action::Handle action(synfigapp::Action::create("group_add_layers")); - + synfigapp::Action::Handle action(synfigapp::Action::create("GroupAddLayers")); + if(!action) return false; - + action->set_param("canvas",canvas_interface()->get_canvas()); action->set_param("canvas_interface",canvas_interface()); action->set_param("group",dest_group); @@ -589,7 +589,7 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons { Layer::Handle layer(reinterpret_cast(const_cast(selection_data.get_data()))[i]); assert(layer); - + action->set_param("layer",layer); } if(!canvas_interface()->get_instance()->perform_action(action)) @@ -603,23 +603,23 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons { synfig::String src_group(reinterpret_cast(selection_data.get_data())); synfig::String group(src_group); - + // Get rid of any parent group crap while(group.find(GROUP_NEST_CHAR)!=Glib::ustring::npos) group=Glib::ustring(group,group.find(GROUP_NEST_CHAR)+1,Glib::ustring::npos); - + group=dest_group+GROUP_NEST_CHAR+group; - - synfigapp::Action::Handle action(synfigapp::Action::create("group_rename")); - + + synfigapp::Action::Handle action(synfigapp::Action::create("GroupRename")); + if(!action) return false; - + action->set_param("canvas",canvas_interface()->get_canvas()); action->set_param("canvas_interface",canvas_interface()); action->set_param("group",src_group); action->set_param("new_group",group); - + if(!canvas_interface()->get_instance()->perform_action(action)) { passive_grouper.cancel(); @@ -635,7 +635,7 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons { Canvas::Handle dest_canvas; Layer::Handle dest_layer; - + dest_canvas=(Canvas::Handle)(row[model.canvas]); dest_layer=(Layer::Handle)(row[model.layer]); assert(dest_canvas); @@ -644,16 +644,16 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons return false; int dest_layer_depth=dest_layer->get_depth(); - + if(synfig::String(selection_data.get_data_type())=="LAYER")for(i=0;i(const_cast(selection_data.get_data()))[i]); assert(src); if(dest_layer==src) continue; - + // In this case, we are just moving. // if(dest_canvas==src->get_canvas()) { @@ -661,8 +661,8 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons dest_layer_depth--; if(dest_canvas==src->get_canvas() && dest_layer_depth==src->get_depth()) continue; - - synfigapp::Action::Handle action(synfigapp::Action::create("layer_move")); + + synfigapp::Action::Handle action(synfigapp::Action::create("LayerMove")); action->set_param("canvas",dest_canvas); action->set_param("canvas_interface",canvas_interface()); action->set_param("layer",src); @@ -670,12 +670,10 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons action->set_param("dest_canvas",dest_canvas); if(canvas_interface()->get_instance()->perform_action(action)) { - DEBUGPOINT(); ret=true; } else { - DEBUGPOINT(); passive_grouper.cancel(); return false; } @@ -683,11 +681,11 @@ LayerGroupTreeStore::drag_data_received_vfunc (const TreeModel::Path& dest, cons } } } - synfig::info("I suposidly moved %d layers",i); + synfig::info("I supposedly moved %d layers",i); // Reselect the previously selected layers canvas_interface()->get_selection_manager()->set_selected_layers(selected_layer_list); - + return ret; */ return false; @@ -703,9 +701,9 @@ void LayerGroupTreeStore::rebuild() { rebuilding=true; - etl::clock timer;timer.reset(); + // etl::clock timer;timer.reset(); try { - + // Clear out the current list clear(); Canvas::Handle canvas(canvas_interface()->get_canvas()); @@ -715,16 +713,16 @@ LayerGroupTreeStore::rebuild() String group(*groups.begin()); Gtk::TreeRow row(on_group_added(group)); std::set layers(canvas->get_layers_in_group(group)); - + for(;layers.size();layers.erase(layers.begin())) { Gtk::TreeRow layer_row(*(prepend(row.children()))); Layer::Handle layer(*layers.begin()); set_row_layer(layer_row,layer); - } + } } - - // Go ahead and and add all the layers + + // Go ahead and add all the layers /*std::for_each( canvas_interface()->get_canvas()->rbegin(), canvas_interface()->get_canvas()->rend(), sigc::mem_fun(*this, &studio::LayerGroupTreeStore::on_layer_added) @@ -736,7 +734,7 @@ LayerGroupTreeStore::rebuild() throw; } rebuilding=false; - synfig::info("LayerGroupTreeStore::rebuild() took %f seconds",float(timer())); + // synfig::info("LayerGroupTreeStore::rebuild() took %f seconds",float(timer())); } void @@ -751,8 +749,8 @@ LayerGroupTreeStore::refresh_row(Gtk::TreeModel::Row &row) if((bool)row[model.is_layer]) { Layer::Handle layer=row[model.layer]; - - + + //if(layer->dynamic_param_list().count("z_depth")) // row[model.z_depth]=Time::begin(); } @@ -787,7 +785,7 @@ LayerGroupTreeStore::on_group_added(synfig::String group) if(find_group_row(group, iter)) return *iter; } - + if(group.find(GROUP_NEST_CHAR)!=String::npos) { Gtk::TreeModel::Children::iterator iter; @@ -797,17 +795,17 @@ LayerGroupTreeStore::on_group_added(synfig::String group) if(parent_name.size()) parent_name+=GROUP_NEST_CHAR; parent_name+=string(group,0,group.find(GROUP_NEST_CHAR)); - + if(!find_group_row(parent_name, iter)) iter=on_group_added(parent_name); - + group=String(group,group.find(GROUP_NEST_CHAR)+1,String::npos); }while(group.find(GROUP_NEST_CHAR)!=String::npos); if(parent_name.size()) parent_name+=GROUP_NEST_CHAR; parent_name+=group; - + if(iter) { Gtk::TreeRow row(*(prepend(iter->children()))); @@ -830,30 +828,26 @@ LayerGroupTreeStore::on_group_added(synfig::String group) bool LayerGroupTreeStore::on_group_removed(synfig::String group) { - //DEBUGPOINT(); - Gtk::TreeModel::Children::iterator iter; if(find_group_row(group,iter) && iter->children().size()==0) erase(iter); else return false; - + return true; } bool -LayerGroupTreeStore::on_group_changed(synfig::String group) +LayerGroupTreeStore::on_group_changed(synfig::String /*group*/) { - //DEBUGPOINT(); return true; } void -LayerGroupTreeStore::on_group_pair_added(String group, etl::handle layer) +LayerGroupTreeStore::on_group_pair_added(synfig::String group, etl::handle layer) { if(!layer->get_canvas()) return; - //DEBUGPOINT(); Gtk::TreeModel::Children::iterator iter; if(!find_group_row(group, iter)) iter=on_group_added(group); @@ -864,22 +858,21 @@ LayerGroupTreeStore::on_group_pair_added(String group, etl::handle layer) } void -LayerGroupTreeStore::on_group_pair_removed(String group, etl::handle layer) +LayerGroupTreeStore::on_group_pair_removed(synfig::String group, etl::handle layer) { if(!layer->get_canvas()) return; - //DEBUGPOINT(); Gtk::TreeModel::Children::iterator iter; if(!find_group_row(group, iter)) return; Gtk::TreeModel::Children::iterator prev,layer_iter; - + if(!find_layer_row_(layer, layer->get_canvas(), iter->children(), layer_iter, prev)) return; - + erase(layer_iter); - + on_activity(); } @@ -889,7 +882,7 @@ LayerGroupTreeStore::on_activity() // If we aren't rebuilding and the last action // had something to do with groups, then go // a head and present the groups dialog. - if(!rebuilding && canvas_interface()->get_instance()->get_most_recent_action() && canvas_interface()->get_instance()->get_most_recent_action()->get_name().find("group")!=String::npos) + if(!rebuilding && canvas_interface()->get_instance()->get_most_recent_action() && canvas_interface()->get_instance()->get_most_recent_action()->get_name().find("Group")!=String::npos) try { App::dock_manager->find_dockable("groups").present(); @@ -898,7 +891,7 @@ LayerGroupTreeStore::on_activity() } void -LayerGroupTreeStore::on_layer_status_changed(synfig::Layer::Handle handle,bool x) +LayerGroupTreeStore::on_layer_status_changed(synfig::Layer::Handle handle,bool /*x*/) { Gtk::TreeModel::Children::iterator iter; if(find_layer_row(handle,iter)) @@ -918,9 +911,9 @@ LayerGroupTreeStore::on_layer_new_description(synfig::Layer::Handle handle,synfi if(find_layer_row(handle,iter)) { Gtk::TreeRow row(*iter); - - Layer::Handle layer(row[model.layer]); - + + Layer::Handle layer(row[model.layer]); + if(desc.empty()) { //row[model.label]=layer->get_local_name(); @@ -930,7 +923,7 @@ LayerGroupTreeStore::on_layer_new_description(synfig::Layer::Handle handle,synfi //row[model.label]=layer->get_description(); row[model.tooltip]=layer->get_local_name(); } - else + else { rebuild(); } @@ -940,7 +933,7 @@ bool LayerGroupTreeStore::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) { assert(layer); - + //if(layer->get_canvas()==canvas) { for(iter=prev=layers.begin(); iter && iter != layers.end(); prev=iter++) @@ -949,31 +942,30 @@ LayerGroupTreeStore::find_layer_row_(const synfig::Layer::Handle &layer, synfig: if((bool)row[model.is_layer] && layer==(synfig::Layer::Handle)row[model.layer]) return true; } - + iter=children().end(); - //DEBUGPOINT(); //return false; } Gtk::TreeModel::Children::iterator iter2; - + for(iter2 = layers.begin(); iter2 && iter2 != layers.end(); ++iter2) { Gtk::TreeModel::Row row = *iter2; assert((bool)true); - + if(row.children().empty()) continue; - + /*Canvas::Handle canvas((*row.children().begin())[model.canvas]); if(!canvas) continue; */ - + if(find_layer_row_(layer,canvas,iter2->children(),iter,prev)) return true; } - + iter=children().end(); return false; } @@ -986,7 +978,7 @@ LayerGroupTreeStore::find_layer_row(const synfig::Layer::Handle &layer, Gtk::Tre } bool -LayerGroupTreeStore::find_group_row(const String &group, Gtk::TreeModel::Children::iterator &iter) +LayerGroupTreeStore::find_group_row(const synfig::String &group, Gtk::TreeModel::Children::iterator &iter) { Gtk::TreeModel::Children::iterator prev; return find_group_row_(group,children(),iter,prev); @@ -1003,26 +995,25 @@ LayerGroupTreeStore::find_group_row_(const synfig::String &group, Gtk::TreeModel if((bool)row[model.is_group] && group==(Glib::ustring)row[model.group_name]) return true; } - + iter=children().end(); - //DEBUGPOINT(); //return false; } Gtk::TreeModel::Children::iterator iter2; - + for(iter2 = layers.begin(); iter2 && iter2 != layers.end(); ++iter2) { Gtk::TreeModel::Row row = *iter2; assert((bool)true); - + if(row.children().empty()) continue; - + if(find_group_row_(group,iter2->children(),iter,prev)) return true; } - + iter=children().end(); return false; }