242 struct player *pgiver, *pother;
243 GtkWidget *
item, *menu;
244 bool any_map =
FALSE;
247 gtk_container_foreach(GTK_CONTAINER(parent),
248 (GtkCallback) gtk_widget_destroy, NULL);
251 pgiver = (
struct player *) g_object_get_data(G_OBJECT(parent),
"plr");
258 menu = gtk_menu_new();
260 item = gtk_menu_item_new_with_mnemonic(
_(
"World-map"));
261 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
262 g_object_set_data(G_OBJECT(
item),
"plr", pgiver);
263 g_signal_connect(
item,
"activate",
270 menu = gtk_menu_new();
273 item = gtk_menu_item_new_with_mnemonic(
_(
"Sea-map"));
274 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
275 g_object_set_data(G_OBJECT(
item),
"plr", pgiver);
276 g_signal_connect(
item,
"activate",
282 item = gtk_menu_item_new_with_mnemonic(
_(
"_Maps"));
283 gtk_menu_item_set_submenu(GTK_MENU_ITEM(
item), menu);
284 gtk_menu_shell_append(GTK_MENU_SHELL(parent),
item);
285 gtk_widget_show_all(
item);
292 GtkWidget *advance_item;
293 GList *sorting_list = NULL;
296 advance_item = gtk_menu_item_new_with_mnemonic(
_(
"_Advances"));
297 gtk_menu_shell_append(GTK_MENU_SHELL(parent), advance_item);
308 == TECH_PREREQS_KNOWN)) {
309 sorting_list = g_list_prepend(sorting_list, padvance);
313 if (NULL == sorting_list) {
315 gtk_widget_set_sensitive(advance_item,
FALSE);
318 const struct advance *padvance;
321 menu = gtk_menu_new();
324 item = gtk_menu_item_new_with_label(
_(
"All advances"));
325 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
326 g_object_set_data(G_OBJECT(
item),
"player_from",
328 g_object_set_data(G_OBJECT(
item),
"player_to",
330 g_signal_connect(
item,
"activate",
333 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
334 gtk_separator_menu_item_new());
336 for (list_item = sorting_list; NULL != list_item;
337 list_item = g_list_next(list_item)) {
338 padvance = (
const struct advance *) list_item->data;
340 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
341 g_object_set_data(G_OBJECT(
item),
"player_from",
343 g_object_set_data(G_OBJECT(
item),
"player_to",
345 g_signal_connect(
item,
"activate",
350 gtk_menu_item_set_submenu(GTK_MENU_ITEM(advance_item), menu);
351 g_list_free(sorting_list);
354 gtk_widget_show_all(advance_item);
368 int n = city_list_size(pgiver->
cities);
370 menu = gtk_menu_new();
373 struct city **city_list_ptrs;
379 city_list_ptrs[i] = pcity;
389 for (j = 0; j < i; j++) {
396 deal->
id = city_list_ptrs[j]->
id;
398 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
399 g_signal_connect(
item,
"activate",
405 free(city_list_ptrs);
408 item = gtk_menu_item_new_with_mnemonic(
_(
"_Cities"));
409 gtk_widget_set_sensitive(
item, (i > 0));
410 gtk_menu_item_set_submenu(GTK_MENU_ITEM(
item), menu);
411 gtk_menu_shell_append(GTK_MENU_SHELL(parent),
item);
412 gtk_widget_show_all(
item);
417 item = gtk_menu_item_new_with_mnemonic(
_(
"_Give shared vision"));
418 g_object_set_data(G_OBJECT(
item),
"plr", pgiver);
419 g_signal_connect(
item,
"activate",
425 gtk_menu_shell_append(GTK_MENU_SHELL(parent),
item);
426 gtk_widget_show(
item);
431 item = gtk_menu_item_new_with_mnemonic(
_(
"Give _embassy"));
432 g_object_set_data(G_OBJECT(
item),
"plr", pgiver);
433 g_signal_connect(
item,
"activate",
440 gtk_menu_shell_append(GTK_MENU_SHELL(parent),
item);
441 gtk_widget_show(
item);
446 enum diplstate_type ds;
447 int pact_clauses = 0;
451 menu = gtk_menu_new();
454 item = gtk_menu_item_new_with_mnemonic(
Q_(
"?diplomatic_state:Cease-fire"));
455 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
456 g_signal_connect(
item,
"activate",
458 gtk_widget_set_sensitive(
item, ds != DS_CEASEFIRE && ds != DS_TEAM);
463 item = gtk_menu_item_new_with_mnemonic(
Q_(
"?diplomatic_state:Peace"));
464 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
465 g_signal_connect(
item,
"activate",
467 gtk_widget_set_sensitive(
item, ds != DS_PEACE && ds != DS_TEAM);
472 item = gtk_menu_item_new_with_mnemonic(
Q_(
"?diplomatic_state:Alliance"));
473 gtk_menu_shell_append(GTK_MENU_SHELL(menu),
item);
474 g_signal_connect(
item,
"activate",
476 gtk_widget_set_sensitive(
item, ds != DS_ALLIANCE && ds != DS_TEAM);
480 if (pact_clauses > 0) {
481 item = gtk_menu_item_new_with_mnemonic(
_(
"_Pacts"));
482 gtk_menu_item_set_submenu(GTK_MENU_ITEM(
item), menu);
483 gtk_menu_shell_append(GTK_MENU_SHELL(parent),
item);
484 gtk_widget_show_all(
item);
486 g_object_unref(menu);
670 GtkWidget *vbox, *hbox, *table, *mainbox;
671 GtkWidget *label, *sw, *
view, *image, *spin;
672 GtkWidget *menubar, *menuitem, *menu, *
notebook;
675 GtkCellRenderer *rend;
690 buf = g_strdup_printf(
_(
"Diplomacy [%d]"), dialog_list_size(
dialog_list));
700 _(
"Accept treaty"), GTK_RESPONSE_ACCEPT);
713 for (i = 0; i < gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)); i++) {
715 = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), i);
717 = g_object_get_data(G_OBJECT(prev_page),
"gui-dialog-data");
718 const char *prev_label
719 = gtk_label_get_text(GTK_LABEL(prev_dialog->
v.
tab.
label));
722 gtk_notebook_reorder_child(GTK_NOTEBOOK(
notebook),
733 vbox = gtk_grid_new();
734 gtk_orientable_set_orientation(GTK_ORIENTABLE(
vbox),
735 GTK_ORIENTATION_VERTICAL);
736 gtk_grid_set_row_spacing(GTK_GRID(
vbox), 5);
737 gtk_container_set_border_width(GTK_CONTAINER(
vbox), 2);
738 gtk_container_add(GTK_CONTAINER(mainbox),
vbox);
741 label = gtk_label_new(NULL);
742 gtk_widget_set_halign(
label, GTK_ALIGN_CENTER);
743 gtk_widget_set_valign(
label, GTK_ALIGN_CENTER);
744 buf = g_strdup_printf(
"<span size=\"large\"><u>%s</u></span>",
746 gtk_label_set_markup(GTK_LABEL(
label), buf);
748 gtk_container_add(GTK_CONTAINER(
vbox),
label);
750 hbox = gtk_grid_new();
751 gtk_grid_set_column_spacing(GTK_GRID(hbox), 5);
752 gtk_container_add(GTK_CONTAINER(
vbox), hbox);
757 image = gtk_image_new_from_surface(flag_spr->
surface);
758 gtk_container_add(GTK_CONTAINER(hbox), image);
761 label = gtk_label_new(NULL);
763 gtk_widget_set_halign(
label, GTK_ALIGN_CENTER);
764 gtk_widget_set_valign(
label, GTK_ALIGN_CENTER);
765 buf = g_strdup_printf(
"<span size=\"large\" weight=\"bold\">%s</span>",
767 gtk_label_set_markup(GTK_LABEL(
label), buf);
769 gtk_container_add(GTK_CONTAINER(hbox),
label);
771 image = gtk_image_new();
773 gtk_container_add(GTK_CONTAINER(hbox), image);
778 menu = gtk_menu_new();
779 pdialog->
menu0 = menu;
781 menuitem = gtk_menu_item_new_with_label(
_(
"Add Clause..."));
782 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
783 gtk_menu_shell_append(GTK_MENU_SHELL(menubar), menuitem);
784 g_object_set_data(G_OBJECT(menu),
"plr", plr0);
785 g_signal_connect(menu,
"show", G_CALLBACK(
popup_add_menu), pdialog);
788 table = gtk_grid_new();
789 gtk_widget_set_halign(table, GTK_ALIGN_CENTER);
790 gtk_widget_set_valign(table, GTK_ALIGN_CENTER);
791 gtk_grid_set_column_spacing(GTK_GRID(table), 16);
792 gtk_container_add(GTK_CONTAINER(
vbox), table);
795 spin = gtk_spin_button_new_with_range(0.0, plr0->
economic.
gold + 0.1,
797 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0);
798 gtk_entry_set_width_chars(GTK_ENTRY(spin), 16);
799 gtk_grid_attach(GTK_GRID(table), spin, 1, 0, 1, 1);
800 g_object_set_data(G_OBJECT(spin),
"plr", plr0);
801 g_signal_connect_after(spin,
"value-changed",
804 label = g_object_new(GTK_TYPE_LABEL,
"use-underline",
TRUE,
805 "mnemonic-widget", spin,
"label",
_(
"Gold:"),
806 "xalign", 0.0,
"yalign", 0.5, NULL);
807 gtk_grid_attach(GTK_GRID(table),
label, 0, 0, 1, 1);
809 gtk_grid_attach(GTK_GRID(table), menubar, 2, 0, 1, 1);
811 gtk_grid_attach(GTK_GRID(table), menubar, 0, 0, 1, 1);
815 vbox = gtk_grid_new();
816 gtk_orientable_set_orientation(GTK_ORIENTABLE(
vbox),
817 GTK_ORIENTATION_VERTICAL);
818 gtk_grid_set_row_spacing(GTK_GRID(
vbox), 5);
819 gtk_container_set_border_width(GTK_CONTAINER(
vbox), 2);
820 gtk_container_add(GTK_CONTAINER(mainbox),
vbox);
823 label = gtk_label_new(NULL);
824 gtk_widget_set_halign(
label, GTK_ALIGN_CENTER);
825 gtk_widget_set_valign(
label, GTK_ALIGN_CENTER);
826 buf = g_strdup_printf(
"<span size=\"large\"><u>%s</u></span>",
828 gtk_label_set_markup(GTK_LABEL(
label), buf);
830 gtk_container_add(GTK_CONTAINER(
vbox),
label);
832 hbox = gtk_grid_new();
833 gtk_grid_set_column_spacing(GTK_GRID(hbox), 5);
834 gtk_container_add(GTK_CONTAINER(
vbox), hbox);
839 image = gtk_image_new_from_surface(flag_spr->
surface);
840 gtk_container_add(GTK_CONTAINER(hbox), image);
843 label = gtk_label_new(NULL);
845 gtk_widget_set_halign(
label, GTK_ALIGN_CENTER);
846 gtk_widget_set_valign(
label, GTK_ALIGN_CENTER);
847 buf = g_strdup_printf(
"<span size=\"large\" weight=\"bold\">%s</span>",
849 gtk_label_set_markup(GTK_LABEL(
label), buf);
851 gtk_container_add(GTK_CONTAINER(hbox),
label);
853 image = gtk_image_new();
855 gtk_container_add(GTK_CONTAINER(hbox), image);
860 menu = gtk_menu_new();
861 pdialog->
menu1 = menu;
863 menuitem = gtk_menu_item_new_with_label(
_(
"Add Clause..."));
864 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
865 gtk_menu_shell_append(GTK_MENU_SHELL(menubar), menuitem);
866 g_object_set_data(G_OBJECT(menu),
"plr", plr1);
867 g_signal_connect(menu,
"show", G_CALLBACK(
popup_add_menu), pdialog);
870 table = gtk_grid_new();
871 gtk_widget_set_halign(table, GTK_ALIGN_CENTER);
872 gtk_widget_set_valign(table, GTK_ALIGN_CENTER);
873 gtk_grid_set_column_spacing(GTK_GRID(table), 16);
874 gtk_container_add(GTK_CONTAINER(
vbox), table);
877 spin = gtk_spin_button_new_with_range(0.0, plr1->
economic.
gold + 0.1,
879 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0);
880 gtk_entry_set_width_chars(GTK_ENTRY(spin), 16);
881 gtk_grid_attach(GTK_GRID(table), spin, 1, 0, 1, 1);
882 g_object_set_data(G_OBJECT(spin),
"plr", plr1);
883 g_signal_connect_after(spin,
"value-changed",
886 label = g_object_new(GTK_TYPE_LABEL,
"use-underline",
TRUE,
887 "mnemonic-widget", spin,
"label",
_(
"Gold:"),
888 "xalign", 0.0,
"yalign", 0.5, NULL);
889 gtk_grid_attach(GTK_GRID(table),
label, 0, 0, 1, 1);
891 gtk_grid_attach(GTK_GRID(table), menubar, 2, 0, 1, 1);
893 gtk_grid_attach(GTK_GRID(table), menubar, 0, 0, 1, 1);
897 mainbox = gtk_grid_new();
898 gtk_orientable_set_orientation(GTK_ORIENTABLE(mainbox),
899 GTK_ORIENTATION_VERTICAL);
900 gtk_container_add(GTK_CONTAINER(pdialog->
dialog->
vbox), mainbox);
902 store = gtk_list_store_new(1, G_TYPE_STRING);
903 pdialog->
store = store;
905 view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
908 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(
view),
FALSE);
909 g_object_unref(store);
910 gtk_widget_set_size_request(
view, 320, 100);
912 rend = gtk_cell_renderer_text_new();
913 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(
view), -1, NULL,
914 rend,
"text", 0, NULL);
916 sw = gtk_scrolled_window_new(NULL, NULL);
917 g_object_set(sw,
"margin", 2, NULL);
918 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
919 GTK_SHADOW_ETCHED_IN);
920 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
921 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
922 gtk_container_add(GTK_CONTAINER(sw),
view);
924 label = g_object_new(GTK_TYPE_LABEL,
925 "use-underline",
TRUE,
926 "mnemonic-widget",
view,
927 "label",
_(
"C_lauses:"),
932 vbox = gtk_grid_new();
933 gtk_orientable_set_orientation(GTK_ORIENTABLE(
vbox),
934 GTK_ORIENTATION_VERTICAL);
935 gtk_container_add(GTK_CONTAINER(mainbox),
vbox);
936 gtk_container_add(GTK_CONTAINER(
vbox),
label);
937 gtk_container_add(GTK_CONTAINER(
vbox), sw);
939 gtk_widget_show_all(mainbox);