LINUX.ORG.RU

Gtk: UIManager: как правильно задать кнопку с меню


0

0

В общем, нужно сделать панель, на которой одна из кнопок с меню. Сделать надо с помощью UIManager.

Описываю её так:
<toolbar name="Tb">
   <toolitem name="Item" action="Act1">
      <menu name="Menu" action="Act1">
         ....
      </menu>
   </toolitem>
</toolbar>

На это при создании панели gtk ругается:
Gtk-CRITICAL **: gtk_menu_tool_button_set_menu: assertion `GTK_IS_MENU_TOOL_BUTTON (button)' failed

В документации вроде написано, что "Note that toolitem elements may contain a menu element, but only if their associated action specifies a GtkMenuToolButton as proxy."
Собственно в чём вопрос: можно ли как-то сделать, чтобы GTK сам создал в качестве кнопки на панели GtkMenuToolButton (насколько я понял, проблема в том что он создаёт GtkToolButton, к которой нельзя прикрепить меню)? Или это только вручную можно сделать?
★★

Че-то непонятна задача немного. Что значит, кнопка из меню на панели? Тот же рисунок и то же действие? Тогда можно просто связать их с одним и тем же action, они будут выглядеть одинаково.

Или нужно полноценное меню, выпадающее например?

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

А, рюхнул

Нужно создать дочерний класс GtkAction который при создании toolbar proxy будет делать GtkMenuToolButton.

Потом его нужно добавить в action_group, после этого указать этот action для нужной кнопки панели. Тогда UI Manager ее подцепит.

Странно, что MenuToolButton есть а Action для него еще нет. Видимо не написали пока.

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

За пример спасибо - сам туда заглянуть не догадался. Но возник другой вопрос: при создании action для соответствующей кнопки они используют функцию tool_menu_action_get_type, которую я чего-то нигде не нашёл (ни в документации по gtk, ни в исходниках gtk). Это откуда она такая?

ЗЫ непосредственно я использую gtkmm если что...

slav ★★
() автор топика
Ответ на: комментарий от slav

Вопросы по gtkmm нужно в их списке рассылки - народ там дружелюбный, помогут.

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