Skip to content

Instantly share code, notes, and snippets.

@jmercouris
Created October 28, 2017 20:30
Show Gist options
  • Save jmercouris/b454bbf4698a2bfe0aa7b067d979010c to your computer and use it in GitHub Desktop.
Save jmercouris/b454bbf4698a2bfe0aa7b067d979010c to your computer and use it in GitHub Desktop.
(eval-when (:compile-toplevel :load-toplevel :execute)
(require "COCOA"))
(eval-when (:compile-toplevel :load-toplevel :execute)
(require :demo-packages)
(require :window-utils)
(require :window-controller)
(require :text-views)
(require :constraint-layout))
(in-package :hello)
(defparameter *win* nil)
(defclass key-window (ns:ns-window)
()
(:metaclass ns:+ns-object))
;; #$NSControlKeyMask)
;; #$NSAlternateKeyMask)
;; #$NSCommandKeyMask)
;; #$NSShiftKeyMask)))
;; (logand mask flags)
(objc:defmethod (#/keyDown: :void) ((self key-window) event)
(print "key press")
(let* ((code (#/keyCode event))
(flags (#/modifierFlags event))
(character (#/characters event)))
(if (= code 36)
(print "enter"))
(format t "code ~d" code)
(format t "flags ~d" flags)
(format t "character ~s" character)
(call-next-method event)))
(objc:defmethod (#/acceptsFirstResponder :<BOOL>) ((self key-window))
t)
(defmethod make-hello-window ((lc lisp-window-controller))
(let* ((hello-label (make-label-view))
(win (make-instance 'key-window
:title "Hello World"
:resizable t
:content-subviews (list hello-label))))
(setf *win* win)
(values win (list win hello-label))))
(defun make-label-view ()
(let ((view
(make-instance 'label-view
:title "Hello World")))
(constrain-to-natural-size view)
view))
(defun hello ()
(let ((wc (make-instance 'lisp-window-controller
:build-method #'make-hello-window)))
(show-window wc)
wc))
(provide :hello)
(print "load finished")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment