/[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 1533 by persson, Sat Dec 1 10:21:07 2007 UTC revision 1656 by schoenebeck, Sat Feb 2 08:18:19 2008 UTC
# Line 1  Line 1 
1  /*  /*
2   * Copyright (C) 2006, 2007 Andreas Persson   * Copyright (C) 2006 - 2008 Andreas Persson
3   *   *
4   * This program is free software; you can redistribute it and/or   * This program is free software; you can redistribute it and/or
5   * modify it under the terms of the GNU General Public License as   * modify it under the terms of the GNU General Public License as
# Line 59  template<class T> inline std::string ToS Line 59  template<class T> inline std::string ToS
59      return ss.str();      return ss.str();
60  }  }
61    
62    Table::Table(int x, int y) : Gtk::Table(x, y), rowno(0) {  }
63    
64    void Table::add(BoolEntry& boolentry)
65    {
66        attach(boolentry.widget, 0, 2, rowno, rowno + 1,
67               Gtk::FILL, Gtk::SHRINK);
68        rowno++;
69    }
70    
71    void Table::add(BoolEntryPlus6& boolentry)
72    {
73        attach(boolentry.widget, 0, 2, rowno, rowno + 1,
74               Gtk::FILL, Gtk::SHRINK);
75        rowno++;
76    }
77    
78    void Table::add(LabelWidget& prop)
79    {
80        attach(prop.label, 1, 2, rowno, rowno + 1,
81               Gtk::FILL, Gtk::SHRINK);
82        attach(prop.widget, 2, 3, rowno, rowno + 1,
83               Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK);
84        rowno++;
85    }
86    
87  MainWindow::MainWindow() :  MainWindow::MainWindow() :
88      dimreg_label(_("Changes apply to:")),      dimreg_label(_("Changes apply to:")),
89      dimreg_all_regions(_("all regions")),      dimreg_all_regions(_("all regions")),
# Line 99  MainWindow::MainWindow() : Line 124  MainWindow::MainWindow() :
124      dimreg_stereo.set_active();      dimreg_stereo.set_active();
125      dimreg_hbox.add(dimreg_stereo);      dimreg_hbox.add(dimreg_stereo);
126      dimreg_vbox.add(dimreg_edit);      dimreg_vbox.add(dimreg_edit);
127      dimreg_vbox.add(dimreg_hbox);      dimreg_vbox.pack_start(dimreg_hbox, Gtk::PACK_SHRINK);
128      m_HPaned.add2(dimreg_vbox);      m_HPaned.add2(dimreg_vbox);
129    
130    
# Line 295  MainWindow::MainWindow() : Line 320  MainWindow::MainWindow() :
320          sigc::mem_fun(*this, &MainWindow::file_changed));          sigc::mem_fun(*this, &MainWindow::file_changed));
321      instrumentProps.signal_instrument_changed().connect(      instrumentProps.signal_instrument_changed().connect(
322          sigc::mem_fun(*this, &MainWindow::file_changed));          sigc::mem_fun(*this, &MainWindow::file_changed));
323        propDialog.signal_info_changed().connect(
324            sigc::mem_fun(*this, &MainWindow::file_changed));
325    
326      dimreg_edit.signal_dimreg_to_be_changed().connect(      dimreg_edit.signal_dimreg_to_be_changed().connect(
327          dimreg_to_be_changed_signal.make_slot());          dimreg_to_be_changed_signal.make_slot());
# Line 324  MainWindow::MainWindow() : Line 351  MainWindow::MainWindow() :
351      m_RegionChooser.signal_region_changed_signal().connect(      m_RegionChooser.signal_region_changed_signal().connect(
352          region_changed_signal.make_slot());          region_changed_signal.make_slot());
353    
354        note_on_signal.connect(
355            sigc::mem_fun(m_RegionChooser, &RegionChooser::on_note_on_event));
356        note_off_signal.connect(
357            sigc::mem_fun(m_RegionChooser, &RegionChooser::on_note_off_event));
358    
359      dimreg_all_regions.signal_toggled().connect(      dimreg_all_regions.signal_toggled().connect(
360          sigc::mem_fun(*this, &MainWindow::update_dimregs));          sigc::mem_fun(*this, &MainWindow::update_dimregs));
361      dimreg_all_dimregs.signal_toggled().connect(      dimreg_all_dimregs.signal_toggled().connect(
# Line 868  void MainWindow::on_action_help_about() Line 900  void MainWindow::on_action_help_about()
900  }  }
901    
902  PropDialog::PropDialog()  PropDialog::PropDialog()
903      : table(2,1)      : table(2,1),
904          eName("Name"),
905          eCreationDate("Creation date"),
906          eComments("Comments"),
907          eProduct("Product"),
908          eCopyright("Copyright"),
909          eArtists("Artists"),
910          eGenre("Genre"),
911          eKeywords("Keywords"),
912          eEngineer("Engineer"),
913          eTechnician("Technician"),
914          eSoftware("Software"),
915          eMedium("Medium"),
916          eSource("Source"),
917          eSourceForm("Source form"),
918          eCommissioned("Commissioned"),
919          eSubject("Subject"),
920          quitButton(Gtk::Stock::CLOSE),
921          update_model(0)
922  {  {
923        set_title("File Properties");
924        eName.set_width_chars(50);
925    
926        connect(eName, &DLS::Info::Name);
927        connect(eCreationDate, &DLS::Info::CreationDate);
928        connect(eComments, &DLS::Info::Comments);
929        connect(eProduct, &DLS::Info::Product);
930        connect(eCopyright, &DLS::Info::Copyright);
931        connect(eArtists, &DLS::Info::Artists);
932        connect(eGenre, &DLS::Info::Genre);
933        connect(eKeywords, &DLS::Info::Keywords);
934        connect(eEngineer, &DLS::Info::Engineer);
935        connect(eTechnician, &DLS::Info::Technician);
936        connect(eSoftware, &DLS::Info::Software);
937        connect(eMedium, &DLS::Info::Medium);
938        connect(eSource, &DLS::Info::Source);
939        connect(eSourceForm, &DLS::Info::SourceForm);
940        connect(eCommissioned, &DLS::Info::Commissioned);
941        connect(eSubject, &DLS::Info::Subject);
942    
943        table.add(eName);
944        table.add(eCreationDate);
945        table.add(eComments);
946        table.add(eProduct);
947        table.add(eCopyright);
948        table.add(eArtists);
949        table.add(eGenre);
950        table.add(eKeywords);
951        table.add(eEngineer);
952        table.add(eTechnician);
953        table.add(eSoftware);
954        table.add(eMedium);
955        table.add(eSource);
956        table.add(eSourceForm);
957        table.add(eCommissioned);
958        table.add(eSubject);
959    
960      table.set_col_spacings(5);      table.set_col_spacings(5);
961      const char* propLabels[] = {      add(vbox);
962          "Name:",      table.set_border_width(5);
963          "CreationDate:",      vbox.add(table);
964          "Comments:", // TODO: multiline      vbox.pack_start(buttonBox, Gtk::PACK_SHRINK);
965          "Product:",      buttonBox.set_layout(Gtk::BUTTONBOX_END);
966          "Copyright:",      buttonBox.set_border_width(5);
967          "Artists:",      buttonBox.show();
968          "Genre:",      buttonBox.pack_start(quitButton);
969          "Keywords:",      quitButton.set_flags(Gtk::CAN_DEFAULT);
970          "Engineer:",      quitButton.grab_focus();
971          "Technician:",      quitButton.signal_clicked().connect(
972          "Software:", // TODO: readonly          sigc::mem_fun(*this, &PropDialog::hide));
         "Medium:",  
         "Source:",  
         "SourceForm:",  
         "Commissioned:",  
         "Subject:"  
     };  
     for (int i = 0 ; i < sizeof(propLabels) / sizeof(char*) ; i++) {  
         label[i].set_text(propLabels[i]);  
         label[i].set_alignment(Gtk::ALIGN_LEFT);  
         table.attach(label[i], 0, 1, i, i + 1, Gtk::FILL, Gtk::SHRINK);  
         table.attach(entry[i], 1, 2, i, i + 1, Gtk::FILL | Gtk::EXPAND,  
                      Gtk::SHRINK);  
     }  
973    
974      add(table);      quitButton.show();
975      // add_button(Gtk::Stock::CANCEL, 0);      vbox.show();
     // add_button(Gtk::Stock::OK, 1);  
976      show_all_children();      show_all_children();
977  }  }
978    
979  void PropDialog::set_info(DLS::Info* info)  void PropDialog::set_info(DLS::Info* info)
980  {  {
981      entry[0].set_text(info->Name);      this->info = info;
982      entry[1].set_text(info->CreationDate);      update_model++;
983      entry[2].set_text(Glib::convert(info->Comments, "UTF-8", "ISO-8859-1"));      eName.set_value(info->Name);
984      entry[3].set_text(info->Product);      eCreationDate.set_value(info->CreationDate);
985      entry[4].set_text(info->Copyright);      eComments.set_value(info->Comments);
986      entry[5].set_text(info->Artists);      eProduct.set_value(info->Product);
987      entry[6].set_text(info->Genre);      eCopyright.set_value(info->Copyright);
988      entry[7].set_text(info->Keywords);      eArtists.set_value(info->Artists);
989      entry[8].set_text(info->Engineer);      eGenre.set_value(info->Genre);
990      entry[9].set_text(info->Technician);      eKeywords.set_value(info->Keywords);
991      entry[10].set_text(info->Software);      eEngineer.set_value(info->Engineer);
992      entry[11].set_text(info->Medium);      eTechnician.set_value(info->Technician);
993      entry[12].set_text(info->Source);      eSoftware.set_value(info->Software);
994      entry[13].set_text(info->SourceForm);      eMedium.set_value(info->Medium);
995      entry[14].set_text(info->Commissioned);      eSource.set_value(info->Source);
996      entry[15].set_text(info->Subject);      eSourceForm.set_value(info->SourceForm);
997        eCommissioned.set_value(info->Commissioned);
998        eSubject.set_value(info->Subject);
999        update_model--;
1000    }
1001    
1002    sigc::signal<void>& PropDialog::signal_info_changed()
1003    {
1004        return info_changed;
1005  }  }
1006    
1007  void InstrumentProps::set_IsDrum(bool value)  void InstrumentProps::set_IsDrum(bool value)
# Line 954  void InstrumentProps::set_DimensionKeyRa Line 1035  void InstrumentProps::set_DimensionKeyRa
1035      }      }
1036  }  }
1037    
 void InstrumentProps::add_prop(BoolEntry& boolentry)  
 {  
     table.attach(boolentry.widget, 0, 2, rowno, rowno + 1,  
                  Gtk::FILL, Gtk::SHRINK);  
     rowno++;  
 }  
   
 void InstrumentProps::add_prop(BoolEntryPlus6& boolentry)  
 {  
     table.attach(boolentry.widget, 0, 2, rowno, rowno + 1,  
                  Gtk::FILL, Gtk::SHRINK);  
     rowno++;  
 }  
   
 void InstrumentProps::add_prop(LabelWidget& prop)  
 {  
     table.attach(prop.label, 0, 1, rowno, rowno + 1,  
                  Gtk::FILL, Gtk::SHRINK);  
     table.attach(prop.widget, 1, 2, rowno, rowno + 1,  
                  Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK);  
     rowno++;  
 }  
   
1038  InstrumentProps::InstrumentProps()  InstrumentProps::InstrumentProps()
1039      : table(2,1),      : table(2,1),
1040        quitButton(Gtk::Stock::CLOSE),        quitButton(Gtk::Stock::CLOSE),
# Line 990  InstrumentProps::InstrumentProps() Line 1048  InstrumentProps::InstrumentProps()
1048        eFineTune("Fine tune", -8400, 8400),        eFineTune("Fine tune", -8400, 8400),
1049        ePitchbendRange("Pitchbend range", 0, 12),        ePitchbendRange("Pitchbend range", 0, 12),
1050        ePianoReleaseMode("Piano release mode"),        ePianoReleaseMode("Piano release mode"),
1051        eDimensionKeyRangeLow("Dimension key range low"),        eDimensionKeyRangeLow("Keyswitching range low"),
1052        eDimensionKeyRangeHigh("Dimension key range high"),        eDimensionKeyRangeHigh("Keyswitching range high"),
1053        update_model(0)        update_model(0)
1054  {  {
1055      set_title("Instrument properties");      set_title("Instrument Properties");
1056    
1057        eDimensionKeyRangeLow.set_tip(
1058            _("start of the keyboard area which should switch the "
1059              "\"keyswitching\" dimension")
1060        );
1061        eDimensionKeyRangeHigh.set_tip(
1062            _("end of the keyboard area which should switch the "
1063              "\"keyswitching\" dimension")
1064        );
1065    
1066      connect(eIsDrum, &InstrumentProps::set_IsDrum);      connect(eIsDrum, &InstrumentProps::set_IsDrum);
1067      connect(eMIDIBank, &InstrumentProps::set_MIDIBank);      connect(eMIDIBank, &InstrumentProps::set_MIDIBank);
# Line 1010  InstrumentProps::InstrumentProps() Line 1077  InstrumentProps::InstrumentProps()
1077      connect(eDimensionKeyRangeHigh,      connect(eDimensionKeyRangeHigh,
1078              &InstrumentProps::set_DimensionKeyRange_high);              &InstrumentProps::set_DimensionKeyRange_high);
1079    
     rowno = 0;  
1080      table.set_col_spacings(5);      table.set_col_spacings(5);
1081    
1082      add_prop(eName);      table.add(eName);
1083      add_prop(eIsDrum);      table.add(eIsDrum);
1084      add_prop(eMIDIBank);      table.add(eMIDIBank);
1085      add_prop(eMIDIProgram);      table.add(eMIDIProgram);
1086      add_prop(eAttenuation);      table.add(eAttenuation);
1087      add_prop(eGainPlus6);      table.add(eGainPlus6);
1088      add_prop(eEffectSend);      table.add(eEffectSend);
1089      add_prop(eFineTune);      table.add(eFineTune);
1090      add_prop(ePitchbendRange);      table.add(ePitchbendRange);
1091      add_prop(ePianoReleaseMode);      table.add(ePianoReleaseMode);
1092      add_prop(eDimensionKeyRangeLow);      table.add(eDimensionKeyRangeLow);
1093      add_prop(eDimensionKeyRangeHigh);      table.add(eDimensionKeyRangeHigh);
1094    
1095      add(vbox);      add(vbox);
1096      table.set_border_width(5);      table.set_border_width(5);
# Line 1051  void InstrumentProps::set_instrument(gig Line 1117  void InstrumentProps::set_instrument(gig
1117      this->instrument = instrument;      this->instrument = instrument;
1118    
1119      update_model++;      update_model++;
1120      eName.set_ptr(&instrument->pInfo->Name);      eName.set_value(instrument->pInfo->Name);
1121      eIsDrum.set_value(instrument->IsDrum);      eIsDrum.set_value(instrument->IsDrum);
1122      eMIDIBank.set_value(instrument->MIDIBank);      eMIDIBank.set_value(instrument->MIDIBank);
1123      eMIDIProgram.set_value(instrument->MIDIProgram);      eMIDIProgram.set_value(instrument->MIDIProgram);
# Line 1685  sigc::signal<void, gig::DimensionRegion* Line 1751  sigc::signal<void, gig::DimensionRegion*
1751  sigc::signal<void, gig::DimensionRegion*>& MainWindow::signal_dimreg_changed() {  sigc::signal<void, gig::DimensionRegion*>& MainWindow::signal_dimreg_changed() {
1752      return dimreg_changed_signal;      return dimreg_changed_signal;
1753  }  }
1754    
1755    sigc::signal<void, int/*key*/, int/*velocity*/>& MainWindow::signal_note_on() {
1756        return note_on_signal;
1757    }
1758    
1759    sigc::signal<void, int/*key*/, int/*velocity*/>& MainWindow::signal_note_off() {
1760        return note_off_signal;
1761    }

Legend:
Removed from v.1533  
changed lines
  Added in v.1656

  ViewVC Help
Powered by ViewVC