clog/clog.lisp
2021-01-24 19:26:30 -05:00

635 lines
22 KiB
Common Lisp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; CLOG - The Common Lisp Omnificent GUI ;;;;
;;;; (c) 2020-2021 David Botton ;;;;
;;;; License BSD 3 Clause ;;;;
;;;; ;;;;
;;;; clog.lisp ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Exports - clog
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(mgl-pax:define-package :clog
(:documentation "The Common List Omnificent GUI - CLOG")
(:local-nicknames (:cc :clog-connection))
(:use #:cl #:mgl-pax))
(in-package :clog)
(defsection @clog-manual (:title "The CLOG manual")
"The Common Lisp Omnificient GUI, CLOG for short, uses web technology to
produce graphical user interfaces for applications locally or remotely.
CLOG can take the place, or work along side, most cross platform GUI
frameworks and website frameworks. The CLOG package starts up the
connectivity to the browser or other websocket client (often a browser
embedded in a native template application.)"
(@clog-getting-started section)
(@clog-programming-basics section)
(@clog-event-data section)
(@clog-system section)
(@clog-utilities section)
(@clog-obj section)
(@clog-element section)
(@clog-element-common section)
(@clog-form section)
(@clog-canvas section)
(@clog-multimedia section)
(@clog-body section)
(@clog-window section)
(@clog-document section)
(@clog-location section)
(@clog-navigator section)
(@clog-internals section))
(defsection @clog-system (:title "CLOG System")
"CLOG Startup and Shutdown"
(initialize function)
(set-on-new-window function)
(shutdown function))
(defsection @clog-utilities (:title "CLOG Utilities")
"CLOG utilities"
(js-true-p function)
(p-true-js function)
(js-on-p function)
(p-on-js function)
(open-browser function)
(escape-string function))
(defsection @clog-obj (:title "CLOG Objects")
"CLOG-Obj - Base class for CLOG Objects"
(clog-obj class)
"CLOG-Obj - General Properties"
(property generic-function)
"CLOG-Obj - General Methods"
(height generic-function)
(width generic-function)
(focus generic-function)
(blur generic-function)
"CLOG-Obj - Low Level"
(connection-data generic-function)
(connection-data-item generic-function)
(remove-connection-data-item generic-function)
(validp generic-function)
"CLOG-Obj - Event Handling"
(set-on-resize generic-function)
(set-on-focus generic-function)
(set-on-blur generic-function)
(set-on-change generic-function)
(set-on-focus-in generic-function)
(set-on-focus-out generic-function)
(set-on-reset generic-function)
(set-on-search generic-function)
(set-on-select generic-function)
(set-on-submit generic-function)
(set-on-select generic-function)
(set-on-context-menu generic-function)
(set-on-click generic-function)
(set-on-double-click generic-function)
(set-on-mouse-click generic-function)
(set-on-mouse-double-click generic-function)
(set-on-mouse-right-click generic-function)
(set-on-mouse-enter generic-function)
(set-on-mouse-leave generic-function)
(set-on-mouse-over generic-function)
(set-on-mouse-out generic-function)
(set-on-mouse-down generic-function)
(set-on-mouse-up generic-function)
(set-on-mouse-move generic-function)
(set-on-touch-start generic-function)
(set-on-touch-move generic-function)
(set-on-touch-end generic-function)
(set-on-touch-cancel generic-function)
(set-on-character generic-function)
(set-on-key-down generic-function)
(set-on-key-up generic-function)
(set-on-key-press generic-function)
(set-on-copy generic-function)
(set-on-cut generic-function)
(set-on-paste generic-function))
;; need to add drag and drop events
(defsection @clog-element (:title "CLOG Elements")
"CLOG-Element - Class for CLOG Elements"
(clog-element class)
"CLOG-Element - Low Level Creation"
(create-child generic-function)
(attach-as-child generic-function)
"CLOG-Element - DOM Placement"
(place-after generic-function)
(place-before generic-function)
(place-inside-top-of generic-function)
(place-inside-bottom-of generic-function)
"CLOG-Element - General Properties"
(style generic-function)
(attribute generic-function)
(remove-attribute generic-function)
"CLOG-Element - Properties"
(access-key generic-function)
(advisory-title generic-function)
(css-class-name generic-function)
(editablep generic-function)
(draggablep generic-function)
(visiblep generic-function)
(hiddenp generic-function)
(inner-html generic-function)
(outer-html generic-function)
(spellcheckp generic-function)
(tab-index generic-function)
(text generic-function)
(text-direction-type type)
(text-direction generic-function)
(language-code generic-function)
(client-left generic-function)
(client-top generic-function)
(client-width generic-function)
(client-height generic-function)
(offset-left generic-function)
(offset-top generic-function)
(offset-width generic-function)
(offset-height generic-function)
(html-tag generic-function)
"CLOG-Element - Styles"
(box-sizing-type type)
(box-sizing generic-function)
(clear-side-type type)
(clear-side generic-function)
(float-wrap-type type)
(float-wrap generic-function)
(display-type type)
(display generic-function)
(overflow-type type)
(overflow generic-function)
(overflow-x-type type)
(overflow-x generic-function)
(overflow-y-type type)
(overflow-y generic-function)
(z-index generic-function)
(resizable-type type)
(resizable generic-function)
(position-type type)
(positioning generic-function)
(position-top generic-function)
(position-left generic-function)
(left generic-function)
(top generic-function)
(right generic-function)
(bottom generic-function)
(box-height generic-function)
(box-width generic-function)
(maximum-height generic-function)
(maximum-width generic-function)
(minimum-height generic-function)
(minimum-width generic-function)
(inner-height generic-function)
(inner-width generic-function)
(outer-height generic-function)
(outer-width generic-function)
(outer-height-to-margin generic-function)
(outer-width-to-margin generic-function)
(color generic-function)
(opacity generic-function)
(background-attachment-type type)
(background-attachment generic-function)
(background-color generic-function)
(background-image generic-function)
(background-position generic-function)
(background-origin-type type)
(background-origin generic-function)
(background-repeat-type type)
(background-repeat generic-function)
(background-clip-type type)
(background-clip generic-function)
(background-size generic-function)
(border-style-type type)
(border generic-function)
(set-border generic-function)
(border-radius generic-function)
(box-shadow generic-function)
(outline-style-type type)
(outline generic-function)
(set-outline generic-function)
(margin generic-function)
(set-margin generic-function)
(padding generic-function)
(set-padding generic-function)
(cursor generic-function)
(font-style-type type)
(font-variant-type type)
(system-font-type type)
(font generic-function)
(set-font generic-function)
(text-alignment-type type)
(text-alignment generic-function)
(vertical-align-type type)
(vertical-align generic-function)
"CLOG-Element - Methods"
(add-class generic-function)
(remove-class generic-function)
(toggle-class generic-function)
(remove-from-dom generic-function)
(click generic-function)
"CLOG-Element - DOM Traversal Methods"
(parent-element generic-function)
(first-child generic-function)
(previous-sibling generic-function)
(next-sibling generic-function))
(defsection @clog-element-common (:title "Common CLOG Elements")
"CLOG-A - Class for CLOG Anchors"
(clog-a class)
(create-a generic-function)
(link generic-function)
(target generic-function)
"CLOG-BR - Class for CLOG Line Breaks"
(clog-br class)
(create-br generic-function)
"CLOG-BUTTON - Class for CLOG Buttons"
(clog-button class)
(create-button generic-function)
(disabledp generic-function)
"CLOG-IMG - Class for CLOG Images"
(clog-img class)
(create-img generic-function)
(url-src generic-function)
"CLOG-Div - Class for CLOG Div Blocks"
(clog-div class)
(create-div generic-function)
"CLOG-HR - Class for CLOG Hortizontal Rules"
(clog-HR class)
(create-HR generic-function)
"CLOG-Meter - Class for CLOG Meters"
(clog-meter class)
(create-meter generic-function)
(value generic-function)
(high generic-function)
(low generic-function)
(minimum generic-function)
(maximum generic-function)
(optimum generic-function)
"CLOG-Progress-Bar - Class for CLOG Progress Bars"
(clog-progress-bar class)
(create-progress-bar generic-function)
(value generic-function)
(maximum generic-function)
"CLOG-P - Class for CLOG Paragraphs"
(clog-p class)
(create-p generic-function)
"CLOG-Span - Class for CLOG Inline Spans"
(clog-span class)
(create-span generic-function))
(defsection @clog-form (:title "CLOG Form Objects")
"CLOG-Form - Class for organizing Form Elements in to a From"
(clog-form class)
(create-form generic-function)
(form-element-count generic-function)
(submit generic-function)
(reset generic-function)
(autocompletep generic-function)
(encoding generic-function)
(validate-on-submit generic-function)
"CLOG-Fieldset - Class for CLOG Fieldsets"
(clog-fieldset class)
(create-fieldset generic-function)
"CLOG-Form-Element - Class for form elements"
(clog-form-element class)
(form-element-type type)
(create-form-element generic-function)
(autocomplete generic-function)
(autofocusp generic-function)
(place-holder generic-function)
(disabledp generic-function)
(read-only-p generic-function)
(requiredp generic-function)
(name generic-function)
(default-value generic-function)
(value generic-function)
(radio-value generic-function)
(name-value generic-function)
(pattern generic-function)
(minimum generic-function)
(maximum generic-function)
(size generic-function)
(element-step generic-function)
(select generic-function)
(file-accept generic-function)
(url-src generic-function)
(alt-text generic-function)
(checkedp generic-function)
(input-mode-type type)
(input-mode generic-function)
(set-data-list generic-function)
(make-data-list generic-function)
(minimum-length generic-function)
(maximum-length generic-function)
"CLOG-Label - Class for CLOG Labels"
(clog-label class)
(create-label generic-function)
(label-for generic-function)
"CLOG-Select - Class for CLOG Selects"
(clog-select class)
(create-select generic-function)
(clog-option class)
(create-option generic-function)
(clog-optgroup class)
(create-optgroup generic-function)
(selectedp generic-function)
(add-select-option generic-function)
(add-select-options generic-function)
"CLOG-Data-List - Class for CLOG Option Data Lists"
(clog-data-list class)
(create-data-list generic-function)
(add-option generic-function)
(add-options generic-function)
"CLOG-Text-Area - Class for CLOG Text Areas"
(clog-text-area class)
(create-text-area generic-function)
(word-wrap generic-function)
(columns generic-function)
(rows generic-function)
(disable-resize generic-function))
(defsection @clog-canvas (:title "CLOG Canvas Objects")
"CLOG-Canvas - Class for CLOG canvas objects"
(clog-canvas class)
(create-canvas generic-function)
(clog-context2d class)
(create-context2d generic-function)
(clear-rect generic-function)
(fill-rect generic-function)
(stroke-rect generic-function)
(fill-text generic-function)
(stroke-text generic-function)
(line-width generic-function)
(line-cap generic-function)
(line-join generic-function)
(miter-limit generic-function)
(get-line-dash generic-function)
(set-line-dash generic-function)
(line-dash-offset generic-function)
(font-style generic-function)
(text-align-type type)
(text-align generic-function)
(text-baseline-type type)
(text-baseline generic-function)
(text-dir generic-function)
(fill-style generic-function)
(stroke-style generic-function)
(shadow-blur generic-function)
(shadow-color generic-function)
(shadow-offset-x generic-function)
(shadow-offset-y generic-function)
(begin-path generic-function)
(close-path generic-function)
(move-to generic-function)
(line-to generic-function)
(bezier-curve-to generic-function)
(quadratic-curve-to generic-function)
(arc generic-function)
(arc-to generic-function)
(ellipse generic-function)
(rect generic-function)
(path-fill generic-function)
(path-stroke generic-function)
(path-clip generic-function)
(canvas-save generic-function)
(canvas-restore generic-function))
(defsection @clog-multimedia (:title "CLOG Multimedia Objects")
"CLOG-Multimedia - Base Class for CLOG multimedia objects"
(clog-multimedia class)
(loop-mediap generic-function)
(media-duration generic-function)
(media-source generic-function)
(media-position generic-function)
(mutedp generic-function)
(pausedp generic-function)
(seekingp generic-function)
(playback-ended-p generic-function)
(playback-rate generic-function)
(ready-to-play-p generic-function)
(media-volume generic-function)
(play-media generic-function)
(pause-media generic-function)
(load-media generic-function)
(can-play-type-p generic-function)
(set-on-media-abort generic-function)
(set-on-media-error generic-function)
(set-on-can-play generic-function)
(set-on-can-play-through generic-function)
(set-on-duration-change generic-function)
(set-on-emptied generic-function)
(set-on-ended generic-function)
(set-on-loaded-data generic-function)
(set-on-loaded-meta-data generic-function)
(set-on-load-start generic-function)
(set-on-play generic-function)
(set-on-pause generic-function)
(set-on-playing generic-function)
(set-on-progress generic-function)
(set-on-rate-change generic-function)
(set-on-seeked generic-function)
(set-on-seeking generic-function)
(set-on-stalled generic-function)
(set-on-suspend generic-function)
(set-on-time-update generic-function)
(set-on-volume-change generic-function)
(set-on-waiting generic-function)
"Clog-Audio - Class for CLOG Audio Control"
(clog-audio class)
(create-audio generic-function)
"Clog-Video - Class for CLOG Video Control"
(clog-video class)
(create-video generic-function))
(defsection @clog-body (:title "CLOG Body Objects")
"CLOG-Body - CLOG Body Objects"
(clog-body class)
"CLOG-Body - Properties"
(run generic-function)
(window generic-function)
(html-document generic-function)
(location generic-function)
(navigator generic-function))
(defsection @clog-window (:title "CLOG Window Objects")
"CLOG-Window - CLOG Window Objects"
(clog-window class)
"CLOG-Window - Properties"
(window-name generic-function)
(inner-height generic-function)
(inner-width generic-function)
(outer-height generic-function)
(outer-width generic-function)
(x-offset generic-function)
(y-offset generic-function)
(left generic-function)
(top generic-function)
(pixel-ratio generic-function)
(screen-width generic-function)
(screen-height generic-function)
(screen-available-width generic-function)
(screen-available-height generic-function)
(screen-available-top generic-function)
(screen-available-left generic-function)
(screen-color-depth generic-function)
"CLOG-Window - Methods"
(alert generic-function)
(log-console generic-function)
(log-error generic-function)
(print-window generic-function)
(scroll-by generic-function)
(scroll-to generic-function)
(close-window generic-function)
(close-connection generic-function)
(storage-type type)
(storage-length generic-function)
(storage-key generic-function)
(storage-remove generic-function)
(storage-element generic-function)
"CLOG-Window - Events"
(set-on-abort generic-function)
(set-on-error generic-function)
(set-on-before-unload generic-function)
(set-on-hash-change generic-function)
(set-on-orientation-change generic-function)
(set-on-storage generic-function)
(move-by generic-function)
(move-to generic-function)
(resize-by generic-function)
(resize-to generic-function))
(defsection @clog-document (:title "CLOG Document Objects")
"CLOG-Document - CLOG Document Objects"
(clog-document class)
(domain generic-function)
(input-encoding generic-function)
(last-modified generic-function)
(referer generic-function)
(title generic-function)
(document-url generic-function)
(head-element generic-function)
(body-element generic-function)
(document-element generic-function)
(ready-state generic-function)
(load-css generic-function)
(put generic-function)
(put-line generic-function)
(put-br generic-function)
(new-line generic-function))
(defsection @clog-navigator (:title "CLOG Navigator Objects")
"CLOG-Navigator - CLOG Navigator Objects"
(clog-navigator class)
"CLOG-Navigator - Properties"
(cookie-enabled-p generic-function)
(language generic-function)
(user-agent generic-function)
(vendor generic-function))
(defsection @clog-location (:title "CLOG Location Objects")
"CLOG-Location - CLOG Location Objects"
(clog-location class)
"CLOG-Location - Properties"
(url generic-function)
(hash generic-function)
(host generic-function)
(host-name generic-function)
(origin generic-function)
(path-name generic-function)
(port generic-function)
(protocol generic-function)
(url-search generic-function)
"CLOG-Location - Methods"
(reload generic-function)
(url-replace generic-function)
(url-assign generic-function))
(export 'make-markup)
(defun make-markup ()
(load "clog.lisp")
(load "clog-docs.lisp")
(load "clog-base.lisp")
(load "clog-element.lisp")
(load "clog-element-common.lisp")
(load "clog-canvas.lisp")
(load "clog-form.lisp")
(load "clog-window.lisp")
(load "clog-navigator.lisp")
(load "clog-document.lisp")
(load "clog-location.lisp")
(load "clog-system.lisp")
(load "clog-utilities.lisp")
(load "clog-body.lisp")
(describe clog:@CLOG-MANUAL))
(export 'make-html)
(defun make-html ()
(load "clog.lisp")
(load "clog-docs.lisp")
(load "clog-base.lisp")
(load "clog-element.lisp")
(load "clog-element-common.lisp")
(load "clog-canvas.lisp")
(load "clog-form.lisp")
(load "clog-window.lisp")
(load "clog-navigator.lisp")
(load "clog-document.lisp")
(load "clog-location.lisp")
(load "clog-system.lisp")
(load "clog-utilities.lisp")
(load "clog-body.lisp")
(mgl-pax:update-asdf-system-html-docs clog:@CLOG-MANUAL :clog))
(export 'make-world)
(defun make-world ()
(make-html)
(asdf:compile-system :clog))