view dstep/appkit/NSSavePanel.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Sep 24, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.appkit.NSSavePanel;

import dstep.appkit.NSBox;
import dstep.appkit.NSNibDeclarations;
import dstep.appkit.NSPanel;
import dstep.appkit.NSTextField;
import dstep.appkit.NSTextView;
import dstep.appkit.NSView;
import dstep.appkit.NSWindow;
import dstep.foundation.NSArray;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSString;
import dstep.foundation.NSURL;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

// This should no need to be here
private enum
{
	NSOKButton = 1,
	NSCancelButton = 0
}

enum
{
	NSFileHandlingPanelCancelButton = NSCancelButton,
	NSFileHandlingPanelOKButton = NSOKButton
}

struct _SPFlags
{
	uint saveMode;
	uint isExpanded;
	uint allowsOtherFileTypes;
	uint canCreateDirectories;
	uint canSelectedHiddenExtension;
	uint reserved;
}

const TNSSavePanelRuntime = `

	void ok (Object sender)
	{
		return invokeObjcSelf!(void, "ok:", Object)(sender);
	}

	void cancel (Object sender)
	{
		return invokeObjcSelf!(void, "cancel:", Object)(sender);
	}

	void beginSheetForDirectory (NSString path, NSString name, NSWindow docWindow, Object delegate_, SEL didEndSelector, void* contextInfo)
	{
		return invokeObjcSelf!(void, "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:", NSString, NSString, NSWindow, Object, SEL, void*)(path, name, docWindow, delegate_, didEndSelector, contextInfo);
	}

	NSInteger runModalForDirectory (NSString path, NSString name)
	{
		return invokeObjcSelf!(NSInteger, "runModalForDirectory:file:", NSString, NSString)(path, name);
	}

	NSInteger runModal ()
	{
		return invokeObjcSelf!(NSInteger, "runModal");
	}

	//mixin ObjcBindMethod!(ok, "ok:");
	//mixin ObjcBindMethod!(cancel, "cancel:");
	//mixin ObjcBindMethod!(beginSheetForDirectory, "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:");
	//mixin ObjcBindMethod!(runModalForDirectory, "runModalForDirectory:file:");
	//mixin ObjcBindMethod!(runModal, "runModal");

`;

const TNSSavePanelDelegate = `

	bool panel (Object sender, NSString filename)
	{
		return invokeObjcSelf!(bool, "panel:shouldShowFilename:", Object, NSString)(sender, filename);
	}

	int panel (Object sender, NSString name1, NSString name2, bool caseSensitive)
	{
		return invokeObjcSelf!(int, "panel:compareFilename:with:caseSensitive:", Object, NSString, NSString, bool)(sender, name1, name2, caseSensitive);
	}

	bool panel (Object sender, NSString filename)
	{
		return invokeObjcSelf!(bool, "panel:isValidFilename:", Object, NSString)(sender, filename);
	}

	NSString panel (Object sender, NSString filename, bool okFlag)
	{
		return invokeObjcSelf!(NSString, "panel:userEnteredFilename:confirmed:", Object, NSString, bool)(sender, filename, okFlag);
	}

	void panel (Object sender, bool expanding)
	{
		return invokeObjcSelf!(void, "panel:willExpand:", Object, bool)(sender, expanding);
	}

	void panel (Object sender, NSString path)
	{
		return invokeObjcSelf!(void, "panel:directoryDidChange:", Object, NSString)(sender, path);
	}

	void panelSelectionDidChange (Object sender)
	{
		return invokeObjcSelf!(void, "panelSelectionDidChange:", Object)(sender);
	}

	//mixin ObjcBindMethod!(panel, "panel:shouldShowFilename:");
	//mixin ObjcBindMethod!(panel, "panel:compareFilename:with:caseSensitive:");
	//mixin ObjcBindMethod!(panel, "panel:isValidFilename:");
	//mixin ObjcBindMethod!(panel, "panel:userEnteredFilename:confirmed:");
	//mixin ObjcBindMethod!(panel, "panel:willExpand:");
	//mixin ObjcBindMethod!(panel, "panel:directoryDidChange:");
	//mixin ObjcBindMethod!(panelSelectionDidChange, "panelSelectionDidChange:");

`;

class NSSavePanel : NSPanel
{
	mixin (ObjcWrap);

	static NSSavePanel savePanel ()
	{
		return invokeObjcSelfClass!(NSSavePanel, "savePanel");
	}

	NSURL URL ()
	{
		return invokeObjcSelf!(NSURL, "URL");
	}

	NSString filename ()
	{
		return invokeObjcSelf!(NSString, "filename");
	}

	NSString directory ()
	{
		return invokeObjcSelf!(NSString, "directory");
	}

