git.fiddlerwoaroof.com
Browse code

feat: multiple-windows for open-url

Edward Langley authored on 26/06/2020 23:03:16
Showing 1 changed files
... ...
@@ -1,11 +1,34 @@
1 1
 (in-package :mfa-tool)
2 2
 
3
-(defun open-url (url)
4
-  (capi:contain (make-instance 'capi:browser-pane
5
-                               :url url)
6
-                :title "Management Console"
7
-                :best-width 1280
8
-                :best-height 800)
3
+(capi:define-interface browser-ui ()
4
+  ((url :initarg :url :reader url))
5
+  (:panes (brows capi:browser-pane
6
+                 :url url
7
+
8
+                 :navigate-complete-callback
9
+                 (lambda (pane url _)
10
+                   (declare (ignore url _))
11
+                   (capi:apply-in-pane-process-if-alive
12
+                       pane #'(setf capi:interface-title)
13
+                       (or (capi:browser-pane-title pane) "<no title>")
14
+                       capi:interface))
15
+
16
+                 :new-window-callback
17
+                 (lambda (pane url &key &allow-other-keys)
18
+                   (declare (ignore pane))
19
+                   (open-url url)
20
+                   nil)))
21
+  (:layouts (main-layout capi:row-layout '(brows)))
22
+  (:default-initargs
23
+   :layout 'main-layout
24
+   :title "Management Console"
25
+   :best-width 1280
26
+   :best-height 800))
27
+
28
+(defun open-url (url &optional parnt)
29
+  (if parnt
30
+      (capi:display (make-instance 'browser-ui :url url))
31
+      (capi:display (make-instance 'browser-ui :url url)))
9 32
   #+(or)
10 33
   (let* ((history (make-instance 'capi:list-panel
11 34
                                  :items (list (make-instance 'capi:item