Инициализация
Инициализация — Инициализация библиотеки и основной цикл
Функции
| void | gtk_disable_setlocale () |
| PangoLanguage * | gtk_get_default_language () |
| GtkTextDirection | gtk_get_locale_direction () |
| void | gtk_init () |
| gboolean | gtk_init_check () |
| gboolean | gtk_is_initialized () |
| GtkDebugFlags | gtk_get_debug_flags () |
| void | gtk_set_debug_flags () |
Типы и значения
| #define | GTK_PRIORITY_RESIZE |
| enum | GtkDebugFlags |
Включаемые файлы
#include <gtk/gtk.h>
Описание
Перед использованием GTK необходимо его инициализировать, используя gtk_init(); это подключается к системе окон, настраивает локаль и выполняет другие задачи инициализации. gtk_init() завершает приложение в случае возникновения ошибок; чтобы этого избежать, можно использовать gtk_init_check(), что позволяет восстановиться после неудачной инициализации GTK — возможно, ваше приложение запустится в текстовом режиме.
Как и все графические наборы инструментов, GTK использует событийно-ориентированную модель программирования. Когда пользователь ничего не делает, GTK находится в «основном цикле» и ожидает ввода. Если пользователь выполняет какое-либо действие, например, щелчок мышью, то основной цикл «просыпается» и отправляет событие в GTK. GTK передает событие одному или нескольким виджетам.
Когда виджеты получают событие, они часто излучают один или несколько «сигналов». Сигналы уведомляют вашу программу, что «произошло что-то интересное», вызывая функции, которые вы подключили к сигналу с помощью g_signal_connect(). Функции, подключенные к сигналу, часто называются «обработчиками событий».
Когда вызываются ваши обработчики событий, вы обычно выполняете какое-то действие — например, при нажатии кнопки «Открыть» вы можете отобразить GtkFileChooserDialog. После завершения обработчика событий GTK возвращается в основной цикл и ожидает дальнейшего ввода пользователя.
Типичная main() функция для приложения GTK
См. GMainLoop в документации GLib, чтобы узнать больше о циклах и их функциях.
Подробное описание функций
gtk_disable_setlocale ()
void gtk_disable_setlocale (void);
Предотвращает, чтобы gtk_init(), gtk_init_check() и gtk_parse_args() автоматически вызывали setlocale (LC_ALL, ""). Вы захотите использовать эту функцию, если хотите установить локаль для вашей программы на значение, отличное от локали пользователя, или если хотите установить разные значения для разных категорий локали.
Большинству программ не нужно вызывать эту функцию.
gtk_get_default_language ()
PangoLanguage *
gtk_get_default_language (void); Возвращает PangoLanguage для языка по умолчанию, который в настоящее время действует. (Обратите внимание, что это может измениться в течение жизни приложения.) Язык по умолчанию выводится из текущей локали. Он определяет, например, использует ли GTK направление текста справа налево или слева направо.
Эта функция эквивалентна pango_language_get_default(). См. эту функцию для получения подробностей.
gtk_get_locale_direction ()
GtkTextDirection
gtk_get_locale_direction (void); Получает направление текущей локали. Это ожидаемое направление чтения текста и пользовательского интерфейса.
Эта функция зависит от текущей локали, установленной с setlocale(), и по умолчанию установит направление GTK_TEXT_DIR_LTR в противном случае. GTK_TEXT_DIR_NONE никогда не будет возвращаться.
GTK устанавливает направление текста по умолчанию в соответствии с локалью во время gtk_init(), и вы обычно должны использовать gtk_widget_get_direction() или gtk_widget_get_default_direction() для получения текущего направления.
Эта функция требуется только в редких случаях, когда локаль изменяется после того, как GTK уже был инициализирован. В этом случае вы можете использовать её для обновления направления текста по умолчанию следующим образом:
int
main (int argc, char **argv)
{
GtkWidget *window;
// Initialize i18n support with bindtextdomain(), etc.
// ...
// Initialize the widget set
gtk_init ();
// Create the main window
window = gtk_window_new ();
// Set up our GUI elements
// ...
// Show the application window
gtk_widget_show (window);
// Enter the main event loop, and wait for user interaction
while (!done)
g_main_context_iteration (NULL, TRUE);
// The user lost interest
return 0;
}Возвращаемое значение
GtkTextDirection текущей локали
gtk_init ()
void gtk_init (void);
Вызовите эту функцию перед использованием других функций GTK в ваших графических приложениях. Она инициализирует всё необходимое для работы с набором инструментов и анализирует некоторые стандартные параметры командной строки.
Если вы используете GtkApplication, вам не нужно вызывать gtk_init() или gtk_init_check(); обработчик “запуска” делает это за вас.
Эта функция завершит вашу программу, если она не смогла инициализировать систему окон по какой-либо причине. Если вы хотите, чтобы ваша программа перешла к текстовому интерфейсу, вы хотите вызвать gtk_init_check() вместо этого.
GTK вызывает signal (SIGPIPE, SIG_IGN) во время инициализации, чтобы игнорировать сигналы SIGPIPE, так как они почти никогда не нужны в графических приложениях. Если вам нужно обработать SIGPIPE по какой-либо причине, сбросьте обработчик после gtk_init(), но имейте в виду, что другие библиотеки (например, libdbus или gvfs) могут делать подобные вещи.
gtk_init_check ()
gboolean gtk_init_check (void);
Эта функция выполняет ту же работу, что и gtk_init() с только одним изменением: она не завершает программу, если система окон не может быть инициализирована. Вместо этого она возвращает FALSE при ошибке.
Таким образом, приложение может перейти к другим средствам связи с пользователем — например, к интерфейсу командной строки или curses.
Возвращаемое значение
TRUE если система окон успешно инициализирована, FALSE в противном случае
gtk_is_initialized ()
gboolean gtk_is_initialized (void);
Используйте эту функцию для проверки, была ли GTK инициализирована с помощью gtk_init() или gtk_init_check().
Возвращаемое значение
статус инициализации
gtk_get_debug_flags ()
GtkDebugFlags
gtk_get_debug_flags (void); Возвращает флаги отладки GTK, которые в настоящее время активны.
Эта функция предназначена для модулей GTK, которые хотят настроить свой вывод отладки на основе флагов отладки GTK.
Возвращаемое значение
флаги отладки GTK.
gtk_set_debug_flags ()
void
gtk_set_debug_flags (GtkDebugFlags flags); Устанавливает флаги отладки GTK.
Параметры
flags | устанавливаемые флаги отладки |
Типы и значения
GTK_PRIORITY_RESIZE
#define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10)
Используйте этот приоритет для функциональности, связанной с распределением размеров.
Он используется внутри GTK+ для вычисления размеров виджетов. Этот приоритет выше, чем GDK_PRIORITY_REDRAW, чтобы избежать изменения размера виджета, который был только что перерисован.
перечисление GtkDebugFlags
Члены
GTK_DEBUG_TEXT | ||
GTK_DEBUG_TREE | ||
GTK_DEBUG_KEYBINDINGS | ||
GTK_DEBUG_MODULES | ||
GTK_DEBUG_GEOMETRY | ||
GTK_DEBUG_ICONTHEME | ||
GTK_DEBUG_PRINTING | ||
GTK_DEBUG_BUILDER | ||
GTK_DEBUG_SIZE_REQUEST | ||
GTK_DEBUG_NO_CSS_CACHE | ||
GTK_DEBUG_INTERACTIVE | ||
GTK_DEBUG_TOUCHSCREEN | ||
GTK_DEBUG_ACTIONS | ||
GTK_DEBUG_LAYOUT | ||
GTK_DEBUG_SNAPSHOT | ||
GTK_DEBUG_CONSTRAINTS | ||
GTK_DEBUG_BUILDER_OBJECTS | ||
GTK_DEBUG_A11Y |
См. также
См. руководство по GLib, особенно GMainLoop и функции, связанные с сигналами, такие как g_signal_connect()
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/gtk4-General.html