mirror of
https://github.com/rabbibotton/clog.git
synced 2026-01-04 00:02:57 -08:00
event drop down now shows if events exist or not
This commit is contained in:
parent
a9e778c965
commit
4e539c7303
4 changed files with 113 additions and 79 deletions
|
|
@ -760,60 +760,77 @@ not a temporary attached one when using select-control."
|
|||
|
||||
(defun on-populate-control-events-win (obj)
|
||||
"Populate the control events for the current control"
|
||||
;; obj if current-control is nil must be content
|
||||
(let* ((app (connection-data-item obj "builder-app-data"))
|
||||
(event-win (control-events-win app))
|
||||
(elist (events-list app))
|
||||
(control (if (current-control app)
|
||||
(current-control app)
|
||||
obj)))
|
||||
(elist (events-list app))
|
||||
(control (current-control app)))
|
||||
(when event-win
|
||||
(setf (inner-html elist) "")
|
||||
(remove-attribute elist "data-current-event")
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(set-on-change elist nil)
|
||||
(let ((info (control-info (attribute control "data-clog-type"))))
|
||||
(add-select-option elist "" "Select Event")
|
||||
(setf (text-value (event-editor app)) "")
|
||||
(labels ((on-blur (obj)
|
||||
(let ((attr (attribute elist "data-current-event")))
|
||||
(unless (equalp attr "undefined")
|
||||
(let ((txt (text-value (event-editor app))))
|
||||
(cond ((or (equal txt "")
|
||||
(equalp txt "undefined"))
|
||||
(remove-attribute control attr))
|
||||
(t
|
||||
(setf (attribute control attr) (text-value (event-editor app))))))
|
||||
(jquery-execute (get-placer control) "trigger('clog-builder-snap-shot')")))))
|
||||
(set-on-change elist (lambda (obj)
|
||||
(declare (ignore obj))
|
||||
(let ((event (select-value elist "clog-events")))
|
||||
(cond ((equal event "")
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(setf (text-value (event-editor app)) ""))
|
||||
(t
|
||||
(let* ((attr (format nil "data-~A" event))
|
||||
(txt (attribute control attr)))
|
||||
(setf (text-value (event-editor app))
|
||||
(if (equalp txt "undefined")
|
||||
""
|
||||
txt))
|
||||
(setf (attribute elist "data-current-event") attr)
|
||||
(focus (event-editor app))
|
||||
(set-on-blur (event-editor app) #'on-blur))))))))
|
||||
(dolist (event (getf info :events))
|
||||
(add-select-option elist
|
||||
(getf event :name)
|
||||
(format nil "~A (panel ~A)"
|
||||
(getf event :name)
|
||||
(getf event :parameters))))))))
|
||||
(setf (inner-html elist) "")
|
||||
(remove-attribute elist "data-current-event")
|
||||
(setf (text-value (event-editor app)) "")
|
||||
(when control
|
||||
(let ((info (control-info (attribute control "data-clog-type"))))
|
||||
(labels ((populate-options (&key (current ""))
|
||||
(set-on-change elist nil)
|
||||
(setf (inner-html elist) "")
|
||||
(add-select-option elist "" "Select Event")
|
||||
(dolist (event (getf info :events))
|
||||
(let ((attr (format nil "data-~A" (getf event :name))))
|
||||
(add-select-option elist
|
||||
(getf event :name)
|
||||
(format nil "~A ~A (panel ~A)"
|
||||
(if (has-attribute control attr)
|
||||
"■ "
|
||||
"□ ")
|
||||
(getf event :name)
|
||||
(getf event :parameters))
|
||||
:selected (equal attr current))))
|
||||
(set-on-change elist #'on-change))
|
||||
(on-blur (obj)
|
||||
(declare (ignore obj))
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(let ((attr (attribute elist "data-current-event")))
|
||||
(unless (equalp attr "undefined")
|
||||
(let ((opt (select-text elist))
|
||||
(txt (text-value (event-editor app))))
|
||||
(setf (char opt 0) #\space)
|
||||
(setf opt (string-left-trim "#\space" opt))
|
||||
(cond ((or (equal txt "")
|
||||
(equalp txt "undefined"))
|
||||
(setf (select-text elist) (format nil "~A ~A" (code-char 9633) opt))
|
||||
(remove-attribute control attr))
|
||||
(t
|
||||
(setf (select-text elist) (format nil "~A ~A" (code-char 9632) opt))
|
||||
(setf (attribute control attr) (text-value (event-editor app))))))
|
||||
(jquery-execute (get-placer control) "trigger('clog-builder-snap-shot')")))
|
||||
(set-on-blur (event-editor app) #'on-blur))
|
||||
(on-change (obj)
|
||||
(declare (ignore obj))
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(let ((event (select-value elist "clog-events")))
|
||||
(cond ((equal event "")
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(remove-attribute elist "data-current-event")
|
||||
(setf (text-value (event-editor app)) ""))
|
||||
(t
|
||||
(let* ((attr (format nil "data-~A" event))
|
||||
(txt (attribute control attr)))
|
||||
(setf (text-value (event-editor app))
|
||||
(if (equalp txt "undefined")
|
||||
""
|
||||
txt))
|
||||
(setf (attribute elist "data-current-event") attr)
|
||||
(set-on-blur (event-editor app) #'on-blur)))))))
|
||||
(populate-options)))))))
|
||||
|
||||
(defun on-populate-control-properties-win (obj &key win)
|
||||
"Populate the control properties for the current control"
|
||||
;; obj if current-control is nil must be content
|
||||
(with-sync-event (obj)
|
||||
(on-populate-control-events-win obj)
|
||||
(let ((app (connection-data-item obj "builder-app-data")))
|
||||
(on-populate-control-events-win obj)
|
||||
(let* ((prop-win (control-properties-win app))
|
||||
(control (if (current-control app)
|
||||
(current-control app)
|
||||
|
|
@ -1059,62 +1076,62 @@ of controls and double click to select control."
|
|||
(content (window-content win)))
|
||||
(setf (control-events-win app) win)
|
||||
(setf (events-list app) (create-select content :name "clog-events" :class "w3-gray w3-text-white"))
|
||||
(setf (positioning (events-list app)) :absolute)
|
||||
(set-geometry (events-list app) :top 5 :left 5 :right 5)
|
||||
(setf (event-editor app) (clog-ace:create-clog-ace-element content))
|
||||
(setf (positioning (event-editor app)) :absolute)
|
||||
(setf (width (event-editor app)) "")
|
||||
(setf (height (event-editor app)) "")
|
||||
(set-geometry (event-editor app) :top 35 :left 5 :right 5 :bottom 5)
|
||||
(clog-ace:resize (event-editor app))
|
||||
(setf (positioning (events-list app)) :absolute)
|
||||
(set-geometry (events-list app) :top 5 :left 5 :right 5)
|
||||
(setf (event-editor app) (clog-ace:create-clog-ace-element content))
|
||||
(setf (positioning (event-editor app)) :absolute)
|
||||
(setf (width (event-editor app)) "")
|
||||
(setf (height (event-editor app)) "")
|
||||
(set-geometry (event-editor app) :top 35 :left 5 :right 5 :bottom 5)
|
||||
(clog-ace:resize (event-editor app))
|
||||
(setf (clog-ace:theme (event-editor app)) "ace/theme/xcode")
|
||||
(setf (clog-ace:mode (event-editor app)) "ace/mode/lisp")
|
||||
(setf (clog-ace:tab-size (event-editor app)) 2)
|
||||
(set-on-window-size-done win (lambda (obj)
|
||||
(declare (ignore obj))
|
||||
(clog-ace:resize (event-editor app))))
|
||||
(set-on-window-size-done win (lambda (obj)
|
||||
(declare (ignore obj))
|
||||
(clog-ace:resize (event-editor app))))
|
||||
(set-on-window-close win (lambda (obj)
|
||||
(declare (ignore obj))
|
||||
(setf (event-editor app) nil)
|
||||
(setf (events-list app) nil)
|
||||
(setf (event-editor app) nil)
|
||||
(setf (events-list app) nil)
|
||||
(setf (control-events-win app) nil)))))))
|
||||
|
||||
(Defun on-show-copy-history-win (obj)
|
||||
"Create and show copy/but history"
|
||||
(let ((app (connection-data-item obj "builder-app-data")))
|
||||
(if (copy-history-win app)
|
||||
(progn
|
||||
(setf (hiddenp (copy-history-win app)) nil)
|
||||
(progn
|
||||
(setf (hiddenp (copy-history-win app)) nil)
|
||||
(window-focus (copy-history-win app)))
|
||||
(let* ((win (create-gui-window obj :title "Copy History"
|
||||
:left 225
|
||||
:top 480
|
||||
:height 400 :width 600
|
||||
:has-pinner t :client-movement t)))
|
||||
(window-center win)
|
||||
(setf (hiddenp win) t)
|
||||
(setf (overflow (window-content win)) :scroll)
|
||||
(window-center win)
|
||||
(setf (hiddenp win) t)
|
||||
(setf (overflow (window-content win)) :scroll)
|
||||
(setf (copy-history-win app) win)
|
||||
(set-on-window-can-close win (lambda (obj)
|
||||
(declare (ignore obj))
|
||||
(setf (hiddenp win) t)
|
||||
nil))))))
|
||||
(declare (ignore obj))
|
||||
(setf (hiddenp win) t)
|
||||
nil))))))
|
||||
|
||||
(defun on-show-control-list-win (obj)
|
||||
"Show control list for selecting and manipulating controls by name"
|
||||
(let* ((app (connection-data-item obj "builder-app-data"))
|
||||
(is-hidden nil)
|
||||
(content (create-panel (connection-body obj) :positioning :fixed
|
||||
:width 220
|
||||
:top 40
|
||||
:left 0 :bottom 0
|
||||
:class "w3-border-right"))
|
||||
(is-hidden nil)
|
||||
(content (create-panel (connection-body obj) :positioning :fixed
|
||||
:width 220
|
||||
:top 40
|
||||
:left 0 :bottom 0
|
||||
:class "w3-border-right"))
|
||||
(side-panel (create-panel content :top 0 :right 0 :bottom 0 :width 10))
|
||||
(sheight (floor (/ (height content) 2)))
|
||||
(divider (create-panel content :top sheight :height 10 :left 0 :right 10))
|
||||
(control-list (create-panel content :height (- sheight 10) :left 0 :bottom 0 :right 10))
|
||||
(sheight (floor (/ (height content) 2)))
|
||||
(divider (create-panel content :top sheight :height 10 :left 0 :right 10))
|
||||
(control-list (create-panel content :height (- sheight 10) :left 0 :bottom 0 :right 10))
|
||||
(pallete (create-select content))
|
||||
(adj-size 0))
|
||||
(adj-size 0))
|
||||
(set-geometry pallete :left 0 :top 0 :height sheight :right 10)
|
||||
(setf (background-color divider) :black)
|
||||
(setf (tab-index divider) "-1")
|
||||
|
|
@ -1137,8 +1154,8 @@ of controls and double click to select control."
|
|||
<ctrl/cmd> place as static~%<shift> child to current selection"))
|
||||
(setf (background-color side-panel) :black)
|
||||
(flet ((on-size (obj)
|
||||
(declare (ignore obj))
|
||||
(setf sheight (floor (/ (height content) 2)))
|
||||
(declare (ignore obj))
|
||||
(setf sheight (floor (/ (height content) 2)))
|
||||
(when (and (> (- sheight adj-size) 5)
|
||||
(> (+ (- sheight 10) adj-size) 5))
|
||||
(set-geometry pallete :height (- sheight adj-size))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue