Changeset 654


Ignore:
Timestamp:
Mar 17, 2004, 7:22:13 AM (21 years ago)
Author:
Gary Byers
Message:

Getting closer ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/examples/cocoa-backtrace.lisp

    r649 r654  
    4040       (eql self (frame-label-controller thing))))
    4141
     42(define-objc-method ((:void window-did-load)
     43                     backtrace-window-controller)
     44  (let* ((outline (slot-value self 'outline-view))
     45         (font (default-font :name "Monaco" :size 12)))
     46    (unless (%null-ptr-p outline)
     47      (let* ((columns (send outline 'table-columns)))
     48        (dotimes (i (send columns 'count))
     49          (let* ((column (send columns :object-at-index i))
     50                 (data-cell (send column 'data-cell)))
     51            (send data-cell :set-font font)
     52            (when (eql i 0)
     53              (let* ((header-cell (send column 'header-cell))
     54                     (inspector (backtrace-controller-inspector self))
     55                     (break-condition
     56                      (inspector::break-condition
     57                                 (inspector::inspector-object inspector)))
     58                     (break-condition-string
     59                      (let* ((*print-level* 5)
     60                             (*print-length* 5)
     61                             (*print-circle* t))
     62                        (format nil "~a: ~a"
     63                                (class-name (class-of break-condition))
     64                                break-condition))))
     65                     
     66                (send header-cell :set-font (default-font :attributes '(:bold)))
     67                (send header-cell :set-string-value
     68                      (%make-nsstring break-condition-string))))))))))
     69             
    4270(define-objc-method ((:<BOOL> :outline-view view
    4371                              :is-item-expandable item)
     
    7199                     backtrace-window-controller)
    72100    (declare (ignore view))
    73     (let* ((inspector (backtrace-controller-inspector self)))
    74       (cond ((%null-ptr-p item)
    75              (let* ((label
    76                      (make-instance 'frame-label
    77                                     :string
    78                                     (let* ((value
    79                                             (inspector::line-n inspector index)))
    80                                       (if value
    81                                         (%lfun-name-string value)
    82                                         ":kernel")))))
    83                (setf (slot-value label 'controller) self
    84                      (slot-value label 'frame-number) index)
    85                label))
    86             ((our-frame-label-p self item)
    87              (let* ((frame-inspector
    88                      (or (frame-label-frame-inspector item)
    89                          (setf (frame-label-frame-inspector item)
    90                                (make-instance
    91                                 'inspector::stack-frame-inspector
    92                                 :frame-number (frame-label-number item)
    93                                 :object (inspector::inspector-object inspector)
    94                                 :update-line-count t)))))
    95                (make-objc-instance 'frame-item
    96                                    :frame-label item
    97                                    :index index
    98                                    :string
    99                                    (with-output-to-string (s)
    100                                      (multiple-value-bind (value label)
    101                                          (inspector::line-n
    102                                           frame-inspector
    103                                           index)
    104                                      (inspector::prin1-value
    105                                       frame-inspector
    106                                       s
    107                                       value
    108                                       label))))))
    109             (t (break) (%make-nsstring "Huh?")))))
     101  (let* ((inspector (backtrace-controller-inspector self)))
     102    (cond ((%null-ptr-p item)
     103           (let* ((label
     104                   (make-instance 'frame-label
     105                                  :string
     106                                  (let* ((value
     107                                          (inspector::line-n inspector index)))
     108                                    (if value
     109                                      (%lfun-name-string value)
     110                                      ":kernel")))))
     111             (setf (slot-value label 'controller) self
     112                   (slot-value label 'frame-number) index)
     113             label))
     114          ((our-frame-label-p self item)
     115           (let* ((frame-inspector
     116                   (or (frame-label-frame-inspector item)
     117                       (setf (frame-label-frame-inspector item)
     118                             (make-instance
     119                              'inspector::stack-frame-inspector
     120                              :frame-number (frame-label-number item)
     121                              :object (inspector::inspector-object inspector)
     122                              :update-line-count t)))))
     123             (make-instance 'frame-item
     124                            :frame-label item
     125                            :index index
     126                            :string
     127                            (let* ((ccl::*aux-vsp-ranges* (inspector::vsp-range inspector))
     128                                   (ccl::*aux-tsp-ranges* (inspector::tsp-range inspector)))
     129                              (with-output-to-string (s)
     130                                                     (multiple-value-bind (value label)
     131                                                         (inspector::line-n
     132                                                          frame-inspector
     133                                                          index)
     134                                                       (inspector::prin1-value
     135                                                        frame-inspector
     136                                                        s
     137                                                        value
     138                                                        label)))))))
     139          (t (break) (%make-nsstring "Huh?")))))
    110140
    111141(define-objc-method ((:id :outline-view view
Note: See TracChangeset for help on using the changeset viewer.