mirror of
https://github.com/gosticks/Popover.git
synced 2025-10-16 11:55:38 +00:00
| .github/ISSUE_TEMPLATE | ||
| .swiftpm/xcode/package.xcworkspace | ||
| Sources/Popover | ||
| Tests | ||
| .gitignore | ||
| CODE_OF_CONDUCT.md | ||
| Package.swift | ||
| popover.png | ||
| README.md | ||
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:
- Go to
File -> Swift Packages -> Add Package Dependency. - Put GitHub URL
https://github.com/iSapozhnik/Popoverand clickNext - Select the latest version
- Click
Finish
How to use
- In your
AppDelegateimport Popover - Create a view you want to put into a status bar.
- Create a content view controller which would be embedded inside Popover
- Optionally create menu items
- Create a Popover instance. Here you can use either standard configuration (you don't need to pass
windowConfigurationparameter in this case) or you can subclassDefaultConfiguration, 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. - Call
prepareto set everything up.
And here is how typical AppDelegate may look like:
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
