+++ /dev/null
-/* -------------- combobox.c -------------- */
-
-#include "dflat.h"
-
-int ListProc(DFWINDOW, DFMESSAGE, DF_PARAM, DF_PARAM);
-
-int DfComboProc(DFWINDOW wnd, DFMESSAGE msg, DF_PARAM p1, DF_PARAM p2)
-{
- switch (msg) {
- case DFM_CREATE_WINDOW:
- wnd->extension = DfDfCreateWindow(
- DF_LISTBOX,
- NULL,
- wnd->rc.lf,wnd->rc.tp+1,
- wnd->ht-1, wnd->wd+1,
- NULL,
- wnd,
- ListProc,
- DF_HASBORDER | DF_NOCLIP | DF_SAVESELF);
- ((DFWINDOW)(wnd->extension))->ct->command =
- wnd->ct->command;
- wnd->ht = 1;
- wnd->rc.bt = wnd->rc.tp;
- break;
- case DFM_PAINT:
- DfForeground = DfWndBackground(wnd);
- DfBackground = DfWndForeground(wnd);
- DfWPutch(wnd, DF_DOWNSCROLLBOX, DfWindowWidth(wnd), 0);
- break;
- case DFM_KEYBOARD:
- if ((int)p1 == DF_DN) {
- DfSendMessage(wnd->extension, DFM_SETFOCUS, TRUE, 0);
- return TRUE;
- }
- break;
- case DFM_LEFT_BUTTON:
- if ((int)p1 == DfGetRight(wnd) + 1)
- DfSendMessage(wnd->extension, DFM_SETFOCUS, TRUE, 0);
- break;
- case DFM_CLOSE_WINDOW:
- DfSendMessage(wnd->extension, DFM_CLOSE_WINDOW, 0, 0);
- break;
- default:
- break;
- }
- return DfBaseWndProc(DF_COMBOBOX, wnd, msg, p1, p2);
-}
-
-int ListProc(DFWINDOW wnd, DFMESSAGE msg, DF_PARAM p1, DF_PARAM p2)
-{
- DFWINDOW pwnd = DfGetParent(DfGetParent(wnd));
- DF_DBOX *db = pwnd->extension;
- DFWINDOW cwnd;
- char text[130];
- int rtn;
- DFWINDOW currFocus;
-
- switch (msg)
- {
- case DFM_CREATE_WINDOW:
- wnd->ct = DfMalloc(sizeof(DF_CTLWINDOW));
- wnd->ct->setting = DF_OFF;
- wnd->WindowColors[DF_FRAME_COLOR][DF_FG] =
- wnd->WindowColors[DF_STD_COLOR][DF_FG];
- wnd->WindowColors[DF_FRAME_COLOR][DF_BG] =
- wnd->WindowColors[DF_STD_COLOR][DF_BG];
- rtn = DfDefaultWndProc(wnd, msg, p1, p2);
- return rtn;
-
- case DFM_SETFOCUS:
- if ((int)p1 == FALSE)
- {
- if (!wnd->isHelping)
- {
- DfSendMessage(wnd, DFM_HIDE_WINDOW, 0, 0);
- wnd->ct->setting = DF_OFF;
- }
- }
- else
- wnd->ct->setting = DF_ON;
- break;
-
- case DFM_SHOW_WINDOW:
- if (wnd->ct->setting == DF_OFF)
- return TRUE;
- break;
-
- case DFM_BORDER:
- currFocus = DfInFocus;
- DfInFocus = NULL;
- rtn = DfDefaultWndProc(wnd, msg, p1, p2);
- DfInFocus = currFocus;
- return rtn;
-
- case DFM_LB_SELECTION:
- rtn = DfDefaultWndProc(wnd, msg, p1, p2);
- DfSendMessage(wnd, DFM_LB_GETTEXT,
- (DF_PARAM) text, wnd->selection);
- DfPutItemText(pwnd, wnd->ct->command, text);
- cwnd = DfControlWindow(db, wnd->ct->command);
- DfSendMessage(cwnd, DFM_PAINT, 0, 0);
- cwnd->TextChanged = TRUE;
- return rtn;
-
- case DFM_KEYBOARD:
- switch ((int) p1)
- {
- case DF_ESC:
- case DF_FWD:
- case DF_BS:
- cwnd = DfControlWindow(db, wnd->ct->command);
- DfSendMessage(cwnd, DFM_SETFOCUS, TRUE, 0);
- return TRUE;
-
- default:
- break;
- }
- break;
-
- case DFM_LB_CHOOSE:
- cwnd = DfControlWindow(db, wnd->ct->command);
- DfSendMessage(cwnd, DFM_SETFOCUS, TRUE, 0);
- return TRUE;
-
- case DFM_CLOSE_WINDOW:
- if (wnd->ct != NULL)
- free(wnd->ct);
- wnd->ct = NULL;
- break;
-
- default:
- break;
- }
-
- return DfDefaultWndProc(wnd, msg, p1, p2);
-}
-
-void DfPutComboListText(DFWINDOW wnd, enum DfCommands cmd, char *text)
-{
- DF_CTLWINDOW *ct = DfFindCommand(wnd->extension, cmd, DF_COMBOBOX);
-
- if (ct != NULL)
- {
- DFWINDOW lwnd = ((DFWINDOW)(ct->wnd))->extension;
- DfSendMessage(lwnd, DFM_ADDTEXT, (DF_PARAM) text, 0);
- }
-}
-
-/* EOF */