class BasePlugin:

    def __init__(self, gui, name):
        self.gui = gui
        self.name = name
        self.config = gui.config

    def fullname(self):
        return self.name

    def description(self):
        return 'undefined'

    def requires_settings(self):
        return False

    def toggle(self):
        if self.is_enabled():
            if self.disable():
                self.close()
        else:
            if self.enable():
                self.init()

        return self.is_enabled()

    
    def enable(self):
        self.set_enabled(True)
        return True

    def disable(self):
        self.set_enabled(False)
        return True

    def init(self): pass

    def close(self): pass

    def is_enabled(self):
        return self.is_available() and self.config.get('use_'+self.name) is True

    def is_available(self):
        return True

    def set_enabled(self, enabled):
        self.config.set_key('use_'+self.name, enabled, True)

    def settings_dialog(self):
        pass