mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 07:00:46 +00:00
Merge GUI with trunk revision 40072
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/branches/gnustep_testplant_branch@40122 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
1c157f2d56
commit
68308d92ee
2 changed files with 53 additions and 5 deletions
|
@ -34,6 +34,7 @@
|
|||
#ifndef _GNUstep_H_NSSavePanel
|
||||
#define _GNUstep_H_NSSavePanel
|
||||
#import <GNUstepBase/GSVersionMacros.h>
|
||||
#import <GNUstepBase/GSBlocks.h>
|
||||
|
||||
#import <AppKit/NSPanel.h>
|
||||
|
||||
|
@ -58,7 +59,7 @@ enum {
|
|||
};
|
||||
|
||||
@protocol NSOpenSavePanelDelegate <NSObject>
|
||||
#ifdef __OBJC2__
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) && GS_PROTOCOLS_HAVE_OPTIONAL
|
||||
@optional
|
||||
#else
|
||||
@end
|
||||
|
@ -81,6 +82,7 @@ enum {
|
|||
- (BOOL)panel:(id)sender shouldShowFilename:(NSString*)filename;
|
||||
@end
|
||||
|
||||
DEFINE_BLOCK_TYPE(GSSavePanelCompletionHandler, void, NSInteger);
|
||||
|
||||
@interface NSSavePanel : NSPanel
|
||||
{
|
||||
|
@ -117,6 +119,7 @@ enum {
|
|||
BOOL _OKButtonPressed;
|
||||
|
||||
NSMenu *_showsHiddenFilesMenu;
|
||||
GSSavePanelCompletionHandler _completionHandler;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -206,6 +209,12 @@ enum {
|
|||
contextInfo: (void *)contextInfo;
|
||||
#endif
|
||||
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
|
||||
- (void) beginSheetModalForWindow:(NSWindow *)window
|
||||
completionHandler:(GSSavePanelCompletionHandler)handler;
|
||||
- (void) beginWithCompletionHandler:(GSSavePanelCompletionHandler)handler;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Reading Save Information
|
||||
*/
|
||||
|
|
|
@ -55,11 +55,16 @@
|
|||
#import "AppKit/NSDragging.h"
|
||||
#import "AppKit/NSSavePanel.h"
|
||||
#import "AppKit/NSTextField.h"
|
||||
#import "AppKit/NSWindowController.h"
|
||||
#import "AppKit/NSWorkspace.h"
|
||||
|
||||
#import "GSGuiPrivate.h"
|
||||
#import "GNUstepGUI/GSTheme.h"
|
||||
|
||||
#if defined(_WIN32)
|
||||
#import "objc/blocks_runtime.h"
|
||||
#endif
|
||||
|
||||
#define _SAVE_PANEL_X_PAD 5
|
||||
#define _SAVE_PANEL_Y_PAD 4
|
||||
|
||||
|
@ -858,8 +863,9 @@ selectCellWithString: (NSString*)title
|
|||
*/
|
||||
- (void) setTitle: (NSString*)title
|
||||
{
|
||||
// keep the window title in sync with the title field
|
||||
[super setTitle:title];
|
||||
[_titleField setStringValue: title];
|
||||
[super setTitle:title]; // keep the window title in sync with the title field
|
||||
|
||||
// TODO: Improve the following by managing
|
||||
// vertical alignment better.
|
||||
|
@ -1108,7 +1114,22 @@ selectCellWithString: (NSString*)title
|
|||
*/
|
||||
- (NSInteger) runModal
|
||||
{
|
||||
return [self runModalForDirectory: [self directory] file: [self filename]];
|
||||
return [self runModalForDirectory: [self directory]
|
||||
file: [[self filename] lastPathComponent]];
|
||||
}
|
||||
|
||||
- (void) beginSheetModalForWindow:(NSWindow *)window
|
||||
completionHandler:(GSSavePanelCompletionHandler)handler
|
||||
{
|
||||
NSInteger result = [NSApp runModalForWindow: self
|
||||
relativeToWindow: window];
|
||||
CALL_BLOCK(handler, result);
|
||||
}
|
||||
|
||||
- (void) beginWithCompletionHandler:(GSSavePanelCompletionHandler)handler
|
||||
{
|
||||
self->_completionHandler = Block_copy(handler);
|
||||
[self makeKeyAndOrderFront: self];
|
||||
}
|
||||
|
||||
/**<p> Initializes the panel to the directory specified by path and,
|
||||
|
@ -1187,7 +1208,7 @@ selectCellWithString: (NSString*)title
|
|||
|
||||
if (_allowedFileTypes == nil ||
|
||||
[_allowedFileTypes indexOfObject: @""] != NSNotFound)
|
||||
return _fullFileName;
|
||||
return AUTORELEASE([_fullFileName copy]);
|
||||
|
||||
/* add file type extension if the file name does not have an extension or
|
||||
the file name's extension is not one of the allowed extensions and the
|
||||
|
@ -1202,7 +1223,7 @@ selectCellWithString: (NSString*)title
|
|||
}
|
||||
else
|
||||
{
|
||||
return _fullFileName;
|
||||
return AUTORELEASE([_fullFileName copy]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1219,7 +1240,16 @@ selectCellWithString: (NSString*)title
|
|||
{
|
||||
ASSIGN(_directory, pathToColumn(_browser, [_browser lastColumn]));
|
||||
[self _updateDefaultDirectory];
|
||||
|
||||
if (self->_completionHandler == NULL)
|
||||
[NSApp stopModalWithCode: NSCancelButton];
|
||||
else
|
||||
{
|
||||
CALL_BLOCK(self->_completionHandler, NSCancelButton);
|
||||
Block_release(self->_completionHandler);
|
||||
self->_completionHandler = NULL;
|
||||
}
|
||||
|
||||
[_okButton setEnabled: NO];
|
||||
[self close];
|
||||
}
|
||||
|
@ -1390,7 +1420,16 @@ selectCellWithString: (NSString*)title
|
|||
return;
|
||||
|
||||
[self _updateDefaultDirectory];
|
||||
|
||||
if (self->_completionHandler == NULL)
|
||||
[NSApp stopModalWithCode: NSOKButton];
|
||||
else
|
||||
{
|
||||
CALL_BLOCK(self->_completionHandler, NSOKButton);
|
||||
Block_release(self->_completionHandler);
|
||||
self->_completionHandler = NULL;
|
||||
}
|
||||
|
||||
[_okButton setEnabled: NO];
|
||||
[self close];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue