Rename app from Snipping Tool to SnipMC
Changes bundle ID, URL scheme, display name, project name, and all user-facing references. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,395 @@
|
|||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 77;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
130D45C3838D4526C57BAE83 /* EditorWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35857E1B1439529A1C6932B7 /* EditorWindowController.swift */; };
|
||||||
|
1BDB0D69E351CA5C221B94EA /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 081CCD02ACD35FC227278E48 /* SettingsView.swift */; };
|
||||||
|
1D8FC537A5AC329C446C4218 /* SnippingToolApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = E00A19A40DF5025E03B556FD /* SnippingToolApp.swift */; };
|
||||||
|
24C10B8D3D9AD133DE9920BC /* HotKeyCombo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 275CE51E9539509ACD429507 /* HotKeyCombo.swift */; };
|
||||||
|
2919075053BD6EBD40F49085 /* KeyCaptureRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 829BB71510BB50F5C8CDB09B /* KeyCaptureRepresentable.swift */; };
|
||||||
|
30D358DCC80875B5AE8E7CC9 /* CaptureMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83137FC977A1F59EDC7C3DE3 /* CaptureMode.swift */; };
|
||||||
|
34615E753CFF584C1561040F /* SettingsWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF14927359614F91B42F70A0 /* SettingsWindowController.swift */; };
|
||||||
|
449C4A7698D1DA7F8CD8B6BC /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F9EEA6BED296D9B4406E764 /* AppCoordinator.swift */; };
|
||||||
|
475DE4CC16A7A1EA786348F0 /* AnnotationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2048886E3C9DB924A3F618C /* AnnotationItem.swift */; };
|
||||||
|
4B8591A347CDB31A5866A532 /* AboutWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6120576595AA8DB5C96DD665 /* AboutWindowController.swift */; };
|
||||||
|
54D578ADAA0EA4B1B4E977BB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4CE7E1EFC83123C2285157A /* AppDelegate.swift */; };
|
||||||
|
6FBABC7A889F4B1C0553ECEB /* KeyCodeSymbols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47883B3A344C0BD1143DDD27 /* KeyCodeSymbols.swift */; };
|
||||||
|
735EDBCCACD86A435C087FCA /* MenuBarContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7510AE1AF6818D4FE6428E9F /* MenuBarContentView.swift */; };
|
||||||
|
7CF577EBE926EBE85AD18CFF /* AnnotationDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1DCECF6E7B7AD8486238262 /* AnnotationDocument.swift */; };
|
||||||
|
7FD8CD2B11ECC27CF23976B1 /* ImageFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61F76602A1109742C19A7F88 /* ImageFormat.swift */; };
|
||||||
|
8DCD5BBF7C77AD494D4296F4 /* OutputAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56887E8312DA185054D0C9B2 /* OutputAction.swift */; };
|
||||||
|
AC0CAFD6D28E8B65BDB17976 /* HotKeyRecorderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 415C4A01A46C8F4A35C88ADB /* HotKeyRecorderView.swift */; };
|
||||||
|
B68ACECC44BB1E5907336177 /* AnnotationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3AD2AE94290AF996796300 /* AnnotationRenderer.swift */; };
|
||||||
|
BE94EAB3F172FA6B73752298 /* EditorToolbarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1E46DCD8FA452BBCA2F0A47 /* EditorToolbarView.swift */; };
|
||||||
|
CB4219E3C65E1700F5D38149 /* HotKeyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27FAE65DDB9045BF6E0CE619 /* HotKeyManager.swift */; };
|
||||||
|
E0DDAD12E91158BF18D77A94 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0122BC6EC2818009EA7F3D53 /* Assets.xcassets */; };
|
||||||
|
EE6381E9BC6F06BAA563A376 /* AnnotationCanvasView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BAF28ACE4ACF8932BE7C1C /* AnnotationCanvasView.swift */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
0122BC6EC2818009EA7F3D53 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
|
081CCD02ACD35FC227278E48 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
|
||||||
|
275CE51E9539509ACD429507 /* HotKeyCombo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HotKeyCombo.swift; sourceTree = "<group>"; };
|
||||||
|
27FAE65DDB9045BF6E0CE619 /* HotKeyManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HotKeyManager.swift; sourceTree = "<group>"; };
|
||||||
|
35857E1B1439529A1C6932B7 /* EditorWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorWindowController.swift; sourceTree = "<group>"; };
|
||||||
|
415C4A01A46C8F4A35C88ADB /* HotKeyRecorderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HotKeyRecorderView.swift; sourceTree = "<group>"; };
|
||||||
|
47883B3A344C0BD1143DDD27 /* KeyCodeSymbols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyCodeSymbols.swift; sourceTree = "<group>"; };
|
||||||
|
56887E8312DA185054D0C9B2 /* OutputAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OutputAction.swift; sourceTree = "<group>"; };
|
||||||
|
5F9EEA6BED296D9B4406E764 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = "<group>"; };
|
||||||
|
6120576595AA8DB5C96DD665 /* AboutWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutWindowController.swift; sourceTree = "<group>"; };
|
||||||
|
61F76602A1109742C19A7F88 /* ImageFormat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageFormat.swift; sourceTree = "<group>"; };
|
||||||
|
7510AE1AF6818D4FE6428E9F /* MenuBarContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuBarContentView.swift; sourceTree = "<group>"; };
|
||||||
|
829BB71510BB50F5C8CDB09B /* KeyCaptureRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyCaptureRepresentable.swift; sourceTree = "<group>"; };
|
||||||
|
83137FC977A1F59EDC7C3DE3 /* CaptureMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaptureMode.swift; sourceTree = "<group>"; };
|
||||||
|
97BAF28ACE4ACF8932BE7C1C /* AnnotationCanvasView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationCanvasView.swift; sourceTree = "<group>"; };
|
||||||
|
A1DCECF6E7B7AD8486238262 /* AnnotationDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationDocument.swift; sourceTree = "<group>"; };
|
||||||
|
A2048886E3C9DB924A3F618C /* AnnotationItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationItem.swift; sourceTree = "<group>"; };
|
||||||
|
B4CE7E1EFC83123C2285157A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
|
DC94AA0BA2B93F0EC38D151B /* SnipMC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SnipMC.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
DD3AD2AE94290AF996796300 /* AnnotationRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationRenderer.swift; sourceTree = "<group>"; };
|
||||||
|
DF14927359614F91B42F70A0 /* SettingsWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsWindowController.swift; sourceTree = "<group>"; };
|
||||||
|
E00A19A40DF5025E03B556FD /* SnippingToolApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnippingToolApp.swift; sourceTree = "<group>"; };
|
||||||
|
F1E46DCD8FA452BBCA2F0A47 /* EditorToolbarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorToolbarView.swift; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
27F119FCBEB53FC15BA69005 = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
B94195006D6A63C034170E68 /* Sources */,
|
||||||
|
627FB11FD8CF42D3297E06E1 /* Products */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
627FB11FD8CF42D3297E06E1 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
DC94AA0BA2B93F0EC38D151B /* SnipMC.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
68AAE9FD7418A399448CE045 /* Editor */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
97BAF28ACE4ACF8932BE7C1C /* AnnotationCanvasView.swift */,
|
||||||
|
A1DCECF6E7B7AD8486238262 /* AnnotationDocument.swift */,
|
||||||
|
A2048886E3C9DB924A3F618C /* AnnotationItem.swift */,
|
||||||
|
DD3AD2AE94290AF996796300 /* AnnotationRenderer.swift */,
|
||||||
|
F1E46DCD8FA452BBCA2F0A47 /* EditorToolbarView.swift */,
|
||||||
|
35857E1B1439529A1C6932B7 /* EditorWindowController.swift */,
|
||||||
|
);
|
||||||
|
path = Editor;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
B94195006D6A63C034170E68 /* Sources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
6120576595AA8DB5C96DD665 /* AboutWindowController.swift */,
|
||||||
|
5F9EEA6BED296D9B4406E764 /* AppCoordinator.swift */,
|
||||||
|
B4CE7E1EFC83123C2285157A /* AppDelegate.swift */,
|
||||||
|
0122BC6EC2818009EA7F3D53 /* Assets.xcassets */,
|
||||||
|
83137FC977A1F59EDC7C3DE3 /* CaptureMode.swift */,
|
||||||
|
275CE51E9539509ACD429507 /* HotKeyCombo.swift */,
|
||||||
|
27FAE65DDB9045BF6E0CE619 /* HotKeyManager.swift */,
|
||||||
|
415C4A01A46C8F4A35C88ADB /* HotKeyRecorderView.swift */,
|
||||||
|
61F76602A1109742C19A7F88 /* ImageFormat.swift */,
|
||||||
|
829BB71510BB50F5C8CDB09B /* KeyCaptureRepresentable.swift */,
|
||||||
|
47883B3A344C0BD1143DDD27 /* KeyCodeSymbols.swift */,
|
||||||
|
7510AE1AF6818D4FE6428E9F /* MenuBarContentView.swift */,
|
||||||
|
56887E8312DA185054D0C9B2 /* OutputAction.swift */,
|
||||||
|
081CCD02ACD35FC227278E48 /* SettingsView.swift */,
|
||||||
|
DF14927359614F91B42F70A0 /* SettingsWindowController.swift */,
|
||||||
|
E00A19A40DF5025E03B556FD /* SnippingToolApp.swift */,
|
||||||
|
68AAE9FD7418A399448CE045 /* Editor */,
|
||||||
|
);
|
||||||
|
path = Sources;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
EAED69AFD4EF2FC3C57FA1B8 /* SnipMC */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 99C7A42A282B29A64B2B7688 /* Build configuration list for PBXNativeTarget "SnipMC" */;
|
||||||
|
buildPhases = (
|
||||||
|
117C9BBC9123725FE6AD71C0 /* Sources */,
|
||||||
|
C24E14B384D8A0D263EED133 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = SnipMC;
|
||||||
|
packageProductDependencies = (
|
||||||
|
);
|
||||||
|
productName = SnipMC;
|
||||||
|
productReference = DC94AA0BA2B93F0EC38D151B /* SnipMC.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
E5D0ACF0D9F5E10B2B3D9BB2 /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
BuildIndependentTargetsInParallel = YES;
|
||||||
|
LastUpgradeCheck = 1430;
|
||||||
|
TargetAttributes = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = 7F1515B2EDB59F08F4421C1E /* Build configuration list for PBXProject "SnipMC" */;
|
||||||
|
developmentRegion = en;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
Base,
|
||||||
|
en,
|
||||||
|
);
|
||||||
|
mainGroup = 27F119FCBEB53FC15BA69005;
|
||||||
|
minimizedProjectReferenceProxies = 1;
|
||||||
|
preferredProjectObjectVersion = 77;
|
||||||
|
productRefGroup = 627FB11FD8CF42D3297E06E1 /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
EAED69AFD4EF2FC3C57FA1B8 /* SnipMC */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
C24E14B384D8A0D263EED133 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
E0DDAD12E91158BF18D77A94 /* Assets.xcassets in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
117C9BBC9123725FE6AD71C0 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
4B8591A347CDB31A5866A532 /* AboutWindowController.swift in Sources */,
|
||||||
|
EE6381E9BC6F06BAA563A376 /* AnnotationCanvasView.swift in Sources */,
|
||||||
|
7CF577EBE926EBE85AD18CFF /* AnnotationDocument.swift in Sources */,
|
||||||
|
475DE4CC16A7A1EA786348F0 /* AnnotationItem.swift in Sources */,
|
||||||
|
B68ACECC44BB1E5907336177 /* AnnotationRenderer.swift in Sources */,
|
||||||
|
449C4A7698D1DA7F8CD8B6BC /* AppCoordinator.swift in Sources */,
|
||||||
|
54D578ADAA0EA4B1B4E977BB /* AppDelegate.swift in Sources */,
|
||||||
|
30D358DCC80875B5AE8E7CC9 /* CaptureMode.swift in Sources */,
|
||||||
|
BE94EAB3F172FA6B73752298 /* EditorToolbarView.swift in Sources */,
|
||||||
|
130D45C3838D4526C57BAE83 /* EditorWindowController.swift in Sources */,
|
||||||
|
24C10B8D3D9AD133DE9920BC /* HotKeyCombo.swift in Sources */,
|
||||||
|
CB4219E3C65E1700F5D38149 /* HotKeyManager.swift in Sources */,
|
||||||
|
AC0CAFD6D28E8B65BDB17976 /* HotKeyRecorderView.swift in Sources */,
|
||||||
|
7FD8CD2B11ECC27CF23976B1 /* ImageFormat.swift in Sources */,
|
||||||
|
2919075053BD6EBD40F49085 /* KeyCaptureRepresentable.swift in Sources */,
|
||||||
|
6FBABC7A889F4B1C0553ECEB /* KeyCodeSymbols.swift in Sources */,
|
||||||
|
735EDBCCACD86A435C087FCA /* MenuBarContentView.swift in Sources */,
|
||||||
|
8DCD5BBF7C77AD494D4296F4 /* OutputAction.swift in Sources */,
|
||||||
|
1BDB0D69E351CA5C221B94EA /* SettingsView.swift in Sources */,
|
||||||
|
34615E753CFF584C1561040F /* SettingsWindowController.swift in Sources */,
|
||||||
|
1D8FC537A5AC329C446C4218 /* SnippingToolApp.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
A8AD90B7DF485B4FE48C4DA2 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"DEBUG=1",
|
||||||
|
);
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = macosx;
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
AAF2F2D5D59F12E7F040E326 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
CURRENT_PROJECT_VERSION = 2;
|
||||||
|
ENABLE_HARDENED_RUNTIME = NO;
|
||||||
|
INFOPLIST_FILE = Generated/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/../Frameworks",
|
||||||
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
||||||
|
MARKETING_VERSION = 1.0.1;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = it.wende.snipmc;
|
||||||
|
PRODUCT_NAME = SnipMC;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
BF982956FBC79F78D1D42A71 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = macosx;
|
||||||
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
EB9AB62157886891881D482F /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
CURRENT_PROJECT_VERSION = 2;
|
||||||
|
ENABLE_HARDENED_RUNTIME = NO;
|
||||||
|
INFOPLIST_FILE = Generated/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/../Frameworks",
|
||||||
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
||||||
|
MARKETING_VERSION = 1.0.1;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = it.wende.snipmc;
|
||||||
|
PRODUCT_NAME = SnipMC;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
7F1515B2EDB59F08F4421C1E /* Build configuration list for PBXProject "SnipMC" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
A8AD90B7DF485B4FE48C4DA2 /* Debug */,
|
||||||
|
BF982956FBC79F78D1D42A71 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Debug;
|
||||||
|
};
|
||||||
|
99C7A42A282B29A64B2B7688 /* Build configuration list for PBXNativeTarget "SnipMC" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
EB9AB62157886891881D482F /* Debug */,
|
||||||
|
AAF2F2D5D59F12E7F040E326 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Debug;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = E5D0ACF0D9F5E10B2B3D9BB2 /* Project object */;
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1430"
|
||||||
|
version = "1.7">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES"
|
||||||
|
runPostActionsOnFailure = "NO">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "EAED69AFD4EF2FC3C57FA1B8"
|
||||||
|
BuildableName = "SnipMC.app"
|
||||||
|
BlueprintName = "SnipMC"
|
||||||
|
ReferencedContainer = "container:SnipMC.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
onlyGenerateCoverageForSpecifiedTargets = "NO">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "EAED69AFD4EF2FC3C57FA1B8"
|
||||||
|
BuildableName = "SnipMC.app"
|
||||||
|
BlueprintName = "SnipMC"
|
||||||
|
ReferencedContainer = "container:SnipMC.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "EAED69AFD4EF2FC3C57FA1B8"
|
||||||
|
BuildableName = "SnipMC.app"
|
||||||
|
BlueprintName = "SnipMC"
|
||||||
|
ReferencedContainer = "container:SnipMC.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
<CommandLineArguments>
|
||||||
|
</CommandLineArguments>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "EAED69AFD4EF2FC3C57FA1B8"
|
||||||
|
BuildableName = "SnipMC.app"
|
||||||
|
BlueprintName = "SnipMC"
|
||||||
|
ReferencedContainer = "container:SnipMC.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
@@ -11,7 +11,7 @@ final class AboutWindowController: NSWindowController, NSWindowDelegate {
|
|||||||
backing: .buffered,
|
backing: .buffered,
|
||||||
defer: false
|
defer: false
|
||||||
)
|
)
|
||||||
window.title = "Snipping Tool"
|
window.title = "SnipMC"
|
||||||
window.isReleasedWhenClosed = false
|
window.isReleasedWhenClosed = false
|
||||||
window.center()
|
window.center()
|
||||||
self.init(window: window)
|
self.init(window: window)
|
||||||
@@ -62,7 +62,7 @@ struct AboutTab: View {
|
|||||||
.frame(width: 80, height: 80)
|
.frame(width: 80, height: 80)
|
||||||
}
|
}
|
||||||
|
|
||||||
Text("Snipping Tool")
|
Text("SnipMC")
|
||||||
.font(.title.bold())
|
.font(.title.bold())
|
||||||
|
|
||||||
Text("Version \(version) (\(build))")
|
Text("Version \(version) (\(build))")
|
||||||
@@ -95,7 +95,7 @@ struct HelpTab: View {
|
|||||||
helpSection("Aufnahme-Modi") {
|
helpSection("Aufnahme-Modi") {
|
||||||
helpRow("Ganzer Bildschirm", "Nimmt den gesamten Bildschirm auf")
|
helpRow("Ganzer Bildschirm", "Nimmt den gesamten Bildschirm auf")
|
||||||
helpRow("Fenster", "Klicke auf ein Fenster, um es aufzunehmen")
|
helpRow("Fenster", "Klicke auf ein Fenster, um es aufzunehmen")
|
||||||
helpRow("Bereich", "Ziehe einen Rahmen um den gewünschten Bereich")
|
helpRow("Bereich", "Ziehe einen Rahmen um den gew\u{00fc}nschten Bereich")
|
||||||
}
|
}
|
||||||
|
|
||||||
helpSection("Bildeditor") {
|
helpSection("Bildeditor") {
|
||||||
@@ -103,31 +103,31 @@ struct HelpTab: View {
|
|||||||
helpRow("Rechteck", "Rahmen um einen Bereich zeichnen")
|
helpRow("Rechteck", "Rahmen um einen Bereich zeichnen")
|
||||||
helpRow("Ellipse", "Kreis oder Oval zeichnen")
|
helpRow("Ellipse", "Kreis oder Oval zeichnen")
|
||||||
helpRow("Text", "Klicke auf eine Stelle und tippe Text ein")
|
helpRow("Text", "Klicke auf eine Stelle und tippe Text ein")
|
||||||
helpRow("\u{2318}Z / \u{2318}\u{21e7}Z", "Rückgängig / Wiederholen")
|
helpRow("\u{2318}Z / \u{2318}\u{21e7}Z", "R\u{00fc}ckg\u{00e4}ngig / Wiederholen")
|
||||||
helpRow("\u{232b} / Entf", "Ausgewählte Annotation löschen")
|
helpRow("\u{232b} / Entf", "Ausgew\u{00e4}hlte Annotation l\u{00f6}schen")
|
||||||
}
|
}
|
||||||
|
|
||||||
helpSection("URL-Schema") {
|
helpSection("URL-Schema") {
|
||||||
Text("Zum Auslösen per Logitech Options+, Kurzbefehle, Stream Deck o.\u{202f}ä.")
|
Text("Zum Ausl\u{00f6}sen per Logitech Options+, Kurzb efehle, Stream Deck o.\u{202f}\u{00e4}.")
|
||||||
.font(.callout)
|
.font(.callout)
|
||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
.padding(.bottom, 4)
|
.padding(.bottom, 4)
|
||||||
urlRow("snippingtool://fullscreen", "Vollbild-Screenshot")
|
urlRow("snipmc://fullscreen", "Vollbild-Screenshot")
|
||||||
urlRow("snippingtool://window", "Fenster-Screenshot")
|
urlRow("snipmc://window", "Fenster-Screenshot")
|
||||||
urlRow("snippingtool://region", "Bereich-Screenshot")
|
urlRow("snipmc://region", "Bereich-Screenshot")
|
||||||
urlRow("snippingtool://region?edit=true", "Bereich + Editor")
|
urlRow("snipmc://region?edit=true", "Bereich + Editor")
|
||||||
urlRow("snippingtool://fullscreen?edit=true", "Vollbild + Editor")
|
urlRow("snipmc://fullscreen?edit=true", "Vollbild + Editor")
|
||||||
urlRow("snippingtool://edit", "Bild aus Datei bearbeiten")
|
urlRow("snipmc://edit", "Bild aus Datei bearbeiten")
|
||||||
urlRow("snippingtool://editlast", "Letzten Screenshot bearbeiten")
|
urlRow("snipmc://editlast", "Letzten Screenshot bearbeiten")
|
||||||
urlRow("snippingtool://clipboard", "Zwischenablage bearbeiten")
|
urlRow("snipmc://clipboard", "Zwischenablage bearbeiten")
|
||||||
}
|
}
|
||||||
|
|
||||||
helpSection("Einrichtung in Logitech Options+") {
|
helpSection("Einrichtung in Logitech Options+") {
|
||||||
VStack(alignment: .leading, spacing: 4) {
|
VStack(alignment: .leading, spacing: 4) {
|
||||||
Text("1. Logi Options+ öffnen und Gerät wählen")
|
Text("1. Logi Options+ \u{00f6}ffnen und Ger\u{00e4}t w\u{00e4}hlen")
|
||||||
Text("2. Taste zuweisen: Aktion = URL öffnen")
|
Text("2. Taste zuweisen: Aktion = URL \u{00f6}ffnen")
|
||||||
Text("3. URL eintragen, z.\u{202f}B.:")
|
Text("3. URL eintragen, z.\u{202f}B.:")
|
||||||
Text(" snippingtool://region?edit=true")
|
Text(" snipmc://region?edit=true")
|
||||||
.font(.system(.body, design: .monospaced))
|
.font(.system(.body, design: .monospaced))
|
||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
}
|
}
|
||||||
@@ -137,8 +137,8 @@ struct HelpTab: View {
|
|||||||
helpSection("Hinweise") {
|
helpSection("Hinweise") {
|
||||||
VStack(alignment: .leading, spacing: 4) {
|
VStack(alignment: .leading, spacing: 4) {
|
||||||
Text("\u{2022} Berechtigung Bildschirmaufnahme erforderlich (Systemeinstellungen \u{2192} Datenschutz & Sicherheit)")
|
Text("\u{2022} Berechtigung Bildschirmaufnahme erforderlich (Systemeinstellungen \u{2192} Datenschutz & Sicherheit)")
|
||||||
Text("\u{2022} Speicherort: ~/Bilder/Screenshots (änderbar in Einstellungen)")
|
Text("\u{2022} Speicherort: ~/Bilder/Screenshots (\u{00e4}nderbar in Einstellungen)")
|
||||||
Text("\u{2022} Tastenkürzel frei konfigurierbar in den Einstellungen")
|
Text("\u{2022} Tastenk\u{00fc}rzel frei konfigurierbar in den Einstellungen")
|
||||||
}
|
}
|
||||||
.font(.callout)
|
.font(.callout)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,13 +97,8 @@ final class AppCoordinator: ObservableObject {
|
|||||||
|
|
||||||
// MARK: - External triggers (URL scheme)
|
// MARK: - External triggers (URL scheme)
|
||||||
|
|
||||||
/// Handles `snippingtool://<mode>` URLs so external tools (Logitech
|
|
||||||
/// Options, Shortcuts, Stream Deck, `open` from the command line, …)
|
|
||||||
/// can trigger a specific capture mode instead of just launching the app.
|
|
||||||
/// Accepts the mode either as the host (`snippingtool://region`) or as
|
|
||||||
/// a query item (`snippingtool://capture?mode=region`).
|
|
||||||
func handle(url: URL) {
|
func handle(url: URL) {
|
||||||
guard url.scheme?.caseInsensitiveCompare("snippingtool") == .orderedSame else { return }
|
guard url.scheme?.caseInsensitiveCompare("snipmc") == .orderedSame else { return }
|
||||||
|
|
||||||
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
|
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
|
||||||
let queryItems = components?.queryItems ?? []
|
let queryItems = components?.queryItems ?? []
|
||||||
@@ -141,7 +136,7 @@ final class AppCoordinator: ObservableObject {
|
|||||||
mode = .region
|
mode = .region
|
||||||
default:
|
default:
|
||||||
mode = nil
|
mode = nil
|
||||||
NSLog("SnippingTool: unrecognized URL trigger \(url.absoluteString)")
|
NSLog("SnipMC: unrecognized URL trigger \(url.absoluteString)")
|
||||||
}
|
}
|
||||||
|
|
||||||
if let mode {
|
if let mode {
|
||||||
@@ -180,7 +175,7 @@ final class AppCoordinator: ObservableObject {
|
|||||||
do {
|
do {
|
||||||
try process.run()
|
try process.run()
|
||||||
} catch {
|
} catch {
|
||||||
NSLog("SnippingTool: failed to launch screencapture: \(error)")
|
NSLog("SnipMC: failed to launch screencapture: \(error)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,7 +261,7 @@ final class AppCoordinator: ObservableObject {
|
|||||||
do {
|
do {
|
||||||
try data.write(to: url, options: .atomic)
|
try data.write(to: url, options: .atomic)
|
||||||
} catch {
|
} catch {
|
||||||
NSLog("SnippingTool: failed to save annotated image: \(error)")
|
NSLog("SnipMC: failed to save annotated image: \(error)")
|
||||||
}
|
}
|
||||||
|
|
||||||
if outputAction.copiesToClipboard {
|
if outputAction.copiesToClipboard {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ struct MenuBarContentView: View {
|
|||||||
}
|
}
|
||||||
.keyboardShortcut(",")
|
.keyboardShortcut(",")
|
||||||
|
|
||||||
Button("Über Snipping Tool…") {
|
Button("Über SnipMC…") {
|
||||||
AboutWindowController.shared.show()
|
AboutWindowController.shared.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
@main
|
@main
|
||||||
struct SnippingToolApp: App {
|
struct SnipMCApp: App {
|
||||||
@NSApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
|
@NSApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
|
||||||
|
|
||||||
var body: some Scene {
|
var body: some Scene {
|
||||||
MenuBarExtra("Snipping Tool", systemImage: "camera.viewfinder") {
|
MenuBarExtra("SnipMC", systemImage: "camera.viewfinder") {
|
||||||
MenuBarContentView()
|
MenuBarContentView()
|
||||||
.environmentObject(appDelegate.coordinator)
|
.environmentObject(appDelegate.coordinator)
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-10
@@ -1,11 +1,11 @@
|
|||||||
name: SnippingTool
|
name: SnipMC
|
||||||
options:
|
options:
|
||||||
bundleIdPrefix: it.wende
|
bundleIdPrefix: it.wende
|
||||||
deploymentTarget:
|
deploymentTarget:
|
||||||
macOS: "14.0"
|
macOS: "14.0"
|
||||||
createIntermediateGroups: true
|
createIntermediateGroups: true
|
||||||
targets:
|
targets:
|
||||||
SnippingTool:
|
SnipMC:
|
||||||
type: application
|
type: application
|
||||||
platform: macOS
|
platform: macOS
|
||||||
deploymentTarget: "14.0"
|
deploymentTarget: "14.0"
|
||||||
@@ -14,18 +14,18 @@ targets:
|
|||||||
info:
|
info:
|
||||||
path: Generated/Info.plist
|
path: Generated/Info.plist
|
||||||
properties:
|
properties:
|
||||||
CFBundleDisplayName: Snipping Tool
|
CFBundleDisplayName: SnipMC
|
||||||
CFBundleName: Snipping Tool
|
CFBundleName: SnipMC
|
||||||
LSUIElement: true
|
LSUIElement: true
|
||||||
NSHumanReadableCopyright: "Copyright © 2026"
|
NSHumanReadableCopyright: "Copyright © 2026"
|
||||||
CFBundleURLTypes:
|
CFBundleURLTypes:
|
||||||
- CFBundleURLName: it.wende.snippingtool
|
- CFBundleURLName: it.wende.snipmc
|
||||||
CFBundleURLSchemes:
|
CFBundleURLSchemes:
|
||||||
- snippingtool
|
- snipmc
|
||||||
settings:
|
settings:
|
||||||
base:
|
base:
|
||||||
PRODUCT_BUNDLE_IDENTIFIER: it.wende.snippingtool
|
PRODUCT_BUNDLE_IDENTIFIER: it.wende.snipmc
|
||||||
PRODUCT_NAME: Snipping Tool
|
PRODUCT_NAME: SnipMC
|
||||||
MARKETING_VERSION: "1.0.1"
|
MARKETING_VERSION: "1.0.1"
|
||||||
CURRENT_PROJECT_VERSION: "2"
|
CURRENT_PROJECT_VERSION: "2"
|
||||||
SWIFT_VERSION: "5.0"
|
SWIFT_VERSION: "5.0"
|
||||||
@@ -34,9 +34,9 @@ targets:
|
|||||||
CODE_SIGN_IDENTITY: "-"
|
CODE_SIGN_IDENTITY: "-"
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
||||||
schemes:
|
schemes:
|
||||||
SnippingTool:
|
SnipMC:
|
||||||
build:
|
build:
|
||||||
targets:
|
targets:
|
||||||
SnippingTool: all
|
SnipMC: all
|
||||||
run:
|
run:
|
||||||
config: Debug
|
config: Debug
|
||||||
|
|||||||
Reference in New Issue
Block a user