123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- /* $Id: gtk_main.c,v 1.14 2001/05/07 02:41:36 kilobug Exp $ */
- #include "mclient.h"
- static void switch_page(GtkNotebook *notebook, GtkNotebookPage *foo,
- int page, void *data)
- {
- if (gl_config->menunb[page] == NULL)
- return;
- gtk_signal_handler_block_by_func(GTK_OBJECT(notebook),
- GTK_SIGNAL_FUNC(switch_page), data);
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gl_config->menunb[page]),
- TRUE);
- gtk_signal_handler_unblock_by_func(GTK_OBJECT(notebook),
- GTK_SIGNAL_FUNC(switch_page), data);
- }
- static void create_page(GtkWidget *noteb, GtkWidget *inside, const char *label,
- int nb, ...)
- {
- GtkWidget *hbox, *vbox, *but, *lab, *scroll;
- va_list va;
- int i;
-
- va_start(va, nb);
- hbox = gtk_hbox_new(TRUE, 5);
- for (i = 0; i < nb; i++)
- {
- but = gtk_button_new_with_label(va_arg(va, const char *));
- gtk_widget_show(but);
- gtk_tooltips_set_tip(gl_config->tooltips, but,
- va_arg(va, const char *), "");
- gtk_signal_connect(GTK_OBJECT(but), "clicked",
- va_arg(va, GtkSignalFunc), NULL);
- gtk_box_pack_start(GTK_BOX(hbox), but, TRUE, FALSE, 5);
- }
- gtk_widget_show(hbox);
- vbox = gtk_vbox_new(FALSE, 0);
- scroll = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(scroll);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_box_pack_start(GTK_BOX(vbox), scroll, TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
- gtk_container_add(GTK_CONTAINER(scroll), inside);
- gtk_widget_show(vbox);
- lab = create_label(label);
- gtk_notebook_append_page_menu(GTK_NOTEBOOK(noteb), vbox,
- lab, create_label(label));
- }
- static GtkWidget *create_main_area()
- {
- GtkWidget *widget;
- widget = gtk_notebook_new();
- gl_config->notebook = GTK_NOTEBOOK(widget);
- gtk_notebook_popup_enable(gl_config->notebook);
- gtk_notebook_set_homogeneous_tabs(gl_config->notebook, TRUE);
- gtk_widget_show(widget);
- gtk_signal_connect(GTK_OBJECT(widget), "switch-page", switch_page, NULL);
- gl_config->bmpl = create_clist(7, 0,
- "Login", "Nom", "Prénom", "Pseudo",
- "Machine", "Statut", "Type",
- 50, 110, 110, 90, 60, 60, 60,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING);
- gtk_clist_set_compare_func(GTK_CLIST(gl_config->bmpl), bmp_sort);
- clist_set_tooltips(GTK_CLIST(gl_config->bmpl), gl_config->tooltips,
- "Trier par login", "Trier par nom", "Trier par prénom",
- "Trier par pseudo", "Trier par machine",
- "Trier par satut", "Séparer les orgas des bitmaps", NULL);
-
- create_page(widget, gl_config->bmpl, "Personnes", 2,
- " Actualiser ", "Réactualiser la liste", bmp_refresh,
- " Ecrire ", "Envoyer un message", bmp_send_message);
- gtk_clist_set_selection_mode(GTK_CLIST(gl_config->bmpl),
- GTK_SELECTION_EXTENDED);
- gl_config->mapl = create_clist(5, 0,
- "Nom", "Description", "Joueurs",
- "Auteur", "Taille",
- 80, 150, 50, 50, 50,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING);
- create_page(widget, gl_config->mapl, "Cartes", 4,
- " Actualiser ", "Réactualiser la liste", map_refresh,
- " Ajouter ", "Ajouter une carte perso", map_add,
- " Modifier ", "Modifier une carte", map_edit,
- " Supprimer ", "Supprimer la carte sélectionnée", map_remove);
- gtk_clist_set_compare_func(GTK_CLIST(gl_config->mapl), map_sort);
- clist_set_tooltips(GTK_CLIST(gl_config->mapl), gl_config->tooltips,
- "Trier par nom", "Trier par description",
- "Trier par nombre de joueurs",
- "Trier par auteur", "Trier par taille", NULL);
- gl_config->mapa =
- mysql_adder_make("Maps", "Ajout d'une carte", map_refresh, 6,
- "Nom: ", "nom", "Nom de la carte", sql_add_str, 80,
- "Description: ", "descr", "Description de la carte",
- sql_add_str, 120,
- "Nombre de joueurs: ", "joueurs",
- "Nombre de joueurs maximum", sql_add_num, 1, 42, 4,
- "Taille: ", "taille",
- "Taille de la carte (ex: 100x100)", sql_add_str, 40,
- "Publique: ", "public",
- "Cette carte est-elle visible par les autres?",
- sql_add_flag, TRUE,
- "Fichier: ", "fichier", "Nom du fichier carte",
- sql_add_file, "./maps");
- gl_config->prgl = create_clist(5, 0,
- "Nom", "Auteur", "Meilleur score",
- "Score moyen", "Tournois",
- 80, 120, 80, 70, 30,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_DESCENDING,
- GTK_SORT_DESCENDING,
- GTK_SORT_DESCENDING);
- create_page(widget, gl_config->prgl, "Champions", 4,
- " Actualiser ", "Réactualiser la liste", prg_refresh,
- " Ajouter ", "Ajouter un champion", prg_add,
- " Modifier ", "Modifier un champion", prg_edit,
- " Supprimer ", "Supprimer les champions sélectionnés",
- prg_remove);
- clist_set_tooltips(GTK_CLIST(gl_config->prgl), gl_config->tooltips,
- "Trier par nom", "Trier par auteur",
- "Trier par meilleur score", "Trier par sore moyen",
- "", NULL);
- gtk_clist_set_selection_mode(GTK_CLIST(gl_config->prgl),
- GTK_SELECTION_EXTENDED);
- gtk_clist_set_compare_func(GTK_CLIST(gl_config->prgl), prg_sort);
- gl_config->prga =
- mysql_adder_make("Champions", "Ajout d'un chamion", prg_refresh, 4,
- "Nom: ", "nom", "Nom du champion", sql_add_str, 80,
- "Publique: ", "public",
- "Les autres candidats peuvent-ils tester "
- "leur champion contre le tien?", sql_add_flag, TRUE,
- "Tournois: ", "tourn",
- "Inclure dans les tournois ? ", sql_add_flag, FALSE,
- "Fichier: ", "fichier",
- "Fichier .so contenant le champion.", sql_add_file,
- "./code");
-
- gl_config->matl = create_clist(4, 0,
- "Machine", "Bitmap", "Map", "Joueurs",
- 70, 120, 80, 80,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING,
- GTK_SORT_ASCENDING);
- create_page(widget, gl_config->matl, "Matchs en cours", 2,
- " Actualiser ", "Réactualiser la liste", mat_refresh,
- " Se connecter ",
- "Lancer un client graphique sur les matchs sélectionnés",
- mat_connect);
- clist_set_tooltips(GTK_CLIST(gl_config->prgl), gl_config->tooltips,
- "Trier par machine",
- "Trier par bitmap (ayant lancé la partie)",
- "Trier par carte", "Trier par nombre de joueurs",
- NULL);
- gtk_clist_set_compare_func(GTK_CLIST(gl_config->matl), mat_sort);
- gtk_clist_set_selection_mode(GTK_CLIST(gl_config->matl),
- GTK_SELECTION_EXTENDED);
- return widget;
- }
- void create_gtk_stuff()
- {
- GtkWidget *vbox;
- gl_config->tooltips = gtk_tooltips_new();
- gl_config->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_signal_connect(GTK_OBJECT(gl_config->window), "delete-event",
- GTK_SIGNAL_FUNC(byebye), NULL);
- gtk_window_set_title(GTK_WINDOW(gl_config->window),
- "Meta-client Prologin 2001");
- gtk_window_set_default_size(GTK_WINDOW(gl_config->window), 650, 250);
- gtk_widget_show(gl_config->window);
- vbox = gtk_vbox_new(FALSE, 4);
- gtk_container_add(GTK_CONTAINER(gl_config->window), vbox);
- gtk_box_pack_start(GTK_BOX(vbox), create_menubar(), FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), create_main_area(), TRUE, TRUE, 0);
-
- prg_refresh(NULL, NULL);
- bmp_refresh(NULL, NULL);
- map_refresh(NULL, NULL);
- mat_refresh(NULL, NULL);
- gtk_widget_show(vbox);
- }
|