static void cs_build_menu(GOCharmapSel *cs) { GtkWidget *item; GtkMenu *menu; LGroupInfo const *lgroup = lgroups; gint lg_cnt = 0; menu = GTK_MENU(gtk_menu_new()); while (lgroup->group_name) { CharsetInfo const *charset_trans; GtkMenu *submenu = NULL; charset_trans = charset_trans_array; while (charset_trans->lgroup != LG_LAST) { GtkWidget *subitem; if (charset_trans->lgroup == lgroup->lgroup) { const char *name = (cs->test == GO_CHARMAP_SEL_TO_UTF8) ? charset_trans->to_utf8_iconv_name : charset_trans->from_utf8_iconv_name; if (name) { if (!submenu) submenu = GTK_MENU(gtk_menu_new()); subitem = gtk_check_menu_item_new_with_label( _(charset_trans->charset_title)); gtk_check_menu_item_set_draw_as_radio( GTK_CHECK_MENU_ITEM(subitem), TRUE); gtk_widget_show(subitem); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), subitem); if (charset_trans->imp == CI_MAJOR) cs_emphasize_label( GTK_LABEL(gtk_bin_get_child(GTK_BIN(subitem)))); g_object_set_data(G_OBJECT(subitem), CHARMAP_NAME_KEY, (gpointer) name); } else if (0) { g_print("Unsupported: %s\n", charset_trans->aliases); } } charset_trans++; } if (submenu) { GtkWidget *item = gtk_menu_item_new_with_label( _(lgroup->group_name)); gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), GTK_WIDGET(submenu)); gtk_widget_show(item); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); lg_cnt++; } lgroup++; } item = gtk_separator_menu_item_new(); gtk_widget_show(item); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); lg_cnt++; { char *locale_encoding_menu_title = g_strconcat(_("Locale: "), get_locale_encoding_name(cs), NULL); item = gtk_check_menu_item_new_with_label(locale_encoding_menu_title); gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), TRUE); g_free(locale_encoding_menu_title); gtk_widget_show(item); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); lg_cnt++; cs_emphasize_label(GTK_LABEL(gtk_bin_get_child(GTK_BIN(item)))); } go_option_menu_set_menu(cs->encodings, GTK_WIDGET(menu)); cs->encodings_menu = menu; set_menu_to_default(cs, lg_cnt); }
static void ls_build_menu (GOLocaleSel *ls) { GtkWidget *item; GtkMenu *menu; LGroupInfo const *lgroup = lgroups; gint lg_cnt = 0; menu = GTK_MENU (gtk_menu_new ()); while (lgroup->group_name) { LocaleInfo const *locale_trans; GtkMenu *submenu = NULL; locale_trans = locale_trans_array; while (locale_trans->lgroup != LG_LAST) { if (locale_trans->lgroup == lgroup->lgroup && locale_trans->available) { GtkWidget *subitem= gtk_check_menu_item_new_with_label (_(locale_trans->locale_title)); if (!submenu) submenu = GTK_MENU (gtk_menu_new ()); gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (subitem), TRUE); gtk_widget_show (subitem); gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem); g_object_set_data (G_OBJECT (subitem), LOCALE_NAME_KEY, (locale_trans->actual_locale)); } locale_trans++; } if (submenu) { GtkWidget *item = gtk_menu_item_new_with_label (_(lgroup->group_name)); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), GTK_WIDGET (submenu)); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); lg_cnt++; } lgroup++; } item = gtk_separator_menu_item_new (); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); lg_cnt++; { char *locale_name = get_locale_name (ls); char *locale_menu_title = g_strconcat (_("Current Locale: "), locale_name, NULL); g_free (locale_name); item = gtk_check_menu_item_new_with_label (locale_menu_title); gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE); g_free (locale_menu_title); gtk_widget_show (item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); lg_cnt++; } go_option_menu_set_menu (ls->locales, GTK_WIDGET (menu)); ls->locales_menu = menu; set_menu_to_default (ls, lg_cnt); }