рдпрд╣ рдкреЛрд╕реНрдЯ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо GTK + рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрддреА рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ? рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рд╕реА рд╕рд░рд▓ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдпрдерд╛рд╕рдВрднрд╡ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛред
рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ GTK + рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд▓реЗрдЦ рдирд╣реАрдВ рд╣реИрдВред рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ "рдкреЗрди" рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрднреА-рдХрднреА рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЦреБрдж рдЗрд╕ рдкрд╛рд░ рдЖрдпрд╛ рдерд╛ рдФрд░ рдЕрдХреНрд╕рд░ рдЕрдзрд┐рдХ рд╕рдордп рд╕рд╣реА рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╡рд┐рдЬреЗрдЯреНрд╕ (рд╡рд╕реНрддреБрдУрдВ) рдХреЛ рд░рдЦрдиреЗ, рдФрд░ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдирд╣реАрдВ рдмрд┐рддрд╛рдпрд╛ред
рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐
рдЧреНрд▓реЗрдб рд╡рд┐рдЬрд╝реБрдЕрд▓ рдЬреАрдпреВрдЖрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреАрдЯреАрдХреЗ + рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░реЗрдВред рдЧреНрд▓реЗрдб рди рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ рдФрд░ рди рд╣реА рдбрд┐рдмрдЧрд░ред рдпрд╣ рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЧреНрд▓реЗрдбрдПрдХреНрд╕рдПрдордПрд▓ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЬреАрдЯреАрдХреЗ + рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдореВрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реА рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реА ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рддрджрдиреБрд╕рд╛рд░, рдЫреЛрдЯреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ред рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдореИрдВ Ubuntu 10.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдХрд╛рд░реНрдп рдпрд╣ рд╣реЛрдЧрд╛: рдПрдХ рдХреИрдирд╡рд╛рд╕, рдПрдХ рд╕рд╛рдЗрдб рдореЗрдиреВ (рдХреИрдирд╡рд╛рд╕ рдкрд░ рдХреНрдпрд╛ рдЪреБрдирдирд╛ рд╣реИ), рдореБрдЦреНрдп рдореЗрдиреВ рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рдЦреЗрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╕рд╛рдЗрдб рдореЗрдиреВ рдФрд░ рдХреИрдирд╡рд╛рд╕ рдкреВрд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╕рдордп рд╕реНрдерд┐рд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреИрдирд╡рд╛рд╕ рд╕реНрдерд┐рдд рд╣реИ, рдЙрд╕рдХрд╛ рдЖрдХрд╛рд░ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ / рдХрдореА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:
- Glade3 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
- рд╣рдо рдЧреНрд▓реЗрдб 3 рдореЗрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ, рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдЬреЗрдЯреНрд╕ (рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕), рд╡рд┐рдЬреЗрдЯреНрд╕ рдФрд░ рдЙрдирдХреЗ рд╣реИрдВрдбрд▓рд░ (рд╣реИрдВрдбрд▓рд░) рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ (рд╕рд┐рдВрдЧрдирд▓, рд╕рд┐рдЧреНрдирд▓) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЕрд░реНрдерд╛рддреНред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХреЛрдб рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЬрд┐рд╕реЗ рдпрд╣ рд╕рдВрдХреЗрдд рд╣реЛрдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
- рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд▓рд┐рдЦреЗрдВ: XML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░реЗрдВ, рд╣реИрдВрдбрд▓рд░ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд┐рдЦреЗрдВ
- рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдереЛрдбрд╝рд╛ рдкрд░рдЦреЗрдВ
рдЧреНрд▓реЗрдб 3 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреАрдЯреАрдХреЗ + рджреЗрд╡ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
sudo aptitude install libgtk2.0-dev
рдЖрдк рдЙрдмрдВрдЯреВ рдЕрдкрдбреЗрдЯ рд╕реЗрдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдлрд┐рд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд▓реЗрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
sudo apt-get install glade-gnome
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди - рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ - рдЧреНрд▓реЗрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ
рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рд╕рдВрд╕реНрдХрд░рдг рдЯреВрд▓рдХрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг 2.16 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

