5rfgn 发表于 2015-8-28 09:16:08

用PHP-GTK写文本查看器

简单研究了几个PHP-GTK的例子、翻了翻说明,随手写这么个小玩意玩玩。点LOAD打开对话框选择文件,则被选择文件的内容就会显示在文本框中。懒得去调整位置和大小,所以界面丑陋无比,大家将就。先SHOW两张图,后面是程序。





1 <?php
2
3 require_once('File.php');
4
5 if (!class_exists('gtk')) {
6if (strtoupper(substr(PHP_OS, 0,3) == 'WIN'))
7   dl('php_gtk.dll');
8else
9   dl('php_gtk.so');
10 }
11
12 function delete_event()
13 {
14   return false;
15 }
16
17 function shutdown()
18 {
19   print("Shutting down");
20   gtk::main_quit();
21 }
22
23 function ButtonLoad_clicked()
24 {
25   SelectFile();   
26 }
27
28 function ButtonClose_clicked()
29 {
30   global $window;
31   $window->close();
32 }
33
34 function fs_OK($button, $fs)
35 {
36   global $TextBox;
37   $TextBox->insert_text(File::readAll($fs->get_filename()), 0);
38   return true;
39 }
40
41 function fs_Cancel()
42 {
43   return false;
44 }
45
46 function SelectFile()
47 {
48   $fs = &new GtkFileSelection('Please select the file');
49   $ok_button = $fs->ok_button;
50   $ok_button->connect('clicked', 'fs_OK', $fs);   
51   $ok_button->connect_object('clicked', array($fs, 'destroy'));
52   $cancel_button = $fs->cancel_button;
53   $cancel_button->connect('clicked', 'fs_Cancel');
54   $cancel_button->connect_object('clicked', array($fs, 'destroy'));
55   $fs->show();
56 }
57 $window = &new GtkWindow();
58 $window->connect('destroy', 'shutdown');
59 $window->connect('delete-event', 'delete_event');
60 $window->set_border_width(0);
61
62 $TextBox = &new GtkText();
63 $TextBox->set_editable(true);
64
65 $ButtonLoad = &new GtkButton('Load');
66 $ButtonLoad->connect('clicked', 'ButtonLoad_clicked');
67
68 $ButtonClose = &new GtkButton('Close');
69 $ButtonClose->connect('clicked', 'ButtonClose_clicked');
70
71 $VBox = &new GtkVBox(false, 10);
72 $VBox->pack_start($ButtonLoad);
73 $VBox->pack_start($ButtonClose);
74
75 $HBox = &new GtkHBox(false, 10);
76 $HBox->pack_start($TextBox);
77 $HBox->pack_start($VBox);
78
79 $window->add($HBox);
80
81 $window->show_all();
82
83 gtk::main();
84
85 ?>
页: [1]
查看完整版本: 用PHP-GTK写文本查看器