//
//  GlyphsCore.h
//  GlyphsCore
//
//  Created by Georg Seifert on 18/08/14.
//  Copyright (c) 2014 schriftgestaltung.de. All rights reserved.
//

#ifndef GlyphsApp_GlyphsApp_h
#define GlyphsApp_GlyphsApp_h

#import <Foundation/Foundation.h>

// Please note that the content of this file is duplicated in `GlyphsCore.h`.

BOOL bothNilOrEqual(id a, id b) NS_REFINED_FOR_SWIFT;

#define GLYPHS4 1
#define GLYPHS_VERSION 4

#ifdef DEBUG
void inspectClassStopAt(Class inspectedClass, Class stopClass) NS_REFINED_FOR_SWIFT;
#endif

/**
 tags to get to the individual menus in the main menu

 `[[NSApp mainMenu] itemWithTag:GSMenuTagEdit]`
 */
typedef NS_ENUM(uint8_t, GSMenuTags) {
	GSMenuTagApp = 1,
	GSMenuTagFile = 3,
	GSMenuTagEdit = 5,
	GSMenuTagGlyph = 7,
	GSMenuTagPath = 9,
	GSMenuTagFilter = 11,
	GSMenuTagView = 13,
	GSMenuTagScript = 15,
	GSMenuTagWindow = 17,
	GSMenuTagHelp = 19,
};

extern NSString *const GSHelpBookName;

