On Tue, Sep 09, 2003 at 05:40:16PM +0200, Iņigo Serna wrote:
> >     if not self.block_toggle:
> > 
> >         self.block_toggle = 1
> > 
> > >         self.toggle.set_active(self.opt)
> > 
> >         self.block_toggle = 0
> > 
> > >         print self.opt
> > 
> > -- and the same code here
> > 
> > >     def onToggleToggled(self, toggle):
> > >         print self.opt,
> > >         if self.opt:
> > >             self.opt = 0
> > >         else:
> > >             self.opt = 1
> > >         self.label.set_text('Option: %d' % self.opt)
> > 
> >     if not self.block_toggle:
> > 
> >         self.block_toggle = 1
> > 
> > >         self.check.set_active(self.opt)
> >         
> >         self.block_toggle = 0
> > 
> 
> The problem comes because when self.toggle.set_active(self.opt) is
> executed in onCheckToggled method, self.opt value has already changed to
> the new value, but self.toggle.set_active(self.opt) calls
> onToggleToggled method, which changes self.opt a second time.

Elaborating on what I suggested (use connect_after(), too), something
like this perhaps?

    def onCheckToggled(self, check):
        # If the click started elsewhere, bail out
        if self.toggling:
            return

        self.toggling = 1
        self.opt = check.get_active()
        # update friend
        self.toggle.set_active(self.opt)
        self.toggling = 0

    def onToggleToggled(self, toggle):
        if self.toggling:
            return

        self.toggling = 1
        self.opt = toggle.get_active()
        self.check.set_active(self.opt)
        self.toggling = 0

This is not very PyGTK-related, and I don't guarantee it works ;-)

Take care,
--
Christian Reis, Senior Engineer, Async Open Source, Brazil.
http://async.com.br/~kiko/ | [+55 16] 261 2331 | NMFL
_______________________________________________
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