normalize and maximize all

This commit is contained in:
David Botton 2021-02-15 14:47:44 -05:00
parent e7caf5085b
commit 71e04323d2
3 changed files with 112 additions and 29 deletions

View file

@ -93,13 +93,13 @@
(set-on-full-screen-change (html-document clog-body) (set-on-full-screen-change (html-document clog-body)
(lambda (obj) (lambda (obj)
(when (current-window obj) (when (current-window obj)
(when (last-width (current-window obj)) (when (window-maximized-p (current-window obj))
(window-normalize (current-window obj)) (window-normalize (current-window obj))
(window-maximize (current-window obj)))))) (window-maximize (current-window obj))))))
(set-on-orientation-change (window clog-body) (set-on-orientation-change (window clog-body)
(lambda (obj) (lambda (obj)
(when (current-window obj) (when (current-window obj)
(when (last-width (current-window obj)) (when (window-maximized-p (current-window obj))
(window-normalize (current-window obj)) (window-normalize (current-window obj))
(window-maximize (current-window obj)))))) (window-maximize (current-window obj))))))
(when w3-css-url (when w3-css-url
@ -109,30 +109,6 @@
(when jquery-ui (when jquery-ui
(load-script (html-document clog-body) jquery-ui))) (load-script (html-document clog-body) jquery-ui)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - Menus
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;
;; create-gui-menu-bar ;;
;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass clog-gui-menu-bar (clog-div)()
(:documentation "Menu bar"))
(defgeneric create-gui-menu-bar (clog-obj &key class html-id)
(:documentation "Attached a menu bar to a CLOG-OBJ in general a
clog-body."))
(defmethod create-gui-menu-bar ((obj clog-obj)
&key (class "w3-bar w3-black w3-card-4")
(html-id nil))
(let ((div (create-div obj :class class :html-id html-id))
(app (connection-data-item obj "clog-gui")))
(change-class div 'clog-gui-menu-bar)
(setf (menu app) div)
div))
;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
;; menu-bar ;; ;; menu-bar ;;
;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
@ -166,6 +142,69 @@ create-gui-menu-bar."))
(height (menu app)) (height (menu app))
0))) 0)))
;;;;;;;;;;;;;;;;;;;;;;;
;; window-collection ;;
;;;;;;;;;;;;;;;;;;;;;;;
(defgeneric window-collection (clog-obj)
(:documentation "Get hash table of open windows"))
(defmethod window-collection ((obj clog-obj))
(let ((app (connection-data-item obj "clog-gui")))
(windows app)))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; maximize-all-windows ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defgeneric maximize-all-windows (clog-obj)
(:documentation "Maximize all windows"))
(defmethod maximize-all-windows ((obj clog-obj))
(let ((app (connection-data-item obj "clog-gui")))
(maphash (lambda (key value)
(declare (ignore key))
(window-maximize value))
(windows app))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; normalize-all-windows ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defgeneric normalize-all-windows (clog-obj)
(:documentation "Normalize all windows"))
(defmethod normalize-all-windows ((obj clog-obj))
(let ((app (connection-data-item obj "clog-gui")))
(maphash (lambda (key value)
(declare (ignore key))
(window-normalize value))
(windows app))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - Menus
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;
;; create-gui-menu-bar ;;
;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass clog-gui-menu-bar (clog-div)()
(:documentation "Menu bar"))
(defgeneric create-gui-menu-bar (clog-obj &key class html-id)
(:documentation "Attached a menu bar to a CLOG-OBJ in general a
clog-body."))
(defmethod create-gui-menu-bar ((obj clog-obj)
&key (class "w3-bar w3-black w3-card-4")
(html-id nil))
(let ((div (create-div obj :class class :html-id html-id))
(app (connection-data-item obj "clog-gui")))
(change-class div 'clog-gui-menu-bar)
(setf (menu app) div)
div))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; create-gui-menu-drop-down ;; ;; create-gui-menu-drop-down ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -191,6 +230,30 @@ create-gui-menu-bar."))
;; create-gui-menu-item ;; ;; create-gui-menu-item ;;
;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass clog-gui-menu-item (clog-span)()
(:documentation "Menu item"))
(defgeneric create-gui-menu-item (clog-gui-menu-drop-down
&key content
on-click
class
html-id)
(:documentation "Attached a menu item to a CLOG-GUI-MENU-DROP-DOWN"))
(defmethod create-gui-menu-item ((obj clog-obj)
&key (content "")
(on-click nil)
(class "w3-bar-item w3-button")
(html-id nil))
(let ((span
(create-span obj :content content :class class :html-id html-id)))
(set-on-click span on-click)
(change-class span 'clog-gui-menu-item)))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; create-gui-menu-item ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass clog-gui-menu-item (clog-span)() (defclass clog-gui-menu-item (clog-span)()
(:documentation "Menu item")) (:documentation "Menu item"))
@ -654,6 +717,16 @@ on-window-resize-done at end of resize."))
(fire-on-window-change nil app) (fire-on-window-change nil app)
(fire-on-window-close obj))) (fire-on-window-close obj)))
;;;;;;;;;;;;;;;;;;;;;;;;
;; window-maximized-p ;;
;;;;;;;;;;;;;;;;;;;;;;;;
(defgeneric window-maximized-p (clog-gui-window)
(:documentation "Set CLOG-GUI-WINDOW as maximized window."))
(defmethod window-maximized-p ((obj clog-gui-window))
(last-width obj))
;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; window-maximize ;; ;; window-maximize ;;
;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
@ -664,7 +737,7 @@ on-window-resize-done at end of resize."))
(defmethod window-maximize ((obj clog-gui-window)) (defmethod window-maximize ((obj clog-gui-window))
(let ((app (connection-data-item obj "clog-gui"))) (let ((app (connection-data-item obj "clog-gui")))
(window-focus obj) (window-focus obj)
(unless (last-width obj) (unless (window-maximized-p obj)
(setf (last-x obj) (left obj)) (setf (last-x obj) (left obj))
(setf (last-y obj) (top obj)) (setf (last-y obj) (top obj))
(setf (last-height obj) (height obj)) (setf (last-height obj) (height obj))
@ -685,7 +758,7 @@ on-window-resize-done at end of resize."))
(defmethod window-normalize ((obj clog-gui-window)) (defmethod window-normalize ((obj clog-gui-window))
(window-focus obj) (window-focus obj)
(when (last-width obj) (when (window-maximized-p obj)
(setf (width obj) (last-width obj)) (setf (width obj) (last-width obj))
(setf (height obj) (last-height obj)) (setf (height obj) (last-height obj))
(setf (top obj) (last-y obj)) (setf (top obj) (last-y obj))
@ -703,7 +776,7 @@ on-window-resize-done at end of resize."))
(defmethod window-toggle-maximize ((obj clog-gui-window)) (defmethod window-toggle-maximize ((obj clog-gui-window))
(let ((app (connection-data-item obj "clog-gui"))) (let ((app (connection-data-item obj "clog-gui")))
(window-focus obj) (window-focus obj)
(cond ((last-width obj) (cond ((window-maximized-p obj)
(setf (width obj) (last-width obj)) (setf (width obj) (last-width obj))
(setf (height obj) (last-height obj)) (setf (height obj) (last-height obj))
(setf (top obj) (last-y obj)) (setf (top obj) (last-y obj))

View file

@ -670,6 +670,9 @@ embedded in a native template application.)"
(current-window generic-function) (current-window generic-function)
(menu-bar generic-function) (menu-bar generic-function)
(menu-bar-height generic-function) (menu-bar-height generic-function)
(window-collection generic-function)
(maximize-all-windows generic-function)
(normalize-all-windows generic-function)
(set-on-window-change generic-function) (set-on-window-change generic-function)
"CLOG-GUI - Individual Windows" "CLOG-GUI - Individual Windows"
@ -679,6 +682,7 @@ embedded in a native template application.)"
(window-content generic-function) (window-content generic-function)
(window-focus generic-function) (window-focus generic-function)
(window-close generic-function) (window-close generic-function)
(window-maximized-p generic-function)
(window-maximize generic-function) (window-maximize generic-function)
(window-normalize generic-function) (window-normalize generic-function)
(window-toggle-maximize generic-function) (window-toggle-maximize generic-function)

View file

@ -65,6 +65,12 @@
(tmp (create-gui-menu-item file :content "Drawing" :on-click #'on-file-drawing)) (tmp (create-gui-menu-item file :content "Drawing" :on-click #'on-file-drawing))
(tmp (create-gui-menu-item file :content "Movie" :on-click #'on-file-movies)) (tmp (create-gui-menu-item file :content "Movie" :on-click #'on-file-movies))
(win (create-gui-menu-drop-down menu :content "Window")) (win (create-gui-menu-drop-down menu :content "Window"))
(tmp (create-gui-menu-item win :content "Maximize All"
:on-click (lambda (obj)
(maximize-all-windows obj))))
(tmp (create-gui-menu-item win :content "Normalize All"
:on-click (lambda (obj)
(normalize-all-windows obj))))
(tmp (create-gui-menu-window-select win)) (tmp (create-gui-menu-window-select win))
(help (create-gui-menu-drop-down menu :content "Help")) (help (create-gui-menu-drop-down menu :content "Help"))
(tmp (create-gui-menu-item help :content "About" :on-click #'on-help-about)) (tmp (create-gui-menu-item help :content "About" :on-click #'on-help-about))