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 = 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, [EMAIL PROTECTED] <[EMAIL PROTECTED]> 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 = self.z + 1
>      # create  scroller, gtksourceview, buffer and set mime
>      scroller = gtk.ScrolledWindow()
>      scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
>      bufferS = gtksourceview.SourceBuffer()
>      manager = gtksourceview.SourceLanguagesManager()
>      if arg:
>         type = gnomevfs.get_mime_type(arg)
>         language = manager.get_language_from_mime_type(type)
>      else:
>         language = manager.get_language_from_mime_type('text')
>      bufferS.set_language(language)
>      view = 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 = gtk.Image()
>      image.set_from_file("data/images/close.png")
>      btn = gtk.Button()
>      btn.add(image)
>      btn.connect('clicked',self.on_close_btn)
>      #btn.set_size_request(16,16)
>      # add label
>      hbox = gtk.HBox(False,3)
>      if not arg:
>         self.key[self.z] = gtk.Label(filename)
>      else:
>         self.key[self.z] = 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 = 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 = None
>      iter = 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 = view
>      self.bufferS = bufferS
>      # add page
>      page = 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 = self.mdi_book.page_num(widget)
>      print page
>
> #--------------------------------------------------------------------------
>   def on_close(self, widget):
>      p = 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   [email protected]
> http://www.daa.com.au/mailman/listinfo/pygtk
> Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/
>
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to