Preferences for popups, edit in emacs, shutdown in app mode fix

This commit is contained in:
David Botton 2024-03-21 10:59:38 -04:00
parent 73ab5d9362
commit a57cdff3d6
5 changed files with 45 additions and 27 deletions

View file

@ -30,15 +30,17 @@
(format t "Error: ~A" condition))))) (format t "Error: ~A" condition)))))
(defun on-open-file-ext (obj &key open-file popup) (defun on-open-file-ext (obj &key open-file popup)
(open-window (window (connection-body obj)) (if (and *open-external-with-emacs* open-file)
(if open-file (swank:ed-in-emacs open-file)
(format nil "/source-editor?open-file=~A" (open-window (window (connection-body obj))
open-file) (if open-file
"/source-editor") (format nil "/source-editor?open-file=~A"
:specs (if popup open-file)
"width=645,height-430" "/source-editor")
"") :specs (if (or popup *open-external-in-popup*)
:name "_blank")) "width=800,height=600"
"")
:name "_blank")))
(defun on-open-file (obj &key open-file (defun on-open-file (obj &key open-file
(title "New Source Editor") (title "New Source Editor")
@ -60,6 +62,7 @@
(m-load (create-gui-menu-item m-file :content "load")) (m-load (create-gui-menu-item m-file :content "load"))
(m-save (create-gui-menu-item m-file :content "save (cmd/ctrl-s)")) (m-save (create-gui-menu-item m-file :content "save (cmd/ctrl-s)"))
(m-saveas (create-gui-menu-item m-file :content "save as..")) (m-saveas (create-gui-menu-item m-file :content "save as.."))
(m-emacs (create-gui-menu-item m-file :content "open in emacs"))
(m-edit (create-gui-menu-drop-down menu :content "Edit")) (m-edit (create-gui-menu-drop-down menu :content "Edit"))
(m-undo (create-gui-menu-item m-edit :content "undo")) (m-undo (create-gui-menu-item m-edit :content "undo"))
(m-redo (create-gui-menu-item m-edit :content "redo")) (m-redo (create-gui-menu-item m-edit :content "redo"))
@ -215,6 +218,7 @@
(setf last-date (file-write-date file-name)) (setf last-date (file-write-date file-name))
(sleep .5) (sleep .5)
(remove-class btn-save "w3-animate-top")))) (remove-class btn-save "w3-animate-top"))))
(set-on-click m-emacs (lambda (obj) (swank:ed-in-emacs file-name)))
(flet ((save (obj data &key save-as) (flet ((save (obj data &key save-as)
(cond ((or (equal file-name "") (cond ((or (equal file-name "")
(getf data :shift-key) (getf data :shift-key)

View file

@ -485,8 +485,8 @@ not a temporarily attached one when using select-control."
(format nil "/panel-editor?open-panel=~A" (format nil "/panel-editor?open-panel=~A"
open-file) open-file)
"/source-editor") "/source-editor")
:specs (if popup :specs (if (or popup *open-external-panels-in-popup*)
"width=645,height-430" "width=1280,height=700"
"") "")
:name "_blank")) :name "_blank"))

View file

@ -12,6 +12,12 @@
;; Open panels and files in new browser tabs by default ;; Open panels and files in new browser tabs by default
(defparameter *open-external* nil) (defparameter *open-external* nil)
;; Open files in browser popus instead of tabs if browser allows
(defparameter *open-external-in-popup* nil)
;; Open panels in browser popus instead of tabs if browser allows
(defparameter *open-external-panels-in-popup* nil)
;; Use emacs instead of the source-editor when openning external
(defparameter *open-external-with-emacs* nil)
;; Best Light Theme for Lisp ;; Best Light Theme for Lisp
(defparameter *editor-theme* "ace/theme/iplastic") (defparameter *editor-theme* "ace/theme/iplastic")
;; Best Dark Theme for Lisp ;; Best Dark Theme for Lisp

View file

@ -352,21 +352,21 @@ clog-builder window.")
(win (create-gui-menu-drop-down menu :content "Window")) (win (create-gui-menu-drop-down menu :content "Window"))
(help (create-gui-menu-drop-down menu :content "Help"))) (help (create-gui-menu-drop-down menu :content "Help")))
(declare (ignore icon)) (declare (ignore icon))
(create-gui-menu-item file :content "New CLOG-GUI Panel" :on-click 'on-new-builder-panel) (create-gui-menu-item file :content "New CLOG-GUI Panel" :on-click 'on-new-builder-panel)
(create-gui-menu-item file :content "New CLOG-WEB Page" :on-click 'on-new-builder-page) (create-gui-menu-item file :content "New CLOG-WEB Page in New Tab" :on-click 'on-new-builder-page)
(create-gui-menu-item file :content "New Basic HTML Page" :on-click 'on-new-builder-basic-page) (create-gui-menu-item file :content "New Basic HTML Page in New Tab" :on-click 'on-new-builder-basic-page)
(create-gui-menu-item file :content "New CLOG-WEB Delay Launch" :on-click 'on-new-builder-launch-page) (create-gui-menu-item file :content "New CLOG-WEB Page Delayed in New Tab" :on-click 'on-new-builder-launch-page)
(create-gui-menu-item file :content "New Custom Boot Page" :on-click 'on-new-builder-custom) (create-gui-menu-item file :content "New Custom Boot Page in New Tab" :on-click 'on-new-builder-custom)
(create-gui-menu-item file :content "New Application Template" :on-click 'on-new-app-template) (create-gui-menu-item file :content "New Application Template" :on-click 'on-new-app-template)
(create-gui-menu-item src :content "Project Window" :on-click 'on-show-project) (create-gui-menu-item src :content "Project Window" :on-click 'on-show-project)
(create-gui-menu-item src :content "Directory Window" :on-click 'on-dir-win) (create-gui-menu-item src :content "Directory Window" :on-click 'on-dir-win)
(create-gui-menu-item src :content "New Source Editor" :on-click 'on-open-file) (create-gui-menu-item src :content "New Source Editor" :on-click 'on-open-file)
(create-gui-menu-item src :content "New Source Editor (New Tab)" :on-click (create-gui-menu-item src :content "New Source Editor in New Tab" :on-click
(lambda (obj) (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(open-window (window body) "/source-editor?open-file=%20"))) (open-window (window body) "/source-editor?open-file=%20")))
(create-gui-menu-item src :content "New System Browser" :on-click 'on-new-sys-browser) (create-gui-menu-item src :content "New System Browser" :on-click 'on-new-sys-browser)
(create-gui-menu-item src :content "New ASDF System Browser" :on-click 'on-new-asdf-browser) (create-gui-menu-item src :content "New ASDF System Browser" :on-click 'on-new-asdf-browser)
(create-gui-menu-item tools :content "Control CLOG Events" :on-click 'on-show-control-events-win) (create-gui-menu-item tools :content "Control CLOG Events" :on-click 'on-show-control-events-win)
(create-gui-menu-item tools :content "Control JavaScript Events" :on-click 'on-show-control-js-events-win) (create-gui-menu-item tools :content "Control JavaScript Events" :on-click 'on-show-control-js-events-win)
(create-gui-menu-item tools :content "Control ParenScript Events" :on-click 'on-show-control-ps-events-win) (create-gui-menu-item tools :content "Control ParenScript Events" :on-click 'on-show-control-ps-events-win)
@ -446,10 +446,14 @@ clog-builder window.")
(declare (ignore obj)) (declare (ignore obj))
;; return empty string to prevent nav off page ;; return empty string to prevent nav off page
""))) "")))
(when *app-mode*
(incf *app-mode*))
(run body) (run body)
(when *app-mode* (when *app-mode*
(clog:shutdown) (decf *app-mode*)
(uiop:quit))) (when (<= *app-mode* 0)
(clog:shutdown)
(uiop:quit))))
(defun clog-builder (&key (port 8080) (start-browser t) (defun clog-builder (&key (port 8080) (start-browser t)
app project dir static-root system clogframe) app project dir static-root system clogframe)
@ -472,7 +476,8 @@ instead of the project window will be displayed."
(setf static-root (merge-pathnames "./www/" (setf static-root (merge-pathnames "./www/"
(asdf:system-source-directory system)))) (asdf:system-source-directory system))))
(when app (when app
(setf *app-mode* app)) (unless *app-mode*
(setf *app-mode* 0)))
(if static-root (if static-root
(initialize nil :port port :static-root static-root) (initialize nil :port port :static-root static-root)
(initialize nil :port port)) (initialize nil :port port))
@ -489,5 +494,5 @@ instead of the project window will be displayed."
(format nil "~A/builder" port) (format nil "~A/builder" port)
(format nil "~A" 1280) (format nil "~A" 840)))) (format nil "~A" 1280) (format nil "~A" 840))))
(when start-browser (when start-browser
(format t "If browser does not start go to http://127.0.0.1:~A/builder" port) (format t "~%If browser does not start go to http://127.0.0.1:~A/builder~%~%" port)
(open-browser :url (format nil "http://127.0.0.1:~A/builder" port)))) (open-browser :url (format nil "http://127.0.0.1:~A/builder" port))))

View file

@ -1,6 +1,9 @@
(in-package :clog-tools) (in-package :clog-tools)
(setf *open-external* t) (setf *open-external* t)
(setf *open-external-with-emacs* nil)
(setf *open-external-in-popup* nil)
(setf *open-external-panels-in-popup* t)
(setf *editor-theme* "ace/theme/terminal") (setf *editor-theme* "ace/theme/terminal")
(setf *editor-keybinding* "ace/keyboard/emacs") (setf *editor-keybinding* "ace/keyboard/emacs")
(setf *editor-renderer-options* (setf *editor-renderer-options*