X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Flayertree.cpp;h=9f84d8d6dcdb0da3c448ed5c3fd35884292e1b30;hb=75635270584b5775982adbd70250a0ebc7e3e76b;hp=6e1c05cc28525ce5ee7e7fe377385436d4972d0c;hpb=3a3c4bca3a17137bec5d7960560934b91ef4146e;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/layertree.cpp b/synfig-studio/trunk/src/gtkmm/layertree.cpp index 6e1c05c..9f84d8d 100644 --- a/synfig-studio/trunk/src/gtkmm/layertree.cpp +++ b/synfig-studio/trunk/src/gtkmm/layertree.cpp @@ -1,20 +1,21 @@ -/* === S I N F G =========================================================== */ +/* === S Y N F I G ========================================================= */ /*! \file layertree.cpp ** \brief Template File ** ** $Id: layertree.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley ** -** 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 */ /* ========================================================================= */ @@ -32,8 +33,8 @@ #include "layerparamtreestore.h" #include "cellrenderer_value.h" #include "cellrenderer_timetrack.h" -#include -#include +#include +#include #include #include #include "app.h" @@ -46,7 +47,7 @@ using namespace std; using namespace etl; -using namespace sinfg; +using namespace synfig; using namespace studio; /* === M A C R O S ========================================================= */ @@ -119,12 +120,12 @@ LayerTree::LayerTree(): Gtk::Image *icon; - //Gtk::IconSize iconsize(Gtk::IconSize::from_name("sinfg-small_icon")); + //Gtk::IconSize iconsize(Gtk::IconSize::from_name("synfig-small_icon")); Gtk::IconSize iconsize(Gtk::ICON_SIZE_SMALL_TOOLBAR); SMALL_BUTTON(button_raise,"gtk-go-up","Raise"); SMALL_BUTTON(button_lower,"gtk-go-down","Lower"); - SMALL_BUTTON(button_duplicate,"sinfg-duplicate","Duplicate"); + SMALL_BUTTON(button_duplicate,"synfig-duplicate","Duplicate"); SMALL_BUTTON(button_delete,"gtk-delete","Delete"); hbox->pack_start(*button_raise,Gtk::PACK_SHRINK); @@ -177,7 +178,7 @@ LayerTree::LayerTree(): LayerTree::~LayerTree() { - sinfg::info("LayerTree::~LayerTree(): Deleted"); + synfig::info("LayerTree::~LayerTree(): Deleted"); } Gtk::Widget* @@ -187,10 +188,21 @@ LayerTree::create_layer_tree() { // --- O N / O F F ---------------------------------------------------- - int index; - index=get_layer_tree_view().append_column_editable(_(" "),layer_model.active); + //int index; + //index=get_layer_tree_view().append_column_editable(_(" "),layer_model.active); //Gtk::TreeView::Column* column = get_layer_tree_view().get_column(index-1); - } + + Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_(" ")) ); + + // Set up the icon cell-renderer + Gtk::CellRendererToggle* cellrenderer = Gtk::manage( new Gtk::CellRendererToggle() ); + cellrenderer->signal_toggled().connect(sigc::mem_fun(*this, &studio::LayerTree::on_layer_toggle)); + + column->pack_start(*cellrenderer,false); + column->add_attribute(cellrenderer->property_active(), layer_model.active); + get_layer_tree_view().append_column(*column); + } + { // --- I C O N -------------------------------------------------------- int index; index=get_layer_tree_view().append_column(_("Z"),layer_model.icon); @@ -209,8 +221,19 @@ LayerTree::create_layer_tree() } //get_layer_tree_view().append_column(_("Z"),layer_model.z_depth); { // --- N A M E -------------------------------------------------------- - int index; - index=get_layer_tree_view().append_column_editable(_("Layer"),layer_model.label); + Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Layer")) ); + + // Set up the icon cell-renderer + Gtk::CellRendererText* cellrenderer = Gtk::manage( new Gtk::CellRendererText() ); + cellrenderer->signal_edited().connect(sigc::mem_fun(*this, &studio::LayerTree::on_layer_renamed)); + cellrenderer->property_editable()=true; + + column->pack_start(*cellrenderer,false); + column->add_attribute(cellrenderer->property_text(), layer_model.label); + get_layer_tree_view().append_column(*column); + + // int index; +// index=get_layer_tree_view().append_column_editable(_("Layer"),layer_model.label); //Gtk::TreeView::Column* column = get_layer_tree_view().get_column(index-1); //column->set_sort_column_id(layer_model.index); @@ -235,48 +258,7 @@ LayerTree::create_layer_tree() column_z_depth->set_sort_column_id(layer_model.z_depth); } - /* - { // --- N A M E -------------------------------------------------------- - Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Layer")) ); - // Set up the icon cell-renderer - Gtk::CellRendererPixbuf* icon_cellrenderer = Gtk::manage( new Gtk::CellRendererPixbuf() ); - column->pack_start(*icon_cellrenderer,false); - column->add_attribute(icon_cellrenderer->property_pixbuf(), layer_model.icon); - - // Set up the text attributes - Pango::AttrList attr_list; - { - Pango::AttrInt pango_size(Pango::Attribute::create_attr_size(Pango::SCALE*8)); - pango_size.set_start_index(0); - pango_size.set_end_index(64); - attr_list.change(pango_size); - } - - // Pack the label into the column - //column->pack_start(layer_model.label,true); - Gtk::CellRendererText* text_cellrenderer = Gtk::manage( new Gtk::CellRendererText() ); - column->pack_start(*text_cellrenderer,false); - column->add_attribute(text_cellrenderer->property_text(), layer_model.label); - text_cellrenderer->property_attributes()=attr_list; - - // Finish setting up the column - column->set_reorderable(); - column->set_resizable(); - column->set_clickable(); - get_layer_tree_view().append_column(*column); - get_layer_tree_view().set_expander_column(*column); - } - */ - -/* { - Gtk::Widget& widget(get_layer_tree_view()); - Pango::FontDescription font(widget.get_modifier_style()->get_font()); - font.set_size(font.get_size()*3/4); - widget.get_modifier_style()->set_font(font); - widget.modify_style(widget.get_modifier_style()); - } -*/ get_layer_tree_view().set_enable_search(true); get_layer_tree_view().set_search_column(layer_model.label); get_layer_tree_view().set_search_equal_func(sigc::ptr_fun(&studio::LayerTreeStore::search_func)); @@ -344,7 +326,7 @@ LayerTree::create_param_tree() // Set up the value-node icon cell-renderer to be on the far right Gtk::CellRendererPixbuf* valuenode_icon_cellrenderer = Gtk::manage( new Gtk::CellRendererPixbuf() ); column->pack_end(*valuenode_icon_cellrenderer,false); - valuenode_icon_cellrenderer->property_pixbuf()=Gtk::Button().render_icon(Gtk::StockID("sinfg-value_node"),icon_size); + valuenode_icon_cellrenderer->property_pixbuf()=Gtk::Button().render_icon(Gtk::StockID("synfig-value_node"),icon_size); column->add_attribute(valuenode_icon_cellrenderer->property_visible(), param_model.is_shared); // Finish setting up the column @@ -360,7 +342,7 @@ LayerTree::create_param_tree() // Set up the value cell-renderer cellrenderer_value=LayerParamTreeStore::add_cell_renderer_value(column); cellrenderer_value->signal_edited().connect(sigc::mem_fun(*this, &studio::LayerTree::on_edited_value)); - cellrenderer_value->property_value()=sinfg::ValueBase(); + cellrenderer_value->property_value()=synfig::ValueBase(); column->add_attribute(cellrenderer_value->property_param_desc(), param_model.param_desc); column->add_attribute(cellrenderer_value->property_inconsistant(),param_model.is_inconsistent); //cellrenderer_value->property_canvas()=canvas_interface->get_canvas(); // Is this line necessary? @@ -420,9 +402,9 @@ LayerTree::create_param_tree() } void -LayerTree::on_waypoint_changed( sinfg::Waypoint waypoint , sinfg::ValueNode::Handle value_node) +LayerTree::on_waypoint_changed( synfig::Waypoint waypoint , synfig::ValueNode::Handle value_node) { - sinfgapp::Action::ParamList param_list; + synfigapp::Action::ParamList param_list; param_list.add("canvas",layer_tree_store_->canvas_interface()->get_canvas()); param_list.add("canvas_interface",layer_tree_store_->canvas_interface()); param_list.add("value_node",value_node); @@ -468,7 +450,7 @@ LayerTree::select_all_children(Gtk::TreeModel::Children::iterator iter) } void -LayerTree::select_all_children_layers(sinfg::Layer::Handle layer) +LayerTree::select_all_children_layers(synfig::Layer::Handle layer) { Gtk::TreeModel::Children::iterator iter; if(layer_tree_store_->find_layer_row(layer,iter)) @@ -511,7 +493,7 @@ LayerTree::get_selected_layers()const return ret; } -sinfg::Layer::Handle +synfig::Layer::Handle LayerTree::get_selected_layer()const { LayerList layers(get_selected_layers()); @@ -623,7 +605,7 @@ LayerTree::on_dirty_preview() void LayerTree::on_selection_changed() { - sinfgapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); + synfigapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); Gtk::TreeIter iter; if(last_top_selected_layer && !layer_tree_store_->find_layer_row(last_top_selected_layer,iter)) @@ -708,7 +690,7 @@ LayerTree::on_blend_method_changed() if(quick_layer->get_param("blend_method").is_valid()) { disable_amount_changed_signal=true; - signal_edited_value()(sinfgapp::ValueDesc(quick_layer,"blend_method"),blend_method_widget.get_value()); + signal_edited_value()(synfigapp::ValueDesc(quick_layer,"blend_method"),blend_method_widget.get_value()); disable_amount_changed_signal=false; } } @@ -722,13 +704,13 @@ LayerTree::on_amount_value_changed() return; disable_amount_changed_signal=true; - signal_edited_value()(sinfgapp::ValueDesc(quick_layer,"amount"),sinfg::ValueBase(layer_amount_adjustment_.get_value())); + signal_edited_value()(synfigapp::ValueDesc(quick_layer,"amount"),synfig::ValueBase(layer_amount_adjustment_.get_value())); disable_amount_changed_signal=false; } void -LayerTree::on_edited_value(const Glib::ustring&path_string,sinfg::ValueBase value) +LayerTree::on_edited_value(const Glib::ustring&path_string,synfig::ValueBase value) { Gtk::TreePath path(path_string); @@ -739,20 +721,29 @@ LayerTree::on_edited_value(const Glib::ustring&path_string,sinfg::ValueBase valu //signal_edited_value()(row[param_model.value_desc],value); } -/* +void +LayerTree::on_layer_renamed(const Glib::ustring&path_string,const Glib::ustring& value) +{ + Gtk::TreePath path(path_string); + + const Gtk::TreeRow row = *(get_layer_tree_view().get_model()->get_iter(path)); + if(!row) + return; + row[layer_model.label]=value; +} + void LayerTree::on_layer_toggle(const Glib::ustring& path_string) { Gtk::TreePath path(path_string); const Gtk::TreeRow row = *(get_layer_tree_view().get_model()->get_iter(path)); - - signal_layer_toggle()(row[layer_model.layer]); + bool active=static_cast(row[layer_model.active]); + row[layer_model.active]=!active; } -*/ void -LayerTree::on_waypoint_clicked(const Glib::ustring &path_string, sinfg::Waypoint waypoint,int button) +LayerTree::on_waypoint_clicked(const Glib::ustring &path_string, synfig::Waypoint waypoint,int button) { Gtk::TreePath path(path_string); @@ -760,7 +751,7 @@ LayerTree::on_waypoint_clicked(const Glib::ustring &path_string, sinfg::Waypoint if(!row) return; - signal_waypoint_clicked()(static_cast(row[param_model.value_desc]),waypoint,button); + signal_waypoint_clicked()(static_cast(row[param_model.value_desc]),waypoint,button); } bool @@ -878,17 +869,17 @@ LayerTree::on_param_tree_event(GdkEvent *event) LayerList layer_list(get_selected_layers()); if(layer_list.size()<=1) { - sinfgapp::ValueDesc value_desc(row[param_model.value_desc]); + synfigapp::ValueDesc value_desc(row[param_model.value_desc]); Gtk::Menu* menu(manage(new Gtk::Menu())); App::get_instance(param_tree_store_->canvas_interface()->get_canvas())->make_param_menu(menu,param_tree_store_->canvas_interface()->get_canvas(),value_desc,0.5f); menu->popup(event->button.button,gtk_get_current_event_time()); return true; } Gtk::Menu* menu(manage(new Gtk::Menu())); - std::list value_desc_list; + std::list value_desc_list; ParamDesc param_desc(row[param_model.param_desc]); for(;!layer_list.empty();layer_list.pop_back()) - value_desc_list.push_back(sinfgapp::ValueDesc(layer_list.back(),param_desc.get_name())); + value_desc_list.push_back(synfigapp::ValueDesc(layer_list.back(),param_desc.get_name())); App::get_instance(param_tree_store_->canvas_interface()->get_canvas())->make_param_menu(menu,param_tree_store_->canvas_interface()->get_canvas(),value_desc_list); menu->popup(event->button.button,gtk_get_current_event_time()); return true; @@ -989,19 +980,19 @@ LayerTree::on_param_tree_event(GdkEvent *event) void LayerTree::on_raise_pressed() { - sinfgapp::Action::ParamList param_list; + synfigapp::Action::ParamList param_list; param_list.add("time",layer_tree_store_->canvas_interface()->get_time()); param_list.add("canvas",layer_tree_store_->canvas_interface()->get_canvas()); param_list.add("canvas_interface",layer_tree_store_->canvas_interface()); { - sinfgapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); - sinfgapp::SelectionManager::LayerList::iterator iter; + synfigapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); + synfigapp::SelectionManager::LayerList::iterator iter; for(iter=layer_list.begin();iter!=layer_list.end();++iter) param_list.add("layer",Layer::Handle(*iter)); } - sinfgapp::Action::Handle action(sinfgapp::Action::create("layer_raise")); + synfigapp::Action::Handle action(synfigapp::Action::create("layer_raise")); action->set_param_list(param_list); layer_tree_store_->canvas_interface()->get_instance()->perform_action(action); } @@ -1009,20 +1000,20 @@ LayerTree::on_raise_pressed() void LayerTree::on_lower_pressed() { - sinfgapp::Action::ParamList param_list; + synfigapp::Action::ParamList param_list; param_list.add("time",layer_tree_store_->canvas_interface()->get_time()); param_list.add("canvas",layer_tree_store_->canvas_interface()->get_canvas()); param_list.add("canvas_interface",layer_tree_store_->canvas_interface()); { - sinfgapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); - sinfgapp::SelectionManager::LayerList::iterator iter; + synfigapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); + synfigapp::SelectionManager::LayerList::iterator iter; for(iter=layer_list.begin();iter!=layer_list.end();++iter) param_list.add("layer",Layer::Handle(*iter)); } - sinfgapp::Action::Handle action(sinfgapp::Action::create("layer_lower")); + synfigapp::Action::Handle action(synfigapp::Action::create("layer_lower")); action->set_param_list(param_list); layer_tree_store_->canvas_interface()->get_instance()->perform_action(action); } @@ -1030,20 +1021,20 @@ LayerTree::on_lower_pressed() void LayerTree::on_duplicate_pressed() { - sinfgapp::Action::ParamList param_list; + synfigapp::Action::ParamList param_list; param_list.add("time",layer_tree_store_->canvas_interface()->get_time()); param_list.add("canvas",layer_tree_store_->canvas_interface()->get_canvas()); param_list.add("canvas_interface",layer_tree_store_->canvas_interface()); { - sinfgapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); - sinfgapp::SelectionManager::LayerList::iterator iter; + synfigapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); + synfigapp::SelectionManager::LayerList::iterator iter; for(iter=layer_list.begin();iter!=layer_list.end();++iter) param_list.add("layer",Layer::Handle(*iter)); } - sinfgapp::Action::Handle action(sinfgapp::Action::create("layer_duplicate")); + synfigapp::Action::Handle action(synfigapp::Action::create("layer_duplicate")); action->set_param_list(param_list); layer_tree_store_->canvas_interface()->get_instance()->perform_action(action); } @@ -1051,20 +1042,20 @@ LayerTree::on_duplicate_pressed() void LayerTree::on_delete_pressed() { - sinfgapp::Action::ParamList param_list; + synfigapp::Action::ParamList param_list; param_list.add("time",layer_tree_store_->canvas_interface()->get_time()); param_list.add("canvas",layer_tree_store_->canvas_interface()->get_canvas()); param_list.add("canvas_interface",layer_tree_store_->canvas_interface()); { - sinfgapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); - sinfgapp::SelectionManager::LayerList::iterator iter; + synfigapp::SelectionManager::LayerList layer_list(get_selection_manager()->get_selected_layers()); + synfigapp::SelectionManager::LayerList::iterator iter; for(iter=layer_list.begin();iter!=layer_list.end();++iter) param_list.add("layer",Layer::Handle(*iter)); } - sinfgapp::Action::Handle action(sinfgapp::Action::create("layer_remove")); + synfigapp::Action::Handle action(synfigapp::Action::create("layer_remove")); action->set_param_list(param_list); layer_tree_store_->canvas_interface()->get_instance()->perform_action(action); } @@ -1092,9 +1083,9 @@ LayerTree::on_delete_pressed() void LayerTree::on_drag_data_get(const Glib::RefPtr&context, Gtk::SelectionData& selection_data, guint info, guint time) { - sinfg::info("Dragged data of type \"%s\"",selection_data.get_data_type()); - sinfg::info("Dragged data of target \"%s\"",gdk_atom_name(selection_data->target)); - sinfg::info("Dragged selection=\"%s\"",gdk_atom_name(selection_data->selection)); + synfig::info("Dragged data of type \"%s\"",selection_data.get_data_type()); + synfig::info("Dragged data of target \"%s\"",gdk_atom_name(selection_data->target)); + synfig::info("Dragged selection=\"%s\"",gdk_atom_name(selection_data->selection)); DEBUGPOINT(); @@ -1105,7 +1096,7 @@ LayerTree::on_drag_data_get(const Glib::RefPtr&context, Gtk::S Gtk::TreeRow row = *(get_selection()->get_selected()); DEBUGPOINT(); - if(sinfg::String(gdk_atom_name(selection_data->target))=="LAYER" && (bool)row[model.is_layer]) + if(synfig::String(gdk_atom_name(selection_data->target))=="LAYER" && (bool)row[model.is_layer]) { DEBUGPOINT(); Layer* layer(((Layer::Handle)row[model.layer]).get()); @@ -1119,10 +1110,10 @@ LayerTree::on_drag_data_get(const Glib::RefPtr&context, Gtk::S void LayerTree::on_drop_drag_data_received(const Glib::RefPtr& context, int x, int y, Gtk::SelectionData& selection_data, guint info, guint time) { - sinfg::info("Dropped data of type \"%s\"",selection_data.get_data_type()); - sinfg::info("Dropped data of target \"%s\"",gdk_atom_name(selection_data->target)); - sinfg::info("Dropped selection=\"%s\"",gdk_atom_name(selection_data->selection)); - sinfg::info("Dropped x=%d, y=%d",x,y); + synfig::info("Dropped data of type \"%s\"",selection_data.get_data_type()); + synfig::info("Dropped data of target \"%s\"",gdk_atom_name(selection_data->target)); + synfig::info("Dropped selection=\"%s\"",gdk_atom_name(selection_data->selection)); + synfig::info("Dropped x=%d, y=%d",x,y); bool success=false; bool dropped_on_specific_row=false; @@ -1147,7 +1138,7 @@ LayerTree::on_drop_drag_data_received(const Glib::RefPtr& cont if ((selection_data.get_length() >= 0) && (selection_data.get_format() == 8)) { - if(sinfg::String(selection_data.get_data_type())=="LAYER")do + if(synfig::String(selection_data.get_data_type())=="LAYER")do { Layer::Handle src(*reinterpret_cast(selection_data.get_data())); assert(src); @@ -1170,7 +1161,7 @@ LayerTree::on_drop_drag_data_received(const Glib::RefPtr& cont if(!dest_layer || dest_layer==src) break; - sinfgapp::Action::Handle action(sinfgapp::Action::create("layer_move")); + synfigapp::Action::Handle action(synfigapp::Action::create("layer_move")); action->set_param("canvas",dest_canvas); action->set_param("canvas_interface",layer_tree_store_->canvas_interface()); action->set_param("layer",src);