Re: [Glade-devel] how to add window as a page to a notebook

Neil Dugan <[email protected]>
Newsgroups gmane.comp.gnome.gtk+.python,gmane.comp.gnome.glade.devel,gmane.comp.gnome.glade.user
Message-ID <[email protected]>
Tristan Van Berkom wrote:
> On Sat, Jan 10, 2009 at 1:54 AM, anusha k <[email protected]> wrote:
>> hi,
>>
>> I am using glade and pygtk to develop an accounting software.In that we have
>> two glade files .first glade file contain the main window and the note book
>> and the second glade contains the another window .I want to add the second
>> glade-window as a page to first glade-window.how to do this
>> I have the code as below.but it is giving the warning and the window is not
>> shown up .warnings are :
>> How to solve the warnings.Is there any other way to solve this
>> Warnings:****************************************************************************
>>
>> self.wTree = gtk.glade.XML(self.gladefile)
>> main.py:47: GtkWarning: gtk_notebook_set_tab_label: assertion `GTK_IS_WIDGET
>> (child)' failed
>>   self.wTree = gtk.glade.XML(self.gladefile)
>> main.py:20: GtkWarning: Can't set a parent on a toplevel widget
>>
>>
>> self.page=self.notebook.insert_page(self.wTreenewOrg.get_widget("window_new_org")
>> , None, 0)
>> main.py:20: GtkWarning: gtk_widget_set_child_visible: assertion
>> `!GTK_WIDGET_TOPLEVEL (widget)' failed
> 
> You cannot add a GtkWindow to another GtkContainer, a GtkWindow is a
> toplevel-only
> widget and is not meant to be maintained.
> 
> You can either:
>    - Manually unparent your window's child and add that child to the
> notebook (the traditional oldschool way)
>    - Use the "root" argument to glade_xml_new or some equivalent
> gtkbuilder api (I think that works
>      for building of sub-portions of the glade file)
>    - Use development or trunk versions of Glade allowing you to use
> non-GtkWindow toplevel project
>      widgets - and use GtkBuilder that will allow you toplevelless
> glade files without errors/warnings.
> 
> Cheers,
>                    -Tristan

One thing I have done that is similar is, to not attach the window, 
but attach the most top level widget.  When designing the window, you 
need to put all the widgets in a HBox,VBox or Table.  Attach this not 
the window itself.

Regards Neil.

> 
>> self.page=self.notebook.insert_page(self.wTreenewOrg.get_widget("window_new_org")
>> , None, 0)
>> ***************************************************************************
>> Code:
>>
>> import pygtk
>> pygtk.require('2.0')
>> import gtk
>> import gtk.glade
>> import new_org
>> class mainmenu:
>>     def show_newOrganisation(self,widget):
>>         new_org.org()
>>         self.gladefile_newOrg = "new_org.glade"
>>         self.wTreenewOrg = gtk.glade.XML(self.gladefile_newOrg)
>>
>> self.page=self.notebook.insert_page(self.wTreenewOrg.get_widget("window_new_org")
>> , None, 0)
>>         self.notebook.set_current_page(self.page)
>>
>>     def dialogQuit(self,widget):
>>         self.dialog_quit = self.wTree.get_widget("dialog_quit")
>>         self.dialog_quit.show()
>>         self.response = self.dialog_quit.run()
>>         if self.response == 'gtk.RESPONSE_QUIT':
>>             gtk.main_quit()
>>             self.window.destroy()
>>         self.dialog_quit.destroy()
>>
>>
>>     def on_button_quit_clicked(*args):
>>         gtk.main_quit()
>>
>>     def on_button_cancel_clicked(*args):
>>         self.dialog_quit.destroy()
>>
>>     #To quit the main window
>>     def on_Mainwindow_destroy(self):
>>         gtk.main_quit()
>>
>>
>>     def __init__(self):
>>         #set the glade file
>>         self.gladefile = "gnukhata.glade"
>>         self.wTree = gtk.glade.XML(self.gladefile)
>>
>>         #get the Main Window and connect the Destroy event
>>         self.window = self.wTree.get_widget("MainWindow")
>>         self.window.show()
>>         self.window.connect('destroy',gtk.main_quit)
>>         self.notebook = self.wTree.get_widget("notebook_main")
>>         self.notebook.show()
>>
>>         self.menuitem_quit = self.wTree.get_widget("menuitem_quit")
>>         self.menuitem_quit.connect('activate',self.dialogQuit)
>>
>>         self.menuitem_newOrg =
>> self.wTree.get_widget("menuitem_new_organisation")
>>         self.menuitem_newOrg.connect('activate',self.show_newOrganisation)
>> if __name__ == "__main__":
>>     mm=mainmenu()
>>     gtk.main()
>>
>> Thanks in advance
>>
>> Njoy the share of Freedom,
>> Anusha
>>
>> _______________________________________________
>> Glade-devel maillist  -  [email protected]
>> http://lists.ximian.com/mailman/listinfo/glade-devel
>>
>>
> _______________________________________________
> pygtk mailing list   [email protected]
> http://www.daa.com.au/mailman/listinfo/pygtk
> Read the PyGTK FAQ: http://faq.pygtk.org/
> 

_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.