/[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 1225 by schoenebeck, Sun Jun 10 10:56:11 2007 UTC revision 1261 by persson, Thu Jul 5 17:12:20 2007 UTC
# Line 26  Line 26 
26  #include <gtkmm/targetentry.h>  #include <gtkmm/targetentry.h>
27  #include <gtkmm/main.h>  #include <gtkmm/main.h>
28    
29  #if GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 6  #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 6) || GTKMM_MAJOR_VERSION > 2
30  #define ABOUT_DIALOG  #define ABOUT_DIALOG
31  #include <gtkmm/aboutdialog.h>  #include <gtkmm/aboutdialog.h>
32  #endif  #endif
# Line 99  MainWindow::MainWindow() Line 99  MainWindow::MainWindow()
99      action = Gtk::Action::create("SaveAs", Gtk::Stock::SAVE_AS);      action = Gtk::Action::create("SaveAs", Gtk::Stock::SAVE_AS);
100      action->property_label() = action->property_label() + "...";      action->property_label() = action->property_label() + "...";
101      actionGroup->add(action,      actionGroup->add(action,
102                       *(new Gtk::AccelKey("<shift><control>s")),                       Gtk::AccelKey("<shift><control>s"),
103                       sigc::mem_fun(                       sigc::mem_fun(
104                           *this, &MainWindow::on_action_file_save_as)                           *this, &MainWindow::on_action_file_save_as));
         );  
105      actionGroup->add(Gtk::Action::create("Properties",      actionGroup->add(Gtk::Action::create("Properties",
106                                           Gtk::Stock::PROPERTIES),                                           Gtk::Stock::PROPERTIES),
107                       sigc::mem_fun(                       sigc::mem_fun(
# Line 113  MainWindow::MainWindow() Line 112  MainWindow::MainWindow()
112                           *this, &MainWindow::show_instr_props));                           *this, &MainWindow::show_instr_props));
113      actionGroup->add(Gtk::Action::create("Quit", Gtk::Stock::QUIT),      actionGroup->add(Gtk::Action::create("Quit", Gtk::Stock::QUIT),
114                       sigc::mem_fun(                       sigc::mem_fun(
115                           *this, &MainWindow::hide));                           *this, &MainWindow::on_action_quit));
116      actionGroup->add(Gtk::Action::create("MenuInstrument", _("_Instrument")));      actionGroup->add(Gtk::Action::create("MenuInstrument", _("_Instrument")));
117    
118      action = Gtk::Action::create("MenuHelp", Gtk::Stock::HELP);      action = Gtk::Action::create("MenuHelp", Gtk::Stock::HELP);
# Line 153  MainWindow::MainWindow() Line 152  MainWindow::MainWindow()
152    
153      uiManager = Gtk::UIManager::create();      uiManager = Gtk::UIManager::create();
154      uiManager->insert_action_group(actionGroup);      uiManager->insert_action_group(actionGroup);
155      // add_accel_group(uiManager->get_accel_group());      add_accel_group(uiManager->get_accel_group());
156    
157      Glib::ustring ui_info =      Glib::ustring ui_info =
158          "<ui>"          "<ui>"
# Line 201  MainWindow::MainWindow() Line 200  MainWindow::MainWindow()
200      m_VBox.pack_start(m_RegionChooser, Gtk::PACK_SHRINK);      m_VBox.pack_start(m_RegionChooser, Gtk::PACK_SHRINK);
201      m_VBox.pack_start(m_DimRegionChooser, Gtk::PACK_SHRINK);      m_VBox.pack_start(m_DimRegionChooser, Gtk::PACK_SHRINK);
202    
203      m_RegionChooser.signal_sel_changed().connect(      m_RegionChooser.signal_region_selected().connect(
204          sigc::mem_fun(*this, &MainWindow::region_changed) );          sigc::mem_fun(*this, &MainWindow::region_changed) );
205      m_DimRegionChooser.signal_sel_changed().connect(      m_DimRegionChooser.signal_dimregion_selected().connect(
206          sigc::mem_fun(*this, &MainWindow::dimreg_changed) );          sigc::mem_fun(*this, &MainWindow::dimreg_changed) );
207    
208    
# Line 242  MainWindow::MainWindow() Line 241  MainWindow::MainWindow()
241      dimreg_edit.wSample->signal_drag_data_received().connect(      dimreg_edit.wSample->signal_drag_data_received().connect(
242          sigc::mem_fun(*this, &MainWindow::on_sample_label_drop_drag_data_received)          sigc::mem_fun(*this, &MainWindow::on_sample_label_drop_drag_data_received)
243      );      );
244        dimreg_edit.signal_dimreg_changed().connect(
245            sigc::mem_fun(*this, &MainWindow::file_changed));
246        m_RegionChooser.signal_instrument_changed().connect(
247            sigc::mem_fun(*this, &MainWindow::file_changed));
248        m_DimRegionChooser.signal_region_changed().connect(
249            sigc::mem_fun(*this, &MainWindow::file_changed));
250        instrumentProps.signal_instrument_changed().connect(
251            sigc::mem_fun(*this, &MainWindow::file_changed));
252      file = 0;      file = 0;
253        file_is_changed = false;
254    
255      show_all_children();      show_all_children();
256  }  }
# Line 252  MainWindow::~MainWindow() Line 259  MainWindow::~MainWindow()
259  {  {
260  }  }
261    
262    bool MainWindow::on_delete_event(GdkEventAny* event)
263    {
264        return file_is_changed && !close_confirmation_dialog();
265    }
266    
267    void MainWindow::on_action_quit()
268    {
269        if (file_is_changed && !close_confirmation_dialog()) return;
270        hide();
271    }
272    
273  void MainWindow::region_changed()  void MainWindow::region_changed()
274  {  {
275      m_DimRegionChooser.set_region(m_RegionChooser.get_region());      m_DimRegionChooser.set_region(m_RegionChooser.get_region());
# Line 370  void MainWindow::__clear() { Line 388  void MainWindow::__clear() {
388    
389  void MainWindow::on_action_file_new()  void MainWindow::on_action_file_new()
390  {  {
391        if (file_is_changed && !close_confirmation_dialog()) return;
392    
393      // clear all GUI elements      // clear all GUI elements
394      __clear();      __clear();
395      // create a new .gig file (virtually yet)      // create a new .gig file (virtually yet)
# Line 378  void MainWindow::on_action_file_new() Line 398  void MainWindow::on_action_file_new()
398      gig::Instrument* pInstrument = pFile->AddInstrument();      gig::Instrument* pInstrument = pFile->AddInstrument();
399      pInstrument->pInfo->Name = "Unnamed Instrument";      pInstrument->pInfo->Name = "Unnamed Instrument";
400      // update GUI with that new gig::File      // update GUI with that new gig::File
401      load_gig(pFile, NULL /*no file name yet*/);      load_gig(pFile, 0 /*no file name yet*/);
402    }
403    
404    bool MainWindow::close_confirmation_dialog()
405    {
406        gchar* msg = g_strdup_printf(_("Save changes to \"%s\" before closing?"),
407                                     Glib::filename_display_basename(filename).c_str());
408        Gtk::MessageDialog dialog(*this, msg, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE);
409        g_free(msg);
410        dialog.set_secondary_text(_("If you close without saving, your changes will be lost."));
411        dialog.add_button(_("Close _Without Saving"), Gtk::RESPONSE_NO);
412        dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
413        dialog.add_button(file_has_name ? Gtk::Stock::SAVE : Gtk::Stock::SAVE_AS, Gtk::RESPONSE_YES);
414        dialog.set_default_response(Gtk::RESPONSE_YES);
415        int response = dialog.run();
416        if (response == Gtk::RESPONSE_YES) return file_save();
417        return response != Gtk::RESPONSE_CANCEL;
418  }  }
419    
420  void MainWindow::on_action_file_open()  void MainWindow::on_action_file_open()
421  {  {
422        if (file_is_changed && !close_confirmation_dialog()) return;
423    
424      Gtk::FileChooserDialog dialog(*this, _("Open file"));      Gtk::FileChooserDialog dialog(*this, _("Open file"));
425      dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);      dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
426      dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);      dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
427        dialog.set_default_response(Gtk::RESPONSE_OK);
428      Gtk::FileFilter filter;      Gtk::FileFilter filter;
429      filter.add_pattern("*.gig");      filter.add_pattern("*.gig");
430      dialog.set_filter(filter);      dialog.set_filter(filter);
431        if (current_dir != "") {
432            dialog.set_current_folder(current_dir);
433        }
434      if (dialog.run() == Gtk::RESPONSE_OK) {      if (dialog.run() == Gtk::RESPONSE_OK) {
435          printf("filename=%s\n", dialog.get_filename().c_str());          std::string filename = dialog.get_filename();
436            printf("filename=%s\n", filename.c_str());
437          __clear();          __clear();
438          printf("on_action_file_open self=%x\n", Glib::Thread::self());          printf("on_action_file_open self=%x\n", Glib::Thread::self());
439          load_file(dialog.get_filename().c_str());          load_file(filename.c_str());
440            current_dir = Glib::path_get_dirname(filename);
441      }      }
442  }  }
443    
# Line 417  void MainWindow::load_instrument(gig::In Line 461  void MainWindow::load_instrument(gig::In
461          Gtk::Main::quit();          Gtk::Main::quit();
462      }      }
463      gig::File* pFile = (gig::File*) instr->GetParent();      gig::File* pFile = (gig::File*) instr->GetParent();
464      load_gig(pFile, NULL /*file name*/);      load_gig(pFile, 0 /*file name*/);
465      //TODO: automatically select the given instrument      //TODO: automatically select the given instrument
466  }  }
467    
# Line 436  void MainWindow::on_loader_finished() Line 480  void MainWindow::on_loader_finished()
480    
481  void MainWindow::on_action_file_save()  void MainWindow::on_action_file_save()
482  {  {
483      if (!file) return;      file_save();
484    }
485    
486    bool MainWindow::file_save()
487    {
488        if (!file) return false;
489        if (!file_has_name) return file_save_as();
490    
491      std::cout << "Saving file\n" << std::flush;      std::cout << "Saving file\n" << std::flush;
492      try {      try {
493          file->Save();          file->Save();
494            if (file_is_changed) {
495                set_title(get_title().substr(1));
496                file_is_changed = false;
497            }
498      } catch (RIFF::Exception e) {      } catch (RIFF::Exception e) {
499          Glib::ustring txt = "Could not save file: " + e.Message;          Glib::ustring txt = "Could not save file: " + e.Message;
500          Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_ERROR);          Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_ERROR);
501          msg.run();          msg.run();
502          return;          return false;
503      }      }
504      std::cout << "Saving file done\n" << std::flush;      std::cout << "Saving file done\n" << std::flush;
505      __import_queued_samples();      __import_queued_samples();
506        return true;
507  }  }
508    
509  void MainWindow::on_action_file_save_as()  void MainWindow::on_action_file_save_as()
510  {  {
511      if (!file) return;      file_save_as();
512      Gtk::FileChooserDialog dialog(*this, "Open", Gtk::FILE_CHOOSER_ACTION_SAVE);  }
513    
514    bool MainWindow::file_save_as()
515    {
516        if (!file) return false;
517        Gtk::FileChooserDialog dialog(*this, _("Save as"), Gtk::FILE_CHOOSER_ACTION_SAVE);
518      dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);      dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
519      dialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_OK);      dialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_OK);
520        dialog.set_default_response(Gtk::RESPONSE_OK);
521    
522    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 8) || GTKMM_MAJOR_VERSION > 2
523        dialog.set_do_overwrite_confirmation();
524        // TODO: an overwrite dialog for gtkmm < 2.8
525    #endif
526      Gtk::FileFilter filter;      Gtk::FileFilter filter;
527      filter.add_pattern("*.gig");      filter.add_pattern("*.gig");
528      dialog.set_filter(filter);      dialog.set_filter(filter);
529    
530        if (Glib::path_is_absolute(filename)) {
531            dialog.set_filename(filename);
532        } else if (current_dir != "") {
533            dialog.set_current_folder(current_dir);
534        }
535        dialog.set_current_name(Glib::filename_display_basename(filename));
536    
537      if (dialog.run() == Gtk::RESPONSE_OK) {      if (dialog.run() == Gtk::RESPONSE_OK) {
         printf("filename=%s\n", dialog.get_filename().c_str());  
538          try {          try {
539              file->Save(dialog.get_filename());              std::string filename = dialog.get_filename();
540                if (!Glib::str_has_suffix(filename, ".gig")) {
541                    filename += ".gig";
542                }
543                printf("filename=%s\n", filename.c_str());
544                file->Save(filename);
545                this->filename = filename;
546                current_dir = Glib::path_get_dirname(filename);
547                set_title(Glib::filename_display_basename(filename));
548                file_has_name = true;
549                file_is_changed = false;
550          } catch (RIFF::Exception e) {          } catch (RIFF::Exception e) {
551              Glib::ustring txt = "Could not save file: " + e.Message;              Glib::ustring txt = "Could not save file: " + e.Message;
552              Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_ERROR);              Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_ERROR);
553              msg.run();              msg.run();
554              return;              return false;
555          }          }
556          __import_queued_samples();          __import_queued_samples();
557            return true;
558      }      }
559        return false;
560  }  }
561    
562  // actually write the sample(s)' data to the gig file  // actually write the sample(s)' data to the gig file
# Line 633  void InstrumentProps::add_prop(LabelWidg Line 719  void InstrumentProps::add_prop(LabelWidg
719      table.attach(prop.widget, 1, 2, rowno, rowno + 1,      table.attach(prop.widget, 1, 2, rowno, rowno + 1,
720                   Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK);                   Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK);
721      rowno++;      rowno++;
722        prop.signal_changed_by_user().connect(instrument_changed.make_slot());
723  }  }
724    
725  InstrumentProps::InstrumentProps()  InstrumentProps::InstrumentProps()
# Line 669  InstrumentProps::InstrumentProps() Line 756  InstrumentProps::InstrumentProps()
756      add_prop(eDimensionKeyRangeLow);      add_prop(eDimensionKeyRangeLow);
757      add_prop(eDimensionKeyRangeHigh);      add_prop(eDimensionKeyRangeHigh);
758    
759      eDimensionKeyRangeLow.signal_value_changed().connect(      eDimensionKeyRangeLow.signal_changed_by_user().connect(
760          sigc::mem_fun(*this, &InstrumentProps::key_range_low_changed));          sigc::mem_fun(*this, &InstrumentProps::key_range_low_changed));
761      eDimensionKeyRangeHigh.signal_value_changed().connect(      eDimensionKeyRangeHigh.signal_changed_by_user().connect(
762          sigc::mem_fun(*this, &InstrumentProps::key_range_high_changed));          sigc::mem_fun(*this, &InstrumentProps::key_range_high_changed));
763    
764      add(vbox);      add(vbox);
# Line 696  InstrumentProps::InstrumentProps() Line 783  InstrumentProps::InstrumentProps()
783    
784  void InstrumentProps::set_instrument(gig::Instrument* instrument)  void InstrumentProps::set_instrument(gig::Instrument* instrument)
785  {  {
     update_gui = false;  
786      eName.set_ptr(&instrument->pInfo->Name);      eName.set_ptr(&instrument->pInfo->Name);
787      eIsDrum.set_ptr(&instrument->IsDrum);      eIsDrum.set_ptr(&instrument->IsDrum);
788      eMIDIBank.set_ptr(&instrument->MIDIBank);      eMIDIBank.set_ptr(&instrument->MIDIBank);
# Line 707  void InstrumentProps::set_instrument(gig Line 793  void InstrumentProps::set_instrument(gig
793      eFineTune.set_ptr(&instrument->FineTune);      eFineTune.set_ptr(&instrument->FineTune);
794      ePitchbendRange.set_ptr(&instrument->PitchbendRange);      ePitchbendRange.set_ptr(&instrument->PitchbendRange);
795      ePianoReleaseMode.set_ptr(&instrument->PianoReleaseMode);      ePianoReleaseMode.set_ptr(&instrument->PianoReleaseMode);
796        eDimensionKeyRangeLow.set_ptr(0);
797        eDimensionKeyRangeHigh.set_ptr(0);
798      eDimensionKeyRangeLow.set_ptr(&instrument->DimensionKeyRange.low);      eDimensionKeyRangeLow.set_ptr(&instrument->DimensionKeyRange.low);
799      eDimensionKeyRangeHigh.set_ptr(&instrument->DimensionKeyRange.high);      eDimensionKeyRangeHigh.set_ptr(&instrument->DimensionKeyRange.high);
     update_gui = true;  
800  }  }
801    
802  void InstrumentProps::key_range_low_changed()  void InstrumentProps::key_range_low_changed()
# Line 726  void InstrumentProps::key_range_high_cha Line 813  void InstrumentProps::key_range_high_cha
813      if (h < l) eDimensionKeyRangeLow.set_value(h);      if (h < l) eDimensionKeyRangeLow.set_value(h);
814  }  }
815    
816  void MainWindow::load_gig(gig::File* gig, const char* filename)  sigc::signal<void> InstrumentProps::signal_instrument_changed()
817  {  {
818      file = gig;      return instrument_changed;
819    }
820    
821      if (filename) {  void MainWindow::file_changed()
822          const char *basename = strrchr(filename, '/');  {
823          basename = basename ? basename + 1 : filename;      if (file && !file_is_changed) {
824          set_title(basename);          set_title("*" + get_title());
825      } else {          file_is_changed = true;
         set_title("unnamed");  
826      }      }
827    }
828    
829    void MainWindow::load_gig(gig::File* gig, const char* filename)
830    {
831        file = 0;
832    
833        this->filename = filename ? filename : _("Unsaved Gig File");
834        set_title(Glib::filename_display_basename(this->filename));
835        file_has_name = filename;
836        file_is_changed = false;
837    
838      propDialog.set_info(gig->pInfo);      propDialog.set_info(gig->pInfo);
839    
# Line 785  void MainWindow::load_gig(gig::File* gig Line 882  void MainWindow::load_gig(gig::File* gig
882          }          }
883      }      }
884    
885        file = gig;
886    
887      // select the first instrument      // select the first instrument
888      Glib::RefPtr<Gtk::TreeSelection> tree_sel_ref = m_TreeView.get_selection();      Glib::RefPtr<Gtk::TreeSelection> tree_sel_ref = m_TreeView.get_selection();
889      tree_sel_ref->select(Gtk::TreePath("0"));      tree_sel_ref->select(Gtk::TreePath("0"));
# Line 858  void MainWindow::on_action_add_instrumen Line 957  void MainWindow::on_action_add_instrumen
957      Gtk::TreeModel::Row rowInstr = *iterInstr;      Gtk::TreeModel::Row rowInstr = *iterInstr;
958      rowInstr[m_Columns.m_col_name] = instrument->pInfo->Name.c_str();      rowInstr[m_Columns.m_col_name] = instrument->pInfo->Name.c_str();
959      rowInstr[m_Columns.m_col_instr] = instrument;      rowInstr[m_Columns.m_col_instr] = instrument;
960        file_changed();
961  }  }
962    
963  void MainWindow::on_action_remove_instrument() {  void MainWindow::on_action_remove_instrument() {
# Line 872  void MainWindow::on_action_remove_instru Line 972  void MainWindow::on_action_remove_instru
972              if (instr) file->DeleteInstrument(instr);              if (instr) file->DeleteInstrument(instr);
973              // remove respective row from instruments tree view              // remove respective row from instruments tree view
974              m_refTreeModel->erase(it);              m_refTreeModel->erase(it);
975                file_changed();
976          } catch (RIFF::Exception e) {          } catch (RIFF::Exception e) {
977              Gtk::MessageDialog msg(*this, e.Message.c_str(), false, Gtk::MESSAGE_ERROR);              Gtk::MessageDialog msg(*this, e.Message.c_str(), false, Gtk::MESSAGE_ERROR);
978              msg.run();              msg.run();
# Line 900  void MainWindow::on_action_add_group() { Line 1001  void MainWindow::on_action_add_group() {
1001      rowGroup[m_SamplesModel.m_col_name] = group->Name.c_str();      rowGroup[m_SamplesModel.m_col_name] = group->Name.c_str();
1002      rowGroup[m_SamplesModel.m_col_sample] = NULL;      rowGroup[m_SamplesModel.m_col_sample] = NULL;
1003      rowGroup[m_SamplesModel.m_col_group] = group;      rowGroup[m_SamplesModel.m_col_group] = group;
1004        file_changed();
1005  }  }
1006    
1007  void MainWindow::on_action_add_sample() {  void MainWindow::on_action_add_sample() {
# Line 1007  void MainWindow::on_action_add_sample() Line 1109  void MainWindow::on_action_add_sample()
1109                  rowSample[m_SamplesModel.m_col_group]  = NULL;                  rowSample[m_SamplesModel.m_col_group]  = NULL;
1110                  // close sound file                  // close sound file
1111                  sf_close(hFile);                  sf_close(hFile);
1112                    file_changed();
1113              } catch (std::string what) { // remember the files that made trouble (and their cause)              } catch (std::string what) { // remember the files that made trouble (and their cause)
1114                  if (error_files.size()) error_files += "\n";                  if (error_files.size()) error_files += "\n";
1115                  error_files += *iter += " (" + what + ")";                  error_files += *iter += " (" + what + ")";
# Line 1057  void MainWindow::on_action_remove_sample Line 1160  void MainWindow::on_action_remove_sample
1160                          }                          }
1161                      }                      }
1162                  }                  }
1163                    file_changed();
1164              } else if (sample) {              } else if (sample) {
1165                  // remove sample from the .gig file                  // remove sample from the .gig file
1166                  file->DeleteSample(sample);                  file->DeleteSample(sample);
# Line 1071  void MainWindow::on_action_remove_sample Line 1175  void MainWindow::on_action_remove_sample
1175                          break;                          break;
1176                      }                      }
1177                  }                  }
1178                    file_changed();
1179              }              }
1180              // remove respective row(s) from samples tree view              // remove respective row(s) from samples tree view
1181              m_refSamplesTreeModel->erase(it);              m_refSamplesTreeModel->erase(it);
# Line 1112  void MainWindow::on_sample_label_drop_dr Line 1217  void MainWindow::on_sample_label_drop_dr
1217                  dimregion->pSample->pInfo->Name.c_str() << "\"" << std::endl;                  dimregion->pSample->pInfo->Name.c_str() << "\"" << std::endl;
1218              // drop success              // drop success
1219              context->drop_reply(true, time);              context->drop_reply(true, time);
1220                file_changed();
1221              return;              return;
1222          }          }
1223      }      }
# Line 1127  void MainWindow::sample_name_changed(con Line 1233  void MainWindow::sample_name_changed(con
1233      gig::Group* group   = row[m_SamplesModel.m_col_group];      gig::Group* group   = row[m_SamplesModel.m_col_group];
1234      gig::Sample* sample = row[m_SamplesModel.m_col_sample];      gig::Sample* sample = row[m_SamplesModel.m_col_sample];
1235      if (group) {      if (group) {
1236          group->Name = name;          if (group->Name != name) {
1237                group->Name = name;
1238                printf("group name changed\n");
1239                file_changed();
1240            }
1241      } else if (sample) {      } else if (sample) {
1242          sample->pInfo->Name = name.raw();          if (sample->pInfo->Name != name.raw()) {
1243                sample->pInfo->Name = name.raw();
1244                printf("sample name changed\n");
1245                file_changed();
1246            }
1247      }      }
1248  }  }
1249    
# Line 1139  void MainWindow::instrument_name_changed Line 1253  void MainWindow::instrument_name_changed
1253      Gtk::TreeModel::Row row = *iter;      Gtk::TreeModel::Row row = *iter;
1254      Glib::ustring name = row[m_Columns.m_col_name];      Glib::ustring name = row[m_Columns.m_col_name];
1255      gig::Instrument* instrument = row[m_Columns.m_col_instr];      gig::Instrument* instrument = row[m_Columns.m_col_instr];
1256      if (instrument) instrument->pInfo->Name = name.raw();      if (instrument && instrument->pInfo->Name != name.raw()) {
1257            instrument->pInfo->Name = name.raw();
1258            file_changed();
1259        }
1260  }  }

Legend:
Removed from v.1225  
changed lines
  Added in v.1261

  ViewVC Help
Powered by ViewVC