Єдина Країна! Единая Страна!

Archive for the 'GTK+' Category

GTK+ — 3. Керування позиціонуванням віджетів

Неділя, Лютий 8th, 2009

У цій “лекції” я спробую пояснити, яким чином додавати на вікно нові віджети, та організувати їхнє бажане для вас позиціонування на ньому.

Власне, річ ось у чім — у GTK+, як і в усіх інших бібліотеках графічних віджетів для UNIX ви не можете (взагалі то можете, але про це, можливо, згодом) тупо накидати будь які віджети (кнопки, мітки, чекбокси, едітбокси, тощо) на форму, встановити зручні для вас розміри і місцерозташування цих віджетів, як, скажімо, у VLC.

UNIX’ові бібліотеки графічних віджетів використовують інших підхід до розміщення елементів на формі. Елементи розміщуються не лише по відношенню до верхнього лівого кута. Їхній розмір ще й задається по відношенню до висоти і ширини форми.

Тобто, якщо ви розмістите на формі лиш одну кнопку, то вона, за замовчуванням, матиме висоту і ширину рівну, відповідно, висоті і ширині форми. Не лякайтесь, ви звісно ж, можете чітко задати позицію та розміри кнопки, однак, даний підхід має низку переваг. Сподіваюсь, пояснити вам їх по ходу…

GtkFixed

Даний контейнер поміщає віджети у чітко фіксовані позиції і задає для них чітко фіксовані розміри. Даний контейнер не виконує автоматичну схему управління позицією та розміром віджетів. За звичай, він використовується досить рідко, наприклад, у програмах, де можна змінювати розміри віджетів або ж міняти їхню позицію.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <gtk/gtk.h>
 
 
int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *fixed;
 
    GtkWidget *button1;
    GtkWidget *button2;
    GtkWidget *button3;
 
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkFixed");
    gtk_window_set_default_size(GTK_WINDOW(window), 290, 200);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
 
    fixed = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), fixed);
 
    button1 = gtk_button_new_with_label("Button");
    gtk_fixed_put(GTK_FIXED(fixed), button1, 150, 50);
    gtk_widget_set_size_request(button1, 80, 35);
 
    button2 = gtk_button_new_with_label("Button");
    gtk_fixed_put(GTK_FIXED(fixed), button2, 15, 15);
    gtk_widget_set_size_request(button2, 80, 35);
 
    button3 = gtk_button_new_with_label("Button");
    gtk_fixed_put(GTK_FIXED(fixed), button3, 100, 100);
    gtk_widget_set_size_request(button3, 80, 35);
 
    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
    gtk_widget_show_all(window);
 
    gtk_main();
 
    return 0;
}

У даному прикладі, ми створюємо три кнопки, і поміщаємо їх на чітко вказані координати. Коли ми змінюємо розміри вікна, кнопки залишаються на своїх місцях.

Тут ми створюємо віджет контейнер GtkFixed:

fixed = gtk_fixed_new();

А тут, за допомогою функції gtk_fixed_put() поміщаємо першу кнопку у позиц

gtk_fixed_put(GTK_FIXED(fixed), button1, 150, 50);

gtkfixed

Read the rest of this entry »

GTK+ — 2. Перша програма

Понеділок, Січень 12th, 2009

У цій частині, в межах курсу по вивченню бібліотеки GTK+, ми напишемо, і покрокового розберемо першу просту програму.

Простий приклад

Розпочнемо з дуже простої програми. Вона створює і відображає просте вікно.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <gtk /gtk.h>
 
int main(int argc, char *argv[])
{
    GtkWidget *window;
 
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(window);
 
    gtk_main();
 
    return 0;
}
</gtk>

Read the rest of this entry »

GTK+ — 1. Вступ

Неділя, Січень 11th, 2009

GTK+, або The GIMP Toolkit — міжплатформовий комплект інструментальних засобів з набором віджетів для створення графічних інтерфейсів користувача. Разом із Qt та Motif, є одним із найпопулярніших інструментів для X Window System.

GTK+ було розроблено для GNU Image Manipulation Program (GIMP), растрового графічного редактора, у 1997 році Спенсером Кімбалом (Spencer Kimball) та Петером Матісом (Peter Mattis), членами eXperimental Computing Facility (XCF) в UC Berkeley. Розповсюджується на умовах ліцензії LGPL, є вільним програмним забезпеченням і частиною проекту GNU.

Read the rest of this entry »