示例#1
0
/*$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);
    }
}
示例#2
0
//显示一个菜单组
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);
}
示例#3
0
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;
}
示例#4
0
///----------------------------------------------------------------------------
///	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;
    }
}