FRAMEWIN_Handle FRAMEWIN_CreateAsChild( int x0, int y0, int xsize, int ysize, WM_HWIN hParent, const char* pText, WM_CALLBACK* cb, int Flags) { FRAMEWIN_Handle hObj; /* Create the window */ GUI_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xsize/*+2*HBorder*/, ysize/*+TBorder+BBorder*/, hParent, Flags, _FRAMEWIN_Callback, sizeof(FRAMEWIN_Obj) - sizeof(WM_Obj)); if (hObj) { FRAMEWIN_Obj* pObj = FRAMEWIN_H2P(hObj); /* init widget specific variables */ WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE | WIDGET_STATE_ENABLED); /* init member variables */ pObj->pFont = _pDefaultFont; memcpy(pObj->BarColor, _aBarColor, sizeof(pObj->BarColor)); pObj->TextColor = 0xffffff; pObj->TextAlign = GUI_TA_LEFT; pObj->ClientColor = _DefaultClientColor; pObj->pText = pText; pObj->XOff = 1; pObj->YOff = 1; pObj->cb = cb; CalcPositions(hObj); pObj->hClient = WM_CreateWindowAsChild(0, 0, 0, 0, hObj, WM_CF_SHOW, FRAMEWIN__cbClient, 0); } GUI_UNLOCK(); return hObj; }
/********************************************************************* * * _ShowDemo */ static void _ShowDemo(void) { WM_HWIN hWin0; WM_HWIN hWin1; WM_HWIN hWin2; WM_HWIN hFrame1; WM_HWIN hFrame2; WM_HWIN hClient1; WM_HWIN hClient2; WM_SetCallback(WM_HBKWIN, _cbBkWin); hFrame1 = FRAMEWIN_CreateEx( 10, 30, 140, 140, 0, WM_CF_SHOW, FRAMEWIN_CF_MOVEABLE, 0, "Early Clipping", _cbFrameWin1); hFrame2 = FRAMEWIN_CreateEx(170, 30, 140, 140, 0, WM_CF_SHOW, FRAMEWIN_CF_MOVEABLE, 0, "Late Clipping", _cbFrameWin2); hClient1 = WM_GetClientWindow(hFrame1); hClient2 = WM_GetClientWindow(hFrame2); _hWin1 = WM_CreateWindowAsChild(0, 0, WM_GetWindowSizeX(hClient1), WM_GetWindowSizeY(hClient1), hClient1, WM_CF_SHOW, _cbFrameWin1, 0); _hWin2 = WM_CreateWindowAsChild(0, 0, WM_GetWindowSizeX(hClient2), WM_GetWindowSizeY(hClient2), hClient2, WM_CF_SHOW | WM_CF_LATE_CLIP, _cbFrameWin2, 0); _hBut1 = BUTTON_CreateEx( 10, 210, 140, 20, 0, WM_CF_SHOW, 0, 1); _hBut2 = BUTTON_CreateEx(170, 210, 140, 20, 0, WM_CF_SHOW, 0, 2); hWin0 = FRAMEWIN_CreateEx( 60, 80, 40, 40, 0, WM_CF_SHOW | WM_CF_STAYONTOP, FRAMEWIN_CF_MOVEABLE, 0, "Top 0", _cbTop); hWin1 = FRAMEWIN_CreateEx(220, 80, 40, 40, 0, WM_CF_SHOW | WM_CF_STAYONTOP, FRAMEWIN_CF_MOVEABLE, 0, "Top 1", _cbTop); hWin2 = FRAMEWIN_CreateEx(140, 170, 40, 40, 0, WM_CF_SHOW | WM_CF_STAYONTOP, FRAMEWIN_CF_MOVEABLE, 0, "Top 2", _cbTop); FRAMEWIN_SetResizeable(hWin0, 1); FRAMEWIN_SetResizeable(hWin1, 1); FRAMEWIN_SetResizeable(hWin2, 1); BUTTON_SetText(_hBut1, "Invalidate"); BUTTON_SetText(_hBut2, "Reset counters"); while(1) { GUI_Delay(50); } }
/** * @brief Main menu * @param None * @retval None */ void MainMenu(void) { ICONVIEW_Handle hIcon; WM_HWIN hStatusWin; int i = 0; WM_SetCallback(WM_GetDesktopWindowEx(1), _cbBk); /* create header window for status display e.g. CPU load, Bluetooth status , GPS status */ hStatusWin = WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), 20, WM_GetDesktopWindowEx(1), WM_CF_SHOW | WM_CF_HASTRANS , _cbStatus, 0); hIcon = ICONVIEW_CreateEx(0, 20, LCD_GetXSize(), LCD_GetYSize()- 26, WM_GetDesktopWindowEx(1), WM_CF_SHOW | WM_CF_HASTRANS, 0 ,'0', 115, 95); ICONVIEW_SetFont(hIcon, &GUI_Font13B_ASCII); ICONVIEW_SetBkColor(hIcon, ICONVIEW_CI_SEL, 0x941000 | 0x80404040); ICONVIEW_SetSpace(hIcon, GUI_COORD_Y, 3); ICONVIEW_SetFrame(hIcon, GUI_COORD_Y, 1); /* fill Icon view with available bitmaps */ for (i = 0; i < GUI_COUNTOF(_aBitmapItem); i++) { ICONVIEW_AddBitmapItem(hIcon,_aBitmapItem[i].pBitmap, _aBitmapItem[i].pText); } /*select layer with index 1*/ GUI_SelectLayer(1); }
/********************************************************************* * * PROGBAR_CreateEx */ PROGBAR_Handle PROGBAR_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) { PROGBAR_Handle hObj; GUI_USE_PARA(ExFlags); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _PROGBAR_Callback, sizeof(PROGBAR_Obj) - sizeof(WM_Obj)); if (hObj) { PROGBAR_Obj* pObj; WM_LOCK(); pObj = (PROGBAR_Obj*) GUI_ALLOC_h2p(hObj); /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, 0); WIDGET_SetEffect(hObj, &WIDGET_Effect_None); /* Standard effect for progbar: None */ INIT_ID(pObj); /* init member variables */ pObj->pFont = GUI_DEFAULT_FONT; pObj->BarColor[0] = PROGBAR_DEFAULT_BARCOLOR0; pObj->BarColor[1] = PROGBAR_DEFAULT_BARCOLOR1; pObj->TextColor[0] = PROGBAR_DEFAULT_TEXTCOLOR0; pObj->TextColor[1] = PROGBAR_DEFAULT_TEXTCOLOR1; pObj->TextAlign = GUI_TA_CENTER; pObj->Max = 100; pObj->Min = 0; WM_UNLOCK(); } return hObj; }
BUTTON_Handle BUTTON_CreateAsChild (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags) { BUTTON_Handle hObj; /* Create the window */ WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, Flags, _BUTTON_Callback, sizeof(BUTTON_Obj)-sizeof(WM_Obj)); if (hObj) { BUTTON_Obj* pObj = BUTTON_H2P(hObj); /* init widget specific variables */ /* init member variables */ BUTTON_INIT_ID(pObj); pObj->Widget.Id = Id; pObj->pFont = BUTTON_FONT_DEFAULT; pObj->aBkColor[0] = BUTTON_BKCOLOR0_DEFAULT; pObj->aBkColor[1] = BUTTON_BKCOLOR1_DEFAULT; pObj->aTextColor[0] = BUTTON_TEXTCOLOR0_DEFAULT; pObj->aTextColor[1] = BUTTON_TEXTCOLOR1_DEFAULT; pObj->Widget.State = BUTTON_STATE_INACTIVE; } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "BUTTON_Create failed") } WM_UNLOCK(); return hObj; }
/********************************************************************* * * TEXT_CreateEx */ TEXT_Handle TEXT_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id, const char* pText) { TEXT_Handle hObj; /* Create the window */ #if TEXT_SUPPORT_TRANSPARENCY WinFlags |= WM_CF_HASTRANS; #endif WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, TEXT_Callback, sizeof(TEXT_Obj) - sizeof(WM_Obj)); if (hObj) { TEXT_Obj* pObj; WM_HMEM hMem = 0; pObj = (TEXT_Obj *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */ /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, 0); /* init member variables */ TEXT_INIT_ID(pObj); if (pText) { hMem = GUI_ALLOC_AllocZero(strlen(pText) + 1); if (hMem) { strcpy((char*) GUI_ALLOC_h2p(hMem), pText); } } pObj->hpText = hMem; pObj->Align = ExFlags; pObj->Props = TEXT__DefaultProps; } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "TEXT_Create failed") } WM_UNLOCK(); return hObj; }
/********************************************************************* * * LISTBOX_CreateEx */ LISTBOX_Handle LISTBOX_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id, const GUI_ConstString* ppText) { LISTBOX_Handle hObj; GUI_USE_PARA(ExFlags); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _LISTBOX_Callback, sizeof(LISTBOX_Obj) - sizeof(WM_Obj)); if (hObj) { LISTBOX_Obj* pObj; WM_LOCK(); pObj = LISTBOX_H2P(hObj); /* Init sub-classes */ GUI_ARRAY_CREATE(&pObj->ItemArray); /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE); pObj->Props = LISTBOX_DefaultProps; if (ppText) { /* init member variables */ /* Set non-zero attributes */ LISTBOX_SetText(hObj, ppText); } INIT_ID(pObj); LISTBOX_UpdateScrollers(hObj); WM_UNLOCK(); } return hObj; }
EDIT_Handle EDIT_CreateAsChild (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, int MaxLen) { EDIT_Handle hObj; if (MaxLen == 0) { MaxLen = 8; } /* Alloc memory for obj */ WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WM_CF_SHOW | Flags, EDIT__Callback, sizeof(EDIT_Obj)-sizeof(WM_Obj)); if (hObj) { EDIT_Obj* pObj = (EDIT_Obj*)WM_HMEM2Ptr(hObj); /* init widget specific variables */ WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE | WIDGET_STATE_ENABLED); pObj->Widget.Id = Id; /* init member variables */ INIT_ID(pObj); pObj->pFont = _pDefaultFont; pObj->aBkColor[0] = EDIT_BKCOLOR0_DEFAULT; pObj->aBkColor[1] = EDIT_BKCOLOR1_DEFAULT; pObj->aTextColor[0] = EDIT_TEXTCOLOR0_DEFAULT; pObj->aTextColor[1] = EDIT_TEXTCOLOR1_DEFAULT; pObj->Align = _DefaultAlign; pObj->Border = _DefaultBorder; pObj->XSizeCursor = 1; pObj->MaxLen = MaxLen; if ((pObj->hpText = WM_ALLOC(MaxLen+1)) ==0) { GUI_DEBUG_ERROROUT("EDIT_Create failed to alloc buffer"); EDIT_Delete(hObj); hObj =0; } } WM_UNLOCK(); return hObj; }
/********************************************************************* * * SLIDER_CreateEx */ SLIDER_Handle SLIDER_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) { SLIDER_Handle hObj; /* Create the window */ WM_LOCK(); #if SLIDER_SUPPORT_TRANSPARENCY WinFlags |= WM_CF_HASTRANS; #endif hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, SLIDER_Callback, sizeof(SLIDER_Obj) - sizeof(WM_Obj)); if (hObj) { SLIDER_Obj * pObj; U16 InitState; pObj = (SLIDER_Obj *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */ /* Handle SpecialFlags */ InitState = WIDGET_STATE_FOCUSSABLE; if (ExFlags & SLIDER_CF_VERTICAL) { InitState |= WIDGET_CF_VERTICAL; } /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, InitState); /* init member variables */ SLIDER_INIT_ID(pObj); pObj->Props = SLIDER__DefaultProps; pObj->Width = 8; pObj->Max = 100; pObj->Min = 0; pObj->NumTicks = -1; } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "SLIDER_Create failed") } WM_UNLOCK(); return hObj; }
/********************************************************** * HSD_SLIDER_CreateEx * */ SLIDER_Handle HSD_SLIDER_CreateEx(int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) { SLIDER_Handle hObj; WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xSize, ySize, hParent, WinFlags, HSD_SLIDER_Callback, sizeof(SLIDER_Obj)-sizeof(WM_Obj)); if(hObj) { SLIDER_Obj* pObj = SLIDER_H2P(hObj); U16 InitState; InitState = WIDGET_STATE_FOCUSSABLE; if(ExFlags & SLIDER_CF_VERTICAL) { InitState |= WIDGET_CF_VERTICAL; } WIDGET__Init(&pObj->Widget, Id, InitState); pObj->aBkColor[0] = GUI_GRAY; pObj->aBkColor[1] = GUI_DARKCYAN; pObj->aColor[0] = GUI_BLACK; pObj->aColor[1] = GUI_ORANGE; pObj->Width = 16; pObj->Max = 6; pObj->Min = 0; pObj->NumTicks = -1; } else { //INFO("Slider create failed!"); } WM_UNLOCK(); return hObj; }
/********************************************************************* * * EDIT_CreateEx */ EDIT_Handle EDIT_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id, int MaxLen) { EDIT_Handle hObj; GUI_USE_PARA(ExFlags); WM_LOCK(); /* Alloc memory for obj */ WinFlags |= WM_CF_LATE_CLIP; /* Always use late clipping since widget is optimized for it. */ hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WM_CF_SHOW | WinFlags, EDIT_Callback, sizeof(EDIT_Obj) - sizeof(WM_Obj)); if (hObj) { EDIT_Obj* pObj; pObj = (EDIT_Obj *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */ /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE); /* init member variables */ EDIT_INIT_ID(pObj); pObj->Props = EDIT__DefaultProps; pObj->XSizeCursor = 1; pObj->MaxLen = (MaxLen == 0) ? 8 : MaxLen; pObj->BufferSize = 0; pObj->hpText = 0; if (_IncrementBuffer(pObj, pObj->MaxLen + 1) == 0) { GUI_DEBUG_ERROROUT("EDIT_Create failed to alloc buffer"); EDIT_Delete(hObj); hObj = 0; } } WM_UNLOCK(); return hObj; }
/******************************************************************* * * _DemoCreateWindowAsChild Demonstrates the use of WM_CreateWindowAsChild */ static void _DemoCreateWindowAsChild(void) { /* Create windows */ _ChangeInfoText("WM_CreateWindowAsChild()"); GUI_Delay(SPEED); _hChild = WM_CreateWindowAsChild(10, 50, 145, 40, _hWindow2, WM_CF_SHOW | WM_CF_MEMDEV, _cbChild, 0); GUI_Delay(SPEED); }
SLIDER_Handle SLIDER_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int WinFlags, int SpecialFlags) { SLIDER_Handle hObj; /* Create the window */ WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _SLIDER_Callback, sizeof(SLIDER_Obj)-sizeof(WM_Obj)); if (hObj) { SLIDER_Obj* pObj = SLIDER_H2P(hObj); U16 InitState; /* Handle SpecialFlags */ InitState = WIDGET_STATE_ENABLED; if (SpecialFlags & SLIDER_CF_VERTICAL) { InitState |= WIDGET_CF_VERTICAL; } /* init widget specific variables */ WIDGET__Init(&pObj->Widget, InitState); /* init member variables */ SLIDER_INIT_ID(pObj); pObj->Widget.Id = Id; pObj->aBkColor[0] = SLIDER_BKCOLOR0_DEFAULT; pObj->aBkColor[1] = SLIDER_BKCOLOR1_DEFAULT; pObj->aColor[0] = SLIDER_COLOR0_DEFAULT; pObj->aColor[1] = SLIDER_COLOR1_DEFAULT; pObj->Width = 8; pObj->Max =100; pObj->Min =0; pObj->NumSections = 10; } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "SLIDER_Create failed") } WM_UNLOCK(); return hObj; }
/** * @brief Initializes the menu. * @param None. * @retval None. */ void k_InitMenu(void) { WM_HWIN hItem; uint8_t i = 0; GUI_SetLayerVisEx (0, 0); GUI_DrawBitmap(&bmbackground, 0,0); settings.d32 = k_BkupRestoreParameter(CALIBRATION_GENERAL_SETTINGS_BKP); GUI_SetLayerVisEx (0, 1); GUI_SelectLayer(1); GUI_Clear(); WM_SetCallback(WM_HBKWIN, _cbBk); WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), 25, WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS , _cbStatus, 0); hIcon = ICONVIEW_CreateEx(0, 26, LCD_GetXSize(), LCD_GetYSize()- 26, WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_BGND , ICONVIEW_CF_AUTOSCROLLBAR_V, ID_ICONVIEW_MENU, 112, 105); ICONVIEW_SetFont(hIcon, &GUI_Font13B_ASCII); ICONVIEW_SetBkColor(hIcon, ICONVIEW_CI_SEL, GUI_LIGHTBLUE |GUI_TRANSPARENT); ICONVIEW_SetSpace(hIcon, GUI_COORD_Y, 10); ICONVIEW_SetFrame(hIcon, GUI_COORD_Y, 10); for (i = 0; i < k_ModuleGetNumber(); i++) { ICONVIEW_AddBitmapItem(hIcon,module_prop[i].module->icon, (char *)module_prop[i].module->name); } if(settings.b.enable_sprite) { _ShowSprites(); } hItem = BUTTON_CreateEx(0, 0, 40, 23, WM_HBKWIN, WM_CF_SHOW, 0, ID_BUTTON_BKGND); WM_SetCallback(hItem, _cbButton); }
/******************************************************************* * * MainTask * ******************************************************************** */ void MainTask_AppClock(void) { WM_HWIN hWinClock; GUI_AUTODEV AutoDev; PARAM Param; int hour = 0; time_t oldtimestamp = 0; time_t curtimestamp = 0; struct tm *currUtime; //Init time curtimestamp = time(0); oldtimestamp = curtimestamp; currUtime=localtime(&curtimestamp); hWinClock = WM_CreateWindowAsChild(0, 0, 320, 240, WM_HBKWIN, WM_CF_SHOW, _cbClock, 0); WM_SelectWindow(hWinClock); WM_SetCreateFlags(WM_CF_MEMDEV); WM_SetFocus(hWinClock); _MoveShiftWindow(&hWinClock, MEMDEV_ANIMATION_LEFT, WM_Shift_ToLCD, 0); /*hWinClock = WM_CreateWindow(0, 0, 320, 240, WM_CF_SHOW, _cbClock, 0); WM_SetFocus(hWinClock); //_MoveShiftWindow(&hWinCalendar, MEMDEV_ANIMATION_LEFT, WM_Shift_ToLCD, 0); WM_EnableMemdev(hWinClock);*/ /* GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_BLACK);*/ GUI_AA_EnableHiRes(); GUI_AA_SetFactor(MAG); GUI_MEMDEV_CreateAuto(&AutoDev); while (!GUI_CheckCancel(APP_Clock)) { GUI_Delay(10); curtimestamp = time(0); currUtime = localtime(&curtimestamp); if (1 == curtimestamp - oldtimestamp) { Param.Angle1 = (59 - currUtime->tm_sec) * 6 * (3.1415926f / 180); Param.Angle2 = (3599 - ((currUtime->tm_min * 60) + (currUtime->tm_sec)))*0.1*(3.1415926f / 180); hour = (currUtime->tm_hour>12) ? (currUtime->tm_hour - 12) : (currUtime->tm_hour); Param.Angle3 = (43199 - ((hour * 3600) + (currUtime->tm_min * 60) + (currUtime->tm_sec)))*0.0083333*(3.1415926f / 180); GUI_RotatePolygon(Param.aPoint1, _aNeedle[0], GUI_COUNTOF(_aNeedle[0]), Param.Angle1); GUI_RotatePolygon(Param.aPoint2, _aNeedle[1], GUI_COUNTOF(_aNeedle[1]), Param.Angle2); GUI_RotatePolygon(Param.aPoint3, _aNeedle[2], GUI_COUNTOF(_aNeedle[2]), Param.Angle3); GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, &Draw, &Param); } oldtimestamp = curtimestamp; } WM_DeleteWindow(hWinClock); hWinClock = 0; }
/********************************************************************* * * SCROLLBAR_CreateEx */ SCROLLBAR_Handle SCROLLBAR_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) { SCROLLBAR_Handle hObj; WM_LOCK(); /* Set defaults if necessary */ if ((xsize == 0) && (ysize == 0)) { GUI_RECT Rect; WM_GetInsideRectEx(hParent, &Rect); if (ExFlags & SCROLLBAR_CF_VERTICAL) { xsize = SCROLLBAR__DefaultWidth; x0 = Rect.x1 + 1 - xsize; y0 = Rect.y0; ysize = Rect.y1 - Rect.y0 + 1; } else { ysize = SCROLLBAR__DefaultWidth; y0 = Rect.y1 + 1 - ysize; x0 = Rect.x0; xsize = Rect.x1 - Rect.x0 + 1; } } /* Create the window */ hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _SCROLLBAR_Callback, sizeof(SCROLLBAR_Obj) - sizeof(WM_Obj)); if (hObj) { SCROLLBAR_Obj* pObj = SCROLLBAR_H2P(hObj); U16 InitState; /* Handle SpecialFlags */ InitState = 0; if (ExFlags & SCROLLBAR_CF_VERTICAL) { InitState |= WIDGET_CF_VERTICAL; } if (ExFlags & SCROLLBAR_CF_FOCUSSABLE) { InitState |= WIDGET_STATE_FOCUSSABLE; } if ((Id != GUI_ID_HSCROLL) && (Id != GUI_ID_VSCROLL)) { InitState |= WIDGET_STATE_FOCUSSABLE; } /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, InitState); /* init member variables */ SCROLLBAR_INIT_ID(pObj); pObj->aBkColor[0] = SCROLLBAR__aDefaultBkColor[0]; pObj->aBkColor[1] = SCROLLBAR__aDefaultBkColor[1]; pObj->aColor[0] = SCROLLBAR__aDefaultColor[0]; pObj->aColor[1] = SCROLLBAR__aDefaultColor[1]; pObj->NumItems = 100; pObj->PageSize = 10; pObj->v = 0; SCROLLBAR__InvalidatePartner(hObj); } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "SCROLLBAR_Create failed") } WM_UNLOCK(); return hObj; }
/** * @brief Initializes the menu. * @param None. * @retval None */ void k_InitMenu(void) { WM_HWIN hItem; uint8_t i = 0; settings.d32 = k_BkupRestoreParameter(CALIBRATION_GENERAL_SETTINGS_BKP); WM_SetCallback(WM_HBKWIN, _cbBk); hStatusWin = WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), 25, WM_HBKWIN, WM_CF_SHOW | WM_CF_LATE_CLIP , _cbStatus, 0); hIcon = ICONVIEW_CreateEx(0, 26, LCD_GetXSize(), LCD_GetYSize()- 26, WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS, ICONVIEW_CF_AUTOSCROLLBAR_V, ID_ICONVIEW_MENU, 92, 90); ICONVIEW_SetFont(hIcon, &GUI_Font13B_ASCII); ICONVIEW_SetTextColor(hIcon, ICONVIEW_CI_UNSEL, GUI_BLUE); ICONVIEW_SetTextColor(hIcon, ICONVIEW_CI_SEL, GUI_BLUE); ICONVIEW_SetBkColor(hIcon, ICONVIEW_CI_SEL, GUI_LIGHTBLUE |GUI_TRANSPARENT); ICONVIEW_SetSpace(hIcon, GUI_COORD_Y, 10); ICONVIEW_SetFrame(hIcon, GUI_COORD_Y, 10); for (i = 0; i < k_ModuleGetNumber(); i++) { ICONVIEW_AddBitmapItem(hIcon,module_prop[i].module->icon, (char *)module_prop[i].module->name); } hItem = BUTTON_CreateEx(0, 0, 40, 23, WM_GetDesktopWindowEx(0), WM_CF_SHOW, 0, ID_BUTTON_BKGND); WM_SetCallback(hItem, _cbButton); }
/** * @brief Video window Starup * @param hWin: pointer to the parent handle. * @param xpos: X position * @param ypos: Y position * @retval None */ static void Startup(WM_HWIN hWin, uint16_t xpos, uint16_t ypos) { VideoPlayer_State = VIDEO_IDLE; AddStatus = 0; VideoList.ptr = 0; _AddEntireFolder("0:"); _AddEntireFolder("0:/Video"); VideoWin = GUI_CreateDialogBox(_aDialog, GUI_COUNTOF(_aDialog), _cbDialog, hWin, xpos, ypos); WM_CreateWindowAsChild(639, 479, 1, 1, VideoWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); }
/** * @brief Callback function of the performance dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbPerformanceDialog(WM_MESSAGE * pMsg) { int NCode; int Id; WM_HWIN hGraph; GUI_RECT Rect; switch (pMsg->MsgId) { case WM_INIT_DIALOG: FRAMEWIN_SetTitleVis(pMsg->hWin, 0); hGraph = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_CPU); hData = GRAPH_DATA_YT_Create(GUI_LIGHTGREEN, 500, 0, 20); GRAPH_SetGridVis(hGraph, 1); GRAPH_SetBorder(hGraph, 30, 2, 2, 2); 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_GetClientRect(&Rect); WM_CreateWindowAsChild(470, 0, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbCpuWindow , 0); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_BUTTON_HIDE: /* Notifications sent by Hide Button */ switch(NCode) { case WM_NOTIFICATION_RELEASED: if(hPerformance != 0) { WM_HideWindow(hPerformance); } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * RADIO_CreateEx */ RADIO_Handle RADIO_CreateEx(int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id, int NumItems, int Spacing) { RADIO_Handle hObj; int Height, i; /* Calculate helper variables */ Height = RADIO__apDefaultImage[0]->YSize + RADIO_BORDER * 2; Spacing = (Spacing <= 0) ? 20 : Spacing; NumItems = (NumItems <= 0) ? 2 : NumItems; if (ySize == 0) { ySize = Height + ((NumItems - 1) * Spacing); } if (xSize == 0) { xSize = RADIO__apDefaultImage[0]->XSize + RADIO_BORDER * 2; } #if WM_SUPPORT_TRANSPARENCY WinFlags |= WM_CF_HASTRANS; #endif /* Create the window */ hObj = WM_CreateWindowAsChild(x0, y0, xSize, ySize, hParent, WinFlags, _RADIO_Callback, sizeof(RADIO_Obj) - sizeof(WM_Obj)); if (hObj) { RADIO_Obj* pObj; WM_LOCK(); pObj = RADIO_H2P(hObj); /* Init sub-classes */ GUI_ARRAY_CREATE(&pObj->TextArray); for (i = 0; i < NumItems; i++) { GUI_ARRAY_AddItem(&pObj->TextArray, NULL, 0); } /* Init widget specific variables */ ExFlags &= RADIO_TEXTPOS_LEFT; WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE | ExFlags); /* Init member variables */ RADIO_INIT_ID(pObj); pObj->apBmRadio[0] = RADIO__apDefaultImage[0]; pObj->apBmRadio[1] = RADIO__apDefaultImage[1]; pObj->pBmCheck = RADIO__pDefaultImageCheck; pObj->pFont = RADIO__pDefaultFont; pObj->TextColor = RADIO__DefaultTextColor; pObj->BkColor = WM_GetBkColor(hParent); pObj->NumItems = NumItems; pObj->Spacing = Spacing; pObj->Height = Height; WM_UNLOCK(); } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "RADIO_Create failed") } return hObj; }
/******************************************************************* * * _DemoCreateWindowAsChild Demonstrates the use of WM_CreateWindowAsChild */ static void _DemoCreateWindowAsChild(void) { /* Create windows */ _ChangeInfoText("WM_CreateWindowAsChild()"); // GUIDEMO_Delay(SPEED); /* _hMEdit = MULTIEDIT_Create(10, 50, 145, 40, _hWindow2, 10, WM_CF_SHOW | WM_CF_MEMDEV, MULTIEDIT_CF_AUTOSCROLLBAR_V, "This is a test of multi edit box\n", 200); */ // MULTIEDIT_SetAutoScrollV(_hMEdit, 1); _hChild = WM_CreateWindowAsChild(10, 50, 145, 40, _hWindow2, WM_CF_SHOW | WM_CF_MEMDEV, _cbChild, 0); GUIDEMO_Delay(SPEED); GUIDEMO_NotifyStartNext(); }
/** * @brief Refresh browser. * @param hWin: pointer to the parent handle * @retval None */ static void _RefreshBrowser ( WM_HWIN hWin) { WM_HWIN hItem, Hint; TREEVIEW_ITEM_Handle hTreeView; uint32_t free, total; char str[FILEMGR_FULL_PATH_SIZE]; GUI_Exec(); /* Show Hint */ Hint = WM_CreateWindowAsChild(30, 120, 180, 32, hWin, WM_CF_SHOW , _cbHint, 0); GUI_Exec(); hItem = WM_GetDialogItem(hWin, ID_PROGBAR_USB); if(k_StorageGetStatus (USB_DISK_UNIT)) { free = k_StorageGetFree(USB_DISK_UNIT); total = k_StorageGetCapacity(USB_DISK_UNIT); PROGBAR_SetValue (hItem, ((total - free) * 100)/total); hItem = WM_GetDialogItem(hWin, ID_TEXT_USB); sprintf(str, "USB Disk [%lu MB]", total / (2 * 1024)); TEXT_SetText(hItem, str); } else { PROGBAR_SetValue (hItem, 0); hItem = WM_GetDialogItem(hWin, ID_TEXT_USB); TEXT_SetText(hItem, "USB Disk [N/A]" ); } hTreeView = WM_GetDialogItem(hWin, ID_TREEVIEW); hItem = TREEVIEW_GetItem(hTreeView, 0, TREEVIEW_GET_FIRST); if(hItem != 0) { TREEVIEW_ITEM_Delete (hItem); } ExploreDisks(hTreeView); WM_DeleteWindow(Hint); }
/********************************************************************* * * WINDOW_CreateIndirect */ WM_HWIN WINDOW_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb) { WM_HWIN hObj; WM_LOCK(); hObj = WM_CreateWindowAsChild( pCreateInfo->x0 + x0, pCreateInfo->y0 + y0, pCreateInfo->xSize, pCreateInfo->ySize, hWinParent, pCreateInfo->Flags, WINDOW_Callback, sizeof(WINDOW_OBJ) - sizeof(WM_Obj)); if (hObj) { WINDOW_OBJ* pObj; pObj = WINDOW_H2P(hObj); WIDGET__Init(&pObj->Widget, pCreateInfo->Id, WIDGET_STATE_FOCUSSABLE); pObj->cb = cb; pObj->hFocussedChild = 0; } WM_UNLOCK(); return hObj; }
/** * @brief Show full screen * @param None * @retval None */ static uint8_t _ShowFullScreen(void) { int XPos, YPos, nx, ny, n; WM_HWIN hItem; if(hMovie != 0) { FullScreen = 1; WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), LCD_GetYSize(), WM_HBKWIN, WM_CF_SHOW | WM_CF_STAYONTOP, _cbFullScreen, 0); if((Video_Info.xSize != LCD_GetXSize()) ||(Video_Info.ySize != LCD_GetYSize())) { nx = (LCD_GetXSize() * 1000) / Video_Info.xSize; ny = (LCD_GetYSize() * 1000) / Video_Info.ySize; if (nx < ny) { n = nx; } else { n = ny; } XPos = (LCD_GetXSize() - ((Video_Info.xSize * n) / 1000)) / 2; YPos = (LCD_GetYSize() - ((Video_Info.ySize * n) / 1000)) / 2; GUI_MOVIE_ShowScaled(hMovie, XPos, YPos, n, 1000, 0); } else { XPos = (LCD_GetXSize() - Video_Info.xSize) / 2; YPos = (LCD_GetYSize() - Video_Info.ySize) / 2; GUI_MOVIE_Show(hMovie, XPos, YPos, 0); VideoPlayer_State = VIDEO_PLAY; hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } return 0; }
TERMINAL_Handle TERMINAL_CreateAsChild( int x0, int y0, int xsize, int ysize, WM_HWIN hWinParent, int MaxLen, int Flags) { TERMINAL_Handle hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hWinParent, Flags, _TERMINAL_Callback, sizeof(TERMINAL_Obj)-sizeof(WM_Obj)); if (hObj) { TERMINAL_Obj* pObj = TERMINAL_H2P(hObj); pObj->hpText = WM_ALLOC(MaxLen+1); /* init member variables */ if (pObj->hpText ==0) { GUI_DEBUG_ERROROUT("TERMINAL_Create failed to alloc buffer"); TERMINAL_Delete(hObj); hObj =0; } pObj->MaxLen = MaxLen; } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "TERMINAL_Create failed") } return hObj; }
/********************************************************************* * * MYWIDGET_Create */ MYWIDGET_Handle MYWIDGET_Create(int x0, int y0, int xSize, int ySize, WM_HWIN hWinParent, U32 Style, const char * pText, WM_CALLBACK * pfCallback, int NumExtraBytes) { MYWIDGET_Handle hWin; MYWIDGET_Obj MyWidget; WM_CALLBACK * pfUsed; if (pfCallback) { pfUsed = pfCallback; } else { pfUsed = MYWIDGET_Callback; } MyWidget = MYWIDGET_Default; MyWidget.NumExtraBytes = NumExtraBytes; if (pText) { MyWidget.pText = pText; } hWin = WM_CreateWindowAsChild(x0, y0, xSize, ySize, hWinParent, Style, pfUsed, sizeof(MYWIDGET_Obj) + NumExtraBytes); WM_SetUserData(hWin, &MyWidget, sizeof(MYWIDGET_Obj)); return hWin; }
/********************************************************************* * * xIconSelBtn_PopupWin */ void xIconSelBtn_PopupWin(xIconSelBtn_Handle hWin) { static xIconSelBtn_OBJ tWidget; static xIconSelBtn_OBJ *pWidget; GUI_RECT r; if(!hWin) return; DEBUGOUT("xIconSelBtn_PopupWin(hWin) = 0x%08x\r\n", hWin); BUTTON_GetUserData(hWin, &tWidget, sizeof(xIconSelBtn_OBJ)); pWidget = &tWidget; if(tWidget.hPopupWin == NULL) { r = tWidget.PopupWinRECT; DEBUGOUT("xIconSelBtn_PopupWin() new Window(%d,%d,%d,%d): %d items\r\n",r.x0,r.y0,r.x1,r.y1, tWidget.NumItems); tWidget.hPopupWin = WM_CreateWindowAsChild(r.x0, r.y0, r.x1 - r.x0, r.y1 - r.y0, NULL, //hParent WM_CF_SHOW, //WinFlags xIconSelBtn_PopupWin_Callback, //WM_CALLBACK * cb sizeof(xIconSelBtn_OBJ*) ); if(tWidget.hPopupWin == NULL) { DEBUGOUT("\t new Window creating failed!!!\r\n"); return; } tWidget.MovingIndex = tWidget.SelectedIndex; WM_SetUserData(tWidget.hPopupWin, &pWidget, sizeof(xIconSelBtn_OBJ*)); WM_SetFocus(tWidget.hPopupWin); } else { tWidget.MovingIndex = tWidget.SelectedIndex; WM_SetUserData(tWidget.hPopupWin, &pWidget, sizeof(xIconSelBtn_OBJ*)); WM_ShowWindow(tWidget.hPopupWin); WM_SetFocus(tWidget.hPopupWin); } }
LISTBOX_Handle LISTBOX_CreateAsChild( const GUI_ConstString* ppText, WM_HWIN hWinParent, int x0, int y0, int xsize, int ysize, int Flags) { LISTBOX_Handle hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hWinParent, Flags, _LISTBOX_Callback, sizeof(LISTBOX_Obj)-sizeof(WM_Obj)); if (hObj) { LISTBOX_Obj* pObj = LISTBOX_H2P(hObj); /* init widget specific variables */ WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE | WIDGET_STATE_ENABLED); /* pObj->ppText = 0; */ /* Zero init not required */ pObj->pFont = _pDefaultFont; pObj->aBackColor[0] = 0xffffff; /* Non selected state */ pObj->aBackColor[1] = LISTBOX_BKCOLOR1_DEFAULT; /* selected state */ pObj->aBackColor[2] = GUI_BLUE; /* selected state with focus */ pObj->aTextColor[0] = 0x000000; /* Non selected state */ pObj->aTextColor[1] = 0xffffff; /* selected state */ pObj->aTextColor[2] = 0xffffff; /* selected state with focus */ if (hObj && ppText) { LISTBOX_Obj* pObj = LISTBOX_H2P(hObj); INIT_ID(pObj); /* init member variables */ /* Check size */ if (!xsize) { const GUI_FONT* pFontOld = GUI_SetFont(pObj->pFont); int i; for (i=0; *(ppText+i); i++) { int Size = GUI_GetStringDistX(*(ppText+i)); if (Size>xsize) xsize = Size; } GUI_SetFont(pFontOld); } /* Set non-zero attributes */ pObj->ppText = ppText; } _CalcScrollParas(hObj); } return hObj; }
PROGBAR_Handle PROGBAR_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags) { /* Create the window */ PROGBAR_Handle hObj =WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, Flags, _Callback, sizeof(PROGBAR_Obj) - sizeof(WM_Obj)); if (hObj) { PROGBAR_Obj* pObj = (PROGBAR_Obj*) WM_HMEM2Ptr(hObj); INIT_ID(pObj); pObj->Widget.Id = Id; /* init member variables */ pObj->pFont =GUI_DEFAULT_FONT; pObj->BarColor[0] = 0x555555; pObj->BarColor[1] = 0xaaaaaa; pObj->TextColor[0] = 0xffffff; pObj->TextColor[1] = 0x000000; pObj->TextAlign = GUI_TA_CENTER; pObj->Max =100; pObj->Min =0; } return hObj; }
/********************************************************************* * * BUTTON_CreateEx */ BUTTON_Handle BUTTON_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) { BUTTON_Handle hObj; GUI_USE_PARA(ExFlags); /* Create the window */ WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, BUTTON_Callback, sizeof(BUTTON_Obj) - sizeof(WM_Obj)); if (hObj) { BUTTON_Obj * pObj = (BUTTON_Obj *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */ /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE); /* init member variables */ BUTTON_INIT_ID(pObj); pObj->Props = BUTTON__DefaultProps; } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "BUTTON_Create failed") } WM_UNLOCK(); return hObj; }