Esempio n. 1
0
void cmdListCtrl::RunMenu(const int id,cmdListCtrl* ctrl)
{
    int item = ctrl->GetNextItem(-1,wxLIST_NEXT_ALL,wxLIST_STATE_FOCUSED);
    switch(id)
    {
    case MENU_CMD_ADD:
    {
        DlgAddNewCmd* dlg=new DlgAddNewCmd(NULL);
        if (dlg->ShowModal() == wxID_OK)
            ctrl->ReLoadCmds();
        dlg->Destroy();
    }
    break;
    case MENU_CMD_EDIT:
        if (item == -1)
            break;
        {
            DlgAddNewCmd* dlg = new DlgAddNewCmd(MENU_CMD_EDIT);
//				dlg->flags = MENU_CMD_EDIT;
            dlg->SetCmdID(ctrl->GetItemText(item,CMDLIST_COL_ID));
            dlg->cmdName->SetValue(ctrl->GetItemText(item,CMDLIST_COL_NAME));
            dlg->cmdDesc->SetValue(ctrl->GetItemText(item,CMDLIST_COL_DESC));
            dlg->cmdKey->SetValue(ctrl->GetItemText(item,CMDLIST_COL_KEY));
            dlg->cmdLine->SetValue(ctrl->GetItemText(item,CMDLIST_COL_CMD));
            if (dlg->ShowModal() == wxID_OK)
                ctrl->ReLoadCmds();
            dlg->Destroy();
        }
        break;
    case MENU_CMD_DEL:
        if (item == -1)
            break;
        if (ctrl->GetSelectedItemCount() == 1)
        {
            if (wxMessageBox(wxString::Format("真的要删除该命令吗?\n名称:%s\n命令行:%s",ctrl->GetItemText(item,CMDLIST_COL_NAME),ctrl->GetItemText(item,CMDLIST_COL_CMD))	,"删除确认",wxYES_NO | wxICON_WARNING) != wxYES)
                break;
            if (cmdListCtrl::onDelete(ctrl->GetItemText(item)))
                ctrl->DeleteItem(item);
            break;
        }
        if (wxMessageBox(wxString::Format("真的要删除所选择的[%d]个命令吗?",ctrl->GetSelectedItemCount()),"删除确认",wxYES_NO | wxICON_WARNING) == wxYES)
        {
            wxArrayLong sel;
            for(item = -1;;)
            {
                item = ctrl->GetNextItem(item,wxLIST_NEXT_ALL,wxLIST_STATE_SELECTED);
                if (item == -1)
                    break;
                sel.Add(item);
            }
            for(item = sel.size() - 1; item >= 0; --item)
            {
                if (cmdListCtrl::onDelete(ctrl->GetItemText(sel[item])))
                    ctrl->DeleteItem(sel[item]);
            }
            sel.Clear();
        }
        break;
    case ID_TOOL_CHECK:
        wxMessageBox("命令检测,尚未完成");
        break;
    }
//	ctrl->Refresh();
}