osxdialog.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 615 行 · 第 1/2 页
CPP
615 行
setBounds( &oldBounds ); setText( oldCaption ); } } if ( isWindowSheet_ ) { if ( visible ) { ShowSheetWindow( windowRef_, sheetParent_ ); ActivateWindow( windowRef_, TRUE ); } else { HideSheetWindow( windowRef_ ); } } else { OSXWindow::setVisible( visible ); if ( visible ) { ActivateWindow( windowRef_, TRUE ); repaint(NULL, false); } }}void OSXDialog::close(){ OSXWindow::close(); }void OSXDialog::showMessage( const String& message, const String& caption ){ DialogItemIndex itemIndex; CFTextString msg; msg = message; CreateStandardAlert( kAlertPlainAlert, msg, NULL, NULL, &dialogRef_ ); windowRef_ = GetDialogWindow(dialogRef_); setText( caption ); RunStandardAlert (dialogRef_, NULL, &itemIndex); dialogRef_ = NULL;}UIToolkit::ModalReturnType OSXDialog::showMessage( const String& message, const String& caption, const long& messageButtons, const Dialog::MessageStyle& messageStyle ){ UIToolkit::ModalReturnType result = UIToolkit::mrNone; DialogItemIndex itemIndex; CFTextString msg; msg = message; AlertStdCFStringAlertParamRec alertParams; AlertType alertType = kAlertPlainAlert; GetStandardAlertDefaultParams(&alertParams,kStdCFStringAlertVersionOne); switch ( messageStyle ){ case Dialog::msDefault: { } break; case Dialog::msError: { alertType = kAlertStopAlert; } break; case Dialog::msInfo: { alertType = kAlertNoteAlert; } break; case Dialog::msWarning: { alertType = kAlertCautionAlert; } break; } if ( messageButtons & Dialog::mbOK ) { alertParams.defaultText=(CFStringRef)kAlertDefaultOKText; alertParams.defaultButton=kAlertStdAlertOKButton; } else if ( messageButtons & Dialog::mbOKCancel ) { alertParams.cancelText = (CFStringRef)kAlertDefaultCancelText; alertParams.cancelButton = kAlertStdAlertCancelButton; } else if ( messageButtons & Dialog::mbYesNo ) { alertParams.defaultText = CFSTR("Yes"); alertParams.cancelText = CFSTR("No"); alertParams.cancelButton = kAlertStdAlertOtherButton; } else if ( messageButtons & Dialog::mbYesNoCancel ) { alertParams.defaultText = CFSTR("Yes"); alertParams.cancelText = CFSTR("No"); alertParams.cancelButton = kAlertStdAlertOtherButton; alertParams.otherText = CFSTR("Cancel"); } else if ( messageButtons & Dialog::mbRetryCancel ) { alertParams.defaultText = CFSTR("Retry"); alertParams.cancelText = CFSTR("Cancel"); alertParams.cancelButton = kAlertStdAlertOtherButton; } else if ( messageButtons & Dialog::mbAbortRetryIgnore ) { alertParams.defaultText = CFSTR("Abort"); alertParams.cancelText = CFSTR("Retry"); alertParams.cancelButton = kAlertStdAlertOtherButton; alertParams.otherText = CFSTR("Ignore"); } if ( messageButtons & Dialog::mbHelp ) { } CreateStandardAlert( alertType, msg, NULL, &alertParams, &dialogRef_ ); windowRef_ = GetDialogWindow(dialogRef_); setText( caption ); RunStandardAlert (dialogRef_, NULL, &itemIndex); if ( messageButtons & Dialog::mbOK ) { if ( itemIndex == 1 ) { result = UIToolkit::mrOK; } else { result = UIToolkit::mrCancel; } } else if ( messageButtons & Dialog::mbOKCancel ) { if ( itemIndex == 1 ) { result = UIToolkit::mrOK; } else if ( itemIndex == 2 ) { result = UIToolkit::mrCancel; } } else if ( messageButtons & Dialog::mbYesNo ) { if ( itemIndex == 1 ) { result = UIToolkit::mrYes; } else if ( itemIndex == 2 ) { result = UIToolkit::mrNo; } } else if ( messageButtons & Dialog::mbYesNoCancel ) { if ( itemIndex == 1 ) { result = UIToolkit::mrYes; } else if ( itemIndex == 2 ) { result = UIToolkit::mrNo; } else if ( itemIndex == 3 ) { result = UIToolkit::mrCancel; } } else if ( messageButtons & Dialog::mbRetryCancel ) { if ( itemIndex == 1 ) { result = UIToolkit::mrRetry; } else if ( itemIndex == 2 ) { result = UIToolkit::mrCancel; } } else if ( messageButtons & Dialog::mbAbortRetryIgnore ) { if ( itemIndex == 1 ) { result = UIToolkit::mrAbort; } else if ( itemIndex == 2 ) { result = UIToolkit::mrRetry; } else if ( itemIndex == 3 ) { result = UIToolkit::mrIgnore; } } dialogRef_ = NULL; return result;}void OSXDialog::init(){}OSStatus OSXDialog::handleOSXEvent( EventHandlerCallRef nextHandler, EventRef theEvent ){ UInt32 whatHappened = GetEventKind (theEvent); switch ( GetEventClass( theEvent ) ) { case kEventClassWindow : { switch( whatHappened ) { case kEventWindowActivated : { printf( "\n\n\t!!!!!!\tOSXDialog kEventWindowActivated\t!!!!!\n\n\n" ); printf( "\tActive frame: %p, dialog: %p\n\n", Frame::getActiveFrame(), control_ ); return OSXWindow::handleOSXEvent( nextHandler, theEvent ); } break; case kEventWindowClose : { OSStatus result = noErr;//::CallNextEventHandler( nextHandler, theEvent ); VCF::Dialog* dlg = (VCF::Dialog*)getControl(); if ( dlg->allowClose() ) { VCF::WindowEvent event( getControl(), WINDOW_EVENT_CLOSE ); dlg->FrameClose.fireEvent( &event ); if ( dlg->isModal() ){ if ( isWindowSheet_ ) { HideSheetWindow( windowRef_ ); } result = ::CallNextEventHandler( nextHandler, theEvent ); //EventLoopRef currentLoop = GetCurrentEventLoop(); QuitAppModalLoopForWindow( windowRef_ ); } else if ( dlg->isSheetModal() ) { if ( isWindowSheet_ ) { HideSheetWindow( windowRef_ ); } result = ::CallNextEventHandler( nextHandler, theEvent ); } else { result = ::CallNextEventHandler( nextHandler, theEvent ); } } else { result = noErr; } return result; } break; } } } return OSXWindow::handleOSXEvent( nextHandler, theEvent );}/***CVS Log info*$Log$*Revision 1.4 2006/04/07 02:35:24 ddiego*initial checkin of merge from 0.6.9 dev branch.**Revision 1.3.4.1 2005/11/10 04:43:27 ddiego*updated the osx build so that it*compiles again on xcode 1.5. this applies to the foundationkit and graphicskit.**Revision 1.3 2004/12/01 04:31:37 ddiego*merged over devmain-0-6-6 code. Marcello did a kick ass job*of fixing a nasty bug (1074768VCF application slows down modal dialogs.)*that he found. Many, many thanks for this Marcello.**Revision 1.2.2.5 2004/10/30 20:27:26 ddiego*added osx color dialog and browse for folder dialog**Revision 1.2.2.4 2004/10/28 03:34:16 ddiego*more dialog updates for osx**Revision 1.2.2.3 2004/10/25 03:23:57 ddiego*and even more dialog updates. Introduced smore docs to the dialog class and added a new showXXX function.**Revision 1.2.2.2 2004/10/23 18:10:43 ddiego*mac osx updates, some more fixes for dialog code and for command button peer functionality**Revision 1.2.2.1 2004/10/18 03:10:30 ddiego*osx updates - add initial command button support, fixed rpoblem in mouse handling, and added dialog support.**Revision 1.2 2004/08/07 02:49:08 ddiego*merged in the devmain-0-6-5 branch to stable**Revision 1.1.2.4 2004/06/06 07:05:30 marcelloptr*changed macros, text reformatting, copyright sections**/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?