[pygtk] gtk.Notebook

Seltzer squabbit7 at gmail.com
Tue Jan 8 05:11:04 WST 2008


if using PyGTK 2.4, maybe try moving your connect down further, and sending
the index that append_page returns
to your handler. something like...

    ...
    page =3D self.mdi_book.append_page(scroller,hbox)
    btn.connect('clicked', self.on_close_btn, page)
    ...
def on_close_btn(self, widget,data):
    do_stuff_with_data

hope it helps.
felix


On Jan 6, 2008 6:19 PM, johnthawk at excite.com <johnthawk at excite.com> wrote:

>
> In gtk notebook page_num(child) being a widget
> Returns : the index of the page containing child, or -1
>
> So here is the problem:
>
> Added button to tab for close so I need the page the button is on since
> the
> button grabs focus rather than the tab. I tried emit back to parent and
> that
> failed to produce anything.
>
> The code segements:
>
> Creation:
>
> #------------------------------------------------------------------------=
--
>   def new_page(self, arg, filename):
>      self.z =3D self.z + 1
>      # create  scroller, gtksourceview, buffer and set mime
>      scroller =3D gtk.ScrolledWindow()
>      scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
>      bufferS =3D gtksourceview.SourceBuffer()
>      manager =3D gtksourceview.SourceLanguagesManager()
>      if arg:
>         type =3D gnomevfs.get_mime_type(arg)
>         language =3D manager.get_language_from_mime_type(type)
>      else:
>         language =3D manager.get_language_from_mime_type('text')
>      bufferS.set_language(language)
>      view =3D gtksourceview.SourceView(bufferS)
>      scroller.add(view)
>      # set defaults for gtksourceview and buffer
>      bufferS.set_highlight(self.HIGHLIGHT)
>      bufferS.set_check_brackets(self.CHECK_BRACKETS)
>      view.set_show_line_numbers(self.SHOW_LINE_NUMBERS)
>      view.set_show_margin(self.SHOW_MARGIN)
>      view.set_auto_indent(self.AUTO_INDENT)
>      view.set_tabs_width(int(self.TABS_WIDTH))
>      view.set_insert_spaces_instead_of_tabs(
> self.INSERT_SPACES_INSTEAD_OF_TABS)
>      view.set_margin(int(self.MARGIN))
>      # add close button
>      image =3D gtk.Image()
>      image.set_from_file("data/images/close.png")
>      btn =3D gtk.Button()
>      btn.add(image)
>      btn.connect('clicked',self.on_close_btn)
>      #btn.set_size_request(16,16)
>      # add label
>      hbox =3D gtk.HBox(False,3)
>      if not arg:
>         self.key[self.z] =3D gtk.Label(filename)
>      else:
>         self.key[self.z] =3D gtk.Label(filename.rsplit('/',1)[1])
>      hbox.add(self.key[self.z])
>      hbox.add(btn)
>      hbox.show_all()
>      # load and set text
>      if arg:
>         try:
>            bufferS.begin_not_undoable_action()
>            f =3D open(arg, 'r')
>            bufferS.set_text(f.read())
>            f.close()
>            bufferS.end_not_undoable_action()
>         except:
>            print 'File Error: '+arg
>      else:
>         bufferS.set_text('')
>      # populate tree
>      iter =3D None
>      iter =3D self.mod.append(iter)
>      if arg:
>         self.mod.set(iter,0, arg)
>      else:
>         self.mod.set(iter,0, filename)
>      self.mod.set(iter,1, self.key[self.z].get_text())
>      self.mod.set(iter,2, view)
>      self.mod.set(iter,3, bufferS)
>      self.mod.set(iter,4, self.key[self.z])
>      self.view =3D view
>      self.bufferS =3D bufferS
>      # add page
>      page =3D self.mdi_book.append_page(scroller,hbox)
>      self.mdi_book.show_all()
>      # switch to page
>      self.mdi_book.set_current_page(page)
>
> Callbacks:
>
>  #-----------------------------------------------------------------------=
---
>   def on_close_btn(self, widget):
>      page =3D self.mdi_book.page_num(widget)
>      print page
>
> #------------------------------------------------------------------------=
--
>   def on_close(self, widget):
>      p =3D self.mdi_book.get_current_page()
>      self.on_update_tree('delete')
>      self.mdi_book.remove_page(p)
>
>
>
>
>
> _______________________________________________
> Join Excite! - http://www.excite.com
> The most personalized portal on the Web!
>
>
> _______________________________________________
> pygtk mailing list   pygtk at daa.com.au
> http://www.daa.com.au/mailman/listinfo/pygtk
> Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.daa.com.au/pipermail/pygtk/attachments/20080107/cb207cd4/at=
tachment.htm


More information about the pygtk mailing list