用PHP开发GUI(一个简单的例子)

环境:W2k+php4.3.1+php/gtk0.5.2
一个简单的记事本(只可以打开文件进行修改)
<?php
set_time_limit 
(0);         // 设置运行时间

if (!class_exists ("gtk"))                 // 判断是否有GTK模块
        
if (strtoupper (substr ($_SERVER["OS"], 03)) == "WIN")
            
dl ("php_gtk.dll");
        else 
            
dl ("php_gtk.so");

$window = &new GtkWindow ();                    // 建一个窗口
$window->set_uposition (100100);            //    窗口出现位置
$window->set_usize ((gdk::screen_width()-200), (gdk::screen_height()-150));    // 窗口大小
$window->set_title ("WINDOWS");             // 设置窗口标题
$window->connect_object ('destroy', array ('gtk''main_quit'));         // 注册窗口的事件

$vbox = &new GtkVBox ();                 
$hbox = &new GtkHBox ();             
$window->add ($vbox);


$menuBar = &new GtkMenuBar ();                     // 创建菜单
$vbox->pack_start ($menuBarfalsefalse0);

$file = &new GtkMenuItem ("File");
$menuBar->append ($file);

$fileMenu = &new GtkMenu ();
$open = &new GtkMenuItem ("Open");
$save = &new GtkMenuItem ("Save");
$line = &new GtkMenuItem ();
$line->set_sensitive (true);
$exit = &new GtkMenuItem ("Exit");
$fileMenu->append ($open);
$open->connect_object ('activate''showFileSelection');            
$fileMenu->append ($save);
$save->connect_object ('activate''saveFile');
$fileMenu->append ($line);
$fileMenu->append ($exit);
$exit->connect_object ('activate', array ('gtk''main_quit'));

$file->set_submenu ($fileMenu);

$scroll = &new GtkScrolledWindow ();
$scroll->set_border_width (8);
$scroll->set_policy (GTK_POLICY_AUTOMATICGTK_POLICY_AUTOMATIC);
$hbox->pack_start ($scrolltruetrue0);
$vbox->pack_start ($hboxtruetrue1);

$text = &new GtkText ();
$text->set_editable (true);
$text->set_word_wrap (true);
$scroll->add ($text);

function 
showFileSelection ()                 // 文件选择函数
{
        
$file = &new GtkFileSelection ("File Selection");
        
$ok_button $file->ok_button;
        
$ok_button->connect ('clicked''openFile'$file);
        
$ok_button->connect_object ('clicked', array ($file'destroy'));
        
$cancel_button $file->cancel_button;
        
$cancel_button->connect_object ('clicked', array ($file'destroy'));
        
$file->show ();
}

$filePath null;
function 
openFile ($button$f)                // 打开文件的函数
{
        GLOBAL 
$text$save$filePath;
        
$filePath $f->get_filename ();
        if (
is_file ($filePath))
        {
            
$fp fopen ($filePath'r');
            while (!
feof ($fp))
                
$str .= fgets ($fp1024);
            
$text->insert (nullnullnull$str);
            
fclose ($fp);
            return 
$filePath;
        }
}

function 
saveFile ()                        // 保存文件的函数
{
        GLOBAL 
$filePath$text;
        if (
is_file ($filePath))
        {
            
$str $text->get_chars (0, -1);
            
$fp fopen ($filePath'w');
            
fwrite ($fp$str);
            
fclose ($fp);
        }
        return;
}

$window->show_all ();                 // 显示窗体内的所有控件
gtk::main ();                                // 最重要的一句,不可少的
?>

Tags: php
« 上一篇 | 下一篇 »
只显示10条记录相关文章
php header 跳转 (浏览: 451, 评论: 0)
PHP5_OOP面向对象---教程下载 (浏览: 2299, 评论: 0)
在DISDUZ!5.5中添加代码高亮插件成功 (浏览: 3123, 评论: 1)
xajax+php的一个DEMO--Blackjack(21点) (浏览: 3504, 评论: 3)
关于使用PHP6的感受 (浏览: 2736, 评论: 0)
[PHP AJAX] 简单比较 xajax、AJASON、flxAJAX、Aja... (浏览: 2712, 评论: 0)
一个适用于验证码的小函数 (浏览: 19844, 评论: 0)
PHP本地执行放在远程服务器上的脚本 (浏览: 19833, 评论: 0)
用PHP动态创建Flash动画 (浏览: 19223, 评论: 0)
php与XML、XSLT、Mysql的结合运用,代码篇 (浏览: 19843, 评论: 0)
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论

评论内容(*):