Π€ΡΠ½ΠΊΡΠΈΡ gtk_window_set_default_size Π·Π°Π΄Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π² Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ GTK+. Π―Π²Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ½Π° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΊΠ½Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠΎ ΡΠ΅ΠΌ-Π»ΠΈΠ±ΠΎ ΠΈΠ»ΠΈ ΡΠΊΡΡΡΠΎ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π° ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ gtk_window_resize. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π°, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π΅Π³ΠΎ Π³ΡΠ°Π½ΠΈΡΡ ΠΌΡΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΡΠΎΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ gtk_window_set_resizeable, ΠΏΡΠΈΡΠ°Π²Π½Π΅Π½Π½ΡΡ FALSE.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΡΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈ Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ.Π΅. Π½Π΅ ΡΠ²Π΅ΡΠ½ΡΡΠΎ ΠΈΠ»ΠΈ ΡΠΊΡΡΡΠΎ, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ gtk_window_present. ΠΠ½Π° ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΎΠΊΠΎΠ½, Ρ.ΠΊ. ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠΊΠ½Π° Π½Π΅ ΡΠ²Π΅ΡΠ½ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΎΠΊΠ½Π° Π½Π° Π²Π΅ΡΡ ΡΠΊΡΠ°Π½ ΠΈ Π΅Π³ΠΎ ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_window_maximize ΠΈ gtk_window_minimize.
GtkEntry
GtkEntry β Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΏΡΠΎΡΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π΄ΡΠ΅ΡΠ° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ·Π»Π° ΡΠ΅ΡΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ API, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π·Π°Π΄Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°, ΡΠ°ΠΊ ΠΈ Π΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ Π² ΡΠΈΠΌΠ²ΠΎΠ»Π°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ° ΠΈ Π΅Π³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ.
GtkWidget
+----GtkEntry
ΠΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ GtkEntry Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π²Π΅Π·Π΄ΠΎΡΠ΅ΠΊ (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Π°) Π½Π° ΠΌΠ΅ΡΡΠ΅ Π½Π°Π±ΡΠ°Π½Π½ΡΡ Π±ΡΠΊΠ²Π΅Π½Π½ΠΎ-ΡΠΈΡΡΠΎΠ²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΊΡΠΎ-ΡΠΎ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°Π» ΡΠ΅ΡΠ΅Π· Π²Π°ΡΠ΅ ΠΏΠ»Π΅ΡΠΎ ΠΈ ΡΠΈΡΠ°Π» ΡΠ΅ΠΊΡΡ.
ΠΡ ΠΎΠΏΠΈΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°ΠΌΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° GtkEntry:
GtkWidget* gtk_entry_new(void);
GtkWidget* gtk_entry_new_with_max_length(gint max);
void gtk_entry_set_max_length(GtkEntry *entry, gint max);
G_CONST_RETURN gchar* gtk_entry_get_text(GtkEntry *entry);
void gtk_entry_set_text(GtkEntry *entry, const gchar *text);
void gtk_entry_append_text(GtkEntry *entry, const gchar *text);
void gtk_entry_prepend_text(GtkEntry* entry, const gchar *text);
void gtk_entry_set_visibility(GtkEntry *entry, gboolean visible);
void gtk_entry_set_invisible_char(GtkEntry *entry, gchar invch);
void gtk_entry_set_editable(GtkEntry *entry, gboolean editable);
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ GtkEntry Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_entry_new ΠΈΠ»ΠΈ ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ ΡΠ΅ΠΊΡΡΠ° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_entry_new_with_max_length. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ Π²Π°Ρ ΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π΄Π»ΠΈΠ½Ρ Π²Π²ΠΎΠ΄Π° ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΠΊΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΉ.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° GtkEntry Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ gtk_entry_get_text, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ const char, Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ GtkEntry (G_CONST_RETURN β ΠΌΠ°ΠΊΡΠΎΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ GLib). ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ strcpy.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΡΠ½ΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° GtkEntry, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ _set_text, _append_text ΠΈ _modify_text. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ const.
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ GtkEntry Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π° ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΈ Π½Π° ΠΌΠ΅ΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ gtk_entry_set_visibility, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ visible ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ FALSE. Π‘ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_entry_set_invisible_char.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.4.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.4. ΠΠ²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»ΡΠ’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° GtkEntry, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π½ΠΈΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° entry.c Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠΊΠ½ΠΎ Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ Ρ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΌ.
1. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΎΡΡΡΠΎΡΠΌΠ½ΠΎ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°ΠΊ secret:
#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>
const char * password = "secret";
2. Π£ Π²Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΈ ΡΠ΅Π»ΠΊΠ°Π΅ΡΡΡ ΠΌΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° OK:
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit();
}
void button_clicked(GtkWidget *button, gpointer data) {
const char *password_text =
gtk_entry_get_text(GTK_ENTRY((GtkWidget *) data));
if (strcmp(password_text, password) == 0)
printf("Access granted!\n");
else printf("Access denied!\n");
}
3. Π ΡΡΠ½ΠΊΡΠΈΠΈ main ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Ρ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ. ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠΊ ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ hbox ΠΈ vbox:
int main (int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *username_label, *password_label;
GtkWidget *username_entry, *password_entry;
GtkWidget *ok_button;
GtkWidget *hbox1, *hbox2;
GtkWidget *vbox;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "GtkEntryBox");
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_windowset_default_size(GTK_WINDOW(window), 200, 200);
g_signal_connect(GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(closeApp), NULL);
username_label = gtk_label_new("Login:");
password_label = gtk_label_new("Password:");
username_entry = gtk_entry_new();
password_entry = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(password_entry), FALSE);
ok_button = gtk_button_new_with_label("Ok");
g_signal_connect(GTK_OBJECT(ok_button), "clicked",
GTK_SIGNAL_FUNC(button_clicked), password_entry);
hbox1 = gtk_hbox_new(TRUE, 5);
hbox2 = gtk_hbox_new(TRUE, 5);
vbox = gtk_vbox_new(FALSE, 10);
gtk_box_pack_start(GTK_BOX(hbox1), username_label, TRUE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(hbox1), username_entry, TRUE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(hbox2), password_label, TRUE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(hbox2), password_entry, TRUE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), ck_button, FALSE, FALSE, 5);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΠΈΡ. 16.8.
Π ΠΈΡ. 16.8
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π²Π° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΡΠΈΠΏΠ° GtkEntry, username_entry ΠΈ password_entry, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ password_entry, ΡΠ°Π²Π½ΠΎΠΉ FALSE, ΡΡΠΎΠ±Ρ ΡΠΊΡΡΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½Π° ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ GtkButton, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΠΈΠ³Π½Π°Π» clicked Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° button_clicked.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ·Π²Π»Π΅ΡΠ΅Ρ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ ΡΡΠ°Π²Π½ΠΈΡ Π΅Π³ΠΎ Ρ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ, Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π²Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· ΠΏΠΎΠ²ΡΠΎΡΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ gtk_box_pack_start. ΠΠ»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π³ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ.
GtkSpinButton
ΠΠΎΡΠΎΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅Π» ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΈ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ GtkSpinButton (ΠΊΠ½ΠΎΠΏΠΊΠ°-ΡΡΠ΅ΡΡΠΈΠΊ) ΠΈΠ΄Π΅Π°Π»Π΅Π½. ΠΠ½ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡ Π½ΠΈΠΆΠ½Π΅ΠΉ Π΄ΠΎ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ. ΠΠΈΠ΄ΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ΅Π»ΠΊΠΈ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π²Π²Π΅ΡΡ ΠΈ Π²Π½ΠΈΠ·, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ "Π½Π°ΠΊΡΡΡΠΈΠ²Π°ΡΡ" Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡΡΡΡ.
GtkWidget
+---- GtkEntry
+---- GtkSpinButton
Π ΡΠ½ΠΎΠ²Π° API ΠΏΠΎΠ½ΡΡΠ΅Π½, ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ:
GtkWidget* gtk_spin_button_new(GtkAdjustment *adjustment,
gdouble climb_rate, guint digits);
GtkWidget* gtk_spin_button_new_with_range(gdouble min, gdouble max,
gdouble step);
void gtk_spin_button_set_digits(GtkSpinButton *spin_button, guint digits);
void gtk_spin_button_set_increments(GtkSpinButton *spin_button,
gdouble step, gdouble page);
void gtk_spin_button_set_range(GtkSpinButton *spin_button, gdouble min,
gdouble max);
gdouble gtk_spin_button_get_value(GtkSpinButton *spin_button);
gint gtk_spin_button_get_value_as_int(GtkSpinButton *spin_button);
void gtk_spin_button_set_value(GtkSpinButton *spin button, gdouble value);
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° GtkSpinButton Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_spin_button_new Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ GtkAdjustment. ΠΠΈΠ΄ΠΆΠ΅Ρ GtkAdjustment β ΡΡΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π»ΠΎΠ³ΠΈΠΊΡ, ΠΊΠ°ΡΠ°ΡΡΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ GtkHScale ΠΈ GtkVScale.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° GtkAdjustment ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΡ Π½ΠΈΠΆΠ½ΡΡ ΠΈ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ.