Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 62

Автор Π­Ρ€ΠΈΠΊ Π Π΅ΠΉΠΌΠΎΠ½Π΄

3. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ рСгулярныС выраТСния. Π—Π°ΠΏΠΈΡΡŒ, принятая Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ вСрсии grep, egrep(1) для извлСчСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π° строк, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ. РСгулярныС выраТСния Π² Lex ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Emacs вСсьма Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊ egrep-разновидности.

4. Π Π΅Π³ΡƒΠ»ΡΡ€Π½Ρ‹Π΅ выраТСния языка Perl. Π€ΠΎΡ€ΠΌΠ° записи, принятая Π² regexp-функциях языков Perl ΠΈ Python. ВыраТСния этого Ρ‚ΠΈΠΏΠ° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с egrep-Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ.

ПослС рассмотрСния основных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 8.2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° сводка стандартных шаблонов для рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ-масок, поэтому запись "для всСх" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 3 Ρ‚ΠΈΠΏΠ°: Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ/Emacs ΠΈ Perl/Python[79].


Π’Π°Π±Π»ΠΈΡ†Π° 8.2. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с рСгулярными выраТСниями

Π‘ΠΈΠΌΠ²ΠΎΠ»-шаблон ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ строка \ Π²ΠΎ всСх Начало escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, слСдуСт Π»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π½Π°ΠΊ ΠΊΠ°ΠΊ шаблон. ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами Π² зависимости ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ . Π²ΠΎ всСх Π›ΡŽΠ±ΠΎΠΉ символ ^ Π²ΠΎ всСх Начало строки $ Π²ΠΎ всСх ΠšΠΎΠ½Π΅Ρ† строки [...] Π²ΠΎ всСх Π›ΡŽΠ±ΠΎΠΉ ΠΈΠ· символов, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² скобках [^...] Π²ΠΎ всСх Π›ΡŽΠ±Ρ‹Π΅ символы, ΠΊΡ€ΠΎΠΌΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² скобках * Π²ΠΎ всСх Π›ΡŽΠ±ΠΎΠ΅ количСство экзСмпляров ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта ? egrep/Emacs, Perl/Python Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ экзСмпляр ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта + egrep/Emacs, Perl/Python Один ΠΈΠ»ΠΈ нСсколько экзСмпляров ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта {n} egrep, Perl/Python; ΠΊΠ°ΠΊ \{n\} Π² Emacs Π’ точности n ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта. НС поддСрТиваСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ старыми regexp-срСдствами {n,} egrep, Perl/Python; ΠΊΠ°ΠΊ \{n,\} Π² Emacs n ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта. НС поддСрТиваСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ старыми regexp-срСдствами {m,n} egrep, Perl/Python; ΠΊΠ°ΠΊ \{m,n\} Π² Emacs ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ m ΠΈ максимум n ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта. НС поддСрТиваСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ старыми regexp-срСдствами | egrep, Perl/Python; ΠΊΠ°ΠΊ \| Π² Emacs Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ слСва ΠΈΠ»ΠΈ справа. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ (...) Perl/Python; ΠΊΠ°ΠΊ \(...\) Π² Π±ΠΎΠ»Π΅Π΅ старых вСрсиях Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ шаблон ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΡƒ (Π² Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… regexp-функциях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² языках Perl ΠΈ Python). Π‘ΠΎΠ»Π΅Π΅ старыС срСдства, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ regexp-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Emacs ΠΈ Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ grep Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ записи \(...\)

Π’ Π½ΠΎΠ²Ρ‹Ρ… языках с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Perl/Python-Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Он являСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅, особСнно ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ обратная косая Ρ‡Π΅Ρ€Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ символом всСгда ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ символ трактуСтся Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ устраняСт ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ ΠΏΡ€ΠΈ ссылкС Π½Π° элСмСнты рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

РСгулярныС выраТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, насколько Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈ-язык. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ рСгулярныС выраТСния ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ Ρ€Π΅ΠΆΠΈΠΌ распознавания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сотСн строк Ρ‚ΡƒΠΌΠ°Π½Π½ΠΎΠ³ΠΎ, Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎΠ³ΠΎ ошибками ΠΊΠΎΠ΄Π°.

8.2.3. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Glade

