GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Known Derived Interfaces | Properties | Signals |
GtkObjectGtkObject Базовый класс иерархии типов GTK+ |
#include <gtk/gtk.h>
GtkObject;
#define GTK_OBJECT_TYPE (object)
#define GTK_OBJECT_TYPE_NAME (object)
enum GtkObjectFlags;
#define GTK_OBJECT_FLAGS (obj)
#define GTK_OBJECT_FLOATING (obj)
enum GtkArgFlags;
GtkObject* gtk_object_new (GtkType type,
const gchar *first_property_name,
...);
void gtk_object_sink (GtkObject *object);
GtkObject* gtk_object_ref (GtkObject *object);
void gtk_object_unref (GtkObject *object);
void gtk_object_weakref (GtkObject *object,
GtkDestroyNotify notify,
gpointer data);
void gtk_object_weakunref (GtkObject *object,
GtkDestroyNotify notify,
gpointer data);
void gtk_object_destroy (GtkObject *object);
void gtk_object_get (GtkObject *object,
const gchar *first_property_name,
...);
void gtk_object_set (GtkObject *object,
const gchar *first_property_name,
...);
void gtk_object_set_data (GtkObject *object,
const gchar *key,
gpointer data);
void gtk_object_set_data_full (GtkObject *object,
const gchar *key,
gpointer data,
GtkDestroyNotify destroy);
void gtk_object_remove_data (GtkObject *object,
const gchar *key);
gpointer gtk_object_get_data (GtkObject *object,
const gchar *key);
void gtk_object_remove_no_notify (GtkObject *object,
const gchar *key);
void gtk_object_set_user_data (GtkObject *object,
gpointer data);
gpointer gtk_object_get_user_data (GtkObject *object);
void gtk_object_add_arg_type (const gchar *arg_name,
GtkType arg_type,
guint arg_flags,
guint arg_id);
void gtk_object_set_data_by_id (GtkObject *object,
GQuark data_id,
gpointer data);
void gtk_object_set_data_by_id_full (GtkObject *object,
GQuark data_id,
gpointer data,
GtkDestroyNotify destroy);
gpointer gtk_object_get_data_by_id (GtkObject *object,
GQuark data_id);
void gtk_object_remove_data_by_id (GtkObject *object,
GQuark data_id);
void gtk_object_remove_no_notify_by_id
(GtkObject *object,
GQuark key_id);
#define gtk_object_data_try_key
#define gtk_object_data_force_id
GObject
+----GInitiallyUnowned
+----GtkObject
+----GtkWidget
+----GtkAdjustment
+----GtkCellRenderer
+----GtkFileFilter
+----GtkItemFactory
+----GtkTooltips
+----GtkTreeViewColumn
+----GtkRecentFilter
GtkObject требует GtkRecentChooser.
"user-data" gpointer : Read / Write
"destroy" void user_function (GtkObject *object,
gpointer user_data) : Cleanup / No recursion / No hooks
GtkObject это базовый класс для всех виджетов, а также объектов таких как GtkAdjustment. GtkObject предшественник GObject; не виджеты происходящие из GtkObject вместо GObject необходимы для обратной совместимости.
GtkObjects создаётся с "плавающим"
подсчетом ссылок. Это означает, что
начальная ссылка не принадлежит никому.
Вызов g_object_unref()
для вновь созданного GtkObject
некорректен, сначала должна удаляться
плавающая ссылка. Это может сделать кто
угодно в любое время, вызвав
g_object_ref_sink()
для преобразования плавающей ссылки в
обычную. g_object_ref_sink()
возвращает новую ссылку если объект
уже не имеет плавающей ссылки.
Когда вы добавляете виджет в его родительский контейнер, родительский контейнер выполняет следующее:
g_object_ref_sink (G_OBJECT (child_widget));Это значит что контейнер теперь владеет ссылкой на дочерний виджет и дочерний виджет имеет плавающую ссылку.
Цель плавающей ссылки заключается в том, чтобы поддержать существование виджета до добавления его в родительский контейнер:
button = gtk_button_new (); /* кнопка имеет одну плавающую ссылку для своего существования */ gtk_container_add (GTK_CONTAINER (container), button); /* кнопка имеет одну не плавающую ссылку которой владеет контейнер */
GtkWindow особый случай, потому что GTK+ самостоятельно будет ссылаться и/или снимать ссылку на него при создании. Таким образом, после вызова
gtk_window_new()
, GtkWindow будет иметь одну ссылку которой владеет GTK+, а не плавающую ссылку.Ещё один фактор входит в соблюдение правил: сигнал "destroy", издаваемый с помощью
gtk_object_destroy()
. Сигнал "destroy" запрашивает весь код имея ссылку объекта для освобождения ссылки. Таким образом, например, если вы вызовитеgtk_object_destroy()
на GtkWindow, GTK+ освободит ссылки которыми он владеет; если вы вызовитеgtk_object_destroy()
на GtkButton, то кнопка будет удалена из родительского контейнера а родительский контейнер будет освобожден от ссылки на кнопку. Поскольку ссылка освобождена, вызовgtk_object_destroy()
должен освободить всю память связанную с объектом, за исключением ошибочного кода который не в состоянии освободить собственные ссылки в ответ на сигнал "destroy". Освобождение памяти (упоминается как finalization) происходит только если количество ссылок равно нулю.Некоторые простые правила для обработки GtkObject:
Никогда не вызывайте g_object_unref()
,
если предварительно не вызвали
g_object_ref()
,
даже если вы создали GtkObject.
(ПОМНИТЕ: это не правильно для GObject;
для GObject,
создатель объекта владеет ссылкой.)
Вызывайте gtk_object_destroy()
для избавления от большинства объектов
в большинстве случаев. В частности,
виджеты практически всегда разрушаются
подобным способом.
Из-за плавающего счета ссылок, вы
не должны беспокоиться о счете ссылок
для виджетов и окон верхнего уровня,
если вы не вызовите g_object_ref()
самостоятельно.
typedef struct _GtkObject GtkObject;Непосредственно сам объект. Для доступа к нему используйте макрос.
GTK_OBJECT_TYPE()
#define GTK_OBJECT_TYPE(object) (G_TYPE_FROM_INSTANCE (object))Определяет тип объекта.
|
#define GTK_OBJECT_TYPE_NAME(object) (g_type_name (GTK_OBJECT_TYPE (object)))Определяет типовое имя объекта.
|
typedef enum
{
GTK_IN_DESTRUCTION = 1 << 0, /* Used internally during dispose */
#if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
GTK_FLOATING = 1 << 1,
#endif
GTK_RESERVED_1 = 1 << 2,
GTK_RESERVED_2 = 1 << 3
} GtkObjectFlags;
Сообщает о состоянии объекта.
Объект в текущий момент находится в состоянии разрушения. Это используется внутренне GTK+ для предотвращения повторных вызовов разрушения. |
|
Зарезервировано для использования в будущем. |
#define GTK_OBJECT_FLAGS(obj) (GTK_OBJECT (obj)->flags)Определяет GtkObjectFlags для объекта, не обращаясь к его членам.
|
Объект из которого возвращаются флажки. |
#define GTK_OBJECT_FLOATING(obj) (g_object_is_floating (obj))Внимание
GTK_OBJECT_FLOATING
устарела и не должна использоваться во вновь создаваемом коде.Возвращает
TRUE
если объект всё ещё имеет плавающие ссылки. Смотрите краткий обзор GtkObject.
|
Объект для проверки. |
typedef enum
{
GTK_ARG_READABLE = G_PARAM_READABLE,
GTK_ARG_WRITABLE = G_PARAM_WRITABLE,
GTK_ARG_CONSTRUCT = G_PARAM_CONSTRUCT,
GTK_ARG_CONSTRUCT_ONLY = G_PARAM_CONSTRUCT_ONLY,
GTK_ARG_CHILD_ARG = 1 << 4
} GtkArgFlags;
GtkArgFlags
устарела и не должна использоваться во
вновь создаваемом коде. В будущем
используйте вместо неё GParamSpec
Возможные флажки указывающие какие аргументы должны быть обработаны.
Читабельный. (то есть может выполняться запрос) |
|
Записываемый. (то есть может устанавливаться) |
|
Нуждается в конструкции. |
|
Нуждается в конструкции (и создаётся один раз во время создания объекта) и по другому не может быть установлен. Следовательно этот флажок не допускает GTK_ARG_WRITABLE, и избыточен для GTK_ARG_CONSTRUCT. |
|
Тип параметра применяемый к каждому дочернему элементу. Используется для GtkContainer. |
GtkObject* gtk_object_new (GtkType type,
const gchar *first_property_name,
...);
gtk_object_new
устарела и не должна использоваться во
вновь создаваемом коде. Используйте
вместо неё g_object_new()
.
Создаёт объект определяя его аргументы, перечисленные в вызове функции.
|
Тип идентифицирующий этот объект.
Возвращённый |
|
Имя первого свойства для установки при конструировании объекта. |
|
Значение первого аргумента, далее
любое количество пар имя/значение-аргумента,
заканчивается |
Возвращает : |
новый GtkObject. |
void gtk_object_sink (GtkObject *object);Внимание
gtk_object_sink
устарела начиная с версии 2.10 и не должна использоваться во вновь создаваемом коде. Вместо неё используйтеg_object_ref_sink()
.Удаляет плавающую ссылку из GtkObject, если есть; иначе ничего не делает. Смотрите краткое описание GtkObject.
|
Объект для снятия плавающей ссылки. |
GtkObject* gtk_object_ref (GtkObject *object);Внимание
gtk_object_ref
устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неёg_object_ref()
.Увеличивает количество плавающих ссылок объекта.
|
Объект для ссылки. |
Возвращает : |
|
void gtk_object_unref (GtkObject *object);Внимание
gtk_object_unref
устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйтеg_object_unref()
.Уменьшает количество ссылок на объект. Когда количество ссылок доходит до 0, объект удаляется (то есть память освобождается).
|
Объект для уменьшения ссылок. |
void gtk_object_weakref (GtkObject *object,
GtkDestroyNotify notify,
gpointer data);
gtk_object_weakref
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_weak_ref()
.
Добавляет слабую ссылку для объекта.
Слабая ссылка используется как уведомление
о завершении цикла существования
объекта. Их называют "weak references",
потому что они позволяют удерживать
указатель на объект без вызова
g_object_ref()
(g_object_ref()
добавляет жесткую ссылку, то есть,
заставляет объект существовать).
|
Объект для слабой ссылки. |
|
Callback-функция вызываемая перед освобождением объекта. |
|
Дополнительные данные для помещения в уведомление (notify). |
void gtk_object_weakunref (GtkObject *object,
GtkDestroyNotify notify,
gpointer data);
gtk_object_weakunref
устарела и не должна использоваться во
вновь создаваемом коде. Используйте
вместо неё g_object_weak_unref()
.
Удаляет слабые ссылки для объекта.
|
Объект слабые ссылки на который удаляются. |
|
Callback-функция для поиска. |
|
Данные для поиска. |
void gtk_object_destroy (GtkObject *object);Издаёт сигнал "destroy" уведомляющий что все ссылки на объект GtkObject освобождаются. Смотрите краткое описание.
Память для самого объекта не будет освобождена до тех пор, пока количество ссылок не достигнет 0;
gtk_object_destroy()
просто освобождает ссылки, она не создаёт пустого объекта.
|
Объект для удаления ссылок. |
void gtk_object_get (GtkObject *object,
const gchar *first_property_name,
...);
gtk_object_get
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_get()
.
Определяет свойства объекта.
|
|
|
Имя первого свойства для определения значения. |
|
|
void gtk_object_set (GtkObject *object,
const gchar *first_property_name,
...);
gtk_object_set
устарела и не должна использоваться во
вновь создаваемом коде. Используйте
вместо неё g_object_set()
.
Устанавливает свойства для объекта.
void set_box_properties (GtkBox* box)
{
gtk_object_set (GTK_OBJECT (box), "homogeneous", TRUE,
"spacing", 8,
NULL);
}
|
|
|
Имя первого свойства для установки |
|
Значение первого аргумента, далее
опционально следует большое количество
пар имя/значение, завершается |
void gtk_object_set_data (GtkObject *object,
const gchar *key,
gpointer data);
gtk_object_set_data
устарела и не должна использоваться во
вновь создаваемом коде. Вместо ней
используйте g_object_set_data()
.
Каждый объект сопровождают ассоциации от строк до указателей. Эта функция позволяет установить ассоциацию.
Если объект уже имеет ассоциацию с именем, то она будет уничтожена.
|
Объект содержащий ассоциации. |
|
Имя ключа. |
|
Данные связанные с ключом. |
void gtk_object_set_data_full (GtkObject *object,
const gchar *key,
gpointer data,
GtkDestroyNotify destroy);
gtk_object_set_data_full
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_set_data_full()
.
Тоже самое что gtk_object_set_data()
,
но добавляет уведомление при разрушении
ассоциации, с помощью gtk_object_remove_data()
или когда разрушается объект.
|
Объект содержащий ассоциации. |
|
Имя ключа. |
|
Данные связанные с ключом. |
|
Функция вызываемая при уничтожении ассоциации. |
void gtk_object_remove_data (GtkObject *object,
const gchar *key);
gtk_object_remove_data
устарела и не должна использоваться во
вновь создаваемом коде. Используйте
g_object_set_data()
для установки данных объекта в NULL
.
Удаляет определённые данные из
ассоциированных данных объекта
(object_data). Последующие вызовы
gtk_object_get_data()
вернут NULL
.
Если вы определили уничтожающий
обработчик с помощью gtk_object_set_data_full()
,
он будет вызван.
|
Объект поддерживающий ассоциацию. |
|
Имя ключа для ассоциации. |
gpointer gtk_object_get_data (GtkObject *object,
const gchar *key);
gtk_object_get_data
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_get_data()
.
Определяет именованное поле из объектной таблицы ассоциаций (object_data).
|
объект поддерживающий ассоциации. |
|
Имя ключа для этой ассоциации. |
Возвращает : |
Данные если найдены, или |
void gtk_object_remove_no_notify (GtkObject *object,
const gchar *key);
gtk_object_remove_no_notify
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_steal_data()
.
Удаляет данные из ассоциаций объекта (object_data), не вызывает уничтожающий обработчик.
Тоже что и gtk_object_remove_data()
,
за исключением игнорирования уничтожающего
обработчика. Поэтому данная функция
затрагивает только данные установленные
с помощью gtk_object_set_data_full()
.
|
объект поддерживающий ассоциации. |
|
Имя ключа для ассоциации. |
void gtk_object_set_user_data (GtkObject *object,
gpointer data);
gtk_object_set_user_data
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_set_data()
.
Ля удобства, каждый объект предлагает основной указатель пользовательских данных. Эта функция устанавливает их.
|
Объект для установки пользовательских данных. |
|
Новое значение пользовательских данных. |
gpointer gtk_object_get_user_data (GtkObject *object);Внимание
gtk_object_get_user_data
устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйтеg_object_get_data()
.Определяет указатель пользовательских данных.
Этот указатель предназначен для удобства при написании вашего приложения.
|
объект. |
Возвращает : |
Область пользовательских данных для объекта. |
void gtk_object_add_arg_type (const gchar *arg_name,
GtkType arg_type,
guint arg_flags,
guint arg_id);
gtk_object_add_arg_type
устарела и не должна использоваться во
вновь создаваемом коде.
Устарела, вместо неё используется система свойств GObject включая GParamSpec. Добавляет новый тип аргумента для объектного класса. Обычно вызывается при регистрации нового типа объекта.
|
Полностью квалифицированное имя объекта, например GtkObject::user_data. |
|
Тип аргумента. |
|
поразрядное-ИЛИ перечисления GtkArgFlags. (Является ли аргумент settable или gettable, устанавливается ли при конструировании объекта.) |
|
Внутренний номер, передаётся в или из "set_arg" и "get_arg" обработчиков объекта. |
void gtk_object_set_data_by_id (GtkObject *object,
GQuark data_id,
gpointer data);
gtk_object_set_data_by_id
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_set_qdata()
.
То же, что и gtk_object_set_data()
,
но вместо строки принимает GQuark,
поэтому немного быстрее.
Используйте gtk_object_data_try_key()
и gtk_object_data_force_id()
для определения id из строки.
|
Объект содержащий ассоциации. |
|
Кварк (quark) ключа. |
|
Данные ассоциированные с ключом. |
void gtk_object_set_data_by_id_full (GtkObject *object,
GQuark data_id,
gpointer data,
GtkDestroyNotify destroy);
gtk_object_set_data_by_id_full
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_set_qdata_full()
.
То же, что и gtk_object_set_data_full()
,
за исключение м использования GQuark
вместо строки, что немного быстрее.
Используйте gtk_object_data_try_key()
и gtk_object_data_force_id()
для получения id из строки.
|
Объект содержащий ассоциации. |
|
Кварк (quark) ключа. |
|
Данные связанные с ключом. |
|
Функция вызываемая при разрушении ассоциации. |
gpointer gtk_object_get_data_by_id (GtkObject *object,
GQuark data_id);
gtk_object_get_data_by_id
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_get_qdata()
.
То же, что и gtk_object_get_data()
,
за исключением использования GQuark
вместо строки, что немного быстрее.
Используйте gtk_object_data_try_key()
и gtk_object_data_force_id()
для получения id из строки.
|
Объект содержащий ассоциации. |
|
Кварк (quark) ключа. |
Возвращает : |
Данные если найдены, или |
void gtk_object_remove_data_by_id (GtkObject *object,
GQuark data_id);
gtk_object_remove_data_by_id
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_set_qdata()
с NULL
вместо данных.
Тоже самое, что и gtk_object_remove_data()
,
за исключением использования GQuark
вместо строки, что немного быстрее.
Удаляет определённые данные из
ассоциированных данных объекта.
Последующие вызовы gtk_object_get_data()
возвратят NULL
.
Используйте gtk_object_data_try_key()
и gtk_object_data_force_id()
для получения id из строки.
|
Объект содержащий ассоциации. |
|
Кварк (quark) ключа. |
void gtk_object_remove_no_notify_by_id
(GtkObject *object,
GQuark key_id);
gtk_object_remove_no_notify_by_id
устарела и не должна использоваться во
вновь создаваемом коде. Вместо неё
используйте g_object_steal_qdata()
.
Тоже что и gtk_object_remove_no_notify()
,
за исключением использования GQuark
вместо строки, что немного быстрее.
Используйте gtk_object_data_try_key()
и gtk_object_data_force_id()
для получения id из строки.
|
Объект содержащий ассоциации. |
|
Кварк (quark) ключа. |
#define gtk_object_data_try_key g_quark_try_stringВнимание
gtk_object_data_try_key
устарела и не должна использоваться во вновь создаваемом коде.Устаревший макрос. Игнорируйте его.
gtk_object_data_force_id
#define gtk_object_data_force_id g_quark_from_stringВнимание
gtk_object_data_force_id
устарела и не должна использоваться во вновь создаваемом коде.Устаревший макрос. Игнорируйте его.
Детали свойств
Свойство "
user-data
""user-data" gpointer : Read / WriteАнонимный указатель используемых данных (Anonymous User Data Pointer).
Детали сигналов
Сигнал "destroy"
void user_function (GtkObject *object, gpointer user_data) : Cleanup / No recursion / No hooks
Сигнализирует об освобождении всех ссылок на GtkObject. Может привести к уничтожению объекта если освободит все ссылки.
|
Объект получающий сигнал. |
|
Данные используемые для установки при подключении обработчика сигнала. |