Skip to content

Instantly share code, notes, and snippets.

@jmercouris
Created October 27, 2017 16:26
Show Gist options
  • Save jmercouris/51935c19da2cafeba09d6319b65bc559 to your computer and use it in GitHub Desktop.
Save jmercouris/51935c19da2cafeba09d6319b65bc559 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-table-view (ns:ns-table-view)
()
(:metaclass ns:+ns-object))
(objc:defmethod (#/keyDown: :void) ((self key-table-view) event)
(let* ((code (#/keyCode event)))
(if (and (>= (#/selectedRow self) 0)
(= code 36)) ; return key
(#/sendAction:to:from: *NSApp* (#/doubleAction self) (#/target self) self)
(call-next-method event))))
(defmethod make-hello-window ((lc lisp-window-controller))
(let* ((hello-label (make-label-view))
(win (make-instance 'ns:ns-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