Glade прСдставляСт собой срСдство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ интСрфСйсов для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π₯-инструмСнтария[80] GTK с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Glade позволяСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ GUI-интСрфСйс ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°, размСщСния ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ элСмСнтов управлСния Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ интСрфСйса. GUI-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ создаСт XML-Ρ„Π°ΠΉΠ», ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ интСрфСйс. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСпосрСдствСнно ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π‘, Π‘++, Python- ΠΈΠ»ΠΈ Perl-ΠΊΠΎΠ΄ для интСрфСйса. Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ создаваСмыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ интСрфСйса.

XML-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Glade для описания GUI-интСрфСйсов являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ простого ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈ-языка. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 8.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ Glade-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для GUI-интСрфСйса "Hello, world!".

АдСкватная спСцификация Π² Glade-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ дСйствий, ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… GUI-интСрфСйсом Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. GUI-интСрфСйс Glade ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ спСцификации ΠΊΠ°ΠΊ структурированныС Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π° Glade ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΡ… для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… GUI. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языков (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Python) ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этап гСнСрирования ΠΊΠΎΠ΄Π° ΠΈ просто ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ GUI нСпосрСдствСнно Π²ΠΎ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ XML-спСцификации (интСрпрСтируя Glade-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€: эффСктивноС использованиС пространства Ρ†Π΅Π½ΠΎΠΉ скорости запуска ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒ, ΠΎΡΠ²ΠΎΠΈΠ²ΡˆΠ΅ΠΌΡƒ подробности XML-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Glade прСдставляСтся довольно простым языком. Она Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ: ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ GUI-элСмСнтов ΠΈ связываСт свойства с элСмСнтами управлСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ фактичСски Π½Π΅ трСбуСтся досконально Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ glade. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, имСя ΠΎΠΏΡ‹Ρ‚ программирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GUI-инструмСнтариСв ΠΈ читая Π΄Π°Π½Π½ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ сразу довольно наглядно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС интСрфСйс, создаваСмый glade Π½Π° Π΅Π΅ основС. (Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ данная спСцификация позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΊΠ½ΠΎΠΏΠΎΡ‡Π½Ρ‹ΠΉ элСмСнт управлСния Π² ΠΎΠΊΠ½Π΅).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.1. Glade-спСцификация "Hello, world!"

<?xml version="1.0"?>

<GTK-Interface>

 <widget>

  <class>GtkWindow</class>

  <name>HelloWindow</name>

  <border_width>5</border_width>

  <Signal>

   <name>destroy</name>

   <handler>gtk_main_quit</handler>

  </Signal>

  <title>Hello</title>

  <type>GTK_WINDOW_TOPLEVEL</type>

  <position>GTK_WIN_POS_NONE</position>

  <allow_shrink>True</allow_shrink>

  <allow_grow>True</allow_grow>

  <auto_shrink>False</auto_shrink>

  <widget>

   <class>GtkButton</class>

   <name>Hello World</name>

   <can_focus>True</can_focus>

   <Signal>

    <name>clicked</name>

    <handler>gtk_widget_destroy</handler>

    <object>HelloWindow</object>

   </Signal>

   <label>Hello World</label>

  </widget>

 </widget>

</GTK-Interface>

Вакая ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ простота ΡΠ²Π»ΡΡŽΡ‚ΡΡ слСдствиСм Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ конструкции ΠΌΠΈΠ½ΠΈ- языка. БоотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области вСсьма ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ. Бвязи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ нСпосрСдствСнно, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ссылки ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ нСпрямоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Основой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ тСст для ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈ-языка прост: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ языкС, Π½Π΅ изучая руководство? Для Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ количСства случаСв использования Glade это Ρ‚Π°ΠΊ. НапримСр, зная константы C-уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² GTK ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для описания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² позиционирования ΠΎΠΊΠ½Π°, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ константу GTK_WIN_POS_NONE ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½ΠΈΡ… ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ позиционирования, связанныС с Π΄Π°Π½Π½Ρ‹ΠΌ GUI-интСрфСйсом.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования Glade Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹. Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° спСциализируСтся Π½Π° создании ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ освобоТдаСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ нСобходимости Π΅Π³ΠΎ собствСнной спСциализации. Π’ΠΎ Π΅ΡΡ‚ΡŒ Glade ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° сСбя ΠΎΠ΄Π½Ρƒ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС придСтся Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ избавляСтся ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· источников ошибок, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.