Пример #1
0
/**
  * @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;
	}
}
Пример #2
0
/**
  * @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);
  }
}
Пример #3
0
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;
}