//----------------------------------------------------------------------------- // Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. // // MUI.cpp // // Description: Container class for custom UI windows for use in Maya. // // Modification History: // + Created Sep 30, 2001 -- bkusy //----------------------------------------------------------------------------- //---------------------------------------- // System Includes //---------------------------------------- #include //---------------------------------------- // Project Includes //---------------------------------------- #include "stdafx.h" #include "MUI.h" #include "util.h" #include "mayahandles.h" //---------------------------------------- // Forward References //---------------------------------------- //---------------------------------------- // Constants, Typedefs and Statics //---------------------------------------- //----------------------------------------------------------------------------- // c o n f i r m // // Synopsis: Present a modal confirmation box to the user. // // Parameters: message - the message to display in the box. // // Returns: NOTHING // // Constraints: NONE // //----------------------------------------------------------------------------- int MUI::ConfirmDialog( const char* message ) { UINT style = MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1 | MB_TASKMODAL ; int button = MessageBox( 0, message, "MUI Confirmation", style ); int result = MUI::YES; if ( IDNO == button ) result = MUI::NO; if ( IDCANCEL == button ) result = MUI::CANCEL; return result; } //----------------------------------------------------------------------------- // E r r o r D i a l o g // // Synopsis: Present a modal error dialog box to the user. // // Parameters: message - the message to display in the box. // // Returns: NOTHING // // Constraints: NONE // //----------------------------------------------------------------------------- void MUI::ErrorDialog( const char* message ) { UINT style = MB_OK | MB_ICONERROR | MB_TASKMODAL; MessageBox( 0, message, "MUI Error", style ); } //----------------------------------------------------------------------------- // E r r o r D i a l o g // // Synopsis: Present a modal error dialog box to the user. // // Parameters: message - the message to display in the box. // // Returns: NOTHING // // Constraints: NONE // //----------------------------------------------------------------------------- void MUI::InfoDialog( const char* message ) { UINT style = MB_OK | MB_ICONINFORMATION | MB_TASKMODAL; MessageBox( 0, message, "MUI Info", style ); } //----------------------------------------------------------------------------- // F i l e D i a l o g // // Synopsis: Present the user with a file browser window to select a file for // open or save. // // Parameters: filePath - a reference parameter to receive the full // file path from the dialog. If not NULL on // input, the initial value is used as the // starting location for the dialog. // filePathSize - the maximum length of the filePath buffer. // dialogTitle - the caption to appear in the dialog title // bar. // extensionFilter - A filter specifiying the types of files that // are eligilble for selection. It must end // in "||" with all entries separated by "|". // Generally entries will be in pairs; the // first is a type description and the second // is the actual filter. e.g./ // "Raddle Data(*.rdl)|*.rdl|All Files(*.*)|*.*||". // defaultExtension - if not NULL, then the given extension will // automatically appended to an extensionless // entry in the Filename box. // broserType - OPEN | SAVE. Default is OPEN. // // Returns: true, if a filePath is set; false if the dialog is cancelled. // // Notes: The filePath will have "/" slashes and not "\" slashes on return. // //----------------------------------------------------------------------------- bool MUI::FileDialog( char* filePath, int filePathSize, const char* windowTitle, const char* extensionFilter, const char* defaultExtension, int browserType ) { // // We do need the file path to have windows backslashes. // util_replaceCharacters('/', '\\', filePath ); bool isOk = false; BOOL doOpen; DWORD flags = 0; switch ( browserType ) { case MUI::SET: { doOpen = TRUE; flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; break; } case MUI::SAVE: { doOpen = FALSE; flags = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; break; } default: // MUI::OPEN { doOpen = TRUE; flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; break; } } // // Set the AFX handle to maya's application instance handle. // HINSTANCE handle = static_cast(MayaHandles::GetHInstance()); AfxSetResourceHandle( handle ); // // Create the dialog // CFileDialog fileDialog( doOpen, defaultExtension, filePath, flags, extensionFilter, NULL ); if ( windowTitle ) fileDialog.m_ofn.lpstrTitle = windowTitle; // // Show the dialog and wait for a response. // int result = fileDialog.DoModal(); if ( IDOK == result ) { const char* filename = LPCSTR( fileDialog.GetPathName() ); strncpy( filePath, LPCSTR( fileDialog.GetPathName() ), filePathSize ); util_replaceCharacters('\\', '/', filePath ); isOk = true; } return isOk; } //============================================================================= // MUI::PopupDialogue //============================================================================= // Description: Comment // // Parameters: ( int id, DLGPROC callBack ) // // Return: void // //============================================================================= void MUI::PopupDialogue( int id, DLGPROC callBack ) { HINSTANCE handle = static_cast(MayaHandles::GetHInstance()); AfxSetResourceHandle( handle ); HWND hWnd = static_cast(MayaHandles::GetHWND()); DialogBox( handle, MAKEINTRESOURCE(id), hWnd, callBack ); }