рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ GTK + GUI рд▓рд╛рдЗрдмреНрд░реЗрд░реА:
GtkTreeView рдФрд░
GtkListStore рдХреЗ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЬреЗрдЯреНрд╕ (рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛
рд╣реВрдВ ред GtkTreeView - рдкреЗрдбрд╝реЛрдВ рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреЗрдЯред GtkListStore - рдПрдХ рд╕реВрдЪреА рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд┐рдЬреЗрдЯред
рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЧреНрд▓реЗрдб рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдКрдВрдЧрд╛, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬреАрдЯреАрдХреЗ + рд╡рд┐рдЬреЗрдЯреНрд╕ (рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрди) рдХреЗ рд╕рд╛рде рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдХрдо рд╕рд╛рдордЧреНрд░реА рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд▓рд┐рдЦрд╛ рдерд╛ред рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрднреА рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдореИрдВ рдЖрдкрдХреЛ
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдЗрди рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рдФрд░ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реВрдВ (рдпрджрд┐ рдпрд╣ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ)ред рдпрд╣ рдкреЛрд╕реНрдЯ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ GTK + рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдЬ рдореИрдВ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рдЧреЗрдо рдХреЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ GtkListStore рд╡рд░реНрдЧ (рдореИрдВ рдХрднреА-рдХрднреА рдЗрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╣реВрдВрдЧрд╛) рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ GtkTreeView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреГрд╢реНрдп рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред

рд▓реЗрдХрд┐рди рд╣рдо GtkListStore рдореЗрдВ рди рдХреЗрд╡рд▓ рдЪрд░рд┐рддреНрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдпрд╣ рд╕реНрдЯреЛрд░реЗрдЬ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝реЙрдиреНрдЯ рд╢реИрд▓реА, рдлрд╝реЙрдиреНрдЯ рдирд╛рдо, рд░рдВрдЧ, рдЪрд┐рддреНрд░, рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЬреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рд▓рд┐рдП GtkTreeView рдореЗрдВ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ (рдЗрд╕реЗ рдЯреНрд░реА рд╡реНрдпреВ рд╡рд┐рдЬреЗрдЯ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рд╕реВрдЪреА рдкреНрд░рд╛рд░реВрдк рдХреА рд╕рдВрд░рдЪрдирд╛ рджреЗрдЦреЗрдВрдЧреЗ, рди рдХрд┐ рдЯреНрд░реА рд╡реНрдпреВ)ред
рдЪрд▓реЛ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ - GtkListStore рд╡рд┐рдЬреЗрдЯ рдХреЛ рджреЗрдЦрдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ (рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреА рддрд░рд╣) рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╣реИ, рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ (рдкрд░рдорд╛рдгреБ) рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╕реНрддрдВрднреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ: рдкрд╣рд▓рд╛ рдХреЙрд▓рдо 0 рд╣реИ, рджреВрд╕рд░рд╛ рдХреЙрд▓рдо 1 рд╣реИ, рддреАрд╕рд░рд╛ рдХреЙрд▓рдо 2 рд╣реИ, рдЖрджрд┐ред
рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдмрдирд╛рдПрдВ:
enum { NAME = 0, HEALTH, POWER, SELECTED, FONT_COLOR };
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЧреНрд▓реЗрдб рдЦреЛрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдмрдВрдЯреВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 3.6.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬреАрдЯреАрдХреЗ + 3.0 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ)ред рд╣рдо рдлреЙрд░реНрдо рдмрдирд╛рддреЗ рд╣реИрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдирд▓ рдореЗрдВ рдмрд╛рдИрдВ рдУрд░ рд╣рдо рд╡рд┐рдВрдбреЛ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдкреИрдирд▓реЛрдВ рдкрд░ рдмрд╛рдИрдВ рдУрд░, рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗрдЯ рдХрд░реЗрдВ:
"GtkTreeView рдФрд░ GtkListStore рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг" , рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдореЗрдВ
, рдХреНрд░рдорд╢рдГ рдЪреМрдбрд╝рд╛рдИ рдЕрдиреБрд░реЛрдз рдФрд░ рдКрдВрдЪрд╛рдИ:
650 рдФрд░
350 рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХреНрд╖реИрддрд┐рдЬ рдкрдЯреНрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрд╕ рдкрд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдбрд┐рдмреНрдмреЛрдВ рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рд╡рд┐рдВрдбреЛ рд░рдЦреА рдЧрдИ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рдЪрд░рдг рдкрд░ рд╕рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп):

рдЕрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдирд▓ рдкрд░ рдЬрд╛рдПрдВ, рдЯреНрд░реА рдореЙрдбрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реВрдЪреА рд╕реНрдЯреЛрд░ рджреЗрдЦреЗрдВ - рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХрд╛ рднрдВрдбрд╛рд░рдг (GtkLitStar рд╡рд┐рдЬреЗрдЯ)ред

