rt300@0: // rt300@0: // sliderPanel.cpp rt300@0: // tweakathlon rt300@0: // rt300@0: // Created by Robert Tubb on 11/02/2014. rt300@0: // rt300@0: // rt300@0: rt300@0: #include "sliderPanel.h" rt300@0: rt300@0: //----------------------------------------------------------------------------- rt300@0: SliderPanel::SliderPanel(float ax, rt300@0: float ay, rt300@0: float awidth, rt300@0: float aheight, rt300@0: const UIProps& aprops, rt300@0: vector elemList) : rt300@0: UIElementContainer(ax,ay,awidth,aheight,aprops) rt300@0: { rt300@0: cout << "SliderPanel auto layout contructor\n"; rt300@0: rt300@0: // generateControls(elemList);// called from messageorganiser rt300@0: } rt300@0: rt300@0: // NOT GENERIC rt300@0: //----------------------------------------------------------------------------- rt300@0: vector SliderPanel::generateControls(vector elemList, controlPanelType panelType){ rt300@0: removeAllSubelements(); rt300@0: vector::iterator i; rt300@0: rt300@0: // 10 cm is 520 pixels rt300@0: rt300@0: // calc positions rt300@0: int top = y + myProps.spacerSize; rt300@0: rt300@0: float pixPerElem = width/(float)elemList.size(); rt300@0: if (pixPerElem < myProps.sliderWidth ){ rt300@0: cout << "error not enough room for sliders" << endl; rt300@0: } rt300@0: rt300@0: int n=0; rt300@0: for(i=elemList.begin(); isetLabel("unassigned"); rt300@0: subElements.push_back(revslider); rt300@0: revslider->showHint(false); rt300@0: // grey out all but first rt300@0: if(panelType == SEQUENTIAL && i != elemList.begin()){ rt300@0: revslider->setActive(false); rt300@0: } rt300@0: rt300@0: n++; rt300@0: rt300@0: }else if(*i == XYPAD){ rt300@0: // add a xy rt300@0: float c = (n + 0.5) * pixPerElem; rt300@0: float left = c - myProps.XYsize/2; rt300@0: ButtronXY * xyp = new ButtronXY(left , top , myProps); rt300@0: xyp->setLabel("unassigned","unassigned"); rt300@0: xyp->showHint(false); rt300@0: subElements.push_back(xyp); rt300@0: n++; rt300@0: }else if(*i == LEAP3D){ rt300@0: // add a threed box rt300@0: float c = x+width*0.5; rt300@0: float left = c - myProps.XYsize; rt300@0: rt300@0: //Leap3DBox * l3d = new Leap3DBox(left , top+50 , myProps.XYsize*0.75,myProps.XYsize*0.75,150,50, myProps); rt300@0: rt300@0: Leap3DBoxGL * l3d = new Leap3DBoxGL(left , top+50 , myProps.XYsize*0.75,myProps.XYsize*0.75,150,50, myProps); rt300@0: rt300@0: rt300@0: rt300@0: subElements.push_back(l3d); rt300@0: n++; rt300@0: rt300@0: }else{ rt300@0: cout << "ERROR: slider panel only handles xy pads and sliders" << endl; rt300@0: } rt300@0: rt300@0: rt300@0: } rt300@0: rt300@0: autoArrangeRow(); // will set positions rt300@0: rt300@0: rt300@0: rt300@0: return subElements; rt300@0: } rt300@0: