;; License along with this library; if not, write to the Free Software
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-;; $Id: gtk.lisp,v 1.17 2004-11-07 17:55:29 espen Exp $
+;; $Id: gtk.lisp,v 1.20 2004-12-04 00:34:49 espen Exp $
(in-package "GTK")
;;; Gtk version
-(defbinding check-version () string
+(defbinding check-version () (copy-of string)
(required-major unsigned-int)
(required-minor unsigned-int)
(required-micro unsigned-int))
(format nil "Gtk+ v~A.~A" major minor)
(format nil "Gtk+ v~A.~A.~A" major minor micro))))
-(defbinding get-default-language () string)
+(defbinding get-default-language () (copy-of pango:language))
;;;; Initalization
(unless model
(setf
(combo-box-model combo-box)
- (make-instance 'list-store :columns '(string)))
+ (make-instance 'list-store :column-types '(string)))
(unless (typep combo-box 'combo-box-entry)
(let ((cell (make-instance 'cell-renderer-text)))
(cell-layout-pack combo-box cell :expand t)
;;; Window
+(defmethod initialize-instance ((window window) &rest initargs &key accel-group)
+ (declare (ignore accel-group))
+ (call-next-method)
+ (mapc #'(lambda (accel-group)
+ (window-add-accel-group window accel-group))
+ (get-all initargs :accel-group)))
+
+
(defbinding window-set-wmclass () nil
(window window)
(wmclass-name string)
;(defbinding window-set-geometry-hints)
-(defbinding window-list-toplevels () (glist window))
+(defbinding window-list-toplevels () (glist (copy-of window))
+ "Returns a list of all existing toplevel windows.")
(defbinding window-add-mnemonic (window key target) nil
(window window)
((%notebook-child notebook page) widget))
(defbinding (notebook-tab-label-text "gtk_notebook_get_tab_label_text")
- (notebook page) string
+ (notebook page) (copy-of string)
(notebook notebook)
((%notebook-child notebook page) widget))
((%notebook-child notebook page) widget))
(defbinding (notebook-menu-label-text "gtk_notebook_get_menu_label_text")
- (notebook page) string
+ (notebook page) (copy-of string)
(notebook notebook)
((%notebook-child notebook page) widget))
;;; Stock items
-(defbinding stock-lookup () boolean
- (stock-id string)
- (stock-item stock-item :out))
-
+(defbinding %stock-item-copy () pointer
+ (location pointer))
+
+(defbinding %stock-item-free () nil
+ (location pointer))
+(defmethod reference-foreign ((class (eql (find-class 'stock-item))) location)
+ (%stock-item-copy location))
+
+(defmethod unreference-foreign ((class (eql (find-class 'stock-item))) location)
+ (%stock-item-free location))
+
+(defbinding stock-add (stock-item) nil
+ (stock-item stock-item)
+ (1 unsigned-int))
+
+(defbinding stock-list-ids () (gslist string))
+
+(defbinding %stock-lookup () boolean
+ (stock-id string)
+ (location pointer))
+
+(defun stock-lookup (stock-id)
+ (let ((location
+ (allocate-memory (proxy-instance-size (find-class 'stock-item)))))
+ (unwind-protect
+ (when (%stock-lookup stock-id location)
+ (ensure-proxy-instance 'stock-item (%stock-item-copy location)))
+ (deallocate-memory location))))
;;; Tooltips