| |
GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Child Properties | Style Properties | Signals |
GtkMenuGtkMenu Виджет меню |
#include <gtk/gtk.h>
GtkMenu;
GtkWidget* gtk_menu_new (void);
void gtk_menu_set_screen (GtkMenu *menu,
GdkScreen *screen);
#define gtk_menu_append (menu,child)
#define gtk_menu_prepend (menu,child)
#define gtk_menu_insert (menu,child,pos)
void gtk_menu_reorder_child (GtkMenu *menu,
GtkWidget *child,
gint position);
void gtk_menu_attach (GtkMenu *menu,
GtkWidget *child,
guint left_attach,
guint right_attach,
guint top_attach,
guint bottom_attach);
void gtk_menu_popup (GtkMenu *menu,
GtkWidget *parent_menu_shell,
GtkWidget *parent_menu_item,
GtkMenuPositionFunc func,
gpointer data,
guint button,
guint32 activate_time);
void gtk_menu_set_accel_group (GtkMenu *menu,
GtkAccelGroup *accel_group);
GtkAccelGroup* gtk_menu_get_accel_group (GtkMenu *menu);
void gtk_menu_set_accel_path (GtkMenu *menu,
const gchar *accel_path);
void gtk_menu_set_title (GtkMenu *menu,
const gchar *title);
gboolean gtk_menu_get_tearoff_state (GtkMenu *menu);
const gchar* gtk_menu_get_title (GtkMenu *menu);
void gtk_menu_popdown (GtkMenu *menu);
void gtk_menu_reposition (GtkMenu *menu);
GtkWidget* gtk_menu_get_active (GtkMenu *menu);
void gtk_menu_set_active (GtkMenu *menu,
guint index_);
void gtk_menu_set_tearoff_state (GtkMenu *menu,
gboolean torn_off);
void gtk_menu_attach_to_widget (GtkMenu *menu,
GtkWidget *attach_widget,
GtkMenuDetachFunc detacher);
void gtk_menu_detach (GtkMenu *menu);
GtkWidget* gtk_menu_get_attach_widget (GtkMenu *menu);
GList* gtk_menu_get_for_attach_widget (GtkWidget *widget);
void (*GtkMenuPositionFunc) (GtkMenu *menu,
gint *x,
gint *y,
gboolean *push_in,
gpointer user_data);
void (*GtkMenuDetachFunc) (GtkWidget *attach_widget,
GtkMenu *menu);
void gtk_menu_set_monitor (GtkMenu *menu,
gint monitor_num);
GObject +----GInitiallyUnowned +----GtkObject +----GtkWidget +----GtkContainer +----GtkMenuShell +----GtkMenu
GtkMenu осуществляет AtkImplementorIface.
"tearoff-state" gboolean : Read / Write "tearoff-title" gchararray : Read / Write
"bottom-attach" gint : Read / Write "left-attach" gint : Read / Write "right-attach" gint : Read / Write "top-attach" gint : Read / Write
"horizontal-offset" gint : Read "vertical-offset" gint : Read "vertical-padding" gint : Read
"move-scroll" void user_function (GtkMenu *menu, GtkScrollType arg1, gpointer user_data) : Run last / Action
GtkMenu это GtkMenuShell который обеспечивает выпадающее меню содержащее список объектов GtkMenuItem которые может выбирать для активации пользователь выполняя таким образом функции приложения.
GtkMenu в основном выпадает при активации GtkMenuItem в GtkMenuBar или появляется при активации GtkMenuItem в других GtkMenu.
GtkMenu может также появляться при активации GtkOptionMenu. В других сложных виджетах таких как GtkNotebook тоже может вызываться GtkMenu.
Приложения могут отображать GtkMenu как всплывающее меню вызываемое функцией gtk_menu_popup(). Пример ниже показывает как приложение может вызывать всплывающее меню когда нажата 3rd кнопка мыши.
Пример 1. Подключение обработчика сигнала появления меню.
/* подключаем наш обработчик сигнала который вызывает меню */ g_signal_connect_swapped (window, "button_press_event", G_CALLBACK (my_popup_handler), menu);
Пример 2. Обработчик сигнала который отображает всплывающее меню.
static gint my_popup_handler (GtkWidget *widget, GdkEvent *event) { GtkMenu *menu; GdkEventButton *event_button; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_MENU (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); /* "widget" это меню которое появляется когда * вызывается g_signal_connect_swapped(). */ menu = GTK_MENU (widget); if (event->type == GDK_BUTTON_PRESS) { event_button = (GdkEventButton *) event; if (event_button->button == 3) { gtk_menu_popup (menu, NULL, NULL, NULL, NULL, event_button->button, event_button->time); return TRUE; } } return FALSE; }
typedef struct _GtkMenu GtkMenu;
Структура GtkMenu содержит только закрытые данные доступ к которым осуществляется функциями приведенными ниже.
GtkWidget* gtk_menu_new (void);
Создаёт новый GtkMenu.
Возвращает : |
новый GtkMenu. |
void gtk_menu_set_screen (GtkMenu *menu, GdkScreen *screen);
Устанавливает GdkScreen на котором будет отображено меню.
menu : |
|
screen : |
GdkScreen, или NULL если дисплей к которому прикрепляется меню не определён. |
Начиная с версии 2.2
#define gtk_menu_append(menu,child) gtk_menu_shell_append ((GtkMenuShell *)(menu),(child))
gtk_menu_append устарела и не должна использоваться во вновь создаваемом коде.
Добавляет новый GtkMenuItem в конец списка пунктов меню.
menu : |
|
child : |
добавляемый GtkMenuItem. |
#define gtk_menu_prepend(menu,child) gtk_menu_shell_prepend ((GtkMenuShell *)(menu),(child))
gtk_menu_prepend устарела и не должна использоваться во вновь создаваемом коде.
Добавляет новый GtkMenuItem в начало списка пунктов меню.
menu : |
|
child : |
добавляемый GtkMenuItem. |
#define gtk_menu_insert(menu,child,pos) gtk_menu_shell_insert ((GtkMenuShell *)(menu),(child),(pos))
gtk_menu_insert устарела и не должна использоваться во вновь создаваемом коде.
Добавляет новый GtkMenuItem к списку пунктов меню в позицию указанную в position.
menu : |
|
child : |
добавляемый GtkMenuItem. |
pos : |
Позиция в которую добавляется child. Позиция нумеруется от 0 до n-1. |
void gtk_menu_reorder_child (GtkMenu *menu, GtkWidget *child, gint position);
Перемещает GtkMenuItem в новую позицию внутри GtkMenu.
menu : |
|
child : |
перемещаемый GtkMenuItem. |
position : |
Новая позиция для размещения child. Позиции нумеруются от 0 до n-1. |
void gtk_menu_attach (GtkMenu *menu, GtkWidget *child, guint left_attach, guint right_attach, guint top_attach, guint bottom_attach);
Добавляет новый GtkMenuItem к (таблице) меню. Номер 'ячейки' этого пункта определяется с помощью left_attach, right_attach, top_attach и bottom_attach. Каждый из которых представляет номер начиная от крайнего с лева, крайнего с право столбца, а так же номер сверху и снизу строки в таблице. (Строки и столбцы нумеруются с нуля).
Помните эта функция не освобождается с помощью gtk_menu_detach().
menu : |
|
child : |
|
left_attach : |
Номер столбца к которому прикрепляется пункт меню с лева. |
right_attach : |
Номер столбца к которому прикрепляется пункт меню с право. |
top_attach : |
Номер строки к которой прикрепляется пункт меню сверху. |
bottom_attach : |
Номер строки к которой прикрепляется пункт меню снизу. |
Начиная с версии 2.4
void gtk_menu_popup (GtkMenu *menu, GtkWidget *parent_menu_shell, GtkWidget *parent_menu_item, GtkMenuPositionFunc func, gpointer data, guint button, guint32 activate_time);
Отображает меню и делает его доступным для выбора. Приложения могут использовать эту функцию для отображения контекст-чувствительных меню и обычно заменяют NULL параметры parent_menu_shell, parent_menu_item, func и data. По умолчанию функция расположит меню в текущемй позиции курсора мыши.
Параметр button должен определять кнопку мышки которая вызывает меню при нажатии. Если меню появляется не по нажатию кнопки мыши а каким либо другим способом, например отпуск кнопки мыши или нажатие клавиши клавиатуры, то button должен быть равен 0.
Параметр activate_time должен содержать временную метку события которое вызывает меню. Если такое событие не доступно, используйте gtk_get_current_event_time() вместо него.
menu : |
|
parent_menu_shell : |
Оболочка меню содержащая переключаемые пункты меню, или NULL |
parent_menu_item : |
Пункты меню которые активизируются переключением при появлении, или NULL |
func : |
Функция определяемая пользователем для позиции меню, или NULL |
data : |
Данные определяемые пользователем для размещения в func. |
button : |
Кнопка мыши которая нажимается для инициализации события. |
activate_time : |
Время в которое активизируется происходящее событие. |
void gtk_menu_set_accel_group (GtkMenu *menu, GtkAccelGroup *accel_group);
Устанавливает GtkAccelGroup который содержит глобальные ускорители меню. Эта группа акселераторов также должна быть добавлена ко всем окнам этого меню с помощью gtk_window_add_accel_group(), в порядке этих окон для поддержки всех акселераторов содержащихся в этой группе.
menu : |
|
accel_group : |
GtkAccelGroup ассоциируемый с меню. |
GtkAccelGroup* gtk_menu_get_accel_group (GtkMenu *menu);
Получает GtkAccelGroup который содержит глобальные акселераторы для меню. Смотрите gtk_menu_set_accel_group().
menu : |
|
Возвращает : |
GtkAccelGroup ассоциируемый с меню. |
void gtk_menu_set_accel_path (GtkMenu *menu, const gchar *accel_path);
Устанавливает путь акселератора для этого меню из непосредственно дочернего пути акселератора, этот пункт меню может быть создан. Главная цель этой функции избавить программиста от излишних вызовов gtk_menu_item_set_accel_path() на каждом пункте меню который должен поддерживать пользовательские изменяемые акселераторы во время выполнения. Вместо этого, просто вызывается gtk_menu_set_accel_path() на их родителе, каждый пункт меню этого мню, который содержит ярлык описывающий его цель, автоматически получает путь акселератора. Например, меню содержит пункты меню "New" и "Exit", после gtk_menu_set_accel_path (menu, "<Gnumeric-Sheet>/File"); вызывается, назначение его пунктам пути акселераторов: "<Gnumeric-Sheet>/File/New" и "<Gnumeric-Sheet>/File/Exit". Назначенные пути акселератора для пунктов меню позволяют пользователю изменить эти акселераторы во время выполнения. Подробности об акселераторах и установках по умолчанию можно найти в gtk_accel_map_add_entry().
menu : |
существующий GtkMenu |
accel_path : |
Существующий путь акселератора |
void gtk_menu_set_title (GtkMenu *menu, const gchar *title);
Устанавливает заголовок строки для меню. Заголовок отображается когда меню показано как отдельное окно.
menu : |
|
title : |
Строка содержащая заголовок меню. |
gboolean gtk_menu_get_tearoff_state (GtkMenu *menu);
Возвращает отключено ли меню. Смотрите gtk_menu_set_tearoff_state().
menu : |
|
Возвращает : |
TRUE если меню в данный момент выключено. |
const gchar* gtk_menu_get_title (GtkMenu *menu);
Возвращает заголовок меню. Смотрите gtk_menu_set_title().
menu : |
|
Возвращает : |
Заголовок меню, или NULL если заголовок не был установлен. Строкой владеет виджет и она не должна освобождаться или изменяться. |
void gtk_menu_popdown (GtkMenu *menu);
Удаляет меню с экрана.
menu : |
void gtk_menu_reposition (GtkMenu *menu);
Повторно размещает меню согласно позиции этой функции.
menu : |
GtkWidget* gtk_menu_get_active (GtkMenu *menu);
Возвращает выбранный пункт меню. Это используется GtkOptionMenu.
menu : |
|
Возвращает : |
GtkMenuItem который выбран в меню. Если выбор не был сделан, выделяется первый пункт меню. |
void gtk_menu_set_active (GtkMenu *menu, guint index_);
Выделяет определённый пункт в меню. Это используется GtkOptionMenu и не должно больше никем использоваться.
menu : |
|
index_ : |
Номер выбранного пункта меню. Значение номера находится между 0 и n-1. |
void gtk_menu_set_tearoff_state (GtkMenu *menu, gboolean torn_off);
Изменяет отделяемое состояние меню. Меню обычно отображается как выпадающее окно с пунктами которое видимо пока остаётся активным. Оно так же может быть отображено как отдельное окно пока не будет закрыто или переприкреплено.
menu : |
|
torn_off : |
Если TRUE, меню отображается как отдельное окно. |
void gtk_menu_attach_to_widget (GtkMenu *menu, GtkWidget *attach_widget, GtkMenuDetachFunc detacher);
Прикрепляет меню к виджету и обеспечивает callback-функцию которая будет вызвана когда меню вызывает gtk_menu_detach() в течении его разрушения.
menu : |
|
attach_widget : |
GtkWidget к которому будет прикреплено меню. |
detacher : |
Определённая пользователем callback-функция которая будет вызвана когда меню вызовет gtk_menu_detach(), или NULL |
void gtk_menu_detach (GtkMenu *menu);
Отделяет меню от виджета к которому оно было прикреплено. Эта функция будет названа callback-функцией, detacher, если была вызвана из gtk_menu_attach_to_widget().
menu : |
GtkWidget* gtk_menu_get_attach_widget (GtkMenu *menu);
Возвращает GtkWidget к которому прикреплено меню.
menu : |
|
Возвращает : |
GtkWidget к которому прикреплено меню. |
GList* gtk_menu_get_for_attach_widget (GtkWidget *widget);
Возвращает список меню которые прикреплены к этому виджету. Этим списком владеет GTK+ и его не нужно модифицировать.
widget : |
|
Возвращает : |
Список меню прикреплённых к этому виджету. |
Начиная с версии 2.6
void (*GtkMenuPositionFunc) (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data);
Пользовательская функция, подставляемая когда вызывается gtk_menu_popup(), которая управляет позицией меню когда оно отображено. Функция устанавливает параметры x и y координатами в которых должно быть отображено меню.
menu : |
|
x : |
Адрес (целое gint) представляющий горизонтальную позицию где будет отображено меню. Это output параметр. |
y : |
Адрес (целое gint) представляющий вертикальную позицию меню. Это output параметр. |
push_in : |
Должно ли меню быть полностью внутри экрана. |
user_data : |
Данные обеспечиваемые пользователем в gtk_menu_popup() data параметре. |
void (*GtkMenuDetachFunc) (GtkWidget *attach_widget, GtkMenu *menu);
Пользовательская функция, подставляемая когда вызвана gtk_menu_attach_to_widget(), которая будет вызвана когда меню позже будет откреплено от виджета.
attach_widget : |
GtkWidget от которого открепляется меню. |
menu : |
GtkMenu открепляемое меню. |
void gtk_menu_set_monitor (GtkMenu *menu, gint monitor_num);
Информирует GTK+ на каком экране должно появиться меню. Смотрите gdk_screen_get_monitor_geometry().
Эта функция должна быть вызвана из GtkMenuPositionFunc если меню не должно появляться на некотором мониторе как указатель. Эта информация не может быть надёжно выведена из координат возвращённых GtkMenuPositionFunc, например, для большинства меню, эти координаты могут выходить за рамки экрана.
menu : |
|
monitor_num : |
Номер монитора на котором должно появиться меню |
Начиная с версии 2.4
"tearoff-state" gboolean : Read / Write
Сообщает должно ли меню открепляться.
Значение по умолчанию: FALSE
Начиная с версии 2.6
"tearoff-title" gchararray : Read / Write
Заголовок который может отображать менеджер окон когда меню откреплено.
Значение по умолчанию: ""
"bottom-attach" gint : Read / Write
Номер ряда к которому прикрепляется дочернее меню.
Допустимые значения: >= -1
Значение по умолчанию: -1
"left-attach" gint : Read / Write
Номер столбца к которому прикрепляется с лева дочернее меню.
Допустимые значения: >= -1
Значение по умолчанию: -1
"right-attach" gint : Read / Write
Номер столбца к которому с право прикрепляется дочернее меню.
Допустимые значения: >= -1
Значение по умолчанию: -1
"top-attach" gint : Read / Write
Номер строки к которой сверху прикрепляется дочерний элемент.
Допустимые значения: >= -1
Значение по умолчанию: -1
"horizontal-offset" gint : Read
Когда меню является суб-меню, происходит горизонтальное поглощение пикселей.
Значение по умолчанию: -2
"vertical-offset" gint : Read
Когда меню является суб-меню, происходит вертикальное поглощение пикселей.
Значение по умолчанию: 0
"vertical-padding" gint : Read
Дополнительное пространство сверху и снизу меню.
Допустимые значения: >= 0
Значение по умолчанию: 1
void user_function (GtkMenu *menu, GtkScrollType arg1, gpointer user_data) : Run last / Action
menu : |
Объект который получает сигнал. |
arg1 : |
|
user_data : |
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |