dynamic allocation of file type arrays etc...

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17385 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2002-09-26 08:53:28 +00:00
parent 52000d0bbb
commit 335f8251c4
2 changed files with 38 additions and 48 deletions

View File

@@ -46,15 +46,13 @@ extern bool gUseNavServices ;
// and a copy of the "previous" file spec of the reply record // and a copy of the "previous" file spec of the reply record
// so we can see if the selection has changed // so we can see if the selection has changed
const int kwxMacFileTypes = 10 ;
struct OpenUserDataRec { struct OpenUserDataRec {
int currentfilter ; int currentfilter ;
wxString name [kwxMacFileTypes] ; wxArrayString name ;
wxString extensions[kwxMacFileTypes] ; wxArrayString extensions ;
OSType filtermactypes[kwxMacFileTypes] ; wxArrayLong filtermactypes ;
int numfilters ;
}; };
typedef struct OpenUserDataRec typedef struct OpenUserDataRec
OpenUserDataRec, *OpenUserDataRecPtr; OpenUserDataRec, *OpenUserDataRecPtr;
@@ -125,15 +123,15 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
int filterIndex = 0; int filterIndex = 0;
bool isName = true ; bool isName = true ;
wxString current ; wxString current ;
for( unsigned int i = 0; i < filter2.Len(); i++ ) for( unsigned int i = 0; i < filter2.Len() ; i++ )
{ {
if( filter2.GetChar(i) == wxT('|') ) if( filter2.GetChar(i) == wxT('|') )
{ {
if( isName ) { if( isName ) {
myData->name[filterIndex] = current ; myData->name.Add( current ) ;
} }
else { else {
myData->extensions[filterIndex] = current.MakeUpper() ; myData->extensions.Add( current.MakeUpper() ) ;
++filterIndex ; ++filterIndex ;
} }
isName = !isName ; isName = !isName ;
@@ -149,35 +147,32 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
wxASSERT_MSG( filterIndex == 0 || !isName , "incorrect format of format string" ) ; wxASSERT_MSG( filterIndex == 0 || !isName , "incorrect format of format string" ) ;
if ( current.IsEmpty() ) if ( current.IsEmpty() )
myData->extensions[filterIndex] = myData->name[filterIndex] ; myData->extensions.Add( myData->name[filterIndex] ) ;
else else
myData->extensions[filterIndex] = current.MakeUpper() ; myData->extensions.Add( current.MakeUpper() ) ;
if ( filterIndex == 0 || isName )
myData->name.Add( current.MakeUpper() ) ;
++filterIndex ; ++filterIndex ;
myData->numfilters = filterIndex ; for ( int i = 0 ; i < myData->extensions.GetCount() ; i++ )
for ( int i = 0 ; i < myData->numfilters ; i++ )
{ {
int j ; int j ;
for ( j = 0 ; gfilters[j] ; j++ ) for ( j = 0 ; gfilters[j] ; j++ )
{ {
if ( strcmp( myData->extensions[i] , gfilters[j] ) == 0 ) if ( strcmp( myData->extensions[i] , gfilters[j] ) == 0 )
{ {
myData->filtermactypes[i] = gfiltersmac[j] ; myData->filtermactypes.Add( gfiltersmac[j] ) ;
break ; break ;
} }
} }
if( gfilters[j] == NULL ) if( gfilters[j] == NULL )
{ {
myData->filtermactypes[i] = '****' ; myData->filtermactypes.Add( '****' ) ;
} }
} }
} }
else
{
myData->numfilters = 0 ;
}
} }
static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data) static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data)
@@ -193,7 +188,7 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP
wxString file(filename) ; wxString file(filename) ;
file.MakeUpper() ; file.MakeUpper() ;
if ( data->numfilters > 0 ) if ( data->extensions.GetCount() > 0 )
{ {
//for ( int i = 0 ; i < data->numfilters ; ++i ) //for ( int i = 0 ; i < data->numfilters ; ++i )
int i = data->currentfilter ; int i = data->currentfilter ;
@@ -430,10 +425,10 @@ int wxFileDialog::ShowModal()
MakeUserDataRec( &myData , m_wildCard ) ; MakeUserDataRec( &myData , m_wildCard ) ;
NavTypeListHandle typelist = NULL ; NavTypeListHandle typelist = NULL ;
if ( myData.numfilters > 0 ) if ( myData.extensions.GetCount() > 0 )
{ {
mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.numfilters ) ; mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ;
for ( int i = 0 ; i < myData.numfilters ; ++i ) { for ( int i = 0 ; i < myData.extensions.GetCount() ; ++i ) {
(*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ; (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ;
(*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ; (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ;
(*mNavOptions.popupExtension)[i].menuType = i ; (*mNavOptions.popupExtension)[i].menuType = i ;

View File

@@ -46,15 +46,13 @@ extern bool gUseNavServices ;
// and a copy of the "previous" file spec of the reply record // and a copy of the "previous" file spec of the reply record
// so we can see if the selection has changed // so we can see if the selection has changed
const int kwxMacFileTypes = 10 ;
struct OpenUserDataRec { struct OpenUserDataRec {
int currentfilter ; int currentfilter ;
wxString name [kwxMacFileTypes] ; wxArrayString name ;
wxString extensions[kwxMacFileTypes] ; wxArrayString extensions ;
OSType filtermactypes[kwxMacFileTypes] ; wxArrayLong filtermactypes ;
int numfilters ;
}; };
typedef struct OpenUserDataRec typedef struct OpenUserDataRec
OpenUserDataRec, *OpenUserDataRecPtr; OpenUserDataRec, *OpenUserDataRecPtr;
@@ -125,15 +123,15 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
int filterIndex = 0; int filterIndex = 0;
bool isName = true ; bool isName = true ;
wxString current ; wxString current ;
for( unsigned int i = 0; i < filter2.Len(); i++ ) for( unsigned int i = 0; i < filter2.Len() ; i++ )
{ {
if( filter2.GetChar(i) == wxT('|') ) if( filter2.GetChar(i) == wxT('|') )
{ {
if( isName ) { if( isName ) {
myData->name[filterIndex] = current ; myData->name.Add( current ) ;
} }
else { else {
myData->extensions[filterIndex] = current.MakeUpper() ; myData->extensions.Add( current.MakeUpper() ) ;
++filterIndex ; ++filterIndex ;
} }
isName = !isName ; isName = !isName ;
@@ -149,35 +147,32 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
wxASSERT_MSG( filterIndex == 0 || !isName , "incorrect format of format string" ) ; wxASSERT_MSG( filterIndex == 0 || !isName , "incorrect format of format string" ) ;
if ( current.IsEmpty() ) if ( current.IsEmpty() )
myData->extensions[filterIndex] = myData->name[filterIndex] ; myData->extensions.Add( myData->name[filterIndex] ) ;
else else
myData->extensions[filterIndex] = current.MakeUpper() ; myData->extensions.Add( current.MakeUpper() ) ;
if ( filterIndex == 0 || isName )
myData->name.Add( current.MakeUpper() ) ;
++filterIndex ; ++filterIndex ;
myData->numfilters = filterIndex ; for ( int i = 0 ; i < myData->extensions.GetCount() ; i++ )
for ( int i = 0 ; i < myData->numfilters ; i++ )
{ {
int j ; int j ;
for ( j = 0 ; gfilters[j] ; j++ ) for ( j = 0 ; gfilters[j] ; j++ )
{ {
if ( strcmp( myData->extensions[i] , gfilters[j] ) == 0 ) if ( strcmp( myData->extensions[i] , gfilters[j] ) == 0 )
{ {
myData->filtermactypes[i] = gfiltersmac[j] ; myData->filtermactypes.Add( gfiltersmac[j] ) ;
break ; break ;
} }
} }
if( gfilters[j] == NULL ) if( gfilters[j] == NULL )
{ {
myData->filtermactypes[i] = '****' ; myData->filtermactypes.Add( '****' ) ;
} }
} }
} }
else
{
myData->numfilters = 0 ;
}
} }
static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data) static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data)
@@ -193,7 +188,7 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP
wxString file(filename) ; wxString file(filename) ;
file.MakeUpper() ; file.MakeUpper() ;
if ( data->numfilters > 0 ) if ( data->extensions.GetCount() > 0 )
{ {
//for ( int i = 0 ; i < data->numfilters ; ++i ) //for ( int i = 0 ; i < data->numfilters ; ++i )
int i = data->currentfilter ; int i = data->currentfilter ;
@@ -430,10 +425,10 @@ int wxFileDialog::ShowModal()
MakeUserDataRec( &myData , m_wildCard ) ; MakeUserDataRec( &myData , m_wildCard ) ;
NavTypeListHandle typelist = NULL ; NavTypeListHandle typelist = NULL ;
if ( myData.numfilters > 0 ) if ( myData.extensions.GetCount() > 0 )
{ {
mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.numfilters ) ; mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ;
for ( int i = 0 ; i < myData.numfilters ; ++i ) { for ( int i = 0 ; i < myData.extensions.GetCount() ; ++i ) {
(*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ; (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ;
(*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ; (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ;
(*mNavOptions.popupExtension)[i].menuType = i ; (*mNavOptions.popupExtension)[i].menuType = i ;