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