/********************************************************************* * * _cbBkWin */ static void _cbBkWin(WM_MESSAGE * pMsg) { const WM_KEY_INFO * pKeyInfo; int NCode; int Id; switch (pMsg->MsgId) { case WM_KEY: pKeyInfo = (const WM_KEY_INFO*)pMsg->Data.p; if (pKeyInfo->PressedCnt > 0) { switch (pKeyInfo->Key) { case GUI_KEY_TAB: WM_SetFocusOnNextChild(pMsg->hWin); break; case GUI_KEY_BACKTAB: WM_SetFocusOnPrevChild(pMsg->hWin); break; case GUI_KEY_ESCAPE: _Break = 1; break; } } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); // Id of widget NCode = pMsg->Data.v; // Notification code switch (NCode) { case WM_NOTIFICATION_RELEASED: // React only if released switch (Id) { case GUI_ID_BUTTON0: _AppSelection = APP_DASHBOARD; break; case GUI_ID_BUTTON1: _AppSelection = APP_CASHTERMINAL; break; } break; } break; case WM_PAINT: GUI_DrawGradientV(0, 0, 639, 479, GUI_BLUE, GUI_BLACK); GUI_SetFont(&GUI_FontAA2_32); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetColor(GUI_WHITE); GUI_DispStringHCenterAt("emWin VGA Demonstration\n", 400, 44); GUI_SetFont(&GUI_FontAA2_21); GUI_DispStringHCenterAt("Press the 'Dashboard' or the 'Cash Terminal'\nbutton to start one of the applications\n", 320, 150); GUI_DrawBitmap(&bmSeggerLogo, 30, 30); break; } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { int i; int NCode, Id; WM_HWIN hDlg, hItem; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: _OnPaint(); return; case WM_INIT_DIALOG: for (i = 0; i < 3; i++) { hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0 + i); SLIDER_SetRange(hItem, 0, 255); SLIDER_SetValue(hItem, _aColorSep[i]); /* Init EDIT-widgets */ hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + i); EDIT_SetDecMode(hItem, _aColorSep[i], 0, 255, 0, 0); } break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: ; break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ if (Id == GUI_ID_OK) { /* OK Button */ GUI_EndDialog(hDlg, 0); } if (Id == GUI_ID_CANCEL) { /* Cancel Button */ GUI_EndDialog(hDlg, 1); } break; case WM_NOTIFICATION_VALUE_CHANGED: /* Value has changed */ _OnValueChanged(hDlg, Id); break; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbDialogMain * * Function description * Callback routine of DialogMain */ static void _cbDialogMain(WM_MESSAGE * pMsg) { WM_HWIN hDlg; WM_HWIN hItem; int Id; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: break; case WM_INIT_DIALOG: // // Init progress bars // hItem = WM_GetDialogItem(hDlg, GUI_ID_PROGBAR0); WIDGET_SetEffect(hItem, &WIDGET_Effect_3D); _SetProgbarValue(GUI_ID_PROGBAR0, _aTemp1[GUI_COUNTOF(_aTemp1) - 1]); hItem = WM_GetDialogItem(hDlg, GUI_ID_PROGBAR1); WIDGET_SetEffect(hItem, &WIDGET_Effect_3D); _SetProgbarValue(GUI_ID_PROGBAR1, _aTemp2[GUI_COUNTOF(_aTemp2) - 1]); // // Init edit widgets // hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0); EDIT_SetDecMode(hItem, _TempMin, 0, 999, 0, 0); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1); EDIT_SetDecMode(hItem, _TempMax, 0, 999, 0, 0); WM_DisableWindow(hItem); // // Init temperature window * // hItem = WM_GetClientWindow(WM_GetDialogItem(hDlg, ID_TEMPERATURE)); _pcbCallbackTemperature = WM_SetCallback(hItem, _cbTemperature); _UpdateTextColors(hDlg); break; case WM_NOTIFY_PARENT: if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { Id = WM_GetId(pMsg->hWinSrc); // Id of widget switch (Id) { case GUI_ID_BUTTON0: WM_SetFocus(_hDialogColor); GUI_SetOrg(0, 240); break; } } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the kernel log dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbKernelLogDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = pMsg->hWin; FRAMEWIN_SetTitleVis(hItem, 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_KERNELLOG); MULTIEDIT_SetFont(hItem, GUI_FONT_8_1); MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_READONLY, GUI_GREEN); MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_READONLY, GUI_BLACK); MULTIEDIT_SetReadOnly(hItem, 1); MULTIEDIT_SetText(hItem, (char *)pLOG_CacheBuffer); MULTIEDIT_SetCursorOffset(hItem, LOG_IN_ptr); MULTIEDIT_SetAutoScrollV(hItem, 1); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_BUTTON_CANCEL_KERNELLOG: /* Notifications sent by 'Cancel' button */ switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); hLog = 0; break; } break; case ID_MULTIEDIT_KERNELLOG: /* Notifications sent by 'Multiedit' */ switch(NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: break; case WM_NOTIFICATION_VALUE_CHANGED: break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/******************************************************************* * * WM_DialogItem Recursively scan window and its child windows until dialog item is found or all children have been scanned. */ WM_HWIN WM__GetDialogItem(WM_HWIN hWin, int Id) { WM_HWIN hi; WM_HWIN r =0; WM_Obj* pWin = WM_H2P(hWin); hi = pWin->hFirstChild; while (hi) { /* This windows Id matching ? */ if (WM_GetId(hi) == Id) return hi; /* Any child windows Id matching ? */ if ((r = WM__GetDialogItem(hi, Id)) != 0) break; hi = WM_HANDLE2PTR(hi)->hNext; } return r; }
/** * @brief callback for Message Box * @param pMsg : pointer to data structure * @retval None */ static void _cbMessageBox(WM_MESSAGE* pMsg) { WM_HWIN hWin; int Id; hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_NOTIFY_PARENT: if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { Id = WM_GetId(pMsg->hWinSrc); GUI_EndDialog(hWin, (Id == GUI_ID_OK) ? 1 : 0); } break; default: WM_DefaultProc(pMsg); } }
void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; switch (pMsg->MsgId) { case WM_TIMER: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); // _DispThread(hItem); WM_RestartTimer(pMsg->Data.v, 200); break; case WM_INIT_DIALOG: WM_CreateTimer(WM_GetClientWindow(pMsg->hWin), 0, 100, 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); LISTVIEW_AddColumn(hItem, 60, "Thread", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 40, "Priority", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 40, "Stack", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 50, "Status", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_SetGridVis(hItem, 1); _DispThread(hItem); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case GUI_ID_BUTTON0: // Notifications sent by 'Button' switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); GUI_EndDialog(hParent, 0); break; } break; } default: WM_DefaultProc(pMsg); break; } }
static void _cbClock(WM_MESSAGE *pMsg) { int NCode, Id; //PARAM pParam; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_BLACK); _ShowButton(pMsg->hWin); GUI_DrawBitmap(&bmwatch, 37, 0); //GUI_AA_FillPolygon(pParam.aPoint1, GUI_COUNTOF(_aNeedle[0]), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2)); // GUI_AA_FillPolygon(pParam.aPoint2, GUI_COUNTOF(_aNeedle[1]), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2)); //GUI_AA_FillPolygon(pParam.aPoint3, GUI_COUNTOF(_aNeedle[2]), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2)); GUI_FillCircle(160, 120, 3); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_CLICKED: switch (Id) { case BUTTON_ID_EXIT: GUI_SetAppIndex(APP_MainMenu); GUI_SetAppDirection(MEMDEV_ANIMATION_LEFT); _MoveShiftWindow(&pMsg->hWin, MEMDEV_ANIMATION_RIGHT, 1, 1); GUI_SetCancel(APP_Clock); GUI_ClearHalt(); break; default: break; } } break; default: WM_DefaultProc(pMsg); } }
/* ********************************************************************************************************* * 函 数 名: _cbCallback * 功能说明: 对话框回调函数 * 形 参: pMsg 回调参数 * 返 回 值: 无 ********************************************************************************************************* */ static void _cbCallback(WM_MESSAGE * pMsg) { int i; int NCode, Id; WM_HWIN hDlg, hItem; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO0); for (i = 0; i < GUI_COUNTOF(_apLabel); i++) { RADIO_SetText(hItem, _apLabel[i], i); } _SetFont(hDlg); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: _SetFont(hDlg); break; /* 两个按钮的消息处理 */ case WM_NOTIFICATION_RELEASED: if (Id == GUI_ID_OK) { GUI_EndDialog(hDlg, 0); } if (Id == GUI_ID_CANCEL) { GUI_EndDialog(hDlg, 1); } break; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_HWIN hDlg; WM_HWIN hWinSrc; int Id; int NCode; hWinSrc = pMsg->hWinSrc; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetColor(GUI_BLACK); GUI_DrawBitmap(&bmLogoBitmap, 30, 80); GUI_SetFont(&GUI_Font24B_ASCII); GUI_SetFont(&GUI_Font16B_ASCII); GUI_DispStringHCenterAt("www.segger.com", 30 + bmLogoBitmap.XSize / 2, 80 + bmLogoBitmap.YSize); GUI_DispStringHCenterAt("Virtual screen sample", 160, 20); break; case WM_INIT_DIALOG: FRAMEWIN_SetFont(hDlg, &GUI_Font24B_ASCII); FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER); break; case WM_NOTIFY_PARENT: Id = WM_GetId(hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: switch (Id) { case ID_BUTTON_SETUP: ExecSetup(); break; case ID_BUTTON_CALIBRATION: ExecCalibration(); break; case ID_BUTTON_ABOUT: ExecAbout(); break; } break; } break; default: WM_DefaultProc(pMsg); } }
static void myButton (WM_MESSAGE *pMsg) { int index = 0; const WM_KEY_INFO* pInfo; switch(pMsg->MsgId) { case WM_SET_FOCUS: index = WM_GetId(pMsg->hWin) - GUI_ID_BUTTON0; if(pMsg->Data.v == 0) { BUTTON_SetBkColor(buttons[index], BUTTON_CI_UNPRESSED, pColors->btBkColor); //TEXT_SetBkColor(Texts[index], pSkin->MntSetWin_bkNOFOCUS); } else { BUTTON_SetBkColor(buttons[index], BUTTON_CI_UNPRESSED, pColors->btFocusBkColor); //TEXT_SetBkColor(Texts[index], GUI_DARKMAGENTA); } BUTTON_Callback(pMsg); break; case WM_KEY: pInfo = (WM_KEY_INFO*)pMsg->Data.p; switch(pInfo->Key) { case GUI_KEY_ENTER: case GUI_KEY_LEFT: case GUI_KEY_RIGHT: BUTTON_Callback(pMsg); break; default: break; } break; default: BUTTON_Callback(pMsg); break; } }
/** * @brief Callback routine of Info dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbFileInfoDialog(WM_MESSAGE * pMsg) { int NCode; int Id; WM_HWIN hItem; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK_MESSAGE); WM_SetCallback(hItem, _cbButton_okMessage); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_FILENAME); TEXT_SetFont(hItem, &GUI_FontAvantGarde32); hItem = WM_GetDialogItem(pMsg->hWin, (ID_TEXT_FILENAME+2)); TEXT_SetFont(hItem, &GUI_FontAvantGarde32); break; case WM_PAINT: GUI_DrawBitmap(&bmwarning, 260, 60); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_BUTTON_OK_MESSAGE: /* Notifications sent by 'OK' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback function of the File Control page * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbFileControl(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'Brightness' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_FOLDER_CAPTION); TEXT_SetFont(hItem, GUI_FONT_13B_1); hItem = WM_GetDialogItem(pMsg->hWin, ID_FOLDER); EDIT_SetText(hItem, (char *)capture_folder); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_BROWSE: /* Notifications sent by 'Radio' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_folder; chooser_select_folder = CHOOSEFILE_Create(CAMERA_hWin, 67, 20, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Select a folder", 0, pFileInfo); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of desktop window * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbBk(WM_MESSAGE* pMsg) { uint32_t NCode, Id, sel; static uint32_t module_mutex = 0; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_TRANSPARENT); GUI_Clear(); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_CLICKED: if ('0' == Id) { sel = ICONVIEW_GetSel(pMsg->hWinSrc); if (sel < GUI_COUNTOF(_aBitmapItem)) { if (0 == module_mutex) { module_mutex = 1; _apModules[sel](pMsg->hWinSrc); current_module = sel; } } } break; case 0x500: module_mutex = 0; current_module = 0xFF; ICONVIEW_SetSel(pMsg->hWinSrc, -1); break; default: break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbDialogIntro * * Function description * Callback routine of DialogIntro */ static void _cbDialogIntro(WM_MESSAGE * pMsg) { GUI_RECT Rect; WM_HWIN hDlg; int Id; unsigned i; int ySizeText; int yPos; yPos = 40; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: WM_GetClientRect(&Rect); GUI_SetBkColor(GUI_WHITE); GUI_SetColor(GUI_BLACK); GUI_Clear(); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("Virtual screens", 160, 5); GUI_SetFont(&GUI_Font13B_ASCII); GUI_DrawBitmap(&_bmLogoBitmap, (Rect.x1 - _bmLogoBitmap.XSize) / 2, yPos); ySizeText = GUI_GetFontSizeY(); yPos += _bmLogoBitmap.YSize + 15; for (i = 0; i < GUI_COUNTOF(_apDialogIntro); i++) { GUI_DispStringHCenterAt(_apDialogIntro[i], Rect.x1 / 2, yPos); yPos += ySizeText; } break; case WM_NOTIFY_PARENT: if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { Id = WM_GetId(pMsg->hWinSrc); // Id of widget if (Id == GUI_ID_BUTTON0) { GUI_EndDialog(hDlg, 0); } } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * MESSAGEBOX_Callback */ void MESSAGEBOX_Callback(WM_MESSAGE * pMsg) { WM_HWIN hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: FRAMEWIN_SetClientColor(hWin, MESSAGEBOX_BKCOLOR); break; case WM_KEY: { int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key; if (((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt) { switch (Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hWin, 1); /* End dialog with return value 1 if <ESC> is pressed */ break; case GUI_KEY_ENTER: GUI_EndDialog(hWin, 0); /* End dialog with return value 0 if <ENTER> is pressed */ break; } } } break; case WM_NOTIFY_PARENT: { int NCode = pMsg->Data.v; /* Get notification code */ int Id = WM_GetId(pMsg->hWinSrc); /* Get control ID */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ if (Id == GUI_ID_OK) { GUI_EndDialog(hWin, 0); /* End dialog with return value 0 if OK */ } break; } } break; default: WM_DefaultProc(pMsg); } }
static void mytext(WM_MESSAGE *pMsg) { int16_t ID; ID = WM_GetId(pMsg->hWin); switch (pMsg->MsgId) { case WM_PAINT: switch (ID) { case ID_TEXT_0: GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_BLACK); GUI_FillRoundedRect(0,0,80,25,5); GUI_SetTextMode(GUI_TEXTMODE_TRANS); GUI_SetColor(GUI_WHITE); GUI_SetFont (&GUI_Font24); GUI_DispStringAt("518 横",5,2); break; case ID_TEXT_1: GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_BLACK); GUI_FillRoundedRect(0,0,83,25,5); GUI_SetTextMode(GUI_TEXTMODE_TRANS); GUI_SetColor(GUI_WHITE); GUI_SetFont (&GUI_Font24); GUI_DispStringAt(pCannel,5,2); break; } break; default: TEXT_Callback(pMsg); break; } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_HWIN hDlg, hWinSrc, hItem; int Id, NCode, i; hWinSrc = pMsg->hWinSrc; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: WM_MakeModal(hDlg); FRAMEWIN_SetFont(hDlg, &GUI_Font24B_ASCII); FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER); FRAMEWIN_SetClientColor(hDlg, GUI_YELLOW); for (i = 0; i < 4; i++) { hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0 + i); SLIDER_SetRange(hItem, 0, 999); SLIDER_SetValue(hItem, _aSlider[i]); hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + i); EDIT_SetDecMode(hItem, _aSlider[i], 0, 999, 0, 0); WM_DisableWindow(hItem); } break; case WM_NOTIFY_PARENT: Id = WM_GetId(hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ if (NCode == WM_NOTIFICATION_RELEASED) { /* React only if released */ if (Id == GUI_ID_OK) { /* OK Button */ GUI_EndDialog(hDlg, 0); WM_SetFocus(_hPrevWin); } } if (NCode == WM_NOTIFICATION_VALUE_CHANGED) { _OnValueChanged(hDlg, Id); } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_HWIN hDlg, hWinSrc; int Id, NCode; GUI_RECT Rect; Rect.x0 = 10; Rect.y0 = 10; Rect.x1 = 300; Rect.y1 = 200; hWinSrc = pMsg->hWinSrc; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: WM_MakeModal(hDlg); FRAMEWIN_SetFont(hDlg, &GUI_Font24B_ASCII); FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER); FRAMEWIN_SetClientColor(hDlg, GUI_GREEN); break; case WM_PAINT: GUI_SetColor(GUI_BLACK); GUI_SetFont(&GUI_Font16_ASCII); GUI_DispStringInRect(&_aExplain[0], &Rect, GUI_TA_LEFT); break; case WM_NOTIFY_PARENT: Id = WM_GetId(hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ if (NCode == WM_NOTIFICATION_RELEASED) { /* React only if released */ if (Id == GUI_ID_OK) { /* OK Button */ GUI_EndDialog(hDlg, 0); WM_SetFocus(_hPrevWin); } } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbFrameWinClient */ static void _cbFrameWinClient(WM_MESSAGE* pMsg) { switch(pMsg->MsgId) { case WM_NOTIFY_PARENT: if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { int Id = WM_GetId(pMsg->hWinSrc); if ((Id >= ID_NONEWRAP) && (Id <= ID_CHARWRAP)) { _SetButtonState(_hWrapButton, 0); if (Id == ID_NONEWRAP) { MULTIEDIT_SetWrapNone(_hMEdit); } else if (Id == ID_WORDWRAP) { MULTIEDIT_SetWrapWord(_hMEdit); } else if (Id == ID_CHARWRAP) { MULTIEDIT_SetWrapChar(_hMEdit); } _hWrapButton = pMsg->hWinSrc; _SetButtonState(_hWrapButton, 1); } else if (Id == ID_OVERWRITE) { _Overwrite ^= 1; MULTIEDIT_SetInsertMode(_hMEdit, 1 - _Overwrite); _SetButtonState(pMsg->hWinSrc, _Overwrite); } else if (Id == ID_READONLY) { _ReadOnly ^= 1; MULTIEDIT_SetReadOnly(_hMEdit, _ReadOnly); _SetButtonState(pMsg->hWinSrc, _ReadOnly); } else if (Id == ID_PASSWORD) { _Password ^= 1; MULTIEDIT_SetPasswordMode(_hMEdit, _Password); _SetButtonState(pMsg->hWinSrc, _Password); } } return; } if (_pcbFrameWinClient) { (*_pcbFrameWinClient)(pMsg); } }
/********************************************************************* * * _cbDialog * * Purpose * Callback routine of the dialog */ static void _cbDialog(WM_MESSAGE * pMsg) { int NCode, Id; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_GREEN); GUI_Clear(); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case GUI_ID_BUTTON0: GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); } }
/*---------------------------------------------------------------------------* * Routine: _PFMainDialog *---------------------------------------------------------------------------* * Description: * Callback function used by emWin to process events. * Inputs: * WM_MESSAGE *pMsg -- message structure for current dialog. *---------------------------------------------------------------------------*/ static void _PFMainDialog(WM_MESSAGE *pMsg) { int Id, NCode; WM_HWIN hItem; GUI_PID_STATE *p_touchState; T_ImageMessage message; switch (pMsg->MsgId){ case WM_INIT_DIALOG: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; LAFSetup(pMsg->hWin, ID_WINDOW, PFMainLayout); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &REVERSE_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &PLAY_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &FORWARD_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &SETTINGS_BUTTON); G_OverlayTimer = WM_CreateTimer(pMsg->hWin, ID_OVERLAY_TIMER, OVERLAY_TIMEOUT_MS, 0); G_UpdateTimer = WM_CreateTimer(pMsg->hWin, ID_UPDATE_TIMER, UPDATE_TIME_MS, 0); G_PictureChangeTimer = WM_CreateTimer(pMsg->hWin, ID_PICTURECHANGE_TIMER, 0, 0); if (!G_Current) { G_Current = GUI_MEMDEV_Create(0, 0, UEZ_LCD_DISPLAY_WIDTH, UEZ_LCD_DISPLAY_HEIGHT); GUI_MEMDEV_Select(G_Current); GUI_BMP_Draw(G_CurrentImage, 0, 0); GUI_MEMDEV_Select(0); } WM_SetHasTrans(pMsg->hWin); message = IMAGE_INITILIZE; UEZQueueSend(G_ImageLoadQueue, (void*)&message, 50); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; if( !LAFHandleEvent(PFMainLayout, pMsg, NCode, Id)){ //Handle special cases here } break; case WM_TIMER: NCode = pMsg->Data.v; if (G_Active) { if (NCode == G_OverlayTimer) { IHideButtonsAndText(pMsg); //Grab all the touches WM_SetCapture(pMsg->hWin, 0); } else if (NCode == G_PictureChangeTimer) { //put up new picture if(G_AutoPlayOn) { IHandleForward(pMsg, WM_NOTIFICATION_RELEASED, ID_FORWARD_BUTTON); WM_RestartTimer(G_PictureChangeTimer, 5000); } } else if (NCode == G_UpdateTimer) { IUpdateFields(pMsg); WM_RestartTimer(G_UpdateTimer, UPDATE_TIME_MS); } } break; case WM_TOUCH: p_touchState = (GUI_PID_STATE *)(pMsg->Data.p); if (!p_touchState->Pressed) { WM_RestartTimer(G_OverlayTimer, OVERLAY_TIMEOUT_MS); //Show all the hidden text on buttons hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_TEXT); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_TIMEDATE_TEXT); WM_ShowWindow(hItem); WM_ReleaseCapture(); IUpdateFields(pMsg); } break; case WM_POST_PAINT: GUI_BMP_Draw(G_CurrentImage, 0, 0); break; case WM_APP_GAINED_FOCUS: G_Active = ETrue; WM_SetCapture(pMsg->hWin, 0); IHideButtonsAndText(pMsg); IUpdateFields(pMsg); break; case WM_APP_LOST_FOCUS: G_Active = EFalse; IHideButtonsAndText(pMsg); WM_ReleaseCapture(); G_AutoPlayOn = EFalse; break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the dialog * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem, hClient; int NCode; int Id, Index, newpos; GUI_RECT r; int ItemNbr; int result; static char tmp[FILEMGR_FILE_NAME_SIZE]; switch (pMsg->MsgId) { case WM_INIT_DIALOG: pVideoList = (FILELIST_FileTypeDef *)k_malloc(sizeof(FILELIST_FileTypeDef)); pFileInfo = (CHOOSEFILE_INFO *)k_malloc(sizeof(CHOOSEFILE_INFO)); pVideoList->ptr = 0; PlayerSettings.d32 = k_BkupRestoreParameter(CALIBRATION_VIDEOPLAYER_SETTING_BKP); /* Initialization of 'Listview' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); LISTVIEW_AddColumn(hItem, 165, "Video", GUI_TA_VCENTER | GUI_TA_LEFT); LISTVIEW_SetGridVis(hItem, 0); LISTVIEW_SetAutoScrollV(hItem, 1); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, GUI_BLACK); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_UNSEL, GUI_CYAN); hItem = BUTTON_CreateEx( 240, 202, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_STOP_BUTTON); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(92, 202, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_PREVIOUS_BUTTON); WM_SetCallback(hItem, _cbButton_previous); hItem = BUTTON_CreateEx(137, 195, 50, 45, pMsg->hWin, WM_CF_SHOW, 0, ID_PLAY_BUTTON); WM_SetCallback(hItem, _cbButton_play); hItem = BUTTON_CreateEx(195, 202, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_NEXT_BUTTON); WM_SetCallback(hItem, _cbButton_next); hItem = BUTTON_CreateEx(47, 205, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_REPEAT_BUTTON); WM_SetCallback(hItem, _cbButton_repeat); hItem = BUTTON_CreateEx(315, 205, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_OPEN_BUTTON); WM_SetCallback(hItem, _cbButton_open); hItem = BUTTON_CreateEx(375, 205, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_ADD_BUTTON); WM_SetCallback(hItem, _cbButton_add); hItem = BUTTON_CreateEx(440, 202, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_CLOSE_BUTTON); WM_SetCallback(hItem, _cbButton_close); hItem = BUTTON_CreateEx(281, 172, 25, 25, pMsg->hWin, WM_CF_SHOW, 0, ID_FULL_SCREEN_BUTTON); WM_SetCallback(hItem, _cbButton_fullscreen); hClient = WM_GetClientWindow(pMsg->hWin); WM_GetClientRectEx(hClient, &r); hFrame = WM_CreateWindowAsChild(r.x0 + 5, r.y0 + 5, r.x1 - 179, r.y1 - 75, hClient, WM_CF_SHOW, _cbVideoWindow , 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGRESS_SLIDER); SLIDER_SetNumTicks(hItem, 25); hItem = WM_CreateWindowAsChild(05, 163, 275, 20, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_BGND, _cbDrawProgressSlider, 0); WM_CreateWindowAsChild(479, 250, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); break; case WM_PAINT: DrawRect3D(05, 193, 300, 50); DrawRect3D(310, 193, 165, 50); break; case WM_TIMER: Id = WM_GetTimerId(pMsg->Data.v); if (Id == ID_PLAYLIST_TIMER) { playlist_select = 0; } break; case WM_DELETE: k_BkupSaveParameter(CALIBRATION_VIDEOPLAYER_SETTING_BKP, PlayerSettings.d32); WM_DeleteTimer(hPlaylistTimer); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { /* Notification sent by "Close Button" */ case ID_FULL_SCREEN_BUTTON: switch (NCode) { case WM_NOTIFICATION_RELEASED: if( VideoPlayer_State != VIDEO_IDLE) { _ShowFullScreen(); } break; } break; /* Notifications sent by 'Add' Button */ case ID_ADD_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_video; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Add video file to playlist", 0, pFileInfo); if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Pause(hMovie); } WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if((strstr(pFileInfo->pRoot, ".emf")) || (strstr(pFileInfo->pRoot, ".EMF"))) { if(pVideoList->ptr < FILEMGR_LIST_DEPDTH) { strcpy((char *)pVideoList->file[pVideoList->ptr].name, pFileInfo->pRoot); FILEMGR_GetFileOnly ((char *)tmp, (char *)pFileInfo->pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, pVideoList->ptr, tmp); pVideoList->ptr++; } } WM_InvalidateWindow(hFrame); } if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Play(hMovie); } break; } break; /* Notifications sent by 'Open' Button */ case ID_OPEN_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_dir; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Add a folder", 0, pFileInfo); if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Pause(hMovie); } WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { _AddEntireFolder(pFileInfo->pRoot); WM_InvalidateWindow(hFrame); } if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Play(hMovie); } break; } break; /* Notification sent by "Full Screen button" */ case ID_CLOSE_BUTTON: switch (NCode) { case WM_NOTIFICATION_RELEASED: k_free(pVideoList); k_free(pFileInfo); _StopPlay(); GUI_EndDialog(pMsg->hWin, 0); break; } break; /* Notification sent by "Play Button" */ case ID_PLAY_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State == VIDEO_IDLE) { if (pVideoList->ptr > 0) { _StartPlay((char *)pVideoList->file[file_pos].name); LISTVIEW_SetSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST), file_pos); } else { pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_video; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Open a video file", 0, pFileInfo); WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if((strstr(pFileInfo->pRoot, ".emf")) || (strstr(pFileInfo->pRoot, ".EMF"))) { pVideoList->ptr = 0; strcpy((char *)pVideoList->file[pVideoList->ptr].name, pFileInfo->pRoot); FILEMGR_GetFileOnly (tmp, pFileInfo->pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); /* Update Play list */ strcpy((char *)pVideoList->file[pVideoList->ptr].name, pFileInfo->pRoot); ItemNbr = LISTVIEW_GetNumRows(hItem); while(ItemNbr--) { LISTVIEW_DeleteRow(hItem, ItemNbr); } LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, pVideoList->ptr, tmp); pVideoList->ptr++; file_pos = 0; LISTVIEW_SetSel(hItem, 0); _StartPlay((char *)pVideoList->file[file_pos].name); WM_InvalidateWindow(hFrame); } } } } else if(VideoPlayer_State == VIDEO_PLAY) { _PausePlay(); } else if(VideoPlayer_State == VIDEO_PAUSE) { _ResumePlay(); } break; } break; case ID_REPEAT_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_REPEAT_BUTTON); if(PlayerSettings.b.repeat == REPEAT_NONE) { PlayerSettings.b.repeat = REPEAT_ONCE; } else if(PlayerSettings.b.repeat == REPEAT_ONCE) { PlayerSettings.b.repeat = REPEAT_ALL; } else if(PlayerSettings.b.repeat == REPEAT_ALL) { PlayerSettings.b.repeat = REPEAT_NONE; } } break; case ID_STOP_BUTTON: _StopPlay(); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PROGRESS_SLIDER); SLIDER_SetValue(hItem, 0); WM_InvalidateWindow(hFrame); break; case ID_NEXT_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(file_pos < (pVideoList->ptr - 1)) { /* Play Next */ file_pos++; LISTVIEW_IncSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST)); } else if(PlayerSettings.b.repeat == REPEAT_ALL) { file_pos = 0; LISTVIEW_SetSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST), file_pos); } if(VideoPlayer_State == VIDEO_PLAY) { _StopPlay(); _StartPlay((char *)pVideoList->file[file_pos].name); WM_InvalidateWindow(hFrame); } break; } break; case ID_PREVIOUS_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: if( pVideoList->ptr > 0) { if(file_pos > 0) { file_pos--; LISTVIEW_DecSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST)); } else if(PlayerSettings.b.repeat == REPEAT_ALL) { file_pos = (pVideoList->ptr - 1); LISTVIEW_SetSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST), file_pos); } if(VideoPlayer_State == VIDEO_PLAY) { _StopPlay(); _StartPlay((char *)pVideoList->file[file_pos].name); WM_InvalidateWindow(hFrame); } } break; } break; /* Notifications sent by 'progress' Slider */ case ID_PROGRESS_SLIDER: if(NCode == WM_NOTIFICATION_CLICKED) { if(VideoPlayer_State != VIDEO_IDLE) { GUI_MOVIE_Pause(hMovie); hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGRESS_SLIDER); newpos = (SLIDER_GetValue(hItem) * Video_Info.NumFrames)/100; GUI_MOVIE_GotoFrame(hMovie, newpos); if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Play(hMovie); } } } break; /* Notifications sent by 'ListView' Slider */ case ID_VIDEO_LIST: if(NCode == WM_NOTIFICATION_CLICKED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); Index = LISTVIEW_GetSel(hItem); if(Index < pVideoList->ptr) { file_pos = Index; if(playlist_select == 0) { hPlaylistTimer = WM_CreateTimer(pMsg->hWin, ID_PLAYLIST_TIMER, 500, 0); playlist_select = (Index + 1); } else if(playlist_select == (Index + 1)) { WM_DeleteTimer(hPlaylistTimer); hPlaylistTimer = 0; playlist_select = 0; if(Index < pVideoList->ptr) { if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(); } _StartPlay((char *)pVideoList->file[Index].name); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); WM_InvalidateWindow(hFrame); } } } } break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { int NCode; int Id; int Sel; char ac[80]; WM_HWIN hDlg; WM_HWIN hMulti; WM_HWIN hItem; hDlg = pMsg->hWin; hMulti = WM_GetDialogItem(hDlg, GUI_ID_MULTIEDIT0); switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0); SLIDER_SetRange(hItem, 1, 100); SLIDER_SetValue(hItem, 100); hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER1); SLIDER_SetRange(hItem, 1, 152); SLIDER_SetValue(hItem, 152); hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER2); SLIDER_SetRange(hItem, 0, 5); SLIDER_SetValue(hItem, 2); hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER3); SLIDER_SetRange(hItem, 0, 100); SLIDER_SetValue(hItem, 0); hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1); EDIT_SetDecMode(hItem, 0, 0, 1000, 0, 0); hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO2); RADIO_SetText(hItem, "None", 0); RADIO_SetText(hItem, "Char", 1); RADIO_SetText(hItem, "Word", 2); hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO3); RADIO_SetText(hItem, "None", 0); RADIO_SetText(hItem, "Simple", 1); RADIO_SetText(hItem, "3D", 2); RADIO_SetValue(hItem, 2); RADIO_SetTextColor(hItem, GUI_BLUE); MULTIEDIT_EnableBlink(hMulti, 300, 1); MULTIEDIT_SetFont(hMulti, &GUI_Font8x16); MULTIEDIT_SetBkColor(hMulti, 0, GUI_YELLOW); MULTIEDIT_SetTextColor(hMulti, 0, GUI_BLUE); MULTIEDIT_SetAutoScrollV(hMulti, 1); MULTIEDIT_SetInsertMode(hMulti, 1); MULTIEDIT_SetPrompt(hMulti, "C:\\>"); MULTIEDIT_SetHBorder(hMulti, 2); MULTIEDIT_SetText(hMulti, "Multiedit - long line 12345678901234567890\nThis demonstrates the use of a MULTIEDIT widget"); MULTIEDIT_AddKey(hMulti, 'A'); MULTIEDIT_AddKey(hMulti, 'B'); MULTIEDIT_AddKey(hMulti, 'C'); MULTIEDIT_AddKey(hMulti, GUI_KEY_ENTER); MULTIEDIT_SetAutoScrollH(hMulti, 1); hItem = WM_GetDialogItem(hDlg, GUI_ID_BUTTON5); BUTTON_SetFocussable(hItem, 0); break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; hItem = WM_GetDialogItem(hDlg, Id); switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: switch (Id) { case GUI_ID_SLIDER0: Sel = SLIDER_GetValue(hItem); WM_SetYSize(hMulti, Sel); break; case GUI_ID_SLIDER1: Sel = SLIDER_GetValue(hItem); WM_SetXSize(hMulti, Sel); break; case GUI_ID_SLIDER2: Sel = SLIDER_GetValue(hItem); MULTIEDIT_SetHBorder(hMulti, Sel); break; case GUI_ID_SLIDER3: Sel = SLIDER_GetValue(hItem); MULTIEDIT_SetMaxNumChars(hMulti, Sel); break; case GUI_ID_RADIO0: // // Horizontal scrollbar // Sel = RADIO_GetValue(hItem); switch (Sel) { case 0: MULTIEDIT_SetAutoScrollH(hMulti, 1); // Auto break; case 1: MULTIEDIT_SetAutoScrollH(hMulti, 0); // Off WM_SetScrollbarH(hMulti, 0); break; case 2: MULTIEDIT_SetAutoScrollH(hMulti, 0); // On WM_SetScrollbarH(hMulti, 1); break; } break; case GUI_ID_RADIO1: // // Vertical scrollbar // Sel = RADIO_GetValue(hItem); switch (Sel) { case 0: MULTIEDIT_SetAutoScrollV(hMulti, 1); break; case 1: MULTIEDIT_SetAutoScrollV(hMulti, 0); WM_SetScrollbarV(hMulti, 0); break; case 2: MULTIEDIT_SetAutoScrollV(hMulti, 0); WM_SetScrollbarV(hMulti, 1); break; } break; case GUI_ID_RADIO2: // // Wrap // Sel = RADIO_GetValue(hItem); switch (Sel) { case 0: MULTIEDIT_SetWrapNone(hMulti); break; case 1: MULTIEDIT_SetWrapChar(hMulti); break; case 2: MULTIEDIT_SetWrapWord(hMulti); break; } break; case GUI_ID_RADIO3: // // Effect type // Sel = RADIO_GetValue(hItem); switch (Sel) { case 0: WIDGET_SetEffect(hMulti, &WIDGET_Effect_None); break; case 1: WIDGET_SetEffect(hMulti, &WIDGET_Effect_Simple); break; case 2: WIDGET_SetEffect(hMulti, &WIDGET_Effect_3D); break; } break; } break; case WM_NOTIFICATION_RELEASED: // React only if released WM_GetDialogItem(hDlg, Id); switch (Id) { case GUI_ID_OK: GUI_EndDialog(hDlg, 0); break; case GUI_ID_CANCEL: GUI_EndDialog(hDlg, 1); break; case GUI_ID_CHECK0: _RdOnly ^= 1; MULTIEDIT_SetReadOnly(hMulti, _RdOnly); break; case GUI_ID_CHECK1: _RTF8 ^= 1; if (_RTF8) { GUI_UC_SetEncodeUTF8(); } else { GUI_UC_SetEncodeNone(); } WM_InvalidateWindow(hMulti); break; case GUI_ID_CHECK2: _Password ^= 1; MULTIEDIT_SetPasswordMode(hMulti, _Password); break; case GUI_ID_BUTTON1: hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0); EDIT_GetText(hItem, &ac[0], sizeof(ac)); MULTIEDIT_SetPrompt(hMulti, ac); break; case GUI_ID_BUTTON2: hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1); MULTIEDIT_SetCursorOffset(hMulti, EDIT_GetValue(hItem)); WM_SetFocus(hMulti); break; case GUI_ID_BUTTON3: MULTIEDIT_SetText(hMulti, "Short text"); break; case GUI_ID_BUTTON4: MULTIEDIT_SetText(hMulti, "Long text\n123456789012345678901234567890\nLast line\n"); break; case GUI_ID_BUTTON5: MULTIEDIT_AddText(hMulti, "Added"); break; case GUI_ID_BUTTON6: MULTIEDIT_SetFont(hMulti, &GUI_Font8x16); break; case GUI_ID_BUTTON7: MULTIEDIT_SetFont(hMulti, &GUI_Font16_1); break; } break; } break; default: WM_DefaultProc(pMsg); } }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = BUTTON_CreateEx(420, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); /* Initialization of 'Board : STM324x9I' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Firmware Version : 1.0.1' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Board : STM324x9I' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Board : STM32F746G' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_2); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Firmware Version : 1.0' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_COPYRIGHT); TEXT_SetFont(hItem, GUI_FONT_13_ASCII); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_TITLE); TEXT_SetFont(hItem, &GUI_FontLubalGraph20); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); IMAGE_CreateEx(40, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_BOARD); IMAGE_CreateEx(150, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_MCU); IMAGE_CreateEx(260, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_CPU); IMAGE_CreateEx(370, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_FVERSION); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_DrawRoundedRect(30, 80, 120, 230, 30); GUI_AA_DrawRoundedRect(140, 80, 230, 230, 30); GUI_AA_DrawRoundedRect(250, 80, 340, 230, 30); GUI_AA_DrawRoundedRect(360, 80, 450, 230, 30); break; case WM_TIMER: /* draw */ if(frame < 5) { WM_RestartTimer(pMsg->Data.v, 25); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_BOARD); IMAGE_SetBitmap(hItem, open_board[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_MCU); IMAGE_SetBitmap(hItem, open_mcu[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_CPU); IMAGE_SetBitmap(hItem, open_cpu[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_FVERSION); IMAGE_SetBitmap(hItem, open_fversion[frame]); frame++; } else { if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } } break; case WM_DELETE: if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
static void _cbMenu(WM_MESSAGE *pMsg) { int NCode, Id; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_RED); GUI_DrawBitmap(&bmbackground, 0, 0); _ShowButton(pMsg->hWin); GUI_SetFont(&GUI_Font8_ASCII); GUI_SetTextMode(GUI_TM_XOR); GUI_DispStringHCenterAt("CALENDAR", 70, 100); GUI_DispStringHCenterAt("STOPWATCH", 160, 100); GUI_DispStringHCenterAt("CLOCK", 250, 100); GUI_DispStringHCenterAt("LED", 70, 180); GUI_DispStringHCenterAt("CALCULATOR", 160, 180); GUI_DispStringHCenterAt("FILESYSTEM", 250, 180); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_CLICKED: switch (Id) { case BUTTON_ID_CALENDAR: GUI_SetAppIndex(APP_Calendar); GUI_SetAppDirection(MEMDEV_ANIMATION_BOTTOM); GUI_SetCancel(APP_MainMenu); GUI_ClearHalt(); // Clear _Halt, so break; case BUTTON_ID_STOPWATCH: GUI_SetAppIndex(APP_StopWatch); GUI_SetAppDirection(MEMDEV_ANIMATION_BOTTOM); GUI_SetCancel(APP_MainMenu); GUI_ClearHalt(); // Clear _Halt, so break; case BUTTON_ID_CLOCK: GUI_SetAppIndex(APP_Clock); GUI_SetAppDirection(MEMDEV_ANIMATION_BOTTOM); GUI_SetCancel(APP_MainMenu); GUI_ClearHalt(); // Clear _Halt, so break; case BUTTON_ID_LED: GUI_SetAppIndex(APP_Led); GUI_SetAppDirection(MEMDEV_ANIMATION_BOTTOM); GUI_SetCancel(APP_MainMenu); GUI_ClearHalt(); // Clear _Halt, so break; case BUTTON_ID_CALCULATOR: GUI_SetAppIndex(APP_Calculator); GUI_SetAppDirection(MEMDEV_ANIMATION_BOTTOM); GUI_SetCancel(APP_MainMenu); GUI_ClearHalt(); // Clear _Halt, so break; case BUTTON_ID_FILESYSTEM: GUI_SetAppIndex(APP_File); GUI_SetAppDirection(MEMDEV_ANIMATION_BOTTOM); GUI_SetCancel(APP_MainMenu); GUI_ClearHalt(); // Clear _Halt, so break; default: break; } break; default: break; } default: WM_DefaultProc(pMsg); } }
/** * @brief Callback routine of the Benchmark dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; WM_HWIN hGraph; int cpu_speed = 0; char temp[50]; WM_CALLBACK *_cb; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'CPU' */ hItem = pMsg->hWin; FRAMEWIN_SetFont(hItem, GUI_FONT_13HB_ASCII); FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0); hItem = TEXT_CreateEx(10, 20, 100, 25, pMsg->hWin, WM_CF_SHOW,0, 0x123,""); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, 0x00804000); TEXT_SetText(hItem, "CPU Usage %:"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BENCH_CPU); TEXT_SetFont(hItem, GUI_FONT_16B_ASCII); TEXT_SetTextColor(hItem, GUI_DARKRED); hItem = WM_GetDialogItem(pMsg->hWin, ID_CPU_GRAPH); FRAMEWIN_SetBarColor(hItem, 0, GUI_DARKGRAY); FRAMEWIN_SetBarColor(hItem, 1, GUI_DARKGRAY); hGraph = GRAPH_CreateEx(10, 35, 300, 95, pMsg->hWin, WM_CF_SHOW, 0, GUI_ID_GRAPH0); hData = GRAPH_DATA_YT_Create(GUI_LIGHTGREEN, 500, 0, 20); GRAPH_SetGridVis(hGraph, 1); GRAPH_SetBorder(hGraph, 20, 4, 5, 4); GRAPH_AttachData(hGraph, hData); hScale = GRAPH_SCALE_Create(20, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 25); GRAPH_AttachScale(hGraph, hScale); GRAPH_SCALE_SetTextColor(hScale, GUI_YELLOW); GRAPH_SetGridDistX(hGraph, 25); GRAPH_SetGridDistY(hGraph, 25); WM_CreateWindowAsChild(80, 45, 354, 23, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbCpuWindow , 0); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case ID_BENCH_CPU: Stop_Test = 0; WM_HideWindow(pMsg->hWin); _cb = WM_GetCallback(WM_HBKWIN); WM_SetCallback(WM_HBKWIN, _ClearDesktop); cpu_speed = Run_SpeedTest(); WM_ShowWindow(pMsg->hWin); hItem = WM_GetDialogItem(pMsg->hWin, ID_BENCH_CPU); sprintf (temp, "%d Pixels/s ", cpu_speed); TEXT_SetText(hItem, temp); WM_SetCallback(WM_HBKWIN, _cb); hItem = WM_GetDialogItem(WM_HBKWIN, ID_BUTTON_BKGND); WM_InvalidateWindow(hItem); WM_InvalidateWindow(WM_HBKWIN); WM_Paint(WM_HBKWIN); break; } break; case WM_NOTIFICATION_CHILD_DELETED: Stop_Test = 1; break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbCallback * * Purpose: * Callback function of the dialog */ static void _cbCallback(WM_MESSAGE * pMsg) { int NCode, Id, Value, i; WM_HWIN hDlg, hItem; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); _InitPoints(); /* Add graphs */ for (i = 0; i < 3; i++) { GRAPH_DATA_Handle hDataXY; hDataXY = GRAPH_DATA_XY_Create(_aColor[i], GUI_COUNTOF(_aPoint[i]), _aPoint[i], GUI_COUNTOF(_aPoint[i])); GRAPH_DATA_XY_SetLineStyle(hDataXY, _aLStyle[i]); GRAPH_AttachData(hItem, hDataXY); } /* Set graph attributes */ GRAPH_SetGridDistY(hItem, 25); GRAPH_SetGridVis(hItem, 1); GRAPH_SetUserDraw(hItem, _UserDraw); /* Create and add vertical scale */ _hScaleV = GRAPH_SCALE_Create( 35, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 25); GRAPH_SCALE_SetOff(_hScaleV, 100); GRAPH_SCALE_SetFactor(_hScaleV, 0.04f); GRAPH_SCALE_SetTextColor(_hScaleV, GUI_RED); GRAPH_AttachScale(hItem, _hScaleV); /* Create and add horizontal scale */ _hScaleH = GRAPH_SCALE_Create(70, GUI_TA_HCENTER, GRAPH_SCALE_CF_HORIZONTAL, 50); GRAPH_SCALE_SetFactor(_hScaleH, 0.02f); GRAPH_SCALE_SetTextColor(_hScaleH, GUI_DARKGREEN); GRAPH_AttachScale(hItem, _hScaleH); /* Init check boxes */ hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK2); CHECKBOX_SetText(hItem, "L"); CHECKBOX_SetState(hItem, 1); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK3); CHECKBOX_SetText(hItem, "T"); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK4); CHECKBOX_SetText(hItem, "R"); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK5); CHECKBOX_SetText(hItem, "B"); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK1); CHECKBOX_SetText(hItem, "Grid"); CHECKBOX_SetState(hItem, 1); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK6); CHECKBOX_SetText(hItem, "HScroll"); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK7); CHECKBOX_SetText(hItem, "VScroll"); /* Init slider widgets */ hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0); SLIDER_SetRange(hItem, 0, 10); SLIDER_SetValue(hItem, 5); SLIDER_SetNumTicks(hItem, 6); hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER1); SLIDER_SetRange(hItem, 0, 20); SLIDER_SetValue(hItem, 5); SLIDER_SetNumTicks(hItem, 6); /* Init radio widget */ hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO0); RADIO_SetText(hItem, "3D", 0); RADIO_SetText(hItem, "flat", 1); RADIO_SetText(hItem, "-", 2); /* Init button widget */ hItem = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); WM_SetStayOnTop(hItem, 1); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_CLICKED: switch (Id) { case GUI_ID_BUTTON0: _ToggleFullScreenMode(hDlg); break; } break; case WM_NOTIFICATION_VALUE_CHANGED: switch (Id) { case GUI_ID_CHECK1: /* Toggle grid */ hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); GRAPH_SetGridVis(hItem, CHECKBOX_IsChecked(WM_GetDialogItem(hDlg, GUI_ID_CHECK1))); break; case GUI_ID_CHECK2: case GUI_ID_CHECK3: case GUI_ID_CHECK4: case GUI_ID_CHECK5: /* Toggle border */ hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); GRAPH_SetBorder(hItem, CHECKBOX_IsChecked(WM_GetDialogItem(hDlg, GUI_ID_CHECK2)) * 40, CHECKBOX_IsChecked(WM_GetDialogItem(hDlg, GUI_ID_CHECK3)) * 5, CHECKBOX_IsChecked(WM_GetDialogItem(hDlg, GUI_ID_CHECK4)) * 5, CHECKBOX_IsChecked(WM_GetDialogItem(hDlg, GUI_ID_CHECK5)) * 5); break; case GUI_ID_SLIDER0: /* Set horizontal grid spacing */ hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); Value = SLIDER_GetValue(pMsg->hWinSrc) * 10; GRAPH_SetGridDistX(hItem, Value); GRAPH_SCALE_SetTickDist(_hScaleH, Value); if (Value != 50) { GRAPH_SCALE_SetNumDecs(_hScaleH, 1); } else { GRAPH_SCALE_SetNumDecs(_hScaleH, 0); } break; case GUI_ID_SLIDER1: /* Set vertical grid spacing */ hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); Value = SLIDER_GetValue(pMsg->hWinSrc) * 5; GRAPH_SetGridDistY(hItem, Value); GRAPH_SCALE_SetTickDist(_hScaleV, Value); if (Value != 25) { GRAPH_SCALE_SetNumDecs(_hScaleV, 1); } else { GRAPH_SCALE_SetNumDecs(_hScaleV, 0); } break; case GUI_ID_RADIO0: /* Set the widget effect */ hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); switch (RADIO_GetValue(pMsg->hWinSrc)) { case 0: WIDGET_SetEffect(hItem, &WIDGET_Effect_3D); break; case 1: WIDGET_SetEffect(hItem, &WIDGET_Effect_Simple); break; case 2: WIDGET_SetEffect(hItem, &WIDGET_Effect_None); break; } break; case GUI_ID_CHECK6: /* Toggle horizontal scroll bar */ hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); if (CHECKBOX_IsChecked(WM_GetDialogItem(hDlg, GUI_ID_CHECK6))) { GRAPH_SetVSizeX(hItem, 500); } else { GRAPH_SetVSizeX(hItem, 0); } break; case GUI_ID_CHECK7: /* Toggle vertical scroll bar */ hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); if (CHECKBOX_IsChecked(WM_GetDialogItem(hDlg, GUI_ID_CHECK7))) { GRAPH_SetVSizeY(hItem, 300); } else { GRAPH_SetVSizeY(hItem, 0); } break; } break; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_HWIN hDlg; WM_HWIN hItem; int Sel; int NCode; int Id; GUI_PID_STATE * pState; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0); EDIT_SetDecMode(hItem, 30, 0, 999, 0, 0); // Select decimal mode WM_DisableWindow(hItem); break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_TOUCH_CHILD: Id = WM_GetId(pMsg->hWinSrc); // Id of widget switch (Id) { case GUI_ID_TEXT0: case GUI_ID_TEXT1: case GUI_ID_TEXT2: pState = (GUI_PID_STATE *)((WM_MESSAGE *)pMsg->Data.p)->Data.p; if (pState) { if (pState->Pressed) { WM_HWIN hRadio = WM_GetDialogItem(hDlg, GUI_ID_RADIO0); RADIO_SetValue(hRadio, Id - GUI_ID_TEXT0); // Use the text beside the radio button to // set the value of the radio button } } break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); // Id of widget NCode = pMsg->Data.v; // Notification code switch (NCode) { case WM_NOTIFICATION_RELEASED: // React only if released switch (Id) { case GUI_ID_OK: GUI_EndDialog(hDlg, 0); break; case GUI_ID_CANCEL: GUI_EndDialog(hDlg, 1); break; } break; case WM_NOTIFICATION_VALUE_CHANGED: hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO0); Sel = RADIO_GetValue(hItem); hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0); WM_SetEnableState(hItem, Sel == 2); break; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbDialog * * Purpose: Dialog callback routine */ static void _cbDialog(WM_MESSAGE *pMsg) { int NCode, Id; WM_HWIN hDlg; BUTTON_Handle hButton; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: WM_DefaultProc(pMsg); /* Handle dialog items */ /* After drawing the dialog items add some user drawn items to the window */ GUI_SetPenSize(10); GUI_SetColor(GUI_GREEN); GUI_DrawLine( 95, 5, 185, 95); GUI_SetColor(GUI_RED); GUI_DrawLine( 95, 95, 185, 5); break; case WM_INIT_DIALOG: hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); WM_SetHasTrans(hButton); /* Set transparency flag for button */ break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); if (Id == GUI_ID_BUTTON1) { /* Toggle callback */ if (_pcbCallback) { WM_SetCallback(hButton, _pcbCallback); _pcbCallback = 0; } else { _pcbCallback = WM_SetCallback(hButton, _cbButton); } WM_InvalidateWindow(hButton); } if (Id == GUI_ID_BUTTON2) { /* Toggle font */ if (_Font) { BUTTON_SetFont(hButton, &GUI_Font13_1); } else { BUTTON_SetFont(hButton, &GUI_Font8x16); } _Font ^= 1; } if (Id == GUI_ID_BUTTON3) { /* Toggle color */ if (_Color) { BUTTON_SetBkColor(hButton, 0, 0xaaaaaa); BUTTON_SetBkColor(hButton, 1, GUI_WHITE); BUTTON_SetTextColor(hButton, 0, GUI_BLACK); BUTTON_SetTextColor(hButton, 1, GUI_BLACK); } else { BUTTON_SetBkColor(hButton, 0, GUI_BLUE); BUTTON_SetBkColor(hButton, 1, GUI_RED); BUTTON_SetTextColor(hButton, 0, GUI_WHITE); BUTTON_SetTextColor(hButton, 1, GUI_YELLOW); } _Color ^= 1; } if (Id == GUI_ID_OK) { /* OK Button */ GUI_EndDialog(hDlg, 0); } if (Id == GUI_ID_CANCEL) { /* Cancel Button */ GUI_EndDialog(hDlg, 1); } break; } break; default: WM_DefaultProc(pMsg); } }