Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Properties

GtkAccelLabel

GtkAccelLabel Метка которая отображает ключ акселератора справа от текста.

Краткое описание

#include <gtk/gtk.h> GtkAccelLabel; GtkWidget* gtk_accel_label_new (const gchar *string); void gtk_accel_label_set_accel_closure (GtkAccelLabel *accel_label, GClosure *accel_closure); GtkWidget* gtk_accel_label_get_accel_widget (GtkAccelLabel *accel_label); void gtk_accel_label_set_accel_widget (GtkAccelLabel *accel_label, GtkWidget *accel_widget); guint gtk_accel_label_get_accel_width (GtkAccelLabel *accel_label); gboolean gtk_accel_label_refetch (GtkAccelLabel *accel_label);

Иерархия объектов

GObject +----GInitiallyUnowned +----GtkObject +----GtkWidget +----GtkMisc +----GtkLabel +----GtkAccelLabel

Осуществляемые интерфейсы

GtkAccelLabel осуществляет AtkImplementorIface.

Свойства

"accel-closure" GClosure : Read / Write "accel-widget" GtkWidget : Read / Write

Описание

GtkAccelLabel виджет подкласс GtkLabel который также отображает ключ акселератора справа от текста метки, например 'Ctl+S'. Он обычно используется в меню для отображения сочетаний клавиш для быстрого доступа к коммандам.

Отображение акселератора не устанавливается явно. Вместо этого, GtkAccelLabel отображает акселераторы которые были добавлены к отдельному виджету. Этот виджет устанавливается вызовом gtk_accel_label_set_accel_widget().

Например, GtkMenuItem виджет может добавить акселератор для издания сигнала "activate" когда нажата ключевая комбинация 'Ctl+S'. GtkAccelLabel создаётся и добавляется к GtkMenuItem, а gtk_accel_label_set_accel_widget() вызывается с GtkMenuItem в качестве второго аргумента. GtkAccelLabel теперь отобразит 'Ctl+S' после метки.

Помните что создаваемый GtkMenuItem с помощью gtk_menu_item_new_with_label() (или одной из подобных функций для GtkCheckMenuItem и GtkRadioMenuItem) автоматически добавляет GtkAccelLabel к GtkMenuItem и вызывает gtk_accel_label_set_accel_widget() настраивая их для вас.

GtkAccelLabel отображает только акселераторы имеющие установку GTK_ACCEL_VISIBLE (смотрите GtkAccelFlags). GtkAccelLabel может отображать множество акселераторов и даже сообщать имена, хотя почти всегда используется для отображения только одного акселератора.

Пример 1. Создание простого меню с акселератором.

GtkWidget *save_item; GtkAccelGroup *accel_group; /* Создаём GtkAccelGroup и добавляем к окну. */ accel_group = gtk_accel_group_new (); gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); /* Создаём пункты меню используя функцию удобства. */ save_item = gtk_menu_item_new_with_label ("Save"); gtk_widget_show (save_item); gtk_container_add (GTK_CONTAINER (menu), save_item); /* Теперь добавляем акселератор к GtkMenuItem. Помните что с тех пор как мы вызвали gtk_menu_item_new_with_label() для создания GtkMenuItem GtkAccelLabel автоматически устанавливается для отображения GtkMenuItem акселераторов. Нам просто нужно удостовериться в использовании GTK_ACCEL_VISIBLE. */ gtk_widget_add_accelerator (save_item, "activate", accel_group, GDK_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

Детали

GtkAccelLabel

typedef struct _GtkAccelLabel GtkAccelLabel;

GtkAccelLabel структура содержит только закрытые данные и должна использоваться только функциями приведенными ниже.


gtk_accel_label_new ()

GtkWidget*  gtk_accel_label_new             (const gchar *string);

Создаёт новый GtkAccelLabel.

string :

Строка метка. Должна быть не-NULL.

Возвращает:

новый GtkAccelLabel.


gtk_accel_label_set_accel_closure ()

void gtk_accel_label_set_accel_closure (GtkAccelLabel *accel_label, GClosure *accel_closure);

Устанавливает замкнутое выражение проверяемое этой меткой акселератора. Замкнутое выражение должно быть подключено к группе акселератора; смотрите gtk_accel_group_connect().

accel_label :

GtkAccelLabel

accel_closure :

Замкнутое выражение контролирующее изменение акселератора.


gtk_accel_label_get_accel_widget ()

GtkWidget* gtk_accel_label_get_accel_widget (GtkAccelLabel *accel_label);

Извлекает виджет контролируемый меткой акселератора. Смотрите gtk_accel_label_set_accel_widget().

accel_label :

GtkAccelLabel

Возвращает:

Объект контролируемый меткой акселератора, или NULL.


gtk_accel_label_set_accel_widget ()

void gtk_accel_label_set_accel_widget (GtkAccelLabel *accel_label, GtkWidget *accel_widget);

Устанавливает виджет контролируемый меткой акселератора.

accel_label :

GtkAccelLabel

accel_widget :

Виджет для контроля.


gtk_accel_label_get_accel_width ()

guint       gtk_accel_label_get_accel_width (GtkAccelLabel *accel_label);

Возвращает ширину необходимую для отображения ключа акселератора. Это используется в меню для выравнивания всех GtkMenuItem виджетов и не должно быть необходимым для приложений.

accel_label :

GtkAccelLabel.

Возвращает:

Ширину для отображения ключа акселератора.


gtk_accel_label_refetch ()

gboolean    gtk_accel_label_refetch         (GtkAccelLabel *accel_label);

Пере-создаёт строку представляющую клавиши акселератора. В основном это не нужно, так как строка автоматически обновляется когда акселераторы добавляются или удаляются из связанного с ними виджета.

accel_label :

GtkAccelLabel.

Возвращает:

Всегда возвращается FALSE.

Детали свойств

Свойство "accel-closure"

  "accel-closure"        GClosure              : Read / Write

Закрытое выражение контролирующее изменение акселератора.


Свойство "accel-widget"

  "accel-widget"         GtkWidget             : Read / Write

Виджет контролируемый изменение акселератора.

Смотрите также

Keyboard Accelerators

Установка и использование клавиатурных short-cuts.

GtkItemFactory

Простой способ создания меню.