This commit is contained in:
Ivan Sapozhnik 2020-04-07 21:42:21 +02:00
parent 34fb2f3444
commit a0016a047c
2 changed files with 69 additions and 1 deletions

View File

@ -1,6 +1,74 @@
# Popover # Popover
Mac OS custom popover. Made with ❤️ Mac OS custom popover.
![alt text](popover.png "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) Heavily inspired by [CCNStatusItem](https://github.com/phranck/CCNStatusItem)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 173 KiB