mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 20:50:48 +00:00
make save and open panels usable on mswindows
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@26520 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
fc7fe511ae
commit
c27f79a57d
5 changed files with 90 additions and 14 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2008-05-13 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* Source/NSOpenPanel.m:
|
||||||
|
* Source/NSSavepanel.m:
|
||||||
|
Add code to handle the fact of ms-windows disk drives (multiple roots)
|
||||||
|
by creating a pseudo-root directory with all the disk drives inside it.
|
||||||
|
|
||||||
2008-05-08 21:04-EDT Gregory John Casamento <greg_casamento@yahoo.com>
|
2008-05-08 21:04-EDT Gregory John Casamento <greg_casamento@yahoo.com>
|
||||||
|
|
||||||
* Source/NSWindow.m: (-(void)miniaturize: (id)sender):
|
* Source/NSWindow.m: (-(void)miniaturize: (id)sender):
|
||||||
|
|
|
@ -52,6 +52,19 @@
|
||||||
#include "AppKit/NSMatrix.h"
|
#include "AppKit/NSMatrix.h"
|
||||||
#include "AppKit/NSOpenPanel.h"
|
#include "AppKit/NSOpenPanel.h"
|
||||||
|
|
||||||
|
static NSString *
|
||||||
|
pathToColumn(NSBrowser *browser, int column)
|
||||||
|
{
|
||||||
|
#if defined(__MINGW32__)
|
||||||
|
if (column == 0)
|
||||||
|
return @"/";
|
||||||
|
else
|
||||||
|
return [[browser pathToColumn: column] substringFromIndex: 1];
|
||||||
|
#else
|
||||||
|
return [browser pathToColumn: column];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static NSOpenPanel *_gs_gui_open_panel = nil;
|
static NSOpenPanel *_gs_gui_open_panel = nil;
|
||||||
|
|
||||||
// Pacify the compiler
|
// Pacify the compiler
|
||||||
|
@ -413,7 +426,7 @@ static NSOpenPanel *_gs_gui_open_panel = nil;
|
||||||
|
|
||||||
while ((filename = [enumerator nextObject]) != nil)
|
while ((filename = [enumerator nextObject]) != nil)
|
||||||
{
|
{
|
||||||
[ret addObject: [NSURL fileURLWithPath: filename]];
|
[ret addObject: [NSURL fileURLWithPath: filename]];
|
||||||
}
|
}
|
||||||
|
|
||||||
return AUTORELEASE(ret);
|
return AUTORELEASE(ret);
|
||||||
|
@ -533,7 +546,7 @@ static NSOpenPanel *_gs_gui_open_panel = nil;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSIGN (_directory, [_browser pathToColumn: [_browser lastColumn]]);
|
ASSIGN (_directory, pathToColumn(_browser, [_browser lastColumn]));
|
||||||
|
|
||||||
if (selectedCell)
|
if (selectedCell)
|
||||||
tmp = [selectedCell stringValue];
|
tmp = [selectedCell stringValue];
|
||||||
|
|
|
@ -66,6 +66,32 @@ static NSFileManager *_fm = nil;
|
||||||
|
|
||||||
static BOOL _gs_display_reading_progress = NO;
|
static BOOL _gs_display_reading_progress = NO;
|
||||||
|
|
||||||
|
static NSString *
|
||||||
|
pathToColumn(NSBrowser *browser, int column)
|
||||||
|
{
|
||||||
|
#if defined(__MINGW32__)
|
||||||
|
if (column == 0)
|
||||||
|
return @"/";
|
||||||
|
else if (column == 1)
|
||||||
|
return [[[browser pathToColumn: column] substringFromIndex: 1]
|
||||||
|
stringByAppendingString: @"/"];
|
||||||
|
else
|
||||||
|
return [[browser pathToColumn: column] substringFromIndex: 1];
|
||||||
|
#else
|
||||||
|
return [browser pathToColumn: column];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
setPath(NSBrowser *browser, NSString *path)
|
||||||
|
{
|
||||||
|
#if defined(__MINGW32__)
|
||||||
|
[browser setPath: [@"/" stringByAppendingString: path]];
|
||||||
|
#else
|
||||||
|
[browser setPath: path];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// SavePanel filename compare
|
// SavePanel filename compare
|
||||||
//
|
//
|
||||||
|
@ -436,7 +462,8 @@ static BOOL _gs_display_reading_progress = NO;
|
||||||
{
|
{
|
||||||
if (_delegateHasDirectoryDidChange)
|
if (_delegateHasDirectoryDidChange)
|
||||||
{
|
{
|
||||||
[_delegate panel: self directoryDidChange: [_browser pathToColumn: column]];
|
[_delegate panel: self
|
||||||
|
directoryDidChange: pathToColumn(_browser, column)];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ([[[_form cellAtIndex: 0] stringValue] length] > 0)
|
if ([[[_form cellAtIndex: 0] stringValue] length] > 0)
|
||||||
|
@ -506,7 +533,7 @@ selectCellWithString: (NSString*)title
|
||||||
|
|
||||||
m = [sender matrixInColumn: column];
|
m = [sender matrixInColumn: column];
|
||||||
isLeaf = [[m selectedCell] isLeaf];
|
isLeaf = [[m selectedCell] isLeaf];
|
||||||
path = [sender pathToColumn: column];
|
path = pathToColumn(sender, column);
|
||||||
|
|
||||||
if (isLeaf)
|
if (isLeaf)
|
||||||
{
|
{
|
||||||
|
@ -537,7 +564,7 @@ selectCellWithString: (NSString*)title
|
||||||
if (filename == nil)
|
if (filename == nil)
|
||||||
filename = @"";
|
filename = @"";
|
||||||
ASSIGN(_fullFileName, [_directory stringByAppendingPathComponent: filename]);
|
ASSIGN(_fullFileName, [_directory stringByAppendingPathComponent: filename]);
|
||||||
[_browser setPath: _fullFileName];
|
setPath(_browser, _fullFileName);
|
||||||
|
|
||||||
[self _selectCellName: filename];
|
[self _selectCellName: filename];
|
||||||
[[_form cellAtIndex: 0] setStringValue: filename];
|
[[_form cellAtIndex: 0] setStringValue: filename];
|
||||||
|
@ -679,7 +706,6 @@ selectCellWithString: (NSString*)title
|
||||||
_delegateHasDirectoryDidChange = NO;
|
_delegateHasDirectoryDidChange = NO;
|
||||||
_delegateHasSelectionDidChange = NO;
|
_delegateHasSelectionDidChange = NO;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
[self _getOriginalSize];
|
[self _getOriginalSize];
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -884,7 +910,7 @@ selectCellWithString: (NSString*)title
|
||||||
&& isDir)
|
&& isDir)
|
||||||
{
|
{
|
||||||
ASSIGN (_directory, standardizedPath);
|
ASSIGN (_directory, standardizedPath);
|
||||||
[_browser setPath: _directory];
|
setPath(_browser, _directory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1067,7 +1093,7 @@ selectCellWithString: (NSString*)title
|
||||||
*/
|
*/
|
||||||
- (void) cancel: (id)sender
|
- (void) cancel: (id)sender
|
||||||
{
|
{
|
||||||
ASSIGN(_directory, [_browser pathToColumn:[_browser lastColumn]]);
|
ASSIGN(_directory, pathToColumn(_browser, [_browser lastColumn]));
|
||||||
[NSApp stopModalWithCode: NSCancelButton];
|
[NSApp stopModalWithCode: NSCancelButton];
|
||||||
[_okButton setEnabled: NO];
|
[_okButton setEnabled: NO];
|
||||||
[self close];
|
[self close];
|
||||||
|
@ -1096,7 +1122,7 @@ selectCellWithString: (NSString*)title
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSIGN (_directory, [_browser pathToColumn:[_browser lastColumn]]);
|
ASSIGN (_directory, pathToColumn(_browser, [_browser lastColumn]));
|
||||||
filename = [[_form cellAtIndex: 0] stringValue];
|
filename = [[_form cellAtIndex: 0] stringValue];
|
||||||
if ([filename isAbsolutePath] == YES)
|
if ([filename isAbsolutePath] == YES)
|
||||||
{
|
{
|
||||||
|
@ -1119,7 +1145,7 @@ selectCellWithString: (NSString*)title
|
||||||
{
|
{
|
||||||
ASSIGN (_directory, [filename stringByDeletingLastPathComponent]);
|
ASSIGN (_directory, [filename stringByDeletingLastPathComponent]);
|
||||||
ASSIGN (_fullFileName, filename);
|
ASSIGN (_fullFileName, filename);
|
||||||
[_browser setPath: _fullFileName];
|
setPath(_browser, _fullFileName);
|
||||||
|
|
||||||
filename = [_fullFileName lastPathComponent];
|
filename = [_fullFileName lastPathComponent];
|
||||||
|
|
||||||
|
@ -1427,8 +1453,35 @@ createRowsForColumn: (int)column
|
||||||
|
|
||||||
pool = [NSAutoreleasePool new];
|
pool = [NSAutoreleasePool new];
|
||||||
|
|
||||||
path = [_browser pathToColumn: column];
|
path = pathToColumn(_browser, column);
|
||||||
|
#if defined(__MINGW32__)
|
||||||
|
if (column == 0)
|
||||||
|
{
|
||||||
|
NSMutableArray *m;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
files = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths];
|
||||||
|
m = [files mutableCopy];
|
||||||
|
i = [m count];
|
||||||
|
while (i-- > 0)
|
||||||
|
{
|
||||||
|
NSString *file = [m objectAtIndex: i];
|
||||||
|
|
||||||
|
/* Strip the backslash from the drive name so we don't
|
||||||
|
* get it confusing the path we have.
|
||||||
|
*/
|
||||||
|
file = [file substringToIndex: [file length] - 1];
|
||||||
|
[m replaceObjectAtIndex: i withObject: file];
|
||||||
|
}
|
||||||
|
files = [m autorelease];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
files = [[NSFileManager defaultManager] directoryContentsAtPath: path];
|
||||||
|
}
|
||||||
|
#else
|
||||||
files = [[NSFileManager defaultManager] directoryContentsAtPath: path];
|
files = [[NSFileManager defaultManager] directoryContentsAtPath: path];
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Remove hidden files. */
|
/* Remove hidden files. */
|
||||||
{
|
{
|
||||||
|
@ -1593,7 +1646,7 @@ createRowsForColumn: (int)column
|
||||||
{
|
{
|
||||||
NSArray *cells = [[sender matrixInColumn: column] cells];
|
NSArray *cells = [[sender matrixInColumn: column] cells];
|
||||||
unsigned count = [cells count], i;
|
unsigned count = [cells count], i;
|
||||||
NSString *path = [sender pathToColumn: column];
|
NSString *path = pathToColumn(sender, column);
|
||||||
|
|
||||||
// iterate through the cells asking the delegate if each filename is valid
|
// iterate through the cells asking the delegate if each filename is valid
|
||||||
// if it says no for any filename, the column is not valid
|
// if it says no for any filename, the column is not valid
|
||||||
|
|
|
@ -2635,6 +2635,9 @@ resetCursorRectsForView(NSView *theView)
|
||||||
- (void) _didDeminiaturize: sender
|
- (void) _didDeminiaturize: sender
|
||||||
{
|
{
|
||||||
_f.is_miniaturized = NO;
|
_f.is_miniaturized = NO;
|
||||||
|
/* May need to redraw on deminiaturisation ...
|
||||||
|
*/
|
||||||
|
[_wv setNeedsDisplay: YES];
|
||||||
[nc postNotificationName: NSWindowDidDeminiaturizeNotification object: self];
|
[nc postNotificationName: NSWindowDidDeminiaturizeNotification object: self];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -503,7 +503,7 @@ static NSDictionary *applications = nil;
|
||||||
|
|
||||||
static NSString *extPrefPath = nil;
|
static NSString *extPrefPath = nil;
|
||||||
static NSDictionary *extPreferences = nil;
|
static NSDictionary *extPreferences = nil;
|
||||||
// FIXME: Won't work for MINGW
|
// FIXME: Won't work for MINGW32
|
||||||
static NSString *_rootPath = @"/";
|
static NSString *_rootPath = @"/";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1571,7 +1571,7 @@ inFileViewerRootedAtPath: (NSString*)rootFullpath
|
||||||
{
|
{
|
||||||
NSMutableArray *names;
|
NSMutableArray *names;
|
||||||
NSFileManager *mgr = [NSFileManager defaultManager];
|
NSFileManager *mgr = [NSFileManager defaultManager];
|
||||||
#ifdef __MINGW__
|
#if defined(__MINGW32__)
|
||||||
unsigned max = BUFSIZ;
|
unsigned max = BUFSIZ;
|
||||||
unichar buf[max];
|
unichar buf[max];
|
||||||
unichar *base = buf;
|
unichar *base = buf;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue