| Joined: Oct 2003 Posts: 7 Junior Member | Junior Member Joined: Oct 2003 Posts: 7 | Anyone play with this at all? http://gtk.php.net Prety cool stuff. Of course it works for Linux as well but I like using it in windows. What you can do with little effort is so cool. I am just getting started so I am looking for anyone who might have some tips. | | |
▼ Sponsored Links ▼
▲ Sponsored Links ▲
| | | Joined: Mar 2002 Posts: 1,041 UGN Elite Poster | UGN Elite Poster Joined: Mar 2002 Posts: 1,041 | I do Gtk-perl. Much fun, and not that hard. Unfortunately, there is no windows port yet, but I don't really want to program windows anyways :p
Infinite | | | | Joined: Oct 2003 Posts: 7 Junior Member | Junior Member Joined: Oct 2003 Posts: 7 | Okay so I am starting on this. This is my first thing. I modified the sample hello.php code that came with the zip file. php-gtk-0.5.2a-win32.zip
<?php
/* $Id: hello.php,v 1.6 2002/11/25 18:22:05 fmk Exp $ */
if (!class_exists('gtk')) {
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
dl('php_gtk.dll');
else
dl('php_gtk.so');
}
function delete_event()
{
return false;
}
function destroy()
{
Gtk::main_quit();
}
function buttons()
{
global $window;
print 'Closing window\n';
$window->destroy();
}
$window = &new GtkWindow();
$window->connect('destroy', 'destroy');
$window->connect('delete-event', 'delete_event');
$window->set_border_width(10);
$button = &new GtkButton('Close');
$button->connect('clicked', 'buttons');
$window->add($button);
$tt = &new GtkTooltips();
$tt->set_delay(200);
$tt->set_tip($button, 'Closes out this Window', '');
$tt->enable();
/*realize the underlying GdkWindow, flag the GtkWindow's visibility and map
it onto the screen, all in one simple line*/
$window->show_all();
/*without the main loop, there is no PHP-GTK script*/
Gtk::main();
?>
I can get it up and running and it dose what I want it to but I have trouble adding widgets to it. The whole adding a child widget to the parrent is screwing me up or maybe my syntax is [censored]. Can anyone breake this down for me in forest gump terms? I know a widget is basicaly equal to an object in other languages. I am talking the child parent relationship Why some widgets can only have one child and others unlimited. | | | | Joined: Dec 2002 Posts: 3,255 Likes: 3 UGN Elite | UGN Elite Joined: Dec 2002 Posts: 3,255 Likes: 3 | Okay I am catching on. In order to set a widget inside another you have to specify using something like $window->add($vbox); This puts a verticle box inside the window. A sort of likeness to tables in HTML Here is what I have so far. For all those geeks who might still be wondering what is happening. Just do this... Unzip the zip package into the c:\ directory - that will do. And then start rolling. Check whether it is working by going into c:\php4 and typing this php c:\test\gtk.php | | | | Joined: Oct 2003 Posts: 7 Junior Member | Junior Member Joined: Oct 2003 Posts: 7 | Okay moving along. My little learning script can connect to a database. I want to place an image in this puppy. A red sphear if it can not connect and a blue one if it can. To do this I need to use the Gdk widget GtkPixmap Now here is what I have found so far on this http://gtk.php.net/manual/en/gtk.gtkpixmap.php pixmap_create_from_xpm can not load c:\path\to\image\my_image.png So duh, It is looking for an image with an xmp extension right? How the hell do I create on. I have photoshop, paint(of course), Flash, and paintshop pro. None of which will creat a xmp extension. Or I can create it but it is not truely creating this extension file type. Any help? My code so far is shown below. It will now connect to a MySQL database and extrat data to dissplay in the GUI. I will get to making that more dynamic later.
<?php
/* $Id: hello.php,v 1.6 2002/11/25 18:22:05 fmk Exp $ */
//
//
if (!class_exists('gtk')) {
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
dl('php_gtk.dll');
else
dl('php_gtk.so');
}
//
function delete_event(){
return false;
}
//
function destroy(){
Gtk::main_quit();
}
//
function buttons(){
global $window;
gdk::beep();
$window->destroy();
}
//
$window = &new GtkWindow();
$window->connect('destroy', 'destroy');
$window->connect('delete-event', 'delete_event');
$window->set_border_width(10);
$window->show();
//
$Hbox_start = &new GtkHBox(false, 5);
$window->add($Hbox_start);
//
$vbox = &new GtkVBox(false, 5);
$Hbox_start->add($vbox);
//
//
//
$frame = &new GtkFrame("Close section");
$frame->set_label("Click to exit");
$frame->set_label_align(0.0, 0.5);
$frame->set_shadow_type(GTK_SHADOW_ETCHED_IN);
$frame->show();
$vbox->pack_start($frame, true, true, 5);
//
//
$hbox1 = &new GtkHBox(false, 5);
//
//
$label = &new GtkLabel();
$label->set_text("To close this window all you have \n
to do is click on the button below. \n
But be warned!! I can not be held \n
responsible for what else it might do.");
$label->set_justify(GTK_JUSTIFY_LEFT);
$frame->add($label);
$label->show();
//
//
$hbox2 = &new GtkHBox(false, 5);
$vbox->add($hbox2);
//
//
$button = &new GtkButton('Close');
$button->connect('clicked', 'buttons');
$button->show();
$hbox2->pack_start($button, true, true, 5);
//
//
//
$tt = &new GtkTooltips();
$tt->set_delay(200);
$tt->set_tip($button, 'Closes out this Window', '');
$tt->enable();
//
$vbox_section2 = &new GtkVBox(false, 5);
$Hbox_start->add($vbox_section2);
//
$frame2 = &new GtkFrame("Close section");
$frame2->set_label("Database connection");
$frame2->set_label_align(0.0, 0.5);
$frame2->set_shadow_type(GTK_SHADOW_ETCHED_IN);
$frame2->show();
$vbox_section2->pack_start($frame2, true, true, 5);
//
//
$db_conn = mysql_connect ("address to server", Login, password);
mysql_select_db(Login, $db_conn);
$name = mysql_query("SELECT * FROM Userinfo Where id = '1'");
while($name2 = mysql_fetch_array($name)) {
$handle = "".$name2['First']." ".$name2['Last']."";
}
//
if ($db_conn){
$label2 = &new GtkLabel();
$label2->set_text("Hello $handle, \n
If you are reading this \n
then you are connected \n
to the database.");
$label2->set_justify(GTK_JUSTIFY_LEFT);
$frame2->add($label2);
$label2->show();
}else{
$label2 = &new GtkLabel();
$label2->set_text("mySQL Error: ".mysql_error());
$label2->set_justify(GTK_JUSTIFY_LEFT);
$frame2->add($label2);
$label2->show();
}
//
/*realize the underlying GdkWindow, flag the GtkWindow's visibility and map
it onto the screen, all in one simple line*/
//
$window->show_all();
//
/*without the main loop, there is no PHP-GTK script*/
//
Gtk::main();
?> | | |
Forums41 Topics33,840 Posts68,858 Members2,176 | Most Online3,253 Jan 13th, 2020 | | | |