//this captures all our control panel events - unless its setup differently in testApp::setup //-------------------------------------------------------------- void testApp::eventsIn(guiCallbackData & data){ //TODO: would like to 'checkHit' for each GUI element and use that to set the analysisChooser (this would be proper behavior for the GUI) //check whether we are still on the same panel /* analysisChooser gui.getSelectedPanel(); */ //lets send all events to our logger if( !data.isElement( "events logger" ) ){ string logStr = data.getXmlName(); for(int k = 0; k < data.getNumValues(); k++){ logStr += " - " + data.getString(k); } logger.log(OF_LOG_NOTICE, "event - %s", logStr.c_str()); } // print to terminal if you want to //this code prints out the name of the events coming in and all the variables passed //SETUP CAMERA printf("testApp::eventsIn - name is %s - \n", data.getXmlName().c_str()); if( data.getDisplayName() == "set up camera input" ){ //vidGrabber.close(); setupCamera(camWidth,camHeight,camInput,desFrameRate,false); //menuState=1; cout<<"cam is setup\n"; } string thisName=data.getDisplayName(); cout<<thisName<<" this Name\n"; //START ANALYSIS IS NOW FROM A BUTTON if( thisName == "GO" ){ showGui=false; showCursor=false; menuState=1; } //animation time limit if( thisName == "animation time limit" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.maxNumberOfFramesForSynthesis=data.getFloat(k); cout<<masterAnalysis.maxNumberOfFramesForSynthesis<<"masterAnalysis.maxNumberOfFramesForSynthesis \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } //number of frames to grab if( thisName == "number of frames to grab" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.numOfFramesToGrab =data.getFloat(k); cout<<masterAnalysis.numOfFramesToGrab<<"masterAnalysis.numOfFramesToGrab \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } //added Tom 31/12/11 // number of grey levels if( thisName == "number of grey levels" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.numberOfGreyLevels =data.getFloat(k); masterAnalysis.currentGreyLevel=data.getFloat(k); cout<<masterAnalysis.numberOfGreyLevels<<"masterAnalysis.numberOfGreyLevels \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } //fadeTime if( thisName == "fadeTime" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.fadeTime =data.getFloat(k); cout<<masterAnalysis.fadeTime<<"masterAnalysis.fadeTime \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "scan line width" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.scanLineWidth=data.getFloat(k); cout<<masterAnalysis.scanLineWidth<<"masterAnalysis.scanLineWidth \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "scan line speed" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.scanLineSpeed=data.getFloat(k); cout<<masterAnalysis.scanLineSpeed<<"masterAnalysis.scanLineSpeed \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "max white level to ramp to" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.maxResultA=data.getFloat(k); cout<<masterAnalysis.maxResultA<<"masterAnalysis.maxResultA \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "num of seconds to last for" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ //30/12/11 maxNumberOfFramesForSynthesis is now set by multiplying gui time in secs by frameRateWeSet //if the analysis is iResponse this number of frames is per level/cycle so must be divided by number of grey levels // if (currentPanel==6) { // masterAnalysis.maxNumberOfFramesForSynthesis= frameRateWeSet * data.getFloat(k) / masterAnalysis.numberOfGreyLevels; // } // else{ masterAnalysis.maxNumberOfFramesForSynthesis= frameRateWeSet * data.getFloat(k); // } cout<<masterAnalysis.maxNumberOfFramesForSynthesis<<"masterAnalysis.maxNumberOfFramesForSynthesis \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "num of impulses" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.divisionsA=(2*(int)data.getFloat(k)); cout<<"masterAnalysis.divisionsA = "<<masterAnalysis.divisionsA<<" \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "show graph outline" ){ showGraphLine=!showGraphLine; masterAnalysis.showGraphA=showGraphLine; } //Tom S 14 Nov 19:10somehow this function appears to have been repeated so have commented out /* if( thisName == "graph max time" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.maxNumberOfFramesForSynthesis=data.getFloat(k); cout<<masterAnalysis.maxNumberOfFramesForSynthesis<<"masterAnalysis.maxNumberOfFramesForSynthesis \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } }*/ if( thisName == "morse pause time" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.speed=data.getFloat(k); cout<<masterAnalysis.speed<<"masterAnalysis.speed \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "red level" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.red=data.getFloat(k); cout<<masterAnalysis.red<<" masterAnalysis.red \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "green level" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.green=data.getFloat(k); cout<<masterAnalysis.green<<" masterAnalysis.green \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "red level" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.blue=data.getFloat(k); cout<<masterAnalysis.blue<<" masterAnalysis.blue \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } if( thisName == "color multi overall length" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ masterAnalysis.counterMaxColorMulti=data.getFloat(k); cout<<masterAnalysis.counterMaxColorMulti<<"masterAnalysis.maxNumberOfFramesForSynthesis \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } //more cam settings", "SETTINGS" if( data.getDisplayName() == "more cam settings" ){ vidGrabber.videoSettings(); } //LOCATION SELECTIO if( data.getDisplayName()== "location" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_STRING ){ locationChooser=data.getString(k); cout<<data.getString(k)<<" <<-- is our location \n"; } } } //START ANALYSIS //Tom 22/11/11 changed this from starting analysis to choosing panel of gui if( data.getDisplayName()== "choose analysis" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_STRING ){ analysisChooser=data.getString(k); cout<<data.getString(k)<<" "<<k<<" <<-- lets jump to this tab\n"; //Tom 22/11/11 for(int i=0;i<analysisNames.size();i++){ //check if the clicked option in the dropdown matches this analysis name if(analysisNames[i]==data.getString(k)){ //if it does, jump to the correct gui panel //changed 2 to 1 to account for mixing first 2 panels together gui.setSelectedPanel(i+1); //exit for loop exit(); } } } } } //WHAT KIND OF GRAPH if( data.getDisplayName()== "RELAXRATE response curve" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_STRING ){ //copy string straight into class masterAnalysis.whichGraph=data.getString(k); cout<<data.getString(k)<<" <<-- lets run THIS graph\n"; } } } //CAM HEIGHT if( data.getDisplayName() == "camera height" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ printf("%i float value = %f \n", k, data.getFloat(k)); camHeight=data.getFloat(k); } else if( data.getType(k) == CB_VALUE_INT ){ printf("%i int value = %i \n", k, data.getInt(k)); camHeight=data.getInt(k); } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); } } } //FRAME RATE ISNT WORKING - I THINK I HACKED THE LIBRARY TODO SET THIS RIGHT if( data.getDisplayName() == "desired frame rate" ){ for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ printf("%i float value = %f \n", k, data.getFloat(k)); desFrameRate=data.getFloat(k); } else if( data.getType(k) == CB_VALUE_INT ){ printf("%i int value = %i \n", k, data.getInt(k)); desFrameRate=data.getInt(k); } } } //LIST OF CAM SOURCES if( data.getDisplayName() == "inputs" ){ cout<<"input selected\n"; for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_FLOAT ){ printf("%i float value = %f \n", k, data.getFloat(k)); } else if( data.getType(k) == CB_VALUE_INT ){ printf("%i int value = %i \n", k, data.getInt(k)); camInput=data.getInt(k); cout<<camInput<<" camInput \n"; } else if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); camInputName=data.getString(k).c_str(); } } } // TOM - doesn't this refer to the morse text INPUT on the GUI? if( data.getDisplayName() == "morse output" ){ cout<<"getting morse message\r"; } //LIST OF CODECS if( data.getDisplayName() == "codecs" ){ cout<<"input selected\n"; for(int k = 0; k < data.getNumValues(); k++){ if( data.getType(k) == CB_VALUE_STRING ){ printf("%i string value = %s \n", k, data.getString(k).c_str()); codecName=data.getString(k).c_str(); cout<<codecName; //compare the string returned from the gui to get the number so we can pass this into the analysis setup for(int i=0;i<returnedCodecNames.size();i++){ if(returnedCodecNames[i]==codecName){ codecChooser=i; } } } } } //TODO: are any of these camera settings actually working or updating? // //UPDATE THE REPORT STRING FOR CURRENT SETTINGS camStatus="CAMERA STATUS:: width :"+ofToString(camWidth)+" height :"+ofToString(camHeight)+" frame rate :"+ofToString(desFrameRate)+" source :"+camInputName+"codec: "+codecName; }