📄 utils.cpp
字号:
GetAvailableWindowPositioningBounds( GetMainDevice() , &r ) ;
if ( x )
*x = r.left ;
if ( y )
*y = r.top ;
if ( width )
*width = r.right - r.left ;
if ( height )
*height = r.bottom - r.top ;
#else
BitMap screenBits;
GetQDGlobalsScreenBits( &screenBits );
if (x) *x = 0;
if (y) *y = 0;
if (width != NULL) {
*width = screenBits.bounds.right - screenBits.bounds.left ;
}
if (height != NULL) {
*height = screenBits.bounds.bottom - screenBits.bounds.top ;
}
SInt16 mheight ;
#if TARGET_CARBON
GetThemeMenuBarHeight( &mheight ) ;
#else
mheight = LMGetMBarHeight() ;
#endif
if (height != NULL) {
*height -= mheight ;
}
if (y)
*y = mheight ;
#endif
}
wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
{
return wxGenericFindWindowAtPoint(pt);
}
#endif // wxUSE_GUI
#if wxUSE_BASE
wxString wxGetOsDescription()
{
#ifdef WXWIN_OS_DESCRIPTION
// use configure generated description if available
return wxString(wxT("MacOS (")) + wxT(WXWIN_OS_DESCRIPTION) + wxString(wxT(")"));
#else
return wxT("MacOS") ; //TODO:define further
#endif
}
#ifndef __DARWIN__
wxChar *wxGetUserHome (const wxString& user)
{
// TODO
return NULL;
}
bool wxGetDiskSpace(const wxString& path, wxDiskspaceSize_t *pTotal, wxDiskspaceSize_t *pFree)
{
if ( path.empty() )
return false;
wxString p = path ;
if (p[0u] == ':' ) {
p = wxGetCwd() + p ;
}
int pos = p.Find(':') ;
if ( pos != wxNOT_FOUND ) {
p = p.Mid(1,pos) ;
}
p = p + wxT(":") ;
Str255 volumeName ;
XVolumeParam pb ;
wxMacStringToPascal( p , volumeName ) ;
OSErr err = XGetVolumeInfoNoName( volumeName , 0 , &pb ) ;
if ( err == noErr ) {
if ( pTotal ) {
(*pTotal) = wxDiskspaceSize_t( pb.ioVTotalBytes ) ;
}
if ( pFree ) {
(*pFree) = wxDiskspaceSize_t( pb.ioVFreeBytes ) ;
}
}
return err == noErr ;
}
#endif // !__DARWIN__
//---------------------------------------------------------------------------
// wxMac Specific utility functions
//---------------------------------------------------------------------------
void wxMacStringToPascal( const wxString&from , StringPtr to )
{
wxCharBuffer buf = from.mb_str( wxConvLocal ) ;
int len = strlen(buf) ;
if ( len > 255 )
len = 255 ;
to[0] = len ;
memcpy( (char*) &to[1] , buf , len ) ;
}
wxString wxMacMakeStringFromPascal( ConstStringPtr from )
{
return wxString( (char*) &from[1] , wxConvLocal , from[0] ) ;
}
wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding)
{
TextEncodingBase enc = 0 ;
if ( encoding == wxFONTENCODING_DEFAULT )
{
#if wxUSE_GUI
encoding = wxFont::GetDefaultEncoding() ;
#else
encoding = wxLocale::GetSystemEncoding() ;
#endif
}
switch( encoding)
{
case wxFONTENCODING_ISO8859_1 :
enc = kTextEncodingISOLatin1 ;
break ;
case wxFONTENCODING_ISO8859_2 :
enc = kTextEncodingISOLatin2;
break ;
case wxFONTENCODING_ISO8859_3 :
enc = kTextEncodingISOLatin3 ;
break ;
case wxFONTENCODING_ISO8859_4 :
enc = kTextEncodingISOLatin4;
break ;
case wxFONTENCODING_ISO8859_5 :
enc = kTextEncodingISOLatinCyrillic;
break ;
case wxFONTENCODING_ISO8859_6 :
enc = kTextEncodingISOLatinArabic;
break ;
case wxFONTENCODING_ISO8859_7 :
enc = kTextEncodingISOLatinGreek;
break ;
case wxFONTENCODING_ISO8859_8 :
enc = kTextEncodingISOLatinHebrew;
break ;
case wxFONTENCODING_ISO8859_9 :
enc = kTextEncodingISOLatin5;
break ;
case wxFONTENCODING_ISO8859_10 :
enc = kTextEncodingISOLatin6;
break ;
case wxFONTENCODING_ISO8859_13 :
enc = kTextEncodingISOLatin7;
break ;
case wxFONTENCODING_ISO8859_14 :
enc = kTextEncodingISOLatin8;
break ;
case wxFONTENCODING_ISO8859_15 :
enc = kTextEncodingISOLatin9;
break ;
case wxFONTENCODING_KOI8 :
enc = kTextEncodingKOI8_R;
break ;
case wxFONTENCODING_ALTERNATIVE : // MS-DOS CP866
enc = kTextEncodingDOSRussian;
break ;
/*
case wxFONTENCODING_BULGARIAN :
enc = ;
break ;
*/
case wxFONTENCODING_CP437 :
enc =kTextEncodingDOSLatinUS ;
break ;
case wxFONTENCODING_CP850 :
enc = kTextEncodingDOSLatin1;
break ;
case wxFONTENCODING_CP852 :
enc = kTextEncodingDOSLatin2;
break ;
case wxFONTENCODING_CP855 :
enc = kTextEncodingDOSCyrillic;
break ;
case wxFONTENCODING_CP866 :
enc =kTextEncodingDOSRussian ;
break ;
case wxFONTENCODING_CP874 :
enc = kTextEncodingDOSThai;
break ;
case wxFONTENCODING_CP932 :
enc = kTextEncodingDOSJapanese;
break ;
case wxFONTENCODING_CP936 :
enc =kTextEncodingDOSChineseSimplif ;
break ;
case wxFONTENCODING_CP949 :
enc = kTextEncodingDOSKorean;
break ;
case wxFONTENCODING_CP950 :
enc = kTextEncodingDOSChineseTrad;
break ;
case wxFONTENCODING_CP1250 :
enc = kTextEncodingWindowsLatin2;
break ;
case wxFONTENCODING_CP1251 :
enc =kTextEncodingWindowsCyrillic ;
break ;
case wxFONTENCODING_CP1252 :
enc =kTextEncodingWindowsLatin1 ;
break ;
case wxFONTENCODING_CP1253 :
enc = kTextEncodingWindowsGreek;
break ;
case wxFONTENCODING_CP1254 :
enc = kTextEncodingWindowsLatin5;
break ;
case wxFONTENCODING_CP1255 :
enc =kTextEncodingWindowsHebrew ;
break ;
case wxFONTENCODING_CP1256 :
enc =kTextEncodingWindowsArabic ;
break ;
case wxFONTENCODING_CP1257 :
enc = kTextEncodingWindowsBalticRim;
break ;
case wxFONTENCODING_UTF7 :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicodeUTF7Format) ;
break ;
case wxFONTENCODING_UTF8 :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicodeUTF8Format) ;
break ;
case wxFONTENCODING_EUC_JP :
enc = kTextEncodingEUC_JP;
break ;
case wxFONTENCODING_UTF16BE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode16BitFormat) ;
break ;
case wxFONTENCODING_UTF16LE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode16BitFormat) ;
break ;
case wxFONTENCODING_UTF32BE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode32BitFormat) ;
break ;
case wxFONTENCODING_UTF32LE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode32BitFormat) ;
break ;
case wxFONTENCODING_MACROMAN :
enc = kTextEncodingMacRoman ;
break ;
case wxFONTENCODING_MACJAPANESE :
enc = kTextEncodingMacJapanese ;
break ;
case wxFONTENCODING_MACCHINESETRAD :
enc = kTextEncodingMacChineseTrad ;
break ;
case wxFONTENCODING_MACKOREAN :
enc = kTextEncodingMacKorean ;
break ;
case wxFONTENCODING_MACARABIC :
enc = kTextEncodingMacArabic ;
break ;
case wxFONTENCODING_MACHEBREW :
enc = kTextEncodingMacHebrew ;
break ;
case wxFONTENCODING_MACGREEK :
enc = kTextEncodingMacGreek ;
break ;
case wxFONTENCODING_MACCYRILLIC :
enc = kTextEncodingMacCyrillic ;
break ;
case wxFONTENCODING_MACDEVANAGARI :
enc = kTextEncodingMacDevanagari ;
break ;
case wxFONTENCODING_MACGURMUKHI :
enc = kTextEncodingMacGurmukhi ;
break ;
case wxFONTENCODING_MACGUJARATI :
enc = kTextEncodingMacGujarati ;
break ;
case wxFONTENCODING_MACORIYA :
enc = kTextEncodingMacOriya ;
break ;
case wxFONTENCODING_MACBENGALI :
enc = kTextEncodingMacBengali ;
break ;
case wxFONTENCODING_MACTAMIL :
enc = kTextEncodingMacTamil ;
break ;
case wxFONTENCODING_MACTELUGU :
enc = kTextEncodingMacTelugu ;
break ;
case wxFONTENCODING_MACKANNADA :
enc = kTextEncodingMacKannada ;
break ;
case wxFONTENCODING_MACMALAJALAM :
enc = kTextEncodingMacMalayalam ;
break ;
case wxFONTENCODING_MACSINHALESE :
enc = kTextEncodingMacSinhalese ;
break ;
case wxFONTENCODING_MACBURMESE :
enc = kTextEncodingMacBurmese ;
break ;
case wxFONTENCODING_MACKHMER :
enc = kTextEncodingMacKhmer ;
break ;
case wxFONTENCODING_MACTHAI :
enc = kTextEncodingMacThai ;
break ;
case wxFONTENCODING_MACLAOTIAN :
enc = kTextEncodingMacLaotian ;
break ;
case wxFONTENCODING_MACGEORGIAN :
enc = kTextEncodingMacGeorgian ;
break ;
case wxFONTENCODING_MACARMENIAN :
enc = kTextEncodingMacArmenian ;
break ;
case wxFONTENCODING_MACCHINESESIMP :
enc = kTextEncodingMacChineseSimp ;
break ;
case wxFONTENCODING_MACTIBETAN :
enc = kTextEncodingMacTibetan ;
break ;
case wxFONTENCODING_MACMONGOLIAN :
enc = kTextEncodingMacMongolian ;
break ;
case wxFONTENCODING_MACETHIOPIC :
enc = kTextEncodingMacEthiopic ;
break ;
case wxFONTENCODING_MACCENTRALEUR :
enc = kTextEncodingMacCentralEurRoman ;
break ;
case wxFONTENCODING_MACVIATNAMESE :
enc = kTextEncodingMacVietnamese ;
break ;
case wxFONTENCODING_MACARABICEXT :
enc = kTextEncodingMacExtArabic ;
break ;
case wxFONTENCODING_MACSYMBOL :
enc = kTextEncodingMacSymbol ;
break ;
case wxFONTENCODING_MACDINGBATS :
enc = kTextEncodingMacDingbats ;
break ;
case wxFONTENCODING_MACTURKISH :
enc = kTextEncodingMacTurkish ;
break ;
case wxFONTENCODING_MACCROATIAN :
enc = kTextEncodingMacCroatian ;
break ;
case wxFONTENCODING_MACICELANDIC :
enc = kTextEncodingMacIcelandic ;
break ;
case wxFONTENCODING_MACROMANIAN :
enc = kTextEncodingMacRomanian ;
break ;
case wxFONTENCODING_MACCELTIC :
enc = kTextEncodingMacCeltic ;
break ;
case wxFONTENCODING_MACGAELIC :
enc = kTextEncodingMacGaelic ;
break ;
case wxFONTENCODING_MACKEYBOARD :
enc = kTextEncodingMacKeyboardGlyphs ;
break ;
default :
// to make gcc happy
break ;
} ;
return enc ;
}
wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding)
{
wxFontEncoding enc = wxFONTENCODING_DEFAULT ;
switch( encoding)
{
case kTextEncodingISOLatin1 :
enc = wxFONTENCODING_ISO8859_1 ;
break ;
case kTextEncodingISOLatin2 :
enc = wxFONTENCODING_ISO8859_2;
break ;
case kTextEncodingISOLatin3 :
enc = wxFONTENCODING_ISO8859_3 ;
break ;
case kTextEncodingISOLatin4 :
enc = wxFONTENCODING_ISO8859_4;
break ;
case kTextEncodingISOLatinCyrillic :
enc = wxFONTENCODING_ISO8859_5;
break ;
case kTextEncodingISOLatinArabic :
enc = wxFONTENCODING_ISO8859_6;
break ;
case kTextEncodingISOLatinGreek :
enc = wxFONTENCODING_ISO8859_7;
break ;
case kTextEncodingISOLatinHebrew :
enc = wxFONTENCODING_ISO8859_8;
break ;
case kTextEncodingISOLatin5 :
enc = wxFONTENCODING_ISO8859_9;
break ;
case kTextEncodingISOLatin6 :
enc = wxFONTENCODING_ISO8859_10;
break ;
case kTextEncodingISOLatin7 :
enc = wxFONTENCODING_ISO8859_13;
break ;
case kTextEncodingISOLatin8 :
enc = wxFONTENCODING_ISO8859_14;
break ;
case kTextEncodingISOLatin9 :
enc =wxFONTENCODING_ISO8859_15 ;
break ;
case kTextEncodingKOI8_R :
enc = wxFONTENCODING_KOI8;
break ;
/*
case :
enc = wxFONTENCODING_BULGARIAN;
break ;
*/
case kTextEncodingDOSLatinUS :
enc = wxFONTENCODING_CP437;
break ;
case kTextEncodingDOSLatin1 :
enc = wxFONTENCODING_CP850;
break ;
case kTextEncodingDOSLatin2 :
enc =wxFONTENCODING_CP852 ;
break ;
case kTextEncodingDOSCyrillic :
enc = wxFONTENCODING_CP855;
break ;
case kTextEncodingDOSRussian :
enc = wxFONTENCODING_CP866;
break ;
case kTextEncodingDOSThai :
enc =wxFONTENCODING_CP874 ;
break ;
case kTextEncodingDOSJapanese :
enc = wxFONTENCODING_CP932;
break ;
case kTextEncodingDOSChineseSimplif :
enc = wxFONTENCODING_CP936;
break ;
case kTextEncodingDOSKorean :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -