/*$knob_pross...............................................................*/ void knob_pross(unsigned char cmd) { if (cmd&1) { MenuScroll(gsnCurMGrp, 1); } else if (cmd&(1<<1)) { MenuScroll(gsnCurMGrp, -1); } if (cmd&(1<<2)) { ItemSelected(gsnCurMGrp); } }
//显示一个菜单组 void DisplayGroup(short snMGSeq) { unsigned char MenuLang; unsigned char Temp; ByteDataGet(VAL_MENU_LANG,&MenuLang); DisplayMItem(gMG+snMGSeq,-1,0,MD_NORMAL); //组标题 MenuScroll(snMGSeq,0); //显示当前位置的菜单内容 if(MenuLang == CHINESE) { send_line_v(119,0,64,0); update_disp_data(119,0,119,63); } else { send_line_h(0,41,192,0); update_disp_data(0,41,191,41); } ByteDataGet(VAL_DSCS_MODE,&Temp); gnaStNum[0]=Temp; ByteDataGet(VAL_CUR_CMR,&Temp); gnaStNum[1]=Temp; ByteDataGet(VAL_SPKER_LIMIT,&Temp); gnaStNum[2]=Temp; ByteDataGet(VAL_APPLY_LIMIT,&Temp); gnaStNum[3]=Temp; DisplayAllState(0x0F,gnaStNum); }
void ItemSelected(short snMGSeq) { TMenu *pMenu; short usNew; //unsigned char Index;// yasirliang change in 20160603 // int i; // yasirliang change in 20160603 unsigned char MenuLang; ByteDataGet(VAL_MENU_LANG,&MenuLang); usNew = snMGSeq; if(gMG[snMGSeq].Type==ST_CMN) //普通菜单项 { pMenu = gMG[snMGSeq].FirstItem + gMG[snMGSeq].Position; if(pMenu->Type == MT_MENU) { if(pMenu->Link!=MGS_NONE) { usNew = pMenu->Link; if(gMG[snMGSeq].Level > gMG[usNew].Level) gMG[snMGSeq].Position = 0; } if(pMenu->fpMenuDo != NULL) pMenu->fpMenuDo(0); //pMenu->fpMenuDo(NULL); } else if(pMenu->Type == MT_SWITCH) //语言切换 { if(MenuLang == CHINESE) ChangeLanguage(ENGLISH); else ChangeLanguage(CHINESE); usNew = 0; gMG[usNew].Position = 0; } else if((pMenu->Type==MT_YESNO)||(pMenu->Type==MT_ONOFF)) //不跳转,直接改变值 { gMG[snMGSeq].ss.BitState ^= (1<<gMG[snMGSeq].Position); if(pMenu->fpMenuDo != NULL) pMenu->fpMenuDo(gMG[snMGSeq].ss.BitState&(1<<gMG[snMGSeq].Position)); DisplayMItem(gMG+snMGSeq,gMG[snMGSeq].Position%3,gMG[snMGSeq].Position,MD_REVERSE); return; } else { // 记录当前页 if((gsnCurMGrp==0)&&(pMenu->Link!=0)) { UseDisSet(CPT_USE,BOOL_TRUE); } gsnCurMGrp = pMenu->Link; //DEBUG_INFO("gsnCurMGrp=%d,gMG[gsnCurMGrp].Position=%d\n",gsnCurMGrp,gMG[gsnCurMGrp].Position); DisplayMItem(gMG+gsnCurMGrp,-1,gMG[gsnCurMGrp].Position,MD_NORMAL); if(ENGLISH==MenuLang) { clear_block(0,10,191,39); update_disp_data(0,10,191,39); } else { clear_block(0,16,118,63); update_disp_data(0,16,118,63); } RenewMenuValue(pMenu->Link,0); MenuScroll(pMenu->Link,0); return; } } else { usNew = gMG[snMGSeq].Count; //DEBUG_INFO("snMGSeq=%d,usNew=%d\n",snMGSeq,usNew); if(gMG[snMGSeq].Type==ST_VALUE) { SendMainState(0,NULL,0); } else if(gMG[snMGSeq].Type==ST_MODE) { pMenu = gMG[usNew].FirstItem + gMG[usNew].Position; if(pMenu->fpMenuDo!=NULL) { pMenu->fpMenuDo(gMG[snMGSeq].Position); } DisplayOneState(0,gMG[snMGSeq].Position); SendMainState(0,NULL,0); } } DisplayGroup(usNew); // 显示当前页 // DisplayGroup(usNew); // 记录当前页 if((usNew==0)&&(gsnCurMGrp>0)) { UseDisSet(CPT_USE,BOOL_FALSE); } else if((gsnCurMGrp==0)&&(usNew>0)) { UseDisSet(CPT_USE,BOOL_TRUE); } gsnCurMGrp = usNew; }
///---------------------------------------------------------------------------- /// Function Break ///---------------------------------------------------------------------------- void LoadRecordMenuProc(INPUT_MSG_STRUCT msg, WND_LAYOUT_STRUCT *wnd_layout_ptr, MN_LAYOUT_STRUCT *mn_layout_ptr) { uint8 buff[20]; REC_EVENT_MN_STRUCT temp_rec; INPUT_MSG_STRUCT mn_msg; uint32 input; uint8 i; switch (msg.cmd) { case (ACTIVATE_MENU_CMD): wnd_layout_ptr->start_col = LOAD_REC_WND_STARTING_COL; wnd_layout_ptr->end_col = LOAD_REC_WND_END_COL; wnd_layout_ptr->start_row = LOAD_REC_WND_STARTING_ROW; wnd_layout_ptr->end_row = LOAD_REC_WND_END_ROW; mn_layout_ptr->curr_ln = 1; mn_layout_ptr->top_ln = 1; LoadTempMenuTable(s_loadRecordMenuTable); for (i = 1; i <= MAX_NUM_OF_SAVED_SETUPS; i++) { GetRecordData(&temp_rec, i, REC_TRIGGER_USER_MENU_TYPE); if (temp_rec.validRecord == YES) { switch (temp_rec.opMode) { case (WAVEFORM_MODE): sprintf((char*)buff, "%s (%s)", (char*)temp_rec.name, getLangText(SELF_TRG_TEXT)); break; case (BARGRAPH_MODE): sprintf((char*)buff, "%s (%s)", (char*)temp_rec.name, getLangText(BAR_TEXT)); break; case (COMBO_MODE): sprintf((char*)buff, "%s (%s)", (char*)temp_rec.name, getLangText(COMBO_TEXT)); break; default: sprintf((char*)buff, "%s (UNK)", (char*)temp_rec.name); break; } } else { sprintf((char*)buff, "<%s>", getLangText(EMPTY_TEXT)); } // Add 3 to i to offset past the default settings strcpy((char*)&(g_menuPtr[i + 3].data[0]), (char*)buff); } // Add in the "<END>" text to signal the end of the list sprintf((char*)buff, "<%s>", getLangText(END_TEXT)); strcpy((char*)&(g_menuPtr[i + 3].data[0]), (char*)buff); i++; // Add the end string to allow other routines to match on the end of the menu strcpy((char*)&(g_menuPtr[i + 3].data[0]), ".end."); break; case (KEYPRESS_MENU_CMD): input = msg.data[0]; switch (input) { case (ENTER_KEY): switch (mn_layout_ptr->curr_ln) { case (1): LoadTrigRecordDefaults(&g_triggerRecord, WAVEFORM_MODE); break; case (2): LoadTrigRecordDefaults(&g_triggerRecord, BARGRAPH_MODE); break; case (3): LoadTrigRecordDefaults(&g_triggerRecord, COMBO_MODE); break; default: // Check if the first char matches a "<" for either "<EMPTY>" or "<END>" if (strncmp((char*)&g_menuPtr[mn_layout_ptr->curr_ln].data[0], "<", 1) == 0) { // Record slot is empty, do nothing return; } else { GetRecordData(&g_triggerRecord, (uint32)(mn_layout_ptr->curr_ln - 3), REC_TRIGGER_USER_MENU_TYPE); } break; } UpdateModeMenuTitle(g_triggerRecord.opMode); SETUP_USER_MENU_MSG(&modeMenu, MONITOR); JUMP_TO_ACTIVE_MENU(); break; case (DELETE_KEY): // Check if the current line is beyond the default entries if (mn_layout_ptr->curr_ln > 3) { GetRecordData(&temp_rec, (uint32)(mn_layout_ptr->curr_ln - 3), REC_TRIGGER_USER_MENU_TYPE); if (temp_rec.validRecord == YES) { sprintf((char*)g_spareBuffer, "%s (%s)", getLangText(DELETE_SAVED_SETUP_Q_TEXT), temp_rec.name); if (MessageBox(getLangText(WARNING_TEXT), (char*)g_spareBuffer, MB_YESNO) == MB_FIRST_CHOICE) { memset(&temp_rec.name, 0, sizeof(temp_rec.name)); temp_rec.validRecord = NO; SaveRecordData(&temp_rec, (uint32)(mn_layout_ptr->curr_ln - 3), REC_TRIGGER_USER_MENU_TYPE); sprintf((char*)&(g_menuPtr[mn_layout_ptr->curr_ln].data[0]), "<%s>", getLangText(EMPTY_TEXT)); } } } break; case (DOWN_ARROW_KEY): MenuScroll(DOWN, SELECT_MN_WND_LNS, mn_layout_ptr); // Prevent the cursor from selecting the "<END>" text if (mn_layout_ptr->curr_ln == 18) { mn_layout_ptr->curr_ln = 17; } break; case (UP_ARROW_KEY): MenuScroll(UP, SELECT_MN_WND_LNS, mn_layout_ptr); break; case (ESC_KEY): SETUP_MENU_MSG(MAIN_MENU); mn_msg.data[0] = ESC_KEY; JUMP_TO_ACTIVE_MENU(); break; case (HELP_KEY): SETUP_USER_MENU_MSG(&helpMenu, CONFIG); JUMP_TO_ACTIVE_MENU(); break; default: break; } break; default: break; } }