From: <pst...@us...> - 2010-04-26 02:08:58
|
Revision: 757 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=757&view=rev Author: pstieber Date: 2010-04-26 02:08:50 +0000 (Mon, 26 Apr 2010) Log Message: ----------- 1. Added new versions of the set temp and meter change dialog boxes. 2. Removed the old settings dialog. 3. Added the Misc menu to the track frame. Modified Paths: -------------- trunk/jazz/src/Dialogs.cpp trunk/jazz/src/Dialogs.h trunk/jazz/src/EventFrame.cpp trunk/jazz/src/EventWindow.cpp trunk/jazz/src/EventWindow.h trunk/jazz/src/Makefile.am trunk/jazz/src/PianoFrame.cpp trunk/jazz/src/Resources.h trunk/jazz/src/TrackFrame.cpp trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj Added Paths: ----------- trunk/jazz/src/Dialogs/MeterChangeDialog.cpp trunk/jazz/src/Dialogs/MeterChangeDialog.h trunk/jazz/src/Dialogs/SetTempoDialog.cpp trunk/jazz/src/Dialogs/SetTempoDialog.h Added: trunk/jazz/src/Dialogs/MeterChangeDialog.cpp =================================================================== --- trunk/jazz/src/Dialogs/MeterChangeDialog.cpp (rev 0) +++ trunk/jazz/src/Dialogs/MeterChangeDialog.cpp 2010-04-26 02:08:50 UTC (rev 757) @@ -0,0 +1,82 @@ +#include "MeterChangeDialog.h" + +#include "../Globals.h" +#include "../Help.h" + +#include <wx/button.h> +#include <wx/combobox.h> +#include <wx/sizer.h> + +//***************************************************************************** +//***************************************************************************** +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +BEGIN_EVENT_TABLE(JZMeterChangeDialog, wxDialog) + + EVT_BUTTON(wxID_HELP, JZMeterChangeDialog::OnHelp) + +END_EVENT_TABLE() + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +JZMeterChangeDialog::JZMeterChangeDialog(wxWindow* pParent) + : wxDialog(pParent, wxID_ANY, wxString("Meter Change")), + mpNumeratorComboBox(0), + mpDenominatorComboBox(0) +{ + mpNumeratorComboBox = new wxComboBox(this, wxID_ANY); + mpNumeratorComboBox->Append("1"); + mpNumeratorComboBox->Append("2"); + mpNumeratorComboBox->Append("3"); + mpNumeratorComboBox->Append("4"); + mpNumeratorComboBox->Append("5"); + mpNumeratorComboBox->Append("6"); + mpNumeratorComboBox->Append("7"); + mpNumeratorComboBox->Append("8"); + mpNumeratorComboBox->Append("9"); + mpNumeratorComboBox->Append("10"); + mpNumeratorComboBox->Append("11"); + mpNumeratorComboBox->Append("12"); + mpNumeratorComboBox->Append("13"); + mpNumeratorComboBox->Append("14"); + mpNumeratorComboBox->Append("15"); + mpNumeratorComboBox->Append("16"); + mpNumeratorComboBox->Append("17"); + + mpDenominatorComboBox = new wxComboBox(this, wxID_ANY); + mpDenominatorComboBox->Append("2"); + mpDenominatorComboBox->Append("4"); + mpDenominatorComboBox->Append("8"); + mpDenominatorComboBox->Append("16"); + mpDenominatorComboBox->Append("32"); + + wxButton* pOkButton = new wxButton(this, wxID_OK, "&OK"); + wxButton* pCancelButton = new wxButton(this, wxID_CANCEL, "Cancel"); + wxButton* pHelpButton = new wxButton(this, wxID_HELP, "Help"); + pOkButton->SetDefault(); + + wxBoxSizer* pTopSizer = new wxBoxSizer(wxVERTICAL); + + wxBoxSizer* pButtonSizer = new wxBoxSizer(wxHORIZONTAL); + pButtonSizer->Add(pOkButton, 0, wxALL, 5); + pButtonSizer->Add(pCancelButton, 0, wxALL, 5); + pButtonSizer->Add(pHelpButton, 0, wxALL, 5); + + pTopSizer->Add(mpNumeratorComboBox, 0, wxALIGN_CENTER | wxALL, 6); + pTopSizer->Add(mpDenominatorComboBox, 0, wxALIGN_CENTER | wxALL, 6); + + pTopSizer->Add(pButtonSizer, 0, wxALIGN_CENTER | wxBOTTOM, 6); + + SetAutoLayout(true); + SetSizer(pTopSizer); + + pTopSizer->SetSizeHints(this); + pTopSizer->Fit(this); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZMeterChangeDialog::OnHelp(wxCommandEvent& Event) +{ + gpHelpInstance->ShowTopic("Meterchange"); +} Property changes on: trunk/jazz/src/Dialogs/MeterChangeDialog.cpp ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/jazz/src/Dialogs/MeterChangeDialog.h =================================================================== --- trunk/jazz/src/Dialogs/MeterChangeDialog.h (rev 0) +++ trunk/jazz/src/Dialogs/MeterChangeDialog.h 2010-04-26 02:08:50 UTC (rev 757) @@ -0,0 +1,49 @@ +//***************************************************************************** +// The JAZZ++ Midi Sequencer +// +// Copyright (C) 2010 Peter J. Stieber, all rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//***************************************************************************** + +#ifndef JZ_METERCHANGEDIALOG_H +#define JZ_METERCHANGEDIALOG_H + +#include <wx/dialog.h> + +class wxComboBox; + +//***************************************************************************** +//***************************************************************************** +class JZMeterChangeDialog : public wxDialog +{ + public: + + JZMeterChangeDialog(wxWindow* pParent); + + private: + + void OnHelp(wxCommandEvent& Event); + + private: + + wxComboBox* mpNumeratorComboBox; + + wxComboBox* mpDenominatorComboBox; + + DECLARE_EVENT_TABLE(); +}; + +#endif // !defined(JZ_METERCHANGEDIALOG_H) Property changes on: trunk/jazz/src/Dialogs/MeterChangeDialog.h ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/jazz/src/Dialogs/SetTempoDialog.cpp =================================================================== --- trunk/jazz/src/Dialogs/SetTempoDialog.cpp (rev 0) +++ trunk/jazz/src/Dialogs/SetTempoDialog.cpp 2010-04-26 02:08:50 UTC (rev 757) @@ -0,0 +1,143 @@ +//***************************************************************************** +// The JAZZ++ Midi Sequencer +// +// Copyright (C) 2010 Peter J. Stieber, all rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//***************************************************************************** + +#include "SetTempoDialog.h" + +#include "../Events.h" +#include "../Globals.h" +#include "../Help.h" +#include "IntegerEdit.h" +#include "../Project.h" + +#include <wx/button.h> +#include <wx/sizer.h> +#include <wx/stattext.h> +#include <wx/textctrl.h> + +#include <string> + +using namespace std; + +//***************************************************************************** +//***************************************************************************** +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +BEGIN_EVENT_TABLE(JZSetTempoDialog, wxDialog) + +EVT_BUTTON(wxID_HELP, JZSetTempoDialog::OnHelp) + +END_EVENT_TABLE() + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +JZSetTempoDialog::JZSetTempoDialog( + tSetTempo* pSetTempoEvent, + JZTrack* pTrack, + wxWindow * pParent) + : wxDialog(pParent, wxID_ANY, wxString("Set Tempo (for track 0)")), + mpSetTempoEvent(pSetTempoEvent), + mpTempoEdit(0), + mpClockEdit(0) +{ + mpTempoEdit = new JZIntegerEdit(this, wxID_ANY); + mpTempoEdit->SetValueName("Tempo"); + mpTempoEdit->SetMinAndMax(20, 240); + + mpClockEdit = new wxTextCtrl(this, wxID_ANY); + + wxButton* pOkButton = new wxButton(this, wxID_OK, "&OK"); + wxButton* pCancelButton = new wxButton(this, wxID_CANCEL, "Cancel"); + wxButton* pHelpButton = new wxButton(this, wxID_HELP, "Help"); + pOkButton->SetDefault(); + + wxBoxSizer* pTopSizer = new wxBoxSizer(wxVERTICAL); + + wxFlexGridSizer* pFlexGridSizer; + + pFlexGridSizer = new wxFlexGridSizer(2, 2, 4, 2); + + pFlexGridSizer->Add( + new wxStaticText(this, wxID_ANY, "Tempo:"), + 0, + wxALIGN_CENTER_VERTICAL); + pFlexGridSizer->Add( + mpTempoEdit, + 0, + wxALIGN_CENTER_VERTICAL); + + pFlexGridSizer->Add( + new wxStaticText(this, wxID_ANY, "Clock:"), + 0, + wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + pFlexGridSizer->Add(mpClockEdit, 0, wxALIGN_CENTER_VERTICAL); + + pTopSizer->Add(pFlexGridSizer, 0, wxCENTER | wxALL, 10); + + wxBoxSizer* pButtonSizer = new wxBoxSizer(wxHORIZONTAL); + pButtonSizer->Add(pOkButton, 0, wxALL, 5); + pButtonSizer->Add(pCancelButton, 0, wxALL, 5); + pButtonSizer->Add(pHelpButton, 0, wxALL, 5); + + pTopSizer->Add(pButtonSizer, 0, wxALIGN_CENTER | wxBOTTOM, 6); + + SetAutoLayout(true); + SetSizer(pTopSizer); + + pTopSizer->SetSizeHints(this); + pTopSizer->Fit(this); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +bool JZSetTempoDialog::TransferDataToWindow() +{ + mpTempoEdit->SetNumber(mpSetTempoEvent->GetBPM()); + + string ClockString; + gpProject->ClockToString(mpSetTempoEvent->GetClock(), ClockString); + mpClockEdit->ChangeValue(ClockString.c_str()); + + return true; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +bool JZSetTempoDialog::TransferDataFromWindow() +{ + int BeatsPerMinute; + if (mpTempoEdit->GetNumber(BeatsPerMinute)) + { + mpSetTempoEvent->SetBPM(BeatsPerMinute); + + wxString ClockString = mpClockEdit->GetValue(); + int Clock = gpProject->StringToClock(ClockString.c_str()); + mpSetTempoEvent->SetClock(Clock); + + return true; + } + return false; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZSetTempoDialog::OnHelp(wxCommandEvent& Event) +{ + gpHelpInstance->ShowTopic("Set Tempo Dialog"); +} Property changes on: trunk/jazz/src/Dialogs/SetTempoDialog.cpp ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/jazz/src/Dialogs/SetTempoDialog.h =================================================================== --- trunk/jazz/src/Dialogs/SetTempoDialog.h (rev 0) +++ trunk/jazz/src/Dialogs/SetTempoDialog.h 2010-04-26 02:08:50 UTC (rev 757) @@ -0,0 +1,61 @@ +//***************************************************************************** +// The JAZZ++ Midi Sequencer +// +// Copyright (C) 2010 Peter J. Stieber, all rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//***************************************************************************** + +#ifndef JZ_SETTEMPODIALOG_H +#define JZ_SETTEMPODIALOG_H + +#include <wx/dialog.h> + +class JZIntegerEdit; +class JZTrack; +class tSetTempo; +class wxTextCtrl; + +//***************************************************************************** +//***************************************************************************** +class JZSetTempoDialog : public wxDialog +{ + public: + + JZSetTempoDialog( + tSetTempo* pSetTempoEvent, + JZTrack* pTrack, + wxWindow* pParent); + + private: + + bool TransferDataToWindow(); + + bool TransferDataFromWindow(); + + void OnHelp(wxCommandEvent& Event); + + private: + + tSetTempo* mpSetTempoEvent; + + JZIntegerEdit* mpTempoEdit; + + wxTextCtrl* mpClockEdit; + + DECLARE_EVENT_TABLE(); +}; + +#endif // !defined(JZ_SETTEMPODIALOG_H) Property changes on: trunk/jazz/src/Dialogs/SetTempoDialog.h ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/jazz/src/Dialogs.cpp =================================================================== --- trunk/jazz/src/Dialogs.cpp 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/Dialogs.cpp 2010-04-26 02:08:50 UTC (rev 757) @@ -28,6 +28,8 @@ #include "Dialogs/ControllerDialog.h" #include "Dialogs/KeyOnDialog.h" #include "Dialogs/ProgramChangeDialog.h" +#include "Dialogs/SetTempoDialog.h" +#include "Dialogs/SysexDialog.h" //#include "EventFrame.h" #include "Events.h" #include "EventWindow.h" @@ -112,7 +114,7 @@ //int tSearchReplaceDlg::toCtrl = 1; // //tSearchReplaceDlg::tSearchReplaceDlg(JZEventWindow* w, JZFilter *f) -// : tPropertyListDlg("Search and replace controller types" ) +// : tPropertyListDlg("Search and replace controller types") //{ // Filter = f; // Song = f->GetSong(); @@ -265,7 +267,7 @@ JZEvent *Event; JZEvent *Copy; - tEventDlg(JZEvent *e, JZPianoWindow* w, JZTrack *t); + tEventDlg(JZEvent *e, JZPianoWindow* w, JZTrack *pTrack); virtual void AddProperties(); virtual bool OnClose(); virtual void OnHelp(); @@ -273,12 +275,12 @@ }; -tEventDlg::tEventDlg(JZEvent *e, JZPianoWindow* w, JZTrack *t) +tEventDlg::tEventDlg(JZEvent *e, JZPianoWindow* w, JZTrack *pTrack) : tPropertyListDlg( "Event" ), ClockDlg(w->GetProject(), "Time ", e->GetClock()) { Win = w; - Track = t; + Track = pTrack; Event = e; Copy = e->Copy(); } @@ -318,8 +320,8 @@ int Channel; - tChEventDlg(tChannelEvent* pChannelEvent, JZPianoWindow* w, JZTrack *t) - : tEventDlg(pChannelEvent, w, t) + tChEventDlg(tChannelEvent* pChannelEvent, JZPianoWindow* w, JZTrack *pTrack) + : tEventDlg(pChannelEvent, w, pTrack) { Channel = pChannelEvent->GetChannel() + 1; // 1..16 } @@ -353,15 +355,15 @@ int Value; - tPitchDlg(tPitch* e, JZPianoWindow* w, JZTrack *t); + tPitchDlg(tPitch* e, JZPianoWindow* w, JZTrack *pTrack); void AddProperties(); bool OnClose(); }; -tPitchDlg::tPitchDlg(tPitch *e, JZPianoWindow* w, JZTrack *t) - : tChEventDlg(e, w, t) +tPitchDlg::tPitchDlg(tPitch *e, JZPianoWindow* w, JZTrack *pTrack) + : tChEventDlg(e, w, pTrack) { Event = e; Value = e->Value; @@ -398,15 +400,15 @@ tNamedChoice Choice; - tPlayTrackDlg(tPlayTrack *e, JZPianoWindow* w, JZTrack *t); + tPlayTrackDlg(tPlayTrack *e, JZPianoWindow* w, JZTrack *pTrack); void AddProperties(); bool OnClose(); }; -tPlayTrackDlg::tPlayTrackDlg(tPlayTrack *e, JZPianoWindow* w, JZTrack *t) - : tEventDlg(e, w, t), +tPlayTrackDlg::tPlayTrackDlg(tPlayTrack *e, JZPianoWindow* w, JZTrack *pTrack) + : tEventDlg(e, w, pTrack), Choice("playtrack", gpConfig->GetControlNames(), &track) { Event = e; @@ -457,15 +459,15 @@ int track; tNamedChoice Choice; - tTextDlg(tText *e, JZPianoWindow* w, JZTrack *t); + tTextDlg(tText *e, JZPianoWindow* w, JZTrack *pTrack); void AddProperties(); bool OnClose(); }; -tTextDlg::tTextDlg(tText *e, JZPianoWindow* w, JZTrack *t) - : tEventDlg(e, w, t), +tTextDlg::tTextDlg(tText *e, JZPianoWindow* w, JZTrack *pTrack) + : tEventDlg(e, w, pTrack), Choice("text", gpConfig->GetControlNames(), &track) { Event = e; @@ -504,15 +506,15 @@ tNamedChoice Choice; - tEndOfTrackDlg(tEndOfTrack *e, JZPianoWindow* w, JZTrack *t); + tEndOfTrackDlg(tEndOfTrack *e, JZPianoWindow* w, JZTrack *pTrack); void AddProperties(); bool OnClose(); }; -tEndOfTrackDlg::tEndOfTrackDlg(tEndOfTrack *e, JZPianoWindow* w, JZTrack *t) - : tEventDlg(e, w, t), +tEndOfTrackDlg::tEndOfTrackDlg(tEndOfTrack *e, JZPianoWindow* w, JZTrack *pTrack) + : tEventDlg(e, w, pTrack), Choice("End Of Track", gpConfig->GetControlNames(), &track) { @@ -532,211 +534,22 @@ } - -// -------------------------------- Set Tempo ------------------------------- - -class tSetTempoDlg : public tEventDlg +//***************************************************************************** +// Description: +// Display a dialog box to select an event to be created. +//***************************************************************************** +static JZEvent* CreateEventDialog(long Clock, int Channel, int Pitch) { - public: - - int Value; - - tSetTempoDlg(tSetTempo *e, JZPianoWindow* w, JZTrack *t); - - void AddProperties(); - bool OnClose(); -}; - - -tSetTempoDlg::tSetTempoDlg(tSetTempo *e, JZPianoWindow* w, JZTrack *t) - : tEventDlg(e, w, t) -{ - Event = e; - Value = e->GetBPM(); -} - - -bool tSetTempoDlg::OnClose() -{ - ((tSetTempo *)Copy)->SetBPM( Value ); - return tEventDlg::OnClose(); -} - -void tSetTempoDlg::AddProperties() -{ - // Add(wxMakeFormShort("Tempo:", &Value, wxFORM_DEFAULT, new wxList(wxMakeConstraintRange(20.0, 240.0), 0))); - sheet->AddProperty(new wxProperty( - "Tempo", - wxPropertyValue(&Value), - "integer", - new wxIntegerListValidator(20, 240))); - tEventDlg::AddProperties(); -} - -// -------------------------------- Sysex Edit------------------------------- - -class tSysexDlg : public tEventDlg -{ - public: - - char *str; - - tSysexDlg(tSysEx *s, JZPianoWindow* w, JZTrack *t); - - void AddProperties(); - bool OnClose(); -}; - - -tSysexDlg::tSysexDlg(tSysEx* pSysEx, JZPianoWindow* w, JZTrack *t) - : tEventDlg(pSysEx, w, t) -{ - Event = pSysEx; - char hexbyte[10]; - - str = new char[256]; - str[0] = 0; - - if (pSysEx->GetDataLength()) - { - strcat(str, "f0 "); - } - - const unsigned char* pData = pSysEx->GetData(); - for (int i = 0; i < pSysEx->GetDataLength(); i++) - { - sprintf(hexbyte, "%02x ", pData[i]); - strcat(str, hexbyte); - } -} - - -bool tSysexDlg::OnClose() -{ - int i; - int j; - int k; - int len; - - unsigned char d[256]; - memset( d, 0, 256 ); - - int jstop = strlen(str); - - unsigned int TempInteger; - for (i = 0, j = 0; j <= jstop; j += k, ++i) - { - sscanf(str + j, "%02x %n", &TempInteger, &k); - - d[i] = static_cast<unsigned char>(TempInteger); - if (d[i] == 0xf7) - break; - } - - int found = 0; - for (i = 0; i < 256; i++) - { - if (d[i] == 0xf7) - { - found = 1; - break; - } - } - - if (found) - len = i + 1; - else - len = 0; - - long clk = ((tSysEx *)Copy)->GetClock(); - delete Copy; - Copy = new tSysEx( clk, d + 1, len - 1 ); - - gpSynth->FixSysexCheckSum( Copy->IsSysEx() ); - -#if 0 - printf("Sysex:"); - for (i = 0; i < ((tSysEx *)Copy)->Length; i++) - { - printf( "%02x ", ((tSysEx *)Copy)->Data[i] ); - } - printf("\n"); - - gpMidiPlayer->OutNow( (tSysEx *)Copy ); -#endif - - delete str; - - tEventDlg::OnClose(); - return false; -} - -void tSysexDlg::AddProperties() -{ -// char label1[100]; - - if (Event->IsSysEx()->GetDataLength()) - { -// sprintf( -// label1, -// "Loaded sysex: %s", -// tSynthSysex::GetSysexName(gpSynth->GetSysexId(Event->IsSysEx()))); - -// Add(wxMakeFormMessage(label1)); - - sheet->AddProperty(new wxProperty( - "Loaded sysex", - wxPropertyValue(tSynthSysex::GetSysexName(gpSynth->GetSysexId( - Event->IsSysEx()))), - "string"));//r/o - - const unsigned char* pData = gpSynth->GetSysexValPtr(Event->IsSysEx()); - - if (pData) - { - ostringstream Oss; - Oss - << "First data byte is at offset " - << pData - Event->IsSysEx()->GetData() + 1 << ", value " - << setw(2) << hex << static_cast<int>(*pData) - << dec << " (" << static_cast<int>(*pData) << " decimal)"; - sheet->AddProperty(new wxProperty( - Oss.str().c_str(), - wxPropertyValue((char*)""), - "string"));//r/o -// Add(wxMakeFormMessage(Oss.str().c_str())); - } - } - else - { -// Add(wxMakeFormMessage("Example input: f0 7f 7f 04 01 00 7f f7")); - } - -// Add(wxMakeFormMessage("(any DT1/RQ1 checksums will be corrected)")); - -// Add(wxMakeFormString("SysEx (hex):", &str, wxFORM_DEFAULT, NULL, NULL, wxVERTICAL, 300 )); - sheet->AddProperty(new wxProperty("SysEx (hex)", wxPropertyValue((char**)&str), "string"));//r/o - - tEventDlg::AddProperties(); -} - - -// -------------------------------------------------------------------------- -// create new event -// -------------------------------------------------------------------------- - -static JZEvent *CreateEventDialog(long Clock, int Channel, int Pitch) -{ wxArrayString Names; Names.Add("Note On"); - Names.Add( "Controller"); - Names.Add( "Program Change"); - Names.Add( "Set Tempo"); - Names.Add( "SysEx"); - Names.Add( "Play Track(experimental)"); + Names.Add("Controller"); + Names.Add("Program Change"); + Names.Add("Set Tempo"); + Names.Add("SysEx"); + Names.Add("Play Track(experimental)"); Names.Add("End Of Track"); - Names.Add( "Text" ); + Names.Add("Text"); static long Values[] = { @@ -795,51 +608,56 @@ return e; } - - - +//***************************************************************************** +// Description: +// Display a dialog box to select an event to be created. +//***************************************************************************** void EventDialog( - JZEvent* e, + JZEvent* pEvent, JZPianoWindow* pPianoWindow, - JZTrack* t, + JZTrack* pTrack, long Clock, int Channel, int Pitch) { - if (!e) - e = CreateEventDialog(Clock, Channel, Pitch); - if (!e) + if (!pEvent) + { + pEvent = CreateEventDialog(Clock, Channel, Pitch); + } + + if (!pEvent) + { return; + } - tEventDlg *dlg = 0; + tEventDlg* pDialog = 0; const char* str = 0; - switch (e->GetStat()) + switch (pEvent->GetStat()) { case StatKeyOn: - if (t->GetAudioMode()) + if (pTrack->GetAudioMode()) { if (!gpMidiPlayer->IsPlaying()) { - gpMidiPlayer->EditSample(e->IsKeyOn()->GetKey()); + gpMidiPlayer->EditSample(pEvent->IsKeyOn()->GetKey()); } break; } - str = "Key On"; -// dlg = new tKeyOnDlg(e->IsKeyOn(), pPianoWindow, t); + +// pDialog = new tKeyOnDlg(pEvent->IsKeyOn(), pPianoWindow, pTrack); { - JZKeyOnDialog KeyOnDialog(e->IsKeyOn(), pPianoWindow); + JZKeyOnDialog KeyOnDialog(pEvent->IsKeyOn(), pPianoWindow); KeyOnDialog.ShowModal(); } break; case StatPitch: str = "Pitch Wheel"; - dlg = new tPitchDlg(e->IsPitch(), pPianoWindow, t); + pDialog = new tPitchDlg(pEvent->IsPitch(), pPianoWindow, pTrack); break; case StatControl: -// str = "Controller"; -// dlg = new tControlDlg(e->IsControl(), pPianoWindow, t); +// pDialog = new tControlDlg(pEvent->IsControl(), pPianoWindow, pTrack); { JZControllerDialog ControllerDialog(pPianoWindow); ControllerDialog.ShowModal(); @@ -847,8 +665,7 @@ break; case StatProgram: -// str = "Program Change"; -// dlg = new tProgramDlg(e->IsProgram(), pPianoWindow, t); +// pDialog = new tProgramDlg(pEvent->IsProgram(), pPianoWindow, pTrack); { JZProgramChangeDialog ProgramChangeDialog(pPianoWindow); ProgramChangeDialog.ShowModal(); @@ -856,88 +673,45 @@ break; case StatSetTempo: - str = "Set Tempo (for track 0)"; - dlg = new tSetTempoDlg( - e->IsSetTempo(), - pPianoWindow, - pPianoWindow->GetProject()->GetTrack(0)); + { + JZSetTempoDialog SetTempoDialog( + pEvent->IsSetTempo(), + pPianoWindow->GetProject()->GetTrack(0), + pPianoWindow); + SetTempoDialog.ShowModal(); + } break; case StatSysEx: - str = "System Exclusive"; - dlg = new tSysexDlg(e->IsSysEx(), pPianoWindow, t ); +// pDialog = new tSysexDlg(pEvent->IsSysEx(), pPianoWindow, pTrack); + { + JZSysexDialog SysexDialog(pEvent->IsSysEx(), pPianoWindow); + SysexDialog.ShowModal(); + } break; case StatPlayTrack: str = "Play Track"; - //dlg = new tPlayTrackDlg(e->IsPlayTrack(), pPianoWindow, t ); - dlg = new tPlayTrackDlg(e->IsPlayTrack(), pPianoWindow, t ); + pDialog = new tPlayTrackDlg(pEvent->IsPlayTrack(), pPianoWindow, pTrack); break; + case StatEndOfTrack: str = "End Of Track"; - dlg = new tEndOfTrackDlg(e->IsEndOfTrack(), pPianoWindow, t ); + pDialog = new tEndOfTrackDlg(pEvent->IsEndOfTrack(), pPianoWindow, pTrack); break; case StatText: str = "Text"; - dlg = new tTextDlg(e->IsText(), pPianoWindow, t ); + pDialog = new tTextDlg(pEvent->IsText(), pPianoWindow, pTrack); break; default: break; } - if (dlg) + + if (pDialog) { - dlg->Create(); + pDialog->Create(); } } - -//***************************************************************************** -// MeterChange Dialog -//***************************************************************************** - -int tMeterChangeDlg::Numerator = 4; -int tMeterChangeDlg::Denomiator = 4; -int tMeterChangeDlg::BarNr = 1; - -tMeterChangeDlg::tMeterChangeDlg(JZEventWindow* pEventWindow) - : tPropertyListDlg("Meter Change"), - mpEventWindow(pEventWindow) -{ -} - -void tMeterChangeDlg::AddProperties() -{ - sheet->AddProperty(new wxProperty( - "BarNr", - wxPropertyValue(&BarNr), - "integer"));//JAVE validators here? problem is i dont know which ranges are valid FIXME - sheet->AddProperty(new wxProperty( - "Numerator", - wxPropertyValue(&Numerator), - "integer")); - sheet->AddProperty(new wxProperty( - "Denomiator(2,4,8,16,32)", - wxPropertyValue(&Denomiator), - "integer"));//JAVE should be a integer list instead FIXME -} - -void tMeterChangeDlg::OnCancel() -{ - mpEventWindow->FinishMeterEdit(); -} - -bool tMeterChangeDlg::OnClose() -{ - BarNr += mpEventWindow->GetProject()->GetIntroLength(); - mpEventWindow->GetProject()->SetMeterChange(BarNr, Numerator, Denomiator); - mpEventWindow->Refresh(); - mpEventWindow->FinishMeterEdit(); - return false; -} - -void tMeterChangeDlg::OnHelp() -{ - gpHelpInstance->ShowTopic("Meterchange"); -} Modified: trunk/jazz/src/Dialogs.h =================================================================== --- trunk/jazz/src/Dialogs.h 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/Dialogs.h 2010-04-26 02:08:50 UTC (rev 757) @@ -111,25 +111,4 @@ int Channel, int Pitch); -//***************************************************************************** -// MeterChange Dialog -//***************************************************************************** -class tMeterChangeDlg : public tPropertyListDlg -{ - public: - - tMeterChangeDlg(JZEventWindow* pEventWindow); - - void AddProperties(); - - virtual bool OnClose(); - virtual void OnCancel(); - virtual void OnHelp(); - - JZEventWindow* mpEventWindow; - static int Numerator; - static int Denomiator; - static int BarNr; -}; - #endif // !defined(JZ_DIALOGS_H) Modified: trunk/jazz/src/EventFrame.cpp =================================================================== --- trunk/jazz/src/EventFrame.cpp 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/EventFrame.cpp 2010-04-26 02:08:50 UTC (rev 757) @@ -63,7 +63,8 @@ EVT_UPDATE_UI(ID_LENGTH, JZEventFrame::OnUpdateEventsSelected) EVT_MENU(ID_LENGTH, JZEventFrame::OnLength) - EVT_MENU(ID_METER_CHANGE, JZEventFrame::OnMeterChange) + EVT_MENU(ID_MISC_METER_CHANGE, JZEventFrame::OnMeterChange) + END_EVENT_TABLE() //----------------------------------------------------------------------------- Modified: trunk/jazz/src/EventWindow.cpp =================================================================== --- trunk/jazz/src/EventWindow.cpp 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/EventWindow.cpp 2010-04-26 02:08:50 UTC (rev 757) @@ -26,6 +26,7 @@ #include "Dialogs/CleanupDialog.h" #include "Dialogs/DeleteDialog.h" #include "Dialogs/LengthDialog.h" +#include "Dialogs/MeterChangeDialog.h" #include "Dialogs/MidiChannelDialog.h" #include "Dialogs/QuantizeDialog.h" #include "Dialogs/SearchAndReplaceDialog.h" @@ -90,8 +91,7 @@ mFromLine(0), mToLine(0), mScrolledX(0), - mScrolledY(0), - mpSettingsDialog(0) + mScrolledY(0) { mpSnapSel = new JZSnapSelection(this); @@ -114,7 +114,6 @@ delete mpFilter; delete mpGreyColor; delete mpGreyBrush; - FinishMeterEdit(); } //----------------------------------------------------------------------------- @@ -346,47 +345,11 @@ //----------------------------------------------------------------------------- void JZEventWindow::EditMeter() { - if (!IsEditingMeter()) - { - if (!mpSettingsDialog) - { - mpSettingsDialog = new wxDialog(this, wxID_ANY, "Meter Change"); - } - mpSettingsDialog->Show(true); - } - else - { - mpSettingsDialog->SetFocus(); - } -// tMeterChangeDlg *dlg; -// dlg = new tMeterChangeDlg(this); -// dlg->Create(); + JZMeterChangeDialog MeterChangeDialog(this); + MeterChangeDialog.ShowModal(); } //----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -bool JZEventWindow::IsEditingMeter() const -{ - if (mpSettingsDialog) - { - return (mpSettingsDialog->GetHandle() != 0); - } - return false; -} - -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -void JZEventWindow::FinishMeterEdit() -{ - if (mpSettingsDialog) - { - // Mark the dialog for destruction during idle time processing. - mpSettingsDialog->Destroy(); - mpSettingsDialog = 0; - } -} - -//----------------------------------------------------------------------------- // Description: // Only consider the event portion of the window when computing the virtual // size. Do not consider the static information of the left or top portion of Modified: trunk/jazz/src/EventWindow.h =================================================================== --- trunk/jazz/src/EventWindow.h 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/EventWindow.h 2010-04-26 02:08:50 UTC (rev 757) @@ -76,8 +76,6 @@ void SearchReplace(); void EditMeter(); - bool IsEditingMeter() const; - void FinishMeterEdit(); void LineText( wxDC& Dc, @@ -148,9 +146,6 @@ int mScrolledX, mScrolledY; - // Settings-Dialog - wxDialog* mpSettingsDialog; - DECLARE_EVENT_TABLE() }; Modified: trunk/jazz/src/Makefile.am =================================================================== --- trunk/jazz/src/Makefile.am 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/Makefile.am 2010-04-26 02:08:50 UTC (rev 757) @@ -29,11 +29,13 @@ Dialogs/IntegerEdit.cpp \ Dialogs/LengthDialog.cpp \ Dialogs/KeyOnDialog.cpp \ +Dialogs/MeterChangeDialog.cpp \ Dialogs/MetronomeSettingsDialog.cpp \ Dialogs/MidiChannelDialog.cpp \ Dialogs/ProgramChangeDialog.cpp \ Dialogs/QuantizeDialog.cpp \ Dialogs/SearchAndReplaceDialog.cpp \ +Dialogs/SetTempoDialog.cpp \ Dialogs/ShiftDialog.cpp \ Dialogs/SnapDialog.cpp \ Dialogs/SynthesizerSettingsDialog.cpp \ @@ -120,11 +122,13 @@ Dialogs/IntegerEdit.cpp \ Dialogs/LengthDialog.cpp \ Dialogs/KeyOnDialog.cpp \ +Dialogs/MeterChangeDialog.cpp \ Dialogs/MetronomeSettingsDialog.cpp \ Dialogs/MidiChannelDialog.cpp \ Dialogs/ProgramChangeDialog.cpp \ Dialogs/QuantizeDialog.cpp \ Dialogs/SearchAndReplaceDialog.cpp \ +Dialogs/SetTempoDialog.cpp \ Dialogs/ShiftDialog.cpp \ Dialogs/SnapDialog.cpp \ Dialogs/SynthesizerSettingsDialog.cpp \ @@ -216,11 +220,13 @@ Dialogs/IntegerEdit.h \ Dialogs/LengthDialog.h \ Dialogs/KeyOnDialog.h \ +Dialogs/MeterChangeDialog.h \ Dialogs/MetronomeSettingsDialog.h \ Dialogs/MidiChannelDialog.h \ Dialogs/ProgramChangeDialog.h \ Dialogs/QuantizeDialog.h \ Dialogs/SearchAndReplaceDialog.h \ +Dialogs/SetTempoDialog.h \ Dialogs/ShiftDialog.h \ Dialogs/SnapDialog.h \ Dialogs/SynthesizerSettingsDialog.h \ Modified: trunk/jazz/src/PianoFrame.cpp =================================================================== --- trunk/jazz/src/PianoFrame.cpp 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/PianoFrame.cpp 2010-04-26 02:08:50 UTC (rev 757) @@ -69,7 +69,6 @@ #define MEN_GUITAR 29 -#define MEN_RESET 36 #define MEN_VIS_ALL_TRK 37 #define ACT_CLOSE 41 @@ -108,8 +107,8 @@ { wxID_ZOOM_OUT, FALSE, zoomout_xpm, "zoom out"}, { wxID_UNDO, FALSE, undo_xpm, "undo"}, { MEN_REDO, FALSE, redo_xpm, "redo"}, - { MEN_RESET, FALSE, panic_xpm, "all notes off"}, - { ID_HELP_PIANO_WINDOW, FALSE, help_xpm, "help"}, + { ID_MISC_RESET_MIDI, FALSE, panic_xpm, "all notes off"}, + { ID_HELP_PIANO_WINDOW, FALSE, help_xpm, "help"}, { JZToolBar::eToolBarEnd } }; */ @@ -156,7 +155,7 @@ EVT_MENU(ID_CUT_PASTE_EVENTS, JZPianoFrame::OnMCutPaste) EVT_MENU(MEN_GUITAR, JZPianoFrame::OnGuitar) - EVT_MENU(MEN_RESET, JZPianoFrame::OnReset) + EVT_MENU(ID_MISC_RESET_MIDI, JZPianoFrame::OnReset) EVT_MENU(MEN_VIS_ALL_TRK, JZPianoFrame::OnVisibleAllTracks) EVT_MENU(wxID_DELETE, JZPianoFrame::OnErase) EVT_MENU(wxID_CUT, JZPianoFrame::OnCut) @@ -339,11 +338,11 @@ edit_menu->Append(ID_SEARCH_AND_REPLACE, "&Search Replace..."); wxMenu *setting_menu = new wxMenu("", wxMENU_TEAROFF); - setting_menu->Append(MEN_FILTER, "&Filter..."); - setting_menu->Append(ACT_SETTINGS, "&Window..."); - setting_menu->Append(MEN_VISIBLE, "&Events..."); - setting_menu->Append(ID_SNAP, "&Snap..."); - setting_menu->Append(ID_METER_CHANGE, "&Meter Change..."); + setting_menu->Append(MEN_FILTER, "&Filter..."); + setting_menu->Append(ACT_SETTINGS, "&Window..."); + setting_menu->Append(MEN_VISIBLE, "&Events..."); + setting_menu->Append(ID_SNAP, "&Snap..."); + setting_menu->Append(ID_MISC_METER_CHANGE, "&Meter Change..."); wxMenu *misc_menu = new wxMenu("",wxMENU_TEAROFF); misc_menu->Append(wxID_UNDO, "&Undo"); @@ -498,18 +497,6 @@ gpMidiPlayer->AllNotesOff(1); } -//INSER_EVENT_HANDLER_HERE - -/* - -//these wont compile nicely - -case MEN_VISIBLE: VisibleDialog(); break; - -case ID_METER_CHANGE: OnMeterChange(); break; - -*/ - void JZPianoFrame::OnMSelect(wxCommandEvent& Event) { mpPianoWindow->MSelect(); Modified: trunk/jazz/src/Resources.h =================================================================== --- trunk/jazz/src/Resources.h 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/Resources.h 2010-04-26 02:08:50 UTC (rev 757) @@ -60,16 +60,20 @@ #define ID_METRONOME_TOGGLE wxID_HIGHEST + 43 #define ID_VELOCITY wxID_HIGHEST + 44 #define ID_LENGTH wxID_HIGHEST + 45 -#define ID_METER_CHANGE wxID_HIGHEST + 46 -#define ID_TRANSPOSE wxID_HIGHEST + 47 -#define ID_CLEANUP wxID_HIGHEST + 48 -#define ID_SEARCH_AND_REPLACE wxID_HIGHEST + 49 +#define ID_MISC_TRACK_MERGE wxID_HIGHEST + 46 +#define ID_MISC_SPLIT_TRACKS wxID_HIGHEST + 47 +#define ID_MISC_METER_CHANGE wxID_HIGHEST + 48 +#define ID_MISC_RESET_MIDI wxID_HIGHEST + 49 +#define ID_MISC_SET_COPYRIGHT wxID_HIGHEST + 50 +#define ID_TRANSPOSE wxID_HIGHEST + 51 +#define ID_CLEANUP wxID_HIGHEST + 52 +#define ID_SEARCH_AND_REPLACE wxID_HIGHEST + 53 -#define ID_PLAY wxID_HIGHEST + 50 -#define ID_PLAY_LOOP wxID_HIGHEST + 51 -#define ID_RECORD wxID_HIGHEST + 52 +#define ID_PLAY wxID_HIGHEST + 60 +#define ID_PLAY_LOOP wxID_HIGHEST + 61 +#define ID_RECORD wxID_HIGHEST + 62 -#define ID_SELECT wxID_HIGHEST + 60 +#define ID_SELECT wxID_HIGHEST + 65 #define ID_CHANGE_LENGTH wxID_HIGHEST + 70 Modified: trunk/jazz/src/TrackFrame.cpp =================================================================== --- trunk/jazz/src/TrackFrame.cpp 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/src/TrackFrame.cpp 2010-04-26 02:08:50 UTC (rev 757) @@ -267,24 +267,22 @@ mpEditMenu->Append(MEN_SELECTIONSUB, "Select (needs submenu)"); mpEditMenu->AppendSeparator(); +#endif - - // Miscellaneous Menu is Stupid. - // Now it's a View Menu - misc_menu = new wxMenu; - misc_menu->Append(MEN_TMERGE, "Mer&ge Tracks..."); - misc_menu->Append(MEN_TSPLIT, "&Split Tracks..."); - misc_menu->Append(ID_METER_CHANGE, "&Meter Change..."); - misc_menu->Append(MEN_RESET, "&Reset Midi"); - misc_menu->Append(MEN_HARMONY, "&Harmony Browser..."); - misc_menu->Append(MEN_RHYTHM, "Random R&hythm..."); - misc_menu->Append(MEN_SHUFFLE, "Random Sh&uffle..."); - misc_menu->Append(MEN_GENMELDY, "Random Melod&y..."); - misc_menu->Append(MEN_ARPEGGIO, "Random Arpeggio..."); - misc_menu->Append(MEN_MAPPER, "Ma&pper..."); - misc_menu->Append(MEN_EVENTLIST, "Event &List..."); - misc_menu->Append(MEN_COPYRIGHT, "&Set Music Copyright..."); + wxMenu* pMiscMenu = new wxMenu; + pMiscMenu->Append(ID_MISC_TRACK_MERGE, "Mer&ge Tracks..."); + pMiscMenu->Append(ID_MISC_SPLIT_TRACKS, "&Split Tracks..."); + pMiscMenu->Append(ID_MISC_METER_CHANGE, "&Meter Change..."); + pMiscMenu->Append(ID_MISC_RESET_MIDI, "&Reset Midi"); +#if 0 + pMiscMenu->Append(MEN_RHYTHM, "Random R&hythm..."); + pMiscMenu->Append(MEN_SHUFFLE, "Random Sh&uffle..."); + pMiscMenu->Append(MEN_GENMELDY, "Random Melod&y..."); + pMiscMenu->Append(MEN_ARPEGGIO, "Random Arpeggio..."); + pMiscMenu->Append(MEN_MAPPER, "Ma&pper..."); + pMiscMenu->Append(MEN_EVENTLIST, "Event &List..."); #endif + pMiscMenu->Append(ID_MISC_SET_COPYRIGHT, "&Set Music Copyright..."); mpToolsMenu = new wxMenu; mpToolsMenu->Append(ID_TOOLS_HARMONY_BROWSER, "&Harmony Browser..."); @@ -393,14 +391,12 @@ wxMenuBar* pMenuBar = new wxMenuBar(); pMenuBar->Append(mpFileMenu, "&File"); pMenuBar->Append(mpEditMenu, "&Edit"); - pMenuBar->Append(mpToolsMenu, "&Tools"); - #if 0 - pMenuBar->Append(misc_menu, "&View"); pMenuBar->Append(parts_menu, "&Parts"); #endif - + pMenuBar->Append(mpToolsMenu, "&Tools"); pMenuBar->Append(pSettingMenu, "&Settings"); + pMenuBar->Append(pMiscMenu, "&Misc"); wxMenu* pAudioMenu = new wxMenu; pAudioMenu->Append(ID_AUDIO_GLOBAL_SETTINGS, "&Global Settings..."); Modified: trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj =================================================================== --- trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj 2010-04-25 23:59:43 UTC (rev 756) +++ trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj 2010-04-26 02:08:50 UTC (rev 757) @@ -903,6 +903,14 @@ > </File> <File + RelativePath="..\src\Dialogs\MeterChangeDialog.cpp" + > + </File> + <File + RelativePath="..\src\Dialogs\MeterChangeDialog.h" + > + </File> + <File RelativePath="..\src\Dialogs\MetronomeSettingsDialog.cpp" > </File> @@ -943,6 +951,14 @@ > </File> <File + RelativePath="..\src\Dialogs\SetTempoDialog.cpp" + > + </File> + <File + RelativePath="..\src\Dialogs\SetTempoDialog.h" + > + </File> + <File RelativePath="..\src\Dialogs\ShiftDialog.cpp" > </File> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |