733b1d61255e155490021d7e12f6b53c61940acd
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / item / textslider.qc
1 // Note:
2 //   to use this, you FIRST call configureSliderVisuals, then multiple times addValue, then configureTextSlider
3 #ifndef ITEM_TEXTSLIDER_H
4 #define ITEM_TEXTSLIDER_H
5 #include "slider.qc"
6 CLASS(TextSlider, Slider)
7         METHOD(TextSlider, valueToText, string(entity, float));
8         METHOD(TextSlider, valueToIdentifier, string(entity, float));
9         METHOD(TextSlider, setValueFromIdentifier, void(entity, string));
10         METHOD(TextSlider, getIdentifier, string(entity));
11         METHOD(TextSlider, clearValues, void(entity));
12         METHOD(TextSlider, addValue, void(entity, string, string));
13         METHOD(TextSlider, insertValue, void(entity, float, string, string));
14         METHOD(TextSlider, configureTextSliderValues, void(entity, string));
15         ATTRIBARRAY(TextSlider, valueStrings, string, 256)
16         ATTRIBARRAY(TextSlider, valueIdentifiers, string, 256)
17         ATTRIB(TextSlider, nValues, int, 0)
18 ENDCLASS(TextSlider)
19 #endif
20
21 #ifdef IMPLEMENTATION
22 string TextSlider_valueToIdentifier(entity me, int val)
23 {
24         if(val >= me.nValues)
25                 return "custom";
26         if(val < 0)
27                 return "custom";
28         return me.(valueIdentifiers[val]);
29 }
30 string TextSlider_valueToText(entity me, int val)
31 {
32         if(val >= me.nValues)
33                 return _("Custom");
34         if(val < 0)
35                 return _("Custom");
36         return me.(valueStrings[val]);
37 }
38 void TextSlider_setValueFromIdentifier(entity me, string id)
39 {
40         int i;
41         for(i = 0; i < me.nValues; ++i)
42                 if(me.valueToIdentifier(me, i) == id)
43                 {
44                         SUPER(TextSlider).setValue( me, i );
45                         return;
46                 }
47         SUPER(TextSlider).setValue( me, -1 );
48 }
49 string TextSlider_getIdentifier(entity me)
50 {
51         return me.valueToIdentifier(me, me.value);
52 }
53 void TextSlider_clearValues(entity me)
54 {
55         me.nValues = 0;
56 }
57 void TextSlider_addValue(entity me, string theString, string theIdentifier)
58 {
59         me.(valueStrings[me.nValues]) = theString;
60         me.(valueIdentifiers[me.nValues]) = theIdentifier;
61         me.nValues += 1;
62 }
63 void TextSlider_insertValue(entity me, int pos, string theString, string theIdentifier)
64 {
65         int i;
66         for (i = me.nValues; i > pos; --i)
67         {
68                 me.(valueStrings[i]) = me.(valueStrings[i-1]);
69                 me.(valueIdentifiers[i]) = me.(valueIdentifiers[i-1]);
70         }
71         me.(valueStrings[pos]) = theString;
72         me.(valueIdentifiers[pos]) = theIdentifier;
73         me.nValues += 1;
74 }
75 void TextSlider_configureTextSliderValues(entity me, string theDefault)
76 {
77         me.configureSliderValues(me, 0, 0, me.nValues - 1, 1, 1, 1);
78         me.setValueFromIdentifier(me, theDefault);
79 }
80 #endif