72 lines
1.5 KiB
Mathematica
72 lines
1.5 KiB
Mathematica
|
// 26 june 2015
|
||
|
#import "uipriv_darwin.h"
|
||
|
|
||
|
// note: whether extensions are actually shown depends on a user setting in Finder; we can't control it here
|
||
|
static void setupSavePanel(NSSavePanel *s)
|
||
|
{
|
||
|
[s setCanCreateDirectories:YES];
|
||
|
[s setShowsHiddenFiles:YES];
|
||
|
[s setExtensionHidden:NO];
|
||
|
[s setCanSelectHiddenExtension:NO];
|
||
|
[s setTreatsFilePackagesAsDirectories:YES];
|
||
|
}
|
||
|
|
||
|
static char *runSavePanel(NSSavePanel *s)
|
||
|
{
|
||
|
char *filename;
|
||
|
|
||
|
if ([s runModal] != NSFileHandlingPanelOKButton)
|
||
|
return NULL;
|
||
|
filename = uiDarwinNSStringToText([[s URL] path]);
|
||
|
return filename;
|
||
|
}
|
||
|
|
||
|
char *uiOpenFile(void)
|
||
|
{
|
||
|
NSOpenPanel *o;
|
||
|
|
||
|
o = [NSOpenPanel openPanel];
|
||
|
[o setCanChooseFiles:YES];
|
||
|
[o setCanChooseDirectories:NO];
|
||
|
[o setResolvesAliases:NO];
|
||
|
[o setAllowsMultipleSelection:NO];
|
||
|
setupSavePanel(o);
|
||
|
// panel is autoreleased
|
||
|
return runSavePanel(o);
|
||
|
}
|
||
|
|
||
|
char *uiSaveFile(void)
|
||
|
{
|
||
|
NSSavePanel *s;
|
||
|
|
||
|
s = [NSSavePanel savePanel];
|
||
|
setupSavePanel(s);
|
||
|
// panel is autoreleased
|
||
|
return runSavePanel(s);
|
||
|
}
|
||
|
|
||
|
static void msgbox(const char *title, const char *description, NSAlertStyle style)
|
||
|
{
|
||
|
NSAlert *a;
|
||
|
|
||
|
a = [NSAlert new];
|
||
|
[a setAlertStyle:style];
|
||
|
[a setShowsHelp:NO];
|
||
|
[a setShowsSuppressionButton:NO];
|
||
|
[a setMessageText:toNSString(title)];
|
||
|
[a setInformativeText:toNSString(description)];
|
||
|
[a addButtonWithTitle:@"OK"];
|
||
|
[a runModal];
|
||
|
[a release];
|
||
|
}
|
||
|
|
||
|
void uiMsgBox(const char *title, const char *description)
|
||
|
{
|
||
|
msgbox(title, description, NSInformationalAlertStyle);
|
||
|
}
|
||
|
|
||
|
void uiMsgBoxError(const char *title, const char *description)
|
||
|
{
|
||
|
msgbox(title, description, NSCriticalAlertStyle);
|
||
|
}
|