re-added filter (type-popup) support (lost after introducing long filename support, patch #846732)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -105,6 +105,14 @@ NavEventProc(
|
|||||||
if (noErr == ::AECreateDesc(typeFSS, &theFSSpec, sizeof(FSSpec), &theLocation))
|
if (noErr == ::AECreateDesc(typeFSS, &theFSSpec, sizeof(FSSpec), &theLocation))
|
||||||
::NavCustomControl(ioParams->context, kNavCtlSetLocation, (void *) &theLocation);
|
::NavCustomControl(ioParams->context, kNavCtlSetLocation, (void *) &theLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NavMenuItemSpec menuItem;
|
||||||
|
menuItem.version = kNavMenuItemSpecVersion;
|
||||||
|
menuItem.menuCreator = 'WXNG';
|
||||||
|
menuItem.menuType = data->currentfilter;
|
||||||
|
wxMacStringToPascal( data->name[data->currentfilter] , (StringPtr)(menuItem.menuItemName) ) ;
|
||||||
|
::NavCustomControl(ioParams->context, kNavCtlSelectCustomType, &menuItem);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
if ( data->menuitems )
|
if ( data->menuitems )
|
||||||
NavCustomControl(ioParams->context, kNavCtlSelectCustomType, &(*data->menuitems)[data->currentfilter]);
|
NavCustomControl(ioParams->context, kNavCtlSelectCustomType, &(*data->menuitems)[data->currentfilter]);
|
||||||
@@ -114,6 +122,9 @@ NavEventProc(
|
|||||||
{
|
{
|
||||||
NavMenuItemSpec * menu = (NavMenuItemSpec *) ioParams->eventData.eventDataParms.param ;
|
NavMenuItemSpec * menu = (NavMenuItemSpec *) ioParams->eventData.eventDataParms.param ;
|
||||||
#if TARGET_CARBON
|
#if TARGET_CARBON
|
||||||
|
const size_t numFilters = data->extensions.GetCount();
|
||||||
|
|
||||||
|
if ( menu->menuType < numFilters )
|
||||||
#else
|
#else
|
||||||
if ( menu->menuCreator == 'WXNG' )
|
if ( menu->menuCreator == 'WXNG' )
|
||||||
#endif
|
#endif
|
||||||
@@ -369,9 +380,29 @@ int wxFileDialog::ShowModal()
|
|||||||
OpenUserDataRec myData;
|
OpenUserDataRec myData;
|
||||||
myData.defaultLocation = m_dir;
|
myData.defaultLocation = m_dir;
|
||||||
|
|
||||||
|
MakeUserDataRec(&myData , m_wildCard);
|
||||||
|
myData.currentfilter = m_filterIndex;
|
||||||
|
size_t numFilters = myData.extensions.GetCount();
|
||||||
|
if (numFilters)
|
||||||
|
{
|
||||||
|
CFMutableArrayRef popup = CFArrayCreateMutable( kCFAllocatorDefault ,
|
||||||
|
numFilters , &kCFTypeArrayCallBacks ) ;
|
||||||
|
dialogCreateOptions.popupExtension = popup ;
|
||||||
|
myData.menuitems = dialogCreateOptions.popupExtension ;
|
||||||
|
for ( size_t i = 0 ; i < numFilters ; ++i )
|
||||||
|
{
|
||||||
|
CFArrayAppendValue( popup , (CFStringRef) wxMacCFStringHolder( myData.name[i] , m_font.GetEncoding() ) ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m_dialogStyle & wxSAVE)
|
if (m_dialogStyle & wxSAVE)
|
||||||
|
{
|
||||||
|
myData.saveMode = true;
|
||||||
|
|
||||||
|
if (!numFilters)
|
||||||
{
|
{
|
||||||
dialogCreateOptions.optionFlags |= kNavNoTypePopup;
|
dialogCreateOptions.optionFlags |= kNavNoTypePopup;
|
||||||
|
}
|
||||||
dialogCreateOptions.optionFlags |= kNavDontAutoTranslate;
|
dialogCreateOptions.optionFlags |= kNavDontAutoTranslate;
|
||||||
dialogCreateOptions.optionFlags |= kNavDontAddTranslateItems;
|
dialogCreateOptions.optionFlags |= kNavDontAddTranslateItems;
|
||||||
|
|
||||||
@@ -379,28 +410,14 @@ int wxFileDialog::ShowModal()
|
|||||||
dialogCreateOptions.optionFlags |= kNavPreserveSaveFileExtension;
|
dialogCreateOptions.optionFlags |= kNavPreserveSaveFileExtension;
|
||||||
|
|
||||||
err = ::NavCreatePutFileDialog(&dialogCreateOptions,
|
err = ::NavCreatePutFileDialog(&dialogCreateOptions,
|
||||||
'TEXT',
|
// Suppresses the 'Default' (top) menu item
|
||||||
'TEXT',
|
kNavGenericSignature, kNavGenericSignature,
|
||||||
sStandardNavEventFilter,
|
sStandardNavEventFilter,
|
||||||
&myData, // for defaultLocation
|
&myData, // for defaultLocation
|
||||||
&dialog);
|
&dialog);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MakeUserDataRec(&myData , m_wildCard);
|
|
||||||
size_t numfilters = myData.extensions.GetCount();
|
|
||||||
if (numfilters > 0)
|
|
||||||
{
|
|
||||||
CFMutableArrayRef popup = CFArrayCreateMutable( kCFAllocatorDefault ,
|
|
||||||
numfilters , &kCFTypeArrayCallBacks ) ;
|
|
||||||
dialogCreateOptions.popupExtension = popup ;
|
|
||||||
myData.menuitems = dialogCreateOptions.popupExtension ;
|
|
||||||
for ( size_t i = 0 ; i < numfilters ; ++i )
|
|
||||||
{
|
|
||||||
CFArrayAppendValue( popup , (CFStringRef) wxMacCFStringHolder( myData.name[i] , m_font.GetEncoding() ) ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
navFilterUPP = NewNavObjectFilterUPP(CrossPlatformFilterCallback);
|
navFilterUPP = NewNavObjectFilterUPP(CrossPlatformFilterCallback);
|
||||||
err = ::NavCreateGetFileDialog(&dialogCreateOptions,
|
err = ::NavCreateGetFileDialog(&dialogCreateOptions,
|
||||||
NULL, // NavTypeListHandle
|
NULL, // NavTypeListHandle
|
||||||
@@ -432,6 +449,9 @@ int wxFileDialog::ShowModal()
|
|||||||
Size actualSize;
|
Size actualSize;
|
||||||
FSRef theFSRef;
|
FSRef theFSRef;
|
||||||
wxString thePath ;
|
wxString thePath ;
|
||||||
|
|
||||||
|
m_filterIndex = myData.currentfilter ;
|
||||||
|
|
||||||
long count;
|
long count;
|
||||||
::AECountItems(&navReply.selection , &count);
|
::AECountItems(&navReply.selection , &count);
|
||||||
for (long i = 1; i <= count; ++i)
|
for (long i = 1; i <= count; ++i)
|
||||||
|
Reference in New Issue
Block a user