X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fapp.cpp;h=673bfc46da6b47eaecee59ba362ebb440eed4420;hb=37600b4b217caa5e316984ec0b035c5e8f9698af;hp=c45d4c3cf71c609f3ef2465bdfbaffdcee572cc3;hpb=c3ad95144d148602f672e95ddda1f18fc35502f8;p=synfig.git
diff --git a/synfig-studio/trunk/src/gtkmm/app.cpp b/synfig-studio/trunk/src/gtkmm/app.cpp
index c45d4c3..673bfc4 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
@@ -757,7 +758,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"));
@@ -885,7 +886,7 @@ init_ui_manager()
" "
" "
" "
-" "
+//" "
" "
" "
" "
@@ -1040,6 +1041,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");
@@ -1518,19 +1520,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 +1531,24 @@ 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("window.toolbox.pos","4 4");
+}
+
bool
App::shutdown_request(GdkEventAny*)
{
@@ -1700,13 +1708,17 @@ App::dialog_open_file(const std::string &title, std::string &filename)
synfig::String prev_path;
if(!_preferences.get_value("curr_path",prev_path))
prev_path=".";
+ prev_path = absolute_path(prev_path);
Gtk::FileChooserDialog *dialog=new Gtk::FileChooserDialog(title,Gtk::FILE_CHOOSER_ACTION_OPEN);
dialog->set_current_folder(prev_path);
dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
dialog->add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
if(!filename.empty())
- dialog->set_filename(filename);
+ if (is_absolute_path(filename))
+ dialog->set_filename(filename);
+ else
+ dialog->set_filename(prev_path + ETL_DIRECTORY_SEPARATOR + filename);
if(dialog->run()==GTK_RESPONSE_ACCEPT) {
filename=dialog->get_filename();
delete dialog;
@@ -1726,7 +1738,7 @@ App::dialog_open_file(const std::string &title, std::string &filename)
if(basename(filename)==filename)
{
- gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileselection),(prev_path+ETL_DIRECTORY_SEPERATOR).c_str());
+ gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileselection),(prev_path+ETL_DIRECTORY_SEPARATOR).c_str());
}
else
gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileselection),dirname(filename).c_str());
@@ -1764,7 +1776,7 @@ App::dialog_open_file(const std::string &title, std::string &filename)
bool
App::dialog_save_file(const std::string &title, std::string &filename)
{
-#ifdef USE_WIN32_FILE_DIALOGS
+#if USE_WIN32_FILE_DIALOGS
static TCHAR szFilter[] = TEXT ("All Files (*.*)\0*.*\0\0") ;
GdkWindow *gdkWinPtr=toolbox->get_window()->gobj();
@@ -1802,6 +1814,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;
@@ -1809,82 +1822,31 @@ App::dialog_save_file(const std::string &title, std::string &filename)
synfig::String prev_path;
if(!_preferences.get_value("curr_path",prev_path))
prev_path=".";
+ prev_path = absolute_path(prev_path);
Gtk::FileChooserDialog *dialog=new Gtk::FileChooserDialog(title,Gtk::FILE_CHOOSER_ACTION_SAVE);
dialog->set_current_folder(prev_path);
dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
dialog->add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
if(!filename.empty())
- dialog->set_filename(filename);
- if(dialog->run()==GTK_RESPONSE_ACCEPT) {
- filename=dialog->get_filename();
- delete dialog;
- return true;
- }
- delete dialog;
- return false;
-// return dialog_open_file(title, filename);
-#endif
-}
-
-bool
-App::dialog_saveas_file(const std::string &title, std::string &filename)
-{
-#if USE_WIN32_FILE_DIALOGS
- static TCHAR szFilter[] = TEXT ("All Files (*.*)\0*.*\0\0") ;
-
- GdkWindow *gdkWinPtr=toolbox->get_window()->gobj();
- HINSTANCE hInstance=static_cast(GetModuleHandle(NULL));
- HWND hWnd=static_cast(GDK_WINDOW_HWND(gdkWinPtr));
-
- ofn.lStructSize=sizeof(OPENFILENAME);
- ofn.hwndOwner = hWnd;
- ofn.hInstance = hInstance;
- ofn.lpstrFilter = szFilter;
-// ofn.lpstrCustomFilter=NULL;
-// ofn.nMaxCustFilter=0;
-// ofn.nFilterIndex=0;
-// ofn.lpstrFile=NULL;
- ofn.nMaxFile=MAX_PATH;
-// ofn.lpstrFileTitle=NULL;
-// ofn.lpstrInitialDir=NULL;
-// ofn.lpstrTitle=NULL;
- ofn.Flags=OFN_OVERWRITEPROMPT;
-// ofn.nFileOffset=0;
-// ofn.nFileExtension=0;
- ofn.lpstrDefExt=TEXT("sif");
-// ofn.lCustData = 0l;
- ofn.lpfnHook=NULL;
-// ofn.lpTemplateName=NULL;
-
- CHAR szFilename[MAX_PATH];
- CHAR szTitle[500];
- strcpy(szFilename,filename.c_str());
- strcpy(szTitle,title.c_str());
-
- ofn.lpstrFile=szFilename;
- ofn.lpstrFileTitle=szTitle;
-
- if(GetSaveFileName(&ofn))
{
- filename=szFilename;
- return true;
+ std::string full_path;
+ if (is_absolute_path(filename))
+ full_path = filename;
+ else
+ 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));
}
- return false;
-#else
- synfig::String prev_path;
- if(!_preferences.get_value("curr_path",prev_path))
- prev_path=".";
-
- Gtk::FileChooserDialog *dialog=new Gtk::FileChooserDialog(title,Gtk::FILE_CHOOSER_ACTION_SAVE);
- dialog->set_current_folder(prev_path);
- dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- dialog->add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
- if(!filename.empty())
- dialog->set_filename(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,6 +1959,9 @@ App::open(std::string filename)
return open_as(filename,filename);
}
+// this is called from autorecover.cpp:
+// App::open_as(get_shadow_file_name(filename),filename)
+// other than that, 'filename' and 'as' are the same
bool
App::open_as(std::string filename,std::string as)
{
@@ -2052,9 +2017,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);