Lisp HUG Maillist Archive

Position of menus

Is it possible (on Windows) to explicitly position menus in an
interface's menu bar or are they always flush left?  ISTR I saw
Windows apps where for example the "Help" menu was flush right, but I
couldn't name one right now.


Sub tab layout access

I have defined an interface which has a tab-layout with four tabs each 
of which contain a tab-layout with two tabs.

Using capi:tab-layout-panes with the first top tab-layout works fine. 
But when I use capi:tab-layout-panes with the second one, it fails. I 
can't figure out what the problem is.  Thanks for any help.

Mitch


(capi:define-interface test-interface ()
   ()
   (:layouts
    (upper-tab-layout
     capi:tab-layout
     '()
     :items '(())
     :accessor upper-tab-layout
     :print-function 'first
     :visible-child-function 'second)
    (main-layout
     capi:column-layout
     '(upper-tab-layout)))
   (:default-initargs
    :layout 'main-layout
    :best-height 400
    :best-width 400))


(defun initialize-tab-layouts (interface)
   (let ((one-top-tab)
         (tabs-list))
     (dotimes (i 4)
       (setf one-top-tab (make-instance 'capi:tab-layout
                                        :tabs-position :bottom
                                        :visible-child-function 'second
                                        :print-function 'first))
       ;; add two items to each tab-layout of the top tabs
       (setf (capi:collection-items one-top-tab)
             (list (list
                    "Tab1"
                    (make-instance 'capi:pinboard-layout
                                   :background :white))
                   (list
                    "Tab2"
                    (make-instance 'capi:pinboard-layout
                                   :background :white))))
       (setf (capi:choice-selection one-top-tab) 0)
       (push (list
              (format nil "~A" i)
              one-top-tab)
             tabs-list))
     (setf (capi:collection-items (upper-tab-layout interface)) 
(nreverse tabs-list))
     (setf (capi:choice-selection (upper-tab-layout interface)) 0)))


(defun test-tabs ()
   (let ((tabs-interface (capi:display (make-instance 'test-interface))))
     (capi:execute-with-interface tabs-interface 
#'initialize-tab-layouts tabs-interface)
     ;; following works
     (print "Access top tab 0")
     (capi:execute-with-interface tabs-interface
                                  #'capi:tab-layout-panes
                                  (nth 0
                                       (capi:tab-layout-panes 
(upper-tab-layout tabs-interface))))
     ;; following fails
     (print "Access top tab 1")
     (capi:execute-with-interface tabs-interface
                                  #'capi:tab-layout-panes
                                  (nth 1
                                       (capi:tab-layout-panes 
(upper-tab-layout tabs-interface))))))


Updated at: 2020-12-10 08:43 UTC