diff MessageOrganiser.h @ 18:36cdb73691da

PIMPL speed compile? eventlogger now just saves as it goes more refactoring
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Wed, 22 Oct 2014 15:00:14 +0100
parents 2a7320a8cbed
children 5cf2b80909fc
line wrap: on
line diff
--- a/MessageOrganiser.h	Tue Oct 21 18:58:25 2014 +0100
+++ b/MessageOrganiser.h	Wed Oct 22 15:00:14 2014 +0100
@@ -60,52 +60,16 @@
 class MessageOrganiser {
     
 public:
-    void init(PDSynthWrapper& cs, PDSynthWrapper& ts){
-        candidateSynth = cs;
-        targetSynth = ts;
-        
-        onlyChangeCandidateOnTrigger = true;
-    }
-    // could template for ui element type??
-    void mapButtonToAction(UIElement* control, int mappingID){
-        UICallbackFunction callbackF;
-        callbackF = boost::bind(&MessageOrganiser::buttonPressCallback, this, _1,_2);
-        control->addHandler(callbackF, mappingID);
-        currentMapping.insert(std::pair<int,UIElement*>(mappingID,control));
-    }
+    void init(PDSynthWrapper& cs, PDSynthWrapper& ts);    // could template for ui element type??
+    void mapButtonToAction(UIElement* control, int mappingID);
     
-    
-    void setControlPanel(SliderPanel* p){ // a bit specific?? 
-        panel = p;
-        
-    };
-    void setBottomPanel(ButtonPanel * ntb){
-        bottomPanel = ntb;
-    };
-    
-    
-    void setIconPanel(IconPanel * ip){
-        presetIconPanel = ip;
-    }
-    void setInstructionPanel(TextPanel * ip){
-        instructionPanel = ip;
-        instructionPanel->show();
-    }
-
-    
+    void setControlPanel(SliderPanel* p);
+    void setBottomPanel(ButtonPanel * ntb);
+    void setIconPanel(IconPanel * ip);
+    void setInstructionPanel(TextPanel * ip);
     //-----------------------------------------------------------------------------
-    void hideMyPanels(){
-        presetIconPanel->hide();
-        instructionPanel->hide();
-        bottomPanel->hide();
-        panel->hide();
-    }
-    void showMyPanels(){
-        presetIconPanel->show();
-        instructionPanel->show();
-        bottomPanel->show();
-        panel->show();
-    }
+    void hideMyPanels();
+    void showMyPanels();
 protected:
 
     PDSynthWrapper candidateSynth;
@@ -119,148 +83,24 @@
     map<int,UIElement*> currentMapping; // could get more sophisticated if not 1-1 ?
     
 
-    void triggerCandidateSound(){
-        // log event
-        sendSynthValuesAgain();
-        candidateSynth.trigger();
-        eventLogger.logEvent(CANDIDATE_PLAYED);
-        // flash panel?
-        panel->flash();
-    }
+    void triggerCandidateSound();
+    void paramChangeCallback(int mappingID, int value);
+    void sendSynthValuesAgain();
+    void setAllSlidersToValues(vector<int> values);
     
-    void paramChangeCallback(int mappingID, int value){
-        
-        if(onlyChangeCandidateOnTrigger){
-            candidateSynth.paramChangeCallback(mappingID, value, false);
-        }else{
-            candidateSynth.paramChangeCallback(mappingID, value, true);
-        }
-    
-        vector<int> evtData;
-        evtData.push_back(mappingID); // or just index?
-        evtData.push_back(value);
-        
-        eventLogger.logEvent(CANDIDATE_PARAM_ADJUSTED, evtData);
-    };
-
-    void sendSynthValuesAgain(){
-        candidateSynth.sendAllParams();
-        targetSynth.sendAllParams();
-    };
- 
-    
-    void setAllSlidersToValues(vector<int> values){
-        for(int i = 0; i < values.size(); i++){
-            setUIToParam(i, values[i]);
-        }
-    }
     // we want to set UI object
-    void setUIToParam(int index, int value){ // e.g. from MIDI incoming, will handle both box and sliders...
-        // theXY->setValueAndScale(candidateSynth.getParamValueForID(mids[i]), candidateSynth.getParamValueForID(mids[i+1]));
-        UIElement* elem;
-        // get the element
-        if(panel->subElements.size() <= index){
-            cout << "ERROR: index out of range for num sliders" << endl;
-            return;
-        }
-        elem = panel->subElements[index];
-        if ( elem->getType() == SLIDER){
-            ButtronSlider* theSlider = (ButtronSlider*)elem;
-            theSlider->setValueAndScale(value);
-            
-        }else{
-            cout << "ERROR ERROR: ui type not handled by setUIToParam!" << endl;
-        }
-        
-    };
-    
-    
-    void mapControlToParam(UIElement* control, int mappingID){
-        
-        UICallbackFunction callbackF;
-        callbackF = boost::bind(&MessageOrganiser::paramChangeCallback, this, _1,_2);
-        control->addHandler(callbackF, mappingID);
-        // put in our map so we can send param values to gui
-        currentMapping.insert(std::pair<int,UIElement*>(mappingID,control));
-        cout << " Mapped control to ID: " << mappingID << "Name: " << candidateSynth.getNameForMappingID(mappingID) << endl;
-        control->setLabel(candidateSynth.getNameForMappingID(mappingID));
-    };
-    
+    void setUIToParam(int index, int value);
+    void mapControlToParam(UIElement* control, int mappingID);
     //-----------------------------------------------------------------------------
     
-    void mapSlidersToParams(vector<UIElement*> elems, vector<int> mids){
-        
-        vector<UIElement*>::iterator elit;
-        vector<int> typeListLog;
-        int i = 0;
-        for(elit=elems.begin(); elit<elems.end();elit++){
-            if ( (*elit)->getType() == SLIDER){
-                if(i >= mids.size()){
-                    
-                    cout << "ERROR ERROR: too many controls for mapping IDs: " << mids.size() << endl;
-                }
-                
-                ButtronSlider* theSlider = (ButtronSlider*)(*elit);
-                mapControlToParam((*elit), mids[i]);
-                theSlider->setValueAndScale(candidateSynth.getParamValueForID(mids[i]));
-                cout << "Hint Value " << targetSynth.getParamValueFromName(candidateSynth.getNameForMappingID(mids[i])) << endl;
-                theSlider->setHintValue(targetSynth.getParamValueFromName(candidateSynth.getNameForMappingID(mids[i])));
-                i++;
-                typeListLog.push_back(int(SLIDER));
-                
-            }else{
-                cout << "ERROR ERROR: ui type not handled my mapping function !" << endl;
-            }
-        }
-        
-        eventLogger.logEvent(CONTROL_LIST,typeListLog);
-    };
+    void mapSlidersToParams(vector<UIElement*> elems, vector<int> mids);
+    void mapXYToParams(ButtronXY* control, int mappingIDX, int mappingIDY);
     
-    void mapXYToParams(ButtronXY* control, int mappingIDX, int mappingIDY){
-        UICallbackFunction callback;
-        
-        callback = boost::bind(&MessageOrganiser::paramChangeCallback, this, _1,_2);
-        
-        control->addHandler(callback, mappingIDX, mappingIDY);
-        
-        // put in our map so we can send param values to gui
-        //currentMapping.insert(std::pair<int,UIElement*>(mappingID,control));
-        
-        
-        cout << " Mapped control to XID: " << mappingIDX << "Name: " << candidateSynth.getNameForMappingID(mappingIDX) << endl;
-        cout << " Mapped control to YID: " << mappingIDY << "Name: " << candidateSynth.getNameForMappingID(mappingIDY) << endl;
-        control->setLabel(candidateSynth.getNameForMappingID(mappingIDX), candidateSynth.getNameForMappingID(mappingIDY));
-        
-    };
-
+    void mapControlToParam(UIElement* control, string paramName);
+    virtual void buttonPressCallback(int mappingID, int value);
     
-    void mapControlToParam(UIElement* control, string paramName){
-        // get mapping ID from synth
-        int mappingID = candidateSynth.getMappingIDForName(paramName);
-        mapControlToParam(control, mappingID);
-        control->setLabel(paramName);
-    };
-
-    virtual void buttonPressCallback(int mappingID, int value){
-        
-    };
-
-    
-    void setSlidersToTarget(){
-        // this will actually show sliders with target vals - for "memorisation" purposes mwa heh heh
-        // get target values
-        // set ui
-        vector<int> vals = targetSynth.getAllParamValues();
-        for(int i=1; i < vals.size(); i++){
-            setUIToParam(i, vals[i]);
-        }
-    }
-    void setSlidersToDefault(){
-        for(int i=1; i < targetSynth.getNumParams(); i++){
-            setUIToParam(i, 0);
-        }
-    }
-    
+    void setSlidersToTarget();
+    void setSlidersToDefault();
     bool onlyChangeCandidateOnTrigger;
 
 };