1
Fork 0

Add placeholder export accessory view

This commit is contained in:
Joshua Goins 2022-02-14 12:10:08 -04:00
parent 866a378c8d
commit 6aad7b912d
4 changed files with 92 additions and 3 deletions

View file

@ -28,6 +28,9 @@
036AFC11241800350075400A /* ThumbnailProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036AFC10241800350075400A /* ThumbnailProvider.swift */; }; 036AFC11241800350075400A /* ThumbnailProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036AFC10241800350075400A /* ThumbnailProvider.swift */; };
036AFC16241800350075400A /* Thumbnail.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 036AFC0B241800350075400A /* Thumbnail.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 036AFC16241800350075400A /* Thumbnail.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 036AFC0B241800350075400A /* Thumbnail.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
036AFC1B241800850075400A /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 036AFC1A241800850075400A /* ZIPFoundation */; }; 036AFC1B241800850075400A /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 036AFC1A241800850075400A /* ZIPFoundation */; };
0371996027BAC5D800EE1DFD /* Silica_ViewerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0371995F27BAC5D800EE1DFD /* Silica_ViewerTests.swift */; };
0371996727BACD8700EE1DFD /* ExportAccessoryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0371996627BACD8700EE1DFD /* ExportAccessoryView.xib */; };
0371996927BACDE800EE1DFD /* ExportAccessoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0371996827BACDE800EE1DFD /* ExportAccessoryView.swift */; };
03C39DE726F90734005555AE /* lzodefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C39DE226F90733005555AE /* lzodefs.h */; }; 03C39DE726F90734005555AE /* lzodefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C39DE226F90733005555AE /* lzodefs.h */; };
03C39DE826F90734005555AE /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 03C39DE426F90734005555AE /* Makefile */; }; 03C39DE826F90734005555AE /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 03C39DE426F90734005555AE /* Makefile */; };
03C39DE926F90734005555AE /* testmini.c in Sources */ = {isa = PBXBuildFile; fileRef = 03C39DE526F90734005555AE /* testmini.c */; }; 03C39DE926F90734005555AE /* testmini.c in Sources */ = {isa = PBXBuildFile; fileRef = 03C39DE526F90734005555AE /* testmini.c */; };
@ -53,6 +56,13 @@
remoteGlobalIDString = 036AFC0A241800350075400A; remoteGlobalIDString = 036AFC0A241800350075400A;
remoteInfo = Thumbnail; remoteInfo = Thumbnail;
}; };
0371996127BAC5D800EE1DFD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 030F6FE62415C5E300A43F01 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 030F6FED2415C5E300A43F01;
remoteInfo = SilicaViewer;
};
03CB383C2419CA2D0078B3E5 /* PBXContainerItemProxy */ = { 03CB383C2419CA2D0078B3E5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 030F6FE62415C5E300A43F01 /* Project object */; containerPortal = 030F6FE62415C5E300A43F01 /* Project object */;
@ -105,6 +115,11 @@
036AFC10241800350075400A /* ThumbnailProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThumbnailProvider.swift; sourceTree = "<group>"; }; 036AFC10241800350075400A /* ThumbnailProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThumbnailProvider.swift; sourceTree = "<group>"; };
036AFC12241800350075400A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 036AFC12241800350075400A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
036AFC13241800350075400A /* Thumbnail.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Thumbnail.entitlements; sourceTree = "<group>"; }; 036AFC13241800350075400A /* Thumbnail.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Thumbnail.entitlements; sourceTree = "<group>"; };
0371995827BAC52900EE1DFD /* SilicaViewer.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = SilicaViewer.xctestplan; sourceTree = "<group>"; };
0371995D27BAC5D800EE1DFD /* Silica ViewerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Silica ViewerTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
0371995F27BAC5D800EE1DFD /* Silica_ViewerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Silica_ViewerTests.swift; sourceTree = "<group>"; };
0371996627BACD8700EE1DFD /* ExportAccessoryView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ExportAccessoryView.xib; sourceTree = "<group>"; };
0371996827BACDE800EE1DFD /* ExportAccessoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportAccessoryView.swift; sourceTree = "<group>"; };
03C39DE226F90733005555AE /* lzodefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzodefs.h; sourceTree = "<group>"; }; 03C39DE226F90733005555AE /* lzodefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzodefs.h; sourceTree = "<group>"; };
03C39DE326F90733005555AE /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = "<group>"; }; 03C39DE326F90733005555AE /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = "<group>"; };
03C39DE426F90734005555AE /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; }; 03C39DE426F90734005555AE /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
@ -143,6 +158,13 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
0371995A27BAC5D800EE1DFD /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
03CB382C2419C9DB0078B3E5 /* Frameworks */ = { 03CB382C2419C9DB0078B3E5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -156,11 +178,13 @@
030F6FE52415C5E300A43F01 = { 030F6FE52415C5E300A43F01 = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
0371995827BAC52900EE1DFD /* SilicaViewer.xctestplan */,
0357A94826F9C71E0075D5BC /* LZO */, 0357A94826F9C71E0075D5BC /* LZO */,
035D19F726F0927200B332BE /* SilicaViewer */, 035D19F726F0927200B332BE /* SilicaViewer */,
03CB383E241A5ACD0078B3E5 /* Shared */, 03CB383E241A5ACD0078B3E5 /* Shared */,
030F700C2415C6B500A43F01 /* Quicklook */, 030F700C2415C6B500A43F01 /* Quicklook */,
036AFC0F241800350075400A /* Thumbnail */, 036AFC0F241800350075400A /* Thumbnail */,
0371995E27BAC5D800EE1DFD /* Silica ViewerTests */,
030F70092415C6B500A43F01 /* Frameworks */, 030F70092415C6B500A43F01 /* Frameworks */,
030F6FEF2415C5E300A43F01 /* Products */, 030F6FEF2415C5E300A43F01 /* Products */,
); );
@ -173,6 +197,7 @@
030F70082415C6B500A43F01 /* QuickLook.appex */, 030F70082415C6B500A43F01 /* QuickLook.appex */,
036AFC0B241800350075400A /* Thumbnail.appex */, 036AFC0B241800350075400A /* Thumbnail.appex */,
03CB382E2419C9DB0078B3E5 /* libLZO.a */, 03CB382E2419C9DB0078B3E5 /* libLZO.a */,
0371995D27BAC5D800EE1DFD /* Silica ViewerTests.xctest */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -227,6 +252,8 @@
035D1A0126F0927200B332BE /* AppDelegate.swift */, 035D1A0126F0927200B332BE /* AppDelegate.swift */,
035D1A0226F0927200B332BE /* TimelapseViewController.swift */, 035D1A0226F0927200B332BE /* TimelapseViewController.swift */,
035D1A0326F0927200B332BE /* Info.plist */, 035D1A0326F0927200B332BE /* Info.plist */,
0371996627BACD8700EE1DFD /* ExportAccessoryView.xib */,
0371996827BACDE800EE1DFD /* ExportAccessoryView.swift */,
); );
path = SilicaViewer; path = SilicaViewer;
sourceTree = "<group>"; sourceTree = "<group>";
@ -241,6 +268,14 @@
path = Thumbnail; path = Thumbnail;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
0371995E27BAC5D800EE1DFD /* Silica ViewerTests */ = {
isa = PBXGroup;
children = (
0371995F27BAC5D800EE1DFD /* Silica_ViewerTests.swift */,
);
path = "Silica ViewerTests";
sourceTree = "<group>";
};
03CB383E241A5ACD0078B3E5 /* Shared */ = { 03CB383E241A5ACD0078B3E5 /* Shared */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -370,8 +405,7 @@
030F6FE62415C5E300A43F01 /* Project object */ = { 030F6FE62415C5E300A43F01 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
==== BASE ==== LastSwiftUpdateCheck = 1320;
LastSwiftUpdateCheck = 1130;
LastUpgradeCheck = 1250; LastUpgradeCheck = 1250;
ORGANIZATIONNAME = Josh; ORGANIZATIONNAME = Josh;
TargetAttributes = { TargetAttributes = {
@ -426,6 +460,7 @@
files = ( files = (
035D1A0626F0927200B332BE /* Assets.xcassets in Resources */, 035D1A0626F0927200B332BE /* Assets.xcassets in Resources */,
035D1A0726F0927200B332BE /* Main.storyboard in Resources */, 035D1A0726F0927200B332BE /* Main.storyboard in Resources */,
0371996727BACD8700EE1DFD /* ExportAccessoryView.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -463,6 +498,7 @@
035D1A0426F0927200B332BE /* ViewController.swift in Sources */, 035D1A0426F0927200B332BE /* ViewController.swift in Sources */,
035D1A0526F0927200B332BE /* cbridge.c in Sources */, 035D1A0526F0927200B332BE /* cbridge.c in Sources */,
035D1A0826F0927200B332BE /* InfoViewController.swift in Sources */, 035D1A0826F0927200B332BE /* InfoViewController.swift in Sources */,
0371996927BACDE800EE1DFD /* ExportAccessoryView.swift in Sources */,
03CB3840241A5AED0078B3E5 /* Shared.swift in Sources */, 03CB3840241A5AED0078B3E5 /* Shared.swift in Sources */,
035D1A0926F0927200B332BE /* Document.swift in Sources */, 035D1A0926F0927200B332BE /* Document.swift in Sources */,
); );

View file

@ -28,7 +28,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations {
let savePanel = NSSavePanel() let savePanel = NSSavePanel()
savePanel.title = "Save" savePanel.title = "Save"
savePanel.allowedFileTypes = ["public.png"] savePanel.allowedFileTypes = ["public.png", "public.jpeg"]
savePanel.accessoryView = ExportAccessoryView.fromNib()
savePanel.begin { (result) in savePanel.begin { (result) in
if result.rawValue == NSApplication.ModalResponse.OK.rawValue { if result.rawValue == NSApplication.ModalResponse.OK.rawValue {
let canvas = document?.makeComposite() let canvas = document?.makeComposite()

View file

@ -0,0 +1,16 @@
import Foundation
import AppKit
class ExportAccessoryView : NSView {
}
extension NSView {
class func fromNib<T: NSView>() -> T? {
var topLevelObjects : NSArray?
guard Bundle.main.loadNibNamed("\(self)", owner: nil, topLevelObjects: &topLevelObjects) else {
return nil
}
return topLevelObjects!.first(where: { $0 is T }) as? T
}
}

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner"/>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="c22-O7-iKe">
<rect key="frame" x="0.0" y="0.0" width="111" height="60"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2ff-Tm-r97">
<rect key="frame" x="17" y="16" width="78" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Izp-Ei-zox" id="r8S-Bt-u1Y">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="laP-Yo-gBn">
<items>
<menuItem title="Item 1" state="on" id="Izp-Ei-zox"/>
<menuItem title="Item 2" id="BaW-Av-Mt9"/>
<menuItem title="Item 3" id="7rG-gq-cBM"/>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
</subviews>
<point key="canvasLocation" x="-45.5" y="29"/>
</customView>
</objects>
</document>