X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fchildrentreestore.cpp;h=cf8798f609c33f3f2f005696c3ed07745a967a54;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=e50f45dfe5c1adda8c35aa216fe1d354f082a18b;hpb=ce408de81ca266b1f334ee9bc6c8fb7ba1492ed4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/childrentreestore.cpp b/synfig-studio/trunk/src/gtkmm/childrentreestore.cpp index e50f45d..cf8798f 100644 --- a/synfig-studio/trunk/src/gtkmm/childrentreestore.cpp +++ b/synfig-studio/trunk/src/gtkmm/childrentreestore.cpp @@ -2,10 +2,11 @@ /*! \file childrentreestore.cpp ** \brief Template File ** -** $Id: childrentreestore.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007 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,11 +31,13 @@ #endif #include "childrentreestore.h" -#include "iconcontroler.h" +#include "iconcontroller.h" #include #include #include +#include "general.h" + class Profiler : private etl::clock { const std::string name; @@ -83,12 +86,13 @@ ChildrenTreeStore::ChildrenTreeStore(etl::loose_handlesignal_value_node_changed().connect(sigc::mem_fun(*this,&studio::ChildrenTreeStore::on_value_node_changed)); + canvas_interface()->signal_value_node_renamed().connect(sigc::mem_fun(*this,&studio::ChildrenTreeStore::on_value_node_renamed)); canvas_interface()->signal_value_node_added().connect(sigc::mem_fun(*this,&studio::ChildrenTreeStore::on_value_node_added)); canvas_interface()->signal_value_node_deleted().connect(sigc::mem_fun(*this,&studio::ChildrenTreeStore::on_value_node_deleted)); canvas_interface()->signal_value_node_replaced().connect(sigc::mem_fun(*this,&studio::ChildrenTreeStore::on_value_node_replaced)); canvas_interface()->signal_canvas_added().connect(sigc::mem_fun(*this,&studio::ChildrenTreeStore::on_canvas_added)); canvas_interface()->signal_canvas_removed().connect(sigc::mem_fun(*this,&studio::ChildrenTreeStore::on_canvas_removed)); - + rebuild(); } @@ -105,7 +109,7 @@ ChildrenTreeStore::create(etl::loose_handle canvas_i void ChildrenTreeStore::rebuild() { - Profiler profiler("ChildrenTreeStore::rebuild()"); + // Profiler profiler("ChildrenTreeStore::rebuild()"); rebuild_value_nodes(); rebuild_canvases(); } @@ -113,7 +117,7 @@ ChildrenTreeStore::rebuild() void ChildrenTreeStore::refresh() { - Profiler profiler("ChildrenTreeStore::refresh()"); + // Profiler profiler("ChildrenTreeStore::refresh()"); refresh_value_nodes(); refresh_canvases(); } @@ -124,13 +128,13 @@ ChildrenTreeStore::rebuild_value_nodes() Gtk::TreeModel::Children children(value_node_row.children()); while(!children.empty())erase(children.begin()); - + clear_changed_queue(); - + std::for_each( canvas_interface()->get_canvas()->value_node_list().rbegin(), canvas_interface()->get_canvas()->value_node_list().rend(), sigc::mem_fun(*this, &studio::ChildrenTreeStore::on_value_node_added) - ); + ); } void @@ -144,7 +148,6 @@ ChildrenTreeStore::refresh_value_nodes() for(iter = children.begin(); iter != children.end(); ++iter) { Gtk::TreeRow row=*iter; - //DEBUGPOINT(); refresh_row(row); } } @@ -153,13 +156,13 @@ void ChildrenTreeStore::rebuild_canvases() { Gtk::TreeModel::Children children(canvas_row.children()); - + while(!children.empty())erase(children.begin()); - + std::for_each( canvas_interface()->get_canvas()->children().rbegin(), canvas_interface()->get_canvas()->children().rend(), sigc::mem_fun(*this, &studio::ChildrenTreeStore::on_canvas_added) - ); + ); } void @@ -169,10 +172,10 @@ ChildrenTreeStore::refresh_canvases() } void -ChildrenTreeStore::refresh_row(Gtk::TreeModel::Row &row, bool do_children) +ChildrenTreeStore::refresh_row(Gtk::TreeModel::Row &row, bool /*do_children*/) { CanvasTreeStore::refresh_row(row,false); - + if((bool)row[model.is_value_node]) { changed_set_.erase(row[model.value_node]); @@ -181,22 +184,22 @@ ChildrenTreeStore::refresh_row(Gtk::TreeModel::Row &row, bool do_children) } void -ChildrenTreeStore::on_canvas_added(Canvas::Handle canvas) +ChildrenTreeStore::on_canvas_added(synfig::Canvas::Handle canvas) { Gtk::TreeRow row = *(prepend(canvas_row.children())); - row[model.icon] = Gtk::Button().render_icon(Gtk::StockID("synfig-canvas"),Gtk::ICON_SIZE_SMALL_TOOLBAR); + row[model.icon] = Gtk::Button().render_icon(Gtk::StockID("synfig-canvas"),Gtk::ICON_SIZE_SMALL_TOOLBAR); row[model.id] = canvas->get_id(); row[model.name] = canvas->get_name(); - + if(!canvas->get_id().empty()) row[model.label] = canvas->get_id(); else if(!canvas->get_name().empty()) - row[model.label] = canvas->get_name(); + row[model.label] = canvas->get_name(); else - row[model.label] = _("[Unnamed]"); - + row[model.label] = _("[Unnamed]"); + row[model.canvas] = canvas; row[model.type] = _("Canvas"); //row[model.is_canvas] = true; @@ -204,27 +207,27 @@ ChildrenTreeStore::on_canvas_added(Canvas::Handle canvas) } void -ChildrenTreeStore::on_canvas_removed(Canvas::Handle canvas) +ChildrenTreeStore::on_canvas_removed(synfig::Canvas::Handle /*canvas*/) { rebuild_canvases(); } void -ChildrenTreeStore::on_value_node_added(ValueNode::Handle value_node) +ChildrenTreeStore::on_value_node_added(synfig::ValueNode::Handle value_node) { // if(value_node->get_id().find("Unnamed")!=String::npos) // return; Gtk::TreeRow row = *prepend(value_node_row.children()); - + set_row(row,synfigapp::ValueDesc(canvas_interface()->get_canvas(),value_node->get_id()),false); } void -ChildrenTreeStore::on_value_node_deleted(etl::handle value_node) +ChildrenTreeStore::on_value_node_deleted(synfig::ValueNode::Handle value_node) { Gtk::TreeIter iter; - //int i(0); + //int i(0); if(find_first_value_node(value_node,iter)) { @@ -236,25 +239,24 @@ ChildrenTreeStore::on_value_node_deleted(etl::handle value_node) bool ChildrenTreeStore::execute_changed_value_nodes() { - Profiler profiler("ChildrenTreeStore::execute_changed_value_nodes()"); - DEBUGPOINT(); + // Profiler profiler("ChildrenTreeStore::execute_changed_value_nodes()"); if(!replaced_set_.empty()) rebuild_value_nodes(); etl::clock timer; timer.reset(); - + while(!changed_set_.empty()) { ValueNode::Handle value_node(*changed_set_.begin()); changed_set_.erase(value_node); Gtk::TreeIter iter; - + try { Gtk::TreeIter iter; - int i(0); + int i(0); if(!value_node->is_exported() && find_first_value_node(value_node,iter)) { @@ -268,13 +270,13 @@ ChildrenTreeStore::execute_changed_value_nodes() i++; refresh_row(row); }while(find_next_value_node(value_node,iter)); - + if(!i) { refresh_value_nodes(); return false; } - + } catch(...) { @@ -289,27 +291,27 @@ ChildrenTreeStore::execute_changed_value_nodes() return false; } } - + return false; } void -ChildrenTreeStore::on_value_node_changed(etl::handle value_node) +ChildrenTreeStore::on_value_node_changed(synfig::ValueNode::Handle value_node) { - if(value_node->get_name()=="constant" || !value_node->is_exported()) + if(!value_node->is_exported()) return; changed_connection.disconnect(); // if(!execute_changed_queued()) // changed_connection=Glib::signal_idle().connect(sigc::mem_fun(*this,&ChildrenTreeStore::execute_changed_value_nodes)); changed_connection=Glib::signal_timeout().connect(sigc::mem_fun(*this,&ChildrenTreeStore::execute_changed_value_nodes),150); - + changed_set_.insert(value_node); /* try { Gtk::TreeIter iter; - int i(0); + int i(0); while(find_next_value_node(value_node,iter)) { Gtk::TreeRow row(*iter); @@ -329,13 +331,19 @@ ChildrenTreeStore::on_value_node_changed(etl::handle value_node) } void -ChildrenTreeStore::on_value_node_replaced(synfig::ValueNode::Handle replaced_value_node,synfig::ValueNode::Handle new_value_node) +ChildrenTreeStore::on_value_node_renamed(synfig::ValueNode::Handle value_node __attribute__ ((unused))) +{ + rebuild_value_nodes(); +} + +void +ChildrenTreeStore::on_value_node_replaced(synfig::ValueNode::Handle replaced_value_node,synfig::ValueNode::Handle /*new_value_node*/) { changed_connection.disconnect(); //if(!execute_changed_queued()) // changed_connection=Glib::signal_idle().connect(sigc::mem_fun(*this,&ChildrenTreeStore::execute_changed_value_nodes)); changed_connection=Glib::signal_timeout().connect(sigc::mem_fun(*this,&ChildrenTreeStore::execute_changed_value_nodes),150); - + replaced_set_.insert(replaced_value_node); } @@ -376,6 +384,6 @@ ChildrenTreeStore::set_value_impl(const Gtk::TreeModel::iterator& iter, int colu } catch(std::exception x) { - g_warning(x.what()); - } + g_warning("%s", x.what()); + } }