	void setDirectory (NSString path)
	{
		return invokeObjcSelf!(void, "setDirectory:", NSString)(path);
	}

	NSString requiredFileType ()
	{
		return invokeObjcSelf!(NSString, "requiredFileType");
	}

	void setRequiredFileType (NSString type)
	{
		return invokeObjcSelf!(void, "setRequiredFileType:", NSString)(type);
	}

	NSArray allowedFileTypes ()
	{
		return invokeObjcSelf!(NSArray, "allowedFileTypes");
	}

	void setAllowedFileTypes (NSArray types)
	{
		return invokeObjcSelf!(void, "setAllowedFileTypes:", NSArray)(types);
	}

	bool allowsOtherFileTypes ()
	{
		return invokeObjcSelf!(bool, "allowsOtherFileTypes");
	}

	void setAllowsOtherFileTypes (bool flag)
	{
		return invokeObjcSelf!(void, "setAllowsOtherFileTypes:", bool)(flag);
	}

	NSView accessoryView ()
	{
		return invokeObjcSelf!(NSView, "accessoryView");
	}

	void setAccessoryView (NSView view)
	{
		return invokeObjcSelf!(void, "setAccessoryView:", NSView)(view);
	}

	Object delegate_ ()
	{
		return invokeObjcSelf!(Object, "delegate");
	}

	void setDelegate (Object delegate_)
	{
		return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_);
	}

	bool isExpanded ()
	{
		return invokeObjcSelf!(bool, "isExpanded");
	}

	bool canCreateDirectories ()
	{
		return invokeObjcSelf!(bool, "canCreateDirectories");
	}

	void setCanCreateDirectories (bool flag)
	{
		return invokeObjcSelf!(void, "setCanCreateDirectories:", bool)(flag);
	}

	bool canSelectHiddenExtension ()
	{
		return invokeObjcSelf!(bool, "canSelectHiddenExtension");
	}

	void setCanSelectHiddenExtension (bool flag)
	{
		return invokeObjcSelf!(void, "setCanSelectHiddenExtension:", bool)(flag);
	}

	bool isExtensionHidden ()
	{
		return invokeObjcSelf!(bool, "isExtensionHidden");
	}

	void setExtensionHidden (bool flag)
	{
		return invokeObjcSelf!(void, "setExtensionHidden:", bool)(flag);
	}

	bool treatsFilePackagesAsDirectories ()
	{
		return invokeObjcSelf!(bool, "treatsFilePackagesAsDirectories");
	}

	void setTreatsFilePackagesAsDirectories (bool flag)
	{
		return invokeObjcSelf!(void, "setTreatsFilePackagesAsDirectories:", bool)(flag);
	}

	NSString prompt ()
	{
		return invokeObjcSelf!(NSString, "prompt");
	}

	void setPrompt (NSString prompt)
	{
		return invokeObjcSelf!(void, "setPrompt:", NSString)(prompt);
	}

	NSString title ()
	{
		return invokeObjcSelf!(NSString, "title");
	}

	void setTitle (NSString title)
	{
		return invokeObjcSelf!(void, "setTitle:", NSString)(title);
	}

	NSString nameFieldLabel ()
	{
		return invokeObjcSelf!(NSString, "nameFieldLabel");
	}

	void setNameFieldLabel (NSString label)
	{
		return invokeObjcSelf!(void, "setNameFieldLabel:", NSString)(label);
	}

	NSString message ()
	{
		return invokeObjcSelf!(NSString, "message");
	}

	void setMessage (NSString message)
	{
		return invokeObjcSelf!(void, "setMessage:", NSString)(message);
	}

	void validateVisibleColumns ()
	{
		return invokeObjcSelf!(void, "validateVisibleColumns");
	}

	void selectText (Object sender)
	{
		return invokeObjcSelf!(void, "selectText:", Object)(sender);
	}
	
	// NSSavePanelRuntime
	void ok (Object sender)
	{
		return invokeObjcSelf!(void, "ok:", Object)(sender);
	}

	void cancel (Object sender)
	{
		return invokeObjcSelf!(void, "cancel:", Object)(sender);
	}

	void beginSheetForDirectory (NSString path, NSString name, NSWindow docWindow, Object delegate_, SEL didEndSelector, void* contextInfo)
	{
		return invokeObjcSelf!(void, "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:", NSString, NSString, NSWindow, Object, SEL, void*)(path, name, docWindow, delegate_, didEndSelector, contextInfo);
	}

	NSInteger runModalForDirectory (NSString path, NSString name)
	{
		return invokeObjcSelf!(NSInteger, "runModalForDirectory:file:", NSString, NSString)(path, name);
	}

	NSInteger runModal ()
	{
		return invokeObjcSelf!(NSInteger, "runModal");
	}
}