]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/nexuiz/inputbox.c
Show all active mutators in motd.
[divverent/nexuiz.git] / data / qcsrc / menu / nexuiz / inputbox.c
1 #ifdef INTERFACE
2 CLASS(NexuizInputBox) EXTENDS(InputBox)
3         METHOD(NexuizInputBox, configureNexuizInputBox, void(entity, float, string))
4         METHOD(NexuizInputBox, focusLeave, void(entity))
5         METHOD(NexuizInputBox, setText, void(entity, string))
6         ATTRIB(NexuizInputBox, fontSize, float, SKINFONTSIZE_NORMAL)
7         ATTRIB(NexuizInputBox, image, string, SKINGFX_INPUTBOX)
8         ATTRIB(NexuizInputBox, onChange, void(entity, entity), SUB_Null)
9         ATTRIB(NexuizInputBox, onChangeEntity, entity, NULL)
10         ATTRIB(NexuizInputBox, marginLeft, float, SKINMARGIN_INPUTBOX_CHARS)
11         ATTRIB(NexuizInputBox, marginRight, float, SKINMARGIN_INPUTBOX_CHARS)
12         ATTRIB(NexuizInputBox, color, vector, SKINCOLOR_INPUTBOX_N)
13         ATTRIB(NexuizInputBox, colorF, vector, SKINCOLOR_INPUTBOX_F)
14
15         ATTRIB(NexuizInputBox, alpha, float, SKINALPHA_TEXT)
16
17         ATTRIB(NexuizInputBox, cvarName, string, string_null)
18         METHOD(NexuizInputBox, loadCvars, void(entity))
19         METHOD(NexuizInputBox, saveCvars, void(entity))
20         METHOD(NexuizInputBox, keyDown, float(entity, float, float, float))
21 ENDCLASS(NexuizInputBox)
22 entity makeNexuizInputBox(float, string);
23 #endif
24
25 #ifdef IMPLEMENTATION
26 entity makeNexuizInputBox(float doEditColorCodes, string theCvar)
27 {
28         entity me;
29         me = spawnNexuizInputBox();
30         me.configureNexuizInputBox(me, doEditColorCodes, theCvar);
31         return me;
32 }
33 void configureNexuizInputBoxNexuizInputBox(entity me, float doEditColorCodes, string theCvar)
34 {
35         me.configureInputBox(me, "", 0, me.fontSize, me.image);
36         me.editColorCodes = doEditColorCodes;
37         if(theCvar)
38         {
39                 me.cvarName = theCvar;
40                 me.loadCvars(me);
41         }
42         me.cursorPos = strlen(me.text);
43 }
44 void focusLeaveNexuizInputBox(entity me)
45 {
46         if(me.cvarName)
47                 me.saveCvars(me);
48 }
49 void setTextNexuizInputBox(entity me, string new)
50 {
51         if(me.text != new)
52         {
53                 setTextInputBox(me, new);
54                 me.onChange(me, me.onChangeEntity);
55         }
56         else
57                 setTextInputBox(me, new);
58 }
59 void loadCvarsNexuizInputBox(entity me)
60 {
61         setTextInputBox(me, cvar_string(me.cvarName));
62 }
63 void saveCvarsNexuizInputBox(entity me)
64 {
65         cvar_set(me.cvarName, me.text);
66 }
67 float keyDownNexuizInputBox(entity me, float key, float ascii, float shift)
68 {
69         float r;
70         r = 0;
71         if(key == K_ENTER)
72                 if(me.cvarName)
73                 {
74                         me.saveCvars(me);
75                         r = 1;
76                 }
77         if(keyDownInputBox(me, key, ascii, shift))
78                 r = 1;
79         return r;
80 }
81 #endif