рдЗрд╕ рд╡рд┐рдЬреЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ, рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреИрдм рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рд╡рд┐рдЬреЗрдЯ рдЯреНрд░реА рдореЗрдВ рд╕реНрд╡рддрдГ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдиреАрдЪреЗ рднреА рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╣рдЯрд╛ рджреЗрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░реЗрдВрдЧреЗ (рдЬреЛ рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдХрд░реЗрдВрдЧреЗ)ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд╛рдо рдХреЛ
liststorePlayers рдореЗрдВ рдмрджрд▓реЗрдВ ред рджреВрд╕рд░реЗ, рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗрдВ рдореЗрдВ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдирд╛рдо (рдирд╛рдо) - рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕реНрд╡рд╛рд╕реНрдереНрдп (рдЧреИрд░-рд╕реНрд╡рд╛рд╕реНрдереНрдп) - рдкреВрд░реНрдгрд╛рдВрдХ, рд╢рдХреНрддрд┐ (рд╢рдХреНрддрд┐) - рдкреВрд░реНрдгрд╛рдВрдХ, рдЪрдпрди рдзреНрд╡рдЬ (рд╣рдЯрд╛рдП рдЧрдП) - рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рдлрд╝реЙрдиреНрдЯ рд░рдВрдЧ (рдХреЙрд▓реЛрд░реНрдЯреЗрдХреНрд╕) - рд░рдВрдЧ рдкреНрд░рдХрд╛рд░ред
рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХреЙрд▓рдо рдирд╛рдо рдЬреЛрдбрд╝реЗрдВ - рдХреЙрд▓рдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ
gchararray рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдФрд░ рдХреЙрд▓рдо
рдирд╛рдо рдореЗрдВ
рдирд╛рдо рд▓рд┐рдЦреЗрдВред рдЕрдЧрд▓рд╛, рджреВрд╕рд░рд╛ рдХреЙрд▓рдо рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╣реИ - рдХреЙрд▓рдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╣рдо рдХреЙрд▓рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдХреЙрд▓рдо рдирд╛рдо
рд╕реНрд╡рд╛рд╕реНрдереНрдп рдореЗрдВ ред рдЗрд╕реА рдкреНрд░рдХрд╛рд░
рдЧрд┐рдВрдЯ рдкреНрд░рдХрд╛рд░ рдХреА
рд╢рдХреНрддрд┐ рдХреЗ рд▓рд┐рдП ред рдЕрдЧрд▓рд╛ рдЪрдпрди рдзреНрд╡рдЬ рд╣реИ - рдкреНрд░рдХрд╛рд░
gboolean рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдФрд░
рдЪрдпрдирд┐рдд рд╕реНрддрдВрдн рдирд╛рдо рдореЗрдВред рдФрд░ рдлрд┐рд░ ... рдФрд░ рдлрд┐рд░ рдереЛрдбрд╝реА рдкрд░реЗрд╢рд╛рдиреА рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреА рд╣реИред рд╣рдореЗрдВ рдЯрд╛рдЗрдк GdkColor (рдЬреАрдЯреАрдХреЗ + рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рдВрд░рдЪрдирд╛ рд░рдВрдЧ) рдХрд╛ рдлрд╝реЙрдиреНрдЯ рд░рдВрдЧ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди GdkColor рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рдЧреНрд▓реЗрдб рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рджреЛрд╖ рд╣реИ рдФрд░ рдЦреБрдж рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдПрдЧрд╛ред рдЕрдЧрд░ рд╣рдо рд╡рд╣рд╛рдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдирд┐рдХрд▓реЗрдЧрд╛ред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЧреНрд▓реЗрдб рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ
gchararray рдХрд╛ рдХреНрд╖реЗрддреНрд░
рдмрдирд╛рддреЗ рд╣реИрдВ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╣рдо
Colortext рд▓рд┐рдЦрддреЗ рд╣реИрдВ ред

рд╣рдо рдЕрдкрдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╡рд░рдг рдХреЛ рдореБрдЦреНрдп рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВред рд╣рдо рд╡рд╣рд╛рдВ GtkListStore рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
<object class="GtkListStore" id="liststorePlayers"> <columns> <column type="gchararray"/> <column type="gint"/> <column type="gint"/> <column type="gboolean"/> <column type="gchararray"/> </columns> </object>
рд╣рдорд╛рд░реЗ
Gchararray рдХреЛ
GdkColor рдореЗрдВ рдмрджрд▓реЗрдВ
<object class="GtkListStore" id="liststorePlayers"> <columns> <column type="gchararray"/> <column type="gint"/> <column type="gint"/> <column type="gboolean"/> <column type="GdkColor"/> </columns> </object>
рдЧреНрд▓реЗрдб рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред рд╣рдо рдХреЙрд▓рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

GtkListStore рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдм рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХрдо рд╕реБрдВрджрд░ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдирд▓ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдЯреНрд░реА рд╡реНрдпреВ рджреЗрдЦреЗрдВ - рдпрд╣ рдПрдХ GtkTreeView рд╡рд┐рдЬреЗрдЯ рд╣реИред

рд╣рдо рдЗрд╕реЗ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдХреНрд░реЙрд▓рдбреЙрд╡ рдкрд░ рд░рдЦрддреЗ рд╣реИрдВ (рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдХреНрд░реЙрд▓рд╡рд┐рдВрдбреЛ 1 рдХрд╣рд╛ рд╣реИ, рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдо рддреМрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдирд╛рдо рдмрджрд▓реЗрдВ)ред рдЬрдм рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдирд▓ рдореЗрдВ рдЯреНрд░реА рд╡реНрдпреВ рд▓реЗ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рдмрдЯрди рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЯреНрд░реА рд╡реНрдпреВ рдореЙрдбрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреНрд░реА рд╡реНрдпреВ рдореЙрдбрд▓ рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ - GtkListStore, рдЕрд░реНрдерд╛рддреН рд╕реВрдЪреАрд╕реНрдЯреЛрд░рдкреНрд▓реЗрдпрд░ рд╡рд┐рдЬреЗрдЯред
... рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реВрдЪреА рд╕реВрдЪреА рдЪреБрдиреЗрдВред

