mirror of https://codeberg.org/cage/tinmop/
- [GUI] added command to reload a gemini stream from the streams window.
This commit is contained in:
parent
d7f36cc33d
commit
41b2f7a571
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
@ -3,3 +3,9 @@
|
||||||
(define-constant +minimum-padding+ 2 :test #'=)
|
(define-constant +minimum-padding+ 2 :test #'=)
|
||||||
|
|
||||||
(define-constant +ps-file-dialog-filter+ '(("PostScript Files" "*.ps")) :test #'equalp)
|
(define-constant +ps-file-dialog-filter+ '(("PostScript Files" "*.ps")) :test #'equalp)
|
||||||
|
|
||||||
|
(define-constant +stream-status-streaming+ :streaming :test #'eq)
|
||||||
|
|
||||||
|
(define-constant +stream-status-canceled+ :canceled :test #'eq)
|
||||||
|
|
||||||
|
(define-constant +stream-status-downloading+ :downloading :test #'eq)
|
||||||
|
|
|
@ -18,6 +18,8 @@
|
||||||
|
|
||||||
(a:define-constant +document-add+ "fmw_document-add" :test #'string=)
|
(a:define-constant +document-add+ "fmw_document-add" :test #'string=)
|
||||||
|
|
||||||
|
(a:define-constant +document-accept+ "fmw_document-accept" :test #'string=)
|
||||||
|
|
||||||
(a:define-constant +folder+ "fmw_folder" :test #'string=)
|
(a:define-constant +folder+ "fmw_folder" :test #'string=)
|
||||||
|
|
||||||
(defparameter *search* nil)
|
(defparameter *search* nil)
|
||||||
|
@ -36,6 +38,8 @@
|
||||||
|
|
||||||
(defparameter *document-add* nil)
|
(defparameter *document-add* nil)
|
||||||
|
|
||||||
|
(defparameter *document-accept* nil)
|
||||||
|
|
||||||
(defparameter *folder* nil)
|
(defparameter *folder* nil)
|
||||||
|
|
||||||
(defun load-icon (filename)
|
(defun load-icon (filename)
|
||||||
|
@ -56,4 +60,5 @@
|
||||||
(setf *up* (load-icon +up+))
|
(setf *up* (load-icon +up+))
|
||||||
(setf *document-delete* (load-icon +document-delete+))
|
(setf *document-delete* (load-icon +document-delete+))
|
||||||
(setf *document-add* (load-icon +document-add+))
|
(setf *document-add* (load-icon +document-add+))
|
||||||
|
(setf *document-accept* (load-icon +document-accept+))
|
||||||
(setf *folder* (load-icon +folder+)))
|
(setf *folder* (load-icon +folder+)))
|
||||||
|
|
|
@ -2,12 +2,6 @@
|
||||||
|
|
||||||
(named-readtables:in-readtable nodgui.syntax:nodgui-syntax)
|
(named-readtables:in-readtable nodgui.syntax:nodgui-syntax)
|
||||||
|
|
||||||
(a:define-constant +stream-status-streaming+ :streaming :test #'eq)
|
|
||||||
|
|
||||||
(a:define-constant +stream-status-canceled+ :canceled :test #'eq)
|
|
||||||
|
|
||||||
(a:define-constant +stream-status-downloading+ :downloading :test #'eq)
|
|
||||||
|
|
||||||
(defclass gemini-stream ()
|
(defclass gemini-stream ()
|
||||||
((server-stream-handle
|
((server-stream-handle
|
||||||
:initform nil
|
:initform nil
|
||||||
|
@ -78,7 +72,8 @@
|
||||||
(defmethod stop-stream-thread ((object gemini-stream))
|
(defmethod stop-stream-thread ((object gemini-stream))
|
||||||
(with-accessors ((fetching-thread fetching-thread)) object
|
(with-accessors ((fetching-thread fetching-thread)) object
|
||||||
(abort-downloading object)
|
(abort-downloading object)
|
||||||
(when (bt:threadp fetching-thread)
|
(when (and (bt:threadp fetching-thread)
|
||||||
|
(bt:thread-alive-p fetching-thread))
|
||||||
(bt:join-thread fetching-thread)))
|
(bt:join-thread fetching-thread)))
|
||||||
object)
|
object)
|
||||||
|
|
||||||
|
@ -853,6 +848,7 @@
|
||||||
(setf (gui:text (gemtext-widget main-window)) text))
|
(setf (gui:text (gemtext-widget main-window)) text))
|
||||||
|
|
||||||
(defun init-main-window ()
|
(defun init-main-window ()
|
||||||
|
(let ((gui:*debug-tk* nil))
|
||||||
(gui:with-nodgui (:title +program-name+)
|
(gui:with-nodgui (:title +program-name+)
|
||||||
(icons:load-icons)
|
(icons:load-icons)
|
||||||
(initialize-menu gui:*tk*)
|
(initialize-menu gui:*tk*)
|
||||||
|
@ -862,4 +858,4 @@
|
||||||
(let ((main-frame (make-instance 'main-frame)))
|
(let ((main-frame (make-instance 'main-frame)))
|
||||||
(setf gui-goodies:*main-frame* main-frame)
|
(setf gui-goodies:*main-frame* main-frame)
|
||||||
(gui:grid main-frame 0 0 :sticky :nswe)
|
(gui:grid main-frame 0 0 :sticky :nswe)
|
||||||
(gui-goodies:gui-resize-grid-all gui-goodies:*toplevel*))))
|
(gui-goodies:gui-resize-grid-all gui-goodies:*toplevel*)))))
|
||||||
|
|
|
@ -60,6 +60,15 @@
|
||||||
(let ((new-rows (all-rows)))
|
(let ((new-rows (all-rows)))
|
||||||
(resync-rows stream-frame new-rows)))))))
|
(resync-rows stream-frame new-rows)))))))
|
||||||
|
|
||||||
|
(defun revive-stream-clsr (stream-frame)
|
||||||
|
(lambda ()
|
||||||
|
(a:when-let* ((selections (gui:treeview-get-selection (gui-goodies:tree stream-frame)))
|
||||||
|
(selection (first selections)))
|
||||||
|
(let* ((url (gui:id selection))
|
||||||
|
(new-rows (all-rows)))
|
||||||
|
(resync-rows stream-frame new-rows)
|
||||||
|
(client-main-window::open-iri url gui-goodies:*main-frame* t)))))
|
||||||
|
|
||||||
(defun init-window (master)
|
(defun init-window (master)
|
||||||
(gui:with-modal-toplevel (toplevel :master master :title (_ "Streams"))
|
(gui:with-modal-toplevel (toplevel :master master :title (_ "Streams"))
|
||||||
(gui:transient toplevel master)
|
(gui:transient toplevel master)
|
||||||
|
@ -68,8 +77,14 @@
|
||||||
(delete-button (make-instance 'gui:button
|
(delete-button (make-instance 'gui:button
|
||||||
:master buttons-frame
|
:master buttons-frame
|
||||||
:image icons:*document-delete*
|
:image icons:*document-delete*
|
||||||
:command (delete-stream-clsr table))))
|
:command (delete-stream-clsr table)))
|
||||||
(gui-goodies:attach-tooltips (delete-button (_ "delete selected stream")))
|
(revive-button (make-instance 'gui:button
|
||||||
|
:master buttons-frame
|
||||||
|
:image icons:*document-accept*
|
||||||
|
:command (revive-stream-clsr table))))
|
||||||
|
(gui-goodies:attach-tooltips (delete-button (_ "delete selected stream"))
|
||||||
|
(delete-button (_ "show selected stream")))
|
||||||
(gui:grid table 0 0 :sticky :nwe)
|
(gui:grid table 0 0 :sticky :nwe)
|
||||||
(gui:grid buttons-frame 1 0 :sticky :s)
|
(gui:grid buttons-frame 1 0 :sticky :s)
|
||||||
(gui:grid delete-button 0 0 :sticky :s))))
|
(gui:grid delete-button 0 0 :sticky :s)
|
||||||
|
(gui:grid revive-button 0 1 :sticky :s))))
|
||||||
|
|
|
@ -70,7 +70,10 @@
|
||||||
:+gemini-file-extension+
|
:+gemini-file-extension+
|
||||||
;; GUI
|
;; GUI
|
||||||
:+minimum-padding+
|
:+minimum-padding+
|
||||||
:+ps-file-dialog-filter+))
|
:+ps-file-dialog-filter+
|
||||||
|
:+stream-status-streaming+
|
||||||
|
:+stream-status-canceled+
|
||||||
|
:+stream-status-downloading+))
|
||||||
|
|
||||||
(defpackage :conditions
|
(defpackage :conditions
|
||||||
(:use :cl
|
(:use :cl
|
||||||
|
@ -3321,6 +3324,7 @@
|
||||||
:*up*
|
:*up*
|
||||||
:*document-delete*
|
:*document-delete*
|
||||||
:*document-add*
|
:*document-add*
|
||||||
|
:*document-accept*
|
||||||
:*folder*))
|
:*folder*))
|
||||||
|
|
||||||
(defpackage :validation
|
(defpackage :validation
|
||||||
|
|
Loading…
Reference in New Issue