X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fdock_layers.cpp;h=8fa6edeee8066bb50e7b21c33346f469a7bd3d3b;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=0402c3c364bd4908e31e728bbca9d5588a190379;hpb=ce408de81ca266b1f334ee9bc6c8fb7ba1492ed4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/dock_layers.cpp b/synfig-studio/trunk/src/gtkmm/dock_layers.cpp index 0402c3c..8fa6ede 100644 --- a/synfig-studio/trunk/src/gtkmm/dock_layers.cpp +++ b/synfig-studio/trunk/src/gtkmm/dock_layers.cpp @@ -2,10 +2,11 @@ /*! \file dock_layers.cpp ** \brief Template File ** -** $Id: dock_layers.cpp,v 1.2 2005/01/12 07:03:42 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007, 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 @@ -45,6 +46,8 @@ #include "layeractionmanager.h" //#include +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -76,7 +79,7 @@ Dock_Layers::Dock_Layers(): action_group_new_layers=Gtk::ActionGroup::create(); action_group_layer_ops=Gtk::ActionGroup::create(); - + std::map category_map; // Build layer creation actions @@ -84,10 +87,10 @@ Dock_Layers::Dock_Layers(): for(iter=synfig::Layer::book().begin();iter!=synfig::Layer::book().end();++iter) { synfig::Layer::Book::value_type lyr(*iter); - - if(lyr.second.category==_("Do Not Use")) + + if(lyr.second.category==CATEGORY_DO_NOT_USE) continue; - + action_group_new_layers->add(Gtk::Action::create( strprintf("layer-new-%s",lyr.first.c_str()), layer_icon(lyr.first.c_str()), @@ -102,43 +105,58 @@ Dock_Layers::Dock_Layers(): ); category_map[lyr.second.category]+=strprintf("",lyr.first.c_str()); - + //(*category_map)[lyr.second.category]->items().push_back(Gtk::Menu_Helpers::MenuElem(lyr.second.local_name, //)); } - + { Glib::RefPtr action_group_categories(Gtk::ActionGroup::create("layer-category")); synfig::String layer_ui_info; - - layer_ui_info+=""; + + layer_ui_info+=""; std::map::iterator iter; for(iter=category_map.begin();iter!=category_map.end();++iter) { layer_ui_info+=strprintf("%s",iter->first.c_str(),iter->second.c_str()); - action_group_categories->add(Gtk::Action::create(iter->first.c_str(),iter->first.c_str())); + action_group_categories->add(Gtk::Action::create(iter->first.c_str(),dgettext("synfig", iter->first.c_str()))); } - layer_ui_info+=""; - + layer_ui_info+=""; + App::ui_manager()->insert_action_group(action_group_categories); App::ui_manager()->insert_action_group(action_group_new_layers); - App::ui_manager()->add_ui_from_string(layer_ui_info); + + try + { + App::ui_manager()->add_ui_from_string(layer_ui_info); + } + catch(Glib::MarkupError x) + { + error("%s:%d caught MarkupError code %d: %s", __FILE__, __LINE__, x.code(), x.what().c_str()); + error("%s:%d with markup: \"%s\"", __FILE__, __LINE__, layer_ui_info.c_str()); + exit(1); + } } - - - action_group_layer_ops->add( Gtk::Action::create("toolbar-layer", "Layer Ops") ); - App::ui_manager()->insert_action_group(action_group_layer_ops); + if(layer_action_manager) + action_group_layer_ops->add(layer_action_manager->get_action_select_all_child_layers()); + + action_group_layer_ops->add( Gtk::Action::create("toolbar-layer", _("Layer Ops")) ); + App::ui_manager()->insert_action_group(action_group_layer_ops); Glib::ustring ui_info = "" " " - " " - " " - " " - " " + " " + " " + " " + " " + " " + " " + " " + " " " " " " " " @@ -150,7 +168,7 @@ Dock_Layers::Dock_Layers(): action_group_new_layers->set_sensitive(false); - set_toolbar(*dynamic_cast(App::ui_manager()->get_widget("/toolbar-layer"))); + set_toolbar(*dynamic_cast(App::ui_manager()->get_widget("/toolbar-layer"))); @@ -162,21 +180,21 @@ Dock_Layers::Dock_Layers(): { sigc::signal tmp_signal; - + tmp_signal.connect( sigc::bind( sigc::ptr_fun(do_nothing), ref_count ) ); - + synfig::info(__FILE__":%d:ref_count.count()=%d",__LINE__,ref_count.count()); tmp_signal(); synfig::info(__FILE__":%d:ref_count.count()=%d",__LINE__,ref_count.count()); - + tmp_signal.clear(); synfig::info(__FILE__":%d:ref_count.count()=%d",__LINE__,ref_count.count()); - + tmp_signal(); synfig::info(__FILE__":%d:ref_count.count()=%d",__LINE__,ref_count.count()); tmp_signal.connect( @@ -188,7 +206,7 @@ Dock_Layers::Dock_Layers(): synfig::info(__FILE__":%d:ref_count.count()=%d",__LINE__,ref_count.count()); } synfig::info(__FILE__":%d:ref_count.count()=%d",__LINE__,ref_count.count()); - assert(ref_count.count()==1); + assert(ref_count.count()==1); */ } @@ -207,7 +225,6 @@ Dock_Layers::init_canvas_view_vfunc(etl::loose_handle canvas_view) canvas_view->set_tree_model(get_name(),layer_tree_store); LayerTree* layer_tree(new LayerTree()); - layer_tree->set_model(layer_tree_store); layer_tree->set_time_adjustment(canvas_view->time_adjustment()); layer_tree->signal_edited_value().connect( @@ -216,10 +233,13 @@ Dock_Layers::init_canvas_view_vfunc(etl::loose_handle canvas_view) ) ); - canvas_view->set_ext_widget(get_name()+"_cmp",layer_tree); + // (a) should be before (b), (b) should be before (c) + canvas_view->set_ext_widget(get_name()+"_cmp",layer_tree); // (a) canvas_view->set_ext_widget(get_name(),&layer_tree->get_layer_tree_view()); canvas_view->set_ext_widget("params",&layer_tree->get_param_tree_view()); - canvas_view->set_tree_model("params",layer_tree->get_param_tree_view().get_model()); + + layer_tree->set_model(layer_tree_store); // (b) + canvas_view->set_tree_model("params",layer_tree->get_param_tree_view().get_model()); // (c) /* canvas_view->layermenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-delete"),Gtk::AccelKey("Delete"), @@ -240,7 +260,7 @@ Dock_Layers::changed_canvas_view_vfunc(etl::loose_handle canvas_view if(canvas_view) { Gtk::Widget* tree_view(canvas_view->get_ext_widget(get_name())); - + add(*tree_view); tree_view->show(); action_group_new_layers->set_sensitive(true); @@ -260,8 +280,8 @@ Dock_Layers::changed_canvas_view_vfunc(etl::loose_handle canvas_view layer_action_manager->set_canvas_interface(0); layer_action_manager->set_layer_tree(0); } - - clear_previous(); + + clear_previous(); } }