sources/interface.cpp

Sun, 14 Dec 2014 20:47:44 +0200

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Sun, 14 Dec 2014 20:47:44 +0200
changeset 23
f7221183a994
parent 20
5f8cdc8febbb
child 24
e651d02802c0
permissions
-rw-r--r--

- the prompt is now colored
- the titlebar now changes to the server hostname upon connection

14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1 /*
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
2 Copyright 2014 Teemu Piippo
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
3 All rights reserved.
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
4
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
5 Redistribution and use in source and binary forms, with or without
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
6 modification, are permitted provided that the following conditions
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
7 are met:
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
8
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
9 1. Redistributions of source code must retain the above copyright
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
10 notice, this list of conditions and the following disclaimer.
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
11 2. Redistributions in binary form must reproduce the above copyright
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
12 notice, this list of conditions and the following disclaimer in the
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
13 documentation and/or other materials provided with the distribution.
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
14 3. Neither the name of the copyright holder nor the names of its
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
15 contributors may be used to endorse or promote products derived from
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
16 this software without specific prior written permission.
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
17
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
19 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
20 TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
21 PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
22 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
23 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
24 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
25 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
26 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
27 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
29 */
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
30
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
31 #include <string.h>
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
32 #include "interface.h"
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
33 #include "network/rconsession.h"
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
34
16
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
35 enum { PAGE_SIZE = 10 };
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
36
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
37 static String g_input;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
38 static int g_cursor = 0;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
39 static int g_pan = 0;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
40 static bool g_needRefresh = false;
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
41 static bool g_needStatusBarRender = false;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
42 static bool g_needInputRender = false;
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
43 static bool g_needOutputRender = false;
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
44 static String g_statusBarText;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
45 static struct { char ch; int x; } g_cursorChar;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
46 static Vector<String> g_output = {""};
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
47 static int g_outputScroll = 0;
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
48 static String g_title;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
49
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
50 // -------------------------------------------------------------------------------------------------
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
51 //
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
52 static FUNCTION
20
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
53 interface_color_pair (Color fg, Color bg) -> int
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
54 {
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
55 return COLOR_PAIR ((int (fg) * NUM_COLORS) + int (bg));
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
56 }
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
57
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
58 // -------------------------------------------------------------------------------------------------
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
59 //
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
60 FUNCTION
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
61 Interface::initialize() -> void
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
62 {
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
63 ::initscr();
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
64 ::start_color();
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
65 ::raw();
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
66 ::keypad (stdscr, true);
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
67 ::noecho();
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
68 ::refresh();
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
69 ::timeout (0);
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
70 g_title = format (APPNAME " %1 (%2)", full_version_string(), changeset_date_string());
20
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
71
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
72 for (int i = 0; i < NUM_COLORS; ++i)
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
73 for (int j = 0; j < NUM_COLORS; ++j)
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
74 {
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
75 init_pair ((i * NUM_COLORS + j),
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
76 (i == DEFAULT) ? -1 : i,
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
77 (j == DEFAULT) ? -1 : j);
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
78 }
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
79
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
80 render_full();
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
81 refresh();
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
82 g_needRefresh = false;
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
83 print ("Interface initialized.\n");
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
84 }
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
85 // -------------------------------------------------------------------------------------------------
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
86 //
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
87 static FUNCTION
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
88 interface_sessions_width() -> int
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
89 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
90 return COLS / 3;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
91 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
92
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
93 // -------------------------------------------------------------------------------------------------
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
94 //
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
95 static FUNCTION
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
96 interface_render_titlebar() -> void
20
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
97 {
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
98 if (g_title.length() <= COLS)
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
99 {
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
100 int pair = interface_color_pair (WHITE, BLUE);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
101 int startx = (COLS - g_title.length()) / 2;
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
102 int endx = startx + g_title.length();
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
103 print ("startx: %1, endx: %2\n", startx, endx);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
104
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
105 attron (pair);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
106 mvprintw (0, startx, "%s", g_title.chars());
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
107 mvhline (0, 0, ' ', startx);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
108 mvhline (0, endx, ' ', COLS - endx);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
109 attroff (pair);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
110 }
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
111
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
112 g_needRefresh = true;
20
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
113 }
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
114
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
115 // -------------------------------------------------------------------------------------------------
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
116 //
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
117 FUNCTION
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
118 Interface::set_title (const String& title) -> void
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
119 {
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
120 g_title = title;
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
121 interface_render_titlebar();
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
122 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
123
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
124 // -------------------------------------------------------------------------------------------------
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
125 //
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
126 static FUNCTION
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
127 interface_render_output() -> void
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
128 {
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
129 int height = LINES - 3;
16
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
130
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
131 // ensure we're within bounds
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
132 if (g_outputScroll + height >= g_output.size())
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
133 g_outputScroll = g_output.size() - height - 1;
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
134 else if (g_outputScroll < 0)
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
135 g_outputScroll = 0;
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
136
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
137 int start = max (0, g_output.size() - height - 1 - g_outputScroll);
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
138 int end = min (g_output.size(), start + height);
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
139 int y = 1;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
140 assert (end - start <= height);
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
141
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
142 for (int i = start; i < end; ++i)
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
143 {
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
144 mvhline (y, 0, ' ', COLS);
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
145 mvprintw (y++, 0, "%s", g_output[i].chars());
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
146 }
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
147
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
148 g_needRefresh = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
149 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
150
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
151 // -------------------------------------------------------------------------------------------------
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
152 //
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
153 static FUNCTION
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
154 interface_render_input() -> void
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
155 {
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
156 static char prompt[] = ">";
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
157 int displaylength = COLS - strlen (prompt) - 2;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
158 int y = LINES - 2;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
159
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
160 // Ensure the cursor is within bounds
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
161 g_cursor = clamp (g_cursor, 0, g_input.length());
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
162
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
163 // Ensure that the cursor is always in view, adjust panning if this is not the case
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
164 if (g_cursor > g_pan + displaylength)
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
165 g_pan = g_cursor - displaylength; // cursor went too far right
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
166 else if (g_cursor < g_pan)
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
167 g_pan = g_cursor; // cursor went past the pan value to the left
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
168
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
169 int start = g_pan;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
170 int end = min<int> (g_input.length(), start + displaylength);
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
171 assert (g_cursor >= start and g_cursor <= end);
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
172
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
173 // Clear, but only as much as is necessary. I want to avoid clearing the entire line to save
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
174 // bandwidth over SSH connections. Perhaps needlessly? I'm paranoid.
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
175 int renderLength = strlen (prompt) + 1 + g_input.length();
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
176 static int lastRenderLength = 0;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
177
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
178 if (lastRenderLength > renderLength)
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
179 mvhline (y, renderLength, ' ', lastRenderLength - renderLength);
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
180
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
181 lastRenderLength = renderLength;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
182
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
183 // Render the input line, with the part of the input string that's before the cursor written
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
184 // AFTER the part that comes afterwards. This is to ensure that the cursor is placed at the
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
185 // position where our cursor is. It looks nice like that. :)
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
186
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
187 int pair = interface_color_pair (WHITE, BLUE);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
188 attron (pair);
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
189 mvprintw (y, 0, "%s", prompt);
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
190 attroff (pair);
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
191 mvprintw (y, strlen (prompt) + 1, "%s", g_input.chars());
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
192 g_cursorChar.ch = g_cursor != 0 ? g_input[g_cursor - 1] : '\0';
23
f7221183a994 - the prompt is now colored
Teemu Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
193 g_cursorChar.x = strlen (prompt) + (g_cursor - g_pan);
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
194 g_needRefresh = true;
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
195 g_needInputRender = false;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
196 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
197
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
198 // -------------------------------------------------------------------------------------------------
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
199 //
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
200 static FUNCTION
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
201 interface_render_statusbar() -> void
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
202 {
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
203 int y = LINES - 1;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
204 mvhline (y, 0, ' ', COLS);
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
205 mvprintw (y, 0, "%s", g_statusBarText.chars());
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
206 g_needRefresh = true;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
207 g_needStatusBarRender = false;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
208 }
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
209
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
210 // -------------------------------------------------------------------------------------------------
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
211 //
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
212 static FUNCTION
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
213 set_statusbar_text (const String& a) -> void
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
214 {
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
215 g_statusBarText = a;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
216 g_needStatusBarRender = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
217 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
218
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
219 // -------------------------------------------------------------------------------------------------
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
220 //
20
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
221 FUNCTION
5f8cdc8febbb - now in color! (titlebar at least anyway)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 17
diff changeset
222 Interface::render_full() -> void
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
223 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
224 interface_render_titlebar();
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
225 interface_render_output();
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
226 interface_render_statusbar();
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
227 interface_render_input();
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
228 }
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
229
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
230 // -------------------------------------------------------------------------------------------------
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
231 //
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
232 static FUNCTION
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
233 interface_position_cursor() -> void
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
234 {
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
235 int y = LINES - 2;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
236
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
237 if (g_cursorChar.ch != '\0')
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
238 mvprintw (y, g_cursorChar.x, "%c", g_cursorChar.ch);
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
239 else
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
240 mvprintw (y, 1, " ");
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
241 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
242
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
243 // -------------------------------------------------------------------------------------------------
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
244 //
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
245 FUNCTION
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
246 Interface::handle_input() -> void
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
247 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
248 int ch = ::getch();
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
249 set_statusbar_text (String::from_number (ch));
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
250
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
251 if (ch >= 0x20 and ch <= 0x7E)
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
252 {
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
253 g_input.insert (g_cursor++, char (ch));
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
254 g_needInputRender = true;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
255 }
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
256 else switch (ch)
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
257 {
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
258 case KEY_F(1):
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
259 endwin();
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
260 exit (EXIT_SUCCESS);
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
261 break;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
262
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
263 case KEY_LEFT:
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
264 if (g_cursor > 0)
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
265 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
266 g_cursor--;
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
267 g_needInputRender = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
268 }
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
269 break;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
270
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
271 case KEY_RIGHT:
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
272 if (g_cursor < g_input.length())
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
273 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
274 g_cursor++;
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
275 g_needInputRender = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
276 }
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
277 break;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
278
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
279 case KEY_HOME:
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
280 if (g_cursor != 0)
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
281 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
282 g_cursor = 0;
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
283 g_needInputRender = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
284 }
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
285 break;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
286
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
287 case KEY_END:
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
288 if (g_cursor != g_input.length())
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
289 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
290 g_cursor = g_input.length();
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
291 g_needInputRender = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
292 }
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
293 break;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
294
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
295 case KEY_BACKSPACE:
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
296 if (g_cursor > 0)
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
297 {
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
298 g_input.remove_at (--g_cursor);
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
299 g_needInputRender = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
300 }
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
301 break;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
302
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
303 case KEY_DC:
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
304 if (g_cursor < g_input.length())
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
305 {
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
306 g_input.remove_at (g_cursor);
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
307 g_needInputRender = true;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
308 }
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
309 break;
16
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
310
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
311 case KEY_PPAGE:
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
312 g_outputScroll += PAGE_SIZE;
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
313 g_needOutputRender = true;
16
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
314 break;
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
315
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
316 case KEY_NPAGE:
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
317 g_outputScroll -= PAGE_SIZE;
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
318 g_needOutputRender = true;
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
319 break;
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
320
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
321 case '\n':
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
322 case KEY_ENTER:
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
323 if (RCONSession::get_session()->send_command (g_input))
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
324 {
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
325 g_input.clear();
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
326 g_needInputRender = true;
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
327 }
16
33bac54867bf - added backlog scrolling
Teemu Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
328 break;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
329 }
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
330 }
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
331
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
332 // -------------------------------------------------------------------------------------------------
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
333 //
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
334 FUNCTION
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
335 Interface::render() -> void
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
336 {
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
337 if (g_needStatusBarRender) interface_render_statusbar();
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
338 if (g_needInputRender) interface_render_input();
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
339 if (g_needOutputRender) interface_render_output();
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
340
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
341 if (g_needRefresh)
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
342 {
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
343 interface_position_cursor();
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
344 refresh();
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
345 g_needRefresh = false;
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
346 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
347 }
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
348
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
349 // -------------------------------------------------------------------------------------------------
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
350 //
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
351 FUNCTION print_to_console (const String& a) -> void
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
352 {
15
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
353 for (char ch : a)
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
354 {
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
355 if (ch == '\n')
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
356 {
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
357 g_output << "";
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
358 continue;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
359 }
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
360
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
361 g_output[g_output.size() - 1] += ch;
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
362 }
33da84af4bba - log area done, re-enabled the rcon connection
Teemu Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
363
17
50341dec533e - added command sending
Teemu Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
364 g_needOutputRender = true;
14
33b8f428bacb - begin work on interface - input line works for the most part :)
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
365 }

mercurial