<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>某人的栖息地 &#187; php-gtk</title>
	<atom:link href="http://www.ooso.net/tag/php-gtk/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ooso.net</link>
	<description>Linux + Apache + Mysql + Php + Flash</description>
	<lastBuildDate>Thu, 19 Jan 2012 01:21:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PriadoBlender可支持php-gtk2</title>
		<link>http://www.ooso.net/archives/364</link>
		<comments>http://www.ooso.net/archives/364#comments</comments>
		<pubDate>Sat, 28 Jul 2007 00:57:21 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/364</guid>
		<description><![CDATA[PriadoBlender可以把你的php文件编译成.exe文件，这个东西很好玩。最近跑到它的论坛上看到有PriadoBlender2.0 beta版本放出来，虽然这个版本没有安装文件，没说说明，也没有更新记录，但是我还是把胆子放大了把这它抓了回来。
解压后的文件夹里有一个文件，运行结果出乎意料，见下图：

可支持的project有：

				<span class="readmore"><a href="http://www.ooso.net/archives/364" title="PriadoBlender可支持php-gtk2">阅读全文（525字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>PriadoBlender可以把你的php文件编译成.exe文件，这个东西很好玩。最近跑到它的论坛上看到有<a href="http://pb.impressivegames.com/viewtopic.php?t=70">PriadoBlender2.0 beta版本放出来</a>，虽然这个版本没有安装文件，没说说明，也没有更新记录，但是我还是把胆子放大了把这它抓了回来。</p>
<p>解压后的文件夹里有一个文件，运行结果出乎意料，见下图：<br />
<img src='http://www.ooso.net/wp-content/uploads/2007/07/priadoblender-20-beta.jpg' alt='PriadoBlender.exe' /></p>
<p>可支持的project有：</p>
<ul>
<li>php-gtk1</li>
<li>php-gtk2</li>
<li>winbinder</li>
<li>command line</li>
</ul>
<p>目前为止，我还就看过这一个compiler能够支持php-gtk2。我之前试过“<a href="http://www.ooso.net/index.php/archives/261">Embeder</a>”，也去试用过<strong>phc</strong>，但是从未有过象PriadoBlender这样的。在点击上图的compile以后，我成功的将之前写的一个php5 + php-gtk小程序编译为.exe文件。</p>
<p>经试用，PriadoBlender beta版本目前有一些缺点：</p>
<ul>
<li>外部包含的.xml文件需要自己复制过来</li>
<li>
可能还有一些缺陷，我打开编译完成的exe文件以后，关掉窗口也不能干掉php-win.exe</li>
<li>中文支持很烂，当然，这可能是<a href="/index.php?tag=php-gtk">php-gtk2</a>本身的事情了。</li>
</ul>
<p>不管怎么说，php-gtk2终于有了一个可用的编译器，这是个好事情。</p>
<p>BTW:<a href="http://www.priadoblender.com/">PriadoBlender</a>本身也是用php-gtk完成的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/364/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>PHP-GTK 2 Beta!</title>
		<link>http://www.ooso.net/archives/330</link>
		<comments>http://www.ooso.net/archives/330#comments</comments>
		<pubDate>Sun, 17 Jun 2007 23:43:01 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/330</guid>
		<description><![CDATA[PHP-GTK 2 Beta发布！大量的新特性，如下：
* Overall API coverage is now at 90%, with over 95% coverage for just the Gtk+ API.
    * The GtkTreeView widget has been significantly enhanced with custom model and drag-and-drop support
    * Basic clipboard functionality is now supported.

				<span class="readmore"><a href="http://www.ooso.net/archives/330" title="PHP-GTK 2 Beta!">阅读全文（758字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://gtk.php.net/" target="_blank">PHP-GTK 2 Beta</a>发布！大量的新特性，如下：</p>
<blockquote><p>* Overall API coverage is now at 90%, with over 95% coverage for just the Gtk+ API.<br />
    * The GtkTreeView widget has been significantly enhanced with custom model and drag-and-drop support<br />
    * Basic clipboard functionality is now supported.<br />
    * Exciting new cross-platform widgets now available through the GtkSpell, GtkExtra, GtkHTML3, libsexy and Scintilla extensions<br />
    * Gtk+ versions 2.8 and 2.10 are now supported, which brings along a host of new features such as enhanced printing support; revamped GtkIconView, GtkNotebook; GtkPlug/Socket support for Win32; and a variety of new widgets like GtkStatusIcon and GtkAssistant.<br />
    * The usual set of bug fixes and unit test additions.</p></blockquote>
<p>虽然说php-gtk目前仍然停留在玩具状态，但是随着时间的发展，它会不会成为有力的桌面工具呢？</p>
<h1>下载<a href="index.php?tag=php-gtk">PHP-GTK</a> 2 Beta!</h1>
<ul>
<li><a href="http://gtk.php.net/do_download.php?download_file=php-gtk-2.0.0beta.tar.gz">php-gtk-2.0.0 beta 源码 for Gtk+ 2.10 upwards</a> &#8211; 17-June-2007</li>
<li><a href="php-gtk-2.0.0 beta Source for Gtk+ 2.8 upwards ">php-gtk-2.0.0 beta 源码 for Gtk+ 2.8 upwards</a> &#8211; 17-June-2007</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/330/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Embeder &#8211; 把php脚本编译成可执行文件</title>
		<link>http://www.ooso.net/archives/261</link>
		<comments>http://www.ooso.net/archives/261#comments</comments>
		<pubDate>Tue, 24 Oct 2006 23:35:08 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>
		<category><![CDATA[php5]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/261</guid>
		<description><![CDATA[Embeder是一个命令行工具，可以将php脚本编译成windows下的可执行文件。从介绍上来看，它目前支持php5，所以也可以用来编译php-gtk2的程序文件。
使用前提

把下面列出来的脚本全部复制一遍，并放在同一个目录

				<span class="readmore"><a href="http://www.ooso.net/archives/261" title="Embeder &#8211; 把php脚本编译成可执行文件">阅读全文（324字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>Embeder是一个命令行工具，可以将<a href="http://www.ooso.net/index.php/archives/category/php/">php</a>脚本编译成windows下的可执行文件。从介绍上来看，它目前支持<a href="http://www.ooso.net/?tag=php5">php5</a>，所以也可以用来编译<a href="http://www.ooso.net/?tag=php-gtk">php-gtk2</a>的程序文件。</p>
<h3>使用前提</h3>
<ul>
<li>把下面列出来的脚本全部复制一遍，并放在同一个目录</li>
<li>php5ts.dll必须在path下，或者在当前目录</li>
<li>php_win32std.dll必须安装在php的extension目录下（见php-embed.ini的配置）</li>
<li>embeder.exe也需要和上述文件在同一目录</li>
</ul>
<h3>测试文件</h3>
<li><strong>make.bat</strong>
<pre><code>@echo off
embeder.exe new myapp
embeder.exe main myapp main.php
embeder.exe add myapp include.inc</code></pre>
</li>
<li><strong>include.inc</strong>
<pre><code>&lt;? function hello() { echo "Hello people !"; } ?&gt;</code></pre>
</li>
<li><strong>main.php</strong>
<pre><code>&lt;?
function _f($file) { return defined('EMBEDED')?'res:///PHP/'.md5($file):$file; }

include _f('include.inc');
hello();
?&gt;</code></pre>
</li>
<p>其实解压后就可以运行test目录下的make.bat做一个编译试验，上面所列文件已经存在。</p>
<li>参考文档</li>
<p><a href="http://wildphp.free.fr/wiki/doku.php?id=win32std:embeder">http://wildphp.free.fr/wiki/doku.php?id=win32std:embeder</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/261/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PPFORM 1.7b发布 &#8212; php在桌面程序上更强的利器</title>
		<link>http://www.ooso.net/archives/215</link>
		<comments>http://www.ooso.net/archives/215#comments</comments>
		<pubDate>Sun, 06 Aug 2006 02:24:30 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>
		<category><![CDATA[ppform]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/215</guid>
		<description><![CDATA[沉寂多时的PPFORM终于有新版本发布。
令人振奋的更新
1. 建立 EXE 檔案.
.exe 可以分為 dos mode, windows mode 兩種模式.

				<span class="readmore"><a href="http://www.ooso.net/archives/215" title="PPFORM 1.7b发布 &#8212; php在桌面程序上更强的利器">阅读全文（1331字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>沉寂多时的<a href="http://www.ppform.com">PPFORM</a>终于有新版本发布。</p>
<h3>令人振奋的更新</h3>
<blockquote><p>1. 建立 EXE 檔案.<br />
.exe 可以分為 dos mode, windows mode 兩種模式.<br />
ppexe.exe 可將 php code 建立為 dos mode .exe<br />
pxp2exe.exe 則將 pxp code 建立為 windows mode .exe </p>
<p>2. 快速的載入.<br />
v1.6 一次載入過多的 lib, 使得系統啟動時間變長.<br />
v1.7則將 lib 分開, 有需要時再載入, 所以速度快了不少. </p>
<p>3. 區分 runtime 與 sdk.<br />
runtime 提供 PPForm 建立的 EXE, 在客戶端發佈使用.<br />
SDK 則目前提供一個 IDE 環境, 方便建立 PPForm. </p>
<p>4. 英文環境<br />
因為桌面的問題, 所以會發生簡體版亂碼的問題. 因此全部採用英文選單及環境,避免困擾. </p></blockquote>
<p>看起来，<a href="http://www.ooso.net/?tag=ppform">ppform</a>已经将一些让人困扰的问题解决，这意味着php向桌面程序进军又有了更强大的利器。老实说，前阵子把玩<a href="http://www.ooso.net/?tag=php-gtk">php-gtk</a>,也有很大的原因是对当时ppform失望所致，当时总认为php-gtk是名门正宗，支持的力度比较大，但是从易用性和开发效率上来讲，ppform明显要更胜一筹。</p>
<h3>编译php执行文件</h3>
<p>在作者的论坛上看到，对<a href="http://ppform.com/phpBB2/viewtopic.php?t=278">Native EXE, Standalone and Runtime(一些編譯 php 執行檔的看法</a>:</p>
<p>目前 php 編譯成為 .exe 的技術, 大概可區分為以下三種: </p>
<blockquote><p>1. Native EXE(Machine code)<br />
代表廠商 RoadSend(http://www.roadsend.com/)。roadsend 聲稱可將 php compile 成 native code，不過就我採用試用版後, 我想似乎不太可能將 php code 打成 machine code。以我的看法, php 的語言結構幾乎不可能編成 machine code.<br />
我認為 roadsend 是將 php code 轉成 C，然後再以類似 php cli 的方式重新連結成執行檔。<br />
這種作法優點是獨立而且速度快(???)，但缺點是編譯及連結速度很慢，開發環境複雜，不太適合快速開發。 </p>
<p>2. Standalone (獨立的執行檔)<br />
standalone 意謂著只要有一個執行檔，不需要其他 .dll 及 extension，如 bambalm(www.bambalam.se/bamcompile) 及Phalanger (http://www.php-compiler.net/) 這種方式對於客戶端來說，相當很方便, 也是是綠色軟件努力的目標。缺點則是每一個執行檔都很大. 以 php5 的 runtime 來說，php5ts.dll就佔了 1.7M, 也就是說每一個執行檔至少 1.7M, 而且如果要外掛其他的 .dll 或 extension 的話，彈性較小。 </p>
<p>3. Runtime（執行檔配合 runtime 環境）<br />
runtime 的作法，目前最具代表性是 Java 及 Dotnet，過去像是 COBOL 也是這種作法。這種方式優點就是編譯後執行檔很小，缺點則是必須要加裝Runtime Environment。 </p>
<p>經過上述的考慮及PHP 的特性之後，PPForm 採用第三種作法，以 Runtime 的方式編譯執行檔。 </p></blockquote>
<p>可以看到，ppform是用类java的Runtime编译方式，先抓紧时间试用一下。</p>
<p>另,菜单的汉化见这里 &#8211; <a href="http://www.ooso.net/index.php/archives/150">PPForm — 用 PHP 開發視窗應用程式</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/215/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>学习php-gtk2之事件绑定</title>
		<link>http://www.ooso.net/archives/214</link>
		<comments>http://www.ooso.net/archives/214#comments</comments>
		<pubDate>Sat, 05 Aug 2006 04:44:31 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/214</guid>
		<description><![CDATA[上次我们在hello glade的时候看到，php-gtk2已经能够根据Glade输出的xml生成窗体了。但是在Glade中设定的Button事件，如何和php接口呢？看下面的例子:
Glade输出的xml
&#60;?xml version="1.0" standalone="no"?&#62; &#60;!--*- mode: xml -*--&#62;
&#60;!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"&#62;

				<span class="readmore"><a href="http://www.ooso.net/archives/214" title="学习php-gtk2之事件绑定">阅读全文（1041字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>上次我们在<a href="http://www.ooso.net/index.php/archives/209">hello glade</a>的时候看到，<a href="http://www.ooso.net/index.php/archives/category/php/">php</a>-gtk2已经能够根据Glade输出的xml生成窗体了。但是在Glade中设定的Button事件，如何和php接口呢？看下面的例子:</p>
<h3>Glade输出的xml</h3>
<pre><code>&lt;?xml version="1.0" standalone="no"?&gt; &lt;!--*- mode: xml -*--&gt;
&lt;!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"&gt;
&lt;glade-interface&gt;
&lt;widget class="GtkWindow" id="wndClose"&gt;
  &lt;property name="visible"&gt;True&lt;/property&gt;
  &lt;property name="title" translatable="yes"&gt;Close me&lt;/property&gt;
  &lt;property name="type"&gt;GTK_WINDOW_TOPLEVEL&lt;/property&gt;
  &lt;property name="window_position"&gt;GTK_WIN_POS_NONE&lt;/property&gt;
  &lt;property name="modal"&gt;False&lt;/property&gt;
  &lt;property name="resizable"&gt;True&lt;/property&gt;
  &lt;property name="destroy_with_parent"&gt;False&lt;/property&gt;
  &lt;property name="decorated"&gt;True&lt;/property&gt;
  &lt;property name="skip_taskbar_hint"&gt;False&lt;/property&gt;
  &lt;property name="skip_pager_hint"&gt;False&lt;/property&gt;
  &lt;property name="type_hint"&gt;GDK_WINDOW_TYPE_HINT_NORMAL&lt;/property&gt;
  &lt;property name="gravity"&gt;GDK_GRAVITY_NORTH_WEST&lt;/property&gt;
  &lt;signal name="destroy" handler="gtk::main_quit"/&gt;
  &lt;child&gt;
	&lt;widget class="GtkButton" id="btnClose"&gt;
	  &lt;property name="visible"&gt;True&lt;/property&gt;
	  &lt;property name="can_focus"&gt;True&lt;/property&gt;
	  &lt;property name="label"&gt;gtk-close&lt;/property&gt;
	  &lt;property name="use_stock"&gt;True&lt;/property&gt;
	  &lt;property name="relief"&gt;GTK_RELIEF_NORMAL&lt;/property&gt;
	  &lt;property name="focus_on_click"&gt;True&lt;/property&gt;
	  &lt;signal name="clicked" handler="onClickButton"/&gt;
	&lt;/widget&gt;
  &lt;/child&gt;
&lt;/widget&gt;
&lt;/glade-interface&gt;</code></pre>
<p>其中有这样一行，表示id为btnClose的button绑定了事件onClickButton</p>
<pre><code>&lt;signal name="clicked" handler="onClickButton"/&gt;</code></pre>
<p>下面是php实现的onClickButton:</p>
<pre><code>&lt;?php
$glade = new GladeXML(dirname(__FILE__) . '/helloglade.glade');

//这是重点，事件自动绑定
$glade-&gt;signal_autoconnect();

//当btnClose被点击的时候就会调用本事件
function onClickButton() {
    echo "button clicked!\r\n";
    Gtk::main_quit();
}

//Start the main loop
Gtk::main();
?&gt;</code></pre>
<p>在上面的例子中，很容易就完成了onClickButton函数的绑定，那么有没有oo一点的写法呢？再看下面的例子：</p>
<pre><code>&lt;?php
// 这里我们使用一个对象来代替function

class MyClass {
    //btnClose被点击的时候会调用本方法
    function onClickButton() {
        echo "MyClass-&gt;onClickButton!\r\n";
        Gtk::main_quit();
    }

    function staticMethod() {
        echo "MyClass::staticMethod()\r\n";
    }
}

$glade = new GladeXML(dirname(__FILE__) . '/helloglade.glade');

//这里是重点，自动绑定某个对象的方法
$myClassInstance = new MyClass();
$glade-&gt;signal_autoconnect_instance($myClassInstance);

Gtk::main();
?&gt;</code></pre>
<p>到了这一步，个人感觉<a href="http://www.ooso.net/?tag=php-gtk">php-gtk2</a>的开发就比较顺畅了，只是程序的编译输出，目前还没有合适的方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/214/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>学习php-gtk2之醉银剑</title>
		<link>http://www.ooso.net/archives/213</link>
		<comments>http://www.ooso.net/archives/213#comments</comments>
		<pubDate>Fri, 04 Aug 2006 00:33:03 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/213</guid>
		<description><![CDATA[一直不会耍剑，尤其是上次说到的Glade。如果说Dreamweaver的易用程度为9分的话，Glade我想给它打个1分。这东东让人完全没有可视化编辑的感觉，完成GUI程序的界面设计真是勉为其难。当然，这是我没有找到门道的原因吧，摸索了两天，略有一些小小心得了。
你要回到用TABLE布局的年代
GUI界面设计跟用TABLE布局什么的，当然没有太大关系。但是我还是找到了其中的一些共通处，请看下图：


				<span class="readmore"><a href="http://www.ooso.net/archives/213" title="学习php-gtk2之醉银剑">阅读全文（377字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>一直不会耍剑，尤其是上次说到的<a href="http://www.ooso.net/index.php/archives/209">Glade</a>。如果说Dreamweaver的易用程度为9分的话，Glade我想给它打个1分。这东东让人完全没有可视化编辑的感觉，完成GUI程序的界面设计真是勉为其难。当然，这是我没有找到门道的原因吧，摸索了两天，略有一些小小心得了。</p>
<h3>你要回到用TABLE布局的年代</h3>
<p>GUI界面设计跟用TABLE布局什么的，当然没有太大关系。但是我还是找到了其中的一些共通处，请看下图：<br />
<img src="http://www.ooso.net/temp/200608/table.gif" alt="table of Glade" /></p>
<p>这张图表明，Glade也可以插入表格，插入表格之后的弹出菜单如下：</p>
<p><img src="http://www.ooso.net/temp/200608/table2.gif" alt="table of Glade 2" /></p>
<p>和Dreamweaver的表格插入，何其相似。插入表格之后，我们就可以在每个单元格内插入各式各样的widget了。</p>
<h3>小结</h3>
<p>玩Glade千万不要象用Delphi那样，拖个Button就往外扔，要有大局观，先用TABLE布局，如果你是PHP的熟练开发者，TABLE布局肯定不是问题。<br />
一点浅见，欢迎指教。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/213/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习php-gtk2之hello glade</title>
		<link>http://www.ooso.net/archives/209</link>
		<comments>http://www.ooso.net/archives/209#comments</comments>
		<pubDate>Tue, 01 Aug 2006 21:29:35 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/209</guid>
		<description><![CDATA[上次我们用php-gtk2写了第一个hello world的windows gui程序，不是太难，也不算太容易。因为界面上毕竟不像开发web程序那样，有dreamweaver之类的工具辅助设计，也不像delphi之类的IDE，要做个像样的玩具肯定是有些难度的。下面我们看看进阶的用法，使用Glade来辅助界面设计
Hello glade
在linux下做过gui的对glade应该不会陌生，用glade画好程序界面之后，可以输出一个xml格式的描述，象下面这样：
&#60;?xml version="1.0" standalone="no"?&#62; &#60;!--*- mode: xml -*--&#62;

				<span class="readmore"><a href="http://www.ooso.net/archives/209" title="学习php-gtk2之hello glade">阅读全文（779字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>上次我们用php-gtk2写了第一个hello world的windows gui程序，不是太难，也不算太容易。因为界面上毕竟不像开发web程序那样，有dreamweaver之类的工具辅助设计，也不像delphi之类的IDE，要做个像样的玩具肯定是有些难度的。下面我们看看进阶的用法，使用Glade来辅助界面设计</p>
<h3>Hello glade</h3>
<p>在linux下做过gui的对glade应该不会陌生，用glade画好程序界面之后，可以输出一个xml格式的描述，象下面这样：</p>
<pre><code>&lt;?xml version="1.0" standalone="no"?&gt; &lt;!--*- mode: xml -*--&gt;
&lt;!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"&gt;

&lt;glade-interface&gt;

&lt;widget class="GtkWindow" id="wndClose"&gt;
  &lt;property name="visible"&gt;True&lt;/property&gt;
  &lt;property name="title" translatable="yes"&gt;Close me&lt;/property&gt;
  &lt;property name="type"&gt;GTK_WINDOW_TOPLEVEL&lt;/property&gt;
  &lt;property name="window_position"&gt;GTK_WIN_POS_NONE&lt;/property&gt;
  &lt;property name="modal"&gt;False&lt;/property&gt;
  &lt;property name="resizable"&gt;True&lt;/property&gt;
  &lt;property name="destroy_with_parent"&gt;False&lt;/property&gt;
  &lt;property name="decorated"&gt;True&lt;/property&gt;
  &lt;property name="skip_taskbar_hint"&gt;False&lt;/property&gt;
  &lt;property name="skip_pager_hint"&gt;False&lt;/property&gt;
  &lt;property name="type_hint"&gt;GDK_WINDOW_TYPE_HINT_NORMAL&lt;/property&gt;
  &lt;property name="gravity"&gt;GDK_GRAVITY_NORTH_WEST&lt;/property&gt;
  &lt;signal name="destroy" handler="gtk::main_quit"/&gt;

  &lt;child&gt;
    &lt;widget class="GtkButton" id="btnClose"&gt;
      &lt;property name="visible"&gt;True&lt;/property&gt;
      &lt;property name="can_focus"&gt;True&lt;/property&gt;
      &lt;property name="label"&gt;gtk-close&lt;/property&gt;
      &lt;property name="use_stock"&gt;True&lt;/property&gt;
      &lt;property name="relief"&gt;GTK_RELIEF_NORMAL&lt;/property&gt;
      &lt;property name="focus_on_click"&gt;True&lt;/property&gt;
      &lt;signal name="clicked" handler="onClickButton"/&gt;
    &lt;/widget&gt;
  &lt;/child&gt;
&lt;/widget&gt;

&lt;/glade-interface&gt;</code></pre>
<p>上面定义了一个主窗体，里面自由一个叫btnClose的button。我们把上面的xml保存为helloglade.glade，下面我们看看<a href="http://www.ooso.net/?tag=php-gtk">php-gtk2</a>是如何使用这份xml的描述：<span id="more-209"></span></p>
<pre><code>&lt;?php
// 建立一个glade实例，从xml文件里读取参数和元素
$glade = new GladeXML('helloglade.glade');

//Start the main loop
Gtk::main();
?&gt;</code></pre>
<p>上面的程序仅仅只有两行，就已经完成了整个界面的描绘，是不是很简单？</p>
<h3>怎么用Glade</h3>
<p>坦白的说，Glade还不是相当易用。下面是Glade for win的下载地址：<br />
<a href="http://gladewin32.sourceforge.net/modules/news/">http://gladewin32.sourceforge.net/modules/news/</a></p>
<p>我还在摸索如何把这东东用好，因为我总是在画了一个button的情况下,就填充了整个窗体，再也放不下别的内容，真是恼人哪。期待有大侠指点</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/209/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>学习php-gtk2之hello world</title>
		<link>http://www.ooso.net/archives/208</link>
		<comments>http://www.ooso.net/archives/208#comments</comments>
		<pubDate>Sun, 30 Jul 2006 10:34:01 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/208</guid>
		<description><![CDATA[昨天我把php-gtk2的开发环境给装好了，接下来，应该象一般的文章写的那样，来个hello world。以下假设你的gnope已经安装好，或者用其它未知手段装好了php-gtk2的开发环境。
Hello world
下面我们将建立一个内有&#8221;hello world&#8221;字样的windows窗体
&#60;?php

				<span class="readmore"><a href="http://www.ooso.net/archives/208" title="学习php-gtk2之hello world">阅读全文（988字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>昨天我<a href="http://www.ooso.net/index.php/archives/198">把php-gtk2的开发环境给装好</a>了，接下来，应该象一般的文章写的那样，来个hello world。以下假设你的gnope已经安装好，或者用其它未知手段装好了php-gtk2的开发环境。</p>
<h3>Hello world</h3>
<p>下面我们将建立一个内有&#8221;hello world&#8221;字样的windows窗体</p>
<pre><code>&lt;?php
if (!class_exists('gtk')) {
    die("Please load the php-gtk2 module in your php.ini\r\n");
}

$wnd = new GtkWindow();
$wnd-&gt;set_title('Hello world');
$wnd-&gt;connect_simple('destroy', array('gtk', 'main_quit'));

$lblHello = new GtkLabel("Just wanted to say\r\n'Hello world!'");
$wnd-&gt;add($lblHello);

$wnd-&gt;show_all();
Gtk::main();
?&gt;</code></pre>
<h3>运行</h3>
<p>将以上代码，用文本编辑工具写入hello.phpw.注意后缀是phpw,如果昨天你已经使phpw后缀的文件和php.exe绑定的话，双击hello.phpw就可以运行这个小脚本（如果没有绑定，可以在命令行下输入php hello.phpw来运行这个程序）。<br />
不出意外的话，运行效果如下：<br />
<img src="http://www.ooso.net/temp/200607/hello.gif" alt="php-gtk hello world" /></p>
<h3>说明</h3>
<p>上面程序和普通的<a href="http://www.ooso.net/index.php/archives/category/php/">php</a>脚本没什么差别，下面是重点部分的注释：</p>
<pre><code>$wnd = new GtkWindow(); //新建一个窗体
$wnd-&gt;set_title('Hello world'); //设置窗体的标题为Hello world
$wnd-&gt;connect_simple('destroy', array('gtk', 'main_quit')); //使用Gtk::main_quit方法退出主程序

$lblHello = new GtkLabel("Just wanted to say\r\n'Hello world!'"); //新建一个widget，用label来显示一段文字
$wnd-&gt;add($lblHello); //在窗体内加入这个label

$wnd-&gt;show_all(); //使窗体的所有元素可见
Gtk::main(); //GTK main loop开始</code></pre>
<p>很显然，如果要这样来写一个gui程序，会有些累，明天介绍一个比较好的办法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/208/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习php-gtk2之开发环境安装</title>
		<link>http://www.ooso.net/archives/198</link>
		<comments>http://www.ooso.net/archives/198#comments</comments>
		<pubDate>Sun, 30 Jul 2006 00:58:46 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/198</guid>
		<description><![CDATA[最近开始学习这个新玩具 —— php-gtk,有了它，也能用php在win下做一些简陋的GUI了。

准备
目前的最新版本是php-gtk 2.0 alpha,放出来还不算太久。让我们首先看看windows下php-gtk2开发环境的搭建。

				<span class="readmore"><a href="http://www.ooso.net/archives/198" title="学习php-gtk2之开发环境安装">阅读全文（689字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近开始学习这个新玩具 —— <a href="http://gtk.php.net">php-gtk</a>,有了它，也能用php在win下做一些简陋的GUI了。<br />
<img src="http://gtk.php.net/gifs/php-gtk.gif" alt="phpgtk" /></p>
<h3>准备</h3>
<p>目前的最新版本是<a href="http://www.ooso.net/?tag=php-gtk">php-gtk</a> 2.0 alpha,放出来还不算太久。让我们首先看看windows下php-gtk2开发环境的搭建。<br />
首先要说明，手工安装好php-gtk2的环境需要解决一些文件依赖的问题，还要手工调整配置文件，不太容易一次成功，所以我们直接使用现成的开发环境 —— gnope.</p>
<p><span id="more-198"></span></p>
<h3>下载</h3>
<p>目前的最新版本是1.5.1,文件为GnopeSetup-x.x.x.exe<br />
下载地址：<a href="http://www.gnope.org/download.php">http://www.gnope.org/download.php</a></p>
<h3>安装</h3>
<p>安装过程很简单，跟一般的windows应用程序安装没太大区别。比如说我就选择安装在d:\php-gtk目录下，而且选择安装了一些gtk游戏和demo。安装成功后，会在桌面上产生一个“PHP-Gtk2 Applications”快捷方式，这就是gnope的主程序,运行界面：</p>
<p><img src="http://www.ooso.net/temp/200607/gtk1.gif" alt="gnope" /></p>
<p>图上的Gnope_AppRunner就是这个程序本身，还可以看到之前选装的一些游戏图标，比如Game_Minesweeper就是完全用php+gtk2写的扫雷程序，下面是运行效果：<br />
<img src="http://www.ooso.net/temp/200607/gtk2.gif" alt="php-gtk写的扫雷哦" /></p>
<p>怎么样？看上去已经是个完整的windows的gui程序吧。这样，我们很快就完成php-gtk2的开发环境搭建，就这么简单。</p>
<p>BTW:这次安装应该会把.phpw后缀的文件，自动和php.exe相关联，以后可以方便的运行php-gtk程序。</p>
<p>相关内容：</p>
<ul>
<li><a href="http://www.ooso.net/index.php/archives/208">学习php-gtk2之hello world</a></li>
<li><a href="http://www.ooso.net/index.php/archives/209">学习php-gtk2之hello glade</a></li>
<li><a href="http://www.ooso.net/index.php/archives/213">学习php-gtk2之醉银剑</a></li>
<li><a href="http://www.ooso.net/index.php/archives/214">学习php-gtk2之事件绑定</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/198/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bambalam PHP EXE编译工具</title>
		<link>http://www.ooso.net/archives/199</link>
		<comments>http://www.ooso.net/archives/199#comments</comments>
		<pubDate>Sat, 22 Jul 2006 22:49:58 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/199</guid>
		<description><![CDATA[Bambalam PHP EXE Compiler是一个小巧的命令行工具，能够把php脚本转换成windows的标准exe可执行文件，可以考虑用来发布自己写的一些php桌面应用程序比如基于gtk的客户端程序(用winBinder或php-gtk建立的php程序)。它有如下特点：

使用Turck MMCache Encode library对php代码进行encode，所以能够很好的保护你的代码防止某些人剽窃
已经捆绑了一个UPX命令行工具，能够压缩输出的exe文件，我尝试了一下，没压缩前的exe文件大概在1m以上，而压缩后的exe文件是500k左右

				<span class="readmore"><a href="http://www.ooso.net/archives/199" title="Bambalam PHP EXE编译工具">阅读全文（667字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bambalam.se/bamcompile">Bambalam PHP EXE Compiler</a>是一个小巧的命令行工具，能够把php脚本转换成windows的标准exe可执行文件，可以考虑用来发布自己写的一些php桌面应用程序比如基于gtk的客户端程序(用winBinder或<a href="http://gtk.php.net">php-gtk</a>建立的php程序)。它有如下特点：</p>
<ul>
<li>使用<a href="http://turck-mmcache.sourceforge.net/">Turck MMCache Encode library</a>对php代码进行encode，所以能够很好的保护你的代码防止某些人剽窃</li>
<li>已经捆绑了一个UPX命令行工具，能够压缩输出的exe文件，我尝试了一下，没压缩前的exe文件大概在1m以上，而压缩后的exe文件是500k左右</li>
<li>目前支持php 4.4.2版本，对php 5的支持也在计划中,就是说，目前仅仅能够用在php-gtk1的桌面程序上</li>
<li>已经捆绑了下列模块
<pre><code>Turck MMCache
bcmath
calendar
com
ctype
ftp
&lt;a href="http://www.ooso.net/index.php/archives/category/mysql/"&gt;mysql&lt;/a&gt;
odbc
pcre
win32std
xml
zlib
winbinder
&lt;a href="http://www.ooso.net/index.php?s=sockets"&gt;sockets&lt;/a&gt;</code></pre>
</li>
<li>1.1版本新增了sockets extension,所以说，可以直接用它来制造一个win下的socket server，不要额外增加文件了</li>
</ul>
<p> 另外说下版权问题，作者也懒得去阅读那些劳什子版权的协议了，总之源代码开放，免费使用&#8211;Free!!</p>
<p>类似的工具有：</p>
<ul>
<li><a href="http://www.roadsend.com">Roadsend Compiler for PHP</a> －－ 要$的</li>
<li><a href="http://www.php-compiler.net/">Phalanger</a> &#8211; the PHP Language Compiler for .NET Framework</li>
<li><a href="http://www.priadoblender.com/index.php?layout=main&#038;cslot_1=2">PriadoBlender</a></li>
<li><a href="http://sourceforge.net/projects/binaryphp/">BinaryPHP</a></li>
</ul>
<p>遗憾的是，上面的compiler还没有一个能够支持php-gtk2</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/199/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpgtk 开发必备 &#8212; phpGladeTool</title>
		<link>http://www.ooso.net/archives/145</link>
		<comments>http://www.ooso.net/archives/145#comments</comments>
		<pubDate>Mon, 02 Jan 2006 04:43:05 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php-gtk]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/145</guid>
		<description><![CDATA[phpGladeTool这个小工具,能够很快的帮你完成phpgtk的界面设计.
使用方法:

首先用Glade2设计界面,这里有windows版本的Glade工具:Glade on Windows. 设计并保存,会生成xml的界面描述文件.

				<span class="readmore"><a href="http://www.ooso.net/archives/145" title="phpgtk 开发必备 &#8212; phpGladeTool">阅读全文（277字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://phpgladetool.sourceforge.net/" target="_blank">phpGladeTool</a>这个小工具,能够很快的帮你完成<a href="http://gtk.php.net" target="_blank">phpgtk</a>的界面设计.</p>
<p>使用方法:</p>
<ol>
<li>首先用<a href="http://glade.gnome.org/index.html" target="_blank">Glade2</a>设计界面,这里有windows版本的Glade工具:<a href="http://gladewin32.sourceforge.net/modules/news/" target="_blank">Glade on Windows</a>. 设计并保存,会生成xml的界面描述文件.</li>
<li>接下来使用phpGladeTool,(这里有<a href="http://phpgladetool.sourceforge.net/index.php/area/2" target="_blank">详细的使用说明</a>)生成php代码<br />
<img src="http://phpgladetool.sourceforge.net/images/en_US/main.jpg" /></li>
<li>界面部分的工作已经完成,你可以这样查看完成的界面设计(注:这里的php是支持phpgtk的命令行工具)
<pre><code>php 生成的文件.php</code></pre>
</li>
</ol>
<p>剩下的事情就是补充你的业务代码了:) 如果你愿意,甚至可以用<a href="http://www.gnope.org/" target="_blank">gnope</a>这个工具来发布你的phpgtk程序,和大家共享你的劳动成果</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/145/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

