/*! \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 Robert B. Quattlebaum Jr.
+** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007, 2008 Chris Moore
**
-** This software and associated documentation
-** are CONFIDENTIAL and PROPRIETARY property of
-** the above-mentioned copyright holder.
+** This package is free software; you can redistribute it and/or
+** modify it under the terms of the GNU General Public License as
+** published by the Free Software Foundation; either version 2 of
+** the License, or (at your option) any later version.
**
-** You may not copy, print, publish, or in any
-** other way distribute this software without
-** a prior written agreement with
-** the copyright holder.
+** This package is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+** General Public License for more details.
** \endlegal
*/
/* ========================================================================= */
#include "layeractionmanager.h"
//#include <ETL/ref_count>
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
action_group_new_layers=Gtk::ActionGroup::create();
action_group_layer_ops=Gtk::ActionGroup::create();
-
+
std::map<synfig::String,synfig::String> category_map;
// Build layer creation actions
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()),
);
category_map[lyr.second.category]+=strprintf("<menuitem action='layer-new-%s' />",lyr.first.c_str());
-
+
//(*category_map)[lyr.second.category]->items().push_back(Gtk::Menu_Helpers::MenuElem(lyr.second.local_name,
//));
}
-
+
{
Glib::RefPtr<Gtk::ActionGroup> action_group_categories(Gtk::ActionGroup::create("layer-category"));
synfig::String layer_ui_info;
-
- layer_ui_info+="<ui><menubar action='menu-main'><menu action='menu-layer'><menu action='menu-layer-new'>";
+
+ layer_ui_info+="<ui><popup action='menu-main'><menu action='menu-layer'><menu action='menu-layer-new'>";
std::map<synfig::String,synfig::String>::iterator iter;
for(iter=category_map.begin();iter!=category_map.end();++iter)
{
layer_ui_info+=strprintf("<menu action='%s'>%s</menu>",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+="</menu></menu></menubar></ui>";
-
+ layer_ui_info+="</menu></menu></popup></ui>";
+
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 =
"<ui>"
" <toolbar action='toolbar-layer'>"
- " <toolitem action='action-layer_raise' />"
- " <toolitem action='action-layer_lower' />"
- " <toolitem action='action-layer_duplicate' />"
- " <toolitem action='action-layer_remove' />"
+ " <toolitem action='action-LayerRaise' />"
+ " <toolitem action='action-LayerLower' />"
+ " <separator />"
+ " <toolitem action='action-LayerDuplicate' />"
+ " <toolitem action='action-LayerEncapsulate' />"
+ " <toolitem action='select-all-child-layers' />"
+ " <toolitem action='action-LayerRemove' />"
+ " <separator />"
" <toolitem action='cut' />"
" <toolitem action='copy' />"
" <toolitem action='paste' />"
action_group_new_layers->set_sensitive(false);
- set_toolbar(*dynamic_cast<Gtk::Toolbar*>(App::ui_manager()->get_widget("/toolbar-layer")));
+ set_toolbar(*dynamic_cast<Gtk::Toolbar*>(App::ui_manager()->get_widget("/toolbar-layer")));
{
sigc::signal<void> 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(
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);
*/
}
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(
)
);
- 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"),
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);
layer_action_manager->set_canvas_interface(0);
layer_action_manager->set_layer_tree(0);
}
-
- clear_previous();
+
+ clear_previous();
}
}