/[svn]/gigedit/trunk/src/gigedit/mainwindow.cpp
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/mainwindow.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2918 by schoenebeck, Wed May 18 10:10:25 2016 UTC revision 2967 by schoenebeck, Mon Jul 18 11:22:38 2016 UTC
# Line 200  MainWindow::MainWindow() : Line 200  MainWindow::MainWindow() :
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)
# Line 384  MainWindow::MainWindow() : Line 391  MainWindow::MainWindow() :
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'/>"
# Line 903  void Saver::thread_function() Line 911  void Saver::thread_function()
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          }          }
# Line 1942  void MainWindow::on_auto_restore_win_dim Line 1977  void MainWindow::on_auto_restore_win_dim
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"));

Legend:
Removed from v.2918  
changed lines
  Added in v.2967

  ViewVC Help
Powered by ViewVC