рдмрд╛рдИрдВ рдУрд░ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдпрд╛ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдбреЗрд▓реНрдлреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред рджрд╛рдИрдВ рдУрд░ рджреЛ рдореЗрдиреВ рд╣реИрдВ: рдПрдХ рд╡рд┐рдЬреЗрдЯ рдкрджрд╛рдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рдВрдбреЛ рд╡рд┐рдЬреЗрдЯ рдЧреБрдг рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдЬреАрдпреВрдЖрдИ рдирд┐рд░реНрдорд╛рдг
рдЕрдкрдиреЗ GTK + рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдирд╛ рдореБрдЦреНрдп рдлреЙрд░реНрдо - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдмрд╛рдПрдВ рдореЗрдиреВ рдХреЗ TopLevels рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рдВрдбреЛ рд╡рд┐рдЬреЗрдЯ рдкрд╛рддреЗ рд╣реИрдВред
рдЧреБрдг рд╡рд┐рдВрдбреЛ рдореЗрдВ рджрд╛рдИрдВ рдУрд░, рдЗрд╕ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВ:
рдирд╛рдо:
topWindowрд╡рд┐рдВрдбреЛрдЬ рд╕реНрдерд┐рддрд┐:
рдХреЗрдВрджреНрд░рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪреМрдбрд╝рд╛рдИ:
500рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдКрдВрдЪрд╛рдИ:
320
рд╣рдо рд╕рд┐рдЧреНрдирд▓ рдЯреИрдм (рд╕рд┐рдЧреНрдирд▓, рдИрд╡реЗрдВрдЯ) рдФрд░ GtkObject рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╣реИрдВрдбрд▓рд░ рдХреЙрд▓рдо (рд╣реИрдВрдбрд▓рд░) рдореЗрдВ
рдЯреЙрдкрд╡рд┐рдиреНрдбреЛ_рдбрд╕реНрдЯреНрд░реЛ_cb рд▓рд┐рдЦреЗрдВ рдпрд╛ рд╕реВрдЪреА рд╕реЗ рдЪрдпрди рдХрд░реЗрдВред рдпрд╣ рдЙрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛ рдЬреЛ рдирд╖реНрдЯ рд╕рдВрдХреЗрдд рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ - рдореБрдЦреНрдп рд░реВрдк рдХреЛ рдмрдВрдж рдХрд░рдирд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рдореЗрдиреВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рдЧ (рдпрд╣ рдХреИрдирд╡рд╛рд╕ рдФрд░ рдореЗрдиреВ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ) рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреАред рдХрдВрдЯреЗрдирд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдмрд╛рдПрдВ рдореЗрдиреВ рдореЗрдВ рд╡рд░реНрдЯрд┐рдХрд▓ рдмреЙрдХреНрд╕ рд╡рд┐рдЬреЗрдЯ рдХрдВрдЯреЗрдирд░ рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВред рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд╛рдж рдореЗрдВ, рдЖрдЗрдЯрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЪреБрдиреЗрдВ: 3. рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ 3 рд╡рд┐рдЧреЗрдЯреНрд╕ рд░рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ vbox1 рдХрдВрдЯреЗрдирд░ рдореЗрдВ 3 рддрдерд╛рдХрдерд┐рдд рд╕реЗрд▓ рдпрд╛ рдбрд┐рдмреНрдмреЗ рд╣реИрдВред рджреВрд╕рд░реЗ (рдХреЗрдВрджреНрд░) рдбрд┐рдмреНрдмреЗ рдореЗрдВ, рдлрд╝реНрд░реЗрдо (рд╡рд┐рдЬреЗрдЯ рдореЗрдиреВ рдХреЗ рдХрдВрдЯреЗрдирд░ рдЕрдиреБрднрд╛рдЧ) рдбрд╛рд▓реЗрдВред рд╣рдо рджрд╛рдИрдВ рдУрд░ рд╡рд┐рдЬреЗрдЯ рдЯреНрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдмрдирд╛рдП рдЧрдП рд╡рд┐рдЬреЗрдЯ рдлреНрд░реЗрдо 1 рдХреЗ рдЕрдВрджрд░ рджреЛ рд╡рд┐рдЬреЗрдЯ рд╣реЛрдВрдЧреЗ: рдПрд▓рд╛рдЗрдирдореЗрдВрдЯ 1 рдФрд░ рд▓реЗрдмрд▓ 1 - рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдУрд░ рдореБрдбрд╝реЗрдВрдЧреЗред
рдпрд╣ рд╕рдордЭрдирд╛ рдХрд┐ рд╡рд┐рдЬреЗрдЯ рдЖрдХрд╛рд░ рдХреЛ GTK + рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╣реА рдФрд░ рдХреБрд╢рд▓ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдХреНрд╕рд░ рдЕрдиреБрдореЛрджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдШрдЯрдХ (2 рдЪрд░рдг) рд╣реЛрддреЗ рд╣реИрдВ: рдЕрдиреБрд░реЛрдзрд┐рдд рдЖрдХрд╛рд░ рдФрд░ рдЖрд╡рдВрдЯрд┐рдд рдЖрдХрд╛рд░ред
рдЕрдиреБрд░реЛрдз рдЪрд░рдг рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╢реНрди рд╣реИ: "рдЖрдкрдХреЛ рдХрд┐рддрдиреА рдЬрдЧрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?" рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдЗрд╕реЗ рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдВрдбреЛ рдкрд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдВрдбреЛ рдЗрд╕реЗ рдЙрдирдХреЗ рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдВрдбреЛ рдкрд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЗрд╕ рдкреВрд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рднреА рд╡рд┐рдЬреЗрдЯ рдирд╣реАрдВ рдорд┐рд▓рддреЗред
2 рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВ:
- рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдЬреЗрдЯ рдкреИрд░реЗрдВрдЯ рд╡рд┐рдЬреЗрдЯ рд╕рд╛рдЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддреЗ
- рдкреИрд░реЗрдВрдЯ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рдЕрдм рдЬрдм рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдХрд┐рддрдиреА рдЬрдЧрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдиреА рдЬрдЧрд╣ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдпрджрд┐ рдПрдХ рдЙрдЪрд┐рдд рдореВрд▓реНрдп рдЕрдиреБрд░реЛрдз рдкрд░ рдЖрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, gtk_window_setdefault_size рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдпрд╛ рдЕрдиреНрдпрдерд╛, рд╡рд┐рдВрдбреЛ рдЕрдиреБрд░реЛрдзрд┐рдд рдЖрдХрд╛рд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рд╕реЗрдЯ рдХрд░рддреА рд╣реИред
рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ (рдЖрдХрд╛рд░ рдХрд╛ рдЖрд╡рдВрдЯрди), рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЗ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рд╣реЛрддрд╛ рд╣реИ: "рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЬрдЧрд╣ рд╣реИ, рдЗрд╕рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░реЗрдВред" рдпрджрд┐ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдЬреЗрдЯ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЪрд░рдг рдХрд╛ рдХрд╛рд░реНрдп рдмрдЪреНрдЪреЗ рдХреЗ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдмреАрдЪ рдореБрдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдареАрдХ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдЬреЗрдЯ рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреНрд╖реИрддрд┐рдЬ рдкреИрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдлреНрд░реЗрдо 1 рдкрд░ рд░рдЦреЗрдВред рд╣рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдмрд╛рдИрдВ рдУрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджрд╛рдИрдВ рдУрд░ рдирд╣реАрдВред рдлрд┐рд░ рд╕реЗ, рд╡рд┐рдЬреЗрдЯ рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реНрдХреНрд░реЙрд▓ рд╡рд┐рдВрдбреЛ рджреЗрдЦреЗрдВред рдФрд░ рдкрд╣рд▓реЗ рд╣рдо рдПрдХ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдбрд┐рдмреНрдмреЗ рдореЗрдВ рджреВрд╕рд░реА рд╕реНрдХреНрд░реЙрд▓ рдХреА рдЧрдИ рд╡рд┐рдВрдбреЛ hpand1 (рдХреНрд╖реИрддрд┐рдЬ рдлрд▓рдХ)ред рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рд╡рд┐рдВрдбреЛ рдореЗрдВ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдХреНрд░реЙрд▓рдбрд╡рд┐рдВрдбреЛ 1 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ (рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдореЗрдВ) рдЪреМрдбрд╝рд╛рдИ reguest
145 рддрдХ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЕрдиреБрд░реЛрдзрд┐рдд рдЖрдХрд╛рд░ (рдорд┐рд▓рд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП) рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рдпрд╣ рднреА рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдХреНрд░реЙрд▓рд╡рд┐рдВрдбреЛ 1 рдХреА рд░рд┐рд╕рд╛рдЗрдЬ рд╕рдВрдкрддреНрддрд┐ рдкреИрдХрд┐рдВрдЧ рдЯреИрдм рдореЗрдВ
рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реЙрд▓рд╡рд┐рдВрдбреЛ 2
рд╣рд╛рдВ рд╣реИ ред
рдХрдВрдЯреЗрдирд░ рд╕реЗрдХреНрд╢рди рд╕реЗ, рд╣рдо рдкрд╣рд▓реЗ ViewPort рд╡рд┐рдЬреЗрдЯ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рд╕реНрдХреНрд░реЙрд▓рдбреЙрдиреНрдбрд╡реЛ 1 рдФрд░ рд╕реНрдХреНрд░реЙрд▓рдбрд╡рд┐рдВрдбреЛ 2 рджреЛрдиреЛрдВ рдкрд░ рдХреНрд░рдорд╢рдГ рджреВрд╕рд░рд╛ред

рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рд╕рд╛рдЗрдб рдореЗрдиреВ рд▓реЗрддреЗ рд╣реИрдВред 3 рдбрд┐рдмреНрдмреЛрдВ рдХреЗ рд╕рд╛рде ViewPort1 рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдмреЙрдХреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рдмреНрдмреЗ рдореЗрдВ рд░реЗрдбрд┐рдпреЛ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдбрд┐рдпреЛ рдмрдЯрди рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╕реНрддреГрдд рдХрд░реЗрдВ рдХреЛрдИ рдЧреБрдг рд╕реЗрдЯ рди рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдореВрд▓ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рди рдХрд░реЗрдВред рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдореЗрдВ рднреА, рдЖрдк рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдБрдЪрд╛рдИ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╡реЗ рдЬреЛ рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдЖрдХрд╛рд░ рд╣реЛрдЧрд╛, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдЖрдХрд╛рд░ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдореЗрдВ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓реЗрдВ:
рдХреНрд░рдорд╢рдГ
rbutRectangle ,
rbutEllipse ,
rbutTriangle рдкрд░ рдирд╛рдо
рдЖрдпрдд ,
рдПрд▓реАрдк ,
рддреНрд░рд┐рднреБрдЬ рдкрд░ рдХреНрд░рдорд╢рдГ рд▓реЗрдмрд▓
рдФрд░ rbutEllipse рдФрд░ rbutTriangle рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдореВрд╣ рдХреА рд╕рдВрдкрддреНрддрд┐
rbutRectangle рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЕрдм рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдбрд┐рдпреЛ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд┐рдЧреНрдирд▓ рдЯреИрдм рдореЗрдВ, рдпрд╣ рдпрд╛ рддреЛ GroupChanged рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдпрд╛ toggled (рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд░реВрдБрдЧрд╛) рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд╣рдо rbutton_toggled_cb рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦреЗрдВрдЧреЗ:

