LINUX.ORG.RU

gtk как установить названия для меню?


0

0

Создал интерфейс с меню с помощью glade2.

В interface.c получился следующий код:

...
  menubar = gtk_menu_bar_new ();
  gtk_widget_show (menubar);
  gtk_box_pack_start (GTK_BOX (vbox1), menubar, FALSE, FALSE, 0);

  languageinfo = gtk_image_menu_item_new_with_mnemonic (_("languageinfo"));
  gtk_widget_show (languageinfo);
  gtk_container_add (GTK_CONTAINER (menubar), languageinfo);

  image14 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image14);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (languageinfo), image14);

  settingscommand = gtk_image_menu_item_new_with_mnemonic (_("settingscommand"));
  gtk_widget_show (settingscommand);
  gtk_container_add (GTK_CONTAINER (menubar), settingscommand);

  image15 = gtk_image_new_from_stock ("gtk-properties", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image15);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (settingscommand), image15);
...

Но не понятно как именить названия для languageinfo и settingscommand?
anonymous

Не используй glade, делай приложение с помощью libglade и xml файла. На худой конец есть glade3 и gazpacho

_("something") это вызов локализации с помощью gettext. Где то должен быть определён макрос:

#define _(x) dgettext(YOUR_PROJECT,x)

Соответственно переводы делаются в po файлах в зависимости от локали, которая установлена вызовом textdomain и bindtextdomain. Больше про gettext можно прочитать здесь:

http://www.gnu.org/software/gettext/gettext.html

anonymous
()
Ответ на: комментарий от anonymous

Не... ты не понял... мне не нужен перевод мне нужно установить другое имя для пункта меню... тоесть чтоб пользователь видел пунк меню не с именем "languageinfo" а каким нибудь "Language Info".. с помощью какой ф-ции мне это сделать?

anonymous
()
Ответ на: комментарий от welkam

Блин ну чтож никто не может вчитаться в то что я написал...

> Это в glade в параметрах объекта (в данном случае метки) задаётся

Да я создал меню в глейде! А как мне теперь изенить метки для каждого пункта меню в уже _работающей_ программе?

anonymous
()
Ответ на: комментарий от anonymous

Элемент меню GtkMenuItem структура или GTK_MENU_ITEM для приведения типа. Он имеет тип GtkBin и соответственно в него упакован GtkLabel

GtkWidget *menu_item = lookup_widget(pwindow,"settingscommand"); GtkWidget *label = gtk_bin_get_child (GTK_BIN(menu_item)); gtk_label_let_text (GTK_LABEL (label), path);

anonymous
()
Ответ на: комментарий от anonymous

Спасибо большое! Получилось!

GTK - рулез

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.