X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fcanvastreestore.cpp;h=f909ae84eab32c3e0e252c040d614392bbff78d9;hb=334e15ce6c4d9b1f30a168a55e7ef4d31320d568;hp=3a4c994576f8b2571a40a21e0374621c18ff28c6;hpb=ce408de81ca266b1f334ee9bc6c8fb7ba1492ed4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/canvastreestore.cpp b/synfig-studio/trunk/src/gtkmm/canvastreestore.cpp index 3a4c994..f909ae8 100644 --- a/synfig-studio/trunk/src/gtkmm/canvastreestore.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvastreestore.cpp @@ -2,7 +2,7 @@ /*! \file canvastreestore.cpp ** \brief Template File ** -** $Id: canvastreestore.cpp,v 1.1.1.1 2005/01/07 03:34:35 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley @@ -31,7 +31,7 @@ #include "canvastreestore.h" #include -#include "iconcontroler.h" +#include "iconcontroller.h" #include #include #include @@ -40,6 +40,8 @@ #include "cellrenderer_timetrack.h" #include +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -75,7 +77,7 @@ CanvasTreeStore::~CanvasTreeStore() } void -CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int column, Glib::ValueBase& value)const +CanvasTreeStore::get_value_vfunc(const Gtk::TreeModel::iterator& iter, int column, Glib::ValueBase& value)const { if(column==model.value.index()) { @@ -99,7 +101,7 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu synfig::error(__FILE__":%d: Unable to figure out value",__LINE__); return; } - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -112,7 +114,7 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu g_value_init(x.gobj(),x.value_type()); x.set(value_desc && value_desc.is_value_node()); - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -125,7 +127,7 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu g_value_init(x.gobj(),x.value_type()); x.set(value_desc.is_value_node() && value_desc.get_value_node()->rcount()>1); - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -138,7 +140,7 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu g_value_init(x.gobj(),x.value_type()); x.set(value_desc.is_value_node() && value_desc.get_value_node()->is_exported()); - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -151,7 +153,7 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu g_value_init(x.gobj(),x.value_type()); x.set(!value_desc && (Canvas::Handle)(*iter)[model.canvas]); - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -168,8 +170,8 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu else if(!value_desc && Canvas::Handle((*iter)[model.canvas])) x.set(Canvas::Handle((*iter)[model.canvas])->get_id()); else - return Gtk::TreeStore::get_value_vfunc(iter,column,value); - + return Gtk::TreeStore::get_value_vfunc(iter,column,value); + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -182,7 +184,7 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu g_value_init(x.gobj(),x.value_type()); x.set(!value_desc.is_value_node() || synfigapp::is_editable(value_desc.get_value_node())); - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -204,14 +206,14 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu { if(!value_desc.is_value_node() || value_desc.get_value_node()->get_name()=="constant") { - x.set(ValueBase::type_name(value_desc.get_value_type())); + x.set(ValueBase::type_local_name(value_desc.get_value_type())); } else { x.set(value_desc.get_value_node()->get_local_name()); } } - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -233,9 +235,9 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu x.set(canvas->get_id()); else if(!canvas->get_name().empty()) - x.set(canvas->get_name()); + x.set(canvas->get_name()); else - x.set(_("[Unnamed]")); + x.set(_("[Unnamed]")); x.set(_("Canvas")); } return Gtk::TreeStore::get_value_vfunc(iter,column,value); @@ -243,16 +245,16 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu else { ValueNode::Handle value_node=value_desc.get_value_node(); - + // Setup the row's label if(value_node->get_id().empty()) - x.set(Glib::ustring((*iter)[model.name])); + x.set(Glib::ustring((*iter)[model.name])); else if(Glib::ustring((*iter)[model.name]).empty()) x.set(value_node->get_id()); else - x.set(Glib::ustring((*iter)[model.name])+" ("+value_node->get_id()+')'); + x.set(Glib::ustring((*iter)[model.name])+" ("+value_node->get_id()+')'); } - + g_value_init(value.gobj(),x.value_type()); g_value_copy(x.gobj(),value.gobj()); } @@ -265,7 +267,7 @@ CanvasTreeStore::get_value_vfunc (const Gtk::TreeModel::iterator& iter, int colu Glib::Value > x; g_value_init(x.gobj(),x.value_type()); - + x.set(get_tree_pixbuf(value_desc.get_value_type())); g_value_init(value.gobj(),x.value_type()); @@ -284,7 +286,8 @@ CanvasTreeStore::find_first_value_desc(const synfigapp::ValueDesc& value_desc, G if(!iter->children().empty()) { Gtk::TreeIter iter2(iter->children().begin()); - if(iter2 && value_desc==(*iter2)[model.value_desc] || find_next_value_desc(value_desc, iter2)) + //! \todo confirm that the && should be done before the || + if((iter2 && value_desc==(*iter2)[model.value_desc]) || find_next_value_desc(value_desc, iter2)) { iter=iter2; return true; @@ -303,12 +306,13 @@ bool CanvasTreeStore::find_next_value_desc(const synfigapp::ValueDesc& value_desc, Gtk::TreeIter& iter) { if(!iter) return find_first_value_desc(value_desc,iter); - + if(iter) do { if(!iter->children().empty()) { Gtk::TreeIter iter2(iter->children().begin()); - if(iter2 && value_desc==(*iter2)[model.value_desc] || find_next_value_desc(value_desc, iter2)) + //! \todo confirm that the && should be done before the || + if((iter2 && value_desc==(*iter2)[model.value_desc]) || find_next_value_desc(value_desc, iter2)) { iter=iter2; return true; @@ -326,13 +330,8 @@ CanvasTreeStore::find_next_value_desc(const synfigapp::ValueDesc& value_desc, Gt return (bool)iter && value_desc==(*iter)[model.value_desc]; } - - - - - bool -CanvasTreeStore::find_first_value_node(const ValueNode::Handle& value_node, Gtk::TreeIter& iter) +CanvasTreeStore::find_first_value_node(const synfig::ValueNode::Handle& value_node, Gtk::TreeIter& iter) { iter=children().begin(); while(iter && value_node!=(ValueNode::Handle)(*iter)[model.value_node]) @@ -340,7 +339,8 @@ CanvasTreeStore::find_first_value_node(const ValueNode::Handle& value_node, Gtk: if(!iter->children().empty()) { Gtk::TreeIter iter2(iter->children().begin()); - if(iter2 && value_node==(ValueNode::Handle)(*iter2)[model.value_node] || find_next_value_node(value_node, iter2)) + //! \todo confirm that the && should be done before the || + if((iter2 && value_node==(ValueNode::Handle)(*iter2)[model.value_node]) || find_next_value_node(value_node, iter2)) { iter=iter2; return true; @@ -356,15 +356,16 @@ CanvasTreeStore::find_first_value_node(const ValueNode::Handle& value_node, Gtk: } bool -CanvasTreeStore::find_next_value_node(const ValueNode::Handle& value_node, Gtk::TreeIter& iter) +CanvasTreeStore::find_next_value_node(const synfig::ValueNode::Handle& value_node, Gtk::TreeIter& iter) { if(!iter) return find_first_value_node(value_node,iter); - + if(iter) do { if(!iter->children().empty()) { Gtk::TreeIter iter2(iter->children().begin()); - if(iter2 && value_node==(ValueNode::Handle)(*iter2)[model.value_node] || find_next_value_node(value_node, iter2)) + //! \todo confirm that the && should be done before the || + if((iter2 && value_node==(ValueNode::Handle)(*iter2)[model.value_node]) || find_next_value_node(value_node, iter2)) { iter=iter2; return true; @@ -386,13 +387,14 @@ void CanvasTreeStore::set_row(Gtk::TreeRow row,synfigapp::ValueDesc value_desc, bool do_children) { Gtk::TreeModel::Children children = row.children(); - while(!children.empty() && erase(children.begin())); + while(!children.empty() && erase(children.begin())) + ; row[model.value_desc]=value_desc; try { //row[model.icon] = get_tree_pixbuf(value_desc.get_value_type()); - + if(value_desc.is_value_node()) { ValueNode::Handle value_node=value_desc.get_value_node(); @@ -404,16 +406,16 @@ CanvasTreeStore::set_row(Gtk::TreeRow row,synfigapp::ValueDesc value_desc, bool //row[model.is_value_node] = true; //row[model.is_editable] = synfigapp::is_editable(value_node); //row[model.id]=value_node->get_id(); - + // Set the canvas if(value_desc.parent_is_canvas()) row[model.canvas]=value_desc.get_canvas(); else row[model.canvas]=canvas_interface()->get_canvas(); - + LinkableValueNode::Handle linkable; linkable=LinkableValueNode::Handle::cast_dynamic(value_node); - + if(linkable && do_children) { row[model.link_count] = linkable->link_count(); @@ -442,7 +444,7 @@ CanvasTreeStore::set_row(Gtk::TreeRow row,synfigapp::ValueDesc value_desc, bool erase(row); return; } - + // We should never get to this point assert(0); } @@ -458,52 +460,52 @@ CanvasTreeStore::refresh_row(Gtk::TreeModel::Row &row, bool do_children) (!bool(row[model.is_value_node]) && row[model.link_count]!=0)) { set_row(row,value_desc,do_children); - return; + return; } - + if(row[model.is_value_node]) { ValueNode::Handle value_node(value_desc.get_value_node()); - + if(ValueNode::Handle(row[model.value_node])!=value_node) { rebuild_row(row,do_children); return; } - + //row[model.id]=value_node->get_id(); - + // Setup the row's label /* if(value_node->get_id().empty()) - row[model.label] = Glib::ustring(row[model.name]); + row[model.label] = Glib::ustring(row[model.name]); else if(Glib::ustring(row[model.name]).empty()) row[model.label] = value_node->get_id(); else - row[model.label] = Glib::ustring(row[model.name])+" ("+value_node->get_id()+')'; + row[model.label] = Glib::ustring(row[model.name])+" ("+value_node->get_id()+')'; */ - + LinkableValueNode::Handle linkable; linkable=LinkableValueNode::Handle::cast_dynamic(value_node); if(do_children && linkable && ((int)row[model.link_count] != linkable->link_count())) { // Gtk::TreeModel::Children children = row.children(); // while(!children.empty() && erase(children.begin())); - + set_row(row,value_desc); - return; + return; } } else { - //row[model.label] = Glib::ustring(row[model.name]); + //row[model.label] = Glib::ustring(row[model.name]); //row[model.is_value_node] = false; //row[model.is_editable] = true; } } if(!do_children) - return; - + return; + Gtk::TreeModel::Children children = row.children(); Gtk::TreeModel::Children::iterator iter; @@ -526,14 +528,14 @@ CanvasTreeStore::rebuild_row(Gtk::TreeModel::Row &row, bool do_children) value_node=value_desc.get_value_node(); assert(value_node);if(!value_node)return; - + if(value_node && value_node!=(ValueNode::Handle)row[model.value_node]) { // Gtk::TreeModel::Children children = row.children(); // while(!children.empty() && erase(children.begin())); - + set_row(row,value_desc,do_children); - return; + return; } LinkableValueNode::Handle linkable; @@ -543,34 +545,35 @@ CanvasTreeStore::rebuild_row(Gtk::TreeModel::Row &row, bool do_children) { // Gtk::TreeModel::Children children = row.children(); // while(!children.empty() && erase(children.begin())); - + set_row(row,value_desc); - return; + return; } - + //if(!value_node) // value_node=row[model.value_node]; - + row[model.id]=value_node->get_id(); // Setup the row's label if(value_node->get_id().empty()) - row[model.label] = Glib::ustring(row[model.name]); + row[model.label] = Glib::ustring(row[model.name]); else if(Glib::ustring(row[model.name]).empty()) row[model.label] = value_node->get_id(); else - row[model.label] = Glib::ustring(row[model.name])+" ("+value_node->get_id()+')'; + row[model.label] = Glib::ustring(row[model.name])+" ("+value_node->get_id()+')'; } else { - row[model.label] = Glib::ustring(row[model.name]); + row[model.label] = Glib::ustring(row[model.name]); row[model.is_value_node] = false; row[model.is_editable] = true; Gtk::TreeModel::Children children = row.children(); - while(!children.empty() && erase(children.begin())); + while(!children.empty() && erase(children.begin())) + ; } if(!do_children) - return; + return; Gtk::TreeModel::Children children = row.children(); Gtk::TreeModel::Children::iterator iter; @@ -586,9 +589,9 @@ CellRenderer_ValueBase* CanvasTreeStore::add_cell_renderer_value(Gtk::TreeView::Column* column) { const CanvasTreeStore::Model model; - + CellRenderer_ValueBase* ret; - + ret=Gtk::manage( new CellRenderer_ValueBase() ); column->pack_start(*ret,true); @@ -603,16 +606,16 @@ CellRenderer_TimeTrack* CanvasTreeStore::add_cell_renderer_value_node(Gtk::TreeView::Column* column) { const CanvasTreeStore::Model model; - + CellRenderer_TimeTrack* ret; - + ret = Gtk::manage( new CellRenderer_TimeTrack() ); - + column->pack_start(*ret,true); //column->add_attribute(ret->property_visible(), model.is_value_node); column->add_attribute(ret->property_value_desc(), model.value_desc); column->add_attribute(ret->property_canvas(), model.canvas); - - + + return ret; }