рдЕрдм рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдореБрдбрд╝реЗрдВред ViewPort2 рдореЗрдВ рджреЛ рдбрд┐рдмреНрдмреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЯрд┐рдХрд▓ рдмреЙрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВред рд╢реАрд░реНрд╖ рдореЗрдВ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рд▓реЗрдмрд▓ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдиреАрдЪреЗ рдбреНрд░рд╛рдЗрдВрдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ - рдпрд╣ рдХреИрдирд╡рд╛рд╕ рд╣реЛрдЧрд╛ред рд▓реЗрдмрд▓ 1 рдХреЗ рд▓рд┐рдП, рд▓реЗрдмрд▓ рдЧреБрдг рдореЗрдВ,
300 x 200 рдХреИрдирд╡рд╕ рд▓рд┐рдЦреЗрдВред рдкреИрдХрд┐рдВрдЧ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ
рдЕрдм рд╣рдорд╛рд░рд╛ рдХреИрдирд╡рд╛рд╕ред
рдирд╛рдо:
рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд╡реНрдпрдп:
рдирд╣реАрдВрдЪреМрдбрд╝рд╛рдИ рдЕрдиреБрд░реЛрдз:
300рдКрдВрдЪрд╛рдИ рдХрд╛ рдЕрдиреБрд░реЛрдз:
200рдШрдЯрдирд╛:
рдПрдХреНрд╕рдкреЛрдЬрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ, рдПрдХреНрд╕рдкреЛрдЬрд╝-рдИрд╡реЗрдВрдЯ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ рдФрд░ рд╕реВрдЪреА рд╕реЗ рд▓рд┐рдЦреЗрдВ рдпрд╛ рдЪреБрдиреЗрдВ:
drawingarea_expose_event_cb
рдЕрдм рд╣рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ (рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рдбрд┐рдмреНрдмреЗ рдореЗрдВ) рдФрд░ рдореБрдЦреНрдп рдореЗрдиреВ (рд╕рдмрд╕реЗ рдКрдкрд░реА рдбрд┐рдмреНрдмреЗ рдореЗрдВ) рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рдордиреЗ рдореЗрдиреВ рдмрд╛рд░ (рд╡рд┐рдЬреЗрдЯ рдореЗрдиреВ рдХреЗ рдХрдВрдЯреЗрдирд░ рдЕрдиреБрднрд╛рдЧ) рдХреЛ рдмрд╣реБрдд рдКрдкрд░ рд░рдЦрд╛ рд╣реИ, рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ (рд╡рд┐рдЬреЗрдЯ рдореЗрдиреВ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрднрд╛рдЧ) рдХреЗ рдмрд╣реБрдд рдиреАрдЪреЗ рдбрд┐рдмреНрдмреЗ рдореЗрдВ, рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЖрдЗрдЯрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ: 1ред

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП menubar1 рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдореЗрдиреВ рдЖрдЗрдЯрдо рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред рддрджрдиреБрд╕рд╛рд░, рдЖрдк рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ: menuitem2, menuitem3, menuitem4ред рдлрд┐рд░ menuitem1 рдЦреЛрд▓реЗрдВ, menu1 рдкрд░ рдЬрд╛рдПрдВ рдФрд░ imagemenuitem5 рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВред рдпрд╣ рдХреНрд╡рд┐рдЯ рдЖрдЗрдЯрдо рд╣реИред рдЖрдк рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рд╡рд┐рдВрдбреЛ рдХреЗ рдЬрдирд░рд▓ рдЯреИрдм рдореЗрдВ рд╕реНрдЯреЙрдХ рдЖрдЗрдЯрдо рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ
gtk-Skip рджрд░реНрдЬ рд╣реИред рд╡рд╣рд╛рдВ рдЖрдк "рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред" рдЖрдк рдЖрдо рддреМрд░ рдкрд░ рдХрд╕реНрдЯрдо рд▓реЗрдмрд▓ рдФрд░ рдЫрд╡рд┐ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЦреБрдж рдХреЛ рд╕рдм рдХреБрдЫ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд╕рд┐рдЧреНрдирд▓ рдЯреИрдм рдореЗрдВ imagemenuitem5 рдХреЗ рд▓рд┐рдП, рдлреЙрд░реНрдо рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд╕рд┐рдЧреНрдирд▓ (рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ) рдХреЛ рдЙрд╕реА рддрд░рд╣
рд╕реЗрдЯ рдХрд░реЗрдВ :
topWindow_destroy_cb ред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдВрдд рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ mainForm рдирд╛рдо рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдХреЛ mainForm.glade рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛

рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдХреЛрдб
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдПрдБ рдЬрд╣рд╛рдБ рдЖрдкрдиреЗ mainForm.glade рдХреЛ рдмрдЪрд╛рдпрд╛ рд╣реЛред рдкрд╣рд▓реЗ рдореИрдВ рдкреВрд░рд╛ рдХреЛрдб рджреВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдмрддрд╛рдКрдВрдЧрд╛ред
#include <cairo.h> #include <gtk/gtk.h> #define UI_FILE "mainForm.glade" // GtkBuilder *builder; GtkWidget *topWindow; GtkRadioButton *rbutRectangle, *rbutEllipse, *rbutTriangle; GtkDrawingArea *drawingarea; // extern "C" void topWindow_destroy_cb (GtkObject *object, gpointer user_data); extern "C" gboolean drawingarea_expose_event_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data); extern "C" void rbutton_toggled_cb (GtkObject *object); int main( int argc, char **argv ) { GError *error = NULL; // GTK+ gtk_init( &argc, &argv ); // GtkBuilder builder = gtk_builder_new(); // , Glade if( ! gtk_builder_add_from_file( builder, UI_FILE, &error ) ) { g_warning( "%s", error->message ); g_free( error ); return( 1 ); } // GladeXML topWindow = GTK_WIDGET(gtk_builder_get_object(builder, "topWindow")); rbutRectangle = GTK_RADIO_BUTTON(gtk_builder_get_object(builder, "rbutRectangle")); rbutEllipse = GTK_RADIO_BUTTON(gtk_builder_get_object(builder, "rbutEllipse")); rbutTriangle = GTK_RADIO_BUTTON(gtk_builder_get_object(builder, "rbutTriangle")); drawingarea = GTK_DRAWING_AREA(gtk_builder_get_object(builder, "drawingarea")); // gtk_builder_connect_signals (builder, NULL); // g_object_unref( G_OBJECT( builder ) ); // gtk_widget_show( topWindow ); // gtk_main(); return( 0 ); } // void topWindow_destroy_cb (GtkObject *object, gpointer user_data) { // gtk_main_quit(); } // gboolean drawingarea_expose_event_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data) { cairo_t *cr; cr = gdk_cairo_create (widget->window); cairo_set_line_width (cr, 7); cairo_set_source_rgb (cr, 0, 0, 0); // if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(rbutRectangle))) { // cairo_rectangle (cr, 20, 20, 200, 100); cairo_stroke_preserve(cr); cairo_set_source_rgb(cr, 0, 0.8, 0); } // if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(rbutEllipse))) { // cairo_arc(cr, 150, 100, 90, 0, 2 * 3.14); cairo_stroke_preserve(cr); cairo_set_source_rgb(cr, 0.8, 0, 0); } // if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(rbutTriangle))) { // cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); cairo_move_to (cr, 40, 40); cairo_line_to (cr, 200, 40); cairo_line_to (cr, 120, 160); cairo_line_to (cr, 40, 40); cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND); cairo_stroke_preserve(cr); cairo_set_source_rgb(cr, 0.8, 0, 0.8); } cairo_fill(cr); cairo_destroy(cr); return FALSE; } void rbutton_toggled_cb (GtkObject *object) { // drawingarea gtk_widget_queue_draw (GTK_WIDGET(drawingarea)); }
рдкрд╣рд▓реЗ рд╣рдо рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рд╣рдо рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рд╣рдо C ++ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдмрд╛рд╣рд░реА "C" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо topWindow_destroy_cb рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, Drawingarea_expose_event_cb, rbutton_toggled_cb рдХреЛ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ C. рдСрд░реНрдбрд░ рдореЗрдВ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреНрд░рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред GtkBuilder рдореЗрдВ рдЧреНрд▓реЗрдб рдХреЗ рд╡рд░реНрдгрди рд╕реЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред Gtk_builder_get_object рдлрд╝рдВрдХреНрд╢рди рдХреЛ GtkBuilder (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд┐рд▓реНрдбрд░) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдорд┐рд▓рддрд╛ рд╣реИред Gtk_builder_connect_signals рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд▓реЗрдбрдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдЕрдкрдиреЗ рдЖрдк рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЧреНрд▓реЗрдб рдФрд░ рдХреЛрдб рдореИрдЪ рдореЗрдВ рдирд╛рдоред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛, рдмрд╕ рд╕рдВрдХреЗрддреЛрдВ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА, рдФрд░ рдпрджрд┐ рдЖрдк рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЪреЗрддрд╛рд╡рдиреА рд╡рд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдвреВрдВрдврдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рднреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо C ++ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдмрд╣реБрдд рдмрд╛рд░ рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
rbutRectangle = GTK_RADIO_BUTTON(gtk_builder_get_object(builder, "rbutRectangle"));
рдЕрдЧрд░ рд╣рдордиреЗ C рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рд╣рдо GTK_RADIO_BUTTON рдХреЗ рд╕реНрдкрд╖реНрдЯ рднреВрдд рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реАрдПрдордХреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рд╕реНрд╡рдпрдВ рдПрдХ рдореЗрдлрд╛рдЗрд▓ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ, рджреЛ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреА рд▓рд┐рдВрдХ рдПрдХ рдореЗрдХ рдлрд╛рдЗрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддреЗ рд╣реИрдВред
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
рд╕рдВрдХрд▓рди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ:
make
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдереЛрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг
рд▓реЙрдиреНрдЪ рд╣реЛ рд░рд╣рд╛ рд╣реИ ...

