cvs: php-gtk-doc /manual/bg bookinfo.xml language-defs.ent preface.xml translation.xml /manual/bg/tutorials changes.xml glade.xml hello_world.xml helloadvanced.xml installation.xml /stylesheets/common bg.xml
[email protected] ("Anant Narayanan") Sat, 13 Jan 2007 10:59:37 -0000
| Newsgroups | php.gtk.doc |
|---|---|
| Message-ID | <cvsanant1168685977@cvsserver> |
anant Sat Jan 13 10:59:37 2007 UTC
Added files:
/php-gtk-doc/manual/bg bookinfo.xml language-defs.ent preface.xml
translation.xml
/php-gtk-doc/manual/bg/tutorials changes.xml glade.xml
hello_world.xml helloadvanced.xml
installation.xml
Modified files:
/php-gtk-doc/stylesheets/common bg.xml
Log:
Start BG translation by Ivaylo
anant-20070113105937.txt
(text/plain, 94.1 KB)
http://cvs.php.net/viewvc.cgi/php-gtk-doc/stylesheets/common/bg.xml?r1=1.1&r2=1.2&diff_format=u
Index: php-gtk-doc/stylesheets/common/bg.xml
diff -u php-gtk-doc/stylesheets/common/bg.xml:1.1 php-gtk-doc/stylesheets/common/bg.xml:1.2
--- php-gtk-doc/stylesheets/common/bg.xml:1.1 Fri May 19 20:33:01 2006
+++ php-gtk-doc/stylesheets/common/bg.xml Sat Jan 13 10:59:37 2007
@@ -1,53 +1,53 @@
<?xml version="1.0" encoding="utf-8" ?>
<localization language="bg">
- <gentext key="by" text="by"/>
- <gentext key="callback" text="Callback function"/>
- <gentext key="constructor" text="Constructor"/>
- <gentext key="constructor" text="Constructors"/>
- <gentext key="copyright" text="Copyright"/>
- <gentext key="description" text="Description"/>
- <gentext key="directsubclasses" text="Direct subclasses"/>
- <gentext key="editedby" text="Edited by:"/>
- <gentext key="fields" text="Fields"/>
- <gentext key="glossary" text="Glossary"/>
- <gentext key="implementedby" text="Implemented by"/>
- <gentext key="implementedinterfaces" text="Implemented interfaces"/>
- <gentext key="interfacewarning" text="This is an interface and cannot be instantiated directly."/>
- <gentext key="listofexamples" text="List of Examples"/>
- <gentext key="listoffigures" text="List of Figures"/>
- <gentext key="listoftables" text="List of Tables"/>
- <gentext key="methods" text="Methods"/>
- <gentext key="nav-prev" text="Prev"/>
- <gentext key="nav-next" text="Next"/>
- <gentext key="nav-up" text="Up"/>
- <gentext key="nav-home" text="Home"/>
- <gentext key="nosubclasses" text="None."/>
- <gentext key="note" text="Note"/>
- <gentext key="objecthierarchy" text="Object Hierarchy"/>
- <gentext key="PHPGTKauths" text="PHP-GTK Author"/>
- <gentext key="PHPGTKcons" text="Current Contributors"/>
- <gentext key="PHPGTKconsp" text="PHP-GTK 1 Contributors"/>
- <gentext key="PHPGTKeditors" text="Current PHP-GTK Manual Editors"/>
- <gentext key="PHPGTKeditorsp" text="PHP-GTK 1 Manual Editors"/>
- <gentext key="PHPGTKmanauths" text="Current PHP-GTK Manual Authors"/>
- <gentext key="PHPGTKmanauthsp" text="PHP-GTK 1 Manual Authors"/>
- <gentext key="properties" text="Properties"/>
- <gentext key="propertiesDisclaimer" text="Use get_property and set_property methods to access these."/>
- <gentext key="seealso" text="See also"/>
- <gentext key="signals" text="Signals"/>
- <gentext key="symbolicname" text="Symbolic name"/>
- <gentext key="tableofcontents" text="Table of Contents"/>
- <gentext key="translatedby" text="Translated by:"/>
- <gentext key="tip" text="Tip"/>
- <gentext key="value" text="Value"/>
+ <gentext key="by" text="от"/>
+ <gentext key="callback" text="Възвратна функция"/>
+ <gentext key="constructor" text="Конструктор"/>
+ <gentext key="constructor" text="Конструктори"/>
+ <gentext key="copyright" text="Авторско право"/>
+ <gentext key="description" text="Описание"/>
+ <gentext key="directsubclasses" text="Директни подкласове"/>
+ <gentext key="editedby" text="Редактирано от:"/>
+ <gentext key="fields" text="Полета"/>
+ <gentext key="glossary" text="Речник"/>
+ <gentext key="implementedby" text="Реализарано от"/>
+ <gentext key="implementedinterfaces" text="Изпълними интерфейси"/>
+ <gentext key="interfacewarning" text="Това е интефейс и не може да бъде стартиран директно."/>
+ <gentext key="listofexamples" text="Списък от Примери"/>
+ <gentext key="listoffigures" text="Списък от Фигури"/>
+ <gentext key="listoftables" text="Списък от Таблици"/>
+ <gentext key="methods" text="Методи"/>
+ <gentext key="nav-prev" text="Предишен"/>
+ <gentext key="nav-next" text="Следващ"/>
+ <gentext key="nav-up" text="Нагоре"/>
+ <gentext key="nav-home" text="Начало"/>
+ <gentext key="nosubclasses" text="Празен."/>
+ <gentext key="note" text="Забележка"/>
+ <gentext key="objecthierarchy" text="Йерархия на обектите"/>
+ <gentext key="PHPGTKauths" text="Автор на PHP-GTK"/>
+ <gentext key="PHPGTKcons" text="Настоящите сътрудници"/>
+ <gentext key="PHPGTKconsp" text="PHP-GTK 1 сътрудниците"/>
+ <gentext key="PHPGTKeditors" text="Настоящите редактори на Наръчника за PHP-GTK"/>
+ <gentext key="PHPGTKeditorsp" text="Редактори на Наръчника за PHP-GTK 1"/>
+ <gentext key="PHPGTKmanauths" text="Настоящите автори на Наръчника за PHP-GTK"/>
+ <gentext key="PHPGTKmanauthsp" text="Автори на Наръчника за PHP-GTK 1"/>
+ <gentext key="properties" text="Свойства"/>
+ <gentext key="propertiesDisclaimer" text="Използвай методите get_property и set_property, за да получиш достъп до това."/>
+ <gentext key="seealso" text="Виж също"/>
+ <gentext key="signals" text="Сигнали"/>
+ <gentext key="symbolicname" text="Символично име"/>
+ <gentext key="tableofcontents" text="Съдържание"/>
+ <gentext key="translatedby" text="Преведено от:"/>
+ <gentext key="tip" text="Трик"/>
+ <gentext key="value" text="Стойност"/>
<context name="glossary">
- <template name="seealso" text="See also:"/>
+ <template name="seealso" text="Виж също:"/>
</context>
<context name="title">
- <template name="appendix" text="Appendix %n. %t"/>
+ <template name="appendix" text="Приложение %n. %t"/>
<template name="book" text="%t"/>
<template name="chapter" text="%t"/>
<template name="classset" text="%t"/>
@@ -58,10 +58,10 @@
<template name="enum" text="%t"/>
<template name="enums" text="%t"/>
<template name="enumset" text="%t"/>
- <template name="example" text="Example %n. %t"/>
+ <template name="example" text="Пример %n. %t"/>
<template name="field" text="%t"/>
<template name="fields" text=""/>
- <template name="figure" text="Figure %n. %t"/>
+ <template name="figure" text="Фигура %n. %t"/>
<template name="glossary" text="%t"/>
<template name="legalnotice" text="%t"/>
<template name="index" text="%t"/>
@@ -79,7 +79,7 @@
<template name="setindex" text="%t"/>
<template name="signal" text="%t"/>
<template name="signals" text=""/>
- <template name="table" text="Table %n. %t"/>
+ <template name="table" text="Таблица %n. %t"/>
</context>
<context name="section-title">
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/bookinfo.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/bookinfo.xml
+++ php-gtk-doc/manual/bg/bookinfo.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<setinfo id="bookinfo">
<title>&PHPGTK2Docs;</title>
&frontpage.authors;
<pubdate>&phpgtk2doc.build-date;</pubdate>
&frontpage.editors;
&frontpage.translators;
<copyright>
<year>©right.years;</year>
<holder>the PHP-GTK Documentation Group</holder>
</copyright>
<legalnotice id="copyright">
<title>Авторски права</title>
<simpara>
Авторските права © ©right.years; принадлежат на the PHP-GTK Documentation Group.
Правото за копиране, разпространение и/или промени на този документ
се извършва в зависимост от лицензията the GNU Free Documentation License, Версия 1.2
(както и всички последващи версии на този документ) публикувани от the Free Software Foundation -
изключвайки разделите Invariant Sections, Front-Cover Texts и Back-Cover Texts.
Копието на този документ може да се открие в раздела
"<link linkend="appendix.license">&doclicense;</link>". Последната публикувана
версия може да се прочете онлайн на адрес
<ulink url="&url.doclicense;">&url.doclicense;</ulink>.
</simpara>
<simpara>
Членовете и преводачите на the PHP-GTK Documentation Group са
изброени в началото на това Ръководство. За контакт с групата,
моля, пишете на &link.phpgtkdoc;. Внимание! Всички съобщения
се публикуват в публичен майлинг лист.
</simpara>
</legalnotice>
</setinfo>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/language-defs.ent?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/language-defs.ent
+++ php-gtk-doc/manual/bg/language-defs.ent
<!-- encoding="utf-8" -->
<!-- $Revision: 1.1 $ -->
<!ENTITY PHPGTK2Docs "Наръчник за PHP-GTK 2">
<!ENTITY PHPGTK2Tutorials "Уроци за PHP-GTK 2">
<!ENTITY PHPGTK2Preface "Предговор">
<!ENTITY PHPGTK2ManualReference "Справочник PHP-GTK 2">
<!ENTITY Appendix "Приложение">
<!ENTITY Credits "PHP-GTK 2 Кредити">
<!ENTITY DocCredits "PHP-GTK 2 Кредити за документацията">
<!ENTITY Classtree "Йерархия на Класовете">
<!ENTITY AtkClasses "ATK Класове">
<!ENTITY AtkClassesDesc "<para>Класове от библиотеката ATK</para>">
<!ENTITY GdkClasses "GDK Класове">
<!ENTITY GdkClassesDesc "<para>Класове от библиотеката GDK</para>">
<!ENTITY GtkClasses "GTK Класове">
<!ENTITY GtkClassesDesc "<para>Класове от библиотеката GTK</para>">
<!ENTITY PangoClasses "Pango Класове">
<!ENTITY PangoClassesDesc "<para>Класове от библиотеката Pango</para>">
<!ENTITY GladeClasses "Glade Класове">
<!ENTITY GladeClassesDesc "<para>Класове предоставени от разширението Glade</para>">
<!ENTITY MozEmbedClasses "MozEmbed Класове">
<!ENTITY MozEmbedClassesDesc "<para>Класове предоставени от разширението MozEmbed</para>">
<!ENTITY SourceviewClasses "Sourceview Класове">
<!ENTITY SourceviewClassesDesc "<para>Класове предоставени от разширението Sourceview</para>">
<!ENTITY AtkEnums "ATK Enums">
<!ENTITY AtkEnumsDesc "Enum-ираните стойности са всяка една от изброените.
Flags могат да бъдат комбинация от посочените стойности. И двете enums и flags имат
числова стойност и ключ, който е разбираем-за-човек.">
<!ENTITY GtkEnums "GTK Enums">
<!ENTITY GtkEnumsDesc "Enum-ираните стойности са всяка една от изброените.
Flags могат да бъдат комбинация от посочените стойности. И двете enums и flags имат
числова стойност и ключ, който е разбираем-за-човек.">
<!ENTITY GdkEnums "GDK Enums">
<!ENTITY GdkEnumsDesc "Enum-ираните стойности са всяка една от изброените.
Flags могат да бъдат комбинация от посочените стойности. И двете enums и flags имат
числова стойност и ключ, който е разбираем-за-човек.">
<!ENTITY PangoEnums "Pango Enums">
<!ENTITY PangoEnumsDesc "Enum-ираните стойности са всяка една от изброените.
Flags могат да бъдат комбинация от посочените стойности. И двете enums и flags имат
числова стойност и ключ, който е разбираем-за-човек.">
<!ENTITY ClassIndex "Индекс: Класове">
<!ENTITY MethodIndex "Индекс: Функции и Методи">
<!ENTITY PropertyIndex "Индекс: Полета и Свойства">
<!ENTITY SignalIndex "Индекс: Сигнали">
<!ENTITY EnumIndex "Индекс: Enum и Flag стойности">
<!-- Specialized Widget -->
<!ENTITY specialized.widget "Този уйджет се смята за много специализиран или слабо използван за GTK+,
и в бъдеще ще бъде преместен в някой друг пакет. Ако Вашата програма има нужда от този уйджет, можете
да го използвате - той ще продължи да работи.">
<!-- Deprecated items -->
<!ENTITY deprecated "ОТХВЪРЛЕН">
<!ENTITY deprecated.method "ВНИМАНИЕ! Този метод вече не се използва в PHP-GTK 2
и при писането на нови програми НЕ трябва да бъде използван">
<!ENTITY deprecated.class "ВНИМАНИЕ! Този клас вече не се използва в PHP-GTK 2
и при писането на нови програми НЕ трябва да бъде използва">
<!--
<!ENTITY deprecated.class "Този клас беше отхвърлен и не трябва да си използва за
написване на новите Ви програми. Моля погледнете <link linkend='tutorials.changes.deprecated'> страницата
с отхвърлените уйджети</link>, за да видите кой клас на негово място можете да използвате.">
-->
<!ENTITY deprecated.property "ВНИМАНИЕ! Това свойство вече не се използва в PHP-GTK 2
и при писането на нови програми НЕ трябва да бъде използва">
<!ENTITY widget.toospecialized "Този уйджет се смята за много специализиран или слабо използван за GTK+,
и в бъдеще ще бъде преместен в някой друг пакет. Ако Вашата програма има нужда от този уйджет, можете
да го използвате - той ще продължи да работи. Имайте в предвид, че в някоя от бъдещите дистрибуции
на GTK+ този уйджет може и да отпадне.">
<!ENTITY seealso "Виж също:">
<!ENTITY static "Този метод трябва да бъде извикан статично.">
<!--
<!ENTITY PHPGTK2ManualUserguide "PHP-GTK 2 Потребителско ръководство">
<!ENTITY Introduction "Въведение в PHP-GTK">
<!ENTITY introblurb "В тази част на ръководството са разгледани идеите и технологиите на самото PHP-GTK.">
<!ENTITY GettingStarted "Нека да започнем">
<!ENTITY startblurb "В тази част на ръководството се обеснява инсталационният процес.">
<!ENTITY BuildingBlocks "Основни Елементи">
<!ENTITY blocksblurb "В тази част на ръководството се прави въвединие в основните елементи на
PHP-GTK и показва простички начини за използването им.">
<!ENTITY GtkExtraClasses "GtkExtra Класове">
<!ENTITY GtkExtraClassesDesc "<para>GtkExtra набор от уйджети, чието предназначение е да запълнят празнотите
оставени от оригиналните класове на GTK+. Можете да ги откриете на
<ulink url='http://gtkextra.sourceforge.net'>gtkextra.sourceforge.net</ulink></para>">
<!ENTITY GtkExtraEnums "GtkExtra Enums">
<!ENTITY GtkExtraEnumsDesc "Enum стойности за класовете на GtkExtra">
<!ENTITY LibGladeClasses "Класове Glade">
<!ENTITY LibGladeClassesDesc "<para>Класовете Glade</para>">
<!ENTITY ScintillaClasses "Класове Scintilla">
<!ENTITY ScintillaClassesDesc "<para>Класовете Scintilla</para>">
-->
<!ENTITY KeysymTitle "Символични имена на ключовете в PHP-GTK 2">
<!-- dummy entry - other languages need to fill this in. Template for them:
<!ENTITY frontpage.translators '<authorgroup id="translators">
<author>
<firstname>Ивайло Ботьов Николов</firstname><surname> - DIVOTO</surname>
</author>
</authorgroup>'>
-->
<!ENTITY frontpage.translators "">
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/preface.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/preface.xml
+++ php-gtk-doc/manual/bg/preface.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<book id="preface">
<title>Предговор</title>
<simpara>
Добре дошли в Наръчникът за PHP-GTK 2! Този наръчник разкрива не само
основите на PHP-GTK 2, но и задълбочено разглежда всички аспекти на
този език за програмиране.
</simpara>
<simpara>
Ръководството е разделено на две части. Първата част е
<link linkend="tutorials">Учебният (Tutorials)</link> раздел. Тази част ще Ви
помогне да започнете да програмирате на PHP-GTK 2, но също ще Ви разкрие и
някои особености и различни аспекти при разработването на програми с PHP-GTK 2.
Втората част е <link linkend="reference">Справочният (Reference)</link> раздел.
В този раздел в детайли са разгледани GTK обектите и асоцийраните към тях методи
и сигнали. Разделът ще Ви послужи при всяко Ваше съмнение относно даден метод
или използван от Вас обект.
</simpara>
<simpara>
Въпруеки нашите усилия за създаване на Ръководство без всякакви грешки е
възможно появяването на такива. В случай, че срещнете някакви грешки, моля,
информирайте the PHP-GTK documentation group: &email.phpgtkdoc;. В случай,
че желаете в това Ръководство да бъде включено нещо, което липсва, Ви молим
да се обърнете с въпрос към майлинг листа PHP-GTK-General mailing list:
&email.phpgtk;.
</simpara>
<simpara>
Това Ръководство е разработено с помоща на модифицирана версия на Docbook DTD.
Промените са направени, за да може да бъде документирана обектно-ориентираната
система използвана при PHP-GTK 2. XML основата за всеки клас и техните методи
в началото са автоматично генерирани от първоначалният код (source code) на
PHP-GTK 2 и след това подновени чрез PHP5's Reflection за получаване на документация,
синхронизирана с първоначалният код.
</simpara>
<simpara>
Програмата за генериране на XML е разработена от &link.andrei; (Авторът на PHP-GTK)
и след това модифицирана от &link.cweiske;. За трансформирането на документацията от
XML към различни формати се използва главно <acronym>XSL</acronym> стилове и др. Самата
Система за играждането на Ръководстовото е разработена от &link.steph;.
</simpara>
<simpara>
Надяваме се четенето на това Ръководство да Ви достави точно толкова удоволствие,
колкото на нас при писането му!
</simpara>
</book>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/translation.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/translation.xml
+++ php-gtk-doc/manual/bg/translation.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorials.translation">
<title>i18n: Работа с gettext</title>
<sect1>
<title>Относно този урок</title>
<simpara>
<!-- TODO -->
</simpara>
</sect1>
</chapter>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/tutorials/changes.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/tutorials/changes.xml
+++ php-gtk-doc/manual/bg/tutorials/changes.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorials.changes">
<title>Промени от PHP-GTK 1</title>
<sect1>
<title>Относно този урок</title>
<simpara>
В този урок ще разгледаме разликите между PHP-GTK 1 и PHP-GTK 2 -
какво беше променено, кое е новото и какво е отпаднало.
</simpara>
<simpara>
PHP-GTK 2 се опитва да бъде съвместима по възможно най-добрият начин с
версия 1, но поради коренните промени направени във версия 2 на GTK,
това понякога е невъзможно. Много от нещата в предишната верия не бяха
променени, но някои малки, но много важни промени трябва да знаете, за да
можете успешно да преминете от версия 1 към верия 2 на PHP-GTK.
</simpara>
</sect1>
<sect1 id="tutorials.changes.loadmodule">
<title>Зареждане на модула php_gtk</title>
<para>
В PHP-GTK 1 не знаехте дали модула php-gtk е бил зареден автомотично в PHP от
конфигурационният фаил <filename>php.ini</filename> или поради лошо
конфигуриране на този фаил (най-честият случай), е необходимо да заредите модула ръчно:
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/changes/extension_load.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</para>
<para>
Във версия 5 на PHP зареждането на модули чрез <literal>dl()</literal> ще отпадне.
Този метод все още може да бъде използван, но не е за предпочитане. Можете да предположите,
че модулът PHP-GTK е вече зареден или да направите проверка за съществуването на този модул
и да отпечатите грешка:
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/changes/extension_check.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</para>
</sect1>
<sect1 id="tutorials.changes.references">
<title>Референции на обекти (Амперсант &)</title>
<para>
Новото в PHP 4 беше поддръжката на Обектно-Ориентираното (ОО) програмиране, но
използването му не беше така добре развито, както при някои други еизици за ОО
програмиране, например JAVA. Когато задавахте дадена променлива беше абсолютно
необходимо да не правите копие на GTK обектите, а да се използват референциите.
<programlisting role="php"><![CDATA[
//PHP 4: копирането беше основният процес
$a = new GtkLabel();
$a->set_text('1');
$b = $a;
$b->set_text('2');
echo $a->get();//стойността е все още 1
]]></programlisting>
За да не правите копие бяхте задължени да използвате амперсант (&):
<programlisting role="php"><![CDATA[
//PHP 4: създаване на референция (отпратка)
$a = new GtkLabel();
$a->set_text('1');
$b = &$a;
$b->set_text('2');
echo $a->get();//стойността сега е 2
]]></programlisting>
Въпреки това, копие на обекта <emphasis>се прави</emphasis> при създаването.
При GTK уйджетите, за да бъдем по ясни, трябва да направите:
<programlisting role="php"><![CDATA[
//PHP 4: Референция
$a = &new GtkLabel();
]]></programlisting>
</para>
<para>
В PHP 5 нещата бяха променени. Основният метод сега е референцията (не копирането) и
използването на амперсант вече не е обходимо вече! Следващият скрипт работи със PHP 5
и GTK 2:
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/changes/ampersand_php5.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</para>
<para>
Същото се отнася и за callbacks (обратно извикване) - отпада амперсанта!
При PHP 4 и GTK 1 трябваше да:
<programlisting role="php"><![CDATA[
$window->connect_object('destroy', array(&$object, 'function'));
]]></programlisting>
при PHP 5 и GTK 2 амперсанта отпада:
<programlisting role="php"><![CDATA[
$window->connect_simple('destroy', array($object, 'function'));
]]></programlisting>
</para>
</sect1>
<sect1 id="tutorials.changes.constants">
<title>Константи в GTK</title>
<para>
GTK+ използва многобройни константи. В PHP-GTK 1 те се дефинираха като глобални
и можеха да бъдат използвани чрез
<programlisting role="php"><![CDATA[
echo GTK_WIN_POS_CENTER;
]]></programlisting>
Ако обаче използвате този код в PHP-GTK 2 ще получите следната грешка:
</para>
<screen><![CDATA[
PHP Notice: Use of undefined constant GTK_WIN_POS_CENTER -
assumed 'GTK_WIN_POS_CENTER' in /path/to/file.php on line 23
]]></screen>
<para>
Проблемът, е че първоначалната стойност използвана от
(<literal>GTK_WIN_POS_CENTER</literal> връща стойност
<literal>1</literal> в PHP-GTK 1). PHP-GTK 2 вижда само текста
<literal>"GTK_WIN_POS_CENTER"</literal>и това ще доведе до грешка във
вашият код.
</para>
<para>
Статичните клас константи се поддържат в PHP 5 и така се изчиства кодът. Дефинирането
им става в класове на <literal>Gtk</literal>, <literal>Gdk</literal> и други.
</para>
<para>
Накратко казано, единстевеното нещо което трябва да направите (в повечето случаи)
е да замените <literal>долното подчертаване</literal> с двуеточие, така че:
<literal>GTK_WIN_POS_CENTER</literal> при PHP-GTK 1 да стане
<literal>Gtk::WIN_POS_CENTER</literal> при PHP-GTK 2.
</para>
<para>
Забележете също и новият стил на писане на код. Главни букви трябва да си използват
само за първите букви в <literal>Gtk</literal>, <literal>Gdk</literal>, <literal>Pango</literal>
и <literal>Atk</literal> константите при официалната дистрибуция на документацията и кода на PHP-GTK 2
с което се променя техният статус на константи на класа, а не като глобални такива.
</para>
</sect1>
<sect1 id="tutorials.changes.connect">
<title>Свързване на сигнали</title>
<para>
За да свържете сигналите към определена функция при PHP-GTK 1 кода, можехте да ползвате
<function class="GtkObject">connect</function>,
<function class="GtkObject">connect_object</function>,
<function class="GtkObject">connect_after</function> или
<function class="GtkObject">connect_object_after</function>.
Особено функцията <literal>connect_object</literal>, не беше много ясна вначалото.
</para>
<para>
Следвайки промените направени в API сигналите на GTK signals API, бе взето решени
да се преименуват <literal>connect_object</literal> на
<function class="GtkObject">connect_simple</function> и
<literal>connect_object_after</literal> на
<function class="GtkObject">connect_simple_after</function> в PHP-GTK 2.
<emphasis>Простичко</emphasis>, това довежда до по-малко параметри на функцията, тъй като
обектите вече не са във функциите - нещо което трябваще да прави
<literal>connect_object</literal>, но не го правеше.
</para>
</sect1>
<sect1 id="tutorials.changes.deprecated">
<title>Отхвърлени уйджети</title>
<simpara>
GTK 2 има много нови уйджет класове.По-голявата часто от новите класове правят нещи по-добро
или по-различно от старите класове и така старите класове отпаднаха.
</simpara>
<simpara>
За да се запази съвместимостта със старата версия, старите уйджети все още
могат да се ползват, но е почти сигурно, че ще бъдат премахнати във версия 3 на GTK 3.
Това не означава, че трябва да пренапишете старите си програми отново. Желателно е обаче
в новият си код на програмата да не се използват. Простичко казано - ако не искате да
Ви боли главата просто избягвайте отхверлените уйджети занапред.
</simpara>
<!-- xsltproc segfaults when I uncomment the table!
Because of that I used the unordered list.
<table>
<title>Лист с отхвърлените уйджети/title>
<tgroup>
<thead>
<row>
<entry>Старите Класове Уйджети</entry>
<entry>Нови Класове Уйджеути</entry>
</row>
</thead>
<tbody>
<row>
<entry><classname>GtkCList</classname></entry>
<entry><classname>GtkTreeView</classname> със <classname>GtkListStore</classname></entry>
</row>
<row>
<entry><classname>GtkCTree</classname></entry>
<entry><classname>GtkTreeView</classname> със <classname>GtkTreeStore</classname></entry>
</row>
<row>
<entry><classname>GtkPixmap</classname></entry>
<entry><classname>GtkImage</classname> със <classname>GdkPixbuf</classname></entry>
</row>
</tbody>
</tgroup>
</table>
-->
<para>
<itemizedlist>
<title>Листа с отхвърлените уйджети</title>
<listitem>
<classname>GtkCList</classname> и <classname>GtkList</classname> =>
<classname>GtkTreeView</classname> със <classname>GtkListStore</classname>
</listitem>
<listitem>
<classname>GtkCTree</classname> =>
<classname>GtkTreeView</classname> със <classname>GtkTreeStore</classname>
</listitem>
<listitem>
<classname>GtkCombo</classname> и <classname>GtkOptionMenu</classname> =>
<classname>GtkComboBox</classname> със <classname>GtkTreeModel</classname>
</listitem>
<listitem>
<classname>GtkItemFactory</classname> =>
<classname>GtkUIManager</classname>
</listitem>
<listitem>
<classname>GtkOldEditable</classname> =>
<classname>GtkEditable</classname>
</listitem>
<listitem>
<classname>GtkPixmap</classname> и <classname>GtkPreview</classname> =>
<classname>GtkImage</classname> със <classname>GdkPixbuf</classname>
</listitem>
<listitem>
<literal>GtkText</literal> =>
<classname>GtkTextView</classname> със <classname>GtkTextBuffer</classname>
</listitem>
</itemizedlist>
</para>
<para>
<itemizedlist>
<title>Листа с отхвърлените методи</title>
<listitem>
<function class="GtkWindow">set_policy</function> =>
<function classname="GtkWindow">set_resizable</function>
</listitem>
</itemizedlist>
</para>
<simpara>
Тези листи може да не са пълни. Ако откриете някой отхвърлен уйджет,
който не е споменат в по-горе изброените листи, Ви умоляваме да ни пишете
на <ulink url="mailto:[email protected]">php-gtk-doc</ulink>.
</simpara>
</sect1>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/tutorials/glade.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/tutorials/glade.xml
+++ php-gtk-doc/manual/bg/tutorials/glade.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorials.helloglade">
<title>Здравей Glade!</title>
<sect1>
<title>Относно този урок</title>
<para>
Този урок ще ви научи на основните похвати при работа с файлове с разширение
<literal>.glade</literal> в програмите ви под PHP-Gtk2.
</para>
<para>
Glade2 е Разработчик на Потребителски Интерфейси, позволявайки ви да създадете
програми под Gtk2 само чрез ползване на мишката, без никакво програмиране.
Получената програма се записва във файл с разширение <filename>.glade</filename>
и може след това да бъде заредена в програмата ви под PHP-Gtk2.
</para>
<simpara>
Създаване на потребителски интерфейси с помощта на Glade спестява много време,
особено при голями проекти, а също така ви позволява да разделите работата по
създавето на програмата ви и на други хора.
Интерфейс дезайнерът се занимава само с проектирането на графичната част, т.нар. GUI,
с помощта на Glade (и не трябва изобщо да разбира от програмиране). От друга страна, ти,
като програмист трябва да се занимаваш само с програмилане без да се занимаваш с
графичната част.
</simpara>
</sect1>
<sect1 id="tutorials.helloglade.preparation">
<title>Подготовка</title>
<simpara>
Ще се концентрираме върху работата с фаловете написан с помощта на Glade,
а не как да правил супер сложни потребителски интефейси. Ето затова, примерът с
<filename>.glade</filename> файла е много простичък - просто прозорец с един бутон.
</simpara>
<para>
Прозорецът получава име (id) <literal>wndClose</literal>, а бутонът получава
име <literal>btnClose</literal>.
</para>
<example>
<title>Примерът с .glade файл - helloglade.glade</title>
<programlisting role="xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloglade/helloglade.glade" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
</sect1>
<sect1 id="tutorials.helloglade.loading">
<title>Зареждане на файлът</title>
<para>
Първото нещо, което трябва да направим е да заредим
<filename>.glade</filename> файла. <classname>GladeXML</classname> конструктора
взема за първи параметър пътят до файла, така че единственото нещо, което трябва
да направим е:
</para>
<example>
<title>Зареждане на .glade файла</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloglade/loading.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
<para>
При изпълнението на скрипта ще видите, че на вашият екран са изобразени
прозорец с бутон, но единственото нещо, което можете да правите, е да затворите
прозореца. Вижда се, че въпреки че сте затворили прозореца, вашият скрипт
продължава да функционира - това се получава най-често, когато липсва връзка
към даден сигнал.
</para>
<sect2 id="tutorials.helloglade.connecting">
<title>Ръчно свързване на сигналите</title>
<para>
Следващото нещо е просто да свържем сигналите: чрез извикване на
<function class="GtkObject">connect</function> или
<function class="GtkObject">connect_simple</function> за
уйджет обект. За получаване на обекта използвайте метода
<function class="GladeXML">get_widget</function> и подайте името му
(id) към него. След което продължаваме по стандартният начин:
</para>
<example>
<title>Вземане и свързване на уйджети</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloglade/connecting_by_hand.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
</sect2>
<sect2 id="tutorials.helloglade.autoconnect">
<title>Изполване на Glade за свързване на сигнали</title>
<para>
Може би сте забелязали, че вътре в .glade файла можете директно
да дефинирате кой ще обработва сигналът. Единственото нещо е да
кажете на Glade е да направи връзка, чрез извикването на
<function class="GladeXML">signal_autoconnect</function>.
</para>
<para>
Можете да дефинирате име на проста функция, които при възникване на
дадено действие ще беди извикан или специална анотация към извикване
на статичен метод чрез отделянето името на класа и на метода чрез
двойно двоеточие <literal>Classname::methodName</literal>.
</para>
<example>
<title>Изполване на signal_autoconnect</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloglade/autoconnect.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
</sect2>
<sect2 id="tutorials.helloglade.autoconnect_instance">
<title>Свързване с обектен метод</title>
<para>
За добрите програмисти свързването към прости функции или статични
методи няма да бъде достатъчно. За да не бъде разтеглен много нашият
код е необходимо да можем да свържем сигналите с методи от обекти.
</para>
<para>
Направата на това е много просто: Използвайте
<function class="GladeXML">signal_autoconnect_instance</function> с обекта като
първи параметър вместо да ползвате
<function class="GladeXML">signal_autoconnect</function>:
</para>
<example>
<title>Използване на signal_autoconnect_instance</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloglade/autoconnect_instance.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
</sect2>
</sect1>
<sect1 id="tutorials.helloglade.partial">
<title>Зареждане само част от файл .glade</title>
<para>
При големи проекти е възможно да дефинирате много прозорци във един единствен файл
<filename>.glade</filename>, и всички те ще бъдат заредени със зареждането на
файла <filename>.glade</filename>. Това обаче: a) забавя стартирането на
вашата програма и б) веднага ще изобрази всички прозорци ако не зададен параметъра
за видимост да бъде "скрит". Продължавайки нататък, може дори да ви се прииска чрез
<function class="GladeXML">signal_autoconnect_instance</function>
само част от файлът <filename>.glade</filename> да е обект, а друга част от
този файл да бъде свързана към друг обект.
</para>
<para>
Решението на този пробелм е във вторият параметър на конструктура
<classname>GladeXML</classname>: Прехвърлете id само на така наречения
root уйджет и само тази част от <filename>.glade</filename> файла ще бъде зареден.
</para>
<example>
<title>Частично зареждане на файл .glade</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloglade/partially.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
</sect1>
</chapter>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/tutorials/hello_world.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/tutorials/hello_world.xml
+++ php-gtk-doc/manual/bg/tutorials/hello_world.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorials.helloworld">
<title>Здравей свят (прост пример)</title>
<simpara>
Когато започнете с някой език за програмиране, първата програма, която ще напишете е
така известната програма 'здравей свят'. За да не разочароваме всички и ние първата
програмка в нашето ръководство ще бъде точно 'здравей свят'!
</simpara>
<simpara>
Чрез уроците ще имате възможност да научите и за възможностите на PHP.
Уроците са направени така, че да получите ясна представа при програмиране
под PHP-GTK, а също така и техниките за постигането му.
</simpara>
<simpara>
В този урок ще създадем простичък прозорец с техт "Здравей свят!".
</simpara>
<simpara>
Ще започнем с листинга на програмата, след което ще обясним всяка линия
от програмата, за да можете да получите основна представа за една простичка
програма написана на PHP-GTK.
</simpara>
<example>
<title>Простичък скрипт Здравей свят</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloworld/helloworld.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
<note>
<para>
Ако получите грешката
<literal>Fatal error: Call to undefined function: connect_simple()</literal>,
в този случай използвате PHP-Gtk1, а не PHP-Gtk2. Това е грешното ръководство.
</para>
</note>
<para>
Копирайте този код в програма за текстова обработка и го запазете като
файл <filename>hello.phpw</filename>.Отворете конзола и го стартирайте с
<command>php hello.phpw</command>. Нов прозорец със заглавие "Здравей свят" трябва
да се покаже и в него да бъде изписано само текста "Просто исках да Ви кажа 'Здравей свят!'".
</para>
<example>
<title>Проверка дали е зареден модулът PHP-GTK</title>
<programlisting role="php"><![CDATA[if (!class_exists('gtk')) {
die("Моля, заредете модулът php-gtk2 в php.ini\r\n");
}]]></programlisting>
</example>
<para>
Тук провиряваме дали е налично PHP-GTK, като проверяваме дали е зареден класът
<literal>gtk</literal>. При PHP 4 и PHP-GTK 1, трябваще да заредите модула
на PHP-GTK чрез <ulink url="http://www.php.net/dl">dl()</ulink>. Този начин
отпада в PHP 5 и не трябва да се използва при написване на нов код. Сега единственото,
което трябва да направим е да отпечатме съобщение за грешка със съобщение да бъде
заредено ръчно от потребителя.
</para>
<example>
<title>Създаване на прозорец</title>
<programlisting role="php"><![CDATA[$wnd = new GtkWindow();]]></programlisting>
</example>
<para>
Създаване на нов уйджет с <link linkend="gtk.gtkwindow">прозорец</link> е също тлокоз лесно,
колкото е да създадете нов обект: Чрез променливата
<literal>$wnd</literal> задаваме новият обект. Ако вече сте програмирали на
PHP 4 и PHP-GTK 1, трябва да изпукнете амперсанта <literal>&</literal>
преди <literal>new</literal>. Това беше необходимо при PHP 4,
но при PHP 5 не е необходимо.
</para>
<example>
<title>Задаване на заглавие на прозореца</title>
<programlisting role="php"><![CDATA[$wnd->set_title('Hello world');]]></programlisting>
</example>
<simpara>
За по-лесно откриване на прозорците в лентата със задачи задаваме имена на прозорците:
Просто обръщение към обектен метод.
</simpara>
<example>
<title>За чисто изключване на програмата</title>
<programlisting role="php"><![CDATA[$wnd->connect_simple('destroy', array('gtk', 'main_quit'));]]></programlisting>
</example>
<para>
Това е първият интересен код, който ще разгледаме: Сигналът
<signalname class="GtkObject">destroy</signalname> се свързва със статичният метод
<link linkend="gtk.method.main_quit">Gtk::main_quit</link> и той казва на
GTK, да прекрати главният цикъл когато бъде затворен отпределен прозорец.
(Главният цикъл ще бъде разгледан по-надолу в Ръководството)
</para>
<example>
<title>Създаване на етикет за показване на текст</title>
<programlisting role="php"><![CDATA[$lblHello = new GtkLabel("Just wanted to say\r\n'Hello world!'");]]></programlisting>
</example>
<para>
Както преди, създаваме нов уйджет. Този път обаче искаме да покажем
кратко съобщение - за тази цел изполваме <classname>GtkLabel</classname>.
</para>
<example>
<title>Добавяне на етикет към прозорец</title>
<programlisting role="php"><![CDATA[$wnd->add($lblHello);]]></programlisting>
</example>
<simpara>
Сега казваме на прозореца да изобрази директно съдържанието на етикета.
</simpara>
<example>
<title>Да направим прозореца да се вижда</title>
<programlisting role="php"><![CDATA[$wnd->show_all();]]></programlisting>
</example>
<para>
До сега нищо от направеното няма да бъде показано. За да бъде показано трябва да извикате
функцията <function class="GtkWidget">show</function>.
Това ще покаже прозореца, но няма да покаже етикета, затова трябва да извикаме
<function class="GtkWidget">show</function> и за етикета.
Това не е много целесъобразно ако в прозореца имаме многократни уйджети от бутони,
полета с отметки и др. Използването на функцията <function class="GtkWidget">show_all</function>
ще покаже прозореца с всички подчинени уйджети.
</para>
<example>
<title>Стартиране на главния цикъл</title>
<programlisting role="php"><![CDATA[Gtk::main();]]></programlisting>
</example>
<para>
След като всичко е готово е нобходимо да запазим прозореца активен и да сме сигурни,
че прозорецът отговаря на извършените действия от потребителя. При обикновен скрипт
на PHP дейността му спира тук. На нас обаче ни е необходимо той да продължи. За тази цел
е необходимо да се стартира главният цикъл на GTK. Работата му е да поддържа нашата програма
работеща и да приема заявките от потребителя. Ако се появи някакво действие, главният
цикъл го прехвърля към съответстващото обратно извикване (callbacks).
</para>
<sect1 id="tutorials.helloworld.futherreading">
<title>По-задълбочено четене</title>
<para>
Сега след като направихте първата си проста програма на PHP-GTK 2 може би
ще пожелаете и нещо по-сложничко. Можете да отидете и да прочетете
<link linkend="tutorials.packing">Урокът за пакетиране</link>.
</para>
</sect1>
</chapter>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/tutorials/helloadvanced.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/tutorials/helloadvanced.xml
+++ php-gtk-doc/manual/bg/tutorials/helloadvanced.xml
<chapter id="tutorials.helloadvanced">
<!-- $Revision: 1.1 $ -->
<title>Здравей свят (за напреднали)</title>
<simpara>
В този урок ще задълбочим разгледания в предишният урок пример Здравей Свят.
Ще създадем прозоре, в който потребителя трябва да въведе потребителското
си име и парола за достъп. Когато потребителя натисне бутона Вход, текстовите
полета ще бъдат проверени и ще бъде отпечатена грешка ако не са въведени
правилно потребителското име и парола за достъп.
</simpara>
<para>
Ето така ще изглежда програмата, когато бъде завършена:
<graphic fileref="&directory.images;/tutorials/helloadvanced.png"/>
</para>
<para>
Първото нещо, което трябва да направим е, да създадем прозорец, да му
зададем заглавие и да кажем на главният цикъл да прекъсне програмата,
ако прозореца бъде затворен. Това вече знаете от първият урок:
<informalexample>
<programlisting role="php"><![CDATA[
$wnd = new GtkWindow();
$wnd->set_title('Login');
$wnd->connect_simple('destroy', array('gtk', 'main_quit'));
]]></programlisting>
</informalexample>
</para>
<para>
Следващата стъпка е създаването на всички уйджети за този диалог:
създаваме две текстови полета за въвеждане на потребителско име и парола
за достъп:
<informalexample>
<programlisting role="php"><![CDATA[
$txtUsername = new GtkEntry();
$txtPassword = new GtkEntry();
]]></programlisting>
</informalexample>
Необходимо е да създадем описателни етикети, за да може потребителя да
знае къде да въведе потребителското име и къде паролата за достъп:
<informalexample>
<programlisting role="php"><![CDATA[
//The second parameter says that the underscore should be parsed as underline
$lblUsername = new GtkLabel('_Username', true);
$lblPassword = new GtkLabel('_Password', true);
]]></programlisting>
</informalexample>
За край ни трябват и два бутона - единият за вход, другият за отказване:
<informalexample>
<programlisting role="php"><![CDATA[
$btnLogin = new GtkButton('_Login');
$btnCancel = new GtkButton('_Cancel');
]]></programlisting>
</informalexample>
Може би забелязвате, че конструктура <classname>GtkLabel</classname> приема
втори параметър - долна черта <literal>_</literal>, за да може първата буква
да се изобрази като подчертана. Както забелязвате същото нещо не се прави
с конструктуро на бутона, тъй като той го прави автоматично. Това поведение
може би ще Ви се стори странно, но ще Ви помогне при разграничаване на етикетите
на бутоните от самите етикети.
</para>
<para>
Сега трябва да покажем на етикетите кой уйджет да активират при избиране на
подчертаната буква. Това се прави по този начин:
<informalexample>
<programlisting role="php"><![CDATA[
$lblUsername->set_mnemonic_widget($txtUsername);
$lblPassword->set_mnemonic_widget($txtPassword);
]]></programlisting>
</informalexample>
Следващата процудура е да определим какво действие ще се извърши, когато
е натиснат даден бутон. Бутонът за изход (Cancel) ще разруши прозореца, т.е. ще
прекрати нашата програма, а бутонаът за вход Login ще провери техтовите полета
и ще продължи с други действия:
<informalexample>
<programlisting role="php"><![CDATA[
$btnCancel->connect_simple('clicked', array($wnd, 'destroy'));
$btnLogin ->connect_simple('clicked', 'login', $wnd, $txtUsername, $txtPassword);
]]></programlisting>
</informalexample>
Предаваме три уйджета като допълнителни параметри към функцията за вход,
която още не е дефинирана, (<literal>login</literal> function) -
<varname>$wnd</varname>, <varname>$txtUsername</varname> и <varname>$txtPassword</varname>.
Тези три уйджета са необходими, за да получим стойностите на текстовите полета и
ако всичко е наред да разрушим прозорецът.
</para>
<para>
Сега след като имаме всичко, трябва да ги добавим в прозорец.
Тъй като <classname>GtkWindow</classname> е бинсарен контейнер, той може да приеме
само един уйджет, затова ни трябва друг контейнер, в който да разположим нашите уйджети.
Използваме <classname>GtkTable</classname>, защото ни позволява да запазим етикетите
в колони, а стойностите на полетата по следният начин:
<informalexample>
<programlisting role="php"><![CDATA[
$tbl = new GtkTable(3, 2);
$tbl->attach($lblCredit, 0, 2, 0, 1);
$tbl->attach($lblUsername, 0, 1, 1, 2);
$tbl->attach($txtUsername, 1, 2, 1, 2);
$tbl->attach($lblPassword, 0, 1, 2, 3);
$tbl->attach($txtPassword, 1, 2, 2, 3);
]]></programlisting>
</informalexample>
(<varname>$lblCredit</varname> е просто етикет със съобщение).
За бутоните използваме <classname>GtkHButtonBox</classname>, за да
можем да разположим няколко от тях:
<informalexample>
<programlisting role="php"><![CDATA[
$bbox = new GtkHButtonBox();
$bbox->set_layout(Gtk::BUTTONBOX_EDGE);
$bbox->add($btnCancel);
$bbox->add($btnLogin);
]]></programlisting>
</informalexample>
</para>
<para>
Слдва да разположим таблицата с бутоните в прозореца. Не е възможно да направим
това директно, тъй като <classname>GtkWindow</classname> е <classname>GtkBin</classname>
и може да съдържа само един уйджет. Затова ни е необходим друг контейнер, който
този път е <classname>GtkVBox</classname>:
<informalexample>
<programlisting role="php"><![CDATA[
$vbox = new GtkVBox();
$vbox->pack_start($tbl);
$vbox->pack_start($bbox);
]]></programlisting>
</informalexample>
Това е всичко и сега трябва да покажем прозореца:
<informalexample>
<programlisting role="php"><![CDATA[
$wnd->add($vbox);
$wnd->show_all();
Gtk::main();
]]></programlisting>
</informalexample>
</para>
<para>
Последното, което липсва е функцията за вход <literal>login</literal>,
която се извиква, когато потребителя натисне бутона Вход (Login). Тя трябва
да провери стойностите за потребителско име и парола. Ако тяхната дължина
е 0, то потребителя не е въвел нищо и ще се появи съобщение за грешка.
Ако всичко е наред, прозорецът ще бъде унищожен и програмата ще продължи
със зареждане на основният прозорец.
</para>
<para>
Вземането на техт от уйджет става много лесно с използването на метода
<function class="GtkEntry">get_text</function> на
<classname>GtkEntry</classname>:
<informalexample>
<programlisting role="php"><![CDATA[
$strUsername = $txtUsername->get_text();
$strPassword = $txtPassword->get_text();
]]></programlisting>
</informalexample>
Проверката се прави чрез стандартната функция в php <literal>strlen</literal>.
Ако има грешка ще искаме да покажен кратко съобщение.
<classname>GtkMessageDialog</classname> е идеален, защото автоматически генерира
икона и стандартните бутони (Ok, Yes/No):
<informalexample>
<programlisting role="php"><![CDATA[
$dialog = new GtkMessageDialog($wnd, Gtk::DIALOG_MODAL, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, $errors);
$dialog->set_markup("The following errors occured:\r\n<span foreground='red'>" . $errors . "</span>");
$dialog->run();
$dialog->destroy();
]]></programlisting>
</informalexample>
</para>
<para>
Сложете функцията за влизане преди (!) главният цикъл и я стартирайте.
</para>
<example>
<title>Пълният лист на програмата</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloadvanced/helloadvanced.phpw"
parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
</chapter>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/bg/tutorials/installation.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/bg/tutorials/installation.xml
+++ php-gtk-doc/manual/bg/tutorials/installation.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorials.installation">
<title>Инсталиране на PHP-GTK 2</title>
<sect1 id="tutorials.installation.introduction">
<title>Въведение</title>
<para>
PHP-GTK 2 е разширение на PHP и може да се използва единствено с версия 5.1
или по-голяма. Въпреки, че най-точният начин за инсталиране на PHP-GTK 2 е чрез
компилиране, това може да се окаже доста трудоемко при операционната система Windows.
За това, в повечето случаи за предпочитане е да се използа бинарната PHP-GTK 2 Alpha
версия на Gnope installer.
</para>
<para>
Ще разгледаме процесът на инсталация за трите най-разпространени операционни системи:
Windows, Linux и Mac OS X. Инструкциите за Linux са приложими и за по-голямата част
от POSIX базираните системи.
</para>
</sect1>
<sect1 id="tutorials.installation.windows">
<title>Инсталация под Windows</title>
<sect2 id="tutorials.installation.windows.gnope">
<title>Чрез използване на Gnope</title>
<para>
Gnope се е доказал като най-лесният начин за инсталиване и поддръжка на PHP-GTK 2
под операционната система Windows. В Gnope инсталаторът на PHP-GTK 2 се съдържат
PHP 5.1, GTK 2.6 и PEAR.
С няколко прости кликвания на мишката, и Вие сте готови!
</para>
<para>
Изтеглете инсталаторът от <ulink url="&url.gnope;">gnope.org</ulink> и следвайте
инструкциите от екрана. Gnope също така има собствена PEAR секция. В
<ulink url="&url.pear.gtk2;">категорията Gtk2</ulink> можете да изтеглите PHP-GTK 2
програми, различни от тези в официалният PEAR пакет.
</para>
</sect2>
<sect2 id="tutorials.installation.windows.manual">
<title>Ръчно инсталиране</title>
<para>
Изтеглете бинарната версия на PHP-GTK 2 за операционната система Windows
от <ulink url="&url.phpgtk.download;">тук</ulink>. Разархивирайте в директория
по Ваш избор. При този процес ще бъде създадена директория <literal>php-gtk</literal>
със всички необходими файлове.
</para>
<para>
Ще Ви е необходимо копие на файлът <filename>php.exe</filename> (CLI версията) и
файлът <filename>php5ts.dll</filename>. Тези два файла могат да бъдат намерени в бинарната
инсталация на PHP 5 за операционната система Windows и трябва да бъдат преместени
в директорията <filename>php-gtk</filename>. Ако искате да използвате и други
разширения с <filename>php.exe</filename>, трябва да прехвърлите бинарните им фалове в
същата тази директория.
</para>
<para>
<!-- FIXME: Do we need to do this? I doubt that this is necessary
-cweiske -->
Следващата стъпка е създаването на променливата <literal>PATH</literal>, за да бъде включена
директорията на <filename>gtk+2.6.9</filename>. Също така можете да оставите файлът
<literal>gtkpath.bat</literal> автоматично да открие стойността на <literal>PATH</literal>.
Това може да стане простичко - просто стартирайте този файл.
</para>
</sect2>
<sect2 id="tutorials.installation.windows.cvs">
<title>Компилирането му от CVS</title>
<para>
Този метод не е за предпочитане за инсталация на PHP-GTK 2 под операционната система Windows.
Въпреки това, ако желаете да направите инсталация по този начин първо прочетете
<filename>win32/README.win32.txt</filename> хранилището на CVS.
</para>
</sect2>
</sect1>
<sect1 id="tutorials.installation.linux">
<title>Инсталация под Linux</title>
<para>
Най-добрият начин за иднсталиране на PHP-GTK 2 под Linux е чрез копилиране. За сега няма
бинарни или соурс пакети за която и да е дистрибуция на Linux и използването на
любимият Ви Организатор на пакети за инсталиране на PHP-GTK 2 е невъзможно! Тези инструкции са
валидни за по-голямата часто от Linux дистрибуциите, но също така и за POSIX базираните
системи.
</para>
<note>Споменатият по-долу начин не работи под FreeBSD</note>
<para>
Има два начина за инсталиране на PHP-GTK 2 под Linux базирани системи.
Чрез използване на вече инсталиран PHP или чрез отделна инсталация на PHP-GTK 2.
Вторият начин е по-простият начин и е за предпочитане да се използва от потребители с
малък или никакъв опит с работа под Linux. И в двата случая е необходимо да имате
предварително инсталиран Gtk+ версия 2.6.
</para>
<sect2 id="tutorials.installation.linux.newphp">
<title>Инсталиране на PHP-GTK 2 с нова инсталация на PHP</title>
<para>
Следвайте тези няколко стъпки и всичко трябва да бъде наред! Първото нещо, което трябва да
направите е да се сдобиете с последната версия на PHP. Можете да изберете както версията
<literal>5_1</literal> така и <literal>5_2</literal> - и двете работят чудесно:
<programlisting role="bash"><![CDATA[
$ cvs -d :pserver:[email protected]:/repository login
$ cvs -d :pserver:[email protected]:/repository co -r PHP_5_2 php-src]]></programlisting>
Сега трябва да компилирате и инсталирате:
<programlisting role="bash"><![CDATA[
$ cd php-src
$ ./buildconf
$ ./configure --prefix=/opt/php5_2 --disable-cgi
$ make
$ su
$ make install
$ echo extension=php_gtk2.so >> /opt/php5_2/lib/php.ini
$ /opt/php5_2/bin/php-config --extension-dir | xargs echo 'extension_dir=' >> /opt/php5_2/lib/php.ini]]></programlisting>
</para>
<note>
<para>
Ако имате проблем с коплиринатео на версията на PHP от хранилището на CVS
използвайте официалната версия, която можете да изтеглите от
<ulink url="&url.php.download;">страница за идтегляне на php</ulink>,
или от <ulink url="&url.php.snapshots;">"снимката" (текущата стабилна версия)</ulink>.
</para>
</note>
<para>
Сега правим проверка и инсталираме PHP-GTK 2:
<programlisting role="bash"><![CDATA[
$ cd ..
$ cvs -d :pserver:[email protected]:/repository co php-gtk
$ cd php-gtk
$ ./buildconf --with-phpize=/opt/php5_2/bin/phpize
$ ./configure --with-php-config=/opt/php5_2/bin/php-config
$ make
$ make install]]></programlisting>
</para>
<para>
Тук може би ще пожелаете да създадете връзка към изпълнимият файл на php:
<programlisting role="bash"><![CDATA[
$ ln -s /opt/php5_2/bin/php /usr/bin/php-gtk]]></programlisting>
Това е всичко. Вие завършихте с инсталацията!
</para>
</sect2>
<sect2 id="tutorials.installation.linux.existingphp">
<title>Инсталиране чрез използване на вече инсталирана версия на PHP</title>
<para>
Ако решите да "добавите" PHP-GTK 2 към вече инсталирана версия на PHP първо се
уверете, че версията на PHP е поне 5.1 с разрешено CLI.
PHP-GTK 2 няма да работи с други версии на PHP. За да проверите коя е версията
Ви на PHP напишите в терминалният прозорец следната команда: <command>php -v</command>.
Не забравяйте да проверите за съществуването на <literal>cli</literal> в резилтатът
от проверката!
</para>
<para>
Сега изтеглете последната версия на PHP-GTK 2 от хранилището за CVS или изтеглете
последният архивен файл, както е описано в страницата за <ulink url="&url.phpgtk.download;">изтегляне</ulink>.
С командата <literal>cd</literal> влезте в главната директориа (/) на току що разрахивираният
архив и изпълнете следните команди:
<programlisting role="bash"><![CDATA[
$ ./buildconf
$ ./configure
$ make
$ make install]]></programlisting>
</para>
<para>
За по-голямятя част от хората, ползващи този метод всичко ще бъде наред.
Възможно е при хора, ползващи няколко версии на PHP инсталирани на една и съща машина
или инсталацията на PHP е в някаква нестандартна директория да се получат
грешки. В повечето случаи проблемът се решава като зададете местонахождението на
файловете <literal>phpize</literal> и на <literal>php-config</literal>:
<programlisting role="bash"><![CDATA[
$ ./buildconf --with-phpize=/path/to/phpize
$ ./configure --with-php-config=/path/to/php-config]]></programlisting>
</para>
</sect2>
<sect2 id="tutorials.installation.linux.testing">
<title>Тестване на инсталацията</title>
<para>
Преди да започнете да използвате PHP-GTK 2 е необходимо да разрешите разширението
му в конфигурационният файл на PHP - <filename>php.ini</filename>. Добавете в най-долната
част на фалът
<programlisting role="ini"><![CDATA[
extension=php_gtk2.so]]></programlisting>
.
</para>
<para>
Можете да тествате инсталацията си чрез изпълняване на:
<programlisting role="bash"><![CDATA[
$ php -m | grep php-gtk]]></programlisting>
Трябва да получите на една линия изписано <literal>php-gtk</literal>.
</para>
<para>
След това можете да опитате с демо програмката, намираща се в
директорията <filename>demos</filename> на php-gtk, тоест
в директорията <filename>demos/phpgtk2-demo.php</filename>.
</para>
</sect2>
</sect1>
<sect1 id="tutorials.installation.macosx">
<title>Инсталиране под Mac OS X</title>
<para>
Трябва да се уверите, че са инсталирани Apple Developer Tools, BSD Subsystem,
и X преди да продължите с инсталацията на PHP-GTK 2. По подразбиране
BSD subsystem е инсталирана при Mac OS X, но за Developer Tools и X Server
трябва да направите инсталацията ръчно. Въпреки, че можете да ползвате които
и да е X server, най-лесно е да ползвате предоставеният от Apple по подразбиране сървер
в Mac OS X инсталатора.
</para>
<para>
Изтеглете <ulink url="&url.macports;">MacPorts</ulink> (преди познат като
DarwinPorts) или <ulink url="&url.fink;">Fink</ulink> и го инсталирайте. Можете да
изберете да инсталирате версията X (ако сте решили да не ползвате инсталацията по подразбиране
на Apple)и Gtk+. И двата - Fink и MacPorts - са с версия 2.6 на Gtk+. Също така обедете се,
че версията Ви на PHP е поне 5.2.В MacPorts е предоставен този пакет. Напишете
<literal>php -v</literal> в терминалният ви прозорец.
Ако желаете ръчно да компилирате PHP можете да го направите по следният начин:
<programlisting role="bash"><![CDATA[
$ cvs -d :pserver:[email protected]:/repository co -r PHP_5_2 php-src
$ cd php-src
$ ./buildconf
$ ./configure --disable-cgi
$ make
$ sudo make install]]></programlisting>
Въпреки, че можете да инсталирате PHP в която и да е директория, желателно е
да бъде в директорията <filename>/usr/local/</filename>. MacPorts инсталира
PHP в директорията <filename>/opt/local/</filename>.
</para>
<para>
Остово ви да направите последните проверки и да компилирате PHP-GTK:
<programlisting role="bash"><![CDATA[
$ cd..
$ cvs -d :pserver:[email protected]:/repository co php-gtk
$ cd php-gtk
$ ./buildconf --with-phpize=/usr/local/bin/phpize
$ ./configure --with-php-config=/usr/local/bin/php-config \
--disable-libglade
$ make
$ sudo make install]]></programlisting>
Запамнете да промените <filename>/usr/local/</filename> с директорията, в която
инсталирахте PHP. Например: ако сте инсталирали PHP 5.2 с помощта на MacPorts,
трябва да въведете директорията <filename>/opt/local/</filename>.
</para>
<para>
За край копирайте <filename>php.ini-recommended</filename> файла в
<filename>/usr/local/lib/php.ini</filename> и променете стойността на
<literal>extension_dir</literal> на директорията, в която се намира <literal>php_gtk2.so</literal>.
В повечето случаи се намира в:
<literal>/usr/local/lib/php/extensions/no-debug-non-zts-some-date</literal>.
Можете да направите символична връзка в <filename>/usr/bin/</filename>,
която сочи към <filename>/usr/local/bin/php</filename>. Още веднъж, тази диретория
може да бъде <filename>/opt/local/</filename> или <filename>/usr/local/</filename>.
Всичко зависи от това къде сте инсталирали PHP.
</para>
<para>
Сега продължаваме с
<link linkend="tutorials.installation.linux.testing">Тестване на
вашата инсталация</link>.
</para>
</sect1>
<sect1 id="tutorials.installation.macosx-stepbystep">
<title>Инсталиране под Mac OS X - стъпка по стъпка</title>
<para>Написано от Jonathan Richter</para>
<para>
Има много малка информация за това как да накарш PHP-GTK2 да заработи
под Mac OS X 10.4.
След многократни опити и грешки постигнах желаният резултат.
</para>
<para>
По-долу описах стъпка по стъпка цялата процедура. Не съм запознат с работата
в Терминален прозорец и в по-голямата част нямах никаква идея какво правех.
Затова използвайте информацията на собствен риск. Тези стъпки работеха при мен
и се надявам, че ще са от полза за някой.
</para>
<note>
<para>
имайте в предвид, че цялата процедура отнема няколко часа.
</para>
</note>
<para>
Полезна информация, която открих:
<itemizedlist>
<listitem>
<para>
<link linkend="tutorials.installation.macosx">Предишното описание за инсталация</link>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.macports.org/">macports.org</ulink>
</para>
</listitem>
</itemizedlist>
</para>
<sect2>
<title>Стъпка 1 - Инсталиране на Xcode</title>
<para>
Изтеглете последната версия на Xcode (наричана още Developer Tools) от сайта на Apple.
Този пакет е наистина важен и можете да се сдобиете с него на
<ulink url="https://connect.apple.com">connect.apple.com</ulink>.
Влезте като потребител или се регистрирайте (без пари). Идете в секцията Downloads.
</para>
<para>
От дясно в Downloads Box изберете Developer Tools и изтеглете последната версия
на Xcode. При мен тя беше версия 2.4.1 с големина 923 MB.
След изтеглянето използвайте инсталатора и следвайте инструкциите.
</para>
</sect2>
<sect2>
<title>Стъпка 2 - Инсталиране на Macports</title>
<para>
Първоначално започнах с Fink, но по средата се получи грешка - липсващ пакет
за GTK 2.6 или по-висок.
Започнах от начало този път с Macports.
</para>
<para>
Идете на адрес
<ulink url="http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts">macosforge/InstallingMacPorts</ulink>.
</para>
<para>
Чрез инсталиране на Xcode завършихте част от първата стъпка.
Всичко мина успешно при мен, следвайки инструкциите от страницата.
</para>
<note>
<para>
Новата версия няма стандартния инсталатор на Apple и затова истеглих това:
<ulink url="http://svn.macosforge.org/repository/macports/downloads/DarwinPorts-1.3.1/DarwinPorts-1.3.1-10.4.dmg">DarwinPorts-1.3.1-10.4.dmg</ulink>
</para>
</note>
<para>
Инсталирайте Macport чрез двойно кликване върху инсталатора от имидж диска.
</para>
</sect2>
<sect2>
<title>Стъпка 3 - Инсталиране на GTK2 (познат още като GTK+)</title>
<para>
Напишете в терминалният прозорец:
<command>sudo port install gtk2</command>
</para>
</sect2>
<sect2>
<title>Стъпка 4 - Инсталиране на PHP5.x</title>
<para>
Вече имах стандартно инсталиран PHP 4.4.4 под OS X и PHP5 инсталация
от <ulink url="http://www.entropy.ch">Entropy.ch</ulink>,
която обаче не работеше. Изтрих инсталацията на PHP5 от Entropy.
</para>
<note>
<para>
Ако искате да използвате Apache 1 или 2 с PHP4 и 5, Entropy
е най-доброто решение.
</para>
</note>
<para>
Напишете в терминалният прозорец:
<command>cd /</command> и
<command>sudo port install php5</command>
</para>
<para>
Идете за кафе. Тази процедура отнема време ... на моят компютър отне 2 часа.
(Macports инсталира всичко в директорията <filename>/opt</filename>.
Сложих "cd /", за да направя инсталацията в root директорията.
</para>
</sect2>
<sect2>
<title>Стъпка 5 - Подготовка за PHP-GTK</title>
<para>
В другото ръководство ще видите <literal>--disable-libglade</literal> като
параметър при инсталацията на PHP-GTK. Не знам защо са използвали този параметър.
Използвайте го само ако наистина не искате да изполвате Glade. За повече прочетете
тук: <ulink url="http://glade.gnome.org">glade.gnome.org</ulink>.
</para>
<para>
Проверете също и screenshots (снимките от екрана). Първоначално инсталирах без
Glade, но след няколко дена повторих процедурата, за да накарам Glade да заработи.
Ако искате да продължите без да използвате Glade пропуснете следващата стъпка.
</para>
</sect2>
<sect2>
<title>Стъпка 6 - Инсталиране на Glade</title>
<para>
По някаква необяснима причина първият път получих грешка при инсталацията. Вторият
път повторих същите стъпки, но този път с X11 работещ във фонов режим. Никакви
грешки този път. Затова преди инсталацията отворете X11 във фонов режим (apple-h).
</para>
<para>
В терминалният прозорец напишете:
<screen>
cd /opt
sudo port install libglade
sudo port install glade
</screen>
И идете за ново кафе ...
</para>
</sect2>
<sect2>
<title>Стъпка 7 - Инсталиране на PHP-GTK2</title>
<note>
<para>
Вместо да използвате последната верси от хранилището на CVS, може би е
по-добре да използвате официалната версия от
<ulink url="http://gtk.php.net/download.php">страницата за изтегляне на PHP-GTK2</ulink>.
</para>
</note>
<para>
За да нямате проблеми оставете отворен X11.
<command>phpize</command> и <command>php-config</command> трябва да са
в директорията <filename>/opt/local/bin/</filename>.
Задължително направете тази провърка преди да продължите. В терминлният
прозорец напишете:
<screen>
sudo cvs -d :pserver:[email protected]:/repository co php-gtk
cd php-gtk
sudo ./buildconf --with-phpize=/opt/local/bin/phpize
sudo ./configure --with-php-config=/opt/local/bin/php-config
sudo make
sudo make install
</screen>
</para>
<para>
След завършването на инсталацията на терминалният прозорец ще се отпечата
информация за инсталираните разширения и пътя към тях, нещо от този сорт:
<filename>/opt/local/lib/php/extensions/no-debug-non-zts-20060613</filename>.
Apple-c (копиране) на тази пътека или си я запишете. Тя ще бъде използвана по-нататък.
</para>
</sect2>
<sect2>
<title>Стъпка 8 - Подготовка на php.ini</title>
<para>
Във Finder, изберете Go > Go To Folder... (или натиснете shift-apple-g)
и напишете <literal>/opt/local/etc</literal>.
</para>
<para>
Намерете файлът <filename>php.ini-recommended</filename> и го копирайте.
Копираният файл го преименувайте на <filename>php.ini</filename> и го отворете
- за предпочитане с BBedit.
</para>
<para>
Открийте редът <literal>extension_dir = "./"</literal> и го заменете с този:
<literal>extension_dir = "/opt/local/lib/php/extensions/no-debug-non-zts-20060613"</literal>
(Пътеката, която копирахте в предишната стъпка)
</para>
<para>
Открийте блокът с всички разширения и добавете следният ред:
<literal>extension=php_gtk2.so</literal>
</para>
<para>
Запишете файлът.
</para>
</sect2>
<sect2>
<title>Стъпка 9 - Тестване</title>
<para>
Стартирайте X11 и го оставете във фонов режим (apple-h), ако случайно сте го затворили.
</para>
<para>
Стартирайте терминален прозорец и напишете:
<screen>
cd /opt/php-gtk/demos
php phpgtk2-demo.php
</screen>
Това демо ще се отвори в прозорец на X11.
</para>
<para>
При работа с Glade, стартирайте терминален прозорец по този начин (с отворен X11):
<command>/opt/local/bin/glade-2</command>
</para>
</sect2>
<sect2>
<title>Стъпка 10 - За да изглежда по-добре</title>
<para>
Интерфейсът при X11 под OS X е много грозноватичък.
За да изтеглите други теми идете на
<ulink url="http://art.gnome.org/themes/gtk2">art.gnome.org</ulink>.
За използването им обаче трябва да направим още една стъпка.
</para>
<para>
В терминален прозорец напишете:
<command>sudo port install gtk-theme-switch</command>
</para>
<para>
След като завършите с тази процедура изтеглете темите от връзката по-горе.
Инсталирането им може да стане по 2 начина:
<orderedlist>
<listitem>
<para>
Преместете или копирайте изтегленият файл <filename>.tar.gz</filename>
(без да го разархивирате!) в директорията <filename>/opt/local/share/themes/</filename>
</para>
<para>
Стартирайте Glade чрез написване в терминалният прозорец (с отворен X11):
<command>/opt/local/bin/switch2</command>
</para>
<para>
Натиснете символът + sign и кликнете върху бутона Install New Theme.
Насочете го към <filename>/opt/local/share/themes/<your-new-theme-name>.tar.gz</filename>
</para>
<para>
Натиснете OK и вече имате инсталирана в новата тема.
</para>
</listitem>
<listitem>
<para>
Разархивирайте <filename><your-new-theme-name>.tar.gz</filename>
и я преместете или копирайте в нова директория за темит в
<filename>/opt/local/share/themes/</filename>
</para>
<para>
Стартирайте Glade чрез терминалният прозорец (и отворен X11):
<command>/opt/local/bin/switch2</command>
</para>
<para>
Името на новата ви тема ще е вече в листата с инсталирани теми.
</para>
</listitem>
</orderedlist>
</para>
</sect2>
<sect2>
<para>
Още веднъж, по-горните стъпки работеха на моят компютър.
Конфигурацията му е: iMac G5 2.0 GHz/1 GB RAM/OS X 10.4.8 и
Mac mini G4 1.42 GHz/512 MB RAM/OS X 10.4.8.
Скъпи Mac привърженици, пускайте тук вашите забележки, трикове и др., за да
можем да да помогнем на всички работещи с PHP-GTK под OS X!
</para>
</sect2>
</sect1>
</chapter>