1 /*
2 * DO NOT EDIT THIS FILE - it is generated by Glade.
3 */
4
5 #ifdef HAVE_CONFIG_H
6 # include <config.h>
7 #endif
8
9 #include <sys/types.h>
10 #include <sys/stat.h>
11 #include <unistd.h>
12 #include <string.h>
13 #include <stdio.h>
14
15 #include <gdk/gdkkeysyms.h>
16 #include <gtk/gtk.h>
17
18 #include "callbacks-server.h"
19 #include "interface-server.h"
20 #include "support.h"
21
22 #define GLADE_HOOKUP_OBJECT(component,widget,name) \
23 g_object_set_data_full (G_OBJECT (component), name, \
24 gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
25
26 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
27 g_object_set_data (G_OBJECT (component), name, widget)
28
29 GtkWidget*
create_window_main(void)30 create_window_main (void)
31 {
32 GtkWidget *window_main;
33 GtkWidget *vbox1;
34 GtkWidget *hbox1;
35 GtkWidget *image1;
36 GtkWidget *table1;
37 GtkWidget *label3;
38 GtkWidget *label4;
39 GtkWidget *label5;
40 GtkWidget *radiobutton_internet;
41 GSList *radiobutton_internet_group = NULL;
42 GtkWidget *radiobutton_lan;
43 GtkObject *spinbutton_port_adj;
44 GtkWidget *spinbutton_port;
45 GtkObject *spinbutton_players_adj;
46 GtkWidget *spinbutton_players;
47 GtkWidget *vbox2;
48 GtkWidget *alignment3;
49 GtkWidget *button_launch;
50 GtkWidget *alignment1;
51 GtkWidget *hbox2;
52 GtkWidget *image_launch;
53 GtkWidget *label_launch;
54 GtkWidget *alignment4;
55 GtkWidget *vbox3;
56 GtkWidget *alignment5;
57 GtkWidget *button_stop;
58 GtkWidget *alignment2;
59 GtkWidget *hbox3;
60 GtkWidget *image2;
61 GtkWidget *label6;
62 GtkWidget *alignment6;
63 GtkWidget *label2;
64 GtkWidget *scrolledwindow_status;
65 GtkWidget *textview_status;
66 GtkWidget *hbuttonbox1;
67 GtkWidget *button_close;
68 GtkWidget *button_help;
69 GtkTooltips *tooltips;
70
71 tooltips = gtk_tooltips_new ();
72
73 window_main = gtk_window_new (GTK_WINDOW_TOPLEVEL);
74 gtk_widget_set_name (window_main, "window_main");
75 gtk_window_set_title (GTK_WINDOW (window_main), "Hu-go! server");
76
77 vbox1 = gtk_vbox_new (FALSE, 0);
78 gtk_widget_set_name (vbox1, "vbox1");
79 gtk_widget_show (vbox1);
80 gtk_container_add (GTK_CONTAINER (window_main), vbox1);
81
82 hbox1 = gtk_hbox_new (FALSE, 0);
83 gtk_widget_set_name (hbox1, "hbox1");
84 gtk_widget_show (hbox1);
85 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
86
87 image1 = create_pixmap (window_main, "gnome-fs-network.png");
88 gtk_widget_set_name (image1, "image1");
89 gtk_widget_show (image1);
90 gtk_box_pack_start (GTK_BOX (hbox1), image1, FALSE, TRUE, 2);
91
92 table1 = gtk_table_new (4, 2, FALSE);
93 gtk_widget_set_name (table1, "table1");
94 gtk_widget_show (table1);
95 gtk_box_pack_start (GTK_BOX (hbox1), table1, TRUE, TRUE, 0);
96
97 label3 = gtk_label_new ("Number of players : ");
98 gtk_widget_set_name (label3, "label3");
99 gtk_widget_show (label3);
100 gtk_table_attach (GTK_TABLE (table1), label3, 0, 1, 0, 1,
101 (GtkAttachOptions) (GTK_FILL),
102 (GtkAttachOptions) (0), 0, 0);
103 gtk_misc_set_alignment (GTK_MISC (label3), 1, 0.5);
104
105 label4 = gtk_label_new ("Game mode : ");
106 gtk_widget_set_name (label4, "label4");
107 gtk_widget_show (label4);
108 gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 1, 3,
109 (GtkAttachOptions) (GTK_FILL),
110 (GtkAttachOptions) (0), 0, 0);
111 gtk_misc_set_alignment (GTK_MISC (label4), 1, 0.5);
112
113 label5 = gtk_label_new ("Server port : ");
114 gtk_widget_set_name (label5, "label5");
115 gtk_widget_show (label5);
116 gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 3, 4,
117 (GtkAttachOptions) (GTK_FILL),
118 (GtkAttachOptions) (0), 0, 0);
119 gtk_misc_set_alignment (GTK_MISC (label5), 1, 0.5);
120
121 radiobutton_internet = gtk_radio_button_new_with_mnemonic (NULL, "Internet");
122 gtk_widget_set_name (radiobutton_internet, "radiobutton_internet");
123 gtk_widget_show (radiobutton_internet);
124 gtk_table_attach (GTK_TABLE (table1), radiobutton_internet, 1, 2, 2, 3,
125 (GtkAttachOptions) (GTK_FILL),
126 (GtkAttachOptions) (0), 0, 0);
127 gtk_tooltips_set_tip (tooltips, radiobutton_internet, "Use Internet procol for sharing game session", NULL);
128 gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton_internet), radiobutton_internet_group);
129 radiobutton_internet_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton_internet));
130
131 radiobutton_lan = gtk_radio_button_new_with_mnemonic (NULL, "LAN");
132 gtk_widget_set_name (radiobutton_lan, "radiobutton_lan");
133 gtk_widget_show (radiobutton_lan);
134 gtk_table_attach (GTK_TABLE (table1), radiobutton_lan, 1, 2, 1, 2,
135 (GtkAttachOptions) (GTK_FILL),
136 (GtkAttachOptions) (0), 0, 0);
137 gtk_tooltips_set_tip (tooltips, radiobutton_lan, "Use LAN protocol for sharing game session", NULL);
138 gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton_lan), radiobutton_internet_group);
139 radiobutton_internet_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton_lan));
140
141 spinbutton_port_adj = gtk_adjustment_new (25679, 1, 65536, 1, 10, 10);
142 spinbutton_port = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_port_adj), 1, 0);
143 gtk_widget_set_name (spinbutton_port, "spinbutton_port");
144 gtk_widget_show (spinbutton_port);
145 gtk_table_attach (GTK_TABLE (table1), spinbutton_port, 1, 2, 3, 4,
146 (GtkAttachOptions) (GTK_EXPAND),
147 (GtkAttachOptions) (0), 0, 0);
148 gtk_tooltips_set_tip (tooltips, spinbutton_port, "UDP Port to use for listening to clients", NULL);
149
150 spinbutton_players_adj = gtk_adjustment_new (2, 1, 5, 1, 10, 10);
151 spinbutton_players = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_players_adj), 1, 0);
152 gtk_widget_set_name (spinbutton_players, "spinbutton_players");
153 gtk_widget_show (spinbutton_players);
154 gtk_table_attach (GTK_TABLE (table1), spinbutton_players, 1, 2, 0, 1,
155 (GtkAttachOptions) (GTK_EXPAND),
156 (GtkAttachOptions) (0), 0, 0);
157 gtk_tooltips_set_tip (tooltips, spinbutton_players, "Number of open slots", NULL);
158
159 vbox2 = gtk_vbox_new (FALSE, 0);
160 gtk_widget_set_name (vbox2, "vbox2");
161 gtk_widget_show (vbox2);
162 gtk_box_pack_start (GTK_BOX (hbox1), vbox2, FALSE, FALSE, 0);
163
164 alignment3 = gtk_alignment_new (0.5, 0.5, 1, 1);
165 gtk_widget_set_name (alignment3, "alignment3");
166 gtk_widget_show (alignment3);
167 gtk_box_pack_start (GTK_BOX (vbox2), alignment3, TRUE, TRUE, 0);
168
169 button_launch = gtk_button_new ();
170 gtk_widget_set_name (button_launch, "button_launch");
171 gtk_widget_show (button_launch);
172 gtk_box_pack_start (GTK_BOX (vbox2), button_launch, FALSE, FALSE, 0);
173 GTK_WIDGET_SET_FLAGS (button_launch, GTK_CAN_DEFAULT);
174 gtk_tooltips_set_tip (tooltips, button_launch, "Start the server", NULL);
175
176 alignment1 = gtk_alignment_new (0.5, 0.5, 0, 0);
177 gtk_widget_set_name (alignment1, "alignment1");
178 gtk_widget_show (alignment1);
179 gtk_container_add (GTK_CONTAINER (button_launch), alignment1);
180
181 hbox2 = gtk_hbox_new (FALSE, 2);
182 gtk_widget_set_name (hbox2, "hbox2");
183 gtk_widget_show (hbox2);
184 gtk_container_add (GTK_CONTAINER (alignment1), hbox2);
185
186 image_launch = create_pixmap (window_main, "gnome-fs-network-24.png");
187 gtk_widget_set_name (image_launch, "image_launch");
188 gtk_widget_show (image_launch);
189 gtk_box_pack_start (GTK_BOX (hbox2), image_launch, FALSE, FALSE, 0);
190
191 label_launch = gtk_label_new_with_mnemonic ("Launch Server");
192 gtk_widget_set_name (label_launch, "label_launch");
193 gtk_widget_show (label_launch);
194 gtk_box_pack_start (GTK_BOX (hbox2), label_launch, FALSE, FALSE, 0);
195
196 alignment4 = gtk_alignment_new (0.5, 0.5, 1, 1);
197 gtk_widget_set_name (alignment4, "alignment4");
198 gtk_widget_show (alignment4);
199 gtk_box_pack_start (GTK_BOX (vbox2), alignment4, TRUE, TRUE, 0);
200
201 vbox3 = gtk_vbox_new (FALSE, 0);
202 gtk_widget_set_name (vbox3, "vbox3");
203 gtk_widget_show (vbox3);
204 gtk_box_pack_start (GTK_BOX (hbox1), vbox3, FALSE, FALSE, 0);
205
206 alignment5 = gtk_alignment_new (0.5, 0.5, 1, 1);
207 gtk_widget_set_name (alignment5, "alignment5");
208 gtk_widget_show (alignment5);
209 gtk_box_pack_start (GTK_BOX (vbox3), alignment5, TRUE, TRUE, 0);
210
211 button_stop = gtk_button_new ();
212 gtk_widget_set_name (button_stop, "button_stop");
213 gtk_box_pack_start (GTK_BOX (vbox3), button_stop, FALSE, FALSE, 0);
214
215 alignment2 = gtk_alignment_new (0.5, 0.5, 0, 0);
216 gtk_widget_set_name (alignment2, "alignment2");
217 gtk_widget_show (alignment2);
218 gtk_container_add (GTK_CONTAINER (button_stop), alignment2);
219
220 hbox3 = gtk_hbox_new (FALSE, 0);
221 gtk_widget_set_name (hbox3, "hbox3");
222 gtk_widget_show (hbox3);
223 gtk_container_add (GTK_CONTAINER (alignment2), hbox3);
224
225 image2 = gtk_image_new_from_stock ("gtk-stop", GTK_ICON_SIZE_BUTTON);
226 gtk_widget_set_name (image2, "image2");
227 gtk_widget_show (image2);
228 gtk_box_pack_start (GTK_BOX (hbox3), image2, TRUE, TRUE, 0);
229
230 label6 = gtk_label_new ("Stop Server");
231 gtk_widget_set_name (label6, "label6");
232 gtk_widget_show (label6);
233 gtk_box_pack_start (GTK_BOX (hbox3), label6, FALSE, FALSE, 0);
234
235 alignment6 = gtk_alignment_new (0.5, 0.5, 1, 1);
236 gtk_widget_set_name (alignment6, "alignment6");
237 gtk_widget_show (alignment6);
238 gtk_box_pack_start (GTK_BOX (vbox3), alignment6, TRUE, TRUE, 0);
239
240 label2 = gtk_label_new ("Status :");
241 gtk_widget_set_name (label2, "label2");
242 gtk_widget_show (label2);
243 gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 0);
244 gtk_misc_set_alignment (GTK_MISC (label2), 0, 0.5);
245
246 scrolledwindow_status = gtk_scrolled_window_new (NULL, NULL);
247 gtk_widget_set_name (scrolledwindow_status, "scrolledwindow_status");
248 gtk_widget_show (scrolledwindow_status);
249 gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow_status, TRUE, TRUE, 0);
250 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow_status), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
251
252 textview_status = gtk_text_view_new ();
253 gtk_widget_set_name (textview_status, "textview_status");
254 gtk_widget_show (textview_status);
255 gtk_container_add (GTK_CONTAINER (scrolledwindow_status), textview_status);
256 gtk_widget_set_sensitive (textview_status, FALSE);
257 GTK_WIDGET_UNSET_FLAGS (textview_status, GTK_CAN_FOCUS);
258 gtk_text_view_set_editable (GTK_TEXT_VIEW (textview_status), FALSE);
259 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview_status), FALSE);
260
261 hbuttonbox1 = gtk_hbutton_box_new ();
262 gtk_widget_set_name (hbuttonbox1, "hbuttonbox1");
263 gtk_widget_show (hbuttonbox1);
264 gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, FALSE, 0);
265 gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_SPREAD);
266
267 button_close = gtk_button_new_from_stock ("gtk-quit");
268 gtk_widget_set_name (button_close, "button_close");
269 gtk_widget_show (button_close);
270 gtk_container_add (GTK_CONTAINER (hbuttonbox1), button_close);
271 GTK_WIDGET_SET_FLAGS (button_close, GTK_CAN_DEFAULT);
272
273 button_help = gtk_button_new_from_stock ("gtk-help");
274 gtk_widget_set_name (button_help, "button_help");
275 gtk_widget_show (button_help);
276 gtk_container_add (GTK_CONTAINER (hbuttonbox1), button_help);
277 GTK_WIDGET_SET_FLAGS (button_help, GTK_CAN_DEFAULT);
278
279 g_signal_connect ((gpointer) window_main, "delete_event",
280 G_CALLBACK (gtk_main_quit),
281 NULL);
282 g_signal_connect ((gpointer) button_launch, "clicked",
283 G_CALLBACK (on_button_launch_clicked),
284 NULL);
285 g_signal_connect ((gpointer) button_stop, "clicked",
286 G_CALLBACK (on_button_stop_clicked),
287 NULL);
288 g_signal_connect ((gpointer) button_close, "clicked",
289 G_CALLBACK (gtk_main_quit),
290 NULL);
291 g_signal_connect ((gpointer) button_help, "clicked",
292 G_CALLBACK (on_button_help_clicked),
293 NULL);
294
295 /* Store pointers to all widgets, for use by lookup_widget(). */
296 GLADE_HOOKUP_OBJECT_NO_REF (window_main, window_main, "window_main");
297 GLADE_HOOKUP_OBJECT (window_main, vbox1, "vbox1");
298 GLADE_HOOKUP_OBJECT (window_main, hbox1, "hbox1");
299 GLADE_HOOKUP_OBJECT (window_main, image1, "image1");
300 GLADE_HOOKUP_OBJECT (window_main, table1, "table1");
301 GLADE_HOOKUP_OBJECT (window_main, label3, "label3");
302 GLADE_HOOKUP_OBJECT (window_main, label4, "label4");
303 GLADE_HOOKUP_OBJECT (window_main, label5, "label5");
304 GLADE_HOOKUP_OBJECT (window_main, radiobutton_internet, "radiobutton_internet");
305 GLADE_HOOKUP_OBJECT (window_main, radiobutton_lan, "radiobutton_lan");
306 GLADE_HOOKUP_OBJECT (window_main, spinbutton_port, "spinbutton_port");
307 GLADE_HOOKUP_OBJECT (window_main, spinbutton_players, "spinbutton_players");
308 GLADE_HOOKUP_OBJECT (window_main, vbox2, "vbox2");
309 GLADE_HOOKUP_OBJECT (window_main, alignment3, "alignment3");
310 GLADE_HOOKUP_OBJECT (window_main, button_launch, "button_launch");
311 GLADE_HOOKUP_OBJECT (window_main, alignment1, "alignment1");
312 GLADE_HOOKUP_OBJECT (window_main, hbox2, "hbox2");
313 GLADE_HOOKUP_OBJECT (window_main, image_launch, "image_launch");
314 GLADE_HOOKUP_OBJECT (window_main, label_launch, "label_launch");
315 GLADE_HOOKUP_OBJECT (window_main, alignment4, "alignment4");
316 GLADE_HOOKUP_OBJECT (window_main, vbox3, "vbox3");
317 GLADE_HOOKUP_OBJECT (window_main, alignment5, "alignment5");
318 GLADE_HOOKUP_OBJECT (window_main, button_stop, "button_stop");
319 GLADE_HOOKUP_OBJECT (window_main, alignment2, "alignment2");
320 GLADE_HOOKUP_OBJECT (window_main, hbox3, "hbox3");
321 GLADE_HOOKUP_OBJECT (window_main, image2, "image2");
322 GLADE_HOOKUP_OBJECT (window_main, label6, "label6");
323 GLADE_HOOKUP_OBJECT (window_main, alignment6, "alignment6");
324 GLADE_HOOKUP_OBJECT (window_main, label2, "label2");
325 GLADE_HOOKUP_OBJECT (window_main, scrolledwindow_status, "scrolledwindow_status");
326 GLADE_HOOKUP_OBJECT (window_main, textview_status, "textview_status");
327 GLADE_HOOKUP_OBJECT (window_main, hbuttonbox1, "hbuttonbox1");
328 GLADE_HOOKUP_OBJECT (window_main, button_close, "button_close");
329 GLADE_HOOKUP_OBJECT (window_main, button_help, "button_help");
330 GLADE_HOOKUP_OBJECT_NO_REF (window_main, tooltips, "tooltips");
331
332 gtk_widget_grab_default (button_launch);
333 return window_main;
334 }
335
336 GtkWidget*
create_window_help(void)337 create_window_help (void)
338 {
339 GtkWidget *window_help;
340 GtkWidget *vbox4;
341 GtkWidget *hbox4;
342 GtkWidget *image3;
343 GtkWidget *label7;
344 GtkWidget *label8;
345 GtkWidget *hbuttonbox2;
346 GtkWidget *button1;
347
348 window_help = gtk_window_new (GTK_WINDOW_TOPLEVEL);
349 gtk_widget_set_name (window_help, "window_help");
350 gtk_window_set_title (GTK_WINDOW (window_help), "Hu-go! server Help");
351 gtk_window_set_destroy_with_parent (GTK_WINDOW (window_help), TRUE);
352
353 vbox4 = gtk_vbox_new (FALSE, 0);
354 gtk_widget_set_name (vbox4, "vbox4");
355 gtk_widget_show (vbox4);
356 gtk_container_add (GTK_CONTAINER (window_help), vbox4);
357
358 hbox4 = gtk_hbox_new (FALSE, 0);
359 gtk_widget_set_name (hbox4, "hbox4");
360 gtk_widget_show (hbox4);
361 gtk_box_pack_start (GTK_BOX (vbox4), hbox4, FALSE, TRUE, 0);
362
363 image3 = create_pixmap (window_help, "gnome-fs-network.png");
364 gtk_widget_set_name (image3, "image3");
365 gtk_widget_show (image3);
366 gtk_box_pack_start (GTK_BOX (hbox4), image3, TRUE, TRUE, 0);
367 gtk_misc_set_alignment (GTK_MISC (image3), 0.96, 0.5);
368
369 label7 = gtk_label_new ("Hu-Go Server");
370 gtk_widget_set_name (label7, "label7");
371 gtk_widget_show (label7);
372 gtk_box_pack_end (GTK_BOX (hbox4), label7, TRUE, TRUE, 0);
373 gtk_misc_set_alignment (GTK_MISC (label7), 0.03, 0.5);
374
375 label8 = gtk_label_new ("Hu-Go! Server is a required component for the netplay feature of Hu-Go! It is started with a specified number of slots (customizable with the \"Number of Players\" option), a game will not begin until all specified slots are filled.\n\nEach client exports one or more local players. The clients need to specify the server (via name or numeric address) and port number to use. The default port is 25679 (UDP). Additionally, the protocol\nfor connecting to the server must also be specified.\n\nThe server is started in either LAN or Internet Protocol, according to input named 'Game mode' and the clients are required to use the same protocol. This isn't yet enforced by the server, but mixing protocols will likely yield unpredictable results.\n\nThe \"LAN Protocol\" is recommended for fast local networks. It requires a fast ping time, and allows for perfect multi-client coordination.\n\nThe \"Internet Protocol\" works with networks having a higher latency. The drawback is that the game is not as reactive as with the LAN protocol.\n\nOnce all clients are connected, the game begins. Input from each player is collected at the server and distributed to all participating clients.");
376 gtk_widget_set_name (label8, "label8");
377 gtk_widget_show (label8);
378 gtk_box_pack_start (GTK_BOX (vbox4), label8, TRUE, TRUE, 0);
379 gtk_label_set_line_wrap (GTK_LABEL (label8), TRUE);
380
381 hbuttonbox2 = gtk_hbutton_box_new ();
382 gtk_widget_set_name (hbuttonbox2, "hbuttonbox2");
383 gtk_widget_show (hbuttonbox2);
384 gtk_box_pack_start (GTK_BOX (vbox4), hbuttonbox2, FALSE, FALSE, 0);
385
386 button1 = gtk_button_new_from_stock ("gtk-close");
387 gtk_widget_set_name (button1, "button1");
388 gtk_widget_show (button1);
389 gtk_container_add (GTK_CONTAINER (hbuttonbox2), button1);
390 GTK_WIDGET_SET_FLAGS (button1, GTK_CAN_DEFAULT);
391
392 g_signal_connect ((gpointer) window_help, "delete_event",
393 G_CALLBACK (on_window_help_delete_event),
394 NULL);
395 g_signal_connect ((gpointer) button1, "clicked",
396 G_CALLBACK (on_button_close_help_clicked),
397 NULL);
398
399 /* Store pointers to all widgets, for use by lookup_widget(). */
400 GLADE_HOOKUP_OBJECT_NO_REF (window_help, window_help, "window_help");
401 GLADE_HOOKUP_OBJECT (window_help, vbox4, "vbox4");
402 GLADE_HOOKUP_OBJECT (window_help, hbox4, "hbox4");
403 GLADE_HOOKUP_OBJECT (window_help, image3, "image3");
404 GLADE_HOOKUP_OBJECT (window_help, label7, "label7");
405 GLADE_HOOKUP_OBJECT (window_help, label8, "label8");
406 GLADE_HOOKUP_OBJECT (window_help, hbuttonbox2, "hbuttonbox2");
407 GLADE_HOOKUP_OBJECT (window_help, button1, "button1");
408
409 return window_help;
410 }
411
412