/usr/share/guile-gnome-2/gnome/glib.scm is in guile-gnome2-glib 2.16.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | ;; guile-gnome
;; Copyright (C) 2003,2004 Andy Wingo <wingo at pobox dot com>
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of
;; the License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, contact:
;;
;; Free Software Foundation Voice: +1-617-542-5942
;; 59 Temple Place - Suite 330 Fax: +1-617-542-2652
;; Boston, MA 02111-1307, USA gnu@gnu.org
;;; Commentary:
;;
;;A GLib 2.0 wrapper for Guile (mainly main loop-related pieces).
;;
;;; Code:
(define-module (gnome glib)
#:use-module (gnome gobject)
#:use-module (gnome gw glib)
#:use-module (gnome gw gobject)
#:use-module (gnome gw support modules)
#:use-module (oop goops)
#:re-export (g-source-set-closure))
(re-export-modules (gnome gw glib))
(define-public (g-idle-add proc)
(let ((closure (make <gclosure>
#:return-type <gboolean>
#:func proc))
(source (g-idle-source-new)))
(g-source-set-closure source closure)
(g-source-set-priority source 200) ; G_PRIORITY_DEFAULT_IDLE
(g-source-attach source #f)))
(define-public (g-timeout-add milliseconds proc)
(let ((closure (make <gclosure>
#:return-type <gboolean>
#:func proc))
(source (g-timeout-source-new milliseconds)))
(g-source-set-closure source closure)
(g-source-set-priority source 200) ; G_PRIORITY_DEFAULT_IDLE
(g-source-attach source #f)))
(use-modules (gnome gobject event-repl))
;; taken from gnome-guile 0.10.0
(define-public (g-main-loop-console-repl)
(define main-loop (g-main-loop-new #f #f))
;; for some reason, this doesn't work with readline... patches welcome
;; :)
(define inport (fdes->inport 1))
(define outport (current-output-port))
(define unspecified (if #f #f))
(define (prompt)
(display "gtk> " outport)
(force-output outport))
(define (print val)
(cond ((not (eq? unspecified val))
(write val outport)
(newline outport)))
(prompt))
(define (report data)
(repl-display-backtrace data outport)
(repl-display-error data outport)
(prompt))
(define (nonblocking-read port)
(let loop ((res '()))
(if (char-ready? port)
(let ((ch (read-char port)))
(if (eof-object? ch)
(if (null? res)
ch
(apply string (reverse res)))
(loop (cons ch res))))
(apply string (reverse res)))))
(let ((repl (make-event-repl read primitive-eval print report)))
(g-timeout-add 50
(lambda ()
(let ((str (nonblocking-read inport)))
(if (eof-object? str)
(g-main-loop-quit main-loop)
(repl-input repl str))
#t)))
(prompt)
(g-main-loop-run main-loop)))
(define-public (g-error-domain error)
(car error))
(define-public (g-error-code error)
(caddr error))
(define-public (g-error-message error)
(caddr error))
|