2020-04-14 23:23:44 +02:00
2020-04-14 23:23:44 +02:00
2020-04-14 22:08:39 +02:00
2020-04-14 22:08:39 +02:00
2020-04-14 22:16:14 +02:00
2020-04-14 22:08:39 +02:00
2020-04-14 22:08:39 +02:00
2020-04-14 22:16:14 +02:00

Menu

Fully customizable Mac OS drop-down menu

What can be customized? Everything!

public protocol Configuration {
    var titlePadding: Padding.Vertical                      { get }
    var titleFont: NSFont?                                  { get }
    var backgroundColor: NSColor                            { get }
    var cornerRadius: CGFloat                               { get }
    var hasShadow: Bool                                     { get }
    var contentEdgeInsets: NSEdgeInsets                     { get }
    var separatorColor: NSColor                             { get }
    var separatorThickness: CGFloat                         { get }
    var separatorHorizontalPadding: Padding.Horizontal      { get }
    var separatorVerticlaPadding: Padding.Vertical          { get }
    var rememberSelection: Bool                             { get }
    var textAlignment: Alignment                            { get }
    var iconAlignment: Alignment                            { get }
    var menuItemFont: NSFont?                               { get }
    var menuItemHeight: CGFloat                             { get }
    var menuItemHoverBackgroundColor: NSColor               { get }
    var menuItemTextColor: NSColor                          { get }
    var menuItemHoverTextColor: NSColor                     { get }
    var menuItemCheckmarkColor: NSColor                     { get }
    var menuItemHoverCheckmarkColor: NSColor                { get }
    var menuItemCheckmarkHeight: CGFloat                    { get }
    var menuItemCheckmarkThikness: CGFloat                  { get }
    var menuItemImageHeight: CGFloat?                       { get }
    var menuItemImageTintColor: NSColor?                    { get }
    var menuItemHoverImageTintColor: NSColor?               { get }
}

How to use

import Cocoa
import Menu

class ViewController: NSViewController {
    private let myMenu = Menu(with: "Select search engine:")

    @IBAction func didClickedButton(_ sender: NSButton) {
        myMenu.show(items: [
            MenuItem("Bing search", image: NSImage(named: "icons8-bing-50"), action: {
                sender.title = "Bing"
            }),
            MenuItem("DuckDuckGo search", image: NSImage(named: "icons8-duckduckgo-50"), action: {
                sender.title = "DuckDuckGo"
            }),
            MenuItem("Google search", image: NSImage(named: "icons8-google-50"), action: {
                sender.title = "Google"
            }),
            MenuItem.separator(),
            MenuItem("Some very-very-very long text and no icon", action: {
                sender.title = "Some very long text"
            }),
            MenuItem.separator(),
            MenuItem("Exit", image: NSImage(named: "icons8-exit-50"), action: {
                NSApplication.shared.terminate(nil)
            })
        ], view: sender)
    }
}
Languages
Swift 100%