Skip to content

Commit

Permalink
event return selected gui object
Browse files Browse the repository at this point in the history
  • Loading branch information
NickHardeman committed Oct 2, 2020
1 parent 635289d commit 24cb7c1
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 3 deletions.
13 changes: 13 additions & 0 deletions src/guiTypePanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,19 @@ void guiTypePanel::setShowOnlySelectedElement(bool showOnlySelected){
showOnly = showOnlySelected;
}

//-----------------------------------------------
bool guiTypePanel::hasSelectedElement() {
return elementInteracting;
}

//-----------------------------------------------
shared_ptr<guiBaseObject> guiTypePanel::getSelectedElement() {
shared_ptr<guiBaseObject> temp;
if( !hasSelectedElement() || whichElementInteracting < 0 || whichElementInteracting >= children.size() ){
return temp;
}
return children[whichElementInteracting];
}

//-----------------------------------------------
void guiTypePanel::addSpace( int height ) {
Expand Down
2 changes: 2 additions & 0 deletions src/guiTypePanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ class guiTypePanel : public guiBaseObject{

void resetSelectedElement();
void setShowOnlySelectedElement(bool showOnlySelected);
bool hasSelectedElement();
shared_ptr<guiBaseObject> getSelectedElement();

void drawLocked();
void drawUnlocked();
Expand Down
25 changes: 24 additions & 1 deletion src/ofxControlPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,15 @@ shared_ptr<guiBaseObject> ofxControlPanel::getGuiObject( ofAbstractParameter& ap
return robj;
}

//---------------------------------------------
ofAbstractParameter& ofxControlPanel::getParam( shared_ptr<guiBaseObject> aobj ) {
if( aobj && aobj->value.paramGroup.size() > 0 ) {
return aobj->value.paramGroup.get(0);
}
ofLogError("ofxControlPanel :: getParam : unable to find param from gui object");
return mTempParam;
}

//---------------------------------------------
void ofxControlPanel::setEnabled( ofParameterGroup& agroup, bool ab ) {
auto objs = getGuiObjects( agroup );
Expand Down Expand Up @@ -1425,6 +1434,12 @@ bool ofxControlPanel::isVisible(){
return !hidden;
}

//-------------------------------
void ofxControlPanel::setStatusMessage(ofParameter<string> & message ) {
// set on all of them
setStatusMessage(message, -1);
}

//-------------------------------
void ofxControlPanel::setStatusMessage(ofParameter <string> & message, int whichPanel){
if( whichPanel == -1 ){
Expand Down Expand Up @@ -1553,11 +1568,19 @@ bool ofxControlPanel::mousePressed(float x, float y, int button){
}

if(minimize == false && tabButtonPressed == false && isInsideRect(x, y, boundingBox) ){
bool bDidHitSomething = false;
for(int i = 0; i < (int) panels.size(); i++){
if( i == selectedPanel ){
elementSelected = panels[i]->checkHit( x - hitArea.x, y - hitArea.y, button);
elementSelected = panels[i]->checkHit( x - hitArea.x, y - hitArea.y, button);
bDidHitSomething = true;
}
}
if( bDidHitSomething && panels[selectedPanel]->hasSelectedElement() ) {
// now lets try to get the parameter //
// get( ofAbstractParameter& aparam )
shared_ptr<guiBaseObject> sobj = panels[selectedPanel]->getSelectedElement();
ofNotifyEvent( guiElementSelectedEvent, sobj, this );
}
}

prevMouse.set(x, y);
Expand Down
10 changes: 8 additions & 2 deletions src/ofxControlPanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ class ofxControlPanel: public guiBaseObject{

vector< shared_ptr<guiBaseObject> > getGuiObjects( ofParameterGroup& agroup );
shared_ptr<guiBaseObject> getGuiObject( ofAbstractParameter& aparam );
ofAbstractParameter& getParam( shared_ptr<guiBaseObject> aobj );

void setEnabled( ofParameterGroup& agroup, bool ab );
void setEnabled( ofAbstractParameter& aparam, bool ab );
Expand Down Expand Up @@ -210,8 +211,9 @@ class ofxControlPanel: public guiBaseObject{
void show();
void hide();

void setStatusMessage(ofParameter <string> & message, int whichPanel = -1);
void setStatusMessage(ofParameter <string> & message, string panelName = "");
void setStatusMessage(ofParameter <string> & message );
void setStatusMessage(ofParameter <string> & message, int whichPanel);
void setStatusMessage(ofParameter <string> & message, string panelName );

//this only shows the element you are interacting with when the mouse is pressed
void setInvisibleMode(bool bInvis);
Expand Down Expand Up @@ -275,6 +277,7 @@ class ofxControlPanel: public guiBaseObject{

ofEvent<bool> guiSaveEvent;
ofEvent<bool> guiLoadEvent;
ofEvent< shared_ptr<guiBaseObject> > guiElementSelectedEvent;

protected:
ofTrueTypeFont guiTTFFont;
Expand Down Expand Up @@ -352,5 +355,8 @@ class ofxControlPanel: public guiBaseObject{

// store if we ate the key press //
int mFrameKeyPressAte = -100;

// not going to use abstract param for return param since it's abstract at this point
ofParameter<float> mTempParam;

};

0 comments on commit 24cb7c1

Please sign in to comment.