mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 06:50:48 +00:00
Implement code for exportable, i.e., write-only, document types.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28962 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
aa77a425fa
commit
5046158db9
4 changed files with 66 additions and 82 deletions
|
@ -48,14 +48,14 @@
|
|||
{
|
||||
// FIXME: Should allow for filterable types
|
||||
return [[NSDocumentController sharedDocumentController]
|
||||
_editorAndViewerTypesForClass: self];
|
||||
_readableTypesForClass: self];
|
||||
}
|
||||
|
||||
+ (NSArray *) writableTypes
|
||||
{
|
||||
// FIXME: Should allow for filterable types
|
||||
return [[NSDocumentController sharedDocumentController]
|
||||
_editorTypesForClass: self];
|
||||
_writableTypesForClass: self];
|
||||
}
|
||||
|
||||
+ (BOOL) isNativeType: (NSString *)type
|
||||
|
@ -1016,10 +1016,9 @@ originalContentsURL: (NSURL *)orig
|
|||
{
|
||||
NSDocumentController *controller =
|
||||
[NSDocumentController sharedDocumentController];
|
||||
NSArray *extensions = nil;
|
||||
NSArray *extensions;
|
||||
|
||||
ASSIGN(_save_type, [controller _nameForHumanReadableType:
|
||||
[sender titleOfSelectedItem]]);
|
||||
ASSIGN(_save_type, [[sender selectedItem] representedObject]);
|
||||
extensions = [controller fileExtensionsFromType: _save_type];
|
||||
[(NSSavePanel *)[sender window] setAllowedFileTypes: extensions];
|
||||
}
|
||||
|
@ -1076,32 +1075,27 @@ originalContentsURL: (NSURL *)orig
|
|||
|
||||
- (void) _addItemsToSpaButtonFromArray: (NSArray *)types
|
||||
{
|
||||
NSEnumerator *en = [types objectEnumerator];
|
||||
NSString *title = nil;
|
||||
int i = 0;
|
||||
NSString *type, *title;
|
||||
int i, count = [types count];
|
||||
|
||||
while ((title = [en nextObject]) != nil)
|
||||
[_spa_button removeAllItems];
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
type = [types objectAtIndex: i];
|
||||
title = [[NSDocumentController sharedDocumentController]
|
||||
displayNameForType: type];
|
||||
[_spa_button addItemWithTitle: title];
|
||||
i++;
|
||||
[[_spa_button itemAtIndex: i] setRepresentedObject: type];
|
||||
}
|
||||
|
||||
// if it's more than one, then
|
||||
[_spa_button setEnabled: (i > 0)];
|
||||
[_spa_button setEnabled: (count > 0)];
|
||||
|
||||
// if we have some items, select the current filetype.
|
||||
if (i > 0)
|
||||
if (count > 0)
|
||||
{
|
||||
NSString *title = [[NSDocumentController sharedDocumentController]
|
||||
displayNameForType: [self fileType]];
|
||||
if ([_spa_button itemWithTitle: title] != nil)
|
||||
{
|
||||
[_spa_button selectItemWithTitle: title];
|
||||
}
|
||||
else
|
||||
{
|
||||
[_spa_button selectItemAtIndex: 0];
|
||||
}
|
||||
[_spa_button selectItemAtIndex:
|
||||
[_spa_button indexOfItemWithRepresentedObject: [self fileType]]];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1110,25 +1104,25 @@ originalContentsURL: (NSURL *)orig
|
|||
NSView *accessory = nil;
|
||||
NSString *title;
|
||||
NSString *directory;
|
||||
NSArray *displayNames;
|
||||
NSArray *types;
|
||||
NSDocumentController *controller;
|
||||
NSSavePanel *savePanel = [NSSavePanel savePanel];
|
||||
|
||||
ASSIGN(_save_type, [self fileType]);
|
||||
controller = [NSDocumentController sharedDocumentController];
|
||||
displayNames = [controller _displayNamesForClass: [self class]];
|
||||
|
||||
types = [self writableTypesForSaveOperation: saveOperation];
|
||||
|
||||
if ([self shouldRunSavePanelWithAccessoryView])
|
||||
{
|
||||
if (_save_panel_accessory == nil)
|
||||
[self _createPanelAccessory];
|
||||
|
||||
[self _addItemsToSpaButtonFromArray: displayNames];
|
||||
[self _addItemsToSpaButtonFromArray: types];
|
||||
|
||||
accessory = _save_panel_accessory;
|
||||
}
|
||||
|
||||
if ([displayNames count] > 0)
|
||||
if ([types count] > 0)
|
||||
{
|
||||
NSArray *extensions = [controller fileExtensionsFromType: [self fileType]];
|
||||
[savePanel setAllowedFileTypes: extensions];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue