X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fapp.cpp;h=bd35bc87d177f6a0e6cba2f76d4f8265f6b719a9;hb=44c9136b94ad618037353484723856238127a6ec;hp=d004654c2d311228e76e7551d55fd777ab805b68;hpb=adc1af4fb0c51317dc3a237c0d11bf05e768ad86;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/app.cpp b/synfig-studio/trunk/src/gtkmm/app.cpp index d004654..bd35bc8 100644 --- a/synfig-studio/trunk/src/gtkmm/app.cpp +++ b/synfig-studio/trunk/src/gtkmm/app.cpp @@ -6,6 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007 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 @@ -252,6 +253,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=false; static int max_recent_files_=25; int studio::App::get_max_recent_files() { return max_recent_files_; } @@ -600,6 +602,11 @@ public: value=strprintf("%s",Distance::system_name(App::distance_system).c_str()); return true; } + if(key=="single_threaded") + { + value=strprintf("%i",(int)App::single_threaded); + return true; + } if(key=="auto_recover_backup_interval") { value=strprintf("%i",App::auto_recover->get_timeout()); @@ -655,6 +662,12 @@ public: App::distance_system=Distance::ident_system(value);; return true; } + if(key=="single_threaded") + { + int i(atoi(value.c_str())); + App::single_threaded=i; + return true; + } return synfigapp::Settings::set_value(key,value); } @@ -667,6 +680,7 @@ public: ret.push_back("distance_system"); ret.push_back("file_history.size"); ret.push_back("use_colorspace_gamma"); + ret.push_back("single_threaded"); ret.push_back("auto_recover_backup_interval"); return ret; } @@ -727,7 +741,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")); @@ -757,7 +772,7 @@ init_ui_manager() DEFINE_ACTION("quality-09", _("Use Quality Level 9")); DEFINE_ACTION("quality-10", _("Use Quality Level 10")); DEFINE_ACTION("play", _("Play")); - DEFINE_ACTION("pause", _("Pause")); + // DEFINE_ACTION("pause", _("Pause")); DEFINE_ACTION("stop", _("Stop")); DEFINE_ACTION("toggle-grid-show", _("Toggle Grid Show")); DEFINE_ACTION("toggle-grid-snap", _("Toggle Grid Snap")); @@ -847,6 +862,7 @@ init_ui_manager() " " " " " " +" " " " " " " " @@ -885,7 +901,7 @@ init_ui_manager() " " " " " " -" " +//" " " " " " " " @@ -1040,6 +1056,7 @@ init_ui_manager() ACCEL2(Gtk::AccelKey('>',Gdk::CONTROL_MASK,"//seek-next-second")); ACCEL2(Gtk::AccelKey('<',Gdk::CONTROL_MASK,"//seek-prev-second")); ACCEL2(Gtk::AccelKey('o',Gdk::CONTROL_MASK,"//toggle-onion-skin")); + ACCEL("//play", "p"); ACCEL("//seek-begin","Home"); ACCEL("//seek-end","End"); @@ -1088,7 +1105,10 @@ App::App(int *argc, char ***argv): gdk_rgb_init(); - Glib::thread_init(); + // don't call thread_init() if threads are already initialised + // on some machines bonobo_init() initialised threads before we get here + if (!g_thread_supported()) + Glib::thread_init(); distance_system=Distance::SYSTEM_UNITS; @@ -1518,19 +1538,7 @@ App::load_settings() //if(!synfigapp::Main::settings().load_from_file(filename)) { gamma.set_gamma(1.0/2.2); - synfigapp::Main::settings().set_value("dock.dialog.1.comp_selector","1"); - synfigapp::Main::settings().set_value("dock.dialog.1.contents","navigator - info pal_edit pal_browse - tool_options history canvases - layers groups"); - synfigapp::Main::settings().set_value("dock.dialog.1.contents_size","225 167 207"); - synfigapp::Main::settings().set_value("dock.dialog.1.pos","1057 32"); - synfigapp::Main::settings().set_value("dock.dialog.1.size","208 1174"); - synfigapp::Main::settings().set_value("dock.dialog.2.comp_selector","0"); - synfigapp::Main::settings().set_value("dock.dialog.2.contents","params children keyframes | timetrack curves meta_data"); - synfigapp::Main::settings().set_value("dock.dialog.2.contents_size","263"); - synfigapp::Main::settings().set_value("dock.dialog.2.pos","0 973"); - synfigapp::Main::settings().set_value("dock.dialog.2.size","1045 235"); - synfigapp::Main::settings().set_value("pref.distance_system","pt"); - synfigapp::Main::settings().set_value("pref.use_colorspace_gamma","1"); - synfigapp::Main::settings().set_value("window.toolbox.pos","4 4"); + reset_initial_window_configuration(); } } setlocale(LC_NUMERIC,old_locale); @@ -1541,6 +1549,25 @@ App::load_settings() } } +void +App::reset_initial_window_configuration() +{ + synfigapp::Main::settings().set_value("dock.dialog.1.comp_selector","1"); + synfigapp::Main::settings().set_value("dock.dialog.1.contents","navigator - info pal_edit pal_browse - tool_options history canvases - layers groups"); + synfigapp::Main::settings().set_value("dock.dialog.1.contents_size","225 167 207"); + synfigapp::Main::settings().set_value("dock.dialog.1.pos","1057 32"); + synfigapp::Main::settings().set_value("dock.dialog.1.size","208 1174"); + synfigapp::Main::settings().set_value("dock.dialog.2.comp_selector","0"); + synfigapp::Main::settings().set_value("dock.dialog.2.contents","params children keyframes | timetrack curves meta_data"); + synfigapp::Main::settings().set_value("dock.dialog.2.contents_size","263"); + synfigapp::Main::settings().set_value("dock.dialog.2.pos","0 973"); + synfigapp::Main::settings().set_value("dock.dialog.2.size","1045 235"); + synfigapp::Main::settings().set_value("pref.distance_system","pt"); + synfigapp::Main::settings().set_value("pref.use_colorspace_gamma","1"); + synfigapp::Main::settings().set_value("pref.single_threaded","0"); + synfigapp::Main::settings().set_value("window.toolbox.pos","4 4"); +} + bool App::shutdown_request(GdkEventAny*) { @@ -1806,6 +1833,7 @@ App::dialog_save_file(const std::string &title, std::string &filename) if(GetSaveFileName(&ofn)) { filename=szFilename; + _preferences.set_value("curr_path",dirname(filename)); return true; } return false; @@ -1820,13 +1848,24 @@ App::dialog_save_file(const std::string &title, std::string &filename) dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog->add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); if(!filename.empty()) + { + std::string full_path; if (is_absolute_path(filename)) - dialog->set_filename(filename); + full_path = filename; else - dialog->set_filename(prev_path + ETL_DIRECTORY_SEPARATOR + filename); + full_path = prev_path + ETL_DIRECTORY_SEPARATOR + filename; + // select the file if it exists + dialog->set_filename(full_path); + + // if the file doesn't exist, put its name into the filename box + struct stat s; + if(stat(full_path.c_str(),&s) == -1 && errno == ENOENT) + dialog->set_current_name(basename(filename)); + } if(dialog->run()==GTK_RESPONSE_ACCEPT) { filename=dialog->get_filename(); delete dialog; + _preferences.set_value("curr_path",dirname(filename)); return true; } delete dialog; @@ -1997,9 +2036,9 @@ void App::new_instance() { handle canvas=synfig::Canvas::create(); - canvas->set_name(strprintf("Untitled%d",Instance::get_count())); + canvas->set_name(strprintf("%s%d", DEFAULT_FILENAME_PREFIX, Instance::get_count()+1)); - String file_name(strprintf("untitled%d.sif",Instance::get_count())); + String file_name(strprintf("%s%d.sifz", DEFAULT_FILENAME_PREFIX, Instance::get_count()+1)); canvas->rend_desc().set_frame_rate(24.0); canvas->rend_desc().set_time_start(0.0);