X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fapp.cpp;h=aa161fd05848d476fb63e697abe0e940bf7a5abc;hb=46be86a89462801a0392ffa9bcabe09ed96cbaf2;hp=0c2bd849870158c70067bbca3c9ac30324e9848b;hpb=e10333c5709c495f1cb1f10d06aab3012b0dbc17;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/app.cpp b/synfig-studio/trunk/src/gtkmm/app.cpp index 0c2bd84..aa161fd 100644 --- a/synfig-studio/trunk/src/gtkmm/app.cpp +++ b/synfig-studio/trunk/src/gtkmm/app.cpp @@ -123,6 +123,8 @@ #include #include +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -253,7 +255,7 @@ studio::Dock_Curves* dock_curves; std::list< etl::handle< studio::Module > > module_list_; bool studio::App::use_colorspace_gamma=true; -bool studio::App::single_threaded=true; +bool studio::App::single_threaded=false; static int max_recent_files_=25; int studio::App::get_max_recent_files() { return max_recent_files_; } @@ -262,6 +264,25 @@ void studio::App::set_max_recent_files(int x) { max_recent_files_=x; } static synfig::String app_base_path_; namespace studio { + +bool +really_delete_widget(Gtk::Widget *widget) +{ + synfig::info("really delete %p", (void*)widget); + delete widget; + return false; +} + +// nasty workaround - when we've finished with a popup menu, we want to delete it +// attaching to the signal_hide() signal gets us here before the action on the menu has run, +// so schedule the real delete to happen in 50ms, giving the action a chance to run +void +delete_widget(Gtk::Widget *widget) +{ + synfig::info("delete %p", (void*)widget); + Glib::signal_timeout().connect(sigc::bind(sigc::ptr_fun(&really_delete_widget), widget), 50); +} + }; // END of namespace studio studio::StateManager* state_manager; @@ -697,18 +718,18 @@ init_ui_manager() Glib::RefPtr actions_action_group = Gtk::ActionGroup::create(); - menus_action_group->add( Gtk::Action::create("menu-file", "_File") ); - menus_action_group->add( Gtk::Action::create("menu-edit", "_Edit") ); - menus_action_group->add( Gtk::Action::create("menu-view", "_View") ); - menus_action_group->add( Gtk::Action::create("menu-canvas", "_Canvas") ); - menus_action_group->add( Gtk::Action::create("menu-layer", "_Layer") ); - menus_action_group->add( Gtk::Action::create("menu-duck-mask", "Show/Hide Ducks") ); - menus_action_group->add( Gtk::Action::create("menu-preview-quality", "Preview Quality") ); - menus_action_group->add( Gtk::Action::create("menu-layer-new", "New Layer") ); - menus_action_group->add( Gtk::Action::create("menu-keyframe", "Keyframe") ); - menus_action_group->add( Gtk::Action::create("menu-group", "Group") ); - menus_action_group->add( Gtk::Action::create("menu-state", "State") ); - menus_action_group->add( Gtk::Action::create("menu-toolbox", "Toolbox") ); + menus_action_group->add( Gtk::Action::create("menu-file", _("_File")) ); + menus_action_group->add( Gtk::Action::create("menu-edit", _("_Edit")) ); + menus_action_group->add( Gtk::Action::create("menu-view", _("_View")) ); + menus_action_group->add( Gtk::Action::create("menu-canvas", _("_Canvas")) ); + menus_action_group->add( Gtk::Action::create("menu-layer", _("_Layer")) ); + menus_action_group->add( Gtk::Action::create("menu-duck-mask", _("Show/Hide Ducks")) ); + menus_action_group->add( Gtk::Action::create("menu-preview-quality", _("Preview Quality")) ); + menus_action_group->add( Gtk::Action::create("menu-layer-new", _("New Layer")) ); + menus_action_group->add( Gtk::Action::create("menu-keyframe", _("Keyframe")) ); + menus_action_group->add( Gtk::Action::create("menu-group", _("Group")) ); + menus_action_group->add( Gtk::Action::create("menu-state", _("State")) ); + menus_action_group->add( Gtk::Action::create("menu-toolbox", _("Toolbox")) ); // Add the synfigapp actions... synfigapp::Action::Book::iterator iter; @@ -741,7 +762,8 @@ init_ui_manager() DEFINE_ACTION("dialog-flipbook", _("Preview Dialog")); DEFINE_ACTION("sound", _("Sound File")); DEFINE_ACTION("options", _("Options")); - DEFINE_ACTION("close", _("Close")); + DEFINE_ACTION("close", _("Close View")); + DEFINE_ACTION("close-document", _("Close Document")); DEFINE_ACTION("undo", Gtk::StockID("gtk-undo")); @@ -861,6 +883,7 @@ init_ui_manager() " " " " " " +" " " " " " " " @@ -1091,7 +1114,7 @@ init_ui_manager() App::App(int *argc, char ***argv): Gtk::Main(argc,argv), - IconControler(etl::dirname((*argv)[0])) + IconController(etl::dirname((*argv)[0])) { app_base_path_=etl::dirname(etl::dirname((*argv)[0])); @@ -1103,8 +1126,8 @@ App::App(int *argc, char ***argv): gdk_rgb_init(); - // don't call thread_init() if threads are already initialised - // on some machines bonobo_init() initialised threads before we get here + // don't call thread_init() if threads are already initialized + // on some machines bonobo_init() initialized threads before we get here if (!g_thread_supported()) Glib::thread_init(); @@ -1163,7 +1186,7 @@ App::App(int *argc, char ***argv): try { synfigapp_main=etl::smart_ptr(new synfigapp::Main(etl::dirname((*argv)[0]),&synfig_init_cb)); } catch(...) { - get_ui_interface()->error("Failed to initialize synfig!"); + get_ui_interface()->error(_("Failed to initialize synfig!")); throw; } @@ -1172,82 +1195,82 @@ App::App(int *argc, char ***argv): try { - studio_init_cb.task("Init UI Manager..."); + studio_init_cb.task(_("Init UI Manager...")); App::ui_manager_=studio::UIManager::create(); init_ui_manager(); - studio_init_cb.task("Init Dock Manager..."); + studio_init_cb.task(_("Init Dock Manager...")); dock_manager=new studio::DockManager(); - studio_init_cb.task("Init State Manager..."); + studio_init_cb.task(_("Init State Manager...")); state_manager=new StateManager(); - studio_init_cb.task("Init Toolbox..."); + studio_init_cb.task(_("Init Toolbox...")); toolbox=new studio::Toolbox(); - studio_init_cb.task("Init Tool Options..."); + studio_init_cb.task(_("Init Tool Options...")); dialog_tool_options=new studio::Dialog_ToolOptions(); dock_manager->register_dockable(*dialog_tool_options); - studio_init_cb.task("Init History..."); + studio_init_cb.task(_("Init History...")); dock_history=new studio::Dock_History(); dock_manager->register_dockable(*dock_history); - studio_init_cb.task("Init Canvases..."); + studio_init_cb.task(_("Init Canvases...")); dock_canvases=new studio::Dock_Canvases(); dock_manager->register_dockable(*dock_canvases); - studio_init_cb.task("Init Keyframes..."); + studio_init_cb.task(_("Init Keyframes...")); dock_keyframes=new studio::Dock_Keyframes(); dock_manager->register_dockable(*dock_keyframes); - studio_init_cb.task("Init Layers..."); + studio_init_cb.task(_("Init Layers...")); dock_layers=new studio::Dock_Layers(); dock_manager->register_dockable(*dock_layers); - studio_init_cb.task("Init Params..."); + studio_init_cb.task(_("Init Params...")); dock_params=new studio::Dock_Params(); dock_manager->register_dockable(*dock_params); - studio_init_cb.task("Init MetaData..."); + studio_init_cb.task(_("Init MetaData...")); dock_meta_data=new studio::Dock_MetaData(); dock_manager->register_dockable(*dock_meta_data); - studio_init_cb.task("Init Children..."); + studio_init_cb.task(_("Init Children...")); dock_children=new studio::Dock_Children(); dock_manager->register_dockable(*dock_children); - studio_init_cb.task("Init Info..."); + studio_init_cb.task(_("Init Info...")); dock_info = new studio::Dock_Info(); dock_manager->register_dockable(*dock_info); - studio_init_cb.task("Init Navigator..."); + studio_init_cb.task(_("Init Navigator...")); dock_navigator = new studio::Dock_Navigator(); dock_manager->register_dockable(*dock_navigator); - studio_init_cb.task("Init Timetrack..."); + studio_init_cb.task(_("Init Timetrack...")); dock_timetrack = new studio::Dock_Timetrack(); dock_manager->register_dockable(*dock_timetrack); - studio_init_cb.task("Init Curve Editor..."); + studio_init_cb.task(_("Init Curve Editor...")); dock_curves = new studio::Dock_Curves(); dock_manager->register_dockable(*dock_curves); - studio_init_cb.task("Init Layer Groups..."); + studio_init_cb.task(_("Init Layer Groups...")); dock_layer_groups = new studio::Dock_LayerGroups(); dock_manager->register_dockable(*dock_layer_groups); - studio_init_cb.task("Init Color Dialog..."); + studio_init_cb.task(_("Init Color Dialog...")); dialog_color=new studio::Dialog_Color(); - studio_init_cb.task("Init Gradient Dialog..."); + studio_init_cb.task(_("Init Gradient Dialog...")); dialog_gradient=new studio::Dialog_Gradient(); - studio_init_cb.task("Init DeviceTracker..."); + studio_init_cb.task(_("Init DeviceTracker...")); device_tracker=new studio::DeviceTracker(); - studio_init_cb.task("Init Tools..."); + studio_init_cb.task(_("Init Tools...")); state_manager->add_state(&state_normal); state_manager->add_state(&state_smooth_move); state_manager->add_state(&state_scale); @@ -1276,28 +1299,28 @@ App::App(int *argc, char ***argv): // Disabled by default - it doesn't work properly? if(getenv("SYNFIG_ENABLE_WIDTH" )) state_manager->add_state(&state_width); - studio_init_cb.task("Init ModPalette..."); + studio_init_cb.task(_("Init ModPalette...")); module_list_.push_back(new ModPalette()); module_list_.back()->start(); - studio_init_cb.task("Init ModMirror..."); + studio_init_cb.task(_("Init ModMirror...")); module_list_.push_back(new ModMirror()); module_list_.back()->start(); - studio_init_cb.task("Init Setup Dialog..."); + studio_init_cb.task(_("Init Setup Dialog...")); dialog_setup=new studio::Dialog_Setup(); - studio_init_cb.task("Init Input Dialog..."); + studio_init_cb.task(_("Init Input Dialog...")); dialog_input=new Gtk::InputDialog(); dialog_input->get_close_button()->signal_clicked().connect( sigc::mem_fun( *dialog_input, &Gtk::InputDialog::hide ) ); dialog_input->get_save_button()->signal_clicked().connect( sigc::ptr_fun(studio::App::dialog_not_implemented) ); - studio_init_cb.task("Init auto recovery..."); + studio_init_cb.task(_("Init auto recovery...")); auto_recover=new AutoRecover(); studio_init_cb.amount_complete(9250,10000); - studio_init_cb.task("Loading Settings..."); + studio_init_cb.task(_("Loading Settings...")); load_settings(); - studio_init_cb.task("Checking auto-recover..."); + studio_init_cb.task(_("Checking auto-recover...")); studio_init_cb.amount_complete(9900,10000); @@ -1306,11 +1329,11 @@ App::App(int *argc, char ***argv): about_window.hide(); if( get_ui_interface()->yes_no( - "Auto Recovery", - "Synfig Studio seems to have crashed\n" + _("Auto Recovery"), + _("Synfig Studio seems to have crashed\n" "before you could save all your files.\n" "Would you like to re-open those files\n" - "and recover your unsaved changes?" + "and recover your unsaved changes?") )==synfigapp::UIInterface::RESPONSE_YES ) { @@ -1334,13 +1357,13 @@ App::App(int *argc, char ***argv): for(;*argc>=1;(*argc)--) if((*argv)[*argc] && (*argv)[*argc][0]!='-') { - studio_init_cb.task("Loading files..."); + studio_init_cb.task(_("Loading files...")); about_window.hide(); open((*argv)[*argc]); about_window.show(); } - studio_init_cb.task("Done."); + studio_init_cb.task(_("Done.")); studio_init_cb.amount_complete(10000,10000); toolbox->present(); @@ -1423,7 +1446,7 @@ App::add_recent_file(const std::string &file_name) if(basename(filename)[0]=='.') return; - // If we aren't an absolute path, turn outselves into one + // If we aren't an absolute path, turn ourselves into one if(!is_absolute_path(filename)) filename=absolute_path(filename); @@ -1580,10 +1603,10 @@ App::quit() if(shutdown_in_progress)return; - get_ui_interface()->task("Quit Request"); + get_ui_interface()->task(_("Quit Request")); if(Busy::count) { - dialog_error_blocking("Cannot quit!","Tasks are currently running.\nPlease cancel the current tasks and try again"); + dialog_error_blocking(_("Cannot quit!"),_("Tasks are currently running.\nPlease cancel the current tasks and try again")); return; } @@ -1651,7 +1674,7 @@ App::quit() Gtk::Main::quit(); auto_recover->normal_shutdown(); - get_ui_interface()->task("Quit Request sent"); + get_ui_interface()->task(_("Quit Request sent")); } void @@ -1930,8 +1953,8 @@ App::dialog_yes_no_cancel(const std::string &title, const std::string &message) void App::dialog_not_implemented() { - Gtk::MessageDialog dialog("Feature not available", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); - dialog.set_secondary_text("Sorry, this feature has not yet been implemented."); + Gtk::MessageDialog dialog(_("Feature not available"), false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); + dialog.set_secondary_text(_("Sorry, this feature has not yet been implemented.")); dialog.run(); } @@ -2051,7 +2074,10 @@ App::new_instance() canvas->rend_desc().set_flags(RendDesc::PX_ASPECT|RendDesc::IM_SPAN); canvas->set_file_name(file_name); - Instance::create(canvas)->find_canvas_view(canvas)->canvas_properties.present(); + handle instance = Instance::create(canvas); + + if (!getenv("SYNFIG_DISABLE_NEW_CANVAS_EDIT_PROPERTIES")) + instance->find_canvas_view(canvas)->canvas_properties.present(); } void