200 |
sigc::mem_fun( |
sigc::mem_fun( |
201 |
*this, &MainWindow::on_auto_restore_win_dim)); |
*this, &MainWindow::on_auto_restore_win_dim)); |
202 |
|
|
203 |
|
toggle_action = |
204 |
|
Gtk::ToggleAction::create("SaveWithTemporaryFile", _("Save with _temporary file")); |
205 |
|
toggle_action->set_active(Settings::singleton()->saveWithTemporaryFile); |
206 |
|
actionGroup->add(toggle_action, |
207 |
|
sigc::mem_fun( |
208 |
|
*this, &MainWindow::on_save_with_temporary_file)); |
209 |
|
|
210 |
actionGroup->add( |
actionGroup->add( |
211 |
Gtk::Action::create("RefreshAll", _("_Refresh All")), |
Gtk::Action::create("RefreshAll", _("_Refresh All")), |
212 |
sigc::mem_fun(*this, &MainWindow::on_action_refresh_all) |
sigc::mem_fun(*this, &MainWindow::on_action_refresh_all) |
391 |
" <menuitem action='WarnUserOnExtensions'/>" |
" <menuitem action='WarnUserOnExtensions'/>" |
392 |
" <menuitem action='SyncSamplerInstrumentSelection'/>" |
" <menuitem action='SyncSamplerInstrumentSelection'/>" |
393 |
" <menuitem action='MoveRootNoteWithRegionMoved'/>" |
" <menuitem action='MoveRootNoteWithRegionMoved'/>" |
394 |
|
" <menuitem action='SaveWithTemporaryFile'/>" |
395 |
" </menu>" |
" </menu>" |
396 |
" <menu action='MenuHelp'>" |
" <menu action='MenuHelp'>" |
397 |
" <menuitem action='About'/>" |
" <menuitem action='About'/>" |
911 |
|
|
912 |
// if no filename was provided, that means "save", if filename was provided means "save as" |
// if no filename was provided, that means "save", if filename was provided means "save as" |
913 |
if (filename.empty()) { |
if (filename.empty()) { |
914 |
gig->Save(&progress); |
if (!Settings::singleton()->saveWithTemporaryFile) { |
915 |
|
// save directly over the existing .gig file |
916 |
|
// (requires less disk space than solution below |
917 |
|
// but may be slower) |
918 |
|
gig->Save(&progress); |
919 |
|
} else { |
920 |
|
// save the file as separate temporary file first, |
921 |
|
// then move the saved file over the old file |
922 |
|
// (may result in performance speedup during save) |
923 |
|
String tmpname = filename + ".TMP"; |
924 |
|
gig->Save(tmpname, &progress); |
925 |
|
#if defined(WIN32) |
926 |
|
if (!DeleteFile(filename.c_str()) { |
927 |
|
throw RIFF::Exception("Could not replace original file with temporary file (unable to remove original file)."); |
928 |
|
} |
929 |
|
#else // POSIX ... |
930 |
|
if (unlink(filename.c_str())) { |
931 |
|
throw RIFF::Exception("Could not replace original file with temporary file (unable to remove original file): " + String(strerror(errno))); |
932 |
|
} |
933 |
|
#endif |
934 |
|
if (rename(tmpname.c_str(), filename.c_str())) { |
935 |
|
#if defined(WIN32) |
936 |
|
throw RIFF::Exception("Could not replace original file with temporary file (unable to rename temp file)."); |
937 |
|
#else |
938 |
|
throw RIFF::Exception("Could not replace original file with temporary file (unable to rename temp file): " + String(strerror(errno))); |
939 |
|
#endif |
940 |
|
} |
941 |
|
} |
942 |
} else { |
} else { |
943 |
gig->Save(filename, &progress); |
gig->Save(filename, &progress); |
944 |
} |
} |
1977 |
Settings::singleton()->autoRestoreWindowDimension = item->get_active(); |
Settings::singleton()->autoRestoreWindowDimension = item->get_active(); |
1978 |
} |
} |
1979 |
|
|
1980 |
|
void MainWindow::on_save_with_temporary_file() { |
1981 |
|
Gtk::CheckMenuItem* item = |
1982 |
|
dynamic_cast<Gtk::CheckMenuItem*>(uiManager->get_widget("/MenuBar/MenuSettings/SaveWithTemporaryFile")); |
1983 |
|
if (!item) { |
1984 |
|
std::cerr << "/MenuBar/MenuSettings/SaveWithTemporaryFile == NULL\n"; |
1985 |
|
return; |
1986 |
|
} |
1987 |
|
Settings::singleton()->saveWithTemporaryFile = item->get_active(); |
1988 |
|
} |
1989 |
|
|
1990 |
bool MainWindow::is_copy_samples_unity_note_enabled() const { |
bool MainWindow::is_copy_samples_unity_note_enabled() const { |
1991 |
Gtk::CheckMenuItem* item = |
Gtk::CheckMenuItem* item = |
1992 |
dynamic_cast<Gtk::CheckMenuItem*>(uiManager->get_widget("/MenuBar/MenuEdit/CopySampleUnity")); |
dynamic_cast<Gtk::CheckMenuItem*>(uiManager->get_widget("/MenuBar/MenuEdit/CopySampleUnity")); |