diff --git a/README.md b/README.md index 0784052..93ec60c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,74 @@ # Popover -Mac OS custom popover. Made with ❤️ +Mac OS custom popover. ![alt text](popover.png "Popover") +# Install + +Since this is a Swift Package, the installation process is pretty stright forward. + +### Manual way +Update your `Package.swift` dependencies: + +``` +dependencies: [ + .package(url: "https://github.com/iSapozhnik/Popover", from: "1.0.8") +] +``` + +### Via Xcode: +1. Go to `File -> Swift Packages -> Add Package Dependency`. +2. Put GitHub URL `https://github.com/iSapozhnik/Popover` and click `Next` +3. Select the latest version +4. Click `Finish` + +# How to use + +1. In your `AppDelegate` import Popover +2. Create a view you want to put into a status bar. +3. Create a content view controller which would be embedded inside Popover +4. Optionally create menu items +5. Create a Popover instance. Here you can use either standard configuration (you don't need to pass `windowConfiguration` parameter in this case) or you can subclass `DefaultConfiguration`, override some properties and pass a new instance as a parameter. If in ste 4 you have created menu items, pass it here as well. +6. Call `prepare` to set everything up. + +And here is how typical `AppDelegate` may look like: + +```swift +import Cocoa +import Popover + +class MyPopoverConfiguration: DefaultConfiguration { + override var backgroundColor: NSColor { + return NSColor.systemRed + } + + override var borderColor: NSColor? { + return NSColor.red + } +} + +@NSApplicationMain +class AppDelegate: NSObject, NSApplicationDelegate { + var popover: Popover! + + func applicationDidFinishLaunching(_ aNotification: Notification) { + let statusItemView = StatusItemView(frame: NSRect(width: 22.0, height: 20)) + + let viewController = MainViewController() + + let menuItems: [Popover.MenuItemType] = [ + .item(Popover.MenuItem(title: "Settings", action: viewController.showSettings)), + .separator, + .item(Popover.MenuItem(title: "Quit", key: "q", action: viewController.quit)) + ] + + popover = Popover(with: MyPopoverConfiguration(), menuItems: menuItems) + popover.prepare(with: statusItemView, contentViewController: viewController) + } +} + +``` +
 + + Heavily inspired by [CCNStatusItem](https://github.com/phranck/CCNStatusItem) \ No newline at end of file diff --git a/popover.png b/popover.png index e4db37a..69636ed 100644 Binary files a/popover.png and b/popover.png differ