рдЗрд╕ рд╕рдВрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЕрдм рд╣рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рд╕рдВрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рдХреЗ рд╕рд╛рде рдХрд╣рдирд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ред рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЗ рджрд╛рдПрдВ рдкреИрдирд▓ рдореЗрдВ Treeview1 рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдареАрдХ рд╣реИ) рдФрд░ рд╢реАрд░реНрд╖ рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ, рдЬрд╣рд╛рдВ рд╣рдо Edit рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдЯреНрд░реА рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрди рд╕рдВрд╡рд╛рдж рдЦреБрд▓рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдЯреНрд░реА рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
рдЯреНрд░реАрд╡реНрдпреВрдкреНрд▓реЗрдпрд░реНрд╕ рдореЗрдВ рдирд╛рдо рдмрджрд▓реЗрдВред рдФрд░
рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдХреНрд╖рдо рдЧреНрд░рд┐рдб рд▓рд╛рдЗрдиреНрд╕ рдЧреБрдг рднреА рд╕реЗрдЯ рдХрд░реЗрдВ - рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╕реНрддрдВрднреЛрдВ рдХреЗ рджреГрд╢реНрдп рдкреГрдердХреНрдХрд░рдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред Hierarcy рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВред рдЗрд╕рдореЗрдВ, рд╣рдо рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдПрдХ рдмрд┐рдЯред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕реВрдЪреА рд╕реНрдЯреЛрд░ рдореЗрдВ рдХреЙрд▓рдо рдФрд░ рдЯреНрд░реА рд╡реНрдпреВ рдореЗрдВ рдХреЙрд▓рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдЯреНрд░реА рд╡реНрдпреВ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИред рдЯреНрд░реА рд╡реНрдпреВ рдХреЙрд▓рдо рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд░реНрдХрд┐рдХ-рджреГрд╢реНрдп рдкреГрдердХреНрдХрд░рдг рдХреЗ рдЕрдзрд┐рдХ рд╣реИрдВред
GtkCellRenderer рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рднрдВрдбрд╛рд░рдг рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, 4 рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
GtkCellRendererText - рднрдВрдбрд╛рд░ рд╕реЗ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рджрд╛ рдкрд╛рда;
GtkCellRendererProgress -
рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА , рдФрд░ рдпрджрд┐ рдЕрдзрд┐рдХ рд╕рд░рд▓рддрд╛ рд╕реЗ - рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд ProgressBar рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдФрд░ рд╢рдХреНрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ;
GtkCellRendererSpin - рд╣рд┐рдВрдбреЛрд▓рд╛ рдмрдЯрди, рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЯреНрд░реА рд╡реНрдпреВ рдореЗрдВ рд╕реАрдзреЗ рдмрд┐рдЬрд▓реА рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ;
GtkCellRendererToggle - рд╕реЗрд▓ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдмрдЯрди, рдЗрд╕рдХреА рдорджрдж рд╕реЗ рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЭрдВрдбрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдЧреНрд▓реЗрдб рд▓реМрдЯрддреЗ рд╣реИрдВред рдРрдб рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреЙрд▓рдо рд╣реЛрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХреЙрд▓рдо рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрддреНрдкрд╛рджрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдФрд░ рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 4 рдХреЙрд▓рдо рд╣реЛрдВрдЧреЗ: рдирд╛рдо, рд╕реНрд╡рд╛рд╕реНрдереНрдп, рдкрд╛рд╡рд░, рд╕реЗрд▓реЗрдЯреЗрдбред рд▓реЗрдХрд┐рди рдкрд╛рд╡рд░ рдХреЙрд▓рдо рдореЗрдВ, рд╣рдореЗрдВ GtkCellRendererSpin рдФрд░ GtkCellRendererProgress рджреЛрдиреЛрдВ рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдкрд╛рд╡рд░ рд╡реИрд▓реНрдпреВ рдорд┐рд▓рддреА рд╣реИред
рдЬреЛрдбрд╝реА рдЧрдИ рдкрдВрдХреНрддрд┐ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ: рдХреЙрд▓рдо рдХреЙрд▓рдо рдФрд░ рд╡рд╣рд╛рдВ рдмрдЪреНрдЪреЗ рдЯреЗрдХреНрд╕реНрдЯ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ рдЪреБрдиреЗрдВред рдирддреАрдЬрддрди, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ GtkCellRendererText - рдХреЛ рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ред рд╣рдо рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдирд╛рдо рдореЗрдВ,
cellrenderertextName рдирд╛рдо
рд░рдЦреЗрдВ ред рдЕрдЧрд▓рд╛ рдкрд╛рда рдЧреБрдг рд╣реИред рдЬрд╣рд╛рдВ u
рдкрд░реЗрд╢рд╛рди рдХрд╣рддрд╛ рд╣реИ, рддреАрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдбреНрд░реЙрдк рдбрд╛рдЙрди рдореЗрдиреВ рдореЗрдВ
рдирд╛рдо - gchararray рдЪреБрдиреЗрдВред рд╢реВрдиреНрдп рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЙрд▓рдо рдирдВрдмрд░ 0 рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (GtkListStore) рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ (рдЪрд░рд┐рддреНрд░ рдирд╛рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЬрд┐рд╕реЗ рд╣рдо GtkListStore рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ: рдкреНрд░рдХрд╛рд░
gchararray рдХрд╛ рдирд╛рдо )ред

