Advertisement
Guest User

Untitled

a guest
Jan 14th, 2018
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. import Cocoa
  2.  
  3. @NSApplicationMain
  4. class AppDelegate: NSObject, NSApplicationDelegate {
  5.  
  6. static let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength)
  7. static let popover = NSPopover()
  8. var eventMonitor: EventMonitor?
  9.  
  10. func applicationDidFinishLaunching(_ aNotification: Notification) {
  11. if let button = AppDelegate.statusItem.button {
  12. button.image = NSImage(named:NSImage.Name("MagisterIcon"))
  13. button.action = #selector(togglePopover(_:))
  14. }
  15. AppDelegate.popover.contentViewController = FindSchoolViewController.freshController() // <-- here i set the first view
  16. eventMonitor = EventMonitor(mask: [.leftMouseDown, .rightMouseDown]) { [weak self] event in
  17. if AppDelegate.popover.isShown {
  18. self?.closePopover(sender: event)
  19. }
  20. }
  21. AppDelegate.popover.animates = true
  22. }
  23.  
  24. func applicationWillTerminate(_ aNotification: Notification) {
  25. // Insert code here to tear down your application
  26. }
  27.  
  28. static func changeView(controller: NSViewController) {
  29. let newSize = NSSize.init(width: controller.view.frame.size.width, height: controller.view.frame.size.height)
  30. popover.contentViewController = controller
  31. popover.contentSize = newSize
  32. //^ this does not update or whatever
  33. }
  34.  
  35. @objc func togglePopover(_ sender: Any?) {
  36. if AppDelegate.popover.isShown {
  37. closePopover(sender: sender)
  38. } else {
  39. showPopover(sender: sender)
  40. }
  41. }
  42.  
  43. func showPopover(sender: Any?) {
  44. if let button = AppDelegate.statusItem.button {
  45. AppDelegate.popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY)
  46. }
  47. eventMonitor?.start()
  48. }
  49.  
  50. func closePopover(sender: Any?) {
  51. AppDelegate.popover.performClose(sender)
  52. eventMonitor?.stop()
  53. }
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement