#
#		Python GUI - Check boxes - PyObjC
#

import AppKit
from AppKit import NSOnState, NSOffState, NSMixedState
from GUI import export
from GUI.Actions import Action
from GUI.StdFonts import system_font
from GUI.ButtonBasedControls import ButtonBasedControl
from GUI.GCheckBoxes import CheckBox as GCheckBox

class CheckBox(ButtonBasedControl, GCheckBox):

    _ns_mixed = False
    
    def __init__(self, title = "New Check Box", font = system_font, **kwds):
        ns_button = self._create_ns_button(title = title, font = font,
            ns_button_type = AppKit.NSSwitchButton,
            ns_bezel_style = AppKit.NSRoundedBezelStyle)
        #if mixed:
        #	self._ns_mixed = True
        #	ns_button.setAllowsMixedState_(True)
        GCheckBox.__init__(self, _ns_view = ns_button, **kwds)
    
    def get_mixed(self):
        return self._ns_view.allowsMixedState()
    
    def set_mixed(self, x):
        self._ns_view.setAllowsMixedState_(x)
    
    def get_on(self):
        state = self._ns_view.state()
        if state == NSMixedState:
            return 'mixed'
        else:
            return state <> NSOffState
    
    def set_on(self, v):
        if v == 'mixed' and self.mixed:
            state = NSMixedState
        elif v:
            state = NSOnState
        else:
            state = NSOffState
        self._ns_view.setState_(state)

    def do_action(self):
        if not self._auto_toggle:
            self.on = not self.on
        Action.do_action(self)

export(CheckBox)
