updated mac sources (CW 5.3 working , CW6 still having code gen problems)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9334 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2615,6 +2615,7 @@ AGAPortHelper::~AGAPortHelper()
|
||||
TextSize( size );
|
||||
TextFace( style );
|
||||
TextMode( mode );
|
||||
SetOrigin( 0 , 0 ) ;
|
||||
SetPort( port ) ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,28 +89,28 @@ wxString wxApp::s_macHelpMenuTitleName = "&Help" ;
|
||||
pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEODoc( event , reply) ;
|
||||
return wxTheApp->MacHandleAEODoc( (AppleEvent*) event , reply) ;
|
||||
}
|
||||
|
||||
pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEOApp( event , reply ) ;
|
||||
return wxTheApp->MacHandleAEOApp( (AppleEvent*) event , reply ) ;
|
||||
}
|
||||
|
||||
pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEPDoc( event , reply ) ;
|
||||
return wxTheApp->MacHandleAEPDoc( (AppleEvent*) event , reply ) ;
|
||||
}
|
||||
|
||||
pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEQuit( event , reply) ;
|
||||
return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEODoc(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
ProcessSerialNumber PSN ;
|
||||
PSN.highLongOfPSN = 0 ;
|
||||
@@ -119,17 +119,17 @@ OSErr wxApp::MacHandleAEODoc(AppleEvent *event , AppleEvent *reply)
|
||||
return noErr ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEPDoc(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEPDoc(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
return noErr ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEOApp(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEOApp(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
return noErr ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEQuit(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEQuit(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
wxWindow* win = GetTopWindow() ;
|
||||
if ( win )
|
||||
@@ -510,6 +510,7 @@ void wxApp::CleanUp()
|
||||
delete wxLog::SetActiveTarget(NULL);
|
||||
#endif // wxUSE_LOG
|
||||
|
||||
UMACleanupToolbox() ;
|
||||
if (s_macCursorRgn)
|
||||
::DisposeRgn(s_macCursorRgn);
|
||||
|
||||
@@ -1044,14 +1045,16 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
|
||||
int newHeight = HiWord(growResult);
|
||||
int oldWidth, oldHeight;
|
||||
|
||||
win->GetSize(&oldWidth, &oldHeight);
|
||||
if (newWidth == 0)
|
||||
newWidth = oldWidth;
|
||||
if (newHeight == 0)
|
||||
newHeight = oldHeight;
|
||||
|
||||
if (win)
|
||||
{
|
||||
win->GetSize(&oldWidth, &oldHeight);
|
||||
if (newWidth == 0)
|
||||
newWidth = oldWidth;
|
||||
if (newHeight == 0)
|
||||
newHeight = oldHeight;
|
||||
win->SetSize( -1, -1, newWidth, newHeight, wxSIZE_USE_EXISTING);
|
||||
}
|
||||
}
|
||||
s_lastMouseDown = 0;
|
||||
break;
|
||||
@@ -1253,7 +1256,10 @@ void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
|
||||
|
||||
UInt32 menuresult = UMAMenuEvent(ev) ;
|
||||
if ( HiWord( menuresult ) )
|
||||
{
|
||||
if ( !s_macIsInModalLoop )
|
||||
MacHandleMenuSelect( HiWord( menuresult ) , LoWord( menuresult ) ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
short keycode ;
|
||||
@@ -1373,6 +1379,14 @@ void wxApp::MacHandleUpdateEvent( EventRecord *ev )
|
||||
{
|
||||
win->MacUpdate( ev ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// since there is no way of telling this foreign window to update itself
|
||||
// we have to invalidate the update region otherwise we keep getting the same
|
||||
// event over and over again
|
||||
BeginUpdate( window ) ;
|
||||
EndUpdate( window ) ;
|
||||
}
|
||||
}
|
||||
|
||||
void wxApp::MacHandleDiskEvent( EventRecord *ev )
|
||||
@@ -1490,9 +1504,12 @@ void wxApp::MacHandleOSEvent( EventRecord *ev )
|
||||
|
||||
switch (windowPart)
|
||||
{
|
||||
// fixes for setting the cursor back from dominic mazzoni
|
||||
case inMenuBar :
|
||||
UMAShowArrowCursor();
|
||||
break ;
|
||||
case inSysWindow :
|
||||
UMAShowArrowCursor();
|
||||
break ;
|
||||
default:
|
||||
{
|
||||
@@ -1502,6 +1519,9 @@ void wxApp::MacHandleOSEvent( EventRecord *ev )
|
||||
wxWindow* win = wxFindWinFromMacWindow( window ) ;
|
||||
if ( win )
|
||||
win->MacMouseMoved( ev , windowPart ) ;
|
||||
else
|
||||
UMAShowArrowCursor();
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2615,6 +2615,7 @@ AGAPortHelper::~AGAPortHelper()
|
||||
TextSize( size );
|
||||
TextFace( style );
|
||||
TextMode( mode );
|
||||
SetOrigin( 0 , 0 ) ;
|
||||
SetPort( port ) ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,28 +89,28 @@ wxString wxApp::s_macHelpMenuTitleName = "&Help" ;
|
||||
pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEODoc( event , reply) ;
|
||||
return wxTheApp->MacHandleAEODoc( (AppleEvent*) event , reply) ;
|
||||
}
|
||||
|
||||
pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEOApp( event , reply ) ;
|
||||
return wxTheApp->MacHandleAEOApp( (AppleEvent*) event , reply ) ;
|
||||
}
|
||||
|
||||
pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEPDoc( event , reply ) ;
|
||||
return wxTheApp->MacHandleAEPDoc( (AppleEvent*) event , reply ) ;
|
||||
}
|
||||
|
||||
pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , unsigned long refcon )
|
||||
{
|
||||
wxApp* app = (wxApp*) refcon ;
|
||||
return wxTheApp->MacHandleAEQuit( event , reply) ;
|
||||
return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEODoc(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
ProcessSerialNumber PSN ;
|
||||
PSN.highLongOfPSN = 0 ;
|
||||
@@ -119,17 +119,17 @@ OSErr wxApp::MacHandleAEODoc(AppleEvent *event , AppleEvent *reply)
|
||||
return noErr ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEPDoc(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEPDoc(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
return noErr ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEOApp(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEOApp(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
return noErr ;
|
||||
}
|
||||
|
||||
OSErr wxApp::MacHandleAEQuit(AppleEvent *event , AppleEvent *reply)
|
||||
OSErr wxApp::MacHandleAEQuit(const AppleEvent *event , AppleEvent *reply)
|
||||
{
|
||||
wxWindow* win = GetTopWindow() ;
|
||||
if ( win )
|
||||
@@ -510,6 +510,7 @@ void wxApp::CleanUp()
|
||||
delete wxLog::SetActiveTarget(NULL);
|
||||
#endif // wxUSE_LOG
|
||||
|
||||
UMACleanupToolbox() ;
|
||||
if (s_macCursorRgn)
|
||||
::DisposeRgn(s_macCursorRgn);
|
||||
|
||||
@@ -1044,14 +1045,16 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
|
||||
int newHeight = HiWord(growResult);
|
||||
int oldWidth, oldHeight;
|
||||
|
||||
win->GetSize(&oldWidth, &oldHeight);
|
||||
if (newWidth == 0)
|
||||
newWidth = oldWidth;
|
||||
if (newHeight == 0)
|
||||
newHeight = oldHeight;
|
||||
|
||||
if (win)
|
||||
{
|
||||
win->GetSize(&oldWidth, &oldHeight);
|
||||
if (newWidth == 0)
|
||||
newWidth = oldWidth;
|
||||
if (newHeight == 0)
|
||||
newHeight = oldHeight;
|
||||
win->SetSize( -1, -1, newWidth, newHeight, wxSIZE_USE_EXISTING);
|
||||
}
|
||||
}
|
||||
s_lastMouseDown = 0;
|
||||
break;
|
||||
@@ -1253,7 +1256,10 @@ void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
|
||||
|
||||
UInt32 menuresult = UMAMenuEvent(ev) ;
|
||||
if ( HiWord( menuresult ) )
|
||||
{
|
||||
if ( !s_macIsInModalLoop )
|
||||
MacHandleMenuSelect( HiWord( menuresult ) , LoWord( menuresult ) ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
short keycode ;
|
||||
@@ -1373,6 +1379,14 @@ void wxApp::MacHandleUpdateEvent( EventRecord *ev )
|
||||
{
|
||||
win->MacUpdate( ev ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// since there is no way of telling this foreign window to update itself
|
||||
// we have to invalidate the update region otherwise we keep getting the same
|
||||
// event over and over again
|
||||
BeginUpdate( window ) ;
|
||||
EndUpdate( window ) ;
|
||||
}
|
||||
}
|
||||
|
||||
void wxApp::MacHandleDiskEvent( EventRecord *ev )
|
||||
@@ -1490,9 +1504,12 @@ void wxApp::MacHandleOSEvent( EventRecord *ev )
|
||||
|
||||
switch (windowPart)
|
||||
{
|
||||
// fixes for setting the cursor back from dominic mazzoni
|
||||
case inMenuBar :
|
||||
UMAShowArrowCursor();
|
||||
break ;
|
||||
case inSysWindow :
|
||||
UMAShowArrowCursor();
|
||||
break ;
|
||||
default:
|
||||
{
|
||||
@@ -1502,6 +1519,9 @@ void wxApp::MacHandleOSEvent( EventRecord *ev )
|
||||
wxWindow* win = wxFindWinFromMacWindow( window ) ;
|
||||
if ( win )
|
||||
win->MacMouseMoved( ev , windowPart ) ;
|
||||
else
|
||||
UMAShowArrowCursor();
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,14 @@
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
|
||||
#endif
|
||||
|
||||
short nextMenuId = 100 ; // wxMenu takes the lower ids
|
||||
|
||||
wxChoice::~wxChoice()
|
||||
{
|
||||
// DeleteMenu( m_macPopUpMenuId ) ;
|
||||
DisposeMenu( m_macPopUpMenuHandle ) ;
|
||||
}
|
||||
|
||||
bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
||||
const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
@@ -35,6 +43,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
|
||||
|
||||
m_macPopUpMenuHandle = NewMenu( 1 , "\pPopUp Menu" ) ;
|
||||
m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , -12345 , 0 ,
|
||||
kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ;
|
||||
|
||||
|
||||
@@ -394,11 +394,11 @@ resource 'ldes' ( 128 )
|
||||
} ;
|
||||
|
||||
resource 'CURS' (9, "Hand") {
|
||||
$"01 80 1A 70 26 48 26 4A 12 4D 12 49 68 09 98 01"
|
||||
$"88 02 40 02 20 02 20 04 10 04 08 08 04 08 04 08",
|
||||
$"01 80 1B F0 3F F8 3F FA 1F FF 1F FF 7F FF FF FF"
|
||||
$"FF FE 7F FE 3F FE 3F FC 1F FC 0F F8 07 F8 07 F8",
|
||||
{9, 8}
|
||||
$"0380 04C0 04C0 04C0 04C0 04C0 74F8 9CAE"
|
||||
$"4CAB 240B 2403 1003 0803 0806 0406 0406",
|
||||
$"0380 07C0 07C0 07C0 07C0 07C0 77F8 FFFE"
|
||||
$"7FFF 3FFF 3FFF 1FFF 0FFF 0FFE 07FE 07FE",
|
||||
{0, 7}
|
||||
};
|
||||
|
||||
resource 'CURS' (10, "SizeWE") {
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
#include "wx/dc.h"
|
||||
#include "wx/mac/uma.h"
|
||||
|
||||
#if __MSL__ >= 0x6000
|
||||
#include "math.h"
|
||||
#endif
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
|
||||
#endif
|
||||
@@ -128,7 +132,7 @@ wxDC::~wxDC(void)
|
||||
|
||||
void wxDC::MacSetupPort() const
|
||||
{
|
||||
AGAPortHelper* help = &m_macPortHelper ;
|
||||
AGAPortHelper* help = (AGAPortHelper*) &m_macPortHelper ;
|
||||
help->Setup( m_macPort ) ;
|
||||
m_macPortId = ++m_macCurrentPortId ;
|
||||
::SetOrigin(-m_macLocalOrigin.h, -m_macLocalOrigin.v);
|
||||
@@ -427,7 +431,12 @@ void wxDC::ComputeScaleAndOrigin(void)
|
||||
// CMB: if scale has changed call SetPen to recalulate the line width
|
||||
if (m_scaleX != origScaleX || m_scaleY != origScaleY)
|
||||
{
|
||||
// TODO : set internal flags for recalc
|
||||
// this is a bit artificial, but we need to force wxDC to think
|
||||
// the pen has changed
|
||||
wxPen* pen = & GetPen();
|
||||
wxPen tempPen;
|
||||
m_pen = tempPen;
|
||||
SetPen(* pen);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -36,15 +36,13 @@ GrafPtr macPrintFormerPort = NULL ;
|
||||
|
||||
wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
OSErr err ;
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
|
||||
m_printData = printdata ;
|
||||
m_printData.ConvertToNative() ;
|
||||
|
||||
::UMAPrOpen() ;
|
||||
err = PrError() ;
|
||||
err = UMAPrOpen() ;
|
||||
if ( err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
@@ -52,6 +50,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
|
||||
UMAPrClose() ;
|
||||
}
|
||||
|
||||
#if !TARGET_CARBON
|
||||
if ( ::PrValidate( m_printData.m_macPrintInfo ) )
|
||||
{
|
||||
::PrStlDialog( m_printData.m_macPrintInfo ) ;
|
||||
@@ -75,23 +74,37 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
|
||||
}
|
||||
// sets current port
|
||||
m_macPort = (GrafPtr ) m_macPrintPort ;
|
||||
#else
|
||||
m_macPrintPort = kPMNoReference ;
|
||||
err = PMBeginDocument(
|
||||
m_printData.m_macPrintSettings,
|
||||
m_printData.m_macPageFormat,
|
||||
&m_macPrintPort);
|
||||
if ( err != noErr || m_macPrintPort == kPMNoReference )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
UMAPrClose() ;
|
||||
}
|
||||
// sets current port
|
||||
::GetPort( &m_macPort ) ;
|
||||
#endif
|
||||
m_ok = TRUE ;
|
||||
m_minY = m_minX = 0 ;
|
||||
#if TARGET_CARBON
|
||||
#else
|
||||
m_maxX = (**m_printData.m_macPrintInfo).rPaper.right - (**m_printData.m_macPrintInfo).rPaper.left ;
|
||||
m_maxY = (**m_printData.m_macPrintInfo).rPaper.bottom - (**m_printData.m_macPrintInfo).rPaper.top ;
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
#endif
|
||||
}
|
||||
|
||||
wxPrinterDC::~wxPrinterDC(void)
|
||||
{
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
#if !TARGET_CARBON
|
||||
if ( m_ok )
|
||||
{
|
||||
OSErr err ;
|
||||
wxString message ;
|
||||
|
||||
::PrCloseDoc( m_macPrintPort ) ;
|
||||
err = PrError() ;
|
||||
|
||||
@@ -115,7 +128,17 @@ wxPrinterDC::~wxPrinterDC(void)
|
||||
m_macPortHelper.Clear() ;
|
||||
}
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
if ( m_ok )
|
||||
{
|
||||
err = PMEndDocument(m_macPrintPort);
|
||||
if ( !err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
UMAPrClose() ;
|
||||
}
|
||||
UMAPrClose() ;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -130,7 +153,6 @@ void wxPrinterDC::EndDoc(void)
|
||||
|
||||
void wxPrinterDC::StartPage(void)
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !m_ok )
|
||||
return ;
|
||||
|
||||
@@ -150,11 +172,15 @@ void wxPrinterDC::StartPage(void)
|
||||
m_macPenInstalled = false ;
|
||||
|
||||
|
||||
OSErr err ;
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
|
||||
#if !TARGET_CARBON
|
||||
PrOpenPage( m_macPrintPort , NULL ) ;
|
||||
SetOrigin( - (**m_printData.m_macPrintInfo).rPaper.left , - (**m_printData.m_macPrintInfo).rPaper.top ) ;
|
||||
m_macLocalOrigin.h = (**m_printData.m_macPrintInfo).rPaper.left ;
|
||||
m_macLocalOrigin.v = (**m_printData.m_macPrintInfo).rPaper.top ;
|
||||
|
||||
SetOrigin( - m_macLocalOrigin.h , - m_macLocalOrigin.v ) ;
|
||||
Rect clip = { -32000 , -32000 , 32000 , 32000 } ;
|
||||
::ClipRect( &clip ) ;
|
||||
err = PrError() ;
|
||||
@@ -169,19 +195,29 @@ void wxPrinterDC::StartPage(void)
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
err = PMBeginPage(m_macPrintPort, nil);
|
||||
if ( err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
PMEndPage(m_macPrintPort);
|
||||
PMEndDocument(m_macPrintPort);
|
||||
UMAPrClose() ;
|
||||
::SetPort( macPrintFormerPort ) ;
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void wxPrinterDC::EndPage(void)
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !m_ok )
|
||||
return ;
|
||||
|
||||
OSErr err ;
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
|
||||
#if !TARGET_CARBON
|
||||
PrClosePage( (TPrPort*) m_macPort ) ;
|
||||
err = PrError() ;
|
||||
if ( err )
|
||||
@@ -194,7 +230,16 @@ void wxPrinterDC::EndPage(void)
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
err = PMEndPage(m_macPrintPort);
|
||||
if ( err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
PMEndDocument(m_macPrintPort);
|
||||
UMAPrClose() ;
|
||||
::SetPort( macPrintFormerPort ) ;
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -20,16 +20,22 @@
|
||||
|
||||
#include "wx/cmndata.h"
|
||||
|
||||
#include "Navigation.h"
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_CLASS(wxDirDialog, wxDialog)
|
||||
#endif
|
||||
|
||||
bool gUseNavServices = NavServicesAvailable() ;
|
||||
|
||||
// the data we need to pass to our standard file hook routine
|
||||
// includes a pointer to the dialog, a pointer to the standard
|
||||
// file reply record (so we can inspect the current selection)
|
||||
// and a copy of the "previous" file spec of the reply record
|
||||
// so we can see if the selection has changed
|
||||
|
||||
#if !TARGET_CARBON
|
||||
|
||||
struct UserDataRec {
|
||||
StandardFileReply *sfrPtr;
|
||||
FSSpec oldSelectionFSSpec;
|
||||
@@ -38,8 +44,6 @@ struct UserDataRec {
|
||||
typedef struct UserDataRec
|
||||
UserDataRec, *UserDataRecPtr;
|
||||
|
||||
#if !TARGET_CARBON
|
||||
|
||||
enum {
|
||||
kSelectItem = 10, // select button item number
|
||||
kSFGetFolderDlgID = 250, // dialog resource number
|
||||
@@ -307,7 +311,6 @@ static pascal short SFGetFolderDialogHook(short item, DialogPtr theDlgPtr, Ptr d
|
||||
|
||||
return item;
|
||||
}
|
||||
#endif
|
||||
|
||||
void StandardGetFolder( ConstStr255Param message , ConstStr255Param path , FileFilterYDUPP fileFilter, StandardFileReply *theSFR)
|
||||
{
|
||||
@@ -433,6 +436,9 @@ static pascal Boolean OnlyVisibleFoldersCustomFileFilter(CInfoPBPtr myCInfoPBPtr
|
||||
return !(visibleFlag && folderFlag);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
||||
const wxString& defaultPath,
|
||||
long style, const wxPoint& pos)
|
||||
@@ -445,6 +451,8 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
||||
|
||||
int wxDirDialog::ShowModal()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !gUseNavServices )
|
||||
{
|
||||
Str255 prompt ;
|
||||
Str255 path ;
|
||||
@@ -457,16 +465,15 @@ int wxDirDialog::ShowModal()
|
||||
|
||||
StandardFileReply reply ;
|
||||
FileFilterYDUPP invisiblesExcludedCustomFilterUPP = 0 ;
|
||||
#if !TARGET_CARBON
|
||||
invisiblesExcludedCustomFilterUPP =
|
||||
NewFileFilterYDProc(OnlyVisibleFoldersCustomFileFilter);
|
||||
#endif
|
||||
|
||||
|
||||
StandardGetFolder( prompt , path , invisiblesExcludedCustomFilterUPP, &reply);
|
||||
|
||||
#if !TARGET_CARBON
|
||||
|
||||
DisposeRoutineDescriptor(invisiblesExcludedCustomFilterUPP);
|
||||
#endif
|
||||
|
||||
if ( reply.sfGood == false )
|
||||
{
|
||||
m_path = "" ;
|
||||
@@ -477,7 +484,105 @@ int wxDirDialog::ShowModal()
|
||||
m_path = wxMacFSSpec2UnixFilename( &reply.sfFile ) ;
|
||||
return wxID_OK ;
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
NavDialogOptions mNavOptions;
|
||||
NavObjectFilterUPP mNavFilterUPP = NULL;
|
||||
NavPreviewUPP mNavPreviewUPP = NULL ;
|
||||
NavReplyRecord mNavReply;
|
||||
AEDesc* mDefaultLocation = NULL ;
|
||||
bool mSelectDefault = false ;
|
||||
|
||||
::NavGetDefaultDialogOptions(&mNavOptions);
|
||||
|
||||
mNavFilterUPP = nil;
|
||||
mNavPreviewUPP = nil;
|
||||
mSelectDefault = false;
|
||||
mNavReply.validRecord = false;
|
||||
mNavReply.replacing = false;
|
||||
mNavReply.isStationery = false;
|
||||
mNavReply.translationNeeded = false;
|
||||
mNavReply.selection.descriptorType = typeNull;
|
||||
mNavReply.selection.dataHandle = nil;
|
||||
mNavReply.keyScript = smSystemScript;
|
||||
mNavReply.fileTranslation = nil;
|
||||
|
||||
// Set default location, the location
|
||||
// that's displayed when the dialog
|
||||
// first appears
|
||||
|
||||
if ( mDefaultLocation ) {
|
||||
|
||||
if (mSelectDefault) {
|
||||
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
|
||||
} else {
|
||||
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
|
||||
}
|
||||
}
|
||||
|
||||
OSErr err = ::NavChooseFolder(
|
||||
mDefaultLocation,
|
||||
&mNavReply,
|
||||
&mNavOptions,
|
||||
NULL,
|
||||
mNavFilterUPP,
|
||||
0L); // User Data
|
||||
|
||||
if ( (err != noErr) && (err != userCanceledErr) ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
|
||||
if (mNavReply.validRecord) { // User chose a folder
|
||||
|
||||
FSSpec folderInfo;
|
||||
FSSpec outFileSpec ;
|
||||
AEDesc specDesc ;
|
||||
|
||||
OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
|
||||
if ( err != noErr ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
folderInfo = **(FSSpec**) specDesc.dataHandle;
|
||||
if (specDesc.dataHandle != nil) {
|
||||
::AEDisposeDesc(&specDesc);
|
||||
}
|
||||
|
||||
// mNavReply.GetFileSpec(folderInfo);
|
||||
|
||||
// The FSSpec from NavChooseFolder is NOT the file spec
|
||||
// for the folder. The parID field is actually the DirID
|
||||
// of the folder itself, not the folder's parent, and
|
||||
// the name field is empty. We must call PBGetCatInfo
|
||||
// to get the parent DirID and folder name
|
||||
|
||||
Str255 name;
|
||||
CInfoPBRec thePB; // Directory Info Parameter Block
|
||||
thePB.dirInfo.ioCompletion = nil;
|
||||
thePB.dirInfo.ioVRefNum = folderInfo.vRefNum; // Volume is right
|
||||
thePB.dirInfo.ioDrDirID = folderInfo.parID; // Folder's DirID
|
||||
thePB.dirInfo.ioNamePtr = name;
|
||||
thePB.dirInfo.ioFDirIndex = -1; // Lookup using Volume and DirID
|
||||
|
||||
err = ::PBGetCatInfoSync(&thePB);
|
||||
if ( err != noErr ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
// Create cannonical FSSpec
|
||||
::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID,
|
||||
name, &outFileSpec);
|
||||
|
||||
// outFolderDirID = thePB.dirInfo.ioDrDirID;
|
||||
m_path = wxMacFSSpec2UnixFilename( &outFileSpec ) ;
|
||||
return wxID_OK ;
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,18 +19,55 @@
|
||||
#include "wx/filedlg.h"
|
||||
#include "wx/intl.h"
|
||||
|
||||
#include "PLStringFuncs.h"
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_CLASS(wxFileDialog, wxDialog)
|
||||
#endif
|
||||
|
||||
// begin wxmac
|
||||
|
||||
#include "Navigation.h"
|
||||
|
||||
#include "morefile.h"
|
||||
#include "moreextr.h"
|
||||
#include "fullpath.h"
|
||||
#include "fspcompa.h"
|
||||
#include "PLStringFuncs.h"
|
||||
|
||||
extern bool gUseNavServices ;
|
||||
|
||||
static pascal void NavEventProc(
|
||||
NavEventCallbackMessage inSelector,
|
||||
NavCBRecPtr ioParams,
|
||||
NavCallBackUserData ioUserData);
|
||||
|
||||
#if TARGET_CARBON
|
||||
static NavEventUPP sStandardNavEventFilter = NewNavEventUPP(NavEventProc);
|
||||
#else
|
||||
static NavEventUPP sStandardNavEventFilter = NewNavEventProc(NavEventProc);
|
||||
#endif
|
||||
|
||||
static pascal void
|
||||
NavEventProc(
|
||||
NavEventCallbackMessage inSelector,
|
||||
NavCBRecPtr ioParams,
|
||||
NavCallBackUserData /* ioUserData */)
|
||||
{
|
||||
if (inSelector == kNavCBEvent) {
|
||||
// In Universal Headers 3.2, Apple changed the definition of
|
||||
/*
|
||||
#if UNIVERSAL_INTERFACES_VERSION >= 0x0320 // Universal Headers 3.2
|
||||
UModalAlerts::ProcessModalEvent(*(ioParams->eventData.eventDataParms.event));
|
||||
|
||||
#else
|
||||
UModalAlerts::ProcessModalEvent(*(ioParams->eventData.event));
|
||||
#endif
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
char * gfilters[] =
|
||||
{
|
||||
"*.TXT" ,
|
||||
@@ -189,7 +226,7 @@ static pascal Boolean SFGetFolderModalDialogFilter(DialogPtr theDlgPtr, EventRec
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#endif !TARGET_CARBON
|
||||
|
||||
void ExtendedOpenFile( ConstStr255Param message , ConstStr255Param path , const char *filter , FileFilterYDUPP fileFilter, StandardFileReply *theSFR)
|
||||
{
|
||||
@@ -451,6 +488,9 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
|
||||
|
||||
int wxFileDialog::ShowModal()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !gUseNavServices )
|
||||
{
|
||||
if ( m_dialogStyle & wxSAVE )
|
||||
{
|
||||
StandardFileReply reply ;
|
||||
@@ -488,7 +528,7 @@ int wxFileDialog::ShowModal()
|
||||
strcpy((char *)prompt, m_message) ;
|
||||
c2pstr((char *)prompt ) ;
|
||||
|
||||
strcpy((char *)path, m_path ) ;
|
||||
strcpy((char *)path, m_dir ) ;
|
||||
c2pstr((char *)path ) ;
|
||||
|
||||
StandardFileReply reply ;
|
||||
@@ -515,6 +555,137 @@ int wxFileDialog::ShowModal()
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
NavDialogOptions mNavOptions;
|
||||
NavObjectFilterUPP mNavFilterUPP = NULL;
|
||||
NavPreviewUPP mNavPreviewUPP = NULL ;
|
||||
NavReplyRecord mNavReply;
|
||||
AEDesc mDefaultLocation ;
|
||||
bool mSelectDefault = false ;
|
||||
|
||||
::NavGetDefaultDialogOptions(&mNavOptions);
|
||||
|
||||
mNavFilterUPP = nil;
|
||||
mNavPreviewUPP = nil;
|
||||
mSelectDefault = false;
|
||||
mNavReply.validRecord = false;
|
||||
mNavReply.replacing = false;
|
||||
mNavReply.isStationery = false;
|
||||
mNavReply.translationNeeded = false;
|
||||
mNavReply.selection.descriptorType = typeNull;
|
||||
mNavReply.selection.dataHandle = nil;
|
||||
mNavReply.keyScript = smSystemScript;
|
||||
mNavReply.fileTranslation = nil;
|
||||
|
||||
// Set default location, the location
|
||||
// that's displayed when the dialog
|
||||
// first appears
|
||||
|
||||
FSSpec location ;
|
||||
wxUnixFilename2FSSpec( m_dir , &location ) ;
|
||||
OSErr err = noErr ;
|
||||
|
||||
mDefaultLocation.descriptorType = typeNull;
|
||||
mDefaultLocation.dataHandle = nil;
|
||||
|
||||
err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation );
|
||||
|
||||
if ( mDefaultLocation.dataHandle ) {
|
||||
|
||||
if (mSelectDefault) {
|
||||
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
|
||||
} else {
|
||||
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
|
||||
}
|
||||
}
|
||||
|
||||
strcpy((char *)mNavOptions.message, m_message) ;
|
||||
c2pstr((char *)mNavOptions.message ) ;
|
||||
|
||||
strcpy((char *)mNavOptions.savedFileName, m_fileName) ;
|
||||
c2pstr((char *)mNavOptions.savedFileName ) ;
|
||||
|
||||
if ( m_dialogStyle & wxSAVE )
|
||||
{
|
||||
|
||||
mNavOptions.dialogOptionFlags |= kNavNoTypePopup ;
|
||||
mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ;
|
||||
mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ;
|
||||
|
||||
err = ::NavPutFile(
|
||||
&mDefaultLocation,
|
||||
&mNavReply,
|
||||
&mNavOptions,
|
||||
sStandardNavEventFilter ,
|
||||
'TEXT',
|
||||
'TEXT',
|
||||
0L); // User Data
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_dialogStyle & wxMULTIPLE )
|
||||
mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ;
|
||||
else
|
||||
mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ;
|
||||
|
||||
err = ::NavGetFile(
|
||||
&mDefaultLocation,
|
||||
&mNavReply,
|
||||
&mNavOptions,
|
||||
sStandardNavEventFilter ,
|
||||
mNavPreviewUPP,
|
||||
mNavFilterUPP,
|
||||
0L /*inFileTypes.TypeListHandle() */,
|
||||
0L); // User Data
|
||||
}
|
||||
|
||||
if ( mDefaultLocation.dataHandle != nil )
|
||||
{
|
||||
::AEDisposeDesc(&mDefaultLocation);
|
||||
}
|
||||
|
||||
if ( (err != noErr) && (err != userCanceledErr) ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
|
||||
if (mNavReply.validRecord) {
|
||||
|
||||
FSSpec outFileSpec ;
|
||||
AEDesc specDesc ;
|
||||
|
||||
long count ;
|
||||
::AECountItems( &mNavReply.selection , &count ) ;
|
||||
for ( long i = 1 ; i <= count ; ++i )
|
||||
{
|
||||
OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, NULL , &specDesc);
|
||||
if ( err != noErr ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
outFileSpec = **(FSSpec**) specDesc.dataHandle;
|
||||
if (specDesc.dataHandle != nil) {
|
||||
::AEDisposeDesc(&specDesc);
|
||||
}
|
||||
|
||||
|
||||
// outFolderDirID = thePB.dirInfo.ioDrDirID;
|
||||
m_path = wxMacFSSpec2UnixFilename( &outFileSpec ) ;
|
||||
m_paths.Add( m_path ) ;
|
||||
m_fileNames.Add(m_fileName);
|
||||
}
|
||||
// set these to the first hit
|
||||
m_path = m_paths[ 0 ] ;
|
||||
m_fileName = wxFileNameFromPath(m_path);
|
||||
m_dir = wxPathOnly(m_path);
|
||||
|
||||
return wxID_OK ;
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
}
|
||||
|
||||
// Generic file load/save dialog
|
||||
static wxString
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "wx/defs.h"
|
||||
#include "wx/string.h"
|
||||
#include "wx/font.h"
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/gdicmn.h"
|
||||
|
||||
#include "wx/fontutil.h"
|
||||
@@ -119,6 +120,12 @@ void wxFont::Init()
|
||||
wxTheFontList->Append(this);
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxNativeFontInfo& info)
|
||||
{
|
||||
return Create(info.pointSize, info.family, info.style, info.weight,
|
||||
info.underlined, info.faceName, info.encoding);
|
||||
}
|
||||
|
||||
wxFont::wxFont(const wxString& fontdesc)
|
||||
{
|
||||
wxNativeFontInfo info;
|
||||
@@ -143,12 +150,6 @@ bool wxFont::Create(int pointSize,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxNativeFontInfo& info)
|
||||
{
|
||||
return Create(info.pointSize, info.family, info.style, info.weight,
|
||||
info.underlined, info.faceName, info.encoding);
|
||||
}
|
||||
|
||||
wxFont::~wxFont()
|
||||
{
|
||||
if (wxTheFontList)
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#endif
|
||||
|
||||
#include "wx/fontenum.h"
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/fontmap.h"
|
||||
#include "wx/fontutil.h"
|
||||
|
||||
|
||||
@@ -199,8 +199,9 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id,
|
||||
{
|
||||
wxStatusBar *statusBar = NULL;
|
||||
|
||||
statusBar = new wxStatusBar(this, id, style, name);
|
||||
|
||||
statusBar = new wxStatusBar(this, id,
|
||||
style, name);
|
||||
statusBar->SetSize( 100 , 15 ) ;
|
||||
statusBar->SetFieldsCount(number);
|
||||
return statusBar;
|
||||
}
|
||||
@@ -216,7 +217,7 @@ void wxFrame::PositionStatusBar()
|
||||
|
||||
// Since we wish the status bar to be directly under the client area,
|
||||
// we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS.
|
||||
m_frameStatusBar->SetSize(0, h, w, WX_MAC_STATUSBAR_HEIGHT );
|
||||
m_frameStatusBar->SetSize(0, h, w, sh);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,8 +297,7 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
|
||||
{
|
||||
int statusX, statusY;
|
||||
GetStatusBar()->GetClientSize(&statusX, &statusY);
|
||||
// right now this is a constant, this might change someday
|
||||
*y -= WX_MAC_STATUSBAR_HEIGHT ;
|
||||
*y -= statusY;
|
||||
}
|
||||
#endif // wxUSE_STATUSBAR
|
||||
|
||||
|
||||
@@ -180,6 +180,7 @@ int wxListBox::DoAppend(const wxString& item)
|
||||
m_dataArray.Add( NULL );
|
||||
}
|
||||
m_noItems ++;
|
||||
DoSetItemClientData( index , NULL ) ;
|
||||
MacAppend( item ) ;
|
||||
|
||||
return index ;
|
||||
@@ -255,6 +256,16 @@ int wxListBox::FindString(const wxString& st) const
|
||||
if ( EqualString( s1 , s2 , false , false ) )
|
||||
return i ;
|
||||
}
|
||||
if ( s.Left(1) = "*" && s.Length() > 1 )
|
||||
{
|
||||
s.MakeLower() ;
|
||||
for ( int i = 0 ; i < m_noItems ; ++i )
|
||||
{
|
||||
if ( GetString(i).Lower().Matches(s) )
|
||||
return i ;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -700,8 +700,37 @@ void wxMenuBar::MacInstallMenuBar()
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
#else
|
||||
if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName )
|
||||
{
|
||||
wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false );
|
||||
UMASetMenuTitle( menu->GetHMenu() , label ) ;
|
||||
|
||||
for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++)
|
||||
{
|
||||
item = (wxMenuItem *)node->Data();
|
||||
subMenu = item->GetSubMenu() ;
|
||||
if (subMenu)
|
||||
{
|
||||
UMAInsertMenu( subMenu->GetHMenu() , -1 ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( item->GetId() == wxApp::s_macAboutMenuItemId )
|
||||
{
|
||||
Str255 label ;
|
||||
UInt8 modifiers ;
|
||||
SInt16 key ;
|
||||
wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu
|
||||
UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label );
|
||||
UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
UMAInsertMenu(m_menus[i]->GetHMenu(), 0);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false );
|
||||
UMASetMenuTitle( menu->GetHMenu() , label ) ;
|
||||
|
||||
@@ -42,6 +42,9 @@ const short kwxMacTabBottomMargin = 16 ;
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#if !USE_SHARED_LIBRARIES
|
||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED)
|
||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxNotebook, wxControl)
|
||||
EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange)
|
||||
|
||||
|
||||
@@ -136,7 +136,6 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
||||
// Create an abort window
|
||||
wxBeginBusyCursor();
|
||||
|
||||
/*
|
||||
wxWindow *win = CreateAbortWindow(parent, printout);
|
||||
wxYield();
|
||||
|
||||
@@ -149,7 +148,6 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
||||
sm_abortWindow = win;
|
||||
sm_abortWindow->Show(TRUE);
|
||||
wxYield();
|
||||
*/
|
||||
|
||||
printout->OnBeginPrinting();
|
||||
|
||||
@@ -178,6 +176,11 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
||||
}
|
||||
else
|
||||
{
|
||||
GrafPtr thePort ;
|
||||
GetPort( &thePort ) ;
|
||||
wxYield() ;
|
||||
SetPort( thePort ) ;
|
||||
|
||||
dc->StartPage();
|
||||
keepGoing = printout->OnPrintPage(pn);
|
||||
dc->EndPage();
|
||||
|
||||
@@ -111,6 +111,14 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
wxString value ;
|
||||
|
||||
{
|
||||
TEHandle teH ;
|
||||
long size ;
|
||||
|
||||
UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
|
||||
(*teH)->lineHeight = -1 ;
|
||||
}
|
||||
|
||||
if( wxApp::s_macDefaultEncodingIsPC )
|
||||
value = wxMacMakeMacStringFromPC( st ) ;
|
||||
else
|
||||
@@ -152,8 +160,7 @@ void wxTextCtrl::SetValue(const wxString& st)
|
||||
else
|
||||
value = st ;
|
||||
UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
|
||||
Refresh() ;
|
||||
// MacInvalidateControl() ;
|
||||
UMADrawControl( m_macControl ) ;
|
||||
}
|
||||
|
||||
// Clipboard operations
|
||||
@@ -208,7 +215,7 @@ void wxTextCtrl::Paste()
|
||||
UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
|
||||
TEFromScrap() ;
|
||||
TEPaste( teH ) ;
|
||||
// MacInvalidateControl() ;
|
||||
UMADrawControl( m_macControl ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -801,9 +801,11 @@ bool wxThreadModule::OnInit()
|
||||
long response;
|
||||
bool hasThreadManager ;
|
||||
hasThreadManager = Gestalt( gestaltThreadMgrAttr, &response) == noErr && response & 1;
|
||||
#if TARGET_RT_MAC_CFM
|
||||
#if !TARGET_CARBON
|
||||
#if GENERATINGCFM
|
||||
// verify presence of shared library
|
||||
hasThreadManager = hasThreadManager && ((Ptr)NewThread != (Ptr)kUnresolvedCFragSymbolAddress);
|
||||
#endif
|
||||
#endif
|
||||
if ( !hasThreadManager )
|
||||
{
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#include <wx/mac/uma.h>
|
||||
#include <wx/mac/aga.h>
|
||||
|
||||
|
||||
#include "Navigation.h"
|
||||
|
||||
// init
|
||||
|
||||
static bool sUMAHasAppearance = false ;
|
||||
@@ -14,7 +17,19 @@ static long sUMAWindowManagerAttr = 0 ;
|
||||
|
||||
bool UMAHasWindowManager() { return sUMAHasWindowManager ; }
|
||||
long UMAGetWindowManagerAttr() { return sUMAWindowManagerAttr ; }
|
||||
|
||||
void UMACleanupToolbox()
|
||||
{
|
||||
#if UMA_USE_APPEARANCE
|
||||
if ( sUMAHasAppearance )
|
||||
{
|
||||
UnregisterAppearanceClient() ;
|
||||
}
|
||||
#endif
|
||||
if ( NavServicesAvailable() )
|
||||
{
|
||||
NavUnload() ;
|
||||
}
|
||||
}
|
||||
void UMAInitToolbox( UInt16 inMoreMastersCalls )
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
@@ -24,7 +39,6 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
|
||||
|
||||
::InitGraf(&qd.thePort);
|
||||
::InitFonts();
|
||||
::InitWindows();
|
||||
::InitMenus();
|
||||
::TEInit();
|
||||
::InitDialogs(0L);
|
||||
@@ -60,6 +74,16 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
|
||||
}
|
||||
#endif // UMA_USE_WINDOWMGR
|
||||
#endif
|
||||
|
||||
if ( sUMAHasWindowManager )
|
||||
InitFloatingWindows() ;
|
||||
else
|
||||
InitWindows();
|
||||
|
||||
if ( NavServicesAvailable() )
|
||||
{
|
||||
NavLoad() ;
|
||||
}
|
||||
}
|
||||
|
||||
// process manager
|
||||
@@ -250,7 +274,7 @@ void UMAInsertMenu( MenuRef insertMenu , SInt16 afterId )
|
||||
|
||||
int gPrOpenCounter = 0 ;
|
||||
|
||||
void UMAPrOpen()
|
||||
OSStatus UMAPrOpen()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
OSErr err = noErr ;
|
||||
@@ -261,12 +285,20 @@ void UMAPrOpen()
|
||||
err = PrError() ;
|
||||
wxASSERT( err == noErr ) ;
|
||||
}
|
||||
return err ;
|
||||
#else
|
||||
#pragma warning "TODO Printing for Carbon"
|
||||
OSStatus err = noErr ;
|
||||
++gPrOpenCounter ;
|
||||
if ( gPrOpenCounter == 1 )
|
||||
{
|
||||
err = PMBegin() ;
|
||||
wxASSERT( err == noErr ) ;
|
||||
}
|
||||
return err ;
|
||||
#endif
|
||||
}
|
||||
|
||||
void UMAPrClose()
|
||||
OSStatus UMAPrClose()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
OSErr err = noErr ;
|
||||
@@ -278,8 +310,16 @@ void UMAPrClose()
|
||||
wxASSERT( err == noErr ) ;
|
||||
}
|
||||
--gPrOpenCounter ;
|
||||
return err ;
|
||||
#else
|
||||
#pragma warning "TODO Printing for Carbon"
|
||||
OSStatus err = noErr ;
|
||||
wxASSERT( gPrOpenCounter >= 1 ) ;
|
||||
if ( gPrOpenCounter == 1 )
|
||||
{
|
||||
err = PMEnd() ;
|
||||
}
|
||||
--gPrOpenCounter ;
|
||||
return err ;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,14 @@ bool wxGetUserId(char *buf, int maxSize)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
const wxChar* wxGetHomeDir(wxString *pstr)
|
||||
{
|
||||
*pstr = wxMacFindFolder( (short) kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder ) ;
|
||||
return pstr->c_str() ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Get user name e.g. AUTHOR
|
||||
bool wxGetUserName(char *buf, int maxSize)
|
||||
{
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
#include "wx/mac/wave.h"
|
||||
|
||||
wxWave::wxWave()
|
||||
: m_waveData(NULL), m_waveLength(0), m_isResource(FALSE)
|
||||
: m_hSnd(NULL), m_waveLength(0), m_isResource(true), m_sndChan(0)
|
||||
{
|
||||
}
|
||||
|
||||
wxWave::wxWave(const wxString& sFileName, bool isResource)
|
||||
: m_waveData(NULL), m_waveLength(0), m_isResource(FALSE)
|
||||
: m_hSnd(NULL), m_waveLength(0), m_isResource(true), m_sndChan(0)
|
||||
{
|
||||
Create(sFileName, isResource);
|
||||
}
|
||||
@@ -34,28 +34,196 @@ wxWave::~wxWave()
|
||||
Free();
|
||||
}
|
||||
|
||||
|
||||
bool wxWave::Create(const wxString& fileName, bool isResource)
|
||||
{
|
||||
Free();
|
||||
bool ret = false;
|
||||
m_sndname = fileName;
|
||||
m_isResource = isResource;
|
||||
|
||||
// TODO
|
||||
if (m_isResource)
|
||||
ret = true;
|
||||
else
|
||||
{ /*
|
||||
if (sndChan)
|
||||
{ // we're playing
|
||||
FSClose(SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel(sndChan, TRUE);
|
||||
free(sndChan);
|
||||
sndChan = 0;
|
||||
KillTimer(0,timerID);
|
||||
}
|
||||
|
||||
if (!lpSnd)
|
||||
return true;
|
||||
|
||||
return FALSE;
|
||||
if (_access(lpSnd,0)) // no file, no service
|
||||
return false;
|
||||
|
||||
// Allocate SndChannel
|
||||
sndChan = (SndChannelPtr) malloc (sizeof(SndChannel));
|
||||
|
||||
if (!sndChan)
|
||||
return false;
|
||||
|
||||
sndChan->qLength = 128;
|
||||
|
||||
if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0))
|
||||
{
|
||||
free(sndChan);
|
||||
sndChan = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd)))
|
||||
{
|
||||
SndDisposeChannel(sndChan, TRUE);
|
||||
free(sndChan);
|
||||
sndChan = 0;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool async = false;
|
||||
|
||||
if (fdwSound & SND_ASYNC)
|
||||
async = true;
|
||||
|
||||
if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr)
|
||||
{
|
||||
FSClose (SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel (sndChan, TRUE);
|
||||
free (sndChan);
|
||||
sndChan = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (async)
|
||||
{ // haven't finish yet
|
||||
timerID = SetTimer(0, 0, 250, TimerCallBack);
|
||||
}
|
||||
else
|
||||
{
|
||||
FSClose (SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel (sndChan, TRUE);
|
||||
free (sndChan);
|
||||
sndChan = 0;
|
||||
}*/
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//don't know what to do with looped, wth
|
||||
bool wxWave::Play(bool async, bool looped) const
|
||||
{
|
||||
if (!IsOk())
|
||||
return FALSE;
|
||||
char lpSnd[32];
|
||||
bool ret = false;
|
||||
|
||||
if (m_isResource)
|
||||
{
|
||||
strcpy(lpSnd, m_sndname);
|
||||
c2pstr((char *) lpSnd);
|
||||
SndListHandle hSnd;
|
||||
|
||||
hSnd = (SndListHandle) GetNamedResource('snd ',(const unsigned char *) lpSnd);
|
||||
|
||||
// TODO
|
||||
return FALSE;
|
||||
if ((hSnd != NULL) && (SndPlay(m_sndChan, hSnd, async) == noErr))
|
||||
ret = true;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
bool wxWave::Free()
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
bool ret = false;
|
||||
|
||||
if (m_isResource)
|
||||
{
|
||||
m_sndname.Empty();
|
||||
ret = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//TODO,
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//code below is from an old implementation used for telinfo with MSVC crossplatform support
|
||||
//technology proceeds, so it would be the wisest to drop this code, but it's left here just
|
||||
//for the sake of a reference. BTW: Wave files can now be played with QT, starting from V3
|
||||
|
||||
/*static short MacOpenSndFile (char * path)
|
||||
{
|
||||
VolumeParam vp;
|
||||
FSSpec fspec;
|
||||
Str255 name;
|
||||
char *c;
|
||||
|
||||
// first, get the volume reference number for the file. Start by
|
||||
// making a Pstring with just the volume name
|
||||
strcpy ((char *) name, path);
|
||||
if (c = strchr ((char *) name, ':'))
|
||||
{
|
||||
c++;
|
||||
*c = '\0';
|
||||
}
|
||||
|
||||
c2pstr ((char *) name);
|
||||
vp.ioCompletion = 0;
|
||||
vp.ioVolIndex = -1;
|
||||
vp.ioNamePtr = name;
|
||||
vp.ioVRefNum = 0;
|
||||
|
||||
if (PBGetVInfo((ParamBlockRec *)&vp, 0) != noErr)
|
||||
return 0;
|
||||
|
||||
// next, buld an FSSpec for the file
|
||||
strcpy ((char *) name, path);
|
||||
c2pstr ((char *) name);
|
||||
if (FSMakeFSSpec (vp.ioVRefNum, 0, name, &fspec) != noErr)
|
||||
return 0;
|
||||
|
||||
short frefnum;
|
||||
// now open the file, and return it's reference number
|
||||
if (FSpOpenDF(&fspec, fsRdPerm, &frefnum) != noErr)
|
||||
return 0;
|
||||
|
||||
return frefnum;
|
||||
}
|
||||
|
||||
|
||||
void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
|
||||
{
|
||||
if(!sndChan)
|
||||
{
|
||||
KillTimer(0,timerID);
|
||||
return;
|
||||
}
|
||||
|
||||
SCStatus scstat;
|
||||
|
||||
if (noErr == SndChannelStatus (sndChan, sizeof (SCStatus), &scstat)) {
|
||||
if (scstat.scChannelPaused || scstat.scChannelBusy)
|
||||
return; // not done yet
|
||||
}
|
||||
|
||||
// either error or done.
|
||||
FSClose (SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel (sndChan, TRUE);
|
||||
free (sndChan);
|
||||
sndChan = 0;
|
||||
KillTimer(0,timerID);
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
@@ -437,8 +437,8 @@ void wxWindow::DoGetClientSize(int *x, int *y) const
|
||||
*x = m_width ;
|
||||
*y = m_height ;
|
||||
|
||||
*x -= 2 * MacGetBorderSize( ) ;
|
||||
*y -= 2 * MacGetBorderSize( ) ;
|
||||
*x -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
|
||||
*y -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( );
|
||||
|
||||
if ( (m_vScrollBar && m_vScrollBar->IsShown()) || (m_hScrollBar && m_hScrollBar->IsShown()) )
|
||||
{
|
||||
@@ -627,7 +627,7 @@ void wxWindow::DoSetSize(int x, int y, int width, int height, int sizeFlags)
|
||||
|
||||
wxPoint wxWindow::GetClientAreaOrigin() const
|
||||
{
|
||||
return wxPoint(MacGetBorderSize( ) , MacGetBorderSize( ) );
|
||||
return wxPoint(MacGetLeftBorderSize( ) , MacGetTopBorderSize( ) );
|
||||
}
|
||||
|
||||
// Makes an adjustment to the window position (for example, a frame that has
|
||||
@@ -725,7 +725,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
|
||||
if ( !fontToUse )
|
||||
fontToUse = &m_font;
|
||||
|
||||
wxClientDC dc( this ) ;
|
||||
wxClientDC dc( (wxWindow*) this ) ;
|
||||
long lx,ly,ld,le ;
|
||||
dc.GetTextExtent( string , &lx , &ly , &ld, &le, fontToUse ) ;
|
||||
if ( externalLeading )
|
||||
@@ -1417,8 +1417,8 @@ void wxWindow::DoSetClientSize(int width, int height)
|
||||
if ( height != -1 && m_vScrollBar )
|
||||
height += MAC_SCROLLBAR_SIZE ;
|
||||
|
||||
width += 2 * MacGetBorderSize( ) ;
|
||||
height += 2 * MacGetBorderSize( ) ;
|
||||
width += MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
|
||||
height += MacGetTopBorderSize( ) + MacGetBottomBorderSize( ) ;
|
||||
|
||||
DoSetSize( -1 , -1 , width , height ) ;
|
||||
}
|
||||
@@ -1443,7 +1443,8 @@ bool wxWindow::MacGetWindowFromPointSub( const wxPoint &point , wxWindow** outWi
|
||||
for (wxNode *node = GetChildren().First(); node; node = node->Next())
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
if ( child->GetMacRootWindow() == window )
|
||||
// added the m_isShown test --dmazzoni
|
||||
if ( child->GetMacRootWindow() == window && child->m_isShown )
|
||||
{
|
||||
if (child->MacGetWindowFromPointSub(newPoint , outWin ))
|
||||
return TRUE;
|
||||
@@ -1462,9 +1463,12 @@ bool wxWindow::MacGetWindowFromPoint( const wxPoint &screenpoint , wxWindow** ou
|
||||
{
|
||||
wxPoint point( screenpoint ) ;
|
||||
wxWindow* win = wxFindWinFromMacWindow( window ) ;
|
||||
if ( win )
|
||||
{
|
||||
win->ScreenToClient( point ) ;
|
||||
return win->MacGetWindowFromPointSub( point , outWin ) ;
|
||||
}
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
@@ -1907,8 +1911,8 @@ void wxWindow::MacRepositionScrollBars()
|
||||
int width = m_width ;
|
||||
int height = m_height ;
|
||||
|
||||
width -= 2 * MacGetBorderSize() ;
|
||||
height -= 2 * MacGetBorderSize() ;
|
||||
width -= MacGetLeftBorderSize() + MacGetRightBorderSize();
|
||||
height -= MacGetTopBorderSize() + MacGetBottomBorderSize();
|
||||
|
||||
wxPoint vPoint(width-MAC_SCROLLBAR_SIZE, 0) ;
|
||||
wxSize vSize(MAC_SCROLLBAR_SIZE, height - adjust) ;
|
||||
@@ -2183,7 +2187,7 @@ void wxWindow::MacGetPortClientParams(Point* localOrigin, Rect* clipRect, Window
|
||||
SectRect(clipRect, &myClip, clipRect);
|
||||
}
|
||||
|
||||
long wxWindow::MacGetBorderSize( ) const
|
||||
long wxWindow::MacGetLeftBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
@@ -2203,6 +2207,66 @@ long wxWindow::MacGetBorderSize( ) const
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacGetRightBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if ( m_windowStyle &wxDOUBLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if (m_windowStyle &wxSIMPLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacGetTopBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
|
||||
{
|
||||
return 2 ;
|
||||
}
|
||||
else if ( m_windowStyle &wxDOUBLE_BORDER)
|
||||
{
|
||||
return 2 ;
|
||||
}
|
||||
else if (m_windowStyle &wxSIMPLE_BORDER)
|
||||
{
|
||||
return 1 ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacGetBottomBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if ( m_windowStyle &wxDOUBLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if (m_windowStyle &wxSIMPLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacRemoveBordersFromStyle( long style )
|
||||
{
|
||||
return style & ~( wxDOUBLE_BORDER | wxSUNKEN_BORDER | wxRAISED_BORDER | wxBORDER | wxSTATIC_BORDER ) ;
|
||||
|
||||
@@ -21,6 +21,14 @@
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
|
||||
#endif
|
||||
|
||||
short nextMenuId = 100 ; // wxMenu takes the lower ids
|
||||
|
||||
wxChoice::~wxChoice()
|
||||
{
|
||||
// DeleteMenu( m_macPopUpMenuId ) ;
|
||||
DisposeMenu( m_macPopUpMenuHandle ) ;
|
||||
}
|
||||
|
||||
bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
||||
const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
@@ -35,6 +43,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
|
||||
|
||||
m_macPopUpMenuHandle = NewMenu( 1 , "\pPopUp Menu" ) ;
|
||||
m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , -12345 , 0 ,
|
||||
kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ;
|
||||
|
||||
|
||||
@@ -394,11 +394,11 @@ resource 'ldes' ( 128 )
|
||||
} ;
|
||||
|
||||
resource 'CURS' (9, "Hand") {
|
||||
$"01 80 1A 70 26 48 26 4A 12 4D 12 49 68 09 98 01"
|
||||
$"88 02 40 02 20 02 20 04 10 04 08 08 04 08 04 08",
|
||||
$"01 80 1B F0 3F F8 3F FA 1F FF 1F FF 7F FF FF FF"
|
||||
$"FF FE 7F FE 3F FE 3F FC 1F FC 0F F8 07 F8 07 F8",
|
||||
{9, 8}
|
||||
$"0380 04C0 04C0 04C0 04C0 04C0 74F8 9CAE"
|
||||
$"4CAB 240B 2403 1003 0803 0806 0406 0406",
|
||||
$"0380 07C0 07C0 07C0 07C0 07C0 77F8 FFFE"
|
||||
$"7FFF 3FFF 3FFF 1FFF 0FFF 0FFE 07FE 07FE",
|
||||
{0, 7}
|
||||
};
|
||||
|
||||
resource 'CURS' (10, "SizeWE") {
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
#include "wx/dc.h"
|
||||
#include "wx/mac/uma.h"
|
||||
|
||||
#if __MSL__ >= 0x6000
|
||||
#include "math.h"
|
||||
#endif
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
|
||||
#endif
|
||||
@@ -128,7 +132,7 @@ wxDC::~wxDC(void)
|
||||
|
||||
void wxDC::MacSetupPort() const
|
||||
{
|
||||
AGAPortHelper* help = &m_macPortHelper ;
|
||||
AGAPortHelper* help = (AGAPortHelper*) &m_macPortHelper ;
|
||||
help->Setup( m_macPort ) ;
|
||||
m_macPortId = ++m_macCurrentPortId ;
|
||||
::SetOrigin(-m_macLocalOrigin.h, -m_macLocalOrigin.v);
|
||||
@@ -427,7 +431,12 @@ void wxDC::ComputeScaleAndOrigin(void)
|
||||
// CMB: if scale has changed call SetPen to recalulate the line width
|
||||
if (m_scaleX != origScaleX || m_scaleY != origScaleY)
|
||||
{
|
||||
// TODO : set internal flags for recalc
|
||||
// this is a bit artificial, but we need to force wxDC to think
|
||||
// the pen has changed
|
||||
wxPen* pen = & GetPen();
|
||||
wxPen tempPen;
|
||||
m_pen = tempPen;
|
||||
SetPen(* pen);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -36,15 +36,13 @@ GrafPtr macPrintFormerPort = NULL ;
|
||||
|
||||
wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
OSErr err ;
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
|
||||
m_printData = printdata ;
|
||||
m_printData.ConvertToNative() ;
|
||||
|
||||
::UMAPrOpen() ;
|
||||
err = PrError() ;
|
||||
err = UMAPrOpen() ;
|
||||
if ( err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
@@ -52,6 +50,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
|
||||
UMAPrClose() ;
|
||||
}
|
||||
|
||||
#if !TARGET_CARBON
|
||||
if ( ::PrValidate( m_printData.m_macPrintInfo ) )
|
||||
{
|
||||
::PrStlDialog( m_printData.m_macPrintInfo ) ;
|
||||
@@ -75,23 +74,37 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
|
||||
}
|
||||
// sets current port
|
||||
m_macPort = (GrafPtr ) m_macPrintPort ;
|
||||
#else
|
||||
m_macPrintPort = kPMNoReference ;
|
||||
err = PMBeginDocument(
|
||||
m_printData.m_macPrintSettings,
|
||||
m_printData.m_macPageFormat,
|
||||
&m_macPrintPort);
|
||||
if ( err != noErr || m_macPrintPort == kPMNoReference )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
UMAPrClose() ;
|
||||
}
|
||||
// sets current port
|
||||
::GetPort( &m_macPort ) ;
|
||||
#endif
|
||||
m_ok = TRUE ;
|
||||
m_minY = m_minX = 0 ;
|
||||
#if TARGET_CARBON
|
||||
#else
|
||||
m_maxX = (**m_printData.m_macPrintInfo).rPaper.right - (**m_printData.m_macPrintInfo).rPaper.left ;
|
||||
m_maxY = (**m_printData.m_macPrintInfo).rPaper.bottom - (**m_printData.m_macPrintInfo).rPaper.top ;
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
#endif
|
||||
}
|
||||
|
||||
wxPrinterDC::~wxPrinterDC(void)
|
||||
{
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
#if !TARGET_CARBON
|
||||
if ( m_ok )
|
||||
{
|
||||
OSErr err ;
|
||||
wxString message ;
|
||||
|
||||
::PrCloseDoc( m_macPrintPort ) ;
|
||||
err = PrError() ;
|
||||
|
||||
@@ -115,7 +128,17 @@ wxPrinterDC::~wxPrinterDC(void)
|
||||
m_macPortHelper.Clear() ;
|
||||
}
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
if ( m_ok )
|
||||
{
|
||||
err = PMEndDocument(m_macPrintPort);
|
||||
if ( !err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
UMAPrClose() ;
|
||||
}
|
||||
UMAPrClose() ;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -130,7 +153,6 @@ void wxPrinterDC::EndDoc(void)
|
||||
|
||||
void wxPrinterDC::StartPage(void)
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !m_ok )
|
||||
return ;
|
||||
|
||||
@@ -150,11 +172,15 @@ void wxPrinterDC::StartPage(void)
|
||||
m_macPenInstalled = false ;
|
||||
|
||||
|
||||
OSErr err ;
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
|
||||
#if !TARGET_CARBON
|
||||
PrOpenPage( m_macPrintPort , NULL ) ;
|
||||
SetOrigin( - (**m_printData.m_macPrintInfo).rPaper.left , - (**m_printData.m_macPrintInfo).rPaper.top ) ;
|
||||
m_macLocalOrigin.h = (**m_printData.m_macPrintInfo).rPaper.left ;
|
||||
m_macLocalOrigin.v = (**m_printData.m_macPrintInfo).rPaper.top ;
|
||||
|
||||
SetOrigin( - m_macLocalOrigin.h , - m_macLocalOrigin.v ) ;
|
||||
Rect clip = { -32000 , -32000 , 32000 , 32000 } ;
|
||||
::ClipRect( &clip ) ;
|
||||
err = PrError() ;
|
||||
@@ -169,19 +195,29 @@ void wxPrinterDC::StartPage(void)
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
err = PMBeginPage(m_macPrintPort, nil);
|
||||
if ( err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
PMEndPage(m_macPrintPort);
|
||||
PMEndDocument(m_macPrintPort);
|
||||
UMAPrClose() ;
|
||||
::SetPort( macPrintFormerPort ) ;
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void wxPrinterDC::EndPage(void)
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !m_ok )
|
||||
return ;
|
||||
|
||||
OSErr err ;
|
||||
OSStatus err ;
|
||||
wxString message ;
|
||||
|
||||
#if !TARGET_CARBON
|
||||
PrClosePage( (TPrPort*) m_macPort ) ;
|
||||
err = PrError() ;
|
||||
if ( err )
|
||||
@@ -194,7 +230,16 @@ void wxPrinterDC::EndPage(void)
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#else
|
||||
#pragma warning "TODO:printing support for carbon"
|
||||
err = PMEndPage(m_macPrintPort);
|
||||
if ( err )
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
PMEndDocument(m_macPrintPort);
|
||||
UMAPrClose() ;
|
||||
::SetPort( macPrintFormerPort ) ;
|
||||
m_ok = FALSE ;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -20,16 +20,22 @@
|
||||
|
||||
#include "wx/cmndata.h"
|
||||
|
||||
#include "Navigation.h"
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_CLASS(wxDirDialog, wxDialog)
|
||||
#endif
|
||||
|
||||
bool gUseNavServices = NavServicesAvailable() ;
|
||||
|
||||
// the data we need to pass to our standard file hook routine
|
||||
// includes a pointer to the dialog, a pointer to the standard
|
||||
// file reply record (so we can inspect the current selection)
|
||||
// and a copy of the "previous" file spec of the reply record
|
||||
// so we can see if the selection has changed
|
||||
|
||||
#if !TARGET_CARBON
|
||||
|
||||
struct UserDataRec {
|
||||
StandardFileReply *sfrPtr;
|
||||
FSSpec oldSelectionFSSpec;
|
||||
@@ -38,8 +44,6 @@ struct UserDataRec {
|
||||
typedef struct UserDataRec
|
||||
UserDataRec, *UserDataRecPtr;
|
||||
|
||||
#if !TARGET_CARBON
|
||||
|
||||
enum {
|
||||
kSelectItem = 10, // select button item number
|
||||
kSFGetFolderDlgID = 250, // dialog resource number
|
||||
@@ -307,7 +311,6 @@ static pascal short SFGetFolderDialogHook(short item, DialogPtr theDlgPtr, Ptr d
|
||||
|
||||
return item;
|
||||
}
|
||||
#endif
|
||||
|
||||
void StandardGetFolder( ConstStr255Param message , ConstStr255Param path , FileFilterYDUPP fileFilter, StandardFileReply *theSFR)
|
||||
{
|
||||
@@ -433,6 +436,9 @@ static pascal Boolean OnlyVisibleFoldersCustomFileFilter(CInfoPBPtr myCInfoPBPtr
|
||||
return !(visibleFlag && folderFlag);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
||||
const wxString& defaultPath,
|
||||
long style, const wxPoint& pos)
|
||||
@@ -445,6 +451,8 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
||||
|
||||
int wxDirDialog::ShowModal()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !gUseNavServices )
|
||||
{
|
||||
Str255 prompt ;
|
||||
Str255 path ;
|
||||
@@ -457,16 +465,15 @@ int wxDirDialog::ShowModal()
|
||||
|
||||
StandardFileReply reply ;
|
||||
FileFilterYDUPP invisiblesExcludedCustomFilterUPP = 0 ;
|
||||
#if !TARGET_CARBON
|
||||
invisiblesExcludedCustomFilterUPP =
|
||||
NewFileFilterYDProc(OnlyVisibleFoldersCustomFileFilter);
|
||||
#endif
|
||||
|
||||
|
||||
StandardGetFolder( prompt , path , invisiblesExcludedCustomFilterUPP, &reply);
|
||||
|
||||
#if !TARGET_CARBON
|
||||
|
||||
DisposeRoutineDescriptor(invisiblesExcludedCustomFilterUPP);
|
||||
#endif
|
||||
|
||||
if ( reply.sfGood == false )
|
||||
{
|
||||
m_path = "" ;
|
||||
@@ -477,7 +484,105 @@ int wxDirDialog::ShowModal()
|
||||
m_path = wxMacFSSpec2UnixFilename( &reply.sfFile ) ;
|
||||
return wxID_OK ;
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
NavDialogOptions mNavOptions;
|
||||
NavObjectFilterUPP mNavFilterUPP = NULL;
|
||||
NavPreviewUPP mNavPreviewUPP = NULL ;
|
||||
NavReplyRecord mNavReply;
|
||||
AEDesc* mDefaultLocation = NULL ;
|
||||
bool mSelectDefault = false ;
|
||||
|
||||
::NavGetDefaultDialogOptions(&mNavOptions);
|
||||
|
||||
mNavFilterUPP = nil;
|
||||
mNavPreviewUPP = nil;
|
||||
mSelectDefault = false;
|
||||
mNavReply.validRecord = false;
|
||||
mNavReply.replacing = false;
|
||||
mNavReply.isStationery = false;
|
||||
mNavReply.translationNeeded = false;
|
||||
mNavReply.selection.descriptorType = typeNull;
|
||||
mNavReply.selection.dataHandle = nil;
|
||||
mNavReply.keyScript = smSystemScript;
|
||||
mNavReply.fileTranslation = nil;
|
||||
|
||||
// Set default location, the location
|
||||
// that's displayed when the dialog
|
||||
// first appears
|
||||
|
||||
if ( mDefaultLocation ) {
|
||||
|
||||
if (mSelectDefault) {
|
||||
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
|
||||
} else {
|
||||
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
|
||||
}
|
||||
}
|
||||
|
||||
OSErr err = ::NavChooseFolder(
|
||||
mDefaultLocation,
|
||||
&mNavReply,
|
||||
&mNavOptions,
|
||||
NULL,
|
||||
mNavFilterUPP,
|
||||
0L); // User Data
|
||||
|
||||
if ( (err != noErr) && (err != userCanceledErr) ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
|
||||
if (mNavReply.validRecord) { // User chose a folder
|
||||
|
||||
FSSpec folderInfo;
|
||||
FSSpec outFileSpec ;
|
||||
AEDesc specDesc ;
|
||||
|
||||
OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
|
||||
if ( err != noErr ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
folderInfo = **(FSSpec**) specDesc.dataHandle;
|
||||
if (specDesc.dataHandle != nil) {
|
||||
::AEDisposeDesc(&specDesc);
|
||||
}
|
||||
|
||||
// mNavReply.GetFileSpec(folderInfo);
|
||||
|
||||
// The FSSpec from NavChooseFolder is NOT the file spec
|
||||
// for the folder. The parID field is actually the DirID
|
||||
// of the folder itself, not the folder's parent, and
|
||||
// the name field is empty. We must call PBGetCatInfo
|
||||
// to get the parent DirID and folder name
|
||||
|
||||
Str255 name;
|
||||
CInfoPBRec thePB; // Directory Info Parameter Block
|
||||
thePB.dirInfo.ioCompletion = nil;
|
||||
thePB.dirInfo.ioVRefNum = folderInfo.vRefNum; // Volume is right
|
||||
thePB.dirInfo.ioDrDirID = folderInfo.parID; // Folder's DirID
|
||||
thePB.dirInfo.ioNamePtr = name;
|
||||
thePB.dirInfo.ioFDirIndex = -1; // Lookup using Volume and DirID
|
||||
|
||||
err = ::PBGetCatInfoSync(&thePB);
|
||||
if ( err != noErr ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
// Create cannonical FSSpec
|
||||
::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID,
|
||||
name, &outFileSpec);
|
||||
|
||||
// outFolderDirID = thePB.dirInfo.ioDrDirID;
|
||||
m_path = wxMacFSSpec2UnixFilename( &outFileSpec ) ;
|
||||
return wxID_OK ;
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,18 +19,55 @@
|
||||
#include "wx/filedlg.h"
|
||||
#include "wx/intl.h"
|
||||
|
||||
#include "PLStringFuncs.h"
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_CLASS(wxFileDialog, wxDialog)
|
||||
#endif
|
||||
|
||||
// begin wxmac
|
||||
|
||||
#include "Navigation.h"
|
||||
|
||||
#include "morefile.h"
|
||||
#include "moreextr.h"
|
||||
#include "fullpath.h"
|
||||
#include "fspcompa.h"
|
||||
#include "PLStringFuncs.h"
|
||||
|
||||
extern bool gUseNavServices ;
|
||||
|
||||
static pascal void NavEventProc(
|
||||
NavEventCallbackMessage inSelector,
|
||||
NavCBRecPtr ioParams,
|
||||
NavCallBackUserData ioUserData);
|
||||
|
||||
#if TARGET_CARBON
|
||||
static NavEventUPP sStandardNavEventFilter = NewNavEventUPP(NavEventProc);
|
||||
#else
|
||||
static NavEventUPP sStandardNavEventFilter = NewNavEventProc(NavEventProc);
|
||||
#endif
|
||||
|
||||
static pascal void
|
||||
NavEventProc(
|
||||
NavEventCallbackMessage inSelector,
|
||||
NavCBRecPtr ioParams,
|
||||
NavCallBackUserData /* ioUserData */)
|
||||
{
|
||||
if (inSelector == kNavCBEvent) {
|
||||
// In Universal Headers 3.2, Apple changed the definition of
|
||||
/*
|
||||
#if UNIVERSAL_INTERFACES_VERSION >= 0x0320 // Universal Headers 3.2
|
||||
UModalAlerts::ProcessModalEvent(*(ioParams->eventData.eventDataParms.event));
|
||||
|
||||
#else
|
||||
UModalAlerts::ProcessModalEvent(*(ioParams->eventData.event));
|
||||
#endif
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
char * gfilters[] =
|
||||
{
|
||||
"*.TXT" ,
|
||||
@@ -189,7 +226,7 @@ static pascal Boolean SFGetFolderModalDialogFilter(DialogPtr theDlgPtr, EventRec
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#endif !TARGET_CARBON
|
||||
|
||||
void ExtendedOpenFile( ConstStr255Param message , ConstStr255Param path , const char *filter , FileFilterYDUPP fileFilter, StandardFileReply *theSFR)
|
||||
{
|
||||
@@ -451,6 +488,9 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
|
||||
|
||||
int wxFileDialog::ShowModal()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
if ( !gUseNavServices )
|
||||
{
|
||||
if ( m_dialogStyle & wxSAVE )
|
||||
{
|
||||
StandardFileReply reply ;
|
||||
@@ -488,7 +528,7 @@ int wxFileDialog::ShowModal()
|
||||
strcpy((char *)prompt, m_message) ;
|
||||
c2pstr((char *)prompt ) ;
|
||||
|
||||
strcpy((char *)path, m_path ) ;
|
||||
strcpy((char *)path, m_dir ) ;
|
||||
c2pstr((char *)path ) ;
|
||||
|
||||
StandardFileReply reply ;
|
||||
@@ -515,6 +555,137 @@ int wxFileDialog::ShowModal()
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
NavDialogOptions mNavOptions;
|
||||
NavObjectFilterUPP mNavFilterUPP = NULL;
|
||||
NavPreviewUPP mNavPreviewUPP = NULL ;
|
||||
NavReplyRecord mNavReply;
|
||||
AEDesc mDefaultLocation ;
|
||||
bool mSelectDefault = false ;
|
||||
|
||||
::NavGetDefaultDialogOptions(&mNavOptions);
|
||||
|
||||
mNavFilterUPP = nil;
|
||||
mNavPreviewUPP = nil;
|
||||
mSelectDefault = false;
|
||||
mNavReply.validRecord = false;
|
||||
mNavReply.replacing = false;
|
||||
mNavReply.isStationery = false;
|
||||
mNavReply.translationNeeded = false;
|
||||
mNavReply.selection.descriptorType = typeNull;
|
||||
mNavReply.selection.dataHandle = nil;
|
||||
mNavReply.keyScript = smSystemScript;
|
||||
mNavReply.fileTranslation = nil;
|
||||
|
||||
// Set default location, the location
|
||||
// that's displayed when the dialog
|
||||
// first appears
|
||||
|
||||
FSSpec location ;
|
||||
wxUnixFilename2FSSpec( m_dir , &location ) ;
|
||||
OSErr err = noErr ;
|
||||
|
||||
mDefaultLocation.descriptorType = typeNull;
|
||||
mDefaultLocation.dataHandle = nil;
|
||||
|
||||
err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation );
|
||||
|
||||
if ( mDefaultLocation.dataHandle ) {
|
||||
|
||||
if (mSelectDefault) {
|
||||
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
|
||||
} else {
|
||||
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
|
||||
}
|
||||
}
|
||||
|
||||
strcpy((char *)mNavOptions.message, m_message) ;
|
||||
c2pstr((char *)mNavOptions.message ) ;
|
||||
|
||||
strcpy((char *)mNavOptions.savedFileName, m_fileName) ;
|
||||
c2pstr((char *)mNavOptions.savedFileName ) ;
|
||||
|
||||
if ( m_dialogStyle & wxSAVE )
|
||||
{
|
||||
|
||||
mNavOptions.dialogOptionFlags |= kNavNoTypePopup ;
|
||||
mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ;
|
||||
mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ;
|
||||
|
||||
err = ::NavPutFile(
|
||||
&mDefaultLocation,
|
||||
&mNavReply,
|
||||
&mNavOptions,
|
||||
sStandardNavEventFilter ,
|
||||
'TEXT',
|
||||
'TEXT',
|
||||
0L); // User Data
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_dialogStyle & wxMULTIPLE )
|
||||
mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ;
|
||||
else
|
||||
mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ;
|
||||
|
||||
err = ::NavGetFile(
|
||||
&mDefaultLocation,
|
||||
&mNavReply,
|
||||
&mNavOptions,
|
||||
sStandardNavEventFilter ,
|
||||
mNavPreviewUPP,
|
||||
mNavFilterUPP,
|
||||
0L /*inFileTypes.TypeListHandle() */,
|
||||
0L); // User Data
|
||||
}
|
||||
|
||||
if ( mDefaultLocation.dataHandle != nil )
|
||||
{
|
||||
::AEDisposeDesc(&mDefaultLocation);
|
||||
}
|
||||
|
||||
if ( (err != noErr) && (err != userCanceledErr) ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
|
||||
if (mNavReply.validRecord) {
|
||||
|
||||
FSSpec outFileSpec ;
|
||||
AEDesc specDesc ;
|
||||
|
||||
long count ;
|
||||
::AECountItems( &mNavReply.selection , &count ) ;
|
||||
for ( long i = 1 ; i <= count ; ++i )
|
||||
{
|
||||
OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, NULL , &specDesc);
|
||||
if ( err != noErr ) {
|
||||
m_path = "" ;
|
||||
return wxID_CANCEL ;
|
||||
}
|
||||
outFileSpec = **(FSSpec**) specDesc.dataHandle;
|
||||
if (specDesc.dataHandle != nil) {
|
||||
::AEDisposeDesc(&specDesc);
|
||||
}
|
||||
|
||||
|
||||
// outFolderDirID = thePB.dirInfo.ioDrDirID;
|
||||
m_path = wxMacFSSpec2UnixFilename( &outFileSpec ) ;
|
||||
m_paths.Add( m_path ) ;
|
||||
m_fileNames.Add(m_fileName);
|
||||
}
|
||||
// set these to the first hit
|
||||
m_path = m_paths[ 0 ] ;
|
||||
m_fileName = wxFileNameFromPath(m_path);
|
||||
m_dir = wxPathOnly(m_path);
|
||||
|
||||
return wxID_OK ;
|
||||
}
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
}
|
||||
|
||||
// Generic file load/save dialog
|
||||
static wxString
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "wx/defs.h"
|
||||
#include "wx/string.h"
|
||||
#include "wx/font.h"
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/gdicmn.h"
|
||||
|
||||
#include "wx/fontutil.h"
|
||||
@@ -119,6 +120,12 @@ void wxFont::Init()
|
||||
wxTheFontList->Append(this);
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxNativeFontInfo& info)
|
||||
{
|
||||
return Create(info.pointSize, info.family, info.style, info.weight,
|
||||
info.underlined, info.faceName, info.encoding);
|
||||
}
|
||||
|
||||
wxFont::wxFont(const wxString& fontdesc)
|
||||
{
|
||||
wxNativeFontInfo info;
|
||||
@@ -143,12 +150,6 @@ bool wxFont::Create(int pointSize,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxNativeFontInfo& info)
|
||||
{
|
||||
return Create(info.pointSize, info.family, info.style, info.weight,
|
||||
info.underlined, info.faceName, info.encoding);
|
||||
}
|
||||
|
||||
wxFont::~wxFont()
|
||||
{
|
||||
if (wxTheFontList)
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#endif
|
||||
|
||||
#include "wx/fontenum.h"
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/fontmap.h"
|
||||
#include "wx/fontutil.h"
|
||||
|
||||
|
||||
@@ -199,8 +199,9 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id,
|
||||
{
|
||||
wxStatusBar *statusBar = NULL;
|
||||
|
||||
statusBar = new wxStatusBar(this, id, style, name);
|
||||
|
||||
statusBar = new wxStatusBar(this, id,
|
||||
style, name);
|
||||
statusBar->SetSize( 100 , 15 ) ;
|
||||
statusBar->SetFieldsCount(number);
|
||||
return statusBar;
|
||||
}
|
||||
@@ -216,7 +217,7 @@ void wxFrame::PositionStatusBar()
|
||||
|
||||
// Since we wish the status bar to be directly under the client area,
|
||||
// we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS.
|
||||
m_frameStatusBar->SetSize(0, h, w, WX_MAC_STATUSBAR_HEIGHT );
|
||||
m_frameStatusBar->SetSize(0, h, w, sh);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,8 +297,7 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
|
||||
{
|
||||
int statusX, statusY;
|
||||
GetStatusBar()->GetClientSize(&statusX, &statusY);
|
||||
// right now this is a constant, this might change someday
|
||||
*y -= WX_MAC_STATUSBAR_HEIGHT ;
|
||||
*y -= statusY;
|
||||
}
|
||||
#endif // wxUSE_STATUSBAR
|
||||
|
||||
|
||||
@@ -180,6 +180,7 @@ int wxListBox::DoAppend(const wxString& item)
|
||||
m_dataArray.Add( NULL );
|
||||
}
|
||||
m_noItems ++;
|
||||
DoSetItemClientData( index , NULL ) ;
|
||||
MacAppend( item ) ;
|
||||
|
||||
return index ;
|
||||
@@ -255,6 +256,16 @@ int wxListBox::FindString(const wxString& st) const
|
||||
if ( EqualString( s1 , s2 , false , false ) )
|
||||
return i ;
|
||||
}
|
||||
if ( s.Left(1) = "*" && s.Length() > 1 )
|
||||
{
|
||||
s.MakeLower() ;
|
||||
for ( int i = 0 ; i < m_noItems ; ++i )
|
||||
{
|
||||
if ( GetString(i).Lower().Matches(s) )
|
||||
return i ;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -700,8 +700,37 @@ void wxMenuBar::MacInstallMenuBar()
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
#else
|
||||
if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName )
|
||||
{
|
||||
wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false );
|
||||
UMASetMenuTitle( menu->GetHMenu() , label ) ;
|
||||
|
||||
for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++)
|
||||
{
|
||||
item = (wxMenuItem *)node->Data();
|
||||
subMenu = item->GetSubMenu() ;
|
||||
if (subMenu)
|
||||
{
|
||||
UMAInsertMenu( subMenu->GetHMenu() , -1 ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( item->GetId() == wxApp::s_macAboutMenuItemId )
|
||||
{
|
||||
Str255 label ;
|
||||
UInt8 modifiers ;
|
||||
SInt16 key ;
|
||||
wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu
|
||||
UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label );
|
||||
UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
UMAInsertMenu(m_menus[i]->GetHMenu(), 0);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false );
|
||||
UMASetMenuTitle( menu->GetHMenu() , label ) ;
|
||||
|
||||
@@ -42,6 +42,9 @@ const short kwxMacTabBottomMargin = 16 ;
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#if !USE_SHARED_LIBRARIES
|
||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED)
|
||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxNotebook, wxControl)
|
||||
EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange)
|
||||
|
||||
|
||||
@@ -136,7 +136,6 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
||||
// Create an abort window
|
||||
wxBeginBusyCursor();
|
||||
|
||||
/*
|
||||
wxWindow *win = CreateAbortWindow(parent, printout);
|
||||
wxYield();
|
||||
|
||||
@@ -149,7 +148,6 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
||||
sm_abortWindow = win;
|
||||
sm_abortWindow->Show(TRUE);
|
||||
wxYield();
|
||||
*/
|
||||
|
||||
printout->OnBeginPrinting();
|
||||
|
||||
@@ -178,6 +176,11 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
||||
}
|
||||
else
|
||||
{
|
||||
GrafPtr thePort ;
|
||||
GetPort( &thePort ) ;
|
||||
wxYield() ;
|
||||
SetPort( thePort ) ;
|
||||
|
||||
dc->StartPage();
|
||||
keepGoing = printout->OnPrintPage(pn);
|
||||
dc->EndPage();
|
||||
|
||||
@@ -111,6 +111,14 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
wxString value ;
|
||||
|
||||
{
|
||||
TEHandle teH ;
|
||||
long size ;
|
||||
|
||||
UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
|
||||
(*teH)->lineHeight = -1 ;
|
||||
}
|
||||
|
||||
if( wxApp::s_macDefaultEncodingIsPC )
|
||||
value = wxMacMakeMacStringFromPC( st ) ;
|
||||
else
|
||||
@@ -152,8 +160,7 @@ void wxTextCtrl::SetValue(const wxString& st)
|
||||
else
|
||||
value = st ;
|
||||
UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
|
||||
Refresh() ;
|
||||
// MacInvalidateControl() ;
|
||||
UMADrawControl( m_macControl ) ;
|
||||
}
|
||||
|
||||
// Clipboard operations
|
||||
@@ -208,7 +215,7 @@ void wxTextCtrl::Paste()
|
||||
UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
|
||||
TEFromScrap() ;
|
||||
TEPaste( teH ) ;
|
||||
// MacInvalidateControl() ;
|
||||
UMADrawControl( m_macControl ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -801,9 +801,11 @@ bool wxThreadModule::OnInit()
|
||||
long response;
|
||||
bool hasThreadManager ;
|
||||
hasThreadManager = Gestalt( gestaltThreadMgrAttr, &response) == noErr && response & 1;
|
||||
#if TARGET_RT_MAC_CFM
|
||||
#if !TARGET_CARBON
|
||||
#if GENERATINGCFM
|
||||
// verify presence of shared library
|
||||
hasThreadManager = hasThreadManager && ((Ptr)NewThread != (Ptr)kUnresolvedCFragSymbolAddress);
|
||||
#endif
|
||||
#endif
|
||||
if ( !hasThreadManager )
|
||||
{
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#include <wx/mac/uma.h>
|
||||
#include <wx/mac/aga.h>
|
||||
|
||||
|
||||
#include "Navigation.h"
|
||||
|
||||
// init
|
||||
|
||||
static bool sUMAHasAppearance = false ;
|
||||
@@ -14,7 +17,19 @@ static long sUMAWindowManagerAttr = 0 ;
|
||||
|
||||
bool UMAHasWindowManager() { return sUMAHasWindowManager ; }
|
||||
long UMAGetWindowManagerAttr() { return sUMAWindowManagerAttr ; }
|
||||
|
||||
void UMACleanupToolbox()
|
||||
{
|
||||
#if UMA_USE_APPEARANCE
|
||||
if ( sUMAHasAppearance )
|
||||
{
|
||||
UnregisterAppearanceClient() ;
|
||||
}
|
||||
#endif
|
||||
if ( NavServicesAvailable() )
|
||||
{
|
||||
NavUnload() ;
|
||||
}
|
||||
}
|
||||
void UMAInitToolbox( UInt16 inMoreMastersCalls )
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
@@ -24,7 +39,6 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
|
||||
|
||||
::InitGraf(&qd.thePort);
|
||||
::InitFonts();
|
||||
::InitWindows();
|
||||
::InitMenus();
|
||||
::TEInit();
|
||||
::InitDialogs(0L);
|
||||
@@ -60,6 +74,16 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
|
||||
}
|
||||
#endif // UMA_USE_WINDOWMGR
|
||||
#endif
|
||||
|
||||
if ( sUMAHasWindowManager )
|
||||
InitFloatingWindows() ;
|
||||
else
|
||||
InitWindows();
|
||||
|
||||
if ( NavServicesAvailable() )
|
||||
{
|
||||
NavLoad() ;
|
||||
}
|
||||
}
|
||||
|
||||
// process manager
|
||||
@@ -250,7 +274,7 @@ void UMAInsertMenu( MenuRef insertMenu , SInt16 afterId )
|
||||
|
||||
int gPrOpenCounter = 0 ;
|
||||
|
||||
void UMAPrOpen()
|
||||
OSStatus UMAPrOpen()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
OSErr err = noErr ;
|
||||
@@ -261,12 +285,20 @@ void UMAPrOpen()
|
||||
err = PrError() ;
|
||||
wxASSERT( err == noErr ) ;
|
||||
}
|
||||
return err ;
|
||||
#else
|
||||
#pragma warning "TODO Printing for Carbon"
|
||||
OSStatus err = noErr ;
|
||||
++gPrOpenCounter ;
|
||||
if ( gPrOpenCounter == 1 )
|
||||
{
|
||||
err = PMBegin() ;
|
||||
wxASSERT( err == noErr ) ;
|
||||
}
|
||||
return err ;
|
||||
#endif
|
||||
}
|
||||
|
||||
void UMAPrClose()
|
||||
OSStatus UMAPrClose()
|
||||
{
|
||||
#if !TARGET_CARBON
|
||||
OSErr err = noErr ;
|
||||
@@ -278,8 +310,16 @@ void UMAPrClose()
|
||||
wxASSERT( err == noErr ) ;
|
||||
}
|
||||
--gPrOpenCounter ;
|
||||
return err ;
|
||||
#else
|
||||
#pragma warning "TODO Printing for Carbon"
|
||||
OSStatus err = noErr ;
|
||||
wxASSERT( gPrOpenCounter >= 1 ) ;
|
||||
if ( gPrOpenCounter == 1 )
|
||||
{
|
||||
err = PMEnd() ;
|
||||
}
|
||||
--gPrOpenCounter ;
|
||||
return err ;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,14 @@ bool wxGetUserId(char *buf, int maxSize)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
const wxChar* wxGetHomeDir(wxString *pstr)
|
||||
{
|
||||
*pstr = wxMacFindFolder( (short) kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder ) ;
|
||||
return pstr->c_str() ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Get user name e.g. AUTHOR
|
||||
bool wxGetUserName(char *buf, int maxSize)
|
||||
{
|
||||
|
||||
190
src/mac/wave.cpp
190
src/mac/wave.cpp
@@ -18,12 +18,12 @@
|
||||
#include "wx/mac/wave.h"
|
||||
|
||||
wxWave::wxWave()
|
||||
: m_waveData(NULL), m_waveLength(0), m_isResource(FALSE)
|
||||
: m_hSnd(NULL), m_waveLength(0), m_isResource(true), m_sndChan(0)
|
||||
{
|
||||
}
|
||||
|
||||
wxWave::wxWave(const wxString& sFileName, bool isResource)
|
||||
: m_waveData(NULL), m_waveLength(0), m_isResource(FALSE)
|
||||
: m_hSnd(NULL), m_waveLength(0), m_isResource(true), m_sndChan(0)
|
||||
{
|
||||
Create(sFileName, isResource);
|
||||
}
|
||||
@@ -34,28 +34,196 @@ wxWave::~wxWave()
|
||||
Free();
|
||||
}
|
||||
|
||||
|
||||
bool wxWave::Create(const wxString& fileName, bool isResource)
|
||||
{
|
||||
Free();
|
||||
bool ret = false;
|
||||
m_sndname = fileName;
|
||||
m_isResource = isResource;
|
||||
|
||||
// TODO
|
||||
if (m_isResource)
|
||||
ret = true;
|
||||
else
|
||||
{ /*
|
||||
if (sndChan)
|
||||
{ // we're playing
|
||||
FSClose(SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel(sndChan, TRUE);
|
||||
free(sndChan);
|
||||
sndChan = 0;
|
||||
KillTimer(0,timerID);
|
||||
}
|
||||
|
||||
if (!lpSnd)
|
||||
return true;
|
||||
|
||||
return FALSE;
|
||||
if (_access(lpSnd,0)) // no file, no service
|
||||
return false;
|
||||
|
||||
// Allocate SndChannel
|
||||
sndChan = (SndChannelPtr) malloc (sizeof(SndChannel));
|
||||
|
||||
if (!sndChan)
|
||||
return false;
|
||||
|
||||
sndChan->qLength = 128;
|
||||
|
||||
if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0))
|
||||
{
|
||||
free(sndChan);
|
||||
sndChan = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd)))
|
||||
{
|
||||
SndDisposeChannel(sndChan, TRUE);
|
||||
free(sndChan);
|
||||
sndChan = 0;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool async = false;
|
||||
|
||||
if (fdwSound & SND_ASYNC)
|
||||
async = true;
|
||||
|
||||
if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr)
|
||||
{
|
||||
FSClose (SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel (sndChan, TRUE);
|
||||
free (sndChan);
|
||||
sndChan = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (async)
|
||||
{ // haven't finish yet
|
||||
timerID = SetTimer(0, 0, 250, TimerCallBack);
|
||||
}
|
||||
else
|
||||
{
|
||||
FSClose (SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel (sndChan, TRUE);
|
||||
free (sndChan);
|
||||
sndChan = 0;
|
||||
}*/
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//don't know what to do with looped, wth
|
||||
bool wxWave::Play(bool async, bool looped) const
|
||||
{
|
||||
if (!IsOk())
|
||||
return FALSE;
|
||||
char lpSnd[32];
|
||||
bool ret = false;
|
||||
|
||||
if (m_isResource)
|
||||
{
|
||||
strcpy(lpSnd, m_sndname);
|
||||
c2pstr((char *) lpSnd);
|
||||
SndListHandle hSnd;
|
||||
|
||||
hSnd = (SndListHandle) GetNamedResource('snd ',(const unsigned char *) lpSnd);
|
||||
|
||||
// TODO
|
||||
return FALSE;
|
||||
if ((hSnd != NULL) && (SndPlay(m_sndChan, hSnd, async) == noErr))
|
||||
ret = true;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
bool wxWave::Free()
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
bool ret = false;
|
||||
|
||||
if (m_isResource)
|
||||
{
|
||||
m_sndname.Empty();
|
||||
ret = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//TODO,
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//code below is from an old implementation used for telinfo with MSVC crossplatform support
|
||||
//technology proceeds, so it would be the wisest to drop this code, but it's left here just
|
||||
//for the sake of a reference. BTW: Wave files can now be played with QT, starting from V3
|
||||
|
||||
/*static short MacOpenSndFile (char * path)
|
||||
{
|
||||
VolumeParam vp;
|
||||
FSSpec fspec;
|
||||
Str255 name;
|
||||
char *c;
|
||||
|
||||
// first, get the volume reference number for the file. Start by
|
||||
// making a Pstring with just the volume name
|
||||
strcpy ((char *) name, path);
|
||||
if (c = strchr ((char *) name, ':'))
|
||||
{
|
||||
c++;
|
||||
*c = '\0';
|
||||
}
|
||||
|
||||
c2pstr ((char *) name);
|
||||
vp.ioCompletion = 0;
|
||||
vp.ioVolIndex = -1;
|
||||
vp.ioNamePtr = name;
|
||||
vp.ioVRefNum = 0;
|
||||
|
||||
if (PBGetVInfo((ParamBlockRec *)&vp, 0) != noErr)
|
||||
return 0;
|
||||
|
||||
// next, buld an FSSpec for the file
|
||||
strcpy ((char *) name, path);
|
||||
c2pstr ((char *) name);
|
||||
if (FSMakeFSSpec (vp.ioVRefNum, 0, name, &fspec) != noErr)
|
||||
return 0;
|
||||
|
||||
short frefnum;
|
||||
// now open the file, and return it's reference number
|
||||
if (FSpOpenDF(&fspec, fsRdPerm, &frefnum) != noErr)
|
||||
return 0;
|
||||
|
||||
return frefnum;
|
||||
}
|
||||
|
||||
|
||||
void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
|
||||
{
|
||||
if(!sndChan)
|
||||
{
|
||||
KillTimer(0,timerID);
|
||||
return;
|
||||
}
|
||||
|
||||
SCStatus scstat;
|
||||
|
||||
if (noErr == SndChannelStatus (sndChan, sizeof (SCStatus), &scstat)) {
|
||||
if (scstat.scChannelPaused || scstat.scChannelBusy)
|
||||
return; // not done yet
|
||||
}
|
||||
|
||||
// either error or done.
|
||||
FSClose (SndRefNum);
|
||||
SndRefNum = 0;
|
||||
SndDisposeChannel (sndChan, TRUE);
|
||||
free (sndChan);
|
||||
sndChan = 0;
|
||||
KillTimer(0,timerID);
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
@@ -437,8 +437,8 @@ void wxWindow::DoGetClientSize(int *x, int *y) const
|
||||
*x = m_width ;
|
||||
*y = m_height ;
|
||||
|
||||
*x -= 2 * MacGetBorderSize( ) ;
|
||||
*y -= 2 * MacGetBorderSize( ) ;
|
||||
*x -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
|
||||
*y -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( );
|
||||
|
||||
if ( (m_vScrollBar && m_vScrollBar->IsShown()) || (m_hScrollBar && m_hScrollBar->IsShown()) )
|
||||
{
|
||||
@@ -627,7 +627,7 @@ void wxWindow::DoSetSize(int x, int y, int width, int height, int sizeFlags)
|
||||
|
||||
wxPoint wxWindow::GetClientAreaOrigin() const
|
||||
{
|
||||
return wxPoint(MacGetBorderSize( ) , MacGetBorderSize( ) );
|
||||
return wxPoint(MacGetLeftBorderSize( ) , MacGetTopBorderSize( ) );
|
||||
}
|
||||
|
||||
// Makes an adjustment to the window position (for example, a frame that has
|
||||
@@ -725,7 +725,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
|
||||
if ( !fontToUse )
|
||||
fontToUse = &m_font;
|
||||
|
||||
wxClientDC dc( this ) ;
|
||||
wxClientDC dc( (wxWindow*) this ) ;
|
||||
long lx,ly,ld,le ;
|
||||
dc.GetTextExtent( string , &lx , &ly , &ld, &le, fontToUse ) ;
|
||||
if ( externalLeading )
|
||||
@@ -1417,8 +1417,8 @@ void wxWindow::DoSetClientSize(int width, int height)
|
||||
if ( height != -1 && m_vScrollBar )
|
||||
height += MAC_SCROLLBAR_SIZE ;
|
||||
|
||||
width += 2 * MacGetBorderSize( ) ;
|
||||
height += 2 * MacGetBorderSize( ) ;
|
||||
width += MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
|
||||
height += MacGetTopBorderSize( ) + MacGetBottomBorderSize( ) ;
|
||||
|
||||
DoSetSize( -1 , -1 , width , height ) ;
|
||||
}
|
||||
@@ -1443,7 +1443,8 @@ bool wxWindow::MacGetWindowFromPointSub( const wxPoint &point , wxWindow** outWi
|
||||
for (wxNode *node = GetChildren().First(); node; node = node->Next())
|
||||
{
|
||||
wxWindow *child = (wxWindow*)node->Data();
|
||||
if ( child->GetMacRootWindow() == window )
|
||||
// added the m_isShown test --dmazzoni
|
||||
if ( child->GetMacRootWindow() == window && child->m_isShown )
|
||||
{
|
||||
if (child->MacGetWindowFromPointSub(newPoint , outWin ))
|
||||
return TRUE;
|
||||
@@ -1462,9 +1463,12 @@ bool wxWindow::MacGetWindowFromPoint( const wxPoint &screenpoint , wxWindow** ou
|
||||
{
|
||||
wxPoint point( screenpoint ) ;
|
||||
wxWindow* win = wxFindWinFromMacWindow( window ) ;
|
||||
if ( win )
|
||||
{
|
||||
win->ScreenToClient( point ) ;
|
||||
return win->MacGetWindowFromPointSub( point , outWin ) ;
|
||||
}
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
@@ -1907,8 +1911,8 @@ void wxWindow::MacRepositionScrollBars()
|
||||
int width = m_width ;
|
||||
int height = m_height ;
|
||||
|
||||
width -= 2 * MacGetBorderSize() ;
|
||||
height -= 2 * MacGetBorderSize() ;
|
||||
width -= MacGetLeftBorderSize() + MacGetRightBorderSize();
|
||||
height -= MacGetTopBorderSize() + MacGetBottomBorderSize();
|
||||
|
||||
wxPoint vPoint(width-MAC_SCROLLBAR_SIZE, 0) ;
|
||||
wxSize vSize(MAC_SCROLLBAR_SIZE, height - adjust) ;
|
||||
@@ -2183,7 +2187,7 @@ void wxWindow::MacGetPortClientParams(Point* localOrigin, Rect* clipRect, Window
|
||||
SectRect(clipRect, &myClip, clipRect);
|
||||
}
|
||||
|
||||
long wxWindow::MacGetBorderSize( ) const
|
||||
long wxWindow::MacGetLeftBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
@@ -2203,6 +2207,66 @@ long wxWindow::MacGetBorderSize( ) const
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacGetRightBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if ( m_windowStyle &wxDOUBLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if (m_windowStyle &wxSIMPLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacGetTopBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
|
||||
{
|
||||
return 2 ;
|
||||
}
|
||||
else if ( m_windowStyle &wxDOUBLE_BORDER)
|
||||
{
|
||||
return 2 ;
|
||||
}
|
||||
else if (m_windowStyle &wxSIMPLE_BORDER)
|
||||
{
|
||||
return 1 ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacGetBottomBorderSize( ) const
|
||||
{
|
||||
if( m_macWindowData )
|
||||
return 0 ;
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if ( m_windowStyle &wxDOUBLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
else if (m_windowStyle &wxSIMPLE_BORDER)
|
||||
{
|
||||
return 3 ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
long wxWindow::MacRemoveBordersFromStyle( long style )
|
||||
{
|
||||
return style & ~( wxDOUBLE_BORDER | wxSUNKEN_BORDER | wxRAISED_BORDER | wxBORDER | wxSTATIC_BORDER ) ;
|
||||
|
||||
@@ -423,7 +423,7 @@ xpmParseHeader(data)
|
||||
if (!l)
|
||||
return (XpmFileInvalid);
|
||||
buf[l] = '\0';
|
||||
#if defined(macintosh) ||<EFBFBD>defined(__APPLE__)
|
||||
#if defined(macintosh) || defined(__APPLE__)
|
||||
ptr = strrchr(buf, '_');
|
||||
#else
|
||||
ptr = rindex(buf, '_');
|
||||
|
||||
Reference in New Issue
Block a user