Rename get_param_vocab to get_children_vocab and use a wrapper for the pure virtual...
[synfig.git] / synfig-studio / src / gui / trees / canvastreestore.cpp
index 8673c35..7c9a4b6 100644 (file)
@@ -37,8 +37,8 @@
 #include <synfig/valuenode_animated.h>
 #include <gtkmm/button.h>
 #include <synfigapp/instance.h>
-#include "cellrenderer_value.h"
-#include "cellrenderer_timetrack.h"
+#include "cellrenderer/cellrenderer_value.h"
+#include "cellrenderer/cellrenderer_timetrack.h"
 #include <ETL/clock>
 
 #include "general.h"
@@ -193,6 +193,7 @@ CanvasTreeStore::get_value_vfunc(const Gtk::TreeModel::iterator& iter, int colum
        if(column==model.type.index())
        {
                synfigapp::ValueDesc value_desc((*iter)[model.value_desc]);
+               String stype, lname;
 
                Glib::Value<Glib::ustring> x;
                g_value_init(x.gobj(),x.value_type());
@@ -205,16 +206,22 @@ CanvasTreeStore::get_value_vfunc(const Gtk::TreeModel::iterator& iter, int colum
                }
                else
                {
-                       if(!value_desc.is_value_node() || value_desc.get_value_node()->get_name()=="constant")
+                       stype=ValueBase::type_local_name(value_desc.get_value_type());
+                       if(value_desc.get_value_node())
                        {
-                               x.set(ValueBase::type_local_name(value_desc.get_value_type()));
+                               lname=value_desc.get_value_node()->get_name();
+                               if (lname=="animated" || lname=="static" ||
+                               synfig::LinkableValueNode::Handle::cast_dynamic(value_desc.get_value_node())
+                               )
+                                       stype+=" (" + value_desc.get_value_node()->get_local_name() + ")";
                        }
-                       else
+                       else if(value_desc.parent_is_layer_param())
                        {
-                               x.set(value_desc.get_value_node()->get_local_name());
+                               if(value_desc.get_value().get_static())
+                                       stype+=_(" (Static)");
                        }
                }
-
+               x.set(stype.c_str());
                g_value_init(value.gobj(),x.value_type());
                g_value_copy(x.gobj(),value.gobj());
        }
@@ -420,12 +427,16 @@ CanvasTreeStore::set_row(Gtk::TreeRow row,synfigapp::ValueDesc value_desc, bool
                        if(linkable && do_children)
                        {
                                row[model.link_count] = linkable->link_count();
-                               for(int i=0;i<linkable->link_count();i++)
+                               LinkableValueNode::Vocab vocab(linkable->get_children_vocab());
+                               LinkableValueNode::Vocab::iterator iter(vocab.begin());
+                               for(int i=0;i<linkable->link_count();i++, iter++)
                                {
                                        Gtk::TreeRow child_row=*(append(row.children()));
                                        child_row[model.link_id] = i;
                                        child_row[model.canvas] = static_cast<Canvas::Handle>(row[model.canvas]);
                                        child_row[model.name] = linkable->link_local_name(i);
+                                       child_row[model.tooltip] = iter->get_description();
+                                       child_row[model.child_param_desc] = *iter;
                                        set_row(child_row,synfigapp::ValueDesc(linkable,i));
                                }
                        }