mainbox.c 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /* $Id: mainbox.c,v 1.13 2001/04/29 22:33:21 kilobug Exp $ */
  2. #include "client.h"
  3. void byebye(GtkWidget *widget, conf_t *conf)
  4. {
  5. if (conf->debug && conf->connected)
  6. {
  7. conf->ready = TRUE;
  8. conf->terminated = TRUE;
  9. allow_new_turn(conf);
  10. }
  11. gtk_main_quit();
  12. }
  13. static void create_mainbox(conf_t *conf)
  14. {
  15. GtkWidget *table, *widget;
  16. conf->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  17. gtk_window_set_default_size(GTK_WINDOW(conf->window),
  18. MAP_SIZE + MINI_MAP_SIZE + 10,
  19. MAP_SIZE + 20);
  20. gtk_signal_connect(GTK_OBJECT(conf->window), "destroy",
  21. GTK_SIGNAL_FUNC(byebye), conf);
  22. gtk_window_set_title(GTK_WINDOW(conf->window), "Finale Prologin 2001");
  23. gtk_window_set_policy(GTK_WINDOW(conf->window), FALSE, FALSE, TRUE);
  24. gtk_widget_show(conf->window);
  25. table = gtk_table_new(3, 4, FALSE);
  26. gtk_container_add(GTK_CONTAINER(conf->window), table);
  27. conf->tooltips = gtk_tooltips_new();
  28. conf->status = create_statusbar(conf);
  29. gtk_table_attach_defaults(GTK_TABLE(table), conf->status, 0, 3, 3, 4);
  30. widget = create_menubar(conf);
  31. gtk_table_attach_defaults(GTK_TABLE(table), widget, 0, 3, 0, 1);
  32. widget = create_toolbar(conf);
  33. gtk_table_attach_defaults(GTK_TABLE(table), widget, 2, 3, 1, 3);
  34. widget = create_game_area(conf);
  35. gtk_table_attach_defaults(GTK_TABLE(table), widget, 0, 2, 1, 3);
  36. gtk_widget_show(table);
  37. }
  38. static void create_connect(conf_t *conf)
  39. {
  40. GtkWidget *wid, *table;
  41. table = gtk_table_new(2, 3, FALSE);
  42. gtk_widget_show(table);
  43. gtk_table_attach_defaults(GTK_TABLE(table), create_label("Machine: "),
  44. 0, 1, 0, 1);
  45. wid = create_entry(conf->host, 80);
  46. gtk_signal_connect(GTK_OBJECT(wid), "changed", set_data_from_entry,
  47. &(conf->host));
  48. gtk_signal_connect(GTK_OBJECT(wid), "activate",
  49. GTK_SIGNAL_FUNC(callback_connect), conf);
  50. gtk_tooltips_set_tip(conf->tooltips, wid, "Machine où se trouve le seveur",
  51. "");
  52. gtk_signal_connect(GTK_OBJECT(wid), "activate",
  53. GTK_SIGNAL_FUNC(callback_connect), conf);
  54. gtk_signal_connect_after(GTK_OBJECT(wid), "activate", hide_widget,
  55. conf->conf);
  56. gtk_table_attach_defaults(GTK_TABLE(table), wid, 1, 2, 0, 1);
  57. gtk_table_attach_defaults(GTK_TABLE(table), create_label("Port: "),
  58. 0, 1, 1, 2);
  59. wid = create_spin(1024, 65535, conf->port);
  60. gtk_tooltips_set_tip(conf->tooltips, wid, "Port sur lequel le seveur écoute",
  61. "");
  62. gtk_signal_connect(GTK_OBJECT(wid), "changed", set_data_from_spin,
  63. &(conf->port));
  64. gtk_table_attach_defaults(GTK_TABLE(table), wid, 1, 2, 1, 2);
  65. conf->conf = create_dialog("Connexion à un serveur", table,
  66. " Se connecter ", " Annuler ",
  67. GTK_SIGNAL_FUNC(callback_connect), conf,
  68. hide_widget);
  69. }
  70. void create_gtk_stuff(conf_t *conf)
  71. {
  72. create_mainbox(conf);
  73. create_connect(conf);
  74. create_stats(conf);
  75. gtk_widget_show(conf->window);
  76. }