Добрый вечер (день/утро) всем!
Я пишу одну небольшую программу на GTK+. На панель инструментов (GtkToolbar) надо вставить кнопку с всплывающим (popup) меню, но не такую, какую предлагают сделать с помощью gtk_menu_tool_button_new(), a особенную = кнопка должна быть монолитной, т.е. состоять не из 2х частей (кнопка+стрелка), а из одной (кнопка).
При нажатии на неё должно появляться popup-menu.
Примеры таких я видел в Tomboy (при создании новой заметки), и в Pidgin (окно чата)
Просмотр исходников Томбоя мне не помог - он на C#, исходники Pidgin'а качать по моему gprs каналу проблематично(
Кто знает как такие делать, напишите пожалуйста сюда или в личку))
P.S. GTK+ 2, язык C
Кнопки с всплывающим меню (как их реализовать в GTK+?)
Модератор: Модераторы разделов
-
Amnesiac1989
- Сообщения: 26
- ОС: Debian Etch, Fedora 8
Кнопки с всплывающим меню
"I'm not afraid of being taken by computers though... because they're totally defenseless.
All we need is more people with hammers." - Thom Yorke
All we need is more people with hammers." - Thom Yorke
-
halturin
- Сообщения: 167
- ОС: Linux
Re: Кнопки с всплывающим меню
Amnesiac1989 писал(а): ↑04.02.2008 18:50Добрый вечер (день/утро) всем!
Я пишу одну небольшую программу на GTK+. На панель инструментов (GtkToolbar) надо вставить кнопку с всплывающим (popup) меню, но не такую, какую предлагают сделать с помощью gtk_menu_tool_button_new(), a особенную = кнопка должна быть монолитной, т.е. состоять не из 2х частей (кнопка+стрелка), а из одной (кнопка).
При нажатии на неё должно появляться popup-menu.
Примеры таких я видел в Tomboy (при создании новой заметки), и в Pidgin (окно чата)
Просмотр исходников Томбоя мне не помог - он на C#, исходники Pidgin'а качать по моему gprs каналу проблематично(
Кто знает как такие делать, напишите пожалуйста сюда или в личку))
P.S. GTK+ 2, язык C
сделай пару шотов,что за виджеты такие, а то чет я не особо представляю, что именно ты описал.
в принципе можешь сделать обычную кнопку и к ней привязать сигнал, в котором будешь показывать предварительно созданное меню. оно?
-
Amnesiac1989
- Сообщения: 26
- ОС: Debian Etch, Fedora 8
Re: Кнопки с всплывающим меню
Скриншот в аттаче
Делали)) но получалось довольно "топорно" - при нажатии на кнопку меню выскакивало, но кнопка визуально оставалась "не нажатой"
Код был такой (он частично заимствован из Sylpheed):
Хочется сделать по-правильному
можешь сделать обычную кнопку и к ней привязать сигнал, в котором будешь показывать предварительно созданное меню
Делали)) но получалось довольно "топорно" - при нажатии на кнопку меню выскакивало, но кнопка визуально оставалась "не нажатой"
Код был такой (он частично заимствован из Sylpheed):
Код: Выделить всё
...
GtkWidget *MainMenuBtn = gtk_button_new();
g_signal_connect (G_OBJECT(MainMenuBtn), "button-press-event",
G_CALLBACK (mainmenu_button_pressed), NULL);
...
// слот
static void mainmenu_button_pressed(GtkWidget *widget, GdkEventButton *event,
gpointer data)
{
if (!event) return;
GtkWidget *menu = gtk_menu_new();
GtkWidget *item = gtk_menu_item_new_with_label("About");
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
gtk_widget_show(item);
g_object_set_data(G_OBJECT(menu), "menu_button", widget);
gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
menu_button_position, widget,
event->button, event->time);
}Хочется сделать по-правильному
У вас нет необходимых прав для просмотра вложений в этом сообщении.
"I'm not afraid of being taken by computers though... because they're totally defenseless.
All we need is more people with hammers." - Thom Yorke
All we need is more people with hammers." - Thom Yorke