Re: Re: Gtk::input_add() for a popen() filehandle?

From: Date: Wed, 10 Apr 2002 04:00:39 +0000
Subject: Re: Re: Gtk::input_add() for a popen() filehandle?
References: 1 2 3 4 5  Groups: php.gtk.general 
Request: Send a blank email to php-gtk-general+get-1768@lists.php.net to get a copy of this message
Is any of this going to work with php4.2? or will it only work with streams (I couldnt see why not - but I could have missed something) regards alan Andrei Zmievski wrote:
On Tue, 09 Apr 2002, Alan Knowles wrote:
I'm not getting anywhere with this :) - and it's getting late. (this is using php-gtk CVS and php4.2Rc2) - simple proof of concept: press the button, and the program is supposed to do a fopen or popen, and add a callback. Am I missing something here.... regards alan <? error_reporting(E_ALL); dl('php_gtk.'.(strstr(PHP_OS, 'WIN') ? 'dll' : 'so')); class MyClass { var $window; var $pixmap; var $mask; var $w; function build() {
      $this->window = &new GtkWindow();
      $this->window->set_position(GTK_WIN_POS_CENTER);
      $this->window->set_name('my_window');
      $this->window->connect_object('destroy', array('gtk', 'main_quit'));
      $this->box = &new GtkVbox();
      $this->window->add($this->box);
           $this->gtktext = &new GtkText();
      $this->box->add($this->gtktext);
           $this->button = &new GtkButton("press me");
      $this->button->connect("pressed",array(&$this,"pressed"));
      $this->box->add($this->button);
           $this->window->show_all();
} function pressed() {
      echo "starting something";
      $fp = fopen("/home/alan/access.log","r");
      Gtk::input_add($fp, GDK_INPUT_READ, array(&$this,"reader"));
} function reader($a,$b,$c) {
      echo "got something";
      echo serialize(array($a,$b,$c));
} } $gui = new MyClass; $gui->build(); gtk::main(); ?>
Okay, my previous patch was right and the reader function will keep getting called indefinitely until you use gtk::input_remove() so the proper way to do it is: <? dl('php_gtk.so'); function reader($source, $condition) { global $fd; if ($data = fgets($source, 200)) {
       print $data;
} else {
       gtk::input_remove($fd);
       gtk::main_quit();
} } $fp = fopen("config.m4", "r"); $fd = gtk::input_add($fp, GDK_INPUT_READ, 'reader'); gtk::main(); fclose($fp); ?> -Andrei * Only 19,999 lines of C++ to my next ski trip... *


« previous php.gtk.general (#1768) next »