/* -------------- checkbox.c ------------ */

#include "dflat.h"

int DfCheckBoxProc(DFWINDOW wnd, DFMESSAGE msg, DF_PARAM p1, DF_PARAM p2)
{
    int rtn;
    DF_CTLWINDOW *ct = DfGetControl(wnd);
    if (ct != NULL)    {
        switch (msg)    {
            case DFM_SETFOCUS:
                if (!(int)p1)
                    DfSendMessage(NULL, DFM_HIDE_CURSOR, 0, 0);
            case DFM_MOVE:
                rtn = DfBaseWndProc(DF_CHECKBOX, wnd, msg, p1, p2);
                DfSetFocusCursor(wnd);
                return rtn;
            case DFM_PAINT:    {
                char cb[] = "[ ]";
                if (ct->setting)
                    cb[1] = 'X';
                DfSendMessage(wnd, DFM_CLEARTEXT, 0, 0);
                DfSendMessage(wnd, DFM_ADDTEXT, (DF_PARAM) cb, 0);
                DfSetFocusCursor(wnd);
                break;
            }
            case DFM_KEYBOARD:
                if ((int)p1 != ' ')
                    break;
            case DFM_LEFT_BUTTON:
                ct->setting ^= DF_ON;
                DfSendMessage(wnd, DFM_PAINT, 0, 0);
                return TRUE;
            default:
                break;
        }
    }
    return DfBaseWndProc(DF_CHECKBOX, wnd, msg, p1, p2);
}

BOOL DfCheckBoxSetting(DF_DBOX *db, enum DfCommands cmd)
{
    DF_CTLWINDOW *ct = DfFindCommand(db, cmd, DF_CHECKBOX);
    if (ct != NULL)
        return (ct->isetting == DF_ON);
    return FALSE;
}

/* EOF */