рдкреНрд░реЙрдкрд░реНрдЯреА рд▓рд┐рд╕реНрдЯ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рдФрд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд▓рд░ рджреЗрдЦреЗрдВред рдореИрдВ рдЗрд╕реЗ рдХрдареЛрд░рддрд╛ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ GtkCellRendererText рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рд░рдВрдЧ рдЪрдпрди рдмрдЯрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдПрдХ рд░рдВрдЧ рдЪреБрдиреЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдБ рдиреАрдЪреЗ рдлреЛрд░рдЧреНрд░рд╛рдЙрдВрдб рд░рдВрдЧ рдЧреБрдг рдЖрддрд╛ рд╣реИред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓реЗрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдлрд╝реЙрдиреНрдЯ рд░рдВрдЧ рдХреА рдПрдХ рдЕрд▓рдЧ рд╕рдВрдкрддреНрддрд┐ рд╕рдВрднрд╡ рд╣реЛрдЧреАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рдЕрдирд╕реЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ
Colortext - GdkColor рдЪреБрдиреЗрдВред рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрдЦреНрдпрд╛ 4. рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред GtkListStore рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреЙрд▓рдо рдирдВрдмрд░, рдЬрд╣рд╛рдВ рд╣рдо рдХрд▓рд░ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред рдЯреНрд░реА рд╡реНрдпреВ рдореЗрдВ рд╕реАрдзреЗ рдирд╛рдо рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреБрдгреЛрдВ рдХреЛ рдФрд░ рднреА рдХрдо рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рджреЗрдЦреЗрдВред рдмрдЯрди рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗред рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдмрдВрдзрди рдХрд╛ рд╕рд╛рд░ рдХреНрдпрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдкреНрд░реЙрдкрд░реНрдЯреА рдЪреЗрдХ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рдЧреБрдгреЛрдВ рдореЗрдВ -1 рд╣реИ, рдЕрд░реНрдерд╛рддреНред GtkListStore рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рдХрд┐рд╕ рдХреЙрд▓рдо рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рд╕реНрдЯреЛрд░реЗрдЬ рдХреЙрд▓рдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рд╣рдо рдЦреБрдж рдХреЛ рдХреБрдЫ рдХрдард┐рди рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ GtkListStore рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдВрдЧреА рдФрд░ рдЗрд╕ рд╡реНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдВрдЧреАред
рдЕрдЧрд▓рд╛, рдПрдХ рдФрд░ рдХреЙрд▓рдо рдмрдирд╛рдПрдВред рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╣ рдмрд╛рд╣рд░ рдЦрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдРрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдЧрд╛ред рдПрдХ рдФрд░ рдХреЙрд▓рдо рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рд╣рдореЗрдВ рдЕрдкрдирд╛ GtkCellRendererText рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдореЗрдВ рдПрдХ рдФрд░ рджреГрд╢реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдЧреНрд▓реЗрдб рдХрднреА-рдХрднреА рдереЛрдбрд╝рд╛ рдЕрд╕рд╣рдЬ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИред
рдЕрдм GtkCellRendererProgress рд╡реНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо ProgressBar рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп - рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред рдирдП рдХреЙрд▓рдо рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ Add Child Progress рдЖрдЗрдЯрдо рдЪреБрдиреЗрдВред рд╣рдо
рд╕реЗрд▓рд░реЗрдВрдбрд░рдкреНрд░реЛрдкреНрд░реЛрдЧреНрд░реЗрд╕рд╣реЗрд▓реНрде рдореЗрдВ рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ,
рд╕реНрд╡рд╛рд╕реНрдереНрдп - рдореВрд▓реНрдп рдореЗрдВ рдЪрдпрди рдХрд░реЗрдВ, рдирдВрдмрд░ 1 рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ - рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреЛ GtkListStore рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВред рдЖрдк рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ GtkCellRendererText рдХреЗ рд╕рдорд╛рди рд░рдВрдЧ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ (рдореИрдВрдиреЗ рдмрд╕ рдпрд╣реА рдХрд┐рдпрд╛ рдерд╛) рдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд░рдВрдЧ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЫреЛрдЯреЗ рдмрдЧ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдЖрдк рдмрдЯрди рдкрд░ рдПрдХ рд░рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд▓рд╛рдЗрди рдореЗрдВ рд░рдВрдЧ рдХреЛрдб # 000000000000 рд╣реЛрдЧрд╛ред рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рди рд╣реЛрдВред рд░рдВрдЧ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рдЖрдк рдЗрд╕ рдЯреНрд░реА рд╡реНрдпреВ рдХреЗ рд╕рдВрдкрд╛рджрди рд╕рдВрд╡рд╛рдж рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЫреЛрдЯрд╛ рд╕рд╛ рдЧреНрд▓реЗрдб рдЧреНрд▓реЗрдбред

рдЕрдм рдПрдХ рдФрд░ рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрд╕рдореЗрдВ GtkCellRendererSpin рдФрд░ GtkCellRendererProgress рдбрд╛рд▓реЗрдВ (рдЬреИрд╕реЗ рд╣рдордиреЗ рдКрдкрд░ GtkCellRendererText рдбрд╛рд▓рд╛)ред рдкрд╣рд▓реЗ Add рдЪрд╛рдЗрд▓реНрдб рд╕реНрдкрд┐рди рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реЗ рдПрдб рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрдЧреНрд░реЗрд╕ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдПред рд╣рдо рдЙрдиреНрд╣реЗрдВ
рдХреНрд░рдорд╢рдГ рд╕реЗрд▓рд░реЗрдВрдбрд░рдкрд┐рдирдкрд╛рд╡рд░ рдФрд░
рд╕реЗрд▓рд░реЗрдВрдбрд░рдкреНрд░реЛрдкрд░рдкреЙрд╡рд░ (рдирд╛рдо рд╕рдВрдкрддреНрддрд┐) рдХрд╣рддреЗ рд╣реИрдВред

рдЕрдм, рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЯреНрд░реА рд╡реНрдпреВ рдПрдбрд┐рдЯрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдФрд░
рд╕реЗрд▓рдЯреНрд░реЗрдВрдбрд░рд░реНрд╕рдкрд┐рдирдкрд╛рд╡рд░ рдХреЗ рд▓рд┐рдП adjCellRendererSpinPower рдирд╛рдордХ
GtkAdjustment рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХреА
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдирд▓ рдореЗрдВ, рд╕рдорд╛рдпреЛрдЬрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╡рд┐рдЧреЗрдЯреНрд╕ рдЯреНрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

AdjCellRendererSpinPower рдЧреБрдгреЛрдВ рдореЗрдВ, рдЕрдзрд┐рдХрддрдо рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ:
100.00 , рдкреГрд╖реНрда рдЖрдХрд╛рд░:
0.00 ред рд╣рдо рдЕрдкрдиреЗ GtkTreeView рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рдВрдкрд╛рджрди рдореЛрдб рдореЗрдВ рд▓реМрдЯ рдЖрдПред рдЕрдм рдЖрдкрдХреЛ cellrendererspinPower рдХреЗ рд▓рд┐рдП adjCellRendererSpinPower рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдорд╛рдпреЛрдЬрди рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ, рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
... рдФрд░ adjCellRendererSpinPower рдЪреБрдиреЗрдВред

