X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fcanvasview.cpp;h=ad2ab6be9aa8d1ed479bb2e93408f1371d4b94f9;hb=756c0d29ac1742f231e6615f9a577e574e35a4af;hp=9cf3aad545eb4be5c776c29b2e1f6dd901e8b14c;hpb=fa0d98d6982bcc2fc503cf7c0f4c05df30a5c370;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index 9cf3aad..ad2ab6b 100644 --- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp @@ -6,7 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2007 Chris Moore +** 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 @@ -109,7 +109,7 @@ using namespace std; using namespace etl; using namespace synfig; using namespace studio; -using namespace SigC; +using namespace sigc; /* === M A C R O S ========================================================= */ @@ -123,13 +123,6 @@ using namespace SigC; #define DEFAULT_TIME_WINDOW_SIZE (10.0) -/* -#ifdef DEBUGPOINT -#undef DEBUGPOINT -#endif -#define DEBUGPOINT() -*/ - #ifndef SMALL_BUTTON #define SMALL_BUTTON(button,stockid,tooltip) \ button = manage(new class Gtk::Button()); \ @@ -449,7 +442,7 @@ public: { // assert(view->layer_tree); - if(!view->layer_tree) { DEBUGPOINT(); synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return LayerList(); } + if(!view->layer_tree) { synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return LayerList(); } return view->layer_tree->get_selected_layers(); } @@ -458,7 +451,7 @@ public: { // assert(view->layer_tree); - if(!view->layer_tree) { DEBUGPOINT(); synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return 0; } + if(!view->layer_tree) { synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return 0; } return view->layer_tree->get_selected_layer(); } @@ -467,7 +460,7 @@ public: { // assert(view->layer_tree); - if(!view->layer_tree) { DEBUGPOINT(); synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return; } + if(!view->layer_tree) { synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return; } view->layer_tree->select_layers(layer_list); //view->get_smach().process_event(EVENT_REFRESH_DUCKS); @@ -479,7 +472,7 @@ public: { // assert(view->layer_tree); - if(!view->layer_tree) { DEBUGPOINT(); synfig::error("canvas_view.layer_tree not defined!?"); return; } + if(!view->layer_tree) { synfig::error("canvas_view.layer_tree not defined!?"); return; } view->layer_tree->select_layer(layer); //view->queue_rebuild_ducks(); } @@ -919,11 +912,22 @@ CanvasView::~CanvasView() // this was causing a crash before canvas_interface()->signal_dirty_preview().clear(); - synfig::info("CanvasView:~CanvasView(): Destructor Finished"); + if (getenv("SYNFIG_DEBUG_DESTRUCTORS")) + synfig::info("CanvasView::~CanvasView(): Deleted"); } +std::list& +CanvasView::get_pixel_sizes() +{ + // prime factors of 120 are 2, 2, 2, 3, 5 - see TILE_SIZE in synfig-core/trunk/src/synfig/target_tile.h + static int pixel_size_array[] = {2,3,4,5,6,8,10,12,15,20,24,30,40,60,120}; + static list pixel_sizes = list(pixel_size_array, pixel_size_array + sizeof(pixel_size_array) / sizeof(int)); + + return pixel_sizes; +} + Gtk::Widget * CanvasView::create_time_bar() { @@ -1053,109 +1057,117 @@ void CanvasView::on_current_time_widget_changed() { set_time(current_time_widget->get_value()); -} - -Gtk::Widget* -CanvasView::create_children_tree() -{ - // Create the layer tree - children_tree=manage(new class ChildrenTree()); - - // Set up the layer tree - //children_tree->set_model(children_tree_store()); - if(children_tree)children_tree->set_time_adjustment(time_adjustment()); - if(children_tree)children_tree->show(); - - // Connect Signals - if(children_tree)children_tree->signal_edited_value().connect(sigc::mem_fun(*this, &studio::CanvasView::on_edited_value)); - if(children_tree)children_tree->signal_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_children_user_click)); - if(children_tree)children_tree->signal_waypoint_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked)); - if(children_tree)children_tree->get_selection()->signal_changed().connect(SLOT_EVENT(EVENT_REFRESH_DUCKS)); - - return children_tree; -} - -Gtk::Widget* -CanvasView::create_keyframe_tree() -{ - keyframe_tree=manage(new KeyframeTree()); - - //keyframe_tree->get_selection()->set_mode(Gtk::SELECTION_MULTIPLE); - //keyframe_tree->show(); - //keyframe_tree->set_model(keyframe_tree_store()); - keyframe_tree->set_editable(true); - //keyframe_tree->signal_edited().connect(sigc::hide_return(sigc::mem_fun(*canvas_interface(), &synfigapp::CanvasInterface::update_keyframe))); - - keyframe_tree->signal_event().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_tree_event)); - - Gtk::ScrolledWindow *scroll_layer_tree = manage(new class Gtk::ScrolledWindow()); - scroll_layer_tree->set_flags(Gtk::CAN_FOCUS); - scroll_layer_tree->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - scroll_layer_tree->add(*keyframe_tree); - scroll_layer_tree->set_shadow_type(Gtk::SHADOW_ETCHED_IN); - //scroll_layer_tree->show(); - - - Gtk::Table *layout_table= manage(new Gtk::Table(1, 2, false)); - layout_table->attach(*scroll_layer_tree, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); - - Gtk::Image *icon; - Gtk::IconSize iconsize(Gtk::IconSize::from_name("synfig-small_icon")); - - NEW_SMALL_BUTTON(button_add,"gtk-add",_("New Keyframe")); - NEW_SMALL_BUTTON(button_duplicate,"synfig-duplicate",_("Duplicate Keyframe")); - NEW_SMALL_BUTTON(button_delete,"gtk-delete",_("Delete Keyframe")); - - Gtk::HBox *hbox(manage(new Gtk::HBox())); - layout_table->attach(*hbox, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK, 0, 0); - - hbox->pack_start(*button_add,Gtk::PACK_SHRINK); - hbox->pack_start(*button_duplicate,Gtk::PACK_SHRINK); - hbox->pack_start(*button_delete,Gtk::PACK_SHRINK); - - /* - button_raise->set_relief(Gtk::RELIEF_HALF); - button_lower->set_relief(Gtk::RELIEF_HALF); - button_duplicate->set_relief(Gtk::RELIEF_HALF); - button_delete->set_relief(Gtk::RELIEF_HALF); - */ - - button_add->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_add_pressed)); - button_duplicate->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_duplicate_pressed)); - button_delete->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_remove_pressed)); - - //layout_table->show_all(); - - keyframe_tab_child=layout_table; - - - layout_table->hide(); - - return layout_table; -} -Gtk::Widget* -CanvasView::create_layer_tree() -{ - // Create the layer tree - layer_tree=manage(new class LayerTree()); - - // Set up the layer tree - //layer_tree->set_model(layer_tree_store()); - layer_tree->set_time_adjustment(time_adjustment()); - layer_tree->show(); - - // Connect Signals - layer_tree->signal_layer_toggle().connect(sigc::mem_fun(*this, &studio::CanvasView::on_layer_toggle)); - layer_tree->signal_edited_value().connect(sigc::mem_fun(*this, &studio::CanvasView::on_edited_value)); - layer_tree->signal_layer_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_layer_user_click)); - layer_tree->signal_param_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_children_user_click)); - layer_tree->signal_waypoint_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked)); - layer_tree->get_selection()->signal_changed().connect(SLOT_EVENT(EVENT_REFRESH_DUCKS)); - - layer_tree->hide(); - return layer_tree; -} + // show the value being used - it will have been rounded to nearest frame + // this was already being done elsewhere, but only if the time was really changed; + // if the current time was 6f and the user edited it to 6.1f, then the 6.1f would + // be left in the display without the following line to fix it + current_time_widget->set_value(get_time()); + current_time_widget->set_position(-1); // leave the cursor at the end +} + +// Gtk::Widget* +// CanvasView::create_children_tree() +// { +// // Create the layer tree +// children_tree=manage(new class ChildrenTree()); +// +// // Set up the layer tree +// //children_tree->set_model(children_tree_store()); +// if(children_tree)children_tree->set_time_adjustment(time_adjustment()); +// if(children_tree)children_tree->show(); +// +// // Connect Signals +// if(children_tree)children_tree->signal_edited_value().connect(sigc::mem_fun(*this, &studio::CanvasView::on_edited_value)); +// if(children_tree)children_tree->signal_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_children_user_click)); +// if(children_tree)children_tree->signal_waypoint_clicked_childrentree().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked_canvasview)); +// if(children_tree)children_tree->get_selection()->signal_changed().connect(SLOT_EVENT(EVENT_REFRESH_DUCKS)); +// +// return children_tree; +// } + +// Gtk::Widget* +// CanvasView::create_keyframe_tree() +// { +// keyframe_tree=manage(new KeyframeTree()); +// +// //keyframe_tree->get_selection()->set_mode(Gtk::SELECTION_MULTIPLE); +// //keyframe_tree->show(); +// //keyframe_tree->set_model(keyframe_tree_store()); +// keyframe_tree->set_editable(true); +// //keyframe_tree->signal_edited().connect(sigc::hide_return(sigc::mem_fun(*canvas_interface(), &synfigapp::CanvasInterface::update_keyframe))); +// +// keyframe_tree->signal_event().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_tree_event)); +// +// Gtk::ScrolledWindow *scroll_layer_tree = manage(new class Gtk::ScrolledWindow()); +// scroll_layer_tree->set_flags(Gtk::CAN_FOCUS); +// scroll_layer_tree->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); +// scroll_layer_tree->add(*keyframe_tree); +// scroll_layer_tree->set_shadow_type(Gtk::SHADOW_ETCHED_IN); +// //scroll_layer_tree->show(); +// +// +// Gtk::Table *layout_table= manage(new Gtk::Table(1, 2, false)); +// layout_table->attach(*scroll_layer_tree, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); +// +// Gtk::Image *icon; +// Gtk::IconSize iconsize(Gtk::IconSize::from_name("synfig-small_icon")); +// +// NEW_SMALL_BUTTON(button_add,"gtk-add",_("New Keyframe")); +// NEW_SMALL_BUTTON(button_duplicate,"synfig-duplicate",_("Duplicate Keyframe")); +// NEW_SMALL_BUTTON(button_delete,"gtk-delete",_("Delete Keyframe")); +// +// Gtk::HBox *hbox(manage(new Gtk::HBox())); +// layout_table->attach(*hbox, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK, 0, 0); +// +// hbox->pack_start(*button_add,Gtk::PACK_SHRINK); +// hbox->pack_start(*button_duplicate,Gtk::PACK_SHRINK); +// hbox->pack_start(*button_delete,Gtk::PACK_SHRINK); +// +// /* +// button_raise->set_relief(Gtk::RELIEF_HALF); +// button_lower->set_relief(Gtk::RELIEF_HALF); +// button_duplicate->set_relief(Gtk::RELIEF_HALF); +// button_delete->set_relief(Gtk::RELIEF_HALF); +// */ +// +// button_add->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_add_pressed)); +// button_duplicate->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_duplicate_pressed)); +// button_delete->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_remove_pressed)); +// +// //layout_table->show_all(); +// +// keyframe_tab_child=layout_table; +// +// +// layout_table->hide(); +// +// return layout_table; +// } + +// Gtk::Widget* +// CanvasView::create_layer_tree() +// { +// // Create the layer tree +// printf("CanvasView::create_layer_tree()\n"); +// layer_tree=manage(new class LayerTree()); +// +// // Set up the layer tree +// //layer_tree->set_model(layer_tree_store()); +// layer_tree->set_time_adjustment(time_adjustment()); +// layer_tree->show(); +// +// // Connect Signals +// layer_tree->signal_layer_toggle().connect(sigc::mem_fun(*this, &studio::CanvasView::on_layer_toggle)); +// layer_tree->signal_edited_value().connect(sigc::mem_fun(*this, &studio::CanvasView::on_edited_value)); +// layer_tree->signal_layer_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_layer_user_click)); +// layer_tree->signal_param_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_children_user_click)); +// layer_tree->signal_waypoint_clicked_layertree().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked_canvasview)); +// layer_tree->get_selection()->signal_changed().connect(SLOT_EVENT(EVENT_REFRESH_DUCKS)); +// +// layer_tree->hide(); +// return layer_tree; +// } void CanvasView::init_menus() @@ -1187,6 +1199,12 @@ CanvasView::init_menus() action_group = Gtk::ActionGroup::create(); //action_group->add( Gtk::Action::create("MenuFile", _("_File")) ); + action_group->add( Gtk::Action::create("new", Gtk::Stock::NEW), + sigc::hide_return(sigc::ptr_fun(&studio::App::new_instance)) + ); + action_group->add( Gtk::Action::create("open", Gtk::Stock::OPEN), + sigc::hide_return(sigc::ptr_fun(&studio::App::dialog_open)) + ); action_group->add( Gtk::Action::create("save", Gtk::Stock::SAVE), hide_return(sigc::mem_fun(*get_instance().get(), &studio::Instance::save)) ); @@ -1229,6 +1247,9 @@ CanvasView::init_menus() action_group->add( Gtk::Action::create("close-document", Gtk::StockID("gtk-close"), _("Close Document")), sigc::hide_return(sigc::mem_fun(*this,&studio::CanvasView::close_instance)) ); + action_group->add( Gtk::Action::create("quit", Gtk::StockID("gtk-quit"), _("Quit")), + sigc::hide_return(sigc::ptr_fun(&studio::App::quit)) + ); //action_group->add( Gtk::Action::create("undo", Gtk::StockID("gtk-undo")), // SLOT_EVENT(EVENT_UNDO) @@ -1269,8 +1290,12 @@ CanvasView::init_menus() ); for(i=1;i<=10;i++) { - Glib::RefPtr action(Gtk::RadioAction::create(quality_group,strprintf("quality-%02d",i), strprintf(_("Set Quality to %d"),i))); - if(i==10) + String note; + if (i == 1) note = _(" (best)"); + if (i == 10) note = _(" (fastest)"); + Glib::RefPtr action(Gtk::RadioAction::create(quality_group,strprintf("quality-%02d",i), + strprintf(_("Set Quality to %d"),i) + note)); + if (i==8) // default quality { action->set_active(); work_area->set_quality(i); @@ -1284,6 +1309,37 @@ CanvasView::init_menus() } } + // Low-Res Quality Menu + { + int i; + for(list::iterator iter = CanvasView::get_pixel_sizes().begin(); iter != CanvasView::get_pixel_sizes().end(); iter++) + { + i = *iter; + Glib::RefPtr action(Gtk::RadioAction::create(low_res_pixel_size_group,strprintf("lowres-pixel-%d",i), + strprintf(_("Set Low-Res pixel size to %d"),i))); + if(i==2) // default pixel size + { + action->set_active(); + work_area->set_low_res_pixel_size(i); + } + action_group->add( action, + sigc::bind( + sigc::mem_fun(*work_area, &studio::WorkArea::set_low_res_pixel_size), + i + ) + ); + } + + Glib::RefPtr action; + + action=Gtk::Action::create("decrease-low-res-pixel-size", _("Decrease Low-Res Pixel Size")); + action_group->add( action,sigc::mem_fun(this, &studio::CanvasView::decrease_low_res_pixel_size)); + + action=Gtk::Action::create("increase-low-res-pixel-size", _("Increase Low-Res Pixel Size")); + action_group->add( action, sigc::mem_fun(this, &studio::CanvasView::increase_low_res_pixel_size)); + + } + action_group->add( Gtk::Action::create("play", Gtk::Stock::MEDIA_PLAY), sigc::mem_fun(*this, &studio::CanvasView::play) ); @@ -1292,22 +1348,29 @@ CanvasView::init_menus() sigc::mem_fun0(*preview_dialog, &studio::Dialog_Preview::present) ); - action_group->add( Gtk::Action::create("toggle-grid-show", _("Toggle Grid Show")), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid) - ); - action_group->add( Gtk::Action::create("toggle-grid-snap", _("Toggle Grid Snap")), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid_snap) - ); - action_group->add( Gtk::Action::create("toggle-guide-show", _("Toggle Guide Show")), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_guide_snap) - ); - action_group->add( Gtk::Action::create("toggle-low-res", _("Toggle Low-Res")), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_low_resolution_flag) - ); - action_group->add( Gtk::Action::create("toggle-onion-skin", _("Toggle Onion Skin")), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_onion_skin) - ); + { + Glib::RefPtr action; + action = Gtk::ToggleAction::create("toggle-grid-show", _("Show Grid")); + action->set_active(work_area->grid_status()); + action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid)); + + action = Gtk::ToggleAction::create("toggle-grid-snap", _("Snap to Grid")); + action->set_active(work_area->get_grid_snap()); + action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid_snap)); + + action = Gtk::ToggleAction::create("toggle-guide-show", _("Show Guides")); + action->set_active(work_area->get_show_guides()); + action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_guide_snap)); + + action = Gtk::ToggleAction::create("toggle-low-res", _("Use Low-Res")); + action->set_active(work_area->get_low_resolution_flag()); + action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_low_resolution_flag)); + + action = Gtk::ToggleAction::create("toggle-onion-skin", _("Show Onion Skin")); + action->set_active(work_area->get_onion_skin()); + action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_onion_skin)); + } action_group->add( Gtk::Action::create("canvas-zoom-fit", Gtk::StockID("gtk-zoom-fit")), sigc::mem_fun(*work_area, &studio::WorkArea::zoom_fit) @@ -1316,7 +1379,6 @@ CanvasView::init_menus() sigc::mem_fun(*work_area, &studio::WorkArea::zoom_norm) ); - { Glib::RefPtr action; @@ -1357,8 +1419,8 @@ CanvasView::init_menus() } -#define DUCK_MASK(lower,upper) \ - duck_mask_##lower=Gtk::ToggleAction::create("mask-" #lower "-ducks", _("Show "#lower" ducks")); \ +#define DUCK_MASK(lower,upper,string) \ + duck_mask_##lower=Gtk::ToggleAction::create("mask-" #lower "-ducks", string); \ duck_mask_##lower->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_##upper)); \ action_group->add( duck_mask_##lower, \ sigc::bind( \ @@ -1366,12 +1428,12 @@ CanvasView::init_menus() Duck::TYPE_##upper \ ) \ ) - DUCK_MASK(position,POSITION); - DUCK_MASK(tangent,TANGENT); - DUCK_MASK(vertex,VERTEX); - DUCK_MASK(radius,RADIUS); - DUCK_MASK(width,WIDTH); - DUCK_MASK(angle,ANGLE); + DUCK_MASK(position,POSITION,_("Show Position Ducks")); + DUCK_MASK(tangent,TANGENT,_("Show Tangent Ducks")); + DUCK_MASK(vertex,VERTEX,_("Show Vertex Ducks")); + DUCK_MASK(radius,RADIUS,_("Show Radius Ducks")); + DUCK_MASK(width,WIDTH,_("Show Width Ducks")); + DUCK_MASK(angle,ANGLE,_("Show Angle Ducks")); #undef DUCK_MASK add_accel_group(App::ui_manager()->get_accel_group()); @@ -1434,245 +1496,247 @@ CanvasView::init_menus() #if 0 - - //Test some key stuff - - filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-save"), - hide_return(sigc::mem_fun(*get_instance().get(), &studio::Instance::save)))); - filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-save-as"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_save_as)))); - filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-revert-to-saved"),hide_return(sigc::mem_fun(*get_instance().get(), &studio::Instance::safe_revert)))); - filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - - filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-cvs_add"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_cvs_add)))); - filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-cvs_update"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_cvs_update)))); - filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-cvs_commit"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_cvs_commit)))); - - filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Import..."),Gtk::AccelKey('I',Gdk::CONTROL_MASK),sigc::hide_return(sigc::mem_fun(*this, &studio::CanvasView::image_import)))); - filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Render"),Gtk::AccelKey("F9"), - sigc::mem_fun(render_settings,&studio::RenderSettings::present) - )); - filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Preview"),Gtk::AccelKey("F11"), - sigc::mem_fun(*this,&CanvasView::on_preview_option) - )); - filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Sound File"), - sigc::mem_fun(*this,&CanvasView::on_audio_option) - )); - - filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Options"),Gtk::AccelKey("F12"), - sigc::mem_fun(canvas_options,&studio::CanvasOptions::present) - )); - filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Close View"), - sigc::hide_return(sigc::mem_fun(*this,&studio::CanvasView::close_view)) - )); - filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Close Document"), - sigc::hide_return(sigc::mem_fun(*this,&studio::CanvasView::close_document)) - )); - - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-undo"),Gtk::AccelKey('Z',Gdk::CONTROL_MASK),SLOT_EVENT(EVENT_UNDO))); - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-redo"),Gtk::AccelKey('R',Gdk::CONTROL_MASK),SLOT_EVENT(EVENT_REDO))); - editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-cut"),NOT_IMPLEMENTED_SLOT)); - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-copy"),NOT_IMPLEMENTED_SLOT)); - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-paste"),NOT_IMPLEMENTED_SLOT)); - editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Ducks"),Gtk::AccelKey('E',Gdk::CONTROL_MASK),sigc::mem_fun(*work_area,&studio::WorkArea::select_all_ducks))); - editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Unselect All Layers"),Gtk::AccelKey('D',Gdk::CONTROL_MASK),sigc::mem_fun(*this,&CanvasView::on_unselect_layers))); - editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - - //editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-stop"),Gtk::AccelKey(GDK_Escape,static_cast(0)),sigc::hide_return(sigc::mem_fun(*this, &studio::CanvasView::stop)))); - //editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-refresh"),Gtk::AccelKey('k',Gdk::CONTROL_MASK),sigc::hide_return(sigc::mem_fun(*this, &studio::CanvasView::on_refresh_pressed)))); - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-stop"),Gtk::AccelKey(GDK_Escape,static_cast(0)),SLOT_EVENT(EVENT_STOP))); - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-refresh"),Gtk::AccelKey('k',Gdk::CONTROL_MASK),SLOT_EVENT(EVENT_REFRESH))); - editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-properties"),Gtk::AccelKey("F8"), - sigc::mem_fun(canvas_properties,&studio::CanvasProperties::present) - )); - - build_new_layer_menu(newlayermenu); - layermenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("New"),newlayermenu)); - - - { - synfigapp::Action::ParamList param_list; - param_list.add("canvas",Canvas::Handle(get_canvas())); - param_list.add("canvas_interface",canvas_interface()); - add_actions_to_menu(&canvasmenu, param_list,synfigapp::Action::CATEGORY_CANVAS); - } - - - //canvasmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Keyframe Dialog"),sigc::mem_fun(keyframe_dialog,&studio::Dialog_Keyframe::present))); - - // Duck Mask Menu - if(1) - { - duckmaskmenu.items().push_back(Gtk::Menu_Helpers::TearoffMenuElem()); - - duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Position Ducks"),Gtk::AccelKey('1',Gdk::MOD1_MASK))); - duck_mask_position=static_cast(&duckmaskmenu.items().back()); - duck_mask_position->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_POSITION)); - duck_mask_position->signal_toggled().connect( - sigc::bind( - sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), - Duck::TYPE_POSITION - ) - ); - - duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Vertex Ducks"),Gtk::AccelKey('2',Gdk::MOD1_MASK))); - duck_mask_vertex=static_cast(&duckmaskmenu.items().back()); - duck_mask_vertex->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_VERTEX)); - duck_mask_vertex->signal_toggled().connect( - sigc::bind( - sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), - Duck::TYPE_VERTEX - ) - ); - - duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Tangent Ducks"),Gtk::AccelKey('3',Gdk::MOD1_MASK))); - duck_mask_tangent=static_cast(&duckmaskmenu.items().back()); - duck_mask_tangent->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_TANGENT)); - duck_mask_tangent->signal_toggled().connect( - sigc::bind( - sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), - Duck::TYPE_TANGENT - ) - ); - - duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Radius Ducks"),Gtk::AccelKey('4',Gdk::MOD1_MASK))); - duck_mask_radius=static_cast(&duckmaskmenu.items().back()); - duck_mask_radius->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_RADIUS)); - duck_mask_radius->signal_toggled().connect( - sigc::bind( - sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), - Duck::TYPE_RADIUS - ) - ); - - duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Width Ducks"),Gtk::AccelKey('5',Gdk::MOD1_MASK))); - duck_mask_width=static_cast(&duckmaskmenu.items().back()); - duck_mask_width->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_WIDTH)); - duck_mask_width->signal_toggled().connect( - sigc::bind( - sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), - Duck::TYPE_WIDTH - ) - ); - - duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Angle Ducks"),Gtk::AccelKey('6',Gdk::MOD1_MASK))); - duck_mask_angle=static_cast(&duckmaskmenu.items().back()); - duck_mask_angle->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_ANGLE)); - duck_mask_angle->signal_toggled().connect( - sigc::bind( - sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), - Duck::TYPE_ANGLE - ) - ); - - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Mask Ducks"),duckmaskmenu)); - } - - // Preview Quality Menu - if(1) - { - qualitymenu.items().push_back(Gtk::Menu_Helpers::TearoffMenuElem()); - int i; - qualitymenu.items().push_back(Gtk::Menu_Helpers::MenuElem(strprintf(_("Use Parametric Renderer"),0), - sigc::bind( - sigc::mem_fun(*work_area, &studio::WorkArea::set_quality), - 0 - ) - )); - for(i=1;i<=10;i++) - { - qualitymenu.items().push_back(Gtk::Menu_Helpers::MenuElem(strprintf(_("Set Quality to %d"),i),Gtk::AccelKey('0'+(i%10),Gdk::CONTROL_MASK), - sigc::bind( - sigc::mem_fun(*work_area, &studio::WorkArea::set_quality), - i - ) - )); - } - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Preview Quality"),qualitymenu)); - } - - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::Stock::MEDIA_PLAY, - sigc::mem_fun(*this, &studio::CanvasView::play))); - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("Flipbook Dialog"), - sigc::mem_fun(*preview_dialog, &studio::Dialog_Preview::present))); - - viewmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Grid Show"),Gtk::AccelKey('g',Gdk::CONTROL_MASK), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid))); - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Grid Snap"),Gtk::AccelKey('l',Gdk::CONTROL_MASK), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid_snap))); - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Guide Snap"),Gtk::AccelKey('k',Gdk::CONTROL_MASK), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_guide_snap))); - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Low-Res"),Gtk::AccelKey('`',Gdk::CONTROL_MASK), - sigc::mem_fun(*work_area, &studio::WorkArea::toggle_low_resolution_flag))); - - viewmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-in"),Gtk::AccelKey('=',static_cast(0)), - sigc::mem_fun(*work_area, &studio::WorkArea::zoom_in))); - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-out"),Gtk::AccelKey('-',static_cast(0)), - sigc::mem_fun(*work_area, &studio::WorkArea::zoom_out))); - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-fit"), - sigc::mem_fun(*work_area, &studio::WorkArea::zoom_fit))); - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-100"),Gtk::AccelKey('`',static_cast(0)), - sigc::mem_fun(*work_area, &studio::WorkArea::zoom_norm))); - viewmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-in"),Gtk::AccelKey('+',static_cast(0)), - sigc::mem_fun(*this, &studio::CanvasView::time_zoom_in))); - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-out"),Gtk::AccelKey('_',static_cast(0)), - sigc::mem_fun(*this, &studio::CanvasView::time_zoom_out))); - - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Jump to Next Keyframe"),Gtk::AccelKey(']',static_cast(0)), - sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::jump_to_next_keyframe))); - viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Jump to Prev Keyframe"),Gtk::AccelKey('[',static_cast(0)), - sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::jump_to_prev_keyframe))); - - mainmenu.items().push_back(Gtk::Menu_Helpers::TearoffMenuElem()); - mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_File"),filemenu)); - mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Edit"),editmenu)); - mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_View"),viewmenu)); - mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Canvas"),canvasmenu)); - mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Layer"),layermenu)); - - mainmenu.accelerate(*this); - - { - - trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("New Waypoint"),NOT_IMPLEMENTED_SLOT)); - trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Delete Waypoint"),NOT_IMPLEMENTED_SLOT)); - trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Export"),NOT_IMPLEMENTED_SLOT)); - trackmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); - trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Properties"),NOT_IMPLEMENTED_SLOT)); - } - mainmenu.show(); - filemenu.show(); - editmenu.show(); - canvasmenu.show(); - layermenu.show(); - - keyframemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-properties"), - sigc::mem_fun(*this,&studio::CanvasView::show_keyframe_dialog) - )); - - - get_accel_group()->unlock(); - - //Set the accelerator paths for all the menus - filemenu.set_accel_path("/File"); - editmenu.set_accel_path("/Edit"); - layermenu.set_accel_path("/Layer"); - //mainmenu.set_accel_path(""); - canvasmenu.set_accel_path("/Canvas"); - viewmenu.set_accel_path("/View"); - duckmaskmenu.set_accel_path("/DuckMask"); +// +// //Test some key stuff +// +// filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-save"), +// hide_return(sigc::mem_fun(*get_instance().get(), &studio::Instance::save)))); +// filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-save-as"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_save_as)))); +// filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-revert-to-saved"),hide_return(sigc::mem_fun(*get_instance().get(), &studio::Instance::safe_revert)))); +// filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// +// filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-cvs_add"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_cvs_add)))); +// filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-cvs_update"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_cvs_update)))); +// filemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-cvs_commit"),sigc::hide_return(sigc::mem_fun(*get_instance(), &studio::Instance::dialog_cvs_commit)))); +// +// filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Import..."),Gtk::AccelKey('I',Gdk::CONTROL_MASK),sigc::hide_return(sigc::mem_fun(*this, &studio::CanvasView::image_import)))); +// filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Render"),Gtk::AccelKey("F9"), +// sigc::mem_fun(render_settings,&studio::RenderSettings::present) +// )); +// filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Preview"),Gtk::AccelKey("F11"), +// sigc::mem_fun(*this,&CanvasView::on_preview_option) +// )); +// filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Sound File"), +// sigc::mem_fun(*this,&CanvasView::on_audio_option) +// )); +// +// filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Options"),Gtk::AccelKey("F12"), +// sigc::mem_fun(canvas_options,&studio::CanvasOptions::present) +// )); +// filemenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Close View"), +// sigc::hide_return(sigc::mem_fun(*this,&studio::CanvasView::close_view)) +// )); +// filemenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Close Document"), +// sigc::hide_return(sigc::mem_fun(*this,&studio::CanvasView::close_document)) +// )); +// +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-undo"),Gtk::AccelKey('Z',Gdk::CONTROL_MASK),SLOT_EVENT(EVENT_UNDO))); +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-redo"),Gtk::AccelKey('R',Gdk::CONTROL_MASK),SLOT_EVENT(EVENT_REDO))); +// editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-cut"),NOT_IMPLEMENTED_SLOT)); +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-copy"),NOT_IMPLEMENTED_SLOT)); +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-paste"),NOT_IMPLEMENTED_SLOT)); +// editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Ducks"),Gtk::AccelKey('E',Gdk::CONTROL_MASK),sigc::mem_fun(*work_area,&studio::WorkArea::select_all_ducks))); +// editmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Unselect All Layers"),Gtk::AccelKey('D',Gdk::CONTROL_MASK),sigc::mem_fun(*this,&CanvasView::on_unselect_layers))); +// editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// +// //editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-stop"),Gtk::AccelKey(GDK_Escape,static_cast(0)),sigc::hide_return(sigc::mem_fun(*this, &studio::CanvasView::stop)))); +// //editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-refresh"),Gtk::AccelKey('k',Gdk::CONTROL_MASK),sigc::hide_return(sigc::mem_fun(*this, &studio::CanvasView::on_refresh_pressed)))); +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-stop"),Gtk::AccelKey(GDK_Escape,static_cast(0)),SLOT_EVENT(EVENT_STOP))); +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-refresh"),Gtk::AccelKey('k',Gdk::CONTROL_MASK),SLOT_EVENT(EVENT_REFRESH))); +// editmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// editmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-properties"),Gtk::AccelKey("F8"), +// sigc::mem_fun(canvas_properties,&studio::CanvasProperties::present) +// )); +// +// build_new_layer_menu(newlayermenu); +// layermenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("New"),newlayermenu)); +// +// +// { +// synfigapp::Action::ParamList param_list; +// param_list.add("canvas",Canvas::Handle(get_canvas())); +// param_list.add("canvas_interface",canvas_interface()); +// add_actions_to_menu(&canvasmenu, param_list,synfigapp::Action::CATEGORY_CANVAS); +// } +// +// +// //canvasmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Keyframe Dialog"),sigc::mem_fun(keyframe_dialog,&studio::Dialog_Keyframe::present))); +// +// // Duck Mask Menu +// if(1) +// { +// duckmaskmenu.items().push_back(Gtk::Menu_Helpers::TearoffMenuElem()); +// +// duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Position Ducks"),Gtk::AccelKey('1',Gdk::MOD1_MASK))); +// duck_mask_position=static_cast(&duckmaskmenu.items().back()); +// duck_mask_position->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_POSITION)); +// duck_mask_position->signal_toggled().connect( +// sigc::bind( +// sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), +// Duck::TYPE_POSITION +// ) +// ); +// +// duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Vertex Ducks"),Gtk::AccelKey('2',Gdk::MOD1_MASK))); +// duck_mask_vertex=static_cast(&duckmaskmenu.items().back()); +// duck_mask_vertex->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_VERTEX)); +// duck_mask_vertex->signal_toggled().connect( +// sigc::bind( +// sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), +// Duck::TYPE_VERTEX +// ) +// ); +// +// duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Tangent Ducks"),Gtk::AccelKey('3',Gdk::MOD1_MASK))); +// duck_mask_tangent=static_cast(&duckmaskmenu.items().back()); +// duck_mask_tangent->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_TANGENT)); +// duck_mask_tangent->signal_toggled().connect( +// sigc::bind( +// sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), +// Duck::TYPE_TANGENT +// ) +// ); +// +// duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Radius Ducks"),Gtk::AccelKey('4',Gdk::MOD1_MASK))); +// duck_mask_radius=static_cast(&duckmaskmenu.items().back()); +// duck_mask_radius->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_RADIUS)); +// duck_mask_radius->signal_toggled().connect( +// sigc::bind( +// sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), +// Duck::TYPE_RADIUS +// ) +// ); +// +// duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Width Ducks"),Gtk::AccelKey('5',Gdk::MOD1_MASK))); +// duck_mask_width=static_cast(&duckmaskmenu.items().back()); +// duck_mask_width->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_WIDTH)); +// duck_mask_width->signal_toggled().connect( +// sigc::bind( +// sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), +// Duck::TYPE_WIDTH +// ) +// ); +// +// duckmaskmenu.items().push_back(Gtk::Menu_Helpers::CheckMenuElem(_("Angle Ducks"),Gtk::AccelKey('6',Gdk::MOD1_MASK))); +// duck_mask_angle=static_cast(&duckmaskmenu.items().back()); +// duck_mask_angle->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_ANGLE)); +// duck_mask_angle->signal_toggled().connect( +// sigc::bind( +// sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), +// Duck::TYPE_ANGLE +// ) +// ); +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Mask Ducks"),duckmaskmenu)); +// } +// +// // Preview Quality Menu +// if(1) +// { +// qualitymenu.items().push_back(Gtk::Menu_Helpers::TearoffMenuElem()); +// int i; +// qualitymenu.items().push_back(Gtk::Menu_Helpers::MenuElem(strprintf(_("Use Parametric Renderer"),0), +// sigc::bind( +// sigc::mem_fun(*work_area, &studio::WorkArea::set_quality), +// 0 +// ) +// )); +// for(i=1;i<=10;i++) +// { +// qualitymenu.items().push_back(Gtk::Menu_Helpers::MenuElem(strprintf(_("Set Quality to %d"),i),Gtk::AccelKey('0'+(i%10),Gdk::CONTROL_MASK), +// sigc::bind( +// sigc::mem_fun(*work_area, &studio::WorkArea::set_quality), +// i +// ) +// )); +// } +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Preview Quality"),qualitymenu)); +// } +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::Stock::MEDIA_PLAY, +// sigc::mem_fun(*this, &studio::CanvasView::play))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("Flipbook Dialog"), +// sigc::mem_fun(*preview_dialog, &studio::Dialog_Preview::present))); +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Grid Show"),Gtk::AccelKey('g',Gdk::CONTROL_MASK), +// sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Grid Snap"),Gtk::AccelKey('l',Gdk::CONTROL_MASK), +// sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid_snap))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Guide Snap"),Gtk::AccelKey('k',Gdk::CONTROL_MASK), +// sigc::mem_fun(*work_area, &studio::WorkArea::toggle_guide_snap))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Toggle Low-Res"),Gtk::AccelKey('`',Gdk::CONTROL_MASK), +// sigc::mem_fun(*work_area, &studio::WorkArea::toggle_low_resolution_flag))); +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-in"),Gtk::AccelKey('=',static_cast(0)), +// sigc::mem_fun(*work_area, &studio::WorkArea::zoom_in))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-out"),Gtk::AccelKey('-',static_cast(0)), +// sigc::mem_fun(*work_area, &studio::WorkArea::zoom_out))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-fit"), +// sigc::mem_fun(*work_area, &studio::WorkArea::zoom_fit))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-100"),Gtk::AccelKey('`',static_cast(0)), +// sigc::mem_fun(*work_area, &studio::WorkArea::zoom_norm))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-in"),Gtk::AccelKey('+',static_cast(0)), +// sigc::mem_fun(*this, &studio::CanvasView::time_zoom_in))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-zoom-out"),Gtk::AccelKey('_',static_cast(0)), +// sigc::mem_fun(*this, &studio::CanvasView::time_zoom_out))); +// +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Jump to Next Keyframe"),Gtk::AccelKey(']',static_cast(0)), +// sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::jump_to_next_keyframe))); +// viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Jump to Prev Keyframe"),Gtk::AccelKey('[',static_cast(0)), +// sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::jump_to_prev_keyframe))); +// +// mainmenu.items().push_back(Gtk::Menu_Helpers::TearoffMenuElem()); +// mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_File"),filemenu)); +// mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Edit"),editmenu)); +// mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_View"),viewmenu)); +// mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Canvas"),canvasmenu)); +// mainmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Layer"),layermenu)); +// +// mainmenu.accelerate(*this); +// +///* +// { +// +// trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("New Waypoint"),NOT_IMPLEMENTED_SLOT)); +// trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Delete Waypoint"),NOT_IMPLEMENTED_SLOT)); +// trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Export"),NOT_IMPLEMENTED_SLOT)); +// trackmenu.items().push_back(Gtk::Menu_Helpers::SeparatorElem()); +// trackmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Properties"),NOT_IMPLEMENTED_SLOT)); +// } +//*/ +// mainmenu.show(); +// filemenu.show(); +// editmenu.show(); +// canvasmenu.show(); +// layermenu.show(); +// +// keyframemenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-properties"), +// sigc::mem_fun(*this,&studio::CanvasView::show_keyframe_dialog) +// )); +// +// +// get_accel_group()->unlock(); +// +// //Set the accelerator paths for all the menus +// filemenu.set_accel_path("/File"); +// editmenu.set_accel_path("/Edit"); +// layermenu.set_accel_path("/Layer"); +// //mainmenu.set_accel_path(""); +// canvasmenu.set_accel_path("/Canvas"); +// viewmenu.set_accel_path("/View"); +// duckmaskmenu.set_accel_path("/DuckMask"); #endif } @@ -1764,7 +1828,7 @@ CanvasView::popup_layer_menu(synfig::Layer::Handle layer) void CanvasView::register_layer_type(synfig::Layer::Book::value_type &/*lyr*/,std::map* /*category_map*/) { -/* if(lyr.second.category==_("Do Not Use")) +/* if(lyr.second.category==CATEGORY_DO_NOT_USE) return; if(category_map->count(lyr.second.category)==0) @@ -1988,7 +2052,7 @@ CanvasView::close_instance() } handle -CanvasView::create(loose_handle instance,handle canvas) +CanvasView::create(etl::loose_handle instance, etl::handle canvas) { etl::handle view(new CanvasView(instance,instance->synfigapp::Instance::find_canvas_interface(canvas))); instance->canvas_view_list().push_front(view); @@ -2380,7 +2444,12 @@ CanvasView::on_time_changed() void CanvasView::time_zoom_in() { + float frame_rate = get_canvas()->rend_desc().get_frame_rate(); + Time min_page_size = 2/frame_rate; + time_window_adjustment().set_page_size(time_window_adjustment().get_page_size()*0.75); + if (time_window_adjustment().get_page_size() < min_page_size) + time_window_adjustment().set_page_size(min_page_size); time_window_adjustment().changed(); refresh_time_window(); @@ -2389,7 +2458,12 @@ CanvasView::time_zoom_in() void CanvasView::time_zoom_out() { + Time length = (get_canvas()->rend_desc().get_time_end() - + get_canvas()->rend_desc().get_time_start()); + time_window_adjustment().set_page_size(time_window_adjustment().get_page_size()/0.75); + if (time_window_adjustment().get_page_size() > length) + time_window_adjustment().set_page_size(length); time_window_adjustment().changed(); refresh_time_window(); @@ -2515,26 +2589,22 @@ CanvasView::on_keyframe_button_pressed() { synfigapp::CanvasInterface::Mode mode(get_mode()); + // future && past --> past if((mode&synfigapp::MODE_ANIMATE_FUTURE) && (mode&synfigapp::MODE_ANIMATE_PAST)) - { set_mode(get_mode()-synfigapp::MODE_ANIMATE_FUTURE); - } + // past --> future else if(!(mode&synfigapp::MODE_ANIMATE_FUTURE) && (mode&synfigapp::MODE_ANIMATE_PAST)) - { - set_mode(get_mode()-synfigapp::MODE_ANIMATE_PAST|synfigapp::MODE_ANIMATE_FUTURE); - } + set_mode((get_mode()-synfigapp::MODE_ANIMATE_PAST)|synfigapp::MODE_ANIMATE_FUTURE); + // future --> (nothing) else if((mode&synfigapp::MODE_ANIMATE_FUTURE) && !(mode&synfigapp::MODE_ANIMATE_PAST)) - { set_mode(get_mode()-synfigapp::MODE_ANIMATE_FUTURE); - } + // (nothing) --> future && past else if(!(mode&synfigapp::MODE_ANIMATE_FUTURE) && !(mode&synfigapp::MODE_ANIMATE_PAST)) - { set_mode(get_mode()|synfigapp::MODE_ANIMATE_FUTURE|synfigapp::MODE_ANIMATE_PAST); - } } bool -CanvasView::duck_change_param(const Point &value,synfig::Layer::Handle layer, synfig::String param_name) +CanvasView::duck_change_param(const synfig::Point &value,synfig::Layer::Handle layer, synfig::String param_name) { return canvas_interface()->change_value(synfigapp::ValueDesc(layer,param_name),value); } @@ -2567,7 +2637,7 @@ CanvasView::on_duck_angle_changed(const synfig::Angle &rotation,const synfigapp: } void -CanvasView::selected_layer_color_set(Color color) +CanvasView::selected_layer_color_set(synfig::Color color) { synfigapp::SelectionManager::LayerList selected_list(get_selection_manager()->get_selected_layers()); synfigapp::SelectionManager::LayerList::iterator iter; @@ -2586,7 +2656,7 @@ CanvasView::selected_layer_color_set(Color color) } void -CanvasView::rebuild_ducks_layer_(synfig::TransformStack& transform_stack, Canvas::Handle canvas, std::set& selected_list) +CanvasView::rebuild_ducks_layer_(synfig::TransformStack& transform_stack, synfig::Canvas::Handle canvas, std::set& selected_list) { int transforms(0); String layer_name; @@ -2816,6 +2886,55 @@ CanvasView::rebuild_ducks() } void +CanvasView::decrease_low_res_pixel_size() +{ + list sizes = CanvasView::get_pixel_sizes(); + int pixel_size = work_area->get_low_res_pixel_size(); + + for (list::iterator iter = sizes.begin(); iter != sizes.end(); iter++) + if (*iter == pixel_size) + { + if (iter == sizes.begin()) + // we already have the smallest low-res pixels possible - turn off low-res instead + work_area->set_low_resolution_flag(false); + else + { + iter--; + Glib::RefPtr action = action_group->get_action(strprintf("lowres-pixel-%d", *iter)); + action->activate(); // to make sure the radiobutton in the menu is updated too + work_area->set_low_resolution_flag(true); + } + break; + } +} + +void +CanvasView::increase_low_res_pixel_size() +{ + list sizes = CanvasView::get_pixel_sizes(); + int pixel_size = work_area->get_low_res_pixel_size(); + + if (!work_area->get_low_resolution_flag()) + { + work_area->set_low_resolution_flag(true); + return; + } + + for (list::iterator iter = sizes.begin(); iter != sizes.end(); iter++) + if (*iter == pixel_size) + { + iter++; + if (iter != sizes.end()) + { + Glib::RefPtr action = action_group->get_action(strprintf("lowres-pixel-%d", *iter)); + action->activate(); // to make sure the radiobutton in the menu is updated too + work_area->set_low_resolution_flag(true); + } + break; + } +} + +void CanvasView::on_dirty_preview() { if(!is_playing_) @@ -2988,66 +3107,160 @@ CanvasView::set_sensitive_timebar(bool sensitive) } +static void +set_waypoint_model(std::set > waypoints, + Waypoint::Model model, + etl::loose_handle canvas_interface) +{ + // Create the action group + synfigapp::Action::PassiveGrouper group(canvas_interface->get_instance().get(),_("Change Waypoint Group")); + + std::set >::const_iterator iter; + for(iter=waypoints.begin();iter!=waypoints.end();++iter) + { + Waypoint waypoint(*iter); + waypoint.apply_model(model); + + synfigapp::Action::Handle action(synfigapp::Action::create("waypoint_set")); + + assert(action); + + action->set_param("canvas",canvas_interface->get_canvas()); + action->set_param("canvas_interface",canvas_interface); + + action->set_param("waypoint",waypoint); + action->set_param("value_node",waypoint.get_parent_value_node()); + + if(!canvas_interface->get_instance()->perform_action(action)) + { + group.cancel(); + return; + } + } +} + +static void +duplicate_waypoints(std::set > waypoints, + etl::loose_handle canvas_interface) +{ + // Create the action group + synfigapp::Action::PassiveGrouper group(canvas_interface->get_instance().get(),_("Duplicate Waypoints")); + + std::set >::const_iterator iter; + for (iter = waypoints.begin(); iter != waypoints.end(); iter++) + { + Waypoint waypoint(*iter); + ValueNode::Handle value_node(iter->get_parent_value_node()); + canvas_interface->waypoint_duplicate(value_node, waypoint); + } +} + +static void +remove_waypoints(std::set > waypoints, + etl::loose_handle canvas_interface) +{ + // Create the action group + synfigapp::Action::PassiveGrouper group(canvas_interface->get_instance().get(),_("Remove Waypoints")); + + std::set >::const_iterator iter; + for (iter = waypoints.begin(); iter != waypoints.end(); iter++) + { + Waypoint waypoint(*iter); + ValueNode::Handle value_node(iter->get_parent_value_node()); + canvas_interface->waypoint_remove(value_node, waypoint); + } +} + void -CanvasView::on_waypoint_clicked(synfigapp::ValueDesc value_desc,synfig::Waypoint waypoint,int button) +CanvasView::on_waypoint_clicked_canvasview(synfigapp::ValueDesc value_desc, + std::set > waypoint_set, + int button, + synfig::Waypoint::Side side) { - waypoint_dialog.set_value_desc(value_desc); - waypoint_dialog.set_waypoint(waypoint); + int size = waypoint_set.size(); + Waypoint waypoint(*(waypoint_set.begin())); + Time time(waypoint.get_time()); + + if (size == 1) + { + waypoint_dialog.set_value_desc(value_desc); + waypoint_dialog.set_waypoint(waypoint); + } switch(button) { case -1: - waypoint_dialog.show(); + if (size == 1) + waypoint_dialog.show(); break; case 2: - { - Gtk::Menu* waypoint_menu(manage(new Gtk::Menu())); - waypoint_menu->signal_hide().connect(sigc::bind(sigc::ptr_fun(&delete_widget), waypoint_menu)); + { + Gtk::Menu* waypoint_menu(manage(new Gtk::Menu())); + waypoint_menu->signal_hide().connect(sigc::bind(sigc::ptr_fun(&delete_widget), waypoint_menu)); - waypoint_menu->items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-jump-to"), - sigc::bind( - sigc::mem_fun( - *canvas_interface(), - &synfigapp::CanvasInterface::set_time - ), - waypoint.get_time() - ) - )); + Waypoint::Model model; + String side_string(String(" ") + (side==Waypoint::SIDE_LEFT ? _("In") : _("Out"))); - waypoint_menu->items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("Edit Waypoint"), - sigc::mem_fun( - waypoint_dialog, - &Gtk::Widget::show - ) - )); + // ------------------------------------------------------------------------ + if(side==Waypoint::SIDE_LEFT) model.set_before(INTERPOLATION_TCB); + else model.set_after(INTERPOLATION_TCB); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_TCB") + side_string, + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + if(side==Waypoint::SIDE_LEFT) model.set_before(INTERPOLATION_LINEAR); + else model.set_after(INTERPOLATION_LINEAR); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Linear") + side_string, + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + if(side==Waypoint::SIDE_LEFT) model.set_before(INTERPOLATION_HALT); + else model.set_after(INTERPOLATION_HALT); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Ease") + side_string, + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + if(side==Waypoint::SIDE_LEFT) model.set_before(INTERPOLATION_CONSTANT); + else model.set_after(INTERPOLATION_CONSTANT); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Constant") + side_string, + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + // ------------------------------------------------------------------------ + waypoint_menu->items().push_back(Gtk::Menu_Helpers::SeparatorElem()); + + model.set_after(INTERPOLATION_TCB); model.set_before(INTERPOLATION_TCB); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("TC_B Both"), + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + model.set_after(INTERPOLATION_LINEAR); model.set_before(INTERPOLATION_LINEAR); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("Li_near Both"), + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + model.set_after(INTERPOLATION_HALT); model.set_before(INTERPOLATION_HALT); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("Ea_se Both"), + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + model.set_after(INTERPOLATION_CONSTANT); model.set_before(INTERPOLATION_CONSTANT); + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("C_onstant Both"), + sigc::bind(sigc::ptr_fun(set_waypoint_model), waypoint_set, model, canvas_interface()))); + + // ------------------------------------------------------------------------ + waypoint_menu->items().push_back(Gtk::Menu_Helpers::SeparatorElem()); + + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Jump To"), + sigc::bind(sigc::mem_fun(*canvas_interface(), &synfigapp::CanvasInterface::set_time), time))); + + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Duplicate"), + sigc::bind(sigc::ptr_fun(duplicate_waypoints), waypoint_set, canvas_interface()))); + + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem((size == 1) ? _("_Remove") : strprintf(_("_Remove %d Waypoints"), size), + sigc::bind(sigc::ptr_fun(remove_waypoints), waypoint_set, canvas_interface()))); + + if (size == 1 && value_desc.is_valid()) + waypoint_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("_Properties"), + sigc::mem_fun(waypoint_dialog,&Gtk::Widget::show))); + + waypoint_menu->popup(button+1,gtk_get_current_event_time()); + } + break; - waypoint_menu->items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-duplicate"), - sigc::bind( - sigc::bind( - sigc::mem_fun( - *canvas_interface(), - &synfigapp::CanvasInterface::waypoint_duplicate - ), - waypoint - ), - value_desc - ) - )); - waypoint_menu->items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-delete"), - sigc::bind( - sigc::bind( - sigc::mem_fun( - *canvas_interface(), - &synfigapp::CanvasInterface::waypoint_remove - ), - waypoint - ), - value_desc - ) - )); - waypoint_menu->popup(button+1,gtk_get_current_event_time()); - } - break; default: break; } @@ -3309,8 +3522,9 @@ CanvasView::toggle_duck_mask(Duckmatic::Type type) void CanvasView::image_import() { - String filename(dirname(get_canvas()->get_file_name())); - if(App::dialog_open_file(_("Import Image"), filename)) + // String filename(dirname(get_canvas()->get_file_name())); + String filename("*.*"); + if(App::dialog_open_file(_("Import Image"), filename, IMAGE_DIR_PREFERENCE)) canvas_interface()->import(filename); } @@ -3419,7 +3633,7 @@ CanvasView::on_audio_file_change(const std::string &f) } void -CanvasView::on_audio_offset_change(const Time &t) +CanvasView::on_audio_offset_change(const synfig::Time &t) { canvas_interface()->set_meta_data("audiooffset",t.get_string()); } @@ -3555,13 +3769,13 @@ CanvasView::set_ext_widget(const synfig::String& x, Gtk::Widget* y) layer_tree->get_selection()->signal_changed().connect(SLOT_EVENT(EVENT_REFRESH_DUCKS)); layer_tree->signal_layer_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_layer_user_click)); layer_tree->signal_param_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_children_user_click)); - layer_tree->signal_waypoint_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked)); + layer_tree->signal_waypoint_clicked_layertree().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked_canvasview)); } if(x=="children") { children_tree=dynamic_cast(y); if(children_tree)children_tree->signal_user_click().connect(sigc::mem_fun(*this, &studio::CanvasView::on_children_user_click)); - if(children_tree)children_tree->signal_waypoint_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked)); + if(children_tree)children_tree->signal_waypoint_clicked_childrentree().connect(sigc::mem_fun(*this, &studio::CanvasView::on_waypoint_clicked_canvasview)); if(children_tree)children_tree->get_selection()->signal_changed().connect(SLOT_EVENT(EVENT_REFRESH_DUCKS)); } if(x=="keyframes") @@ -3569,7 +3783,7 @@ CanvasView::set_ext_widget(const synfig::String& x, Gtk::Widget* y) } bool -CanvasView::on_delete_event(GdkEventAny* event) +CanvasView::on_delete_event(GdkEventAny* event __attribute__ ((unused))) { close_view();