краткое описание#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; } деталиgtkmenutypedef struct _gtkmenu gtkmenu; структура gtkmenu содержит только закрытые данные доступ к которым осуществляется функциями приведенными ниже. gtk_menu_new ()gtkwidget* gtk_menu_new (void); создаёт новый gtkmenu.
gtk_menu_set_screen ()void gtk_menu_set_screen (gtkmenu *menu, gdkscreen *screen); устанавливает gdkscreen на котором будет отображено меню.
начиная с версии 2.2 gtk_menu_append()#define gtk_menu_append(menu,child) gtk_menu_shell_append ((gtkmenushell *)(menu),(child)) вниманиеgtk_menu_append устарела и не должна использоваться во вновь создаваемом коде. добавляет новый gtkmenuitem в конец списка пунктов меню.
gtk_menu_prepend()#define gtk_menu_prepend(menu,child) gtk_menu_shell_prepend ((gtkmenushell *)(menu),(child)) вниманиеgtk_menu_prepend устарела и не должна использоваться во вновь создаваемом коде. добавляет новый gtkmenuitem в начало списка пунктов меню.
gtk_menu_insert()#define gtk_menu_insert(menu,child,pos) gtk_menu_shell_insert ((gtkmenushell *)(menu),(child),(pos)) вниманиеgtk_menu_insert устарела и не должна использоваться во вновь создаваемом коде. добавляет новый gtkmenuitem к списку пунктов меню в позицию указанную в position.
gtk_menu_reorder_child ()void gtk_menu_reorder_child (gtkmenu *menu, gtkwidget *child, gint position); перемещает gtkmenuitem в новую позицию внутри gtkmenu.
gtk_menu_attach ()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().
начиная с версии 2.4 gtk_menu_popup ()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() вместо него.
gtk_menu_set_accel_group ()void gtk_menu_set_accel_group (gtkmenu *menu, gtkaccelgroup *accel_group); устанавливает gtkaccelgroup который содержит глобальные ускорители меню. эта группа акселераторов также должна быть добавлена ко всем окнам этого меню с помощью gtk_window_add_accel_group(), в порядке этих окон для поддержки всех акселераторов содержащихся в этой группе.
gtk_menu_get_accel_group ()gtkaccelgroup* gtk_menu_get_accel_group (gtkmenu *menu); получает gtkaccelgroup который содержит глобальные акселераторы для меню. смотрите gtk_menu_set_accel_group().
gtk_menu_set_accel_path ()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().
gtk_menu_set_title ()void gtk_menu_set_title (gtkmenu *menu, const gchar *title); устанавливает заголовок строки для меню. заголовок отображается когда меню показано как отдельное окно.
gtk_menu_get_tearoff_state ()gboolean gtk_menu_get_tearoff_state (gtkmenu *menu); возвращает отключено ли меню. смотрите gtk_menu_set_tearoff_state().
gtk_menu_get_title ()const gchar* gtk_menu_get_title (gtkmenu *menu); возвращает заголовок меню. смотрите gtk_menu_set_title().
gtk_menu_popdown ()void gtk_menu_popdown (gtkmenu *menu); удаляет меню с экрана.
gtk_menu_reposition ()void gtk_menu_reposition (gtkmenu *menu); повторно размещает меню согласно позиции этой функции.
gtk_menu_get_active ()gtkwidget* gtk_menu_get_active (gtkmenu *menu); возвращает выбранный пункт меню. это используется gtkoptionmenu.
gtk_menu_set_active ()void gtk_menu_set_active (gtkmenu *menu, guint index_); выделяет определённый пункт в меню. это используется gtkoptionmenu и не должно больше никем использоваться.
gtk_menu_set_tearoff_state ()void gtk_menu_set_tearoff_state (gtkmenu *menu, gboolean torn_off); изменяет отделяемое состояние меню. меню обычно отображается как выпадающее окно с пунктами которое видимо пока остаётся активным. оно так же может быть отображено как отдельное окно пока не будет закрыто или переприкреплено.
gtk_menu_attach_to_widget ()void gtk_menu_attach_to_widget (gtkmenu *menu, gtkwidget *attach_widget, gtkmenudetachfunc detacher); прикрепляет меню к виджету и обеспечивает callback-функцию которая будет вызвана когда меню вызывает gtk_menu_detach() в течении его разрушения.
gtk_menu_detach ()void gtk_menu_detach (gtkmenu *menu); отделяет меню от виджета к которому оно было прикреплено. эта функция будет названа callback-функцией, detacher, если была вызвана из gtk_menu_attach_to_widget().
gtk_menu_get_attach_widget ()gtkwidget* gtk_menu_get_attach_widget (gtkmenu *menu); возвращает gtkwidget к которому прикреплено меню.
gtk_menu_get_for_attach_widget ()glist* gtk_menu_get_for_attach_widget (gtkwidget *widget); возвращает список меню которые прикреплены к этому виджету. этим списком владеет gtk+ и его не нужно модифицировать.
начиная с версии 2.6 gtkmenupositionfunc ()void (*gtkmenupositionfunc) (gtkmenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data); пользовательская функция, подставляемая когда вызывается gtk_menu_popup(), которая управляет позицией меню когда оно отображено. функция устанавливает параметры x и y координатами в которых должно быть отображено меню.
gtkmenudetachfunc ()void (*gtkmenudetachfunc) (gtkwidget *attach_widget, gtkmenu *menu); пользовательская функция, подставляемая когда вызвана gtk_menu_attach_to_widget(), которая будет вызвана когда меню позже будет откреплено от виджета.
gtk_menu_set_monitor ()void gtk_menu_set_monitor (gtkmenu *menu, gint monitor_num); информирует gtk+ на каком экране должно появиться меню. смотрите gdk_screen_get_monitor_geometry(). эта функция должна быть вызвана из gtkmenupositionfunc если меню не должно появляться на некотором мониторе как указатель. эта информация не может быть надёжно выведена из координат возвращённых gtkmenupositionfunc, например, для большинства меню, эти координаты могут выходить за рамки экрана.
начиная с версии 2.4 детали свойствсвойство "tearoff-state""tearoff-state" gboolean : read / write сообщает должно ли меню открепляться. значение по умолчанию: false начиная с версии 2.6 свойство "tearoff-title""tearoff-title" gchararray : read / write заголовок который может отображать менеджер окон когда меню откреплено. значение по умолчанию: "" детали дочерних свойствдочернее свойство "bottom-attach""bottom-attach" gint : read / write номер ряда к которому прикрепляется дочернее меню. допустимые значения: >= -1 значение по умолчанию: -1 дочернее свойство "left-attach""left-attach" gint : read / write номер столбца к которому прикрепляется с лева дочернее меню. допустимые значения: >= -1 значение по умолчанию: -1 дочернее свойство "right-attach""right-attach" gint : read / write номер столбца к которому с право прикрепляется дочернее меню. допустимые значения: >= -1 значение по умолчанию: -1 дочернее свойство "top-attach""top-attach" gint : read / write номер строки к которой сверху прикрепляется дочерний элемент. допустимые значения: >= -1 значение по умолчанию: -1 детали свойств стилясвойство стиля "horizontal-offset""horizontal-offset" gint : read когда меню является суб-меню, происходит горизонтальное поглощение пикселей. значение по умолчанию: -2 свойство стиля "vertical-offset""vertical-offset" gint : read когда меню является суб-меню, происходит вертикальное поглощение пикселей. значение по умолчанию: 0 свойство стиля "vertical-padding""vertical-padding" gint : read дополнительное пространство сверху и снизу меню. допустимые значения: >= 0 значение по умолчанию: 1 детали сигналасигнал "move-scroll"void user_function (gtkmenu *menu, gtkscrolltype arg1, gpointer user_data) : run last / action
|