Robert Palmqvist schrieb:
> I wanted to take a look at the source for gtk.Dialog to se if I could
> mimic the “run” method from a gtk.Window but I never found the actual
> source for gtk.Dialog.run().

The source is here:
http://git.gnome.org/cgit/gtk+/tree/gtk/gtkdialog.c#n993

> Where can I find examples of best practise to implement and handle more
> than one window (more than one gtk.Window, not  the use of one
> gtk.Window and additional windows realized with the use of gtk.Dialog or
> its sub-classes) in a pygtk application (I can’t find any examples in
> the documentation, the tutorial or the FAQ, am I missing something
> obvious here?)?

Example:
-----------------------8<-----------------------
import gtk

class SecondWin:

        def __init__ (self, parent):
                self.parent = parent
                self.w = gtk.Window ()

                # Disable interaction with parent
                self.w.set_modal (True)

                # Tell WM this is a dialog
                self.w.set_type_hint (gtk.gdk.WINDOW_TYPE_HINT_DIALOG)

                # Tell WM this window belongs to parent
                self.w.set_transient_for (parent)
                self.w.connect ("delete-event", self.hide)

                box = gtk.VButtonBox ()
                self.w.add (box)

                b = gtk.Button (stock=gtk.STOCK_CLOSE)
                b.connect ("clicked", self.hide)
                box.add (b)


        def show (self):
                self.w.show_all ()
                # Indicate visually that interaction with parent
                # is not possible while we are shown
                self.parent.set_sensitive (False)


        def hide (self, *args):
                # Indicate visually that interaction with parent
                # is possible again
                self.parent.set_sensitive (True)
                self.w.hide ()
                return True


class MainWin:

        def __init__ (self):
                self.w = gtk.Window ()
                self.w.set_position (gtk.WIN_POS_CENTER)
                self.w.connect ("delete-event", gtk.main_quit)

                box = gtk.VButtonBox ()
                self.w.add (box)

                self.sw = SecondWin (self.w)

                b = gtk.Button ("show second win")
                b.connect ("clicked", self.show_second_win, self.sw)
                box.pack_start (b, False)

                b = gtk.Button (stock=gtk.STOCK_QUIT)
                b.connect ("clicked", gtk.main_quit)
                box.pack_start (b, False)


        def run (self):
                self.w.show_all ()
                gtk.main ()


        def show_second_win (self, button, w):
                w.show ()


w = MainWin ()
w.run ()
----------------------->8-----------------------

HTH.
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to