/** * @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; } }
/** * @brief Callback routine of desktop window. * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbBk(WM_MESSAGE * pMsg) { MENU_MSG_DATA* pData; uint32_t NCode, Id; static uint8_t sel = 0; switch (pMsg->MsgId) { case WM_MENU: /* Process the menu message */ pData = (MENU_MSG_DATA*)pMsg->Data.p; switch (pData->MsgType) { case MENU_ON_ITEMSELECT: /* A menu item has been selected */ switch (pData->ItemId) { case ID_MENU_LOG: if (hLog == 0) { hLog = GUI_CreateDialogBox(_aKernelLogDialogCreate, GUI_COUNTOF(_aProcessManagerDialogCreate), _cbKernelLogDialog, pMsg->hWin, FRAMEWIN_CF_MOVEABLE | WM_CF_FGND | WM_CF_STAYONTOP, 50); } else { WM_ShowWindow(hLog); WM_BringToTop(hLog); } break; case ID_MENU_PMGR: if(hProcess == 0) { hProcess = GUI_CreateDialogBox(_aProcessManagerDialogCreate, GUI_COUNTOF(_aProcessManagerDialogCreate), _cbProcessManagerDialog, pMsg->hWin, FRAMEWIN_CF_MOVEABLE | WM_CF_FGND | WM_CF_STAYONTOP, 50); } else { WM_ShowWindow(hProcess); WM_BringToTop(hProcess); } break; case ID_MENU_PERF: if(hPerformance == 0) { hPerformance = GUI_CreateDialogBox(_aPerformanceDialogCreate, GUI_COUNTOF(_aPerformanceDialogCreate), _cbPerformanceDialog, pMsg->hWin, FRAMEWIN_CF_MOVEABLE | WM_CF_FGND | WM_CF_STAYONTOP, 50); } else { WM_ShowWindow(hPerformance); WM_BringToTop(hPerformance); } break; case ID_MENU_EXIT: break; } } break; case WM_PAINT: GUI_SetBkColor(GUI_TRANSPARENT); GUI_Clear(); if(hIcon) { WM_BringToBottom(hIcon); } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_CHILD_DELETED: SpriteDisabled = 0; GUI_SPRITE_Show(_aSprite[0].hSprite); break; case WM_NOTIFICATION_CLICKED: if (Id == ID_ICONVIEW_MENU) { sel = ICONVIEW_GetSel(pMsg->hWinSrc); if(hPerformance != 0) { WM_HideWindow(hPerformance); } if(sel < k_ModuleGetNumber()) { if(sel < 8) { ICONVIEW_SetSel(pMsg->hWinSrc, -1); } else { ICONVIEW_SetSel(pMsg->hWinSrc, k_ModuleGetNumber() + 1); } } } break; case WM_NOTIFICATION_RELEASED: if (Id == ID_ICONVIEW_MENU) { if(sel < k_ModuleGetNumber()) { SpriteDisabled = 1; GUI_SPRITE_Hide(_aSprite[0].hSprite); module_prop[sel].module->startup(pMsg->hWin, 0, 26); sel = 0; } } else if (Id == ID_BUTTON_BKGND) { /* Create popup menu after touching the display */ _OpenPopup(WM_HBKWIN, _aMenuItems, GUI_COUNTOF(_aMenuItems),0 , 25); } break; default: break; } break; default: WM_DefaultProc(pMsg); } }
void win_handler() { int win_id = current_ekran.current_level; int sel_index = current_ekran.index_position; sel_icon = sel_index; repaint_actions((__index_level_menu)win_id); switch (win_id) { case ID_EKRAN_MAIN: { if (change_language) { for (int i = 0; i < ICONVIEW_SIZE; i++) { ICONVIEW_SetItemText(iconWin, i, _aBitmapItem[i].pText[sel_language]); } } ICONVIEW_SetSel(iconWin, sel_icon); EDIT_SetText(hEdit, _aBitmapItem[sel_icon].pExplanation[sel_language]); start_gui_exec = 1; break; } case ID_LANG_DLG: { switch (sel_index) { case ID_LANG_RADIO: { WM_SetFocus(langRadioButton); start_gui_exec = 1; break; } case ID_LANG_BUTTON_OK: { WM_SetFocus(langButtonOK); start_gui_exec = 1; break; } case ID_LANG_BUTTON_CANCEL: { WM_SetFocus(langButtonCancel); start_gui_exec = 1; break; } default: //do nothing break; } break; } case ID_MEAS_PG: { switch (sel_index) { case ID_MEAS_FOURIER_PG: { select_meas_multipage(sel_index); update_measurement_pg(); start_gui_exec = 1; break; } case ID_MEAS_SUM_EQUATION_PG: { select_meas_multipage(sel_index); update_measurement_i_pg(); start_gui_exec = 1; break; } case ID_MEAS_ANGLES_PG: { select_meas_multipage(sel_index); update_angles_pg(); start_gui_exec = 1; break; } case ID_MEAS_RESISTANCES_PG: { select_meas_multipage(sel_index); update_resistances_pg(); start_gui_exec = 1; break; } case ID_MEAS_SPEED_RESISTANCE_CHANGE_PG: { select_meas_multipage(sel_index); update_speed_resistance_change_pg(); start_gui_exec = 1; break; } case ID_MEAS_RESISTANCE_ANGLE_PG: { select_meas_multipage(sel_index); update_resistance_angle_pg(); start_gui_exec = 1; break; } case ID_MEAS_OTHER_PG: { select_meas_multipage(sel_index); update_other_meas_pg(); meas_scrolling(); start_gui_exec = 1; break; } default: //do nothing break; } break; } case ID_CONFIG_PG: { if (current_ekran.edition == 0) { copy_config_settings_to_buff(); if (eeprom_bs_settings_tbl.arPsw1[0] == '\0') { current_ekran.edition = 1; } } update_conf_item(); start_gui_exec = 1; break; } case ID_RANK_PG: { switch (sel_index) { case ID_RANK_DISCRETE_INPUT_PG: case ID_RANK_DISCRETE_OUTPUT_PG: case ID_RANK_LED_PG: case ID_RANK_DF_PLUS_PG: case ID_RANK_DF_MINUS_PG: case ID_RANK_DF_BLK_PG: case ID_RANK_F_PG: case ID_RANK_TRG_SET_PL_PG: case ID_RANK_TRG_SET_MN_PG: case ID_RANK_TRG_RST_PL_PG: case ID_RANK_TRG_RST_MN_PG: case ID_RANK_AN_DIG_REC_PG: { if (current_ekran.edition == 0) { if (eeprom_bs_settings_tbl.arPsw1[0] == '\0') { current_ekran.edition = 1; } } if (current_ekran.edition != 2) { copy_rank_settings_to_buff(); } select_rank_multipage(sel_index); start_gui_exec = 1; break; } default: break; } break; } case ID_RANK_DI_DLG: { if (current_ekran.edition != 2) { copy_rank_settings_to_buff(); } update_di_status_panel(); update_di_title(); update_di_labels(); update_di_settings(); start_gui_exec = 1; break; } case ID_RANK_DO_DLG: { if (current_ekran.edition != 2) { copy_rank_settings_to_buff(); } update_do_status_panel(); update_do_title(); update_do_labels(); update_do_settings(); start_gui_exec = 1; break; } case ID_RANK_LED_DLG: { if (current_ekran.edition != 2) { copy_rank_settings_to_buff(); } update_led_status_panel(); update_led_title(); update_led_labels(); update_led_settings(); start_gui_exec = 1; break; } case ID_RANK_DF_DLG: { if (current_ekran.edition != 2) { copy_rank_settings_to_buff(); } update_df_status_panel(); update_df_title(); update_df_labels(); update_df_settings(); start_gui_exec = 1; break; } case ID_RANK_AN_REC_DLG: { if (current_ekran.edition != 2) { copy_rank_settings_to_buff(); } update_an_rec_status_panel(); update_an_rec_title(); update_an_rec_labels(); update_an_rec_settings(); start_gui_exec = 1; break; } case ID_MAIN_MENU: case ID_DIALOG_PASSWORD: case ID_DIALOG_PASSWORD_LEVEL_2: case ID_DIALOG_PASSWORD_OLD_1: case ID_DIALOG_PASSWORD_OLD_2: case ID_DIALOG_PASSWORD_NEW_1: case ID_DIALOG_PASSWORD_NEW_2: case ID_DIALOG_CONFIRMATION: case ID_DIALOG_CONFIRMATION_LEVEL_2: case ID_DIALOG_ERROR: case ID_DIALOG_ERROR_LEVEL_2: case ID_UNRELIABLE_ERROR: case ID_UNRELIABLE_ERROR_LEVEL_2: case ID_ABOUT_PG: { start_gui_exec = 1; break; } case ID_DZ_PG: case ID_MTZ_PG: case ID_TZNP_PG: case ID_ZOP_PG: case ID_UMIN_PG: case ID_UMAX_PG: case ID_APV_PG: case ID_UROV_PG: case ID_CB_PG: { redraw_panel_protection((__index_level_menu)win_id); start_gui_exec = 1; break; } case ID_SETTINGS_PG: { redraw_panel_settings(); start_gui_exec = 1; break; } case ID_TRANSFORMER_PG: { redraw_panel_transformer(); start_gui_exec = 1; break; } case ID_RESURS_PG: { redraw_panel_resurs(); start_gui_exec = 1; break; } case ID_COMM_PG: { redraw_panel_Comm(); start_gui_exec = 1; break; } case ID_MODBUS_PG: { redraw_panel_Modbus(); start_gui_exec = 1; break; } case ID_NET_PG: { redraw_panel_Net(); start_gui_exec = 1; break; } case ID_CLOCK_PG: { redraw_panel_clock(); start_gui_exec = 1; break; } case ID_LCD_SETTINGS: { redraw_panel_lcd_settings(); start_gui_exec = 1; break; } case ID_TM_PG: case ID_DIAGNOSTICS_PG: { redraw_panel_info_n((__index_level_menu)win_id); start_gui_exec = 1; break; } case ID_REGISTRATORS_PG: { redraw_panel_registrators(); start_gui_exec = 1; break; } default: //do nothing break; } if (change_language) change_language = 0; }