osxuitoolkit.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 2,694 行 · 第 1/5 页
CPP
2,694 行
//OSXUIToolkit.cpp/*Copyright 2000-2004 The VCF Project.Please see License.txt in the top level directorywhere you installed the VCF.*/#include "vcf/ApplicationKit/ApplicationKit.h"#include "vcf/ApplicationKit/ApplicationKitPrivate.h"#include "vcf/ApplicationKit/OSXDesktopPeer.h"#include "vcf/ApplicationKit/OSXApplicationPeer.h"#include "vcf/ApplicationKit/OSXControlContextPeer.h"#include "vcf/ApplicationKit/OSXCursorPeer.h"#include "vcf/ApplicationKit/OSXWindow.h"#include "vcf/ApplicationKit/OSXControl.h"#include "vcf/ApplicationKit/OSXLightweightControl.h"#include "vcf/ApplicationKit/OSXDialog.h"#include "vcf/ApplicationKit/OSXButton.h"#include "vcf/ApplicationKit/OSXColorDialog.h"#include "vcf/ApplicationKit/OSXFolderBrowseDialog.h"#include "vcf/ApplicationKit/OSXFileOpenDialog.h"#include "vcf/ApplicationKit/OSXFileSaveDialog.h"#include "vcf/ApplicationKit/OSXMenuBar.h"#include "vcf/ApplicationKit/OSXMenuItem.h"#include "vcf/ApplicationKit/OSXDropTargetPeer.h"#include "vcf/ApplicationKit/OSXDragDropPeer.h"#include "vcf/ApplicationKit/ListViewControl.h"#include "vcf/ApplicationKit/OSXListview.h"#include "vcf/ApplicationKit/OSXPopupMenu.h"#include "vcf/ApplicationKit/OSXTree.h"#include "vcf/ApplicationKit/MenuManagerPeer.h"#include "vcf/ApplicationKit/OSXMenuManagerPeer.h"#include "vcf/ApplicationKit/OSXTextPeer.h"#include "vcf/ApplicationKit/OSXTextEditPeer.h"#include "vcf/ApplicationKit/Toolbar.h"#include "vcf/ApplicationKit/OSXToolbar.h"#include "vcf/ApplicationKit/OSXScrollPeer.h"#include "vcf/FoundationKit/ResourceBundlePeer.h"#include "vcf/GraphicsKit/GraphicsResourceBundlePeer.h"#include "vcf/ApplicationKit/OSXAppResourceBundle.h"#include "vcf/FoundationKit/ResourceBundlePeer.h"#include "vcf/GraphicsKit/GraphicsResourceBundlePeer.h"#include "vcf/ApplicationKit/OSXAppResourceBundle.h"#define kSleepTime 32767VCF::ulong32 OSXUIUtils::translateButtonMask( EventMouseButton button ){ VCF::ulong32 result = 0; if ( button == kEventMouseButtonPrimary ) { result = VCF::mbmLeftButton; } else if ( button == kEventMouseButtonSecondary ) { result = VCF::mbmRightButton; } else if ( button == kEventMouseButtonTertiary ) { result = VCF::mbmMiddleButton; } return result;}VCF::ulong32 OSXUIUtils::translateKeyMask( UInt32 keyMod ){ VCF::ulong32 result = 0; if ( keyMod & shiftKey ) { result |= VCF::kmShift; } if ( keyMod & cmdKey ) { result |= VCF::kmAlt; } if ( keyMod & controlKey ) { result |= VCF::kmCtrl; } return result;}namespace VCF {VirtualKeyCode translateOSXKeyToVirtKeyCode( VCFChar ch, UInt32 keyCode, UInt32 mod ){ VirtualKeyCode result = vkUndefined; switch ( ch ) { case kHomeCharCode : { result = vkHome; } break; case kEnterCharCode : { result = vkReturn; } break; case kEndCharCode : { result = vkEnd; } break; case kHelpCharCode : { result = vkF1; } break; case kBackspaceCharCode : { result = vkBackSpace; } break; case kTabCharCode : { result = vkTab; } break; case kPageUpCharCode : { result = vkPgUp; } break; case kPageDownCharCode : { result = vkPgDown; } break; case kReturnCharCode : { result = vkReturn; } break; case kEscapeCharCode : { result = vkEscape; } break; case kLeftArrowCharCode : { result = vkLeftArrow; } break; case kRightArrowCharCode : { result = vkRightArrow; } break; case kUpArrowCharCode : { result = vkUpArrow; } break; case kDownArrowCharCode : { result = vkDownArrow; } break; case kDeleteCharCode : { result = vkDelete; } break; case kSpaceCharCode : { result = vkSpaceBar; } break; case kFunctionKeyCharCode : { switch( keyCode ) { case 0x7a : { result = vkF1; } break; case 0x78 : { result = vkF2; } break; case 0x63 : { result = vkF3; } break; case 0x76 : { result = vkF4; } break; case 0x60 : { result = vkF5; } break; case 0x61 : { result = vkF6; } break; case 0x62 : { result = vkF7; } break; case 0x64 : { result = vkF8; } break; case 0x65 : { result = vkF9; } break; case 0x6D : { result = vkF10; } break; case 0x67 : { result = vkF11; } break; case 0x6F : { result = vkF12; } break; /* case 0x69 : { result = vkF13; } break; case 0x6B : { result = vkF14; } break; case 0x71 : { result = vkF15; } break; */ } } } if ( result == vkUndefined ) { switch ( ch ) { case 'A': case 'a': { result = vkLetterA; } break; case 'B': case 'b': { result = vkLetterB; } break; case 'C': case 'c': { result = vkLetterC; } break; case 'D': case 'd': { result = vkLetterD; } break; case 'E': case 'e': { result = vkLetterE; } break; case 'F': case 'f': { result = vkLetterF; } break; case 'G': case 'g': { result = vkLetterG; } break; case 'H': case 'h': { result = vkLetterH; } break; case 'I': case 'i': { result = vkLetterI; } break; case 'J': case 'j': { result = vkLetterJ; } break; case 'K': case 'k': { result = vkLetterK; } break; case 'L': case 'l': { result = vkLetterL; } break; case 'M': case 'm': { result = vkLetterM; } break; case 'N': case 'n': { result = vkLetterN; } break; case 'O': case 'o': { result = vkLetterO; } break; case 'P': case 'p': { result = vkLetterP; } break; case 'Q': case 'q': { result = vkLetterQ; } break; case 'R': case 'r': { result = vkLetterR; } break; case 'S': case 's': { result = vkLetterS; } break; case 'T': case 't': { result = vkLetterT; } break; case 'U': case 'u': { result = vkLetterU; } break; case 'V': case 'v': { result = vkLetterV; } break; case 'W': case 'w': { result = vkLetterW; } break; case 'X': case 'x': { result = vkLetterX; } break; case 'Y': case 'y': { result = vkLetterY; } break; case 'Z': case 'z': { result = vkLetterZ; } break; } } return result;}//UIMetricsManager implementation for OSXclass OSXUIMetricsManager : public UIMetricsManager {public: OSXUIMetricsManager(){} virtual ~OSXUIMetricsManager(){} virtual VCF::Font getDefaultFontFor( const UIMetricsManager::FontType& type ) { VCF::Font result("Arial", 13); result.setColor( GraphicsToolkit::getSystemColor( SYSCOLOR_CAPTION_TEXT ) ); Str255 fontName; SInt16 fontSize = 0; Style fontStyle = 0; OSStatus err = noErr; switch ( type ) { case UIMetricsManager::ftMenuItemFont : { err = GetThemeFont( kThemeSystemFont, smSystemScript, fontName, &fontSize, &fontStyle ); if ( err != noErr ) { CFTextString name(fontName); result.setName( name ); result.setPointSize( fontSize ); result.setBold ( (fontStyle & bold) ? true : false ); result.setItalic ( (fontStyle & italic) ? true : false ); } } break; case UIMetricsManager::ftSelectedMenuItemFont : { err = GetThemeFont( kThemeSystemFont, smSystemScript, fontName, &fontSize, &fontStyle ); if ( err != noErr ) { CFTextString name(fontName); result.setName( name ); result.setPointSize( fontSize ); result.setBold ( (fontStyle & bold) ? true : false ); result.setItalic ( (fontStyle & italic) ? true : false ); result.setUnderlined ( (fontStyle & underline) ? true : false ); } } break; case UIMetricsManager::ftSystemFont : { err = GetThemeFont( kThemeSystemFont, smSystemScript, fontName, &fontSize, &fontStyle ); if ( err != noErr ) { CFTextString name(fontName); result.setName( name ); result.setPointSize( fontSize ); result.setBold ( (fontStyle & bold) ? true : false ); result.setItalic ( (fontStyle & italic) ? true : false ); result.setUnderlined ( (fontStyle & underline) ? true : false ); } } break; case UIMetricsManager::ftControlFont : { err = GetThemeFont( kThemeLabelFont, smSystemScript, fontName, &fontSize, &fontStyle ); if ( err != noErr ) { CFTextString name(fontName); result.setName( name ); result.setPointSize( fontSize ); result.setBold ( (fontStyle & bold) ? true : false ); result.setItalic ( (fontStyle & italic) ? true : false ); result.setUnderlined ( (fontStyle & underline) ? true : false ); } } break; case UIMetricsManager::ftMessageFont : { err = GetThemeFont( kThemeEmphasizedSystemFont, smSystemScript, fontName, &fontSize, &fontStyle ); if ( err != noErr ) { CFTextString name(fontName); result.setName( name ); result.setPointSize( fontSize ); result.setBold ( (fontStyle & bold) ? true : false ); result.setItalic ( (fontStyle & italic) ? true : false ); result.setUnderlined ( (fontStyle & underline) ? true : false ); } } break; case UIMetricsManager::ftToolTipFont : { err = GetThemeFont( kThemeSmallSystemFont, smSystemScript, fontName, &fontSize, &fontStyle ); if ( err != noErr ) { CFTextString name(fontName); result.setName( name ); result.setPointSize( fontSize ); result.setBold ( (fontStyle & bold) ? true : false ); result.setItalic ( (fontStyle & italic) ? true : false ); result.setUnderlined ( (fontStyle & underline) ? true : false ); } } break; } return result; } virtual double getDefaultHeightFor( const UIMetricsManager::HeightType& type ) { double result = 0.0; switch ( type ) { case UIMetricsManager::htLabelHeight : { result = 18; } break; case UIMetricsManager::htComboBoxHeight : { result = 20; } break; case UIMetricsManager::htListItemHeight : { result = 18; } break; case UIMetricsManager::htButtonHeight : { SInt32 val = 0; if ( noErr == GetThemeMetric( kThemeMetricPushButtonHeight, &val ) ) { result = val; } else { result = 20; } } break; case UIMetricsManager::htRadioBoxHeight : case UIMetricsManager::htCheckBoxHeight : { result = 18; } break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?