Nathan msgbox problem
| From: | Wim Stockman | Date: | Thu, 22 Jul 2004 08:46:03 +0000 |
| Subject: | Nathan msgbox problem | ||
| Groups: | php.gtk.general | ||
| Request: | Send a blank email to php-gtk-general+get-4832@lists.php.net to get a copy of this message | ||
Hello
I tried the msgbox example you putted on the wiki and gave me the url to
it. But it seems I have the same problem than with my FileDialog. I
don't get the $msg returned it is also an empty string.
And I just copied and pasted your example so normally I cannot have done
something wrong. Maybe there is someting wrong with my configuration of
my PHP although I use the PHP version that came with tulip. So normally
that shouldn't be de problem.
Well Here is the program maybe I did still something wrong.
msgbox.class :
<?php
/**
@author <[http://wiki.gtk.php.net/index.php?page=nathan nathan] at
the-ring dot homelinux dot net>
@package GUI_OBJECTS
@license http://opensource.org/licenses/lgpl-license.php
GNU Lesser
General Public Licence
*/
class msgbox{
var $gtkwindow;
var $gdkwindow;
var $mode;
var $buttons;
var $label;
var $actionbox;
var $box;
var $mainbox;
var $pixmap;
/**
create the message box
@param string $title the window title
@param mixed $icon (int iconid|string filename|array xpm_data) the
icon to display
defined icons are 0 for interrogation, 1 for exclamation
and 2 for X
@param string $label the message label
@param string $buttons is the button label separated by '|' (ie:
"OK|CANCEL")
@param int $mode define various window setting 0 is default add 1 for
a POPUP window and 2 for a modal one
(ie: 3 will be popup and modal window)
@param bool $forced_txt set it to true to force the message to be a
gtktext without regarding it's length
*/
function
msgbox($label,$icon=0,$buttons='cancel|ok',$title=null,$mode=2,$forced_txt=FALSE){
$this->gtkwindow = &new
gtkwindow((($mode%2==1)?GTK_WINDOW_POPUP:GTK_WINDOW_DIALOG)); # set the
window as popup accordingly to $mode
$this->gtkwindow->set_title($title);
$this->gtkwindow->realize();
$this->gdkwindow = $this->gtkwindow->window;
$this->frame = &new gtkframe();
$this->mainbox = &new gtkvbox(0,5);
$this->box = &new gtkhbox(0,5);
$this->gtkwindow->add($this->frame);
$this->frame->add($this->mainbox);
#THE ACTION BOX
$this->actionbox = &new gtkhbuttonbox();
$this->actionbox->set_spacing(5);
$this->actionbox->set_layout(GTK_BUTTONBOX_END);
#CREATE BUTTONS
$buttons = explode('|',$buttons);
$bt_count= count($buttons);
foreach($buttons as $lb){
$this->buttons[$lb] = &new gtkbutton($lb);
$this->buttons[$lb]->connect('clicked',array(&$this,'clicked'),$lb);
$this->actionbox->add($this->buttons[$lb]);
if(++$i == $bt_count)
$this->gtkwindow->set_focus($this->buttons[$lb]);
}
#ARRANGING WIDGETS
$this->mainbox->pack_start($this->box,1,1,0);
$separator = &new gtkhseparator();
$this->mainbox->pack_end($this->actionbox,0,0,2);
$this->mainbox->pack_end($separator,0,0,0);
if($mode>=2)#set the window modal if needed
$this->gtkwindow->set_modal(TRUE);
#load the needed icons
$this->load_icon($icon);
if($this->pixmap)
$this->box->pack_start($this->pixmap,0,0,5);
if(strlen($label) < 250 && !$forced_txt){
$this->label = &new gtklabel($label);
$this->label->set_justify(GTK_JUSTIFY_LEFT);
$this->box->pack_start($this->label,1,1,5);
}else{
$this->txt = &new gtktext();
$this->txt->set_word_wrap(FALSE);
$this->txt->insert(null,null,null,$label);
$this->scroll = &new gtkscrolledwindow();
$this->scroll->add($this->txt);
$this->scroll->set_policy(GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
$this->scroll->set_usize(450,150);
$this->box->pack_start($this->scroll,1,1,5);
}
}
/**
known signal 'destroy','show',clicked
@param string $signal may be 'clicked','destroy','show'
@param mixed $callback (string function name or
array(object,methodname))
*/
function connect($signal,$callback){
$args[0] = &$this;
for($i=1;$i<func_num_args();$i++){
$args[$i]=&func_get_arg($i);
}
$this->cbs[$signal] = array($callback,$args);
}
/** self explained */
function show(){
$this->gtkwindow->connect('delete-event',array(&$this,'destroy'));
$this->gtkwindow->connect('destroy-event',array(&$this,'destroy'));
$this->gtkwindow->set_position('center');
$this->gtkwindow->show_all();
if(is_array($this->cbs['show']))
call_user_func_array($this->cbs['show'][0],$this->cbs['show'][1]);
# this will block your script parsing until the gtk::main_quit() was
called
gtk::main();
}
/** self explained */
function destroy(){
$this->gtkwindow->destroy();
if(is_array($this->cbs['destroy']))
call_user_func_array($this->cbs['destroy'][0],$this->cbs['destroy'][1]);
# this will quit the gtk loop we launched in the show method
# and then the script continue to be parsed where it stoped.
gtk::main_quit();
}
/** self explained */
function clicked($call_wdgt,$string){
$this->clicked_button = $string;
if(is_array($this->cbs['clicked']))
call_user_func_array($this->cbs['clicked'][0],$this->cbs['clicked'][1]);
$this->destroy();
}
/**
load predefined icons by id
@internal
@private
@see msgbox constructor
@uses file2pixmap
*/
function load_icon($icon=0){
if(! is_numeric($icon))
return FALSE;
switch($icon){
case 1:
$xpmd = array(
"31 31 32 1",
"` c #070319",
". c #a59816",
"# c #f0cc08",
"a c #4f4424",
"b c None",//#d4d2cc",
"c c #faec09",
"d c #473729",
"e c #f9dc05",
"f c #6a612d",
"g c #baa521",
"h c #f0f352",
"i c #fcfb0f",
"j c #bcb2c4",
"k c #cabc18",
"l c #0e055a",
"m c #1e2983",
"n c #646dc9",
"o c #6c8cac",
"p c #2d4eac",
"q c #4461b5",
"r c #3f1581",
"s c #816f11",
"t c #35316e",
"u c #211734",
"v c #54467c",
"w c #9c9a5c",
"x c #cda704",
"y c #151a71",
"z c #767040",
"A c #e0b706",
"B c #37345a",
"C c #e4db3b",
"bbbbbbbbbbbbbhiioobbbbbbbbbbbbb",
"bbbbbbbbbbbbCiiicznbbbbbbbbbbbb",
"bbbbbbbbbbbCcciiikmnbbbbbbbbbbb",
"bbbbbbbbbbbCcihiiifpbbbbbbbbbbb",
"bbbbbbbbbbCCciihiikyqbbbbbbbbbb",
"bbbbbbbbbbCCciiiiiifpbbbbbbbbbb",
"bbbbbjbbb#Cciiiiiiikyqbbbjbbbbb",
"bbbbbbbbbCCcii#Ciiicftbbbbbbbjb",
"bbbbbbbb#eCiCa``fiiikmqbbbbbbbb",
"bbbbbbbbC#cif```u.iiczmbbbbbbbb",
"bbbbjbb##Ciif`
l.iiikyqbbbbbbb",
"bbbbbbbC#ciis``lugiiccfmbbbbbbb",
"bbbbbb###cii.`lla#iicckyqbbbbbb",
"bbbbbb#CeiciCa`rsciiiccfmbbbbbb",
"bbbbbA##cicicayt.iccicckyqbbbbb",
"bbbbbk#Cccccismvgicciieefmbbbbb",
"bbbb###eiceci.ld#ieeiieckyqbjbb",
"bbbbk##cceceikuveiceciceezybbbb",
"bbbA##ecceeeiedfcceeecieekyqbbb",
"bbbk##cceeeeccffieeeeciceezmbbb",
"bb###eceeeeeecAAceeeeecieeAypbb",
"bbAA#cceeeeeccciceeeeeeiheezmbb",
"bA##eeee#eecea``sceee#eeie##ypb",
"bkA#eee#e#eis```uxi#e#eecc#ezyb",
"A#A#ee#e#e#if`ultgi#e##eec##Ayr",
"AA##eee#ee#isu`njAc#eee#eee##vr",
"kAA#########c.fzA############zl",
"wxAAAAAAAAAAA###AAAAAAAAAAAA#dy",
"bgxxxxxxxxxxxxxxxxxxxxxxxxxAfyy",
"bbqtttrBttttttttBtBtttrBttBrymb",
"bbbqppppppppptppppppppppppppppb");
break;
case 2:
$xpmd = array(
"31 31 32 1",
"` c #1d100f",
". c #ac8684",
"# c #980204",
"a c #9c5351",
"b c #d00506",
"c c #d33738",
"d c #f40e0e",
"e c #d74a49",
"f c #aecdcd",
"g c #b12d2d",
"h c #f66767",
"i c #d91717",
"j c #b80405",
"k c #665a58",
"l c #fa2f2f",
"m c None",
"n c #e00808",
"o c #570607",
"p c #f78b8b",
"q c #9cbebc",
"r c #967372",
"s c #342e2c",
"t c #f8fdfb",
"u c #c8e5e7",
"v c #7f0204",
"w c #fca1a1",
"x c #7c6161",
"y c #fc504f",
"z c #fc7979",
"A c #bf4f4f",
"B c #3c0204",
"C c #bc7274",
"mmmmmmmmmmmmhyyyyhzmmmmmmmmmmmm",
"mmmmmmmmmlyhzpzpzhyllhmmmmmmmmm",
"mmmmmmmlyhzpwwwwzzzhyll.mmmmmmm",
"mmmmmmlyhzpwwwwwpzzhyyllemmmmmm",
"mmmmmlyhzpwpwpzzzzhhyyyllimmmmm",
"mmmmdyyhzzzzhyyyyyyyyyllldgmmmm",
"mmmdyyyhhhyylddddlllyllllliammm",
"mmlllyyyrxldddddddddxalllidirmm",
"mmilyllrfurdddndndnkqqaddlii#mm",
"mlllllruttmrnnnndnkqttf.diiijkm",
"miilllhfttturndnnxqttttyndbibsm",
"miiddddyuttturnbrqttttennibji#m",
"hiildldneutttu..uttttybnnbijj#k",
"cibiddnnncutttttttttebbbbbjjjjs",
"ijiniinnbneutttttttebjbbbbbjjj`",
"jijinnbbbbbettttttcbbbbbbjjj#js",
"gjbbbbbnbbj.ttttttpjjbjjbjjj#j`",
"cjjjbbbbbjxfttttttu.jbjbjjj###`",
"h#jjjbbbjxftttttttturjjjjj##jvs",
"m#jjjjbjkqttttcetttturjjjj###vm",
"m#j#jbjkfttttejjAtttturj#j###Bm",
"mg#j#jrfttttAjjjjAutttt.#####`m",
"mmj#j#gftttejjjjj#Autttg##v#omm",
"mmg####gtte#j#j#jj#Attg##v#v`fm",
"mmmj####AA#j#j#j##j#Acvvvv#Bmmm",
"mmmm#########j##j####v#vv#Bmmmm",
"mmmmm##v############vvvv#ommmmm",
"mmmmmm##vv#######v#vvvvvBmmmmmm",
"mmmmmmmv#vvvvvvvvvvvv#vBmmmmmmm",
"mmmmmmmmmvv#vvvvvvvvvBmmmmmmmmm",
"mmmmmmmmmmmmovvvvoommmmmmmmmmmm");
break;
default:
$xpmd = array(
"31 31 32 1",
"` c #040d62",
". c #698ab6",
"# c #accded",
"a c #97989b",
"b c none",//#d4d2cc",
"c c #404f68",
"d c #c6e2fa",
"e c #a3b4c4",
"f c #4e5964",
"g c #86a9cd",
"h c #c2cdda",
"i c #bac0c6",
"j c #dceefb",
"k c #0b3188",
"l c #9dbcdd",
"m c #5a738c",
"n c #f5f9fa",
"o c #244ea4",
"p c #34436a",
"q c #4476d4",
"r c #7d99b3",
"s c #6b7a8e",
"t c #445e9c",
"u c #05227f",
"v c #89b4e1",
"w c #173d94",
"x c #a0a7ae",
"y c #5c6672",
"z c #5376b8",
"A c #7a9bcb",
"B c #dae5f2",
"C c #2c62c4",
"bbbbbbbbbbhjnBnjnBBBbbbbbbbbbbb",
"bbbbbbbhjnnnnnnnnnnnjBihbbbbbbb",
"bbbbbijnnnnnnnnnnnnnnnBbbbbbbbb",
"bbbbinnnnnnnnnnnnnnnnnnjbehbbbb",
"bbbinBnnnnnnBgzz.eBnnnnnBbhbbbb",
"bbiBBnnnnnnekkzw``phnnnnnBhihbb",
"bbBBnnnnnndw.nikuoBnnnnjBexhb",
"biBnnnnnnnx`ukhBcuuuljjnnnBhxxb",
"bbBnnnnjnnlukwljtuukgnjjnjj#eei",
"ibjnnjnjnndAzABdouukljjjjnj#ixy",
"hhjnjjjnjjnjjjnekkwzdnjjdjjdlxs",
"ihBjnjjjjjjjnnjzuCAdjdjdjjdh#xs",
"ihBjjjjjjjjjdnlwovdjjdjddjdh#xs",
"i#Bjjjjjjjjjjj.kAjjddddjddd##ay",
"eihjjjjjdjddjjqodjjddjdddjd#esy",
"gi#djdjdjdjddjlvdddddddddd#lrsx",
"eeihdjddddddjd##djddddddd##e.fb",
"bre#dddjdddddApwz#dddddd##vgyab",
"birelddddddjlk```Add#d###vescbb",
"bberelhdddddvkuku.ddd#d#vg.cabb",
"bbbirel##ddd#zkq.vd###lvg.cxbbb",
"bbbbe.ggll##dlv#####vlvrscxbbbb",
"bbbbbesrgggvvl##d#vvvg.ffxbbbbb",
"bbbbbbiefsrAAAgl#vvAmfpxibbbbbb",
"bbbbbbbbixfysgrv#v.fcxibbbbbbbb",
"bbbbbbbbbbibamgglvsxibbbbibbbbb",
"bbbbbbbbbbbbbamvlvmxbbbbbbbbbbb",
"bbbbibbbbbbbbbamvvmxbbbbbbbbbbb",
"bbbbbbbbbbbbbbbamvmxbbbbbbbbbbb",
"bbbbbbbbbbbbbbbiammxbbbbbbbbbbb",
"bbbbbbbbbbbbibbbbacxbbbbbbbibbb");
}
# create pixmap
$pix = gdk::pixmap_create_from_xpm_d($this->gdkwindow,null,$xpmd);
$this->pixmap = &new gtkpixmap($pix[0],$pix[1]);
}
}
?>
Here follows my example program
<?php
if (!extension_loaded('gtk')) {
dl( 'php_gtk.' . PHP_SHLIB_SUFFIX);
}
include "msgbox.class";
/**
this will display a blocking msgbox waiting for user input.
it will return the clicked button string
see class message box for more details about params
@param string $title
@param mixed $icon_type
@param string $label
@param string $button_labels
@param int mode
*/
function gtkgui_msgbox($title='Confirmation.',$icon_type=0,$label='Do
you wish to continue ?',$button_labels='cancel|ok',$mode=0){
$msg = &new msgbox($label,$icon_type,$button_labels,$title,$mode);
$msg->show();
return $msg->clicked_button;
}
$msg = gtkgui_msgbox('Quit',0,'Do you really want to
quit','cancel|ok',2);
if($msg != 'ok')
echo $msg;
exit;
#else continue to do what you want
else
echo 'failed';
?>
Thanks for all the help until now.
Hopefully you can help me out once more.
Just trying to use PHP-GTK
thx
Wim Stockman