;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-;; $Id: gtktree.lisp,v 1.19 2006/04/26 12:13:38 espen Exp $
+;; $Id: gtktree.lisp,v 1.22 2006/06/23 12:46:26 espen Exp $
(in-package "GTK")
(location pointer))
(defun %make-tree-path (path)
- (let ((c-vector (make-c-vector 'int (length path) :content path))
- (location (allocate-memory (+ (size-of 'int) (size-of 'pointer)))))
+ (let* ((c-vector (make-c-vector 'int (length path) :content path))
+ (pointer-offset (adjust-offset (size-of 'int) 'pointer))
+ (location (allocate-memory (+ pointer-offset (size-of 'pointer)))))
(funcall (writer-function 'int) (length path) location)
- (funcall (writer-function 'pointer) c-vector location (size-of 'int))
+ (funcall (writer-function 'pointer) c-vector location pointer-offset)
location))
(defun %tree-path-to-vector (location)
(map-c-vector 'vector #'identity indices 'int depth))))
(defmacro %with-tree-path ((var path) &body body)
- (let ((vector-offset (+ (size-of 'int) (size-of 'pointer))))
- `(with-memory (,var (+ ,(size-of 'int) ,(size-of 'pointer) (* ,(size-of 'int) (length ,path))))
+ (let* ((pointer-offset (adjust-offset (size-of 'int) 'pointer))
+ (vector-offset (adjust-offset (+ pointer-offset (size-of 'pointer)) 'int)))
+ `(with-memory (,var (+ ,vector-offset (* ,(size-of 'int) (length ,path))))
(funcall (writer-function 'int) (length ,path) ,var)
- (setf (ref-pointer ,var ,(size-of 'int)) (pointer+ ,var ,vector-offset))
+ (setf (ref-pointer ,var ,pointer-offset) (pointer+ ,var ,vector-offset))
(make-c-vector 'int (length ,path) :content ,path :location (pointer+ ,var ,vector-offset))
,@body)))
#'(lambda (location &optional (offset 0))
(%tree-path-free (ref-pointer location offset))))
+(defun ensure-tree-path (path)
+ (etypecase path
+ (string (coerce (clg-utils:split-string path :delimiter #\:) 'vector))
+ (vector path)))
+
(defbinding %tree-row-reference-new () pointer
(model tree-model)
column
(column-index (icon-view-model icon-view) column)) int))
+ (defbinding %%icon-view-get-text-column () int
+ (icon-view icon-view))
+
+ (defun %icon-view-get-text-column (icon-view)
+ (column-index
+ (icon-view-model icon-view)
+ (%%icon-view-get-text-column icon-view)))
+
+ (defun %icon-view-text-column-boundp (icon-view)
+ (not (eql (%%icon-view-get-text-column icon-view) -1)))
+
+
(defbinding %icon-view-set-markup-column (column icon-view) nil
(icon-view icon-view)
((if (integerp column)
column
(column-index (icon-view-model icon-view) column)) int))
+ (defbinding %%icon-view-get-markup-column () int
+ (icon-view icon-view))
+
+ (defun %icon-view-get-markup-column (icon-view)
+ (column-index
+ (icon-view-model icon-view)
+ (%%icon-view-get-markup-column icon-view)))
+
+ (defun %icon-view-markup-column-boundp (icon-view)
+ (not (eql (%%icon-view-get-markup-column icon-view) -1)))
+
+
(defbinding %icon-view-set-pixbuf-column (column icon-view) nil
(icon-view icon-view)
((if (integerp column)
column
(column-index (icon-view-model icon-view) column)) int)))
+ (defbinding %%icon-view-get-pixbuf-column () int
+ (icon-view icon-view))
+
+ (defun %icon-view-get-pixbuf-column (icon-view)
+ (column-index
+ (icon-view-model icon-view)
+ (%%icon-view-get-pixbuf-column icon-view)))
+
+ (defun %icon-view-pixbuf-column-boundp (icon-view)
+ (not (eql (%%icon-view-get-pixbuf-column icon-view) -1)))
+
+
#?(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0")
(progn
(defbinding icon-view-get-item-at-pos () boolean