void EditorUI::menuFileLoad() { static std::string fn; const bool r = FileOpenDlg("Load model file:", FileChooserPattern, fn); if (r) { Load(fn); UpdateTitle(); } }
void EditorUI::BrowseForTexture(int textureIndex) { static std::string fn; if (FileOpenDlg ("Select texture:", ImageFileExt, fn)) { Texture *tex = new Texture (fn); if (!tex->IsLoaded ()) delete tex; else SetModelTexture (textureIndex, tex); BACKUP_POINT("Texture change"); Update(); } }
void EditorUI::menuScriptLoad() { const char *pattern ="Lua script (LUA)\0*.lua\0"; static std::string lastLuaScript; if (FileOpenDlg("Load script:", pattern, lastLuaScript)) { if (luaL_dofile(luaState, lastLuaScript.c_str()) != 0) { const char *err = lua_tostring(luaState, -1); fltk::message("Error while executing %s: %s", lastLuaScript.c_str(), err); } } }
void EditorUI::menuObjectLoad() { MdlObject* obj = GetSingleSel(); if (!obj) return; static std::string fn; if (FileOpenDlg("Load object:", FileChooserPattern, fn)) { Model* submdl = Model::Load(fn); if (submdl) model->InsertModel (obj, submdl); delete submdl; BACKUP_POINT("Load object"); Update(); } }
void EditorUI::menuMappingImportUV() { static std::string fn; if (FileOpenDlg("Select model to copy UV co�dinates from:", FileChooserPattern, fn)) { IProgressCtl progctl; progctl.cb = EditorUIProgressCallback; progctl.data = this; progress->range (0.0f, 1.0f, 0.01f); progress->position (0.0f); progress->show (); model->ImportUVMesh(fn.c_str(), progctl); progress->hide (); BACKUP_POINT("UV mapping imported"); } }
const char *EditorUI::FileChooser (const char *msg, const char *pattern, const char *prev, bool save) { static std::string fn; bool r; if (save) r = FileSaveDlg (msg,pattern,fn); else r = FileOpenDlg(msg,pattern,fn); if (r) return fn.c_str(); return 0; //char *r = fltk::file_chooser (msg, pattern, prev, save); //return r; }
void TexGroupUI::LoadGroup() { static std::string fn; if (!current) return; if (FileOpenDlg ("Load file:", GroupConfigPattern, fn)) { CfgList* cfg=CfgValue::LoadFile (fn.c_str()); if (!cfg) { fltk::message ("Failed to read %s\n", fn.c_str()); return; } TextureGroup *tg = texGroupHandler->LoadGroup (cfg); if (tg) { tg->name = fltk::filename_name(fn.c_str()); UpdateGroupList (); } } }
void EditorUI::menuObjectReplace() { MdlObject* old = GetSingleSel(); if (!old) return; char buf[128]; sprintf (buf, "Select model to replace \'%s\' ", old->name.c_str()); static std::string fn; if (FileOpenDlg(buf, FileChooserPattern, fn)) { Model *submdl = Model::Load(fn); if (submdl) { model->ReplaceObject (old, submdl->root); submdl->root = 0; BACKUP_POINT("Replace object"); Update (); } delete submdl; } }
/*------------------------------------------------------------------------------------------------------------------ -- FUNCTION: Window_OnCommand -- -- DATE: November 12, 2013 -- -- REVISIONS: -- November 13, 2013 - Mat Siwoski: Completed implementation of the SendFile -- November 13, 2013 - Mat Siwoski: Implementation of the Config option. -- November 18, 2013 - Robin Hsieh: Added the enabling and disabling menu items. -- November 25, 2013 - Vincent Lau: Added creation of the Transmit thread after successful file read operation -- November 26, 2013 - Mat Siwoski: Added case for saving displayed text. -- November 27, 2013 - Robin Hsieh: Tested ErrorCheck in the file being read in. -- -- DESIGNER: Mat Siwoski -- -- PROGRAMMER: Mat Siwoski -- -- INTERFACE: void Window_OnCommand (HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) -- HWND hwnd: Handle to the window -- int id: The id of the selection. -- HWND hwndCtl: Handle to the control. -- UINT codeNotify: Int for the Notification -- -- RETURNS: - -- -- NOTES: -- This function deals with the selection in the menu on the main window. ------------------------------------------------------------------------------------------------------------------*/ void Window_OnCommand (HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { static TCHAR szFileName[MAX_PATH], szTitleName[MAX_PATH] ; switch(id) { case IDM_CONNECT: EnableMenuItem(GetMenu(hwnd), IDM_CONNECT, MF_DISABLED); EnableMenuItem(GetMenu(hwnd), IDM_DISCONNECT, MF_ENABLED); DrawMenuBar(hwnd); break; case IDM_SENDFILE: DWORD dwTransmitThreadID; if (FileOpenDlg(hwnd, szFileName, szTitleName)) { if (!FileRead(hwnd, szFileName)) { // error file could not be read OkMessage (hwnd, TEXT ("Could not read file %s!"), szTitleName) ; szFileName[0] = '\0' ; szTitleName[0] = '\0' ; } else // success file read { // Clean up thread TerminateThread(hTransmitThread, 0); CloseHandle(hTransmitThread); ReleaseSemaphore(hFileWaitSemaphore, 1, NULL); // create transmit thread for this file hTransmitThread = CreateThread(NULL, 0, TransmitThread, pszFileText, 0, &dwTransmitThreadID); } } break; case IDM_SAVEFILE: if (FileSaveDlg(hwnd, szFileName, szTitleName)) { if (!FileSave(hwnd, szFileName)) { OkMessage(hwnd, TEXT ("Could not write file %s"), szTitleName) ; break; } } break; case IDM_DISCONNECT: EnableMenuItem(GetMenu(hwnd), IDM_CONNECT, MF_ENABLED); EnableMenuItem(GetMenu(hwnd), IDM_DISCONNECT, MF_DISABLED); DrawMenuBar(hwnd); break; case IDM_CONFIG: DWORD dwReceiveThreadID; TerminateThread(hReceiveThread, 0); CloseHandle(hReceiveThread); if(SetupPort(lpszCommName)) { if (ConfPort(&MainWindow, lpszCommName)) { // Set Read flag true bWantToRead = TRUE; hReceiveThread = CreateThread(NULL, 0, ReceiveThread, &hEdit, 0, &dwReceiveThreadID); break; } } break; case IDM_ABOUT: DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ; break; case IDM_EXIT: Window_OnDestroy(hwnd); break; } }
LRESULT CALLBACK WindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ){ static int cxClient, cyClient; static HDC hdcBackBuffer; static HBITMAP hBitmap = NULL; static HBITMAP hOldBitmap = NULL; static TCHAR filename[MAX_PATH], titlename[MAX_PATH]; static RECT rectClientWindow; static int currentSearchButton = 0; static int ToolBarHeight; switch(msg){ case WM_CREATE:{ srand((unsigned) time(NULL)); hdcBackBuffer = CreateCompatibleDC(NULL); //get the DC for front buffer HDC hdc = GetDC(hwnd); hBitmap = CreateCompatibleBitmap( hdc, cxClient, cyClient); hOldBitmap = (HBITMAP)SelectObject( hdcBackBuffer, hBitmap ); ReleaseDC(hwnd, hdc); g_pathFinder = new PathFinder(); CheckMenuItemAppropriately( hwnd, IDM_VIEW_TILES, g_pathFinder->IsShowTilesOn()); CheckMenuItemAppropriately( hwnd, IDM_VIEW_GRAPH, g_pathFinder->IsShowGraphOn()); } break; case UM_TOOLBAR_HAS_BEEN_CREATED:{ RECT rectToolbar; GetWindowRect( g_hwndToolbar, &rectToolbar); ToolBarHeight = abs(rectToolbar.bottom - rectToolbar.top); rectClientWindow.left = 0; rectClientWindow.right = CLIENTWIDTH; rectClientWindow.top = 0; rectClientWindow.bottom = CLIENTHEIGHT + INFOWINDOWHEIGHT; ResizeToCorrectClientArea( hwnd, ToolBarHeight, rectClientWindow ); SendMessage( g_hwndToolbar, WM_SIZE, wParam, lParam ); GetClientRect( hwnd, &rectClientWindow ); rectClientWindow.bottom = CLIENTHEIGHT - ToolBarHeight - 1; hdcBackBuffer = CreateCompatibleDC(NULL); HDC hdc = GetDC(hwnd); hBitmap = CreateCompatibleBitmap( hdc, rectClientWindow.right, rectClientWindow.bottom ); hOldBitmap = (HBITMAP)SelectObject(hdcBackBuffer, hBitmap); ReleaseDC(hwnd, hdc); } break; case WM_KEYUP:{ switch(wParam){ case VK_ESCAPE: SendMessage( hwnd, WM_DESTROY, NULL, NULL ); break; case 'G': g_pathFinder->ToggleShowGraph(); break; case 'T': g_pathFinder->ToggleShowTiles(); break; } // switch RedrawWindowRect( hwnd, false, rectClientWindow ); } break; case WM_LBUTTONDOWN:{ g_pathFinder->PaintTerrain(MAKEPOINTS(lParam)); RedrawWindowRect( hwnd, false, rectClientWindow ); } break; case WM_MOUSEMOVE:{ switch(wParam){ case MK_LBUTTON:{ g_pathFinder->PaintTerrain(MAKEPOINTS(lParam)); RedrawWindowRect( hwnd, false, rectClientWindow ); } break; } } // break; case WM_COMMAND:{ switch(wParam){ case ID_BUTTON_STOP: g_pathFinder->ChangeBrush( PathFinder::TARGET ); break; case ID_BUTTON_START: g_pathFinder->ChangeBrush( PathFinder::SOURCE ); break; case ID_BUTTON_OBSTACLE: g_pathFinder->ChangeBrush( PathFinder::OBSTACLE ); break; case ID_BUTTON_WATER: g_pathFinder->ChangeBrush( PathFinder::WATER ); break; case ID_BUTTON_MUD: g_pathFinder->ChangeBrush( PathFinder::MUD ); break; case ID_BUTTON_NORMAL: g_pathFinder->ChangeBrush( PathFinder::NORMAL ); break; case ID_BUTTON_DFS: g_pathFinder->CreatePathDFS(); currentSearchButton = ID_BUTTON_DFS; break; case ID_BUTTON_BFS: g_pathFinder->CreatePathBFS(); currentSearchButton = ID_BUTTON_BFS; break; case ID_BUTTON_DIJKSTRA: g_pathFinder->CreatePathDijkstra(); currentSearchButton = ID_BUTTON_DIJKSTRA; break; case ID_BUTTON_ASTAR: g_pathFinder->CreatePathAStar(); currentSearchButton = ID_BUTTON_ASTAR; break; case ID_MENU_LOAD: FileOpenDlg( hwnd, filename, titlename, "PathFinder Files (*.map)", "map" ); if(strlen(titlename) > 0) g_pathFinder->Load(titlename); SendMessage( g_hwndToolbar, TB_CHECKBUTTON, (WPARAM)currentSearchButton, (LPARAM)false ); break; case ID_MENU_SAVEAS: FileSaveDlg( hwnd, filename, titlename, "PathFinder Files (*.map)", "map" ); if(strlen(titlename) > 0) g_pathFinder->Save(titlename); break; case ID_MENU_NEW: g_pathFinder->CreateGraph( NUMCELLSX, NUMCELLSY ); SendMessage( g_hwndToolbar, TB_CHECKBUTTON, (WPARAM)currentSearchButton, (LPARAM)false ); break; case IDM_VIEW_GRAPH: if(GetMenuState(GetMenu(hwnd), IDM_VIEW_GRAPH, MFS_CHECKED) && MF_CHECKED){ ChangeMenuState( hwnd, IDM_VIEW_GRAPH, MFS_UNCHECKED ); g_pathFinder->SwitchGraphOff(); } else{ ChangeMenuState( hwnd, IDM_VIEW_GRAPH, MFS_CHECKED ); g_pathFinder->SwitchGraphOn(); } break; case IDM_VIEW_TILES: if(GetMenuState(GetMenu(hwnd), IDM_VIEW_TILES, MFS_CHECKED) && MF_CHECKED){ ChangeMenuState( hwnd, IDM_VIEW_TILES, MFS_UNCHECKED ); g_pathFinder->SwitchTilesOff(); } else{ ChangeMenuState( hwnd, IDM_VIEW_TILES, MFS_CHECKED ); g_pathFinder->SwitchTilesOn(); } break; } // switch RedrawWindowRect( hwnd, false, rectClientWindow ); } case WM_PAINT:{ PAINTSTRUCT ps; BeginPaint(hwnd, &ps); BitBlt( hdcBackBuffer, 0, 0, cxClient, cyClient, NULL, NULL, NULL, WHITENESS ); wpgdi->StartDrawing(hdcBackBuffer); g_pathFinder->Render(); wpgdi->StopDrawing(hdcBackBuffer); BitBlt( ps.hdc, 0, 0, cxClient, cyClient, hdcBackBuffer, 0, 0, SRCCOPY ); EndPaint(hwnd, &ps); } break; case WM_SIZE:{ cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); SelectObject(hdcBackBuffer, hOldBitmap); DeleteObject(hBitmap); HDC hdc = GetDC(hwnd); hBitmap = CreateCompatibleBitmap( hdc, rectClientWindow.right, rectClientWindow.bottom ); ReleaseDC(hwnd, hdc); SelectObject(hdcBackBuffer, hBitmap); } break; case WM_DESTROY:{ SelectObject(hdcBackBuffer, hOldBitmap); DeleteDC(hdcBackBuffer); DeleteObject(hBitmap); DeleteObject(hOldBitmap); PostQuitMessage(0); } break; } // end switch return DefWindowProc( hwnd, msg, wParam, lParam ); }