chiark / gitweb /
Added multi-threading support
[clg] / gtk / gtk.lisp
index 6b8b049505dfb380b45d842f3111abc8eb908232..f054449cfc6652899b1605ac3862e3e509a8ca61 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: gtk.lisp,v 1.56 2006-02-26 21:19:02 espen Exp $
+;; $Id: gtk.lisp,v 1.61 2006-04-25 13:37:29 espen Exp $
 
 
 (in-package "GTK")
@@ -45,7 +45,7 @@ (defun gtk-version ()
       (format nil "Gtk+ v~A.~A.~A" major minor micro))))
 
 (defun clg-version ()
-  "clg 0.91 version")
+  "clg 0.92.1")
 
 
 ;;;; Initalization
@@ -73,6 +73,29 @@ (defun clg-init (&optional display)
       (setq *max-event-to-sec* 0)
       (setq *max-event-to-usec* 1000))))
 
+#+sbcl   
+(defun clg-init-with-threading (&optional display)
+  "Initializes the system and starts the event handling"
+  (unless (gdk:display-get-default)
+    (gdk:gdk-init)
+    (gdk:threads-set-lock-functions)
+    (unless (gtk-init)
+      (error "Initialization of GTK+ failed."))
+    (sb-thread:make-thread 
+     #'(lambda () 
+        (gdk:display-open display)
+        (gdk:with-global-lock (main)))
+     :name "gtk event loop")))
+
+
+;;; Generic functions 
+
+(defgeneric add-to-radio-group (item1 item2))
+(defgeneric activate-radio-widget (item))
+(defgeneric (setf tool-item-tip-text) (tip-text tool-item))
+(defgeneric (setf tool-item-tip-private) (tip-private tool-item))
+
+
 
 ;;; Misc
 
@@ -2295,16 +2318,64 @@ (defbinding tooltips-get-info-from-tip-window () boolean
 
 ;;; Resource Files
 
-(defbinding rc-add-default-file (filename) nil
-  ((namestring (truename filename)) string))
+(defbinding rc-get-style () style
+  (widget widget))
+
+(defbinding rc-get-style-by-paths (&key path class-path class) style
+  (path (or null string))
+  (class-path (or null string))
+  (class gtype))
 
-(defbinding rc-parse (filename) nil
-  ((namestring (truename filename)) string))
+(defbinding rc-parse () nil
+  (filename pathname))
 
 (defbinding rc-parse-string () nil
   (rc-string string))
 
-(defbinding rc-reparse-all () nil)
+(defbinding %rc-reparse-all () boolean)
 
-(defbinding rc-get-style () style
-  (widget widget))
+(defbinding %rc-reparse-all-for-settings () boolean
+  (settings settings)
+  (force-load-p boolean))
+
+(defun rc-reparse-all (&optional setting force-load-p)
+  (if setting
+      (%rc-reparse-all-for-settings setting force-load-p)
+    (%rc-reparse-all)))
+
+(defbinding rc-reset-styles () nil
+  (settings settings))
+
+(defbinding rc-add-default-file () nil
+  (filename pathname))
+
+(defbinding rc-get-default-files ()
+    (copy-of (null-terminated-vector (copy-of string))))
+
+(defbinding rc-get-module-dir () string)
+
+(defbinding rc-get-im-module-path () string)
+
+(defbinding rc-get-im-module-file () string)
+
+(defbinding rc-get-theme-dir () string)
+
+
+;;; Settings
+
+(defbinding (settings-get "gtk_settings_get_for_screen")
+    (&optional (screen (gdk:display-get-default-screen))) settings
+  (screen gdk:screen))
+
+
+;;; Plug and Socket
+
+(defbinding socket-add-id () nil
+  (socket socket)
+  (id gdk:native-window))
+
+(defbinding %plug-new () pointer
+  (id gdk:native-window))
+
+(defmethod allocate-foreign ((plug plug) &key id)
+  (%plug-new (or id 0)))