... рдФрд░ рдлрд┐рд░ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ

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

рдЕрдм, рдореИрдВ рдЧреНрд▓реЗрдб 3 рдореЗрдВ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рд▓реЗрдмрд▓ 1 рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рд╛рдВ рдореЗрдВ рдмрджрд▓реВрдВрдЧрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╕ рдореЗрдирдлреЙрд░реНрдо рдлрд╛рдЗрд▓ рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдВред рдФрд░ рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдРрд╕рд╛ рдХреНрдпреЛрдВ? рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХрд╛ рдХреИрдирд╡рд╛рд╕ рд╣реИред рдФрд░ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдмрдбрд╝рд╛ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЬрдЧрд╣ рд▓реЗрдмрд▓ 1 рд╡рд┐рдЬреЗрдЯ рдХреЛ рджреА рдЧрдИ рд╣реИред рдЖрдк рдЗрд╕ рд╕рднреА рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд╕рд╛рде "рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ"ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рд╕рдЯреАрдХ рдКрдБрдЪрд╛рдИ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 70ред рдФрд░ рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╡рд┐рд╖рдп рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИред
рдереЛрдбрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд
Glade3 рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ - рдЖрдХрд╛рд░ рдмрд╛рддрдЪреАрдд рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЖрдкрдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ:
рдкреИрдХрд┐рдВрдЧ рд╡рд┐рдЬреЗрдЯ ,
рдХрд╛рд╣рд┐рд░рд╛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ ,
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ ,
рдЬреАрдПрдирдпреВ `рдореЗрдХ '