ARGH, that really was a STUPID bug.
[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, clearValues, void(entity))
10         METHOD(TextSlider, addValue, void(entity, string, string))
11         METHOD(TextSlider, insertValue, void(entity, float, string, string))
12         METHOD(TextSlider, configureTextSliderValues, void(entity, string))
13         ATTRIBARRAY(TextSlider, valueStrings, string, 256)
14         ATTRIBARRAY(TextSlider, valueIdentifiers, string, 256)
15         ATTRIB(TextSlider, nValues, float, 0)
16 ENDCLASS(TextSlider)
17 #endif
18
19 #ifdef IMPLEMENTATION
20 string TextSlider_valueToIdentifier(entity me, float val)
21 {
22         if(val >= me.nValues)
23                 return "custom";
24         if(val < 0)
25                 return "custom";
26         return me.(valueIdentifiers[val]);
27 }
28 string TextSlider_valueToText(entity me, float val)
29 {
30         if(val >= me.nValues)
31                 return _("custom");
32         if(val < 0)
33                 return _("custom");
34         return me.(valueStrings[val]);
35 }
36 void TextSlider_setValueFromIdentifier(entity me, string id)
37 {
38         float i;
39         for(i = 0; i < me.nValues; ++i)
40                 if(me.valueToIdentifier(me, i) == id)
41                 {
42                         SUPER(TextSlider).setValue( me, i );
43                         return;
44                 }
45         SUPER(TextSlider).setValue( me, -1 );
46 }
47 string TextSlider_getIdentifier(entity me)
48 {
49         return me.valueToIdentifier(me, me.value);
50 }
51 void TextSlider_clearValues(entity me)
52 {
53         me.nValues = 0;
54 }
55 void TextSlider_addValue(entity me, string theString, string theIdentifier)
56 {
57         me.(valueStrings[me.nValues]) = theString;
58         me.(valueIdentifiers[me.nValues]) = theIdentifier;
59         me.nValues += 1;
60 }
61 void TextSlider_insertValue(entity me, float pos, string theString, string theIdentifier)
62 {
63         float i;
64         for (i = me.nValues; i > pos; --i)
65         {
66                 me.(valueStrings[i]) = me.(valueStrings[i-1]);
67                 me.(valueIdentifiers[i]) = me.(valueIdentifiers[i-1]);
68         }
69         me.(valueStrings[pos]) = theString;
70         me.(valueIdentifiers[pos]) = theIdentifier;
71         me.nValues += 1;
72 }
73 void TextSlider_configureTextSliderValues(entity me, string theDefault)
74 {
75         me.configureSliderValues(me, 0, 0, me.nValues - 1, 1, 1, 1);
76         me.setValueFromIdentifier(me, theDefault);
77 }
78 #endif