- Notifications
You must be signed in to change notification settings - Fork18
iSapozhnik/Popover
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Custom macOS popover.
Since this is a Swift Package, the installation process is pretty stright forward.
Update yourPackage.swift
dependencies:
dependencies: [ .package(url: "https://github.com/iSapozhnik/Popover", from: "1.1.1")]
- Go to
File -> Swift Packages -> Add Package Dependency
. - Put GitHub URL
https://github.com/iSapozhnik/Popover
and clickNext
- Select the latest version
- Click
Finish
- In your
AppDelegate
import 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
windowConfiguration
parameter in this case) or you can subclassDefaultConfiguration
, override some properties and pass a new instance as a parameter. If in step 4 you have created menu items, pass it here as well. You can see them by making right click on menu bar item. - Call
prepare
to set everything up.
And here is how typicalAppDelegate
may look like:
import Cocoaimport PopoverclassMyPopoverConfiguration:DefaultConfiguration{overridevarbackgroundColor:NSColor{returnNSColor.systemRed}overridevarborderColor:NSColor?{returnNSColor.red}}@NSApplicationMainclassAppDelegate:NSObject,NSApplicationDelegate{varpopover:Popover!func applicationDidFinishLaunching(_ aNotification:Notification){letstatusItemView=StatusItemView(frame:NSRect(width:22.0, height:20))letviewController=MainViewController()letmenuItems:[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)}}
Quite a lot of things:
publicprotocolPopoverConfiguration{ /// The distance from Popover's arrow to a status item.varpopoverToStatusItemMargin:CGFloat{get} /// Popover's background color.varbackgroundColor:NSColor{get} /// Popover's border color. /// - Important: /// If `borderColor` returns `nil`, settings `borderWidth` won't make any effect. See also: `borderWidth`.varborderColor:NSColor?{get} /// Popover's border width. /// - Important: /// If Popover's border color is set to `nil`, setting `borderWidth` won't make any effect.varborderWidth:CGFloat{get} /// Defines Popover arrow height.vararrowHeight:CGFloat{get} /// Defines Popover arrow width.vararrowWidth:CGFloat{get} /// Defines Popover corner radius. /// - Warning: /// If this value is too big and if the Popover's status item (menu bar view) is too close to the right edge, the appearence of the Popover might be odd.varcornerRadius:CGFloat{get} /// Defines Popover content edge insets.varcontentEdgeInsets:NSEdgeInsets{get} /// The distance from the right side of the Popover to the screen's edge. /// - Warning: /// If this value is too big and if the Popover's status item (menu bar view) is too close to the right edge, the appearence of the Popover might be odd.varrightEdgeMargin:CGFloat{get}}
Created and maintained by@iSapozhnik.
Released under the MIT License. SeeLICENSE
for details.
Copyright © 2020-present Sapozhnik Ivan.
Heavily inspired byCCNStatusItem
About
Custom macOS Popover 💬
Topics
Resources
License
Code of conduct
Stars
Watchers
Forks
Packages0
No packages published