annotate UI code/sliderPanel.mm @ 13:ab3e0e980c82

Sequence conrtollrer FINALLY works.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Mon, 20 Oct 2014 19:36:39 +0100
parents a223551fdc1f
children 27cdf475aa4b
rev   line source
rt300@0 1 //
rt300@0 2 // sliderPanel.cpp
rt300@0 3 // tweakathlon
rt300@0 4 //
rt300@0 5 // Created by Robert Tubb on 11/02/2014.
rt300@0 6 //
rt300@0 7 //
rt300@0 8
rt300@0 9 #include "sliderPanel.h"
rt300@0 10
rt300@0 11 //-----------------------------------------------------------------------------
rt300@0 12 SliderPanel::SliderPanel(float ax,
rt300@0 13 float ay,
rt300@0 14 float awidth,
rt300@0 15 float aheight,
rt300@0 16 const UIProps& aprops,
rt300@0 17 vector<controllerType> elemList) :
rt300@0 18 UIElementContainer(ax,ay,awidth,aheight,aprops)
rt300@0 19 {
rt300@0 20 cout << "SliderPanel auto layout contructor\n";
rt300@0 21
rt300@0 22 // generateControls(elemList);// called from messageorganiser
rt300@0 23 }
rt300@0 24
rt300@0 25 // NOT GENERIC
rt300@0 26 //-----------------------------------------------------------------------------
rt300@0 27 vector<UIElement*> SliderPanel::generateControls(vector<controllerType> elemList, controlPanelType panelType){
rt300@0 28 removeAllSubelements();
rt300@0 29 vector<controllerType>::iterator i;
rt300@0 30
rt300@0 31 // 10 cm is 520 pixels
rt300@0 32
rt300@0 33 // calc positions
rt300@0 34 int top = y + myProps.spacerSize;
rt300@0 35
rt300@0 36 float pixPerElem = width/(float)elemList.size();
rt300@0 37 if (pixPerElem < myProps.sliderWidth ){
rt300@0 38 cout << "error not enough room for sliders" << endl;
rt300@0 39 }
rt300@0 40
rt300@0 41 int n=0;
rt300@0 42 for(i=elemList.begin(); i<elemList.end();i++){
rt300@0 43 if(*i == SLIDER){
rt300@0 44 // add a slider
rt300@0 45 float c = (n + 0.5) * pixPerElem;
rt300@0 46 float l = c - myProps.sliderWidth/2;
rt300@0 47 if(n==1){
rt300@0 48 cout << "centre " << c << endl;
rt300@0 49 cout << l << endl;
rt300@0 50 }
rt300@0 51
rt300@0 52 ButtronSlider * revslider = new ButtronSlider(l , top , myProps.sliderWidth, myProps.sliderHeight,FILL, myProps);
rt300@0 53 revslider->setLabel("unassigned");
rt300@0 54 subElements.push_back(revslider);
rt300@0 55 revslider->showHint(false);
rt300@0 56 // grey out all but first
rt300@0 57 if(panelType == SEQUENTIAL && i != elemList.begin()){
rt300@0 58 revslider->setActive(false);
rt300@0 59 }
rt300@0 60
rt300@0 61 n++;
rt300@0 62
rt300@0 63 }else if(*i == XYPAD){
rt300@0 64 // add a xy
rt300@0 65 float c = (n + 0.5) * pixPerElem;
rt300@0 66 float left = c - myProps.XYsize/2;
rt300@0 67 ButtronXY * xyp = new ButtronXY(left , top , myProps);
rt300@0 68 xyp->setLabel("unassigned","unassigned");
rt300@0 69 xyp->showHint(false);
rt300@0 70 subElements.push_back(xyp);
rt300@0 71 n++;
rt300@0 72 }else if(*i == LEAP3D){
rt300@0 73 // add a threed box
rt300@0 74 float c = x+width*0.5;
rt300@0 75 float left = c - myProps.XYsize;
rt300@0 76
rt300@0 77 //Leap3DBox * l3d = new Leap3DBox(left , top+50 , myProps.XYsize*0.75,myProps.XYsize*0.75,150,50, myProps);
rt300@0 78
rt300@0 79 Leap3DBoxGL * l3d = new Leap3DBoxGL(left , top+50 , myProps.XYsize*0.75,myProps.XYsize*0.75,150,50, myProps);
rt300@0 80
rt300@0 81
rt300@0 82
rt300@0 83 subElements.push_back(l3d);
rt300@0 84 n++;
rt300@0 85
rt300@0 86 }else{
rt300@0 87 cout << "ERROR: slider panel only handles xy pads and sliders" << endl;
rt300@0 88 }
rt300@0 89
rt300@0 90
rt300@0 91 }
rt300@0 92
rt300@0 93 autoArrangeRow(); // will set positions
rt300@0 94
rt300@0 95
rt300@0 96
rt300@0 97 return subElements;
rt300@0 98 }
rt300@0 99