int main() { { std::string package, clss; Atlas::Message::MapType script; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == -1); } { std::string package, clss; Atlas::Message::MapType script; script["name"] = 1; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == -1); } { std::string package, clss; Atlas::Message::MapType script; script["name"] = "foo"; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == -1); } { std::string package, clss; Atlas::Message::MapType script; script["name"] = "foo"; script["language"] = 1; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == -1); } { std::string package, clss; Atlas::Message::MapType script; script["name"] = "foo"; script["language"] = "csharp"; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == -1); } { std::string package, clss; Atlas::Message::MapType script; script["name"] = "foo"; script["language"] = "python"; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == -1); } { std::string package, clss; Atlas::Message::MapType script; script["name"] = "foo.bar"; script["language"] = "python"; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == 0); assert(package == "foo"); assert(clss == "bar"); } { std::string package, clss; Atlas::Message::MapType script; script["name"] = "mim.foo.bar"; script["language"] = "python"; int ret = GetScriptDetails(script, "name", "context", package, clss); assert(ret == 0); assert(package == "mim.foo"); assert(clss == "bar"); } return 0; }
BOOL CALLBACK DlgProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { // case WM_INITDIALOG: // break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_COMBO_COMMAND: { if (HIWORD(wParam) == CBN_SELCHANGE) { int i = SendDlgItemMessage(hWnd, IDC_COMBO_COMMAND, CB_GETCURSEL, 0, 0); if (i != CB_ERR && i >= 0 && i < giCmdData && gpCmdData[i]->bHasArgs) { ShowWindow(GetDlgItem(hWnd, IDC_STATIC_ARGS_DESCRIPTION), SW_SHOW); ShowWindow(GetDlgItem(hWnd, IDC_STATIC_ARGS), SW_SHOW); ShowWindow(GetDlgItem(hWnd, IDC_EDIT_ARGS), SW_SHOW); SetDlgItemText(hWnd, IDC_STATIC_ARGS_DESCRIPTION, gpCmdData[i]->szArgsDesc); } else { ShowWindow(GetDlgItem(hWnd, IDC_STATIC_ARGS_DESCRIPTION), SW_HIDE); ShowWindow(GetDlgItem(hWnd, IDC_STATIC_ARGS), SW_HIDE); ShowWindow(GetDlgItem(hWnd, IDC_EDIT_ARGS), SW_HIDE); } } break; } case IDC_CMD_EDIT: { char szFileName[MAX_PATH+1]; GetDlgItemText(hWnd, IDC_EDIT_FILE, szFileName, MAX_PATH); char *szFile = findfile(szFileName); if (!szFile) { szFile = new char[MAX_PATH+1]; wsprintf(szFile, "%s%s", gszUserScripts, szFileName); } char szViewer[MAX_PATH+1]; char temp[MAX_PATH]; GetTempPath(MAX_PATH, temp); lstrcat(temp, "sitemp.txt"); HANDLE hFile = CreateFile(temp, 0, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); DWORD err = GetLastError(); if (hFile != INVALID_HANDLE_VALUE) { FindExecutable(temp, NULL, szViewer); CloseHandle(hFile); if (err != ERROR_ALREADY_EXISTS) DeleteFile(temp); } if (!*szViewer) { lstrcpy(szViewer, "notepad.exe"); } SHELLEXECUTEINFO se = { 0 }; se.cbSize = sizeof(SHELLEXECUTEINFO); se.fMask = SEE_MASK_DOENVSUBST | SEE_MASK_NOCLOSEPROCESS; se.lpVerb = "Open"; se.lpFile = szViewer; se.lpParameters = szFile; se.lpDirectory = NULL; se.nShow = SW_SHOWNORMAL; ShellExecuteEx(&se); break; } case IDC_CMD_BROWSE: char *buf = new char[MAX_PATH+1]; *buf = 0; OPENFILENAME ofn = {0}; ofn.lStructSize = sizeof(OPENFILENAME); ofn.hInstance = ghInstance; ofn.hwndOwner = hWnd; // "Lua Files\0*.lua\0All Files\0*.*\0"; char *filter = new char[256]; char *end = filter; lstrcpy(end, STR(LUA_FILES)); end += lstrlen(end) + 1; lstrcpy(end, "*.lua"); end += lstrlen(end) + 1; lstrcpy(end, STR(ALL_FILES)); end += lstrlen(end) + 1; lstrcpy(end, "*.*"); end += lstrlen(end) + 1; *end = 0; char szFile[MAX_PATH+1]; GetDlgItemText(hWnd, IDC_EDIT_FILE, szFile, MAX_PATH); ofn.lpstrFile = szFile; ofn.lpstrInitialDir = (char *)gszUserScripts; ofn.lpstrFilter = filter; ofn.lpstrFile = buf; ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER; if (GetOpenFileName(&ofn)) { if ( StrStartsWith(buf, (char *)gszUserScripts) ) { SetDlgItemText(hWnd, IDC_EDIT_FILE, buf + lstrlen((char *)gszUserScripts)); } else if ( StrStartsWith(buf, (char *)gszGlobalScripts) ) { SetDlgItemText(hWnd, IDC_EDIT_FILE, buf + lstrlen((char *)gszGlobalScripts)); } else { SetDlgItemText(hWnd, IDC_EDIT_FILE, buf); } // clear the dropdown SendDlgItemMessage(hWnd, IDC_COMBO_COMMAND, CB_RESETCONTENT, 0, 0); DeleteScriptDetails((s_commandData **) &gpCmdData, giCmdData); giCmdData = GetScriptDetails(buf, (s_commandData **) &gpCmdData); if (giCmdData > 0) { // populate the dropdown for (int i = 0; i<giCmdData; i++) AddCombo(hWnd, IDC_COMBO_COMMAND, gpCmdData[i]->szCmdName, gpCmdData[i]->szCmdName); SendDlgItemMessage(hWnd, IDC_COMBO_COMMAND, CB_SETCURSEL, 0, 0); ShowWindow(GetDlgItem(hWnd, IDC_STATIC_COMMAND), SW_SHOW); ShowWindow(GetDlgItem(hWnd, IDC_COMBO_COMMAND), SW_SHOW); } else { ShowWindow(GetDlgItem(hWnd, IDC_STATIC_COMMAND), SW_HIDE); ShowWindow(GetDlgItem(hWnd, IDC_COMBO_COMMAND), SW_HIDE); } // show/hide the args depending on the selection SendMessage(hWnd, WM_COMMAND, MAKELONG(IDC_COMBO_COMMAND, CBN_SELCHANGE), (LPARAM) GetDlgItem(hWnd, IDC_COMBO_COMMAND)); } delete filter; delete buf; } break; case WM_CLOSE: DestroyWindow(hWnd); break; default: return FALSE; } return TRUE; }