Example #1
0
void EditorUI::menuFileSaveAs() 
{
	static std::string fn;
	if (FileSaveDlg("Save model file:", FileChooserPattern, fn))
	{
		filename=fn;
		Model::Save(model,fn);
		UpdateTitle();
	}
}
Example #2
0
void TexGroupUI::SaveGroup()
{
	static std::string fn;
	if (!current)
		return;

	if (FileSaveDlg ("Save file:", GroupConfigPattern,fn)) {
		CfgList *cfg=texGroupHandler->MakeConfig (current);
		CfgWriter writer(fn.c_str());
		if (writer.IsFailed()) {
			fltk::message ("Failed to write %s\n", fn.c_str());
			return;
		}

		cfg->Write(writer,true);
	}
}
Example #3
0
void EditorUI::menuObjectSave()
{
	MdlObject* sel = GetSingleSel();
	if (!sel) return;
	static std::string fn;
	char fnl [256];
	strncpy (fnl, fn.c_str(),sizeof(fnl));
	strncpy (fltk::filename_name (fnl), sel->name.c_str(), sizeof(fnl));
	fn = fnl;
	if (FileSaveDlg("Save object:", FileChooserPattern, fn))
	{
		Model *submdl = new Model;
		submdl->root = sel;
		Model::Save (submdl,fn);
		submdl->root = 0;
		delete submdl;
	}
}
Example #4
0
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;
}
Example #5
0
void EditorUI::menuMappingExportUV ()
{
	static std::string fn;
	if (FileSaveDlg("Save merged model for UV mapping:", FileChooserPattern, fn))
		model->ExportUVMesh (fn.c_str());
}
/*------------------------------------------------------------------------------------------------------------------
-- 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;
    }
}
Example #7
0
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 );		      
}