Merge commit 'origin/master' into diabolik/nexmodel
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / item / textslider.c
1 // Note:
2 //   to use this, you FIRST call configureSliderVisuals, then multiple times addValue, then configureTextSlider
3 #ifdef INTERFACE
4 CLASS(TextSlider) EXTENDS(Slider)
5         METHOD(TextSlider, valueToText, string(entity, float))
6         METHOD(TextSlider, valueToIdentifier, string(entity, float))
7         METHOD(TextSlider, setValueFromIdentifier, void(entity, string))
8         METHOD(TextSlider, getIdentifier, string(entity))
9         METHOD(TextSlider, addValue, void(entity, string, string))
10         METHOD(TextSlider, configureTextSliderValues, void(entity, string))
11         ATTRIBARRAY(TextSlider, valueStrings, string, 256)
12         ATTRIBARRAY(TextSlider, valueIdentifiers, string, 256)
13         ATTRIB(TextSlider, nValues, float, 0)
14 ENDCLASS(TextSlider)
15 #endif
16
17 #ifdef IMPLEMENTATION
18 string TextSlider_valueToIdentifier(entity me, float val)
19 {
20         if(val >= me.nValues)
21                 return "custom";
22         if(val < 0)
23                 return "custom";
24         return me.(valueIdentifiers[val]);
25 }
26 string TextSlider_valueToText(entity me, float val)
27 {
28         if(val >= me.nValues)
29                 return "custom";
30         if(val < 0)
31                 return "custom";
32         return me.(valueStrings[val]);
33 }
34 void TextSlider_setValueFromIdentifier(entity me, string id)
35 {
36         float i;
37         for(i = 0; i < me.nValues; ++i)
38                 if(me.valueToIdentifier(me, i) == id)
39                 {
40                         SUPER(TextSlider).setValue( me, i );
41                         return;
42                 }
43         SUPER(TextSlider).setValue( me, -1 );
44 }
45 string TextSlider_getIdentifier(entity me)
46 {
47         return me.valueToIdentifier(me, me.value);
48 }
49 void TextSlider_addValue(entity me, string theString, string theIdentifier)
50 {
51         me.(valueStrings[me.nValues]) = theString;
52         me.(valueIdentifiers[me.nValues]) = theIdentifier;
53         me.nValues += 1;
54 }
55 void TextSlider_configureTextSliderValues(entity me, string theDefault)
56 {
57         me.configureSliderValues(me, 0, 0, me.nValues - 1, 1, 1, 1);
58         me.setValueFromIdentifier(me, theDefault);
59 }
60 #endif