рдЧреНрд▓реЗрдб рдореЗрдВ рдПрдХ рдФрд░ рдЦрд░рд╛рдм рдмрдЧ рд╣реИред рдЬрдм рдЖрдк рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ GladeXML рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рдпреЛрдЬрди рдзреНрд╡рдЬ рд░реАрд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдЕрдм рдЕрдиреНрдп рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВ, рдкрд╛рда рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╕реЗ
рдмрд┐рдЬрд▓реА рдЪреБрдиреЗрдВ
- рд╕реНрдЯреНрд░реЗрдВрде рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдЯреЛрд░реЗрдЬ рдХреЙрд▓рдо рдирдВрдмрд░ 2 рд╕реЗ рдмрд╛рдЗрдВрдб рдХрд░реЗрдВред

рд╕рд╛рде рд╣реА рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп
рд╣рд╛рдБ :

рдпрд╣ рдЕрднреА рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП:
60 ; рд╕реЗрд▓ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ:
# c0c0e5e5e7e7 (рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рд░рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рдкреИрдбрд┐рдВрдЧ:
5 ред рдЕрдм CellrendererprogressPower рдХреЗ рд▓рд┐рдП рд╣рдо рдкрд╛рда (рдкреИрдорд╛рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрд╛рда) рдФрд░ рдореВрд▓реНрдп (рд╕реНрдХреЗрд▓ рд╡реИрд▓реНрдпреВ) рдХреЛ рднреА
рдкрд╛рд╡рд░ / Gint рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ ред

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
100 ; рд╕реЗрд▓ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ:
# c0c0e5e5e7e7 рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рдкреИрдбрд┐рдВрдЧ:
5 ред
рдпрд╣ GtkTreeView - cellrenderertoggleSelected - рдЯрд╛рдЗрдк рдЯреЙрдЧрд▓ рдХрд╛ рд╡рд┐рдЬреЗрдЯ (рдРрдб рдЯреЙрдЧрд▓ рдЖрдЗрдЯрдо) рдХрд╛ рдЕрдВрддрд┐рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рд╕реЗ рдХреЙрд▓рдо рдирдВрдмрд░ 3 рдХреЗ рд╕рд╛рде
рдЪрдпрдирд┐рдд рдЯрдВрдЧрдбрд╝реА рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЯреЙрдЧрд▓ рд░рд╛рдЬреНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд░реЗрдВ:

рд╕реЗрд▓ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд▓рд░ рднреА рд╕реЗрдЯ рдХрд░реЗрдВ:
# c0c0e5e5e7e7 ред
рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдХреЙрд▓рдо рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд╢реАрд░реНрд╖рдХ рдореЗрдВ рд╕реНрддрдВрдн рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВред рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдпреЛрдВ рдореЗрдВ:
рдирд╛рдо ,
рд╕реНрд╡рд╛рд╕реНрдереНрдп ,
рд╢рдХреНрддрд┐ ,
рдЪрдпрдирд┐рдд :

рдпрд╣ GtkTreeView рдХрд╛ рд╕реЗрдЯрдЕрдк рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╡рд┐рдЬреЗрдЯ рдЯреНрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХреБрдЫ GtkTreeView рд╡рд┐рдЧреЗрдЯреНрд╕ рдФрд░ рдЦреБрдж рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ (рдИрд╡реЗрдВрдЯ) рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо cellrenderertextName рд╡рд┐рдЬреЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдЯреИрдм рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдШрдЯрдирд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рдЕрднреА рднреА рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛)
рд╕рдВрдкрд╛рджрд┐рдд - рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╕рдВрдкрд╛рджрдиред рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдирд╛рдо
on_cellrenderertextName_edited рд▓рд┐рдЦрдирд╛ , рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЙрд╕реА рддрд░рд╣, рд╣рдо on_cellrendererspinPower_edited рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реЗрд▓реНрд░реЗрдВрдбрд░рд░реНрд╕рдкрд┐рдирдкреЙрд╡рд░ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрд┐рдд рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ - "рд╣рд┐рдВрдбреЛрд▓рд╛" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдп рдмрджрд▓ рд░рд╣рд╛ рд╣реИред CellrenderertoggleSelected рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЯреЙрдЧрд▓ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ - рд╕реНрд╡рд┐рдЪ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░
on_cellrenderertoggleSelected_toggled рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдирд╛рдо рдЪреБрдиреЗрдВред рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЯреНрд░реАрд╡реНрдпреВрдкреНрд▓реЗрдпрд░реНрд╕ рд╡рд┐рдЬреЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕рд┐рдЧреНрдирд▓реНрд╕ рдкрдВрдХреНрддрд┐_рдПрдХреНрдЯреЗрдб рдЯреИрдм рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо on_treeviewPlayers_row_activated рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдирд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдпрд╛ рдЙрд╕рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
рдпрджреНрдпрдкрд┐ рдЖрдк, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдХреЙрд▓ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд▓реЗрдб рдореЗрдВ рд╣реА рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдВрд╡рд╛рдж рдкреИрдирд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдирдП рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдореЗрдиреВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкреЛрд╕реНрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп GtkTreeView рдФрд░ GtkListStore рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╣реИ, рдореИрдВ рдмрд╕ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХрджрдо рдмрддрд╛рдКрдВрдЧрд╛ рдФрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдХреНрд░реЙрд▓рд╡рд┐рдВрдбреЛ 1 рдХреЗ рд▓рд┐рдП, рдЖрдХрд╛рд░ рдФрд░ рд╕рд┐рдХреЛрдбрд╝рдиреЗ рдХреЗ рдЧреБрдг рджреЛрдиреЛрдВ рдХреЛ
рд╣рд╛рдВ (рдкреИрдХрд┐рдВрдЧ рдЯреИрдм) рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдЕрдиреБрд░реЛрдз рдХреЛ
370 (рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм) рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рд╕реНрдХреНрд░реЙрд▓рд╡рд┐рдВрдбреЛ 2 рдХреЗ рд▓рд┐рдП, рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрдкрддреНрддрд┐
рдирд╣реАрдВ рд╣реИ , рдФрд░ рд╕рд┐рдХреБрдбрд╝рдирд╛
рд╣рд╛рдБ рд╣реИ , рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдЕрдиреБрд░реЛрдз
250 рд╣реИ ред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП GtkViewport рд╡рд┐рдЬреЗрдЯ рдХреЛ рд╕реНрдХреНрд░реЙрд▓рдбрд╡рд┐рдВрдбреЛ 2 рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ GtkVBox рд╡рд┐рдЬреЗрдЯ (рд╡рд░реНрдЯрд┐рдХрд▓ рдХрдВрдЯреЗрдирд░), рдЬрд┐рд╕рдореЗрдВ 8 рд╕реЗрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдкрд╣рд▓реЗ рдЪрд╛рд░ GtkHBox рд╡рд┐рдЧреЗрдЯреНрд╕ (рдХреНрд╖реИрддрд┐рдЬ рдХрдВрдЯреЗрдирд░) рд╣реЛрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ GtkLabel (рд╣рд╕реНрддрд╛рдХреНрд╖рд░) рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╛рдо (GtkEntry), spinbuttonHealth (GtkSpinButton), spintontonPower (GtkSpinButton) рдФрд░ colorbutFontColor (Gtk)ред рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ: 4 GtkHBox рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рджреЛ рд╕реЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдмрд╛рдПрдВ) рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг (рджрд╛рдПрдВ) рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдзред
рдиреАрдЪреЗ рдЪрд╛рд░ рдмрдЯрди рд╣реИрдВ: butAdd, butDelete, butPrint, butQuitред GtkVBox рдХреЗ рдЕрдВрджрд░ рд╕рднреА рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкреИрдХрд┐рдВрдЧ рдЯреИрдм рдореЗрдВ
No рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ (рдпреЗ рдЧреБрдг рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ
рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ)ред SpinbuttonHealth рдФрд░ spinbuttonPower рд╡рд┐рдЬреЗрдЯ рд╕рдВрдмрдВрдзрд┐рдд GtkAdjustment рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде рднреА рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ adjHealth рдФрд░ adjPower рдХрд╣рд╛ред рдФрд░ рдЗрд╕реА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
SpinbuttonHealth рдФрд░
spinbuttonPower рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ adjHealth рдФрд░
adjPower рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЙрдирдХреЗ рд╕рдорд╛рдпреЛрдЬрди рдЧреБрдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рд╣реЛрддрд╛ рд╣реИред
рдЧреНрд▓реЗрдб рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдмрдЯрди рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ: butAdd, butDelete, butPrint, butQuitред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдЬреЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреНрд▓рд┐рдХ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рдЯреИрдм рдореЗрдВ
on_butAdd_clicked ,
on_butDelete_clicked ,
on_butPrint_clicked ,
on_butQuit_clicked рдкрд░ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ ред
рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреА рдкреВрд░реА рдЦрд┐рдбрд╝рдХреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

