menubar.c 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /* $Id: menubar.c,v 1.11 2001/04/20 10:25:10 kilobug Exp $ */
  2. #include "client.h"
  3. static void menu_disp_about(GtkWidget *wi, conf_t *conf)
  4. {
  5. GtkWidget *dialog;
  6. GtkWidget *widget;
  7. GtkAccelGroup *accel_group;
  8. dialog = gtk_dialog_new();
  9. accel_group = gtk_accel_group_new();
  10. gtk_window_add_accel_group(GTK_WINDOW(&(GTK_DIALOG(dialog)->window)),
  11. accel_group);
  12. gtk_container_set_border_width(GTK_CONTAINER(&(GTK_DIALOG(dialog)->window)),
  13. 7);
  14. gtk_window_set_title(GTK_WINDOW(&(GTK_DIALOG(dialog)->window)),
  15. "Finale Prologin 2001");
  16. widget = gtk_label_new("Client GTK+ version "VERSION
  17. "\n\nContact: info@prologin.org");
  18. gtk_widget_show(widget);
  19. gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), widget, TRUE, TRUE, 9);
  20. widget = gtk_button_new_with_label(" OK ");
  21. gtk_widget_add_accelerator(widget, "clicked", accel_group, GDK_Return, 0,
  22. GTK_ACCEL_VISIBLE);
  23. gtk_widget_show(widget);
  24. gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), widget, TRUE,
  25. TRUE, 0);
  26. gtk_signal_connect(GTK_OBJECT(widget), "clicked",
  27. GTK_SIGNAL_FUNC(destroy_widget), dialog);
  28. gtk_widget_show(dialog);
  29. }
  30. static void menu_disp_connect(GtkWidget *wi, conf_t *conf)
  31. {
  32. gtk_widget_show(conf->conf);
  33. }
  34. static void menu_stat(GtkWidget *wi, conf_t *conf)
  35. {
  36. conf->stat.on = !conf->stat.on;
  37. if (conf->stat.on)
  38. gtk_widget_show(conf->stat.stat);
  39. else
  40. gtk_widget_hide(conf->stat.stat);
  41. }
  42. static void menu_ttip(GtkCheckMenuItem *wi, conf_t *conf)
  43. {
  44. if (wi->active)
  45. gtk_tooltips_enable(conf->tooltips);
  46. else
  47. gtk_tooltips_disable(conf->tooltips);
  48. }
  49. static void menu_stop(GtkWidget *wi, conf_t *conf)
  50. {
  51. conf->terminated = TRUE;
  52. allow_new_turn(conf);
  53. }
  54. static GtkItemFactoryEntry gtk_menu_items[] = {
  55. { "/_Système", NULL, NULL, 0, "<Branch>" },
  56. { "/Système/C_onnecter", "<control>O", menu_disp_connect, 0, NULL },
  57. { "/Système/sep1", NULL, NULL, 0, "<Separator>" },
  58. { "/Système/_Quitter", "<control>Q", byebye, 0, NULL },
  59. { "/_Simulation", NULL, NULL, 0, "<Branch>" },
  60. { "/Simulation/_Stats", "<control>S", menu_stat, 5, "<ToggleItem>" },
  61. { "/_Aide", NULL, NULL, 0, "<LastBranch>" },
  62. { "/_Aide/_Bulles d'aide", "<control>B", menu_ttip, 4, "<ToggleItem>" },
  63. { "/_Aide/_A propos", NULL, menu_disp_about, 0, NULL },
  64. };
  65. static GtkItemFactoryEntry gtk_menu_items_debug[] = {
  66. { "/_Système", NULL, NULL, 0, "<Branch>" },
  67. { "/Système/C_onnecter", "<control>O", menu_disp_connect, 0, NULL },
  68. { "/Système/sep1", NULL, NULL, 0, "<Separator>" },
  69. { "/Système/_Quitter", "<control>Q", byebye, 0, NULL },
  70. { "/_Simulation", NULL, NULL, 0, "<Branch>" },
  71. { "/Simulation/_Pause", "<control>P", tb_pause, 0, NULL },
  72. { "/Simulation/_Tour suivant", "<control>T", tb_play, 0, NULL },
  73. { "/Simulation/_N tours", "<control>N", tb_step, 0, NULL },
  74. { "/Simulation/_Continuer", "<control>C", tb_ffwd, 0, NULL },
  75. { "/Simulation/Arreter", "<control>A", menu_stop, 0, NULL },
  76. { "/Simulation/sep1", NULL, NULL, 0, "<Separator>" },
  77. { "/Simulation/_Stats", "<control>S", menu_stat, 5, "<ToggleItem>" },
  78. { "/_Aide", NULL, NULL, 0, "<LastBranch>" },
  79. { "/_Aide/_Bulles d'aide", "<control>B", menu_ttip, 4, "<ToggleItem>" },
  80. { "/_Aide/_A propos", NULL, menu_disp_about, 0, NULL },
  81. };
  82. GtkWidget *create_menubar(conf_t *conf)
  83. {
  84. GtkItemFactory *item_factory = NULL;
  85. GtkAccelGroup *accel_group = NULL;
  86. GtkWidget *widget = NULL, *ttip = NULL;
  87. GtkItemFactoryEntry *menu_items;
  88. int nmenu_items;
  89. if (conf->debug)
  90. {
  91. menu_items = gtk_menu_items_debug;
  92. nmenu_items = sizeof (gtk_menu_items_debug) / sizeof (menu_items[0]);
  93. }
  94. else
  95. {
  96. menu_items = gtk_menu_items;
  97. nmenu_items = sizeof (gtk_menu_items) / sizeof (menu_items[0]);
  98. }
  99. accel_group = gtk_accel_group_new();
  100. item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>",
  101. accel_group);
  102. gtk_item_factory_create_items_ac(item_factory, nmenu_items, menu_items,
  103. conf, 2);
  104. gtk_window_add_accel_group(GTK_WINDOW(conf->window), accel_group);
  105. widget = gtk_item_factory_get_widget(item_factory, "<main>");
  106. conf->stat.menu = gtk_item_factory_get_widget_by_action(item_factory, 5);
  107. ttip = gtk_item_factory_get_widget_by_action(item_factory, 4);
  108. gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ttip), TRUE);
  109. gtk_widget_show(widget);
  110. return widget;
  111. }