I have a python add-in that includes a toolbar and an extension. A button on the toolbar should turn extension on and off.

A code for the button:

class Switch(object):
# Implementation for Sample_addin.btnSwitch (Button)
def __init__(self):
    self.enabled = True
    self.checked = False

def onClick(self):
    if not self.checked:
        self.checked = True
        print "Extension ON"
        # extExtension.__init__()
        extExtension.enabled = True
        self.checked = False
        print "Extension OFF"
        extExtension.enabled = False

A code for the extension:

class Extension(object):
# Implementation for Sample_addin.extExtension (Extension)
def __init__(self):
    self.enabled = True
    print 'Initialized'
# and so on...

And a part of config.xml:

<Extension  autoLoad="true"
            showInExtensionDialog="true" />''

Everything seems to be OK. When I click the button, it freezes in 'checked' state and the extension gets marked in Extension dialog (Customize -> Extensions). But after this the extension doesn't start working (I have many functions in it like 'onCreate' and so on).

If I toggle it manually in Extensions dialog - everything is OK, it works.

And the reverse case - when the Extension works and I want to switch it off by clicking on the button, it only changes its state in Extension dialog but not in reality.

I've tried to reinitialize the extension by calling extExtension.__init__(). This gave me nothing (and no errors too, only this print statement).

How to track the state of an extension in python add-in and change it?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.