#include #include #include #include #include FretDialog::FretDialog(void) : mCurrEntryIndex(0), mSelectedString(-1), mSelectedFret(-1) { mInitHandler.setCallback(this,&FretDialog::initHandler); mCreateHandler.setCallback(this,&FretDialog::createHandler); mCloseHandler.setCallback(this,&FretDialog::closeHandler); mDestroyHandler.setCallback(this,&FretDialog::destroyHandler); mCommandHandler.setCallback(this,&FretDialog::commandHandler); insertHandler(VectorHandler::InitDialogHandler,&mInitHandler); insertHandler(VectorHandler::CreateHandler,&mCreateHandler); insertHandler(VectorHandler::CloseHandler,&mCloseHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } FretDialog::FretDialog(const FretDialog &someFretDialog) { // private implementation *this=someFretDialog; } FretDialog::~FretDialog() { removeHandler(VectorHandler::InitDialogHandler,&mInitHandler); removeHandler(VectorHandler::CreateHandler,&mCreateHandler); removeHandler(VectorHandler::CloseHandler,&mCloseHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } FretDialog &FretDialog::operator=(const FretDialog &someFretDialog) { // private implementation return *this; } bool FretDialog::perform(GUIWindow &parentWindow,TabEntries &entries,int selectedString,int currEntryIndex) { mTabEntries=SmartPointer(&entries); mCurrEntryIndex=currEntryIndex; mSelectedString=selectedString; mSelectedFret=-1; return ::DialogBoxParam(processInstance(),(LPSTR)"FRETDIALOG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this); } CallbackData::ReturnType FretDialog::createHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType FretDialog::closeHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType FretDialog::destroyHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType FretDialog::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDCANCEL : endDialog(false); break; case IDOK : handleOk(); endDialog(true); break; } return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType FretDialog::initHandler(CallbackData &someCallbackData) { initializeAction(); initializeNoteTypes(); setString(); setFret(); setNoteType((*mTabEntries)[mCurrEntryIndex]); return (CallbackData::ReturnType)FALSE; } void FretDialog::handleOk(void) { String selectedFret; String selectedAction; String selectedDuration; String selectedString; bool found=false; getText(FRETENTRY_FRET,selectedFret); getText(FRETENTRY_ACTION,selectedAction); getText(FRETENTRY_DURATION,selectedDuration); getText(FRETENTRY_STRING,selectedString); if(!selectedString.isNull()) { int string=selectedString.toInt(); if(string>=1&&string<=Fretboard::Strings)mSelectedString=Fretboard::Strings-string; } mSelectedFret=selectedFret.toInt(); if(mSelectedFret<0||mSelectedFret>Fretboard::Frets) { mSelectedFret=-1; return; } TabEntry &entry=(*mTabEntries)[mCurrEntryIndex]; FrettedNote frettedNote; frettedNote.setFret(mSelectedFret); frettedNote.setAction(Action(selectedAction)); if(selectedFret.isNull())entry.remove(mSelectedString,mSelectedFret); else if(!entry.setFrettedNote(mSelectedString,frettedNote)) { entry.addFrettedNote(mSelectedString,frettedNote); } entry.setNoteType(NoteType().fromString(selectedDuration)); return; } void FretDialog::setString() { setText(FRETENTRY_STRING,String().fromInt(Fretboard::Strings-mSelectedString)); } void FretDialog::setFret() { TabEntry &entry=(*mTabEntries)[mCurrEntryIndex]; for(int index=0;index actions=Action::enumerate(); for(int index=0;index noteTypes=NoteType::enumerate(); for(int index=0;index