Β GtkWidget *vbox;Β gtk_init(&argc, &argv);Β window = gtk_window_new(GTK_WINDOW_TOPLEVEL);Β gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);Β g_signal_connect(GTK_OBJECT(window), "destroy",Β GTK_SIGNAL_FUNC(closeApp), NULL);Β button = gtk_button_new_with_label("Ok");Β togglebutton = gtk_toggle_button_new_with_label("Toggle");Β checkbutton = gtk_check_button_new();Β radiobutton1 = gtk_radio_button_new(NULL);Β radiobutton2 =Β gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(radiobutton1));Β vbox = gtk_vbox_new(TRUE, 4);Β add_widget_with_label(GTK_CONTAINER(vbox),Β "ToggleButton:",Β togglebutton);Β add_widget_with_label(GTK_CONTAINER(vbox), "CheckButton:",Β checkbutton);Β add_widget_with_label(GTK_CONTAINER(vbox),Β "Radio 1:", radiobutton1);Β add_widget_with_label(GTK_CONTAINER(vbox),Β "Radio 2:", radiobutton2);Β add_widget_with_label(GTK_CONTAINER(vbox), "Button:", button);Β g_signal_connect(GTK_OBJECT(button), "clicked",Β GTK_SIGNAL_FUNC(button_clicked), NULL);Β gtk_container_add(GTK_CONTAINER(window), vbox);Β gtk_widget_show_all(window);Β gtk_main();Β return 0;}ΠΠ° ΡΠΈΡ. 16.10 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° buttons.c Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ
GtkButton
Π ΠΈΡ. 16.10
Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΌΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ OK, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°Π·Π½ΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ.
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° β ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ
GtkButtonGtkToggleButtonGtkCheckButtonGtkRadioButtongtk_toggle_button_get_activeget_activeGtkTreeView
Π ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² GTK+, Π½ΠΎ Π½Π΅ Π²ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΈ
GtkTreeViewGtkWidgetΒ +----Β GtkContainerΒ Β Β Β Β Β Β +----Β GtkTreeViewGtkTreeViewGtkTreeViewGtkEntryΠ‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΡΡΠ°Π½ΠΈΡ
GtkTreeViewGtkTreeView
Π ΠΈΡ. 16.11
Π‘Π΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ
GtkTreeViewβ‘Β
GtkTreeViewβ‘Β
GtkTreeViewColumnβ‘Β
GtkCellRendererβ‘Β
GtkTreeModelΠΠ΅ΡΠ²ΡΠ΅ ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠΎΡΠΌΠΈΡΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ β ΠΠΎΠ΄Π΅Π»Ρ. ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΠΎΠ΄Π΅Π»ΠΈ (ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ½ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΠΠΎΠ΄Π΅Π»Ρ/ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅/ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ (Model/View/Controller) ΠΈΠ»ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎ MVC) Π½Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½Π° GTK+, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Π²ΡΠ΅Ρ ΡΡΠ°ΠΏΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° MVC Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π·Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π±Π΅Π· Π½Π΅Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΈΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π²Π΅ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π±Π΅Π· Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π²ΡΡ ΠΊΠΎΠΏΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
Π¨Π°Π±Π»ΠΎΠ½ MVC ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ Π² Web-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Web-ΡΠ°ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ»ΠΈ WAP-ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»ΡΡ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π² Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ , ΠΏΡΠΎΡΡΠΎ Π·Π° ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π»Ρ Web-ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΠΎΠ΄Π΅Π»Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² GTK+ Π΄Π²ΡΠΌΡ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ°
GtkTreeStoreGtkListStoreΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
GtkTreeStoreGtkWidget *store = gtk_tree_store_new(3, G_TYPE_STRING, G_TYPE_INT,Β G_TYPE_BOOLEAN);Π§ΡΠ΅Π½ΠΈΠ΅, Π²ΡΡΠ°Π²ΠΊΠ°, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡ
GtkTreeItergtk_tree_store_appendΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π΅ΡΠ΅Π²Π°, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ. Π€ΡΠ½ΠΊΡΠΈΡ
gtk_tree_store_appendGtkTreeIterNULL