рдЕрдм рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред рд╕рднреА рдХреЛрдб Example1.cpp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реЛрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
#include <stdlib.h> #include <gtk/gtk.h> #define UI_FILE "mainForm.glade"
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛, рдЬрд┐рд╕рдХрд╛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
enum { NAME = 0, HEALTH, POWER, SELECTED, FONT_COLOR };
рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, рдирд╛рдо рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЧреНрд▓реЗрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ рдЯреИрдм рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╕реА ++ рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реА рдореЗрдВ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЖрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
extern "C" void on_butQuit_clicked(GtkWidget *TopWindow, gpointer data); extern "C" void on_butAdd_clicked(GtkWidget *window, gpointer data); extern "C" void on_butDelete_clicked (GtkButton *remove, gpointer data); extern "C" void on_butPrint_clicked(GtkWidget *button, gpointer data); extern "C" void on_cellrendererspinPower_edited(GtkCellRendererText *render, gchar *path, gchar *new_text, gpointer data); extern "C" void on_cellrenderertoggleSelected_toggled(GtkCellRendererToggle *render, gchar *path, gpointer data); extern "C" void on_treeviewPlayers_row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data); extern "C" void on_cellrenderertextName_edited(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer data);
рдЧреНрд▓реЗрдб рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдореБрдЦреНрдп рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдЧреНрд▓реЗрдбрдПрдХреНрд╕рдПрдордПрд▓ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
struct MainWindowObjects { GtkWindow *topWindow; GtkTreeView *treeviewPlayers; GtkListStore *liststorePlayers; GtkEntry *entryName; GtkAdjustment *adjHealth; GtkAdjustment *adjPower; GtkColorButton *colorbutFontColor; } mainWindowObjects;
рдореБрдЦреНрдп рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ GladeXML рдкреНрд░рд╛рд░реВрдк рд╕реЗ рд╡рд┐рдЬреЗрдЯ рдорд┐рд▓рддреЗ рд╣реИрдВред Gtk_tree_selection_set_mode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо GtkTreeView рдореЗрдВ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ gtk_builder_connect_signals рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде mainWindowObjects рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, gpointer рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕рднреА рд╡рд┐рдЬреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
int main(int argc, char** argv) { GtkBuilder *builder; GError *error = NULL; gtk_init( &argc, &argv ); builder = gtk_builder_new(); if( ! gtk_builder_add_from_file( builder, UI_FILE, &error ) ) { g_warning( "%s\n", error->message ); g_free( error ); return( 1 ); } mainWindowObjects.topWindow = GTK_WINDOW(gtk_builder_get_object(builder, "topWindow")); mainWindowObjects.treeviewPlayers = GTK_TREE_VIEW( gtk_builder_get_object( builder, "treeviewPlayers" ) ); mainWindowObjects.liststorePlayers = GTK_LIST_STORE( gtk_builder_get_object(builder, "liststorePlayers") ); mainWindowObjects.entryName = GTK_ENTRY( gtk_builder_get_object(builder, "entryName") ); mainWindowObjects.adjHealth = GTK_ADJUSTMENT( gtk_builder_get_object(builder, "adjHealth") ); mainWindowObjects.adjPower = GTK_ADJUSTMENT( gtk_builder_get_object(builder, "adjPower") ); mainWindowObjects.colorbutFontColor = GTK_COLOR_BUTTON( gtk_builder_get_object(builder, "colorbutFontColor") ); GtkTreeSelection *selection; selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(mainWindowObjects.treeviewPlayers) ); gtk_tree_selection_set_mode( selection, GTK_SELECTION_MULTIPLE ); gtk_builder_connect_signals (builder, &mainWindowObjects); g_object_unref( G_OBJECT( builder ) ); gtk_widget_show_all ( GTK_WIDGET (mainWindowObjects.topWindow) ); gtk_main (); }
рдПрдХ рдирдП рдЪрд░рд┐рддреНрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред gtk_list_store_append - рдореЙрдбрд▓ (рд╕рдВрдЧреНрд░рд╣рдг) рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рджреЗрддрд╛ рд╣реИ - рдЗрд╕рдХрд╛ рд▓рд┐рдВрдХ рдФрд░ gtk_list_store_set рдлрд╝рдВрдХреНрд╢рди рдЗрдЯрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рд▓рд╛рдЗрди рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдорд╛рди рдЧрдгрдирд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ: NAME, HEALTH, рдЖрджрд┐ред рд╕реНрдирд╛рддрдХ рдХрд╛ рд╕рдВрдХреЗрдд -1 рд╣реИред
void on_butAdd_clicked(GtkWidget *button, gpointer data) { MainWindowObjects* mwo = static_cast<MainWindowObjects*>( data ); GtkTreeIter iter; GdkColor color; gtk_color_button_get_color( mwo->colorbutFontColor, &color ); gtk_list_store_append(GTK_LIST_STORE( mwo->liststorePlayers ), &iter); gtk_list_store_set(GTK_LIST_STORE( mwo->liststorePlayers ), &iter, NAME, gtk_entry_get_text(mwo->entryName), HEALTH, static_cast<int>( gtk_adjustment_get_value(mwo->adjHealth) ), POWER, static_cast<int>( gtk_adjustment_get_value(mwo->adjPower) ), SELECTED, false, FONT_COLOR, &color, -1 ); }
рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд▓ рдХреА рд╕рдВрдкрд╛рджрд┐рдд рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред Gtk_tree_view_get_model рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЕрдкрдиреЗ GtkTechView рд╕реЗ рдЬреБрдбрд╝реЗ рдореЙрдбрд▓ (рд╕реНрдЯреЛрд░) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред Gtk_tree_model_get_iter_from_string рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдореЗрдВ рдкрде рдкрде рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓рддрд╛ рд╣реИ (рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рд╣реИ, рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрде рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рд╣реИ) рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдмрджрд▓рд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдЪрд┐рдд gtk_list_store_set рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдПрдХ рдирдпрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдирдП рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рд╣реИрдВрдбрд▓рд░ (рд╕рд╛рде рд╣реА рдЕрдиреНрдп рд╣реИрдВрдбрд▓рд░) рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ Gtk + рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд╣рд╛рдВ рдШрдЯрдирд╛ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдпрд╛ рдЬреЛ рднреА рд╡реЗ рд╕рдВрдХреЗрдд рдХрд╣рддреЗ рд╣реИрдВ - рд╕рдВрдХреЗрдд рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░) рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
void on_cellrenderertextName_edited(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer data) { MainWindowObjects* mwo = static_cast<MainWindowObjects*>( data ); if ( g_ascii_strcasecmp(new_text, "") != 0 ) { GtkTreeIter iter; GtkTreeModel *model; model = gtk_tree_view_get_model (mwo->treeviewPlayers); if (gtk_tree_model_get_iter_from_string(model, &iter, path) ) gtk_list_store_set(GTK_LIST_STORE (model), &iter, NAME, new_text, -1 ); } }
рд╣рд┐рдВрдбреЛрд▓рд╛ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрдкрд╛рджрди рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЖрдкрдХреЛ рдирдП рдорд╛рди рдХреЛ рдЗрдВрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреБрд░рд╛рдиреЗ рдПрдЯреЙрдп рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
void on_cellrendererspinPower_edited(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer data) { MainWindowObjects* mwo = static_cast<MainWindowObjects*>( data ); if ( g_ascii_strcasecmp(new_text, "") != 0 ) { GtkTreeIter iter; GtkTreeModel *model; model = gtk_tree_view_get_model (mwo->treeviewPlayers); if (gtk_tree_model_get_iter_from_string(model, &iter, path) ) gtk_list_store_set(GTK_LIST_STORE (model), &iter, POWER, atoi(new_text), -1 ); } }
рд╕реНрд╡рд┐рдЪ (рдзреНрд╡рдЬ) рдХреЗ рд╕рд╛рде рд╕реЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди - 4 рд╡рд╛рдВ рдХреЙрд▓рдоред Gtk_tree_model_get рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рд╕реНрд╡рд┐рдЪ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдкрд░реАрдд рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ: рдЪрдпрдирд┐рдд!
void on_cellrenderertoggleSelected_toggled(GtkCellRendererToggle *render, gchar *path, gpointer data) { MainWindowObjects* mwo = static_cast<MainWindowObjects*>( data ); GtkTreeIter iter; GtkTreeModel *model; gboolean selected; model = gtk_tree_view_get_model ( mwo->treeviewPlayers ); if (gtk_tree_model_get_iter_from_string(model, &iter, path) ) { gtk_tree_model_get( model, &iter, 3, &selected, -1 ); gtk_list_store_set( GTK_LIST_STORE (model), &iter, SELECTED, !selected, -1 ); } }
рдЪрдпрдирд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдореБрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред Gtk_tree_model_get_iter_first рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рд╕рдордп рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдЦрд╛рд▓реА рд╣реИ (рд░реАрдбрд░ рдлреНрд▓реИрдЧ)ред Gtk_tree_model_get рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╡рд░реНрддрдорд╛рди рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рд╕реЗрд▓ рд╡реИрд▓реНрдпреВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред Gtk_tree_model_iter_next рдХреЗ рд╕рд╛рде рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдкрд░ рдЬрд╛рдПрдВред void on_butPrint_clicked(GtkWidget *button, gpointer data) { MainWindowObjects* mwo = static_cast<MainWindowObjects*>( data ); GtkTreeIter iter; gboolean reader = gtk_tree_model_get_iter_first(GTK_TREE_MODEL( mwo->liststorePlayers ), &iter); g_print( "Selected rows:\n" ); while ( reader ) { gboolean selected; gtk_tree_model_get (GTK_TREE_MODEL( mwo->liststorePlayers ), &iter, SELECTED, &selected, -1); if ( selected ) { gchar* name; gint health; gint power; gtk_tree_model_get (GTK_TREE_MODEL( mwo->liststorePlayers ), &iter, NAME, &name, HEALTH, &health, POWER, &power, -1); g_print( "%s %d %d\n", name, health, power ); } reader = gtk_tree_model_iter_next(GTK_TREE_MODEL( mwo->liststorePlayers ), &iter); } }
GtkTreeView рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред Gtk_tree_model_get_iter рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдкрде рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ gtk_tree_model_get рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реБрдЪрд┐ рдХреЗ рдбреЗрдЯрд╛ рдорд┐рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред void on_treeviewPlayers_row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) { GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model( treeview ); if ( gtk_tree_model_get_iter(model, &iter, path) ) { gchar* name; gint health; gint power; gtk_tree_model_get(model, &iter, NAME, &name, HEALTH, &health, POWER, &power, -1); g_print( "Current row: %s %d %d\n", name, health, power); } }
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди GtkTreeView рдореЗрдВ рдЪрдпрдирд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рд╣реИред gtk_list_store_remove - рдпрд╣ рд░реЗрдЦрд╛ рдЙрд╕ рд╕реВрдЪреА рд╕реЗ рд╣рдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ iter рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдкрд╣рд▓реЗ рд╣рдо gtk_tree_row_reference_get_path рдХреЗ рд╕рд╛рде рдкрде рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрде рдХреЛ gtk_tree_model_get_iter рдХреЗ рд╕рд╛рде рдкрде рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред static void remove_row (GtkTreeRowReference *ref, GtkTreeModel *model) { GtkTreeIter iter; GtkTreePath *path; path = gtk_tree_row_reference_get_path (ref); gtk_tree_model_get_iter (model, &iter, path); gtk_list_store_remove (GTK_LIST_STORE (model), &iter); }
Gtk_tree_selection_get_selected_rows рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдореЗрдВ рдЪрдпрдирд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрдпрдирд┐рдд рд▓рд╛рдЗрди рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ gtk_tree_row_reference_new рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрде рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд▓рд┐рдВрдХ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ g_list_prepend рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджрд░реНрдн рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВредрд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП g_list_foreach рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ remove_row рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЗрд╕реА рддрд░рд╣ g_list_foreach рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЕрдкрдиреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рддреЗ рд╣реИрдВред void on_butDelete_clicked (GtkButton *remove, gpointer data) { MainWindowObjects* mwo = static_cast<MainWindowObjects*>( data ); GtkTreeSelection *selection; GtkTreeRowReference *ref; GtkTreeModel *model; GList *rows, *ptr, *references = NULL; selection = gtk_tree_view_get_selection ( mwo->treeviewPlayers ); model = gtk_tree_view_get_model ( mwo->treeviewPlayers ); rows = gtk_tree_selection_get_selected_rows (selection, &model); ptr = rows; while (ptr != NULL) { ref = gtk_tree_row_reference_new (model, (GtkTreePath*) ptr->data); references = g_list_prepend (references, gtk_tree_row_reference_copy (ref)); gtk_tree_row_reference_free (ref); ptr = ptr->next; } g_list_foreach ( references, (GFunc) remove_row, model ); g_list_foreach ( references, (GFunc) gtk_tree_row_reference_free, NULL ); g_list_foreach ( rows, (GFunc) gtk_tree_path_free, NULL ); g_list_free ( references ); g_list_free ( rows ); }
рдЬреАрдЯреАрдХреЗ + рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреНрд▓реЛрдЬрд░ рд╣реИрдВрдбрд▓рд░ рдЗрдВрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди void on_butQuit_clicked(GtkWidget *window, gpointer data) { gtk_main_quit(); }
рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛: CC=g++ LDLIBS=`pkg-config --libs gtk+-2.0 gmodule-2.0` CFLAGS=-Wall -g `pkg-config --cflags gtk+-2.0 gmodule-2.0` example1: example1.o $(CC) $(LDLIBS) example1.o -o example1 example1.o: example1.cpp $(CC) $(CFLAGS) -c example1.cpp clean: rm -f example1 rm -f *.o
рдЕрдм рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдордиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕рдХреЗ рд╕рд╛рде "рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП" рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреЗ рд╡рд┐рддрд░рдг рдХрдВрд╕реЛрд▓ рд╕реЗ рдЪрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЙрдирдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рдЪреБрдирдХрд░ рдХреБрдЫ рд╡рд░реНрдг рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред 4 рд╡реЗрдВ рдХреЙрд▓рдо рдореЗрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд┐рдВрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ рдЪреБрдиреЗ рд╣реБрдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред "рд╣рд┐рдВрдбреЛрд▓рд╛" (рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдбрдмрд▓ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд╡рд░ рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрдИ рдЧрдпреА рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ctrl рдпрд╛ Shift рдХреБрдВрдЬреА рджрдмрд╛рдП рд░рдЦреЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдБ рджрдмрд╛рдХрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрдВредрдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдпрд╣рд╛рдБ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редрд╕рдВрдХрд▓рди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ:
$ make
рдЪрд▓ рд░рд╣рд╛ рд╣реИ: $ ./example1
рдореИрдВрдиреЗ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред