Bonjour !
J'affiche une alerte blocante en plein écran avec un bouton de fermeture en haut à gauche qui réagit au survol du curseur.
Cette fenêtre est donc redimensionnée à sa création. Il faut donc que j'update la TrackingArea mais je n'y arrive pas.
J'ai vu dans la documentation qu'il fallait appeler Super mais je sèche.
La fonction est bien appelée
Voici la class du bouton :
Et le controller de la fenêtre :
Un petit coup de main ? Un immense merci !
J'affiche une alerte blocante en plein écran avec un bouton de fermeture en haut à gauche qui réagit au survol du curseur.
Cette fenêtre est donc redimensionnée à sa création. Il faut donc que j'update la TrackingArea mais je n'y arrive pas.
J'ai vu dans la documentation qu'il fallait appeler Super mais je sèche.
La fonction est bien appelée
Voici la class du bouton :
Bloc de code:
//
// Close.swift
// Minuteur
//
// Created by Philippe Galmel on 06/05/2015.
// Copyright (c) 2015 Philippe Galmel. All rights reserved.
//
import AppKit
class Close: NSButton {
var trackingArea: NSTrackingArea!
let options = NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.MouseMoved | NSTrackingAreaOptions.ActiveAlways
override func awakeFromNib() {
// let rect = superview!.convertRect(self.frame, toView: superview)
// trackingArea = NSTrackingArea(rect: rect, options: options, owner: self, userInfo: nil)
// superview!.addTrackingArea(trackingArea)
}
override func mouseEntered(theEvent: NSEvent) {
self.image = NSImage(named: "Close")
println("entered")
}
override func mouseExited(theEvent: NSEvent) {
self.image = NSImage(named: "Close_alt")
println("exited")
}
override func updateTrackingAreas() {
// superview!.removeTrackingArea(trackingArea)
// let rect = superview!.convertRect(self.frame, toView: superview)
// trackingArea = NSTrackingArea(rect: rect, options: options, owner: self, userInfo: nil)
// superview!.addTrackingArea(trackingArea)
// superview!.updateTrackingAreas()
// println("TrackingAreas updated \(rect)")
}
}
Bloc de code:
//
// VisualAlarmController.swift
// Minuteur
//
// Created by Philippe Galmel on 04/05/2015.
// Copyright (c) 2015 Philippe Galmel. All rights reserved.
//
import Cocoa
class VisualAlarmController: NSWindowController {
var message = ""
//@IBOutlet weak var theView: NSView!
@IBOutlet weak var messageLabel: NSTextField!
@IBOutlet weak var closeButton: NSButton!
@IBOutlet weak var infosLabel: NSTextField!
@IBAction func closeButtonPressed(sender: AnyObject) {
self.window!.close()
}
override func windowDidLoad() {
var acceptsMouseMovedEvents: Bool {
return true
}
println("\(acceptsMouseMovedEvents)")
let screen = NSScreen.mainScreen()
let screenWidth: CGFloat = screen!.frame.size.width
let screenHeight = screen!.frame.size.height
let viewWidth = screenWidth
let viewHeight = self.window?.frame.height
let rect: NSRect!
self.messageLabel.font = NSFont(name: "Helvetica Neue Thin", size: self.messageLabel.font!.pointSize)
self.messageLabel.stringValue = message
self.window!.backgroundColor = backgroundColor.colorWithAlphaComponent(0.85)
self.window!.level = Int(CGWindowLevelForKey(Int32(kCGScreenSaverWindowLevelKey)))
if leftTime == 0 {
rect = CGRectMake(0.0, 0.0, screenWidth, screenHeight)
self.window!.ignoresMouseEvents = false
self.window!.opaque = false
let timerClose = NSTimer.scheduledTimerWithTimeInterval(60, target: self, selector: Selector("closeVisualAlarmWindow:"), userInfo: nil, repeats: false)
}
else {
rect = CGRectMake(0.0, screenHeight / 2 - viewHeight! / 2.0, screenWidth, viewHeight!)
self.window!.ignoresMouseEvents = true
self.window!.opaque = false
let timerClose = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: Selector("closeVisualAlarmWindow:"), userInfo: nil, repeats: false)
closeButton.hidden = true
}
infosLabel.stringValue = "Rect: \(rect)"
self.window!.setFrame(rect, display: true, animate: false)
self.window!.makeKeyAndOrderFront(self.window!)
println("\(closeButton.frame)")
super.windowDidLoad()
}
func closeVisualAlarmWindow(aTimer: NSTimer) {
self.window!.close()
}
}
Un petit coup de main ? Un immense merci !