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