|
|
| version 1.2, 2003/11/21 09:28:02 | version 1.5, 2004/06/28 12:31:32 |
|---|---|
| Line 39 typedef struct { | Line 39 typedef struct { |
| short minval; | short minval; |
| short maxval; | short maxval; |
| int pos; | int pos; |
| BYTE type; | UINT8 type; |
| BYTE moving; | UINT8 moving; |
| BYTE sldh; | UINT8 sldh; |
| BYTE sldv; | UINT8 sldv; |
| } DLGSLD; | } DLGSLD; |
| typedef struct { | typedef struct { |
| Line 104 static BOOL seaprmempty(void *vpItem, vo | Line 104 static BOOL seaprmempty(void *vpItem, vo |
| ((DLGPRM)vpItem)->icon = NULL; | ((DLGPRM)vpItem)->icon = NULL; |
| return(TRUE); | return(TRUE); |
| } | } |
| (void)vpArg; | |
| return(FALSE); | return(FALSE); |
| } | } |
| Line 122 static DLGPRM resappend(MENUDLG dlg, con | Line 123 static DLGPRM resappend(MENUDLG dlg, con |
| prm->icon = NULL; | prm->icon = NULL; |
| prm->str[0] = '\0'; | prm->str[0] = '\0'; |
| if (str) { | if (str) { |
| milstr_ncpy(prm->str, str, sizeof(prm->str)); | milsjis_ncpy(prm->str, str, sizeof(prm->str)); |
| } | } |
| } | } |
| return(prm); | return(prm); |
| Line 155 static DLGPRM ressea(DLGHDL hdl, int pos | Line 156 static DLGPRM ressea(DLGHDL hdl, int pos |
| return(NULL); | return(NULL); |
| } | } |
| static BOOL dsbyid(void *vpItem, void *vpArg) { | static BOOL dsbyid(void *vpItem, void *vpArg) { |
| if (((DLGHDL)vpItem)->id == (MENUID)(unsigned long)vpArg) { | if (((DLGHDL)vpItem)->id == (MENUID)(unsigned long)vpArg) { |
| Line 164 static BOOL dsbyid(void *vpItem, void *v | Line 164 static BOOL dsbyid(void *vpItem, void *v |
| return(FALSE); | return(FALSE); |
| } | } |
| static DLGHDL dlghdlsea(MENUDLG dlg, MENUID id) { | static DLGHDL dlghdlsea(MENUDLG dlg, MENUID id) { |
| return((DLGHDL)listarray_enum(dlg->dlg, dsbyid, (void *)(long)id)); | return((DLGHDL)listarray_enum(dlg->dlg, dsbyid, (void *)(long)id)); |
| Line 380 static void dlgclose_move(MENUDLG dlg, D | Line 379 static void dlgclose_move(MENUDLG dlg, D |
| } | } |
| static void dlgclose_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgclose_rel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| if (focus) { | if (focus) { |
| dlg->proc(DLGMSG_CLOSE, 0, 0); | dlg->proc(DLGMSG_CLOSE, 0, 0); |
| } | } |
| (void)hdl; | (void)hdl; |
| (void)x; | |
| (void)y; | |
| } | } |
| Line 427 static void dlgbtn_onclick(MENUDLG dlg, | Line 424 static void dlgbtn_onclick(MENUDLG dlg, |
| (void)y; | (void)y; |
| } | } |
| static void dlgbtn_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgbtn_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { |
| if (hdl->val != focus) { | if (hdl->val != focus) { |
| Line 438 static void dlgbtn_move(MENUDLG dlg, DLG | Line 434 static void dlgbtn_move(MENUDLG dlg, DLG |
| (void)y; | (void)y; |
| } | } |
| static void dlgbtn_rel(MENUDLG dlg, DLGHDL hdl, int focus) { | |
| static void dlgbtn_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | if (hdl->val != 0) { |
| if (focus) { | |
| hdl->val = 0; | hdl->val = 0; |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| } | |
| if (focus) { | |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | dlg->proc(DLGMSG_COMMAND, hdl->id, 0); |
| } | } |
| (void)x; | |
| (void)y; | |
| } | } |
| Line 475 static void dlglist_reset(MENUDLG dlg, D | Line 470 static void dlglist_reset(MENUDLG dlg, D |
| DLGPRM next; | DLGPRM next; |
| vram_filldat(hdl->vram, NULL, 0xffffff); | vram_filldat(hdl->vram, NULL, 0xffffff); |
| dp = hdl->prm; | dp = hdl->prm; |
| while(dp) { | while(dp) { |
| next = dp->next; | next = dp->next; |
| Line 731 static BOOL dlglist_setex(MENUDLG dlg, D | Line 725 static BOOL dlglist_setex(MENUDLG dlg, D |
| } | } |
| resattachicon(dlg, dp, arg->icon, hdl->c.dl.fontsize, | resattachicon(dlg, dp, arg->icon, hdl->c.dl.fontsize, |
| hdl->c.dl.fontsize); | hdl->c.dl.fontsize); |
| milstr_ncpy(dp->str, arg->str, sizeof(dp->str)); | milsjis_ncpy(dp->str, arg->str, sizeof(dp->str)); |
| return(dlglist_drawsub(hdl, arg->pos, (arg->pos == hdl->val))); | return(dlglist_drawsub(hdl, arg->pos, (arg->pos == hdl->val))); |
| } | } |
| static int dlglist_getpos(DLGHDL hdl, int y) { | |
| int val; | |
| val = (y / hdl->c.dl.fontsize) + hdl->c.dl.basepos; | |
| if ((unsigned int)val < (unsigned int)hdl->prmcnt) { | |
| return(val); | |
| } | |
| else { | |
| return(-1); | |
| } | |
| } | |
| enum { | |
| DLCUR_OUT = -1, | |
| DLCUR_INLIST = 0, | |
| DLCUR_UP = 1, | |
| DLCUR_INBAR = 2, | |
| DLCUR_DOWN = 3, | |
| DLCUR_PGUP = 4, | |
| DLCUR_PGDN = 5 | |
| }; | |
| static int dlglist_getpc(DLGHDL hdl, int x, int y) { | static int dlglist_getpc(DLGHDL hdl, int x, int y) { |
| x -= (MENU_LINE * 2); | |
| if ((unsigned int)x >= (unsigned int)hdl->vram->width) { | if ((unsigned int)x >= (unsigned int)hdl->vram->width) { |
| goto dlgp_out; | goto dlgp_out; |
| } | } |
| y -= (MENU_LINE * 2); | |
| if ((unsigned int)y >= (unsigned int)hdl->vram->height) { | if ((unsigned int)y >= (unsigned int)hdl->vram->height) { |
| goto dlgp_out; | goto dlgp_out; |
| } | } |
| if ((hdl->prmcnt < hdl->c.dl.dispmax) || | if ((hdl->prmcnt < hdl->c.dl.dispmax) || |
| (x < (hdl->vram->width - MENUDLG_CXVSCR))) { | (x < (hdl->vram->width - MENUDLG_CXVSCR))) { |
| return(0); | return(DLCUR_INLIST); |
| } | } |
| else if (y < MENUDLG_CYVSCR) { | else if (y < MENUDLG_CYVSCR) { |
| return(1); | return(DLCUR_UP); |
| } | } |
| else if (y >= (hdl->vram->height - MENUDLG_CYVSCR)) { | else if (y >= (hdl->vram->height - MENUDLG_CYVSCR)) { |
| return(3); | return(DLCUR_DOWN); |
| } | } |
| else if (hdl->c.dl.scrollbar) { | y -= MENUDLG_CYVSCR; |
| return(2); | y -= dlglist_barpos(hdl); |
| if (y < 0) { | |
| return(DLCUR_PGUP); | |
| } | |
| else if (y < (int)hdl->c.dl.scrollbar) { | |
| return(DLCUR_INBAR); | |
| } | |
| else { | |
| return(DLCUR_PGDN); | |
| } | } |
| dlgp_out: | dlgp_out: |
| return(-1); | return(DLCUR_OUT); |
| } | } |
| static void dlglist_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlglist_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| Line 807 static void dlglist_setbasepos(MENUDLG d | Line 831 static void dlglist_setbasepos(MENUDLG d |
| static void dlglist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlglist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| int flg; | int flg; |
| int val; | |
| flg = dlglist_getpc(hdl, x, y); | x -= (MENU_LINE * 2); |
| y -= (MENU_LINE * 2); | y -= (MENU_LINE * 2); |
| flg = dlglist_getpc(hdl, x, y); | |
| dlg->dragflg = flg; | dlg->dragflg = flg; |
| switch(flg) { | switch(flg) { |
| case 0: | case DLCUR_INLIST: |
| dlglist_setval(dlg, hdl, (y / hdl->c.dl.fontsize) + | val = dlglist_getpos(hdl, y); |
| hdl->c.dl.basepos); | if ((val == hdl->val) && (val != -1)) { |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | dlg->proc(DLGMSG_COMMAND, hdl->id, 1); |
| } | |
| else { | |
| dlglist_setval(dlg, hdl, val); | |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | |
| } | |
| break; | break; |
| case 1: | case 1: |
| Line 825 static void dlglist_onclick(MENUDLG dlg, | Line 856 static void dlglist_onclick(MENUDLG dlg, |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| break; | break; |
| case 2: | case DLCUR_INBAR: |
| y -= MENUDLG_CYVSCR; | y -= MENUDLG_CYVSCR; |
| y -= dlglist_barpos(hdl); | y -= dlglist_barpos(hdl); |
| if ((unsigned int)y < (unsigned int)hdl->c.dl.scrollbar) { | if ((unsigned int)y < (unsigned int)hdl->c.dl.scrollbar) { |
| Line 835 static void dlglist_onclick(MENUDLG dlg, | Line 866 static void dlglist_onclick(MENUDLG dlg, |
| dlg->lasty = -1; | dlg->lasty = -1; |
| } | } |
| break; | break; |
| case DLCUR_PGUP: | |
| dlglist_setbasepos(dlg, hdl, hdl->c.dl.basepos | |
| - hdl->c.dl.dispmax); | |
| drawctrls(dlg, hdl); | |
| break; | |
| case DLCUR_PGDN: | |
| dlglist_setbasepos(dlg, hdl, hdl->c.dl.basepos | |
| + hdl->c.dl.dispmax); | |
| drawctrls(dlg, hdl); | |
| break; | |
| } | } |
| } | } |
| Line 843 static void dlglist_move(MENUDLG dlg, DL | Line 886 static void dlglist_move(MENUDLG dlg, DL |
| int flg; | int flg; |
| int height; | int height; |
| flg = dlglist_getpc(hdl, x, y); | x -= (MENU_LINE * 2); |
| y -= (MENU_LINE * 2); | y -= (MENU_LINE * 2); |
| flg = dlglist_getpc(hdl, x, y); | |
| switch(dlg->dragflg) { | switch(dlg->dragflg) { |
| case 0: | case DLCUR_INLIST: |
| if (flg == 0) { | if (flg == 0) { |
| dlglist_setval(dlg, hdl, (y / hdl->c.dl.fontsize) + | dlglist_setval(dlg, hdl, dlglist_getpos(hdl, y)); |
| hdl->c.dl.basepos); | |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | dlg->proc(DLGMSG_COMMAND, hdl->id, 0); |
| } | } |
| break; | break; |
| Line 860 static void dlglist_move(MENUDLG dlg, DL | Line 903 static void dlglist_move(MENUDLG dlg, DL |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| break; | break; |
| case 2: | case DLCUR_INBAR: |
| if (dlg->lasty >= 0) { | if (dlg->lasty >= 0) { |
| y -= MENUDLG_CYVSCR; | y -= MENUDLG_CYVSCR; |
| y -= dlg->lasty; | y -= dlg->lasty; |
| Line 882 static void dlglist_move(MENUDLG dlg, DL | Line 925 static void dlglist_move(MENUDLG dlg, DL |
| (void)focus; | (void)focus; |
| } | } |
| static void dlglist_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlglist_rel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| switch(dlg->dragflg) { | switch(dlg->dragflg) { |
| case 1: | case 1: |
| Line 891 static void dlglist_rel(MENUDLG dlg, DLG | Line 934 static void dlglist_rel(MENUDLG dlg, DLG |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| break; | break; |
| } | } |
| (void)x; | |
| (void)y; | |
| (void)focus; | (void)focus; |
| } | } |
| Line 1036 static void dlgslider_paint(MENUDLG dlg, | Line 1077 static void dlgslider_paint(MENUDLG dlg, |
| menuvram_res2put(dlg->vram, &src, &pt); | menuvram_res2put(dlg->vram, &src, &pt); |
| } | } |
| static void dlgslider_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlgslider_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| int pos; | int pos; |
| Line 1048 static void dlgslider_setval(MENUDLG dlg | Line 1088 static void dlgslider_setval(MENUDLG dlg |
| } | } |
| } | } |
| static void dlgslider_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgslider_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| int width; | int width; |
| Line 1088 static void dlgslider_onclick(MENUDLG dl | Line 1127 static void dlgslider_onclick(MENUDLG dl |
| } | } |
| } | } |
| static void dlgslider_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgslider_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { |
| int range; | int range; |
| Line 1130 static void dlgslider_move(MENUDLG dlg, | Line 1168 static void dlgslider_move(MENUDLG dlg, |
| } | } |
| static void dlgslider_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgslider_rel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| if (hdl->c.ds.moving) { | if (hdl->c.ds.moving) { |
| hdl->c.ds.moving = 0; | hdl->c.ds.moving = 0; |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| } | } |
| (void)x; | |
| (void)y; | |
| (void)focus; | (void)focus; |
| } | } |
| Line 1177 static BOOL dlgtablist_create(MENUDLG dl | Line 1213 static BOOL dlgtablist_create(MENUDLG dl |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| static void dlgtablist_paint(MENUDLG dlg, DLGHDL hdl) { | static void dlgtablist_paint(MENUDLG dlg, DLGHDL hdl) { |
| VRAMHDL dst; | VRAMHDL dst; |
| Line 1283 static void dlgtablist_paint(MENUDLG dlg | Line 1318 static void dlgtablist_paint(MENUDLG dlg |
| } | } |
| } | } |
| static void dlgtablist_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlgtablist_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| if (hdl->val != val) { | if (hdl->val != val) { |
| Line 1292 static void dlgtablist_setval(MENUDLG dl | Line 1326 static void dlgtablist_setval(MENUDLG dl |
| } | } |
| } | } |
| static void dlgtablist_append(MENUDLG dlg, DLGHDL hdl, const void *arg) { | static void dlgtablist_append(MENUDLG dlg, DLGHDL hdl, const void *arg) { |
| DLGPRM res; | DLGPRM res; |
| Line 1312 static void dlgtablist_append(MENUDLG dl | Line 1345 static void dlgtablist_append(MENUDLG dl |
| } | } |
| } | } |
| static void dlgtablist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgtablist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| DLGPRM prm; | DLGPRM prm; |
| Line 1402 static void dlgframe_paint(MENUDLG dlg, | Line 1434 static void dlgframe_paint(MENUDLG dlg, |
| // ---- radio | // ---- radio |
| typedef struct { | |
| MENUDLG dlg; | |
| MENUID group; | |
| } MDCB1; | |
| static void dlgradio_paint(MENUDLG dlg, DLGHDL hdl) { | static void dlgradio_paint(MENUDLG dlg, DLGHDL hdl) { |
| POINT_T pt; | POINT_T pt; |
| Line 1422 const MENURES2 *src; | Line 1459 const MENURES2 *src; |
| dlg_text(dlg, hdl, &pt, &hdl->rect); | dlg_text(dlg, hdl, &pt, &hdl->rect); |
| } | } |
| typedef struct { | |
| MENUDLG dlg; | |
| MENUID group; | |
| } MDCB1; | |
| static BOOL drsv_cb(void *vpItem, void *vpArg) { | static BOOL drsv_cb(void *vpItem, void *vpArg) { |
| DLGHDL item; | DLGHDL item; |
| Line 1456 static void dlgradio_setval(MENUDLG dlg, | Line 1487 static void dlgradio_setval(MENUDLG dlg, |
| } | } |
| } | } |
| static void dlgradio_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgradio_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| if (x < (hdl->c.dt.pt.x + MENUDLG_SXRADIO)) { | if (x < (hdl->c.dt.pt.x + MENUDLG_SXRADIO)) { |
| Line 1502 static void dlgcheck_paint(MENUDLG dlg, | Line 1532 static void dlgcheck_paint(MENUDLG dlg, |
| dlg_text(dlg, hdl, &pt, &hdl->rect); | dlg_text(dlg, hdl, &pt, &hdl->rect); |
| } | } |
| static void dlgcheck_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlgcheck_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| if (hdl->val != val) { | if (hdl->val != val) { |
| Line 1511 static void dlgcheck_setval(MENUDLG dlg, | Line 1540 static void dlgcheck_setval(MENUDLG dlg, |
| } | } |
| } | } |
| static void dlgcheck_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgcheck_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| if (x < (hdl->c.dt.pt.x + MENUDLG_SXCHECK)) { | if (x < (hdl->c.dt.pt.x + MENUDLG_SXCHECK)) { |
| Line 1560 const void *str; | Line 1588 const void *str; |
| if (str == NULL) { | if (str == NULL) { |
| str = str_null; | str = str_null; |
| } | } |
| milstr_ncpy(hdl->prm->str, str, sizeof(hdl->prm->str)); | milsjis_ncpy(hdl->prm->str, str, sizeof(hdl->prm->str)); |
| fontmng_getsize(hdl->c.dt.font, str, &hdl->c.dt.pt); | fontmng_getsize(hdl->c.dt.font, str, &hdl->c.dt.pt); |
| } | } |
| (void)dlg; | (void)dlg; |
| Line 1696 static void _setval(MENUDLG dlg, DLGHDL | Line 1724 static void _setval(MENUDLG dlg, DLGHDL |
| (void)val; | (void)val; |
| } | } |
| static void _moverel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void _moverel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| (void)dlg; | (void)dlg; |
| (void)hdl; | (void)hdl; |
| (void)x; | |
| (void)y; | |
| (void)focus; | (void)focus; |
| } | } |
| Line 1710 typedef void (*DLGPAINT)(MENUDLG dlg, DL | Line 1736 typedef void (*DLGPAINT)(MENUDLG dlg, DL |
| typedef void (*DLGSETVAL)(MENUDLG dlg, DLGHDL hdl, int val); | typedef void (*DLGSETVAL)(MENUDLG dlg, DLGHDL hdl, int val); |
| typedef void (*DLGCLICK)(MENUDLG dlg, DLGHDL hdl, int x, int y); | typedef void (*DLGCLICK)(MENUDLG dlg, DLGHDL hdl, int x, int y); |
| typedef void (*DLGMOV)(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus); | typedef void (*DLGMOV)(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus); |
| typedef void (*DLGREL)(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus); | typedef void (*DLGREL)(MENUDLG dlg, DLGHDL hdl, int focus); |
| static const DLGCRE dlgcre[] = { | static const DLGCRE dlgcre[] = { |
| dlgbase_create, // DLGTYPE_BASE | dlgbase_create, // DLGTYPE_BASE |
| Line 2022 BOOL menudlg_appends(const MENUPRM *res, | Line 2048 BOOL menudlg_appends(const MENUPRM *res, |
| return(r); | return(r); |
| } | } |
| BOOL menudlg_append(int type, MENUID id, MENUFLG flg, const void *arg, | BOOL menudlg_append(int type, MENUID id, MENUFLG flg, const void *arg, |
| int posx, int posy, int width, int height) { | int posx, int posy, int width, int height) { |
| Line 2154 void menudlg_moving(int x, int y, int bt | Line 2179 void menudlg_moving(int x, int y, int bt |
| dlg->btn = 0; | dlg->btn = 0; |
| if ((unsigned int)hdl->type < | if ((unsigned int)hdl->type < |
| (sizeof(dlgrel)/sizeof(DLGREL))) { | (sizeof(dlgrel)/sizeof(DLGREL))) { |
| dlgrel[hdl->type](dlg, hdl, x, y, focus); | dlgrel[hdl->type](dlg, hdl, focus); |
| } | } |
| } | } |
| } | } |
| Line 2273 void *menudlg_msg(int ctrl, MENUID id, v | Line 2298 void *menudlg_msg(int ctrl, MENUID id, v |
| break; | break; |
| case DMSG_ITEMRESET: | case DMSG_ITEMRESET: |
| if ((dlg->btn) && (dlg->lastid == hdl->id)) { | |
| dlg->btn = 0; | |
| if ((unsigned int)hdl->type < | |
| (sizeof(dlgrel)/sizeof(DLGREL))) { | |
| dlgrel[hdl->type](dlg, hdl, FALSE); | |
| } | |
| } | |
| if (hdl->type == DLGTYPE_LIST) { | if (hdl->type == DLGTYPE_LIST) { |
| dlglist_reset(dlg, hdl); | dlglist_reset(dlg, hdl); |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |