]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/dialog_welcome.qc
Allow closing the Welcome dialog with Enter and Space
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_welcome.qc
1 #include "dialog_welcome.qh"
2
3 #include "image.qh"
4 #include "textlabel.qh"
5 #include "textbox.qh"
6 #include "radiobutton.qh"
7 #include "commandbutton.qh"
8 #include "slider.qh"
9
10 void welcomeDialog_resetStrings(entity me)
11 {
12         if(me.serverinfo_name)
13                 strunzone(me.serverinfo_name);
14         me.serverinfo_name = strzone(_("<NO NAME>"));
15
16         if(me.serverinfo_MOTD)
17                 strunzone(me.serverinfo_MOTD);
18         me.serverinfo_MOTD = strzone(_("<NO MOTD>"));
19 }
20 float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shift)
21 {
22         switch(key)
23         {
24                 case K_KP_ENTER:
25                 case K_ENTER:
26                 case K_SPACE:
27                         XonoticWelcomeDialog_close(me);
28                         return true;
29                 default:
30                         return SUPER(XonoticWelcomeDialog).keyDown(me, key, ascii, shift);
31         }
32 }
33 void XonoticWelcomeDialog_close(entity me)
34 {
35         SUPER(XonoticWelcomeDialog).close(me);
36 }
37 void XonoticWelcomeDialog_configureDialog(entity me)
38 {
39         welcomeDialog_resetStrings(me);
40         SUPER(XonoticWelcomeDialog).configureDialog(me);
41 }
42 void XonoticWelcomeDialog_readInputArgs(entity me, float argsbuf)
43 {
44         int i = 0;
45         string s;
46         welcomeDialog_resetStrings(me);
47         if(argsbuf >= 0)
48         while((s = bufstr_get(argsbuf, i)) != "")
49         {
50                 if(s == "name")
51                 {
52                         if(me.serverinfo_name)
53                                 strunzone(me.serverinfo_name);
54                         me.serverinfo_name = strzone(bufstr_get(argsbuf, i + 1));
55                         ++i;
56                 }
57                 else if(s == "motd")
58                 {
59                         if(me.serverinfo_MOTD)
60                                 strunzone(me.serverinfo_MOTD);
61                         me.serverinfo_MOTD = strzone(bufstr_get(argsbuf, i + 1));
62                         ++i;
63                 }
64                 ++i;
65         }
66         localcmd("\nwait; wait; +show_info; wait; wait; -show_info\n");
67         //me.serverinfo_name_ent.setText(me.serverinfo_name_ent, me.serverinfo_name);
68         me.serverinfo_MOTD_ent.setText(me.serverinfo_MOTD_ent, me.serverinfo_MOTD);
69         me.frame.setText(me.frame, me.serverinfo_name);
70 }
71
72 void XonoticWelcomeDialog_fill(entity me)
73 {
74         entity e;
75
76         me.TR(me);
77                 me.TD(me, me.rows - 1, me.columns, me.serverinfo_MOTD_ent = makeXonoticTextBox());
78                         me.serverinfo_MOTD_ent.align = 0.5;
79                         me.serverinfo_MOTD_ent.allowColors = true;
80                         me.serverinfo_MOTD_ent.escapedNewLines = true;
81         me.gotoRC(me, me.rows - 1, 0);
82                 me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
83                         e.onClick = Dialog_Close;
84                         e.onClickEntity = me;
85                         e.preferredFocusPriority = 1;
86 }