Made the entry field add when pressing enter, and made the whole thing a little less ugly
This commit is contained in:
parent
ce586f88ed
commit
e4a32c0ca2
@ -22,36 +22,46 @@
|
|||||||
(gtk-widget-show-all row)
|
(gtk-widget-show-all row)
|
||||||
row))
|
row))
|
||||||
|
|
||||||
(defmacro within-box (window orientation &body body)
|
|
||||||
(let ((boxsym (gensym)))
|
|
||||||
`(let ((,boxsym (gtk-box-new ,orientation 5)))
|
|
||||||
,@(mapcar (lambda (x) (list 'gtk-box-pack-start boxsym x))
|
|
||||||
body)
|
|
||||||
(gtk-container-add ,window ,boxsym)
|
|
||||||
,boxsym)))
|
|
||||||
|
|
||||||
(defun my-app ()
|
(defun my-app ()
|
||||||
(within-main-loop
|
(within-main-loop
|
||||||
(let ((win (gtk-window-new :toplevel)))
|
(let ((win (make-instance 'gtk-window
|
||||||
|
:type :toplevel
|
||||||
|
:border-width 6
|
||||||
|
:default-width 200
|
||||||
|
:default-height 600
|
||||||
|
)))
|
||||||
(g-signal-connect win "destroy" (lambda (widget) widget (leave-gtk-main)))
|
(g-signal-connect win "destroy" (lambda (widget) widget (leave-gtk-main)))
|
||||||
(let ((completed (gtk-list-box-new))
|
(let ((frame (make-instance 'gtk-frame :label "Todo" :shadow-type :etched-in))
|
||||||
|
(box (make-instance 'gtk-box :orientation :vertical :spacing 6
|
||||||
|
:homogeneous nil))
|
||||||
|
(completed (gtk-list-box-new))
|
||||||
(todo (gtk-list-box-new))
|
(todo (gtk-list-box-new))
|
||||||
(add-button (gtk-button-new-with-label "Add"))
|
(add-button (gtk-button-new-with-label "Add"))
|
||||||
(entry (gtk-entry-new)))
|
(entry (gtk-entry-new)))
|
||||||
(g-signal-connect add-button "clicked"
|
(g-signal-connect add-button "clicked"
|
||||||
(lambda (widget)
|
(lambda (widget)
|
||||||
(declare (ignore widget))
|
(declare (ignore widget))
|
||||||
(gtk-list-box-prepend todo
|
(gtk-container-add todo
|
||||||
(make-todo-item
|
(make-todo-item
|
||||||
(gtk-entry-text entry)
|
(gtk-entry-text entry)
|
||||||
completed
|
completed
|
||||||
todo))
|
todo))
|
||||||
(setf (gtk-entry-text entry) "")))
|
(setf (gtk-entry-text entry) "")))
|
||||||
(within-box win :vertical
|
(g-signal-connect entry "activate"
|
||||||
(gtk-label-new "Completed tasks:")
|
(lambda (widget)
|
||||||
completed
|
(gtk-container-add todo
|
||||||
(gtk-label-new "TODO:")
|
(make-todo-item
|
||||||
todo
|
(gtk-entry-text widget)
|
||||||
entry
|
completed todo))
|
||||||
add-button))
|
(setf (gtk-entry-text widget) "")))
|
||||||
|
(gtk-box-pack-start box (gtk-label-new "Completed:") :expand nil :fill nil)
|
||||||
|
(gtk-box-pack-start box completed :expand nil :fill nil)
|
||||||
|
(gtk-box-pack-start box (gtk-label-new "Todo:") :expand nil :fill nil)
|
||||||
|
(gtk-box-pack-start box todo :expand t :fill t)
|
||||||
|
(gtk-box-pack-start box entry :expand nil :fill nil)
|
||||||
|
(gtk-box-pack-start box add-button :expand nil :fill nil)
|
||||||
|
|
||||||
|
(gtk-container-add frame box)
|
||||||
|
(gtk-container-add win frame)
|
||||||
|
)
|
||||||
(gtk-widget-show-all win))))
|
(gtk-widget-show-all win))))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user