gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Руководство GTK# для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

ОглавлСниС

1. ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ являСтся руководством для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… GTK# программистов. Она ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΄ΠΎ этого Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» графичСскиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интрфСйсы (Π΄Π°Π»Π΅Π΅ GUI) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ GTK#. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Ρ€Π°Π½Π΅Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ с GTK+ API ΠΈΠ· ΠΎΠΏΡ‹Ρ‚Π° написания Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках (C, C++, Perl, Python) Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π°ΠΉΠ΄ΡƒΡ‚ этот пассаТ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Ρ‚.ΠΊ. ΠΎΠ½ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ основы процСсса создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° C# Π² срСдС Mono. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Ρ‚Π°ΠΊ ΠΆΠ΅ рассказываСт ΠΎΠ± основах использования Glade ΠΈ libglade ΠΊΠ°ΠΊ быстрого инструмСнта создания графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

1.1 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ GTK#?

БСгодня gtk+ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌ X сСрвСром, Direct Framebuffer’ΠΎΠΌ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π² Microsoft Windows NT. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° gtk+ извСстна ΠΎΡ‚ Linux, Π³Π΄Π΅ ΠΎΠ½Π° являСтся базисом для построСния Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСды GNOME. gtk+ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ практичСски Π²ΠΎ всС дистрибутивы Linux, ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows NT. (Π² 2000 Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ, Ссли ΠΌΠ½Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ измСняСт)

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ gtk+ Π½Π° Mac OS X Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… людСй. Π­Ρ‚ΠΎ Π·ΠΎΠ² ΠΊ ΡƒΡ‡Π°ΡΡ‚ΠΈΡŽ.

2. Установка

2.1 Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅/Установка

Linux, MacOSX, FreeBSD ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² gtk-sharp, mono Π² вашСм дистрибутивС.

aptitude install mono gtk-sharp2

для Debian-based дистрибутивов.
Π’ SuSE Linux Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² YaST. Если ΠΈΡ… Π½Π΅Ρ‚ Π² дистрибутивС, Ρ‚ΠΎΠ³Π΄Π° ΠΈΡ‰ΠΈΡ‚Π΅ здСсь(http://www.mono-project.com/Downloads) ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅. Если Π½Π° mono-project.com Π½Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Π’Π°ΡˆΠ΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚ΠΎΠ³Π΄Π° Π’Π°ΠΌ придСтся ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· исходников πŸ˜‰

Windows: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠΉΡ‚Π΅ Windows.Forms, Π½Π΅ Ρ…Ρ€Π΅Π½ Π»Π΅Π·Ρ‚ΡŒ Π² GTK =) [ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€Π°]

2.2 Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ GTK#

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ GTK#
GTK# состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сборок, каТдая соотвСтствуСт ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅:

gtk-sharp (http://www.mono-project.com/monodoc/N:Gtk)
Бвязи Ρ‚ΡƒΠ»ΠΊΠΈΡ‚Π° gtk+ 2.x для создания GUI

glib-sharp (http://www.mono-project.com/monodoc/N:Glib)
Бвязи Ρ‚ΡƒΠ»ΠΊΠΈΡ‚Π° glib 2.x, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ядра для gtk+ (Π½Π΅-GUI)

pango-sharp (http://www.mono-project.com/monodoc/N:Pango)
Бвязи Pango, высокоуровнСвая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… тСкстов

atk-sharp (http://www.mono-project.com/monodoc/N:Atk)
связи ΠΊ atk Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ

gdk-sharp (http://www.mono-project.com/monodoc/N:Gdk)
Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ инструмСнтарий для «Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ gtk+

glade-sharp (http://www.mono-project.com/monodoc/N:Glade)
Glade# позволяСт Π’Π°ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ интСрфСйсы Glade Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простой ΠΏΡƒΡ‚ΡŒ создания GTK# GUI.

art-sharp (http://www.mono-project.com/monodoc/N:Art)
Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ ΠΈ отрисовки

rsvg-sharp (http://www.mono-project.com/monodoc/N:Rsvg)Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° отрисовки SVG

gtk-dotnet (http://www.mono-project.com/monodoc/N:Gtk.DotNet)
интСграция пространства ΠΈΠΌΠ΅Π½ Gtk# с System.Drawing

gnomevfs-sharp (http://www.mono-project.com/monodoc/N:GnomeVfs)
связи Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡ… MIME Ρ‚ΠΈΠΏΠΎΠ², ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ обращСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ GNOME’Π° ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС

vte-sharp (http://www.mono-project.com/monodoc/N:Vte)
связи ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ эмулятору VTE

gconf-sharp (http://www.mono-project.com/monodoc/N:GConf)

Бвязи ΠΊ систСмС хранСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² GNOME

gtkhtml-sharp (http://www.mono-project.com/monodoc/T:Gtk.HTML)
Бвязи ΠΊ лСгковСсному HTML Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρƒ

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² основной дистрибутив GTK#, Π½ΠΎ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ упоминания, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ GTK#: Gecko#, Gtksourceview#, Gsf#, Guile#, Gst# ΠΈ dbus#.

2.3 GTK# ΠΈΠ»ΠΈ Glade#

Для быстрого ознакомлСния с Glade# Π’Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° этот скринкаст(http://nat.org/demos/gtksharp.html) Ната Π€Ρ€ΠΈΠ΄ΠΌΠ°Π½Π° (Nat Friedman)(http://nat.org), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ создаСт простоС графичСскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всСго Π·Π° нСсколько ΠΌΠΈΠ½ΡƒΡ‚.

3. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ GTK# ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π¨Π°Π³ 1. ΠŸΡ€ΠΈΡΡΠ΄ΡŒΡ‚Π΅ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅

Π¨Π°Π³ 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для малСнького ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. (ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Windows: Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π² дальнСйшСм Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ).

ВСрнСмся ΠΊ Π΄Π΅Π»Ρƒ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (MonoDevelop, vi, emacs, notepad ΠΈ Ρ‚.Π΄.) ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ пустой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) ΠΈΠ»ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ пустой Ρ„Π°ΠΉΠ». Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ «helloworld.cs».

Π¨Π°Π³ 3. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

Π― надСюсь, Ρ‡Ρ‚ΠΎ Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с C#, ΠΈ ΠΊΠΎΠ΄ написанный Π½ΠΈΠΆΠ΅ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Gtk# ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ вСсьма Π·Π½Π°ΠΊΠΎΠΌΠΎ для Вас. Волько Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ компилятором. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ исходный ΠΊΠΎΠ΄, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π² консоль ΠΈ построим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

Π¨Π°Π³ 4. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ графичСского интСрфСйса GUI

Π’Π΅ΠΏΠ΅Ρ€ΡŒ скомпилируСм исходный ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ это Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΈ запустим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:
gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅
НС Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ слоТно, Π΄Π°?

Другая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, которая ΠΌΠΎΠ³Π»Π° Вас Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ, это использованиС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ «Application.Init()» ΠΈ «Application.Run()». Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Ρ€Π°Π½Π΅Π΅ использовали System.Windows.Forms это Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ использованию «Application.Run()» Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° прилоТСния Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ любого ΠΊΠΎΠ΄Π° Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ останавливаСтся. Команда «ShowAll()» Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ дальнСйшСС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ остановки). Команда «Application.Init()» Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ выполнСния «ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ» сигналы ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ Gtk.Windows ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ³Π΄Π° выполняСтся «Application.Run()» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° пСрСдаСтся основному Ρ†ΠΈΠΊΠ»Ρƒ сообщСний. Π­Ρ‚ΠΎ позволяСт ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ всС ΠΎΠΊΠ½Π°. Для большСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ смотритС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Application.

Π¨Π°Π³ 5. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π’Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ сСбя «ΠšΠ°ΠΊ я смогу Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π½Π° ΠΎΠΊΠ½ΠΎ, Ссли ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚?» Π”ΠΎ этого ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Window Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Π½ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ сам ΠΏΠΎ сСбС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ². НСкоторыС ΠΈΠ· этих Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Gtk.Box, Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Bin наслСдуСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ Π²ΠΈΠΆΠ΄Π΅Ρ‚Π°-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, Π½ΠΎ Bin ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт управлСния.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ большоС количСство Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π² нашСм ΠΎΠΊΠ½Π΅, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° ΠΎΠΊΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. БущСствуСт мноТСство Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это, Π½ΠΎ ΠΌΡ‹ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ простыС: HBox(http://www.go-mono.com/docs/index.aspx?link=T%3aGtk.HBox), VBox(http://www.go-mono.com/docs/index.aspx?link=T%3aGtk.VBox) ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Table(http://www.go-mono.com/docs/index.aspx?link=T%3aGtk.Table).

Π¨Π°Π³ 6. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ событий

МногиС ΠΈΡ… этих событий ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ стандартным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ событий. НапримСр:

public static void HandlerMethod(object obj, EventArgs args)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ:

public static void ButtonPressHandler(object obj, ButtonPressEventArgs args)

НапримСр, для использования события Gdk.Event ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π±Ρ‹Π»ΠΎ Π»ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΌΡ‹ΡˆΠΊΠΎΠΉ ΠΈΠ»ΠΈ это Π±Ρ‹Π» Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ»ΠΈΠΊ.

4. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Glade# ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π¨Π°Π³ 1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Glade#

4.1.1 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ glade Ρ„Π°ΠΉΠ»Ρ‹?

Π¨Π°Π³ 2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ glade Ρ„Π°ΠΉΠ»ΠΎΠ² с нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ

Π’ намСрСниях нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠ³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ GUI Π±Ρ‹Π» сохранСн Π² Ρ„Π°ΠΉΠ» gui.glade, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит описаниС ΠΎΠΊΠ½Π° window1, ΠΊΠ½ΠΎΠΏΠΊΠΈ button1 ΠΈ ΠΌΠ΅Ρ‚ΠΊΠΈ label1.

Нам Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Gtk# ΠΈ Glade#, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

4.2.1 Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный Ρ„Π°ΠΉΠ» glade.cs указывая пространство ΠΈΠΌΠ΅Π½ для glade, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ glade-sharp. Команда компиляции ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

Если ΠΌΡ‹ запускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ наш GUI ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, наТимая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’Ρ‹ Π½Π΅ Π΄ΠΎΠ±ΡŒΠ΅Ρ‚Π΅ΡΡŒ эффСкта, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π°Π»ΠΈ событий Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρƒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π² gui.glade Ρ„Π°ΠΉΠ»Π΅. Π˜Π·ΡƒΡ‡ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ это Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π¨Π°Π³ 3. Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Glade# Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅

4.4 Как ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² gui.glade

Для доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² gui.glade Ρ„Π°ΠΉΠ»Π΅, Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π² C# ΠΊΠΎΠ΄. ДСлаСтся это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ [Widget]):

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΊΠ°ΠΊ слСдуСт Π½ΠΈΠΆΠ΅ Π² ΠΊΠΎΠ΄Π΅:

4.5 Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ событиС

Для добавлСния событий Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ события ΠΈΠ· Glade.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Установка ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GTK

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Xamarin.Forms ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GTK # прСдоставляСтся сообщСством. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Xamarin.Forms ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ, создайтС Π½ΠΎΠ²ΠΎΠ΅ Xamarin.Forms Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Xamarin.Forms Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³Π°ΠΌΠ΅ΠΎΡ„Π»ΠΈΡ„Π΅.

хотя Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассматриваСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ прилоТСния GTK # Π² Xamarin.Forms Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² VS2017 ΠΈ Visual Studio для Mac, Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² monodevelop для Linux.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ прилоТСния GTK

Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ эти инструкции, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GTK #, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС Windows:

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GTK ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ NuGet ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ΠžΠ±Π·ΠΎΡ€ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ поиск Xamarin.Forms 3,0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅.

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ » ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ «.

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ » ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ «.

Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ имя Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ NuGet для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ОбновлСниС ΠΈ Xamarin.Forms ΠΏΠ°ΠΊΠ΅Ρ‚. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ всС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΈΡ… Π΄ΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ Xamarin.Forms вСрсии, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ GTK.

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ДиспСтчСр ссылок Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠžΠ±Π·ΠΎΡ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ C:\Program Files (x86) \GtkSharp\2.12\lib ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ atk-sharp.dll, gdk-sharp.dll, glade-sharp.dll, glib-sharp.dll, gtk-dotnet.dll ΠΈ gtk-sharp.dll Ρ„Π°ΠΉΠ»ΠΎΠ².

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ GTK ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ Class1. CS Π² Program. CS.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ GTK # ΠΈ Xamarin.Forms создаСт ΠΎΠΊΠ½ΠΎ прилоТСния ΠΈ запускаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π’ ΠžΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GTK ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ свойства.

Π² ΠΎΠΊΠ½Π΅ свойства ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ список Ρ‚ΠΈΠΏ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Windows ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’ ΠžΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GTK ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Project запуска. Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Visual Studio Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС Windows:

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ эти инструкции, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GTK #, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС Mac:

Π² ПанСль Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ > Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GTK ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Xamarin.Forms ΠΏΠ°ΠΊΠ΅Ρ‚ NuGet ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии 3,0 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅.

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для использования Ρ‚ΠΎΠΉ ΠΆΠ΅ Xamarin.Forms вСрсии, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ GTK.

Π’ панСль Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ссылки > ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ссылки. для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GTK ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ссылку Π½Π° Xamarin.Forms ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (.NET Standard ΠΈΠ»ΠΈ Shared Project).

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Program. CS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GTK, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ соотвСтствовал ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ GTK # ΠΈ Xamarin.Forms создаСт ΠΎΠΊΠ½ΠΎ прилоТСния ΠΈ запускаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π’ панСль Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GTK ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Project запуска.

Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов Visual Studio для Mac Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ пуск (Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΡƒ воспроизвСдСния), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Next Steps

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Xamarin.Forms выполняСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ XAML ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ характСристики ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π² GTK #. Π’ ΠΊΠΎΠ΄Π΅ Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Device.RuntimePlatform с Device.GTK константой (которая Ρ€Π°Π²Π½Π° строкС «GTK»). ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ совпадСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² GTK #.

Π’ XAML ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ OnPlatform Ρ‚Π΅Π³ для Π²Ρ‹Π±ΠΎΡ€Π° значСния свойства, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹:

Π—Π½Π°Ρ‡ΠΎΠΊ прилоТСния

Π—Π½Π°Ρ‡ΠΎΠΊ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ запускС:

Для GTK # доступны Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· Xamarin.Forms прилоТСния:

БобствСнныС Ρ„ΠΎΡ€ΠΌΡ‹

БобствСнныС Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Xamarin.Forms ContentPage ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ страницы Π² собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ GTK #. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ создания экзСмпляра страницы, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ‚ класса, ContentPage ΠΈ прСобразования Π΅Π΅ Π² собствСнный Ρ‚ΠΈΠΏ GTK # с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CreateContainer ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ:

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ собствСнных Ρ„ΠΎΡ€ΠΌΠ°Ρ… см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ собствСнныС Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия, поэтому слСдуСт Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ производству. БвСдСния ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ состояниС, Π° свСдСния ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… извСстных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ & извСстныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GTK

На Π₯Π°Π±Ρ€Π°Π₯Π°Π±Ρ€Π΅ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ появился Π½ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠ³, посвящённый GTK. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ! πŸ™‚

Π’ сСти Π±Ρ‹Ρ‚ΡƒΡŽΡ‚ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹Π΅ слухи ΠΎΠ± этом Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ сСриСй статСй ΠΎ Π½Ρ‘ΠΌ Π½Π° Π₯Π°Π±Ρ€Π°Π₯Π°Π±Ρ€Π΅ я ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ слоТившиСся стСрСотипы.

GTK+ β€” это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания кроссплатформСнного графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (GUI). Наряду с Qt ΠΎΠ½ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных Π½Π° сСгодняшний дСнь Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для X Window System.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Ρ‹Π»Π° Ρ‡Π°ΡΡ‚ΡŒΡŽ графичСского Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° GIMP, Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ стала нСзависимой ΠΈ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ. GTK+ β€” это свободноС ПО, распространяСмоС Π½Π° условиях GNU LGPL ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ свободноС, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС.

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

GTK+ написан Π½Π° языкС Π‘ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ нСсмотря Π½Π° это, являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… языков: Ada, C, C++, C#, D, Erlang, Fortran, GOB, Genie, Haskell, FreeBASIC, Free Pascal, Java, JavaScript, Lua, OCaml, Perl, PHP, PureBasic, Python, R, Ruby, Smalltalk, Tcl, Vala.

Π’Π½ΡƒΡ‚Ρ€ΠΈ GTK+ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: GTK, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π°Π±ΠΎΡ€ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² (ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΌΠ΅Ρ‚ΠΊΠ° ΠΈ Ρ‚.Π΄.) ΠΈ GDK, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ занят Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π½Π° экран.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ программистом ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прилоТСния выглядят Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, Ρ‚.Π΅. Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² этой систСмС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, начиная с вСрсии 3.0, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ внСшний Π²ΠΈΠ΄ элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CSS.

Π”Π΅Π»Π°Π΅ΠΌ Β«Hello, WorldΒ»

Для Π½Π°Ρ‡Π°Π»Π° Π·Π° основу Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ:

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (//), Ссли ΠΊΠ°ΠΊ ΠΈ я Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π‘ΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ для Π½Π°Ρ‡Π°Π»Π° создадим ΠΎΠΊΠ½ΠΎ нашСго прилоТСния. Π’ GTK сущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² окошСк, Π½ΠΎ Π½Π°ΠΌ понадобится ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ GtkWindow. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² Π½Π°ΡˆΡƒ Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ, нСсколько слов ΠΎΠ± ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅.

Π’ GTK+ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ принято Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π½Π΅ ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ, Π° ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. Окно, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ создали, Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Нам этого Ρ…Π²Π°Ρ‚ΠΈΡ‚, Π½ΠΎ Π² ΠΈΠ½ΠΎΠΌ случаС Π½Π°ΠΌ Π±Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ· сСбя сСтку, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ поля. Но ΠΎΠ± этом я ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ расскаТу Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ‚ΠΎΠΏΠΈΠΊΠ΅.

Пока остановимся Π½Π° ΠΎΠΊΠ½Π΅. Напомню, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ Π³Ρ€Π°Π½ΠΈΡ† Π² 50 пиксСлСй. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚?

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создаём своСго Ρ€ΠΎΠ΄Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡƒΡŽ Ρ€Π°ΠΌΠΊΡƒ Π²ΠΎΠΊΡ€ΡƒΠ³ этого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ ΠΏΠΎ этому Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ смоТСм Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² этой области.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим сигналы.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ, со своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ окошко с надписью «И Ρ‚Π΅Π±Π΅ ΠΏΡ€ΠΈΠ²Π΅Ρ‚, %username%!Β».

Кнопка (GtkButton) β€” это Ρ‚ΠΎΠΆΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ созданиСм ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π΅Ρ‘ Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ, сдСлаСм Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ:

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ welcome :

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС наТатия:

gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ просто ΠΈ быстро ΠΌΡ‹ создали Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΎΠΏΠΈΠΊΠ°Ρ… я расскаТу ΠΏΡ€ΠΎ использованиС Glade (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π±Π΅Π· ΠΊΠΎΠ΄Π°) ΠΈ созданиС собствСнных Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ².

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ GTK для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° (кончаСтся Π½Π° «-dev»).

Π§Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Ρ‘?

Π”Π°, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько ссылок:

www.gtkforums.com β€” англоязычный Ρ„ΠΎΡ€ΡƒΠΌ, посвящённый GTK

developer.gnome.org β€” информация для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ΄ срСду GNOME. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ GTK, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° русском языкС.

UPD: ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° PasteBin β€” pastebin.com/iPttWBne gtk Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GTK+

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ познакомились с систСмой X Window System, самоС врСмя Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств GTK+ Toolkit. GTK+ появился Π½Π° свСт ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ популярного графичСского Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° GNU Image Manipulation Program (GIMP), ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ ΠΈ унаслСдовал своС имя (The Gimp ToolKit). ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ программисты GIMP Π²ΡΠ΅Ρ€ΡŒΠ΅Π· ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ GTK+ Π² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ вырос ΠΈ стал ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΈ популярных ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΠΎΠ² инструмСнтов. Π”ΠΎΠΌΠ°ΡˆΠ½ΡŽΡŽ страницу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GTK+ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу https://www.gtk.org/.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, GTK+ β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая сущСствСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС графичСских интСрфСйсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Graphical User Interface, GUI), прСдоставляя Π½Π°Π±ΠΎΡ€ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹Ρ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ соСдиняСтС вмСстС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»Π΅Π³ΠΊΠΈΡ… Π² использовании Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру вашСго прилоТСния

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ GTK+ β€” это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GNU, ΠΊΠ°ΠΊ ΠΈ GIMP, ΠΎΠ½ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π½Π° условиях Π±ΠΎΠ»Π΅Π΅ Π»ΠΈΠ±Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ (Lesser General Public License, Бтандартная общСствСнная лицСнзия ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ примСнСния GNU), которая освобоТдаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС с Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ), написанноС с использованиСм GTK+, ΠΎΡ‚ ΡƒΠΏΠ»Π°Ρ‚Ρ‹ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Ρ… Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ авторских Π³ΠΎΠ½ΠΎΡ€Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ GTK+ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ написан Π½Π° языкС C ΠΈ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния GTK+ Ρ‚Π°ΠΊΠΆΠ΅ написана Π½Π° C. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, сущСствуСт ряд привязок ΠΊ языкам (linguage binding), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ GTK+ Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²Π°ΠΌΠΈ языкС программирования, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ C++, Python, PHP, Ruby, Perl, C# ΠΈΠ»ΠΈ Java.

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ GTK+ сформирован ΠΊΠ°ΠΊ надстройка для ряда Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. К Π½ΠΈΠΌ относятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

GLib β€” прСдоставляСт Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΈΠΏΡ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ†ΠΈΠΊΠ»ΠΎΠ² событий ΠΈ динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ;

GObject β€” Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ систСму Π½Π° языкС C, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΡƒΡŽ примСнСния языка C++;

Pango β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста;

ATK β€” ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с доступом ΠΈ возволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ваши прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСдств чтСния экрана ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… срСдств доступа;

GDK (GIMP Drawing Kit) β€” ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Xlib;

GdkPixbuf β€” ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСниями Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… GTK+;

Cairo β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для отрисовки Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ;

Xlib β€” прСдоставляСт Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π² систСмах Linux ΠΈ Unix.

БистСма Ρ‚ΠΈΠΏΠΎΠ² Glib

GLib ΠΈ GObject ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΌΠ΅ΠΆΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌ, обСспСчивая стандартный Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… замСщСния, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ макросов для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±Ρ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡. Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ макросы ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ программисты GTK+, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ наш ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ пСрСносится Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ GLib Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ нСсколько ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… констант:

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… β€” это Ρ‚ΠΈΠΏΡ‹, слуТащиС Π·Π°ΠΌΠ΅Π½ΠΎΠΉ для стандартных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… C (ΠΈΠ· сообраТСний совмСстимости ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ… Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…:

gpointer β€” синоним Ρ‚ΠΈΠΏΠ° (void *) ;

gboolean β€” ΠΏΠΎΠ»Π΅Π·Π΅Π½ для прСдставлСния логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ слуТит ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ для int ;

БистСма ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² GTK+

ВсС, Ρƒ ΠΊΠΎΠ³ΠΎ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ программирования GUI, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠΉΠΌΡƒΡ‚ нашС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ строгой привСрТСнности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ GUI ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП), Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ строгой, Ρ‡Ρ‚ΠΎ всС соврСмСнныС ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Ρ‹ инструмСнтов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ GTK+, написаны Π² стилС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ инструмСнтов GTK+ написан Π½Π° чистом C, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ООП благодаря Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ GObject. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ наслСдованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макросов.

Π’Ρ‹ примСняСтС макрос GTK_CONTAINER для привСдСния Ρ‚ΠΈΠΏΠΎΠ² GtkWidget ΠΈ GtkContainer :

НазначСниС этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ·ΠΆΠ΅; сСйчас просто ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ для сСбя частоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ макросов. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ привСдСния Ρ‚ΠΈΠΏΠ° сущСствуСт макрос.

НС Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, Ссли Π²Π°ΠΌ всё это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ понятно; Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² подробностях ООП для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ GNOME/GTK+. На самом Π΄Π΅Π»Π΅ это Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΉ способ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ ΠΈ прСимущСства ООП Π½Π° Π±Π°Π·Π΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ Π²Π°ΠΌ языка C.

Знакомство с GNOME

GNOME β€” имя, Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π½Π°Ρ‡Π°Ρ‚ΠΎΠΌΡƒ Π² 1997 Π³. программистами, Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΌΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ GNU Image Manipulation Program (GIMP) Π½Π°Π΄ созданиСм ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола для Linux. ВсС Π±Ρ‹Π»ΠΈ согласны с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ОБ Linux ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола тормозился отсутствиСм согласованной стратСгии. Π’ Ρ‚ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол Linux Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π» Π”ΠΈΠΊΠΈΠΉ Π—Π°ΠΏΠ°Π΄ Π±Π΅Π· ΠΎΠ±Ρ‰ΠΈΡ… стандартов ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ², ΠΈ программисты ΠΌΠΎΠ³Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ вздумаСтся. Π‘Π΅Π· свободной Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ мСню Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола, согласованноС прСдставлСниС ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΠΈ Ρ‚. Π΄., освоСниС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠΌ Π±Ρ‹Π»ΠΎ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Π° Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ β€” Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ.

Π“Ρ€ΡƒΠΏΠΏΠ° GNOME Π½Π°ΠΌΠ΅Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол для ОБ Linux с Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL, разрабатывая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ настройки Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ согласованном стилС, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ способствуя Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ стандартов для взаимодСйствия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, управлСния сСансами ΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΡ… стараний ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹: срСда GNOME β€” основа стандартного Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола Linux Π² дистрибутивах Debian, Fedora, Red Hat, Ubuntu ΠΈ Π΄Ρ€. (рис. 1).

gtk Ρ‡Ρ‚ΠΎ это такоСРис. 1. ΠžΠ±Π·ΠΎΡ€ активности Π² GNOME 3

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ GNOME ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ GNU Network Object Model Environment (срСда сСтСвых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ GNU), Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ€Π°Π½Π΅Π΅ поставлСнных Π·Π°Π΄Π°Ρ‡, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π² систСму Linux ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмы, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Microsoft OLE, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ тСкстового процСссора. Π’Π΅ΠΏΠ΅Ρ€ΡŒ поставлСны Π½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сСгодня Π½Π°ΠΌ извСстно ΠΊΠ°ΠΊ GNOME, β€” это закончСнная Π²Ρ€Π΅Π΄Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола, содСрТащая панСль для запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ программирования ΠΈ срСдства ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ установлСны.

Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GTK+

Π’ дистрибутивС Debian ΠΈ основанных Π½Π° Debian систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ubuntu, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ apt (ΠΈΠ»ΠΈ apt-get ) для установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² GTK+ с Ρ€Π°Π·Π½Ρ‹Ρ… сайтов-Π·Π΅Ρ€ΠΊΠ°Π» (mirrors). Π’Π°ΠΊ для установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GTK+ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

gtk Ρ‡Ρ‚ΠΎ это такоСРис. 2. gtk3-demo β€” дСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GTK+

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Info (Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ) ΠΈ Source (Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄). На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Source ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° языкС C для примСнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°. На Π½Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ GtkWindow

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ срСдствами GTK+ с ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ GUI β€” отобраТСния ΠΎΠΊΠ½Π°. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GTK+ Π² дСйствии ΠΈ большой Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Ρ‘ gtk1.c :

Для компиляции gtk1.c Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈ Π½Π°Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ апострофы, Π° Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ апострофы β€” ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ апострофы β€” это инструкции, Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² Π½ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ† строки.

Когда Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, вашС ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ (рис. 3).

gtk Ρ‡Ρ‚ΠΎ это такоСРис. 3. ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ GtkWindow

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° вСсь экран.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ type ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² зависимости ΠΎΡ‚ назначСния ΠΎΠΊΠ½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

GTK_WINDOW_TOPLEVEL β€” стандартноС ΠΎΠΊΠ½ΠΎ с Ρ€Π°ΠΌΠΊΠΎΠΉ;

GTK_WINDOW_POPUP β€” ΠΎΠΊΠ½ΠΎ Π±Π΅Π· Ρ€Π°ΠΌΠΊΠΈ, подходящСС для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

Π’Ρ‹Π·ΠΎΠ² gtk_window_new создаСт ΠΎΠΊΠ½Π° Π² памяти, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρƒ вас появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΎΠΊΠ½Π° Π½Π° экран Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π°, Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Ρ‚. Π΄. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠ½ΠΎ появилось Π½Π° экранС, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gtk_widget_show :

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *