рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЧреНрд▓реЗрдб рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рдЧреНрд▓реЗрдб GTK + рдкрд░ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░рдордп рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдкрддреНрд░ рд╣реИред рдпрд╣ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ рдФрд░ рдирд┐: рд╢реБрд▓реНрдХ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХреИрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА? рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреИрд▓реЗрдЯ рд╕реЗ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рдШреБрдорд╛рдХрд░ рдХрдо рд╕реЗ рдХрдо рд╣рдЬрд╛рд░реЛрдВ рдРрд╕реА рд╡рд┐рдВрдбреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЧреНрд▓реЗрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛
рдЧреНрд▓реЗрдб рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк GNU / Linux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдкрдХреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЧреНрд▓реЗрдб рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдирдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рдлрд╝рд╛рдЗрд▓ -> рдмрдирд╛рдПрдБ)ред рдЙрд╕реА рд╕рдордп, рдкрд╣рд▓реА рд╡рд┐рдВрдбреЛ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдЬрдмрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрдЦреЗрдВ рдХрд┐ рдмрд╛рдПрдВ рдкреИрдирд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рд╡рд┐рдЬреЗрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ!

рдЪрд▓реЛ рдлреЙрд░реНрдо рдкрд░ GtkBox рдХреА рддрд░рд╣ рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдХрдВрдЯреЗрдирд░ рдбрд╛рд▓реЗрдВред рдЖрдЗрдХрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

рдФрд░ рдлреЙрд░реНрдо рдкрд░ рдЧреНрд░реЗ рд╕реНрдкреЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдПрдХ рд╕рдВрд╡рд╛рдж рдкреНрд░рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЖрдкрд╕реЗ рдкреВрдЫрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рддрдиреА рд╕реЗрд▓ рдЪрд╛рд╣рд┐рдПред рдереЛрдбрд╝рд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рддреАрди рдХреЗ рдмрдЬрд╛рдп, 2 рджрд░реНрдЬ рдХрд░реЗрдВред

рдЦрд┐рдбрд╝рдХреА рдХреЛ рджреЛ рд╕рдорд╛рди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдЬреЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЕрдм рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдЖрдк рджреЛ рд╡рд┐рдЬреЗрдЯ рдлрд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред
GTK рдкреИрдХреЗрдЬрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдкрд░рд┐рдЪрдп рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рднрд╛рдЧреЛрдВ рдореЗрдВ рдХреБрдЫ рдбрд╛рд▓реЗрдВред рдореИрдВрдиреЗ рдПрдХ рд▓реЗрдмрд▓ рдФрд░ рдПрдХ рдмрдЯрди рд▓рдЧрд╛рдпрд╛:

рдпреЗ рджреЛ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдЬреАрдм рд▓рдЧрддреЗ рд╣реИрдВ - рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддрдВрдЧ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╕реНрд╡рдпрдВ рджреЗрдЦреЗрдВред рдЗрд╕реЗ рдЪреБрдиреЗрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдмрд╛рд░ рдвреВрдВрдвреЗрдВред

рдпрд╣рд╛рдВ рд╣рдо рд╡рд┐рдЧреЗрдЯреНрд╕, рдХрдВрдЯреЗрдирд░ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг (рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдпрд╛ рдХреНрд╖реИрддрд┐рдЬ) рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдХрд░реНрд╕рд░ рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕рдВрдХреЗрдд рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдХреГрдкрдпрд╛ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдмреЛрд▓реНрдб рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред
рдЕрдм рд▓реЗрдмрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ "рдкреИрдХреЗрдЬрд┐рдВрдЧ" рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ - рдЗрд╕рдореЗрдВ рдРрд╕реЗ рдЧреБрдг рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ GtkBox рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд┐рдЬреЗрдЯ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

"рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА" рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░рд╛ рдлреЙрд░реНрдо рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд░реВрдк рд▓реЗрдЧрд╛: рд▓реЗрдмрд▓ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛, рдФрд░ рдмрдЯрди рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕рдВрднрд╡ рдЖрдХрд╛рд░ рд╣реЛрдЧрд╛ред
рдЖрдк рд╡рд┐рдВрдбреЛ рдлреНрд░реЗрдо рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд┐рдЫрд▓реЗ рд╡рд┐рд╖рдп рдХреЛ рджреЗрдЦреЗрдВ) - рдореИрдВрдиреЗ рд╕реАрдорд╛ рдХреЛ 10 рдкрд┐рдХреНрд╕реЗрд▓ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (

)ред

рд╕рдВрдХреЗрдд
рдЕрдм рдмрдЯрди рдХреЛ рджрдмрд╛рддреЗ рд╣реА рд▓реЗрдмрд▓ рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред
рдмрдЯрди рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЧреБрдгреЛрдВ рдореЗрдВ "рд╕рд┐рдЧреНрдирд▓" рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВред
"рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛" рдИрд╡реЗрдВрдЯ рдвреВрдВрдвреЗрдВ рдФрд░ "рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб" рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ, рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓реЗрдмрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рд╣реИред рдЕрдЧрд▓рд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рд╣рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓реЗрдВ рдЬреЛ "habrahabr.ui" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред
#include <gtk/gtk.h> static GtkWidget* create_window (void) { GtkWidget *window; GtkBuilder *builder; GError* error = NULL; builder = gtk_builder_new (); if (!gtk_builder_add_from_file (builder, "habrahabr.ui", &error)) { g_critical (" : %s", error->message); g_error_free (error); } gtk_builder_connect_signals (builder, NULL); window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); if (!window) { g_critical (" "); } g_object_unref (builder); return window; } int main (int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); window = create_window (); gtk_widget_show (window); gtk_main (); return 0; }
рдЕрдм рдПрдХ рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХрд╣рд╛ рд╣реИ:
static void helloworld (GtkButton *button, gpointer label) { gtk_label_set_text (label, ", !"); }
рд╡рд╣ рд╕рдм рд╣реИ!

