Mercurial > projects > dstep
view dstep/appkit/NSWorkspace.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.NSWorkspace; import dstep.appkit.AppKitDefines; import dstep.foundation.NSArray; import dstep.appkit.NSImage; import dstep.appkit.NSView; import dstep.foundation.NSAppleEventDescriptor; import dstep.foundation.NSDictionary; import dstep.foundation.NSError; import dstep.foundation.NSGeometry; import dstep.foundation.NSNotification; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSString; import dstep.foundation.NSURL; import dstep.foundation.NSValue; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.appkit.NSWorkspace_bindings; typedef NSUInteger NSWorkspaceLaunchOptions; typedef NSUInteger NSWorkspaceIconCreationOptions; private { NSString NSWorkspaceDidLaunchApplicationNotification_; NSString NSWorkspaceDidMountNotification_; NSString NSWorkspaceDidPerformFileOperationNotification_; NSString NSWorkspaceDidTerminateApplicationNotification_; NSString NSWorkspaceDidUnmountNotification_; NSString NSWorkspaceWillLaunchApplicationNotification_; NSString NSWorkspaceWillPowerOffNotification_; NSString NSWorkspaceWillUnmountNotification_; NSString NSWorkspaceWillSleepNotification_; NSString NSWorkspaceDidWakeNotification_; NSString NSWorkspaceSessionDidBecomeActiveNotification_; NSString NSWorkspaceSessionDidResignActiveNotification_; NSString NSPlainFileType_; NSString NSDirectoryFileType_; NSString NSApplicationFileType_; NSString NSFilesystemFileType_; NSString NSShellCommandFileType_; NSString NSWorkspaceMoveOperation_; NSString NSWorkspaceCopyOperation_; NSString NSWorkspaceLinkOperation_; NSString NSWorkspaceCompressOperation_; NSString NSWorkspaceDecompressOperation_; NSString NSWorkspaceEncryptOperation_; NSString NSWorkspaceDecryptOperation_; NSString NSWorkspaceDestroyOperation_; NSString NSWorkspaceRecycleOperation_; NSString NSWorkspaceDuplicateOperation_; } NSString NSWorkspaceDidLaunchApplicationNotification () { if (NSWorkspaceDidLaunchApplicationNotification_) return NSWorkspaceDidLaunchApplicationNotification_; return NSWorkspaceDidLaunchApplicationNotification_ = new NSString(bindings.NSWorkspaceDidLaunchApplicationNotification); } NSString NSWorkspaceDidMountNotification () { if (NSWorkspaceDidMountNotification_) return NSWorkspaceDidMountNotification_; return NSWorkspaceDidMountNotification_ = new NSString(bindings.NSWorkspaceDidMountNotification); } NSString NSWorkspaceDidPerformFileOperationNotification () { if (NSWorkspaceDidPerformFileOperationNotification_) return NSWorkspaceDidPerformFileOperationNotification_; return NSWorkspaceDidPerformFileOperationNotification_ = new NSString(bindings.NSWorkspaceDidPerformFileOperationNotification); } NSString NSWorkspaceDidTerminateApplicationNotification () { if (NSWorkspaceDidTerminateApplicationNotification_) return NSWorkspaceDidTerminateApplicationNotification_; return NSWorkspaceDidTerminateApplicationNotification_ = new NSString(bindings.NSWorkspaceDidTerminateApplicationNotification); } NSString NSWorkspaceDidUnmountNotification () { if (NSWorkspaceDidUnmountNotification_) return NSWorkspaceDidUnmountNotification_; return NSWorkspaceDidUnmountNotification_ = new NSString(bindings.NSWorkspaceDidUnmountNotification); } NSString NSWorkspaceWillLaunchApplicationNotification () { if (NSWorkspaceWillLaunchApplicationNotification_) return NSWorkspaceWillLaunchApplicationNotification_; return NSWorkspaceWillLaunchApplicationNotification_ = new NSString(bindings.NSWorkspaceWillLaunchApplicationNotification); } NSString NSWorkspaceWillPowerOffNotification () { if (NSWorkspaceWillPowerOffNotification_) return NSWorkspaceWillPowerOffNotification_; return NSWorkspaceWillPowerOffNotification_ = new NSString(bindings.NSWorkspaceWillPowerOffNotification); } NSString NSWorkspaceWillUnmountNotification () { if (NSWorkspaceWillUnmountNotification_) return NSWorkspaceWillUnmountNotification_; return NSWorkspaceWillUnmountNotification_ = new NSString(bindings.NSWorkspaceWillUnmountNotification); } NSString NSWorkspaceWillSleepNotification () { if (NSWorkspaceWillSleepNotification_) return NSWorkspaceWillSleepNotification_; return NSWorkspaceWillSleepNotification_ = new NSString(bindings.NSWorkspaceWillSleepNotification); } NSString NSWorkspaceDidWakeNotification () { if (NSWorkspaceDidWakeNotification_) return NSWorkspaceDidWakeNotification_; return NSWorkspaceDidWakeNotification_ = new NSString(bindings.NSWorkspaceDidWakeNotification); } NSString NSWorkspaceSessionDidBecomeActiveNotification () { if (NSWorkspaceSessionDidBecomeActiveNotification_) return NSWorkspaceSessionDidBecomeActiveNotification_; return NSWorkspaceSessionDidBecomeActiveNotification_ = new NSString(bindings.NSWorkspaceSessionDidBecomeActiveNotification); } NSString NSWorkspaceSessionDidResignActiveNotification () { if (NSWorkspaceSessionDidResignActiveNotification_) return NSWorkspaceSessionDidResignActiveNotification_; return NSWorkspaceSessionDidResignActiveNotification_ = new NSString(bindings.NSWorkspaceSessionDidResignActiveNotification); } NSString NSPlainFileType () { if (NSPlainFileType_) return NSPlainFileType_; return NSPlainFileType_ = new NSString(bindings.NSPlainFileType); } NSString NSDirectoryFileType () { if (NSDirectoryFileType_) return NSDirectoryFileType_; return NSDirectoryFileType_ = new NSString(bindings.NSDirectoryFileType); } NSString NSApplicationFileType () { if (NSApplicationFileType_) return NSApplicationFileType_; return NSApplicationFileType_ = new NSString(bindings.NSApplicationFileType); } NSString NSFilesystemFileType () { if (NSFilesystemFileType_) return NSFilesystemFileType_; return NSFilesystemFileType_ = new NSString(bindings.NSFilesystemFileType); } NSString NSShellCommandFileType () { if (NSShellCommandFileType_) return NSShellCommandFileType_; return NSShellCommandFileType_ = new NSString(bindings.NSShellCommandFileType); } NSString NSWorkspaceMoveOperation () { if (NSWorkspaceMoveOperation_) return NSWorkspaceMoveOperation_; return NSWorkspaceMoveOperation_ = new NSString(bindings.NSWorkspaceMoveOperation); } NSString NSWorkspaceCopyOperation () { if (NSWorkspaceCopyOperation_) return NSWorkspaceCopyOperation_; return NSWorkspaceCopyOperation_ = new NSString(bindings.NSWorkspaceCopyOperation); } NSString NSWorkspaceLinkOperation () { if (NSWorkspaceLinkOperation_) return NSWorkspaceLinkOperation_; return NSWorkspaceLinkOperation_ = new NSString(bindings.NSWorkspaceLinkOperation); } NSString NSWorkspaceCompressOperation () { if (NSWorkspaceCompressOperation_) return NSWorkspaceCompressOperation_; return NSWorkspaceCompressOperation_ = new NSString(bindings.NSWorkspaceCompressOperation); } NSString NSWorkspaceDecompressOperation () { if (NSWorkspaceDecompressOperation_) return NSWorkspaceDecompressOperation_; return NSWorkspaceDecompressOperation_ = new NSString(bindings.NSWorkspaceDecompressOperation); } NSString NSWorkspaceEncryptOperation () { if (NSWorkspaceEncryptOperation_) return NSWorkspaceEncryptOperation_; return NSWorkspaceEncryptOperation_ = new NSString(bindings.NSWorkspaceEncryptOperation); } NSString NSWorkspaceDecryptOperation () { if (NSWorkspaceDecryptOperation_) return NSWorkspaceDecryptOperation_; return NSWorkspaceDecryptOperation_ = new NSString(bindings.NSWorkspaceDecryptOperation); } NSString NSWorkspaceDestroyOperation () { if (NSWorkspaceDestroyOperation_) return NSWorkspaceDestroyOperation_; return NSWorkspaceDestroyOperation_ = new NSString(bindings.NSWorkspaceDestroyOperation); } NSString NSWorkspaceRecycleOperation () { if (NSWorkspaceRecycleOperation_) return NSWorkspaceRecycleOperation_; return NSWorkspaceRecycleOperation_ = new NSString(bindings.NSWorkspaceRecycleOperation); } NSString NSWorkspaceDuplicateOperation () { if (NSWorkspaceDuplicateOperation_) return NSWorkspaceDuplicateOperation_; return NSWorkspaceDuplicateOperation_ = new NSString(bindings.NSWorkspaceDuplicateOperation); } enum { NSWorkspaceLaunchAndPrint = 0x00000002, NSWorkspaceLaunchInhibitingBackgroundOnly = 0x00000080, NSWorkspaceLaunchWithoutAddingToRecents = 0x00000100, NSWorkspaceLaunchWithoutActivation = 0x00000200, NSWorkspaceLaunchAsync = 0x00010000, NSWorkspaceLaunchAllowingClassicStartup = 0x00020000, NSWorkspaceLaunchPreferringClassic = 0x00040000, NSWorkspaceLaunchNewInstance = 0x00080000, NSWorkspaceLaunchAndHide = 0x00100000, NSWorkspaceLaunchAndHideOthers = 0x00200000, NSWorkspaceLaunchDefault = NSWorkspaceLaunchAsync | NSWorkspaceLaunchAllowingClassicStartup } enum { NSExcludeQuickDrawElementsIconCreationOption = 1 << 1, NSExclude10_4ElementsIconCreationOption = 1 << 2 } class NSWorkspace : NSObject { mixin (ObjcWrap); static NSWorkspace sharedWorkspace () { return invokeObjcSelfClass!(NSWorkspace, "sharedWorkspace"); } NSNotificationCenter notificationCenter () { return invokeObjcSelf!(NSNotificationCenter, "notificationCenter"); } bool openFile (NSString fullPath) { return invokeObjcSelf!(bool, "openFile:", NSString)(fullPath); } bool openFile (NSString fullPath, NSString appName) { return invokeObjcSelf!(bool, "openFile:withApplication:", NSString, NSString)(fullPath, appName); } bool openFile (NSString fullPath, NSString appName, bool flag) { return invokeObjcSelf!(bool, "openFile:withApplication:andDeactivate:", NSString, NSString, bool)(fullPath, appName, flag); } bool openTempFile (NSString fullPath) { return invokeObjcSelf!(bool, "openTempFile:", NSString)(fullPath); } bool openFile (NSString fullPath, NSImage anImage, NSPoint point, NSView aView) { return invokeObjcSelf!(bool, "openFile:fromImage:at:inView:", NSString, NSImage, NSPoint, NSView)(fullPath, anImage, point, aView); } bool openURL (NSURL url) { return invokeObjcSelf!(bool, "openURL:", NSURL)(url); } bool launchApplication (NSString appName) { return invokeObjcSelf!(bool, "launchApplication:", NSString)(appName); } bool launchApplication (NSString appName, bool showIcon, bool autolaunch) { return invokeObjcSelf!(bool, "launchApplication:showIcon:autolaunch:", NSString, bool, bool)(appName, showIcon, autolaunch); } NSString fullPathForApplication (NSString appName) { return invokeObjcSelf!(NSString, "fullPathForApplication:", NSString)(appName); } bool selectFile (NSString fullPath, NSString rootFullpath) { return invokeObjcSelf!(bool, "selectFile:inFileViewerRootedAtPath:", NSString, NSString)(fullPath, rootFullpath); } void findApplications () { return invokeObjcSelf!(void, "findApplications"); } void noteFileSystemChanged () { return invokeObjcSelf!(void, "noteFileSystemChanged"); } void noteFileSystemChanged (NSString path) { return invokeObjcSelf!(void, "noteFileSystemChanged:", NSString)(path); } bool fileSystemChanged () { return invokeObjcSelf!(bool, "fileSystemChanged"); } void noteUserDefaultsChanged () { return invokeObjcSelf!(void, "noteUserDefaultsChanged"); } bool userDefaultsChanged () { return invokeObjcSelf!(bool, "userDefaultsChanged"); } bool getInfoForFile (NSString fullPath, out NSString appName, ref NSString type) { id app; id t; if (type) t = type.objcObject; bool result = invokeObjcSelf!(bool, "getInfoForFile:application:type:", NSString, id*, id*)(fullPath, &app, &t); if (app) appName = new NSString(app); if (t) type = new NSString(t); return result; } bool isFilePackageAtPath (NSString fullPath) { return invokeObjcSelf!(bool, "isFilePackageAtPath:", NSString)(fullPath); } NSImage iconForFile (NSString fullPath) { return invokeObjcSelf!(NSImage, "iconForFile:", NSString)(fullPath); } NSImage iconForFiles (NSArray fullPaths) { return invokeObjcSelf!(NSImage, "iconForFiles:", NSArray)(fullPaths); } NSImage iconForFileType (NSString fileType) { return invokeObjcSelf!(NSImage, "iconForFileType:", NSString)(fileType); } bool setIcon (NSImage image, NSString fullPath, uint options) { return invokeObjcSelf!(bool, "setIcon:forFile:options:", NSImage, NSString, uint)(image, fullPath, options); } bool getFileSystemInfoForPath (NSString fullPath, bool* removableFlag, bool* writableFlag, bool* unmountableFlag, ref NSString description, ref NSString fileSystemType) { id desc; id fileSysType; if (description) desc = description.objcObject; if (fileSysType) fileSysType = fileSystemType.objcObject; bool result = invokeObjcSelf!(bool, "getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:", NSString, bool*, bool*, bool*, id*, id*)(fullPath, removableFlag, writableFlag, unmountableFlag, &desc, &fileSysType); if (desc) description = new NSString(desc); if (fileSysType) fileSystemType = new NSString(fileSysType); return result; } bool performFileOperation (NSString operation, NSString source, NSString destination, NSArray files, NSInteger* tag) { return invokeObjcSelf!(bool, "performFileOperation:source:destination:files:tag:", NSString, NSString, NSString, NSArray, NSInteger*)(operation, source, destination, files, tag); } bool unmountAndEjectDeviceAtPath (NSString path) { return invokeObjcSelf!(bool, "unmountAndEjectDeviceAtPath:", NSString)(path); } NSInteger extendPowerOffBy (NSInteger requested) { return invokeObjcSelf!(NSInteger, "extendPowerOffBy:", NSInteger)(requested); } void slideImage (NSImage image, NSPoint fromPoint, NSPoint toPoint) { return invokeObjcSelf!(void, "slideImage:from:to:", NSImage, NSPoint, NSPoint)(image, fromPoint, toPoint); } void hideOtherApplications () { return invokeObjcSelf!(void, "hideOtherApplications"); } NSArray mountedLocalVolumePaths () { return invokeObjcSelf!(NSArray, "mountedLocalVolumePaths"); } NSArray mountedRemovableMedia () { return invokeObjcSelf!(NSArray, "mountedRemovableMedia"); } NSArray mountNewRemovableMedia () { return invokeObjcSelf!(NSArray, "mountNewRemovableMedia"); } void checkForRemovableMedia () { return invokeObjcSelf!(void, "checkForRemovableMedia"); } NSString absolutePathForAppBundleWithIdentifier (NSString bundleIdentifier) { return invokeObjcSelf!(NSString, "absolutePathForAppBundleWithIdentifier:", NSString)(bundleIdentifier); } bool launchAppWithBundleIdentifier (NSString bundleIdentifier, uint options, NSAppleEventDescriptor descriptor, ref NSNumber identifier) { id ident; if (identifier) ident = identifier.objcObject; bool result = invokeObjcSelf!(bool, "launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:", NSString, uint, NSAppleEventDescriptor, id*)(bundleIdentifier, options, descriptor, &ident); if (ident) identifier = new NSNumber(ident); return result; } bool openURLs (NSArray urls, NSString bundleIdentifier, uint options, NSAppleEventDescriptor descriptor, ref NSArray identifiers) { id ident; if (identifiers) ident = identifiers.objcObject; bool result = invokeObjcSelf!(bool, "openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:", NSArray, NSString, uint, NSAppleEventDescriptor, id*)(urls, bundleIdentifier, options, descriptor, &ident); if (ident) identifiers = new NSArray(ident); return result; } NSArray launchedApplications () { return invokeObjcSelf!(NSArray, "launchedApplications"); } NSDictionary activeApplication () { return invokeObjcSelf!(NSDictionary, "activeApplication"); } NSString typeOfFile (NSString absoluteFilePath, out NSError outError) { id error; NSString result = invokeObjcSelf!(NSString, "typeOfFile:error:", NSString, id*)(absoluteFilePath, &error); if (error) outError = new NSError(error); return result; } NSString localizedDescriptionForType (NSString typeName) { return invokeObjcSelf!(NSString, "localizedDescriptionForType:", NSString)(typeName); } NSString preferredFilenameExtensionForType (NSString typeName) { return invokeObjcSelf!(NSString, "preferredFilenameExtensionForType:", NSString)(typeName); } bool filenameExtension (NSString filenameExtension, NSString typeName) { return invokeObjcSelf!(bool, "filenameExtension:isValidForType:", NSString, NSString)(filenameExtension, typeName); } bool type (NSString firstTypeName, NSString secondTypeName) { return invokeObjcSelf!(bool, "type:conformsToType:", NSString, NSString)(firstTypeName, secondTypeName); } }