renderer = gtk_cell_renderer_text_new();
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
COLUMN_TITLE, "Title", renderer, "text",
COLUMN_TITLE, NULL);
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
COLUMN_ARTIST, "Artist", renderer, "text",
COLUMN_ARTIST, NULL);
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
COLUMN_CATALOGUE, "Catalogue", renderer, "text",
COLUMN_CATALOGUE, NULL);
gtk_container_add(GTK_CONTAINER(window), view);
gtk_widget_show_all(window); gtk_main();
return 0;
}
ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ GtkTreeView ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ GtkTreeView Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ².
ΠΡ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ ΠΎΠ±Π·ΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² GTK+ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌ Π½Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ: ΡΡΠ΅Π΄Ρ GNOME. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅Π½Ρ Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ GNOME ΠΈ ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ GNOME ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° GNOME.
ΠΠΈΠ΄ΠΆΠ΅ΡΡ GNOME
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡ GTK+ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ΠΌΡ ΡΡΠΎΠ»Ρ, Ρ.Π΅. GTK+ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΠΉ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΡΠ΅Π΄Π΅ GNOME ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Linux. ΠΡΠΈΡΠΈΠ½Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² GTK+ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΠ‘ Windows ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ GTK+ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠΎΠ»ΠΎΠΌ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ Π°ΠΏΠΏΠ»Π΅ΡΡ (Π°ΠΏΠΏΠ»Π΅ΡΡ β ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ΡΡ Π½Π° ΠΊΡΠ°Π΅Π²ΡΡ ΠΏΠ°Π½Π΅Π»ΡΡ (edge panels)).
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ΅Π΄Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ GNOME, ΡΠ°ΡΡΠΈΡΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ GTK+ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΠ΅ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌΠΈ Π² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² GNOME.
ΠΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ GNOME ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΠΏΠΎΡΡΡΠΏΠ°Π»ΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ GTK+. ΠΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ gnome_program_init ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ gtk_init Π² ΡΠΈΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ GTK+.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ app_id ΠΈ Π°ΡΡ_version, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΡΠ΅Π΄Π΅ GNOME, module_info, ΡΠΎΠΎΠ±ΡΠ°ΡΡΠΈΠΉ GNOME ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ NULL-ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°Ρ "ΠΈΠΌΡ/Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅".
GnomeProgram* gnome_program_init(const char *app_id,
const char *app_version, const GnomeModuleInfΠΎ *module_infΠΎ,
int argc, char **argv, const char *first_property_name, ...);
ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°ΡΡΡΠΎΠ²ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.8.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.8. ΠΠΊΠ½ΠΎ GNOMEΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° GNOME, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ GNOME-Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° GtkWindow Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ GnomeApp.
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ gnome1.c:
#include <gnome.h>
int main(int argc, char* argv[]) {
GtkWidget *app;
gnome_program_init("gnome1", "1.0", MODULE, argc, argv, NULL);
app = gnome_app_new("gnome1", "The Window Title");
gtk_widget_show(app);
gtk_main();
return 0;
}
ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ GNOME, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libgnomeui ΠΈ libgnome Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ pkg-config:
$ gcc gnome1.Ρ -ΠΎ gnome1 `pkg-config --cflags --libs libgnome-2.0 libgnomeui-2.0`
ΠΠΈΠ΄ΠΆΠ΅Ρ GnomeApp ΡΠ°ΡΡΠΈΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ GtkWindow ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π²ΡΡΠ°Π²ΠΊΡ ΠΌΠ΅Π½Ρ, ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²Π΄ΠΎΠ»Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΡΠ°Ρ ΠΎΠΊΠ½Π°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΠΎΡΠΎΠΌΠΎΠΊ GtkWindow, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ GnomeApp Π»ΡΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° GtkWindow. ΠΠ°Π»Π΅Π΅ Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Π½Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² Π²Π°Ρ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² GTK+ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅Π½Ρ, Π½ΠΎ ΡΡΠ΅Π΄Π° GNOME ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ. Π ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ΅Π½Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ GTK+.
ΠΠ΅Π½Ρ GNOME
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠΈΡ ΡΡ ΠΌΠ΅Π½Ρ Π² ΡΡΠ΅Π΄Π΅ GNOME Π½Π° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠ½ΠΊΡ Π² ΡΡΡΠΎΠΊΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΡΠΊΡΡΡ GNOMEUIInfo, ΠΏΡΠΈΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠ½ΠΊΡΡ ΠΌΠ΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ΅Π½Ρ File (Π€Π°ΠΉΠ»), Edit (ΠΡΠ°Π²ΠΊΠ°) ΠΈ View (ΠΠΈΠ΄), ΡΠΎ Ρ Π²Π°Ρ Π±ΡΠ΄ΡΡ ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ.
ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ Π² Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΡΡΡΠΊΡΡΡ GNOMEUIInfo.
Π‘ΡΡΡΠΊΡΡΡΠ° GNOMEUIInfo Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π° ΠΈ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡΡ .
typedef struct {
GnomeUIInfoType type;
gchar const *label;
gchar const *hint;
gpointer moreinfΠΎ;
gpointer user_data;
gpointer unused_data;
GnomeUIPixmapType pixmap_type;
gconstpointer pixmap_info;
guint accelerator_key;
GdkModifierType ac_mods;
GtkWidget *widget;
} GnomeUIInfo;
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΡΡΡΠΊΡΡΡΠ΅, type, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄Π°Π»Π΅Π΅. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· 11 ΡΠΈΠΏΠΎΠ² GnomeUIInfΠΎΠ’ΡΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΡΡΠ΅Π΄ΠΎΠΉ GNOME ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΠ°Π±Π». 16.3.
Π’Π°Π±Π»ΠΈΡΠ° 16.3
Π’ΠΈΠΏΡ GnomeUIInfΠΎΠ’ΡΡΠ΅ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ GNOME_APP_UI_ENDOFINFO ΠΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ β ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ GNOME_APP_UI_ITEM ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ, Π΅ΡΠ»ΠΈ Π΅ΠΌΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ GNOME_APP_UI_RADIOITEMS GNOME_APP_UI_TOGGLEITEM ΠΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ-ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ-ΡΠ»Π°ΠΆΠΊΠ° GNOME_APP_UI_RADIOITEMS ΠΡΡΠΏΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ GNOME_APP_UI_SUBTREE ΠΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ. ΠΠ°Π΄Π°ΠΉΡΠ΅ moreinfo Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ GNOME_APP_UI_SEPARATOR ΠΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ Π² ΠΌΠ΅Π½Ρ GNOME_APP_UI_HELP Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΌ ΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΠ΅Π½Ρ Help (Π‘ΠΏΡΠ°Π²ΠΊΠ°) GNOME_APP_UI_BUILDER_DATA ΠΠ°Π΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ (builder data) Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² GNOME_APP_UI_ITEM_CONFIGURABLE ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ GNOME_APP_UI_SUBTREE_STOCK Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ GNOME_APP_UI_SUBTREE Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π°Π΄ΠΏΠΈΡΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ gnome-libs GNOME_APP_UI_INCLUDE Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ GNOME_APP_UI_SUBTREE Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠ½ΠΊΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΌΠ΅Π½Ρ, Π° Π½Π΅ Π² ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΠΡΠΎΡΠΎΠΉ ΠΈ ΡΡΠ΅ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅ΠΊΡΡ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ ΠΈ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ. (ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΡΠ°Ρ ΠΎΠΊΠ½Π°.)
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° moreinfo Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ°. Π ΡΠ»ΡΡΠ°Π΅ ITEM ΠΈ TOGGLEITEM ΠΎΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ. ΠΠ»Ρ RADIOITEMS ΠΎΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΡΠΊΡΡΡ GnomeUIInfo, Π² ΠΊΠΎΡΠΎΡΡΡ Π³ΡΡΠΏΠΏΠΈΡΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ.
user_data β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ pixmap_type ΠΈ pixmap_info ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΏΡΠ½ΠΊΡΡ ΠΌΠ΅Π½Ρ ΡΠ°ΡΡΡΠΎΠ²ΡΡ ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, a accelerator_key ΠΈ ac_mods ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΉ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ.
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠ»Π΅ΠΌΠ΅Π½Ρ widget ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅Π½Ρ.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.9.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.9. ΠΠ΅Π½Ρ GNOMEΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ menu1.Ρ.
#include <gnome.h>
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit();
}
1. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π΄Π»Ρ ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, Π½Π°Π·Π²Π°Π½Π½ΡΡ item_clicked:
void item clicked(GtkWidget *widget, gpointer user_data) {
printf("Item Clicked!\n");
}
2. ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ΅Π½Ρ. Π£ Π²Π°Ρ Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ, ΠΌΠ΅Π½Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊΠΈ ΠΌΠ΅Π½Ρ:
static GnomeUIInfo submenu[] = {
{GNOME_APP_UI_ITEM, "SubMenu", "SubMenu Hint",
GTK_SIGNAL_FUNC(item_clicked), NULL, NULL, 0, NULL, 0, 0, NULL},
{GNOME_APP_UI_ENDOFINFO, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0,
NULL}
};
static GnomeUIInfo menu[] = {
{GNOME_APP_UI_ITEM, "Menu Item 1", "Menu Hint",
NULL, NULL, NULL, 0, NULL, 0, 0, NULL},
{GNOME_APP_UI_SUBTREE, "Menu Item 2", "Menu Hint",
submenu, NULL, NULL, 0, NULL, 0, 0, NULL},
{GNOME_APP_UI_ENDOFINFO, NULL, NULL, null,