;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; CLOG - The Common Lisp Omnificent GUI ;;;; ;;;; (c) 2020-2021 David Botton ;;;; ;;;; License BSD 3 Clause ;;;; ;;;; ;;;; ;;;; clog-location.lisp ;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (cl:in-package :clog) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Implementation - clog-location ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defclass clog-location (clog-obj)() (:documentation "CLOG Location Objects encapsulate the location.")) ;;;;;;;;;;;;;;;;;;;;;;;; ;; make-clog-location ;; ;;;;;;;;;;;;;;;;;;;;;;;; (defun make-clog-location (connection-id) "Construct a new clog-location. (Private)" (make-instance 'clog-location :connection-id connection-id :html-id "location")) ;;;;;;;;; ;; url ;; ;;;;;;;;; (defgeneric url (clog-location) (:documentation "Get/Setf full url.")) (defmethod url ((obj clog-location)) (property obj "href")) (defgeneric set-url (clog-location value) (:documentation "Set url VALUE for CLOG-LOCATION")) (defmethod set-url ((obj clog-location) value) (setf (property obj "href") value)) (defsetf url set-url) ;;;;;;;;;; ;; hash ;; ;;;;;;;;;; (defgeneric hash (clog-location) (:documentation "Get/Setf url hash.")) (defmethod hash ((obj clog-location)) (property obj "hash")) (defgeneric set-hash (clog-location value) (:documentation "Set hash VALUE for CLOG-LOCATION")) (defmethod set-hash ((obj clog-location) value) (setf (property obj "hash") value)) (defsetf hash set-hash) ;;;;;;;;;; ;; host ;; ;;;;;;;;;; (defgeneric host (clog-location) (:documentation "Get/Setf url host.")) (defmethod host ((obj clog-location)) (property obj "host")) (defgeneric set-host (clog-location value) (:documentation "Set host VALUE for CLOG-LOCATION")) (defmethod set-host ((obj clog-location) value) (setf (property obj "host") value)) (defsetf host set-host) ;;;;;;;;;;;;;;; ;; host-name ;; ;;;;;;;;;;;;;;; (defgeneric host-name (clog-location) (:documentation "Get/Setf url host name.")) (defmethod host-name ((obj clog-location)) (property obj "hostname")) (defgeneric set-host-name (clog-location value) (:documentation "Set host-name VALUE for CLOG-LOCATION")) (defmethod set-host-name ((obj clog-location) value) (setf (property obj "hostname") value)) (defsetf host-name set-host-name) ;;;;;;;;;;;; ;; origin ;; ;;;;;;;;;;;; (defgeneric origin (clog-location) (:documentation "Get url origin.")) (defmethod origin ((obj clog-location)) (property obj "origin")) ;;;;;;;;;;;;;;; ;; path-name ;; ;;;;;;;;;;;;;;; (defgeneric path-name (clog-location) (:documentation "Get/Setf url path-name.")) (defmethod path-name ((obj clog-location)) (property obj "pathname")) (defgeneric set-path-name (clog-location value) (:documentation "Set path-name VALUE for CLOG-LOCATION")) (defmethod set-path-name ((obj clog-location) value) (setf (property obj "pathname") value)) (defsetf path-name set-path-name) ;;;;;;;;;; ;; port ;; ;;;;;;;;;; (defgeneric port (clog-location) (:documentation "Get/Setf url port.")) (defmethod port ((obj clog-location)) (property obj "port")) (defgeneric set-port (clog-location value) (:documentation "Set port VALUE for CLOG-LOCATION")) (defmethod set-port ((obj clog-location) value) (setf (property obj "port") value)) (defsetf port set-port) ;;;;;;;;;;;;;; ;; protocol ;; ;;;;;;;;;;;;;; (defgeneric protocol (clog-location) (:documentation "Get/Setf url protocol.")) (defmethod protocol ((obj clog-location)) (property obj "protocol")) (defgeneric set-protocol (clog-location value) (:documentation "Set protocol VALUE for CLOG-LOCATION")) (defmethod set-protocol ((obj clog-location) value) (setf (property obj "protocol") value)) (defsetf protocol set-protocol) ;;;;;;;;;;;;;;;; ;; url-search ;; ;;;;;;;;;;;;;;;; (defgeneric url-search (clog-location) (:documentation "Get/Setf url-search.")) (defmethod url-search ((obj clog-location)) (property obj "search")) (defgeneric set-url-search (clog-location value) (:documentation "Set url-search VALUE for CLOG-LOCATION")) (defmethod set-url-search ((obj clog-location) value) (setf (property obj "search") value)) (defsetf url-search set-url-search) ;;;;;;;;;;;; ;; reload ;; ;;;;;;;;;;;; (defgeneric reload (clog-window) (:documentation "Reload browser window.")) (defmethod reload ((obj clog-window)) (execute obj "reload()")) ;;;;;;;;;;;;;;;;; ;; url-replace ;; ;;;;;;;;;;;;;;;;; (defgeneric url-replace (clog-window replace-url) (:documentation "Replace browser url.")) (defmethod url-replace ((obj clog-window) replace-url) (execute obj (format nil "replace('~A')" replace-url))) ;;;;;;;;;;;;;;;; ;; url-assign ;; ;;;;;;;;;;;;;;;; (defgeneric url-assign (clog-window assign-url) (:documentation "Assign browser url.")) (defmethod url-assign ((obj clog-window) assign-url) (execute obj (format nil "assign('~A')" assign-url)))