diff --git a/src/Surfaces/SurfaceManager.cpp b/src/Surfaces/SurfaceManager.cpp index 1a9aae2..3febf7e 100644 --- a/src/Surfaces/SurfaceManager.cpp +++ b/src/Surfaces/SurfaceManager.cpp @@ -444,5 +444,24 @@ void SurfaceManager::cloneActivePreset(){ _activePresetIndex = _presets.size() - 1; } +void SurfaceManager::eraseActivePreset(){ + if(_presets.size() <= 0){ + return; + } + + _presets[_activePresetIndex]->clear(); + _presets.erase(_presets.begin() + _activePresetIndex); + + _activePresetIndex--; + + if(_presets.size() > 0 && _activePresetIndex < 0){ + _activePresetIndex = 0; + } + + if(_activePresetIndex < 0){ + createPreset(); + } +} + } // namespace piMapper } // namespace ofx diff --git a/src/Surfaces/SurfaceManager.h b/src/Surfaces/SurfaceManager.h index 4c60854..82a8452 100644 --- a/src/Surfaces/SurfaceManager.h +++ b/src/Surfaces/SurfaceManager.h @@ -73,6 +73,7 @@ class SurfaceManager { void setNextPreset(); void setActivePreset(unsigned int i); void cloneActivePreset(); + void eraseActivePreset(); private: BaseSurface * selectedSurface; diff --git a/src/ofxPiMapper.cpp b/src/ofxPiMapper.cpp index c05331e..638a39a 100644 --- a/src/ofxPiMapper.cpp +++ b/src/ofxPiMapper.cpp @@ -36,6 +36,11 @@ void ofxPiMapper::cloneActivePreset(){ _application.getSurfaceManager()->cloneActivePreset(); } +void ofxPiMapper::eraseActivePreset(){ + _application.getSurfaceManager()->deselectSurface(); + _application.getSurfaceManager()->eraseActivePreset(); +} + bool ofxPiMapper::loadXmlSettings(string fileName){ return _application.loadXmlSettings(fileName); } diff --git a/src/ofxPiMapper.h b/src/ofxPiMapper.h index e70108c..6ede09d 100644 --- a/src/ofxPiMapper.h +++ b/src/ofxPiMapper.h @@ -41,6 +41,7 @@ class ofxPiMapper { void setActivePreset(unsigned int i); void setNextPreset(); void cloneActivePreset(); + void eraseActivePreset(); bool loadXmlSettings(string fileName);