#import <GlyphsApp/BuildNumber.h>
#import <GlyphsApp/NSApplication+Error.h>
#import <GlyphsApp/GlyphsFileFormatProtocol.h>
#import <GlyphsApp/GlyphsFilterPluginProtocol.h>
#import <GlyphsApp/GlyphsPaletteProtocol.h>
#import <GlyphsApp/GlyphsPathPlugin.h>
#import <GlyphsApp/GlyphsPluginProtocol.h>
#import <GlyphsApp/GlyphsReporterProtocol.h>
#import <GlyphsApp/GlyphsToolAuxiliaryDrawing.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/GlyphsToolbarExtensionProtocol.h>
#endif
#import <GlyphsApp/GlyphsToolDrawProtocol.h>
#import <GlyphsApp/GlyphsToolEventProtocol.h>
#import <GlyphsApp/GlyphsToolProtocol.h>
#import <GlyphsApp/GSAppDelegateProtocol.h>
#import <GlyphsApp/GSApplicationPluginProtocol.h>
#import <GlyphsApp/GSAsyncAwait.h>
#import <GlyphsApp/GSAutoCompleteTextField.h>
#import <GlyphsApp/GSAxisMasterGroup.h>
#import <GlyphsApp/GSCallbackHandler.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/GSDocument.h>
#import <GlyphsApp/GSPluginHandler.h>
#endif
#import <GlyphsApp/GSColorLabelViewController.h>
#import <GlyphsApp/GSControlLayer.h>
#import <GlyphsApp/GSEditViewSidebarControllerProtocol.h>
#import <GlyphsApp/GSExportSettingsViewController.h>
#import <GlyphsApp/GSFilterPlugin.h>
#import <GlyphsApp/GSFilterPropertiesController.h>
#import <GlyphsApp/GSFontCheckerProtocol.h>
#import <GlyphsApp/GSGlyphCell.h>
#import <GlyphsApp/GSGlyphCellView.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/GSGlyphFilterSearchField.h>
#import <GlyphsApp/GSGradientEditView.h>
#import <GlyphsApp/GSNoBackgroundTextField.h>
#import <GlyphsApp/GSNoBackgroundTextFieldCell.h>
#import <GlyphsApp/GSPaletteView.h>
#import <GlyphsApp/GSPanelView.h>
#import <GlyphsApp/GSSelectGlyphsDialogController.h>
#endif
#import <GlyphsApp/GSGlyphViewControllerProtocol.h>
#import <GlyphsApp/GSHandleCustomFilesProtocol.h>
#import <GlyphsApp/GSInfoViewContainer.h>
#import <GlyphsApp/GSInspectorViewController.h>
#import <GlyphsApp/GSLayer+Drawing.h>
#import <GlyphsApp/GSLayoutManager.h>
#import <GlyphsApp/GSMasterUndoManager.h>
#import <GlyphsApp/GSPreferenceViewControllerProtocol.h>
#import <GlyphsApp/GSProgressWindowController.h>
#import <GlyphsApp/GSShortcutHandler.h>
#import <GlyphsApp/GSShortcutCommandProtocol.h>
#ifndef GLYPHS_LITE
#import <GlyphsApp/GSPanelViewController.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/GSShortcutItem.h>
#endif
#import <GlyphsApp/GSAdvancedPreferences.h>
#endif
#if !TARGET_OS_IOS
#import <GlyphsApp/GSSimpleGlyphGridView.h>
#import <GlyphsApp/GSSimpleGlyphGridViewItem.h>
#endif
#import <GlyphsApp/GSSimplePDFPen.h>
#import <GlyphsApp/GSSnapper.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/GSSteppingTextField.h>
#endif
#import <GlyphsApp/GSTextInputFormatter.h>
#import <GlyphsApp/GSTextStorage.h>
#import <GlyphsApp/GSToolGroup.h>
#import <GlyphsApp/GSToolPlugin.h>
#import <GlyphsApp/GSToolSelect.h>
#import <GlyphsApp/GSTransformGrid.h>
#import <GlyphsApp/GSValidatingTextField.h>
#import <GlyphsApp/InspectorViewAnchorController.h>
#import <GlyphsApp/InspectorViewImageController.h>
#import <GlyphsApp/InspectorViewComponentController.h>
#import <GlyphsApp/InspectorViewGlyphController.h>
#import <GlyphsApp/InspectorViewGlyphTextController.h>
#import <GlyphsApp/InspectorViewGlyphVerticalController.h>
#import <GlyphsApp/InspectorViewGuideController.h>
#import <GlyphsApp/InspectorViewHintController.h>
#import <GlyphsApp/InspectorViewIconController.h>
#import <GlyphsApp/InspectorViewKerningController.h>
#import <GlyphsApp/InspectorViewNodeController.h>
#import <GlyphsApp/InspectorViewNodesController.h>
#import <GlyphsApp/InspectorViewOffNodeController.h>
#import <GlyphsApp/NSControl+LocalizedFloatValue.h>
#import <GlyphsApp/NSMenuHelper.h>
#import <GlyphsApp/NSObject+PerformCoalescing.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/NSPredicateEditorRowTemplate+convenient.h>
#endif
#import <GlyphsApp/NSString+BadgeDrawing.h>
#import <GlyphsApp/NSString+TextDirection.h>
#import <GlyphsApp/GSIndexPasteboardWriter.h>
#import <GlyphsApp/GSObjectPasteboardWriter.h>
#import <GlyphsApp/GSObjectHelper.h>
#import <GlyphsApp/GSWindowController.h>
#import <GlyphsApp/GSFontViewController.h>
#import <GlyphsApp/GSGlyphViewController.h>
#import <GlyphsApp/GSEditViewController.h>
#import <GlyphsApp/GSEditViewController+Inspectors.h>
#import <GlyphsApp/GSGlyphEditView.h>
#import <GlyphsApp/GSGlyphEditView+NSText.h>
#import <GlyphsApp/GSSortDescriptorNameList.h>
#import <GlyphsApp/GSEditFilterWindowController.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/GSTagsView.h>
#endif
#import <GlyphsApp/GSGlyphsPreview.h>
#if !TARGET_OS_IOS
#import <GlyphsApp/GSMainTabBarViewController.h>
#import <GlyphsApp/GSCollectionViewItemView.h>
#import <GlyphsApp/GSCollectionViewGroupController.h>
#import <GlyphsApp/GSTagsTableCellView.h>
#import <GlyphsApp/GSPrintGridView.h>
#import <GlyphsApp/GSFontViewSidebarController.h>
#import <GlyphsApp/NSImage+QuickLook.h>
#ifndef GLYPHS_LITE
#import <GlyphsApp/PanelViewPanelCustomization.h>
#endif
#import <GlyphsApp/GSParameterValueViewController.h>
#import <GlyphsApp/GSUnicodeInfoPopover.h>
#endif
#import <GlyphsApp/GSInspectorView.h>
#import <GlyphsApp/NSBundle+GlyphsApp.h>
#import <GlyphsApp/GSCompareLists.h>

/**
 Pasteboard types
 */
typedef NSString *GSPasteboardType NS_TYPED_EXTENSIBLE_ENUM;
extern GSPasteboardType const GSGlyphsElementPasteboardType2 NS_SWIFT_NAME(elementType2);
extern GSPasteboardType const GSGlyphsElementPasteboardType3 NS_SWIFT_NAME(elementType3);
extern GSPasteboardType const GSGlyphsElementPasteboardType4 NS_SWIFT_NAME(elementType4);
extern GSPasteboardType const GSGlyphsElementPasteboardTypeCurrent NS_SWIFT_NAME(elementCurrent);
extern GSPasteboardType const GSGlyphsShapeAttributesPasteboardType NS_SWIFT_NAME(shapeAttributes);
extern GSPasteboardType const GSGlyphsNodeAttributesPasteboardType NS_SWIFT_NAME(nodeAttributes);
extern GSPasteboardType const GSGlyphsGlyphPasteboardType NS_SWIFT_NAME(glyph);

#endif
