Re: Re: [php-gtk-cvs] cvs: php-gtk /test bug_gtkfilechooserbutton_actionselectfolder.phpw
| From: | Scott Mattocks | Date: | Tue, 04 Apr 2006 17:34:02 +0000 |
| Subject: | Re: Re: [php-gtk-cvs] cvs: php-gtk /test bug_gtkfilechooserbutton_actionselectfolder.phpw | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.gtk.dev |
| Request: | Send a blank email to php-gtk-dev+get-2709@lists.php.net to get a copy of this message | ||
No problem with C either.
Scott Mattocks wrote:
> Andrei Zmievski wrote:
>> I don't think this is a PHP-GTK problem necessarily. Scott, can you
>> try and convert your script to PyGtk and see if it does the same thing
>> there?
>
> The attached script (a rip off of the PyGtk Hello World example) runs
> without errors for me. It is slightly different however because PyGtk
> doesn't allow you to pass the action on construction.
>
> I will try to recreate the errors with straight Gtk+ but my c skills are
> about as good as my Python skills.
>
> Scott
>
>
> ------------------------------------------------------------------------
>
> #!/usr/bin/env python
>
> # example helloworld.py
>
> import pygtk
> pygtk.require('2.0')
> import gtk
>
> class HelloWorld:
>
> # This is a callback function. The data arguments are ignored
> # in this example. More on callbacks below.
> def hello(self, widget, data=None):
> print "Hello World"
>
> def delete_event(self, widget, event, data=None):
> # If you return FALSE in the "delete_event" signal handler,
> # GTK will emit the "destroy" signal. Returning TRUE means
> # you don't want the window to be destroyed.
> # This is useful for popping up 'are you sure you want to quit?'
> # type dialogs.
> print "delete event occurred"
>
> # Change FALSE to TRUE and the main window will not be destroyed
> # with a "delete_event".
> return False
>
> def destroy(self, widget, data=None):
> print "destroy signal occurred"
> gtk.main_quit()
>
> def __init__(self):
> # create a new window
> self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
>
> # When the window is given the "delete_event" signal (this is given
> # by the window manager, usually by the "close" option, or on the
> # titlebar), we ask it to call the delete_event () function
> # as defined above. The data passed to the callback
> # function is NULL and is ignored in the callback function.
> self.window.connect("delete_event", self.delete_event)
>
> # Here we connect the "destroy" event to a signal handler.
> # This event occurs when we call gtk_widget_destroy() on the window,
> # or if we return FALSE in the "delete_event" callback.
> self.window.connect("destroy", self.destroy)
>
> # Sets the border width of the window.
> self.window.set_border_width(10)
>
> # Creates a new button with the label "Hello World".
> self.button = gtk.FileChooserButton("Hello World")
> #
> self.button.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
>
> # When the button receives the "clicked" signal, it will call the
> # function hello() passing it None as its argument. The hello()
> # function is defined above.
> #self.button.connect("clicked", self.hello, None)
>
> # This will cause the window to be destroyed by calling
> # gtk_widget_destroy(window) when "clicked". Again, the destroy
> # signal could come from here, or the window manager.
> #self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
>
> # This packs the button into the window (a GTK container).
> self.window.add(self.button)
>
> # The final step is to display this newly created widget.
> self.button.show()
>
> # and the window
> self.window.show()
>
> def main(self):
> # All PyGTK applications must have a gtk.main(). Control ends here
> # and waits for an event to occur (like a key press or mouse event).
> gtk.main()
>
> # If the program is run directly or passed as an argument to the python
> # interpreter then create a HelloWorld instance and show it
> if __name__ == "__main__":
> hello = HelloWorld()
> hello.main()
>
>
--
Scott Mattocks
Author of the soon to be published: Pro PHP-GTK
http://www.crisscott.com