guile-gtk-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-GTK] Tiny patches


From: Ludovic Courtès
Subject: [Guile-GTK] Tiny patches
Date: Tue, 11 Dec 2007 16:09:52 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux)

Hi,

Attached are three small patches for Guile-GTK, each with an associated
comment.

I found it nice to have this minimal set of GTK bindings to port to
Maemo, especially for distributions that include relatively old versions
of GTK+.

Thanks,
Ludovic.

>From e066396b3a3485b781e5a5870c31cb7c0ecad4a5 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Ludovic=20Court=C3=A8s?= <address@hidden>
Date: Fri, 9 Nov 2007 18:51:58 +0100
Subject: [Guile-GTK] Use `const'-qualified string arguments when appropriate.

* gtk-support.c (sgtk_gdk_gc_values_fill,
  gdk_string_to_compound_text_interp): Use `const'-qualified string
  arguments.

* gtk-compat.c (gdk_color_parse_interp): Likewise.

* gtk-support.c (gtk_editable_insert_text_scm): Likewise.

* guile-gtk.c (sgtk_try_missing_type, sgtk_maybe_find_type_info,
  sgtk_scm2enum, sgtk_scm2flags, sgtk_senum2scm, sgtk_type_from_name,
  sgtk_find_object_info, gtk_class_new, sgtk_signal_emit,
  sgtk_register_glue): Likewise.

* guile-gtk.h (sgtk_type_info)[name]: Use `const char *'.
  Update function prototypes.
---
 gdk-support.c |    6 +++---
 gtk-compat.c  |    2 +-
 gtk-support.c |    2 +-
 guile-gtk.c   |   24 ++++++++++++------------
 guile-gtk.h   |   26 +++++++++++++-------------
 5 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/gdk-support.c b/gdk-support.c
index cbedeb8..ef08d2a 100644
--- a/gdk-support.c
+++ b/gdk-support.c
@@ -209,7 +209,7 @@ SCM_KEYWORD (kw_ts_y_origin,        "ts-y-origin");
 /* This is a separate function so it can be shared in the future by
    gtk-gc-get.  */
 GdkGCValuesMask
-sgtk_gdk_gc_values_fill (char *func_name, int argnum,
+sgtk_gdk_gc_values_fill (const char *func_name, int argnum,
                          GdkGCValues *values, SCM rest)
 {
   GdkGCValuesMask mask;
@@ -1835,8 +1835,8 @@ gdk_text_property_to_text_list_interp (GdkAtom encoding, 
gint format, SCM text)
 #undef FUNCNAME
 
 gint
-gdk_string_to_compound_text_interp (char *str, GdkAtom *encoding, gint *format,
-                                    SCM *textp)
+gdk_string_to_compound_text_interp (const char *str, GdkAtom *encoding,
+                                   gint *format, SCM *textp)
 {
   guchar *ctext;
   gint ret, length;
diff --git a/gtk-compat.c b/gtk-compat.c
index 29b0988..f880995 100644
--- a/gtk-compat.c
+++ b/gtk-compat.c
@@ -44,7 +44,7 @@ gtk_menu_popup_interp (GtkMenu *menu,
 }
 
 GdkColor*
-gdk_color_parse_interp (char *spec)
+gdk_color_parse_interp (const char *spec)
 {
   GdkColor color;
   return gdk_color_parse (spec, &color) ? gdk_color_copy (&color) : NULL;
diff --git a/gtk-support.c b/gtk-support.c
index 2d114fc..90c4e3e 100644
--- a/gtk-support.c
+++ b/gtk-support.c
@@ -167,7 +167,7 @@ gtk_style_base_gc (GtkStyle *style, GtkStateType state)
 
 int
 gtk_editable_insert_text_scm (GtkEditable *editable,
-                             gchar       *text,
+                             const gchar *text,
                              int          position)
 {
   gtk_editable_insert_text (editable, text, strlen (text), &position);
diff --git a/guile-gtk.c b/guile-gtk.c
index 78788f5..a8be81e 100644
--- a/guile-gtk.c
+++ b/guile-gtk.c
@@ -387,7 +387,7 @@ sgtk_register_type_infos_gtk (GtkTypeInfo **infos)
    entirely.  */
 
 static GtkType
-sgtk_try_missing_type (char *name)
+sgtk_try_missing_type (const char *name)
 {
   static sgtk_type_info missing[] = {
     {NULL, GTK_TYPE_NONE, NULL}
@@ -398,7 +398,7 @@ sgtk_try_missing_type (char *name)
     if (!strcmp (m->name, name))
       {
        GtkTypeInfo info = { NULL };
-       info.type_name = name;
+       info.type_name = (char *) name;
        return gtk_type_unique (m->type, &info);
       }
 
@@ -439,7 +439,7 @@ sgtk_maybe_find_type_info (GtkType type)
 {
   sgtk_type_info *info;
   type_infos *infos;
-  char *name;
+  const char *name;
   int i;
 
   for (i = 0; i < n_type_info_tab; i++)
@@ -1012,7 +1012,7 @@ sgtk_enum2scm (gint val, sgtk_enum_info *info)
 }
 
 gint
-sgtk_scm2enum (SCM obj, sgtk_enum_info *info, int pos, char *sname)
+sgtk_scm2enum (SCM obj, sgtk_enum_info *info, int pos, const char *sname)
 {
   int rval;
 
@@ -1072,7 +1072,7 @@ sgtk_flags2scm (gint val, sgtk_enum_info *info)
 }
 
 gint
-sgtk_scm2flags (SCM obj, sgtk_enum_info *info, int pos, char *sname)
+sgtk_scm2flags (SCM obj, sgtk_enum_info *info, int pos, const char *sname)
 {
   if (scm_is_pair (obj) || scm_is_null (obj))
     {
@@ -1163,7 +1163,7 @@ sgtk_valid_senum (SCM obj, sgtk_senum_info *info)
 }
 
 SCM
-sgtk_senum2scm (char *val, sgtk_senum_info *info)
+sgtk_senum2scm (const char *val, sgtk_senum_info *info)
 {
   int i;
   for (i = 0; i < info->n_literals; i++)
@@ -1454,7 +1454,7 @@ all_type_infos_find (const char *name)
    we search among the type names we have in all_type_infos and initialize
    the type with the init_func in our sgtk_type_info.  */
 GtkType
-sgtk_type_from_name (char *name)
+sgtk_type_from_name (const char *name)
 {
   GType type = g_type_from_name (name);
   if (type == GTK_TYPE_INVALID)
@@ -2676,7 +2676,7 @@ sgtk_gtk_target_entry_free (GtkTargetEntry* entry)
 /* The SCM_PROC for the exported functions is in gtk-support.c to have
    it be snarfed for sgtk_init_gtk_support. */
 
-sgtk_object_info *sgtk_find_object_info (char *name);
+sgtk_object_info *sgtk_find_object_info (const char *name);
 
 sgtk_object_info *
 sgtk_find_object_info_from_type (GtkType type)
@@ -2690,7 +2690,7 @@ sgtk_find_object_info_from_type (GtkType type)
 }
 
 sgtk_object_info *
-sgtk_find_object_info (char *name)
+sgtk_find_object_info (const char *name)
 {
   GtkType type, parent;
   sgtk_object_info *info;
@@ -2982,7 +2982,7 @@ sgtk_gtk_object_get (SCM scm_obj, SCM argsym)
 /* Creating new object classes */
 
 GtkType
-gtk_class_new (GtkType parent_type, gchar *name)
+gtk_class_new (GtkType parent_type, const gchar *name)
 {
   GTypeInfo *info;
   GTypeQuery parent_query;
@@ -3073,7 +3073,7 @@ gtk_signal_new_generic (const gchar     *name,
 }
 
 SCM
-sgtk_signal_emit (GObject *obj, char *name, SCM scm_params)
+sgtk_signal_emit (GObject *obj, const char *name, SCM scm_params)
 {
   static char func_name[] = "gtk-signal-emit";
   
@@ -3189,7 +3189,7 @@ sgtk_standalone_p ()
 }
 
 void
-sgtk_register_glue (char *name, void (*func)(void))
+sgtk_register_glue (const char *name, void (*func)(void))
 {
   scm_c_register_extension (NULL, name, (void (*)(void *))func, NULL);
 }
diff --git a/guile-gtk.h b/guile-gtk.h
index 89d0d79..d28a668 100644
--- a/guile-gtk.h
+++ b/guile-gtk.h
@@ -25,7 +25,7 @@
 typedef guint32 sgtk_timestamp;
 
 typedef struct _sgtk_type_info {
-  char *name;
+  const char *name;
   GtkType type;
   SCM (*conversion) (SCM);
   GtkType (*init_func) ();
@@ -114,7 +114,7 @@ SCM sgtk_make_cblk (void *p, size_t len);
 void sgtk_register_type_infos (sgtk_type_info **infos);
 void sgtk_register_type_infos_gtk (GtkTypeInfo **infos);
 sgtk_type_info *sgtk_get_type_info (guint type_seqno);
-GtkType sgtk_type_from_name (char *name);
+GtkType sgtk_type_from_name (const char *name);
 
 SCM sgtk_wrap_gtkobj (GObject *obj);
 SCM sgtk_wrap_gtkobj_nocopy (GObject *obj);
@@ -127,14 +127,14 @@ int sgtk_enum_flags_bin_search (SCM key, sgtk_enum_info 
*info, int *rval);
 
 int sgtk_valid_enum (SCM obj, sgtk_enum_info*);
 SCM sgtk_enum2scm (gint val, sgtk_enum_info*);
-gint sgtk_scm2enum (SCM obj, sgtk_enum_info*, int pos, char *sname);
+gint sgtk_scm2enum (SCM obj, sgtk_enum_info*, int pos, const char *sname);
 
 int sgtk_valid_flags (SCM obj, sgtk_enum_info*);
 SCM sgtk_flags2scm (gint val, sgtk_enum_info*);
-gint sgtk_scm2flags (SCM obj, sgtk_enum_info*, int pos, char *sname);
+gint sgtk_scm2flags (SCM obj, sgtk_enum_info*, int pos, const char *sname);
 
 int sgtk_valid_senum (SCM obj, sgtk_senum_info*);
-SCM sgtk_senum2scm (char *val, sgtk_senum_info*);
+SCM sgtk_senum2scm (const char *val, sgtk_senum_info*);
 char *sgtk_scm2senum (SCM obj, sgtk_senum_info*);
 
 SCM sgtk_boxed2scm (gpointer ptr, sgtk_boxed_info*, int copyp);
@@ -232,7 +232,7 @@ void sgtk_scm2ret (GtkArg *a, SCM obj);
 void sgtk_throw_gerror (const char *func_name, GError *gerr);
 
 sgtk_object_info *sgtk_find_object_info_from_type (GtkType type);
-sgtk_object_info *sgtk_find_object_info (char *name);
+sgtk_object_info *sgtk_find_object_info (const char *name);
 
 SCM sgtk_color_conversion (SCM color);
 SCM sgtk_font_conversion (SCM color);
@@ -241,7 +241,7 @@ void sgtk_set_standalone (int flag);
 int sgtk_is_standalone ();
 SCM sgtk_standalone_p ();
 
-void sgtk_register_glue (char *name, void (*func)(void));
+void sgtk_register_glue (const char *name, void (*func)(void));
 #define SGTK_REGISTER_GLUE(func) sgtk_register_glue (#func, func)
 
 void sgtk_init_gdk_support (void);
@@ -339,7 +339,7 @@ char *gdk_wcstombs_interp (GdkWChar src[], int count);
 
 SCM gdk_mbstowcs_interp (const char *src);
 
-GdkGCValuesMask sgtk_gdk_gc_values_fill (char *func_name, int argnum,
+GdkGCValuesMask sgtk_gdk_gc_values_fill (const char *func_name, int argnum,
                                          GdkGCValues *values, SCM rest);
 GdkGC *gdk_gc_new_with_values_interp (GdkWindow *window, SCM rest);
 SCM gdk_gc_get_values_interp (GdkGC *gc);
@@ -347,7 +347,7 @@ SCM gdk_gc_get_values_interp (GdkGC *gc);
 guint32 gdk_get_leader_window_id ();
 
 int gtk_editable_insert_text_scm (GtkEditable *editable,
-                                  gchar *text, int position);
+                                  const gchar *text, int position);
 
 void gdk_draw_text_interp (GdkDrawable *drawable, GdkFont *font, GdkGC *gc,
                           gint x, gint y, SCM text);
@@ -376,14 +376,14 @@ void gtk_menu_popup_interp (GtkMenu *menu,
                            guint32 activate_time);
 
 GdkColor *gdk_color_new (void);
-GdkColor *gdk_color_parse_interp (char *spec);
+GdkColor *gdk_color_parse_interp (const char *spec);
 GdkColor *gtk_style_get_white_interp (GtkStyle *style);
 
 void gtk_list_append_item (GtkList *list, GtkListItem *item);
 void gtk_list_prepend_item (GtkList *list, GtkListItem *item);
 
 gboolean gtk_type_get_info (GtkType type, GtkTypeInfo *info);
-GtkType gtk_class_new (GtkType parent_type, gchar *name);
+GtkType gtk_class_new (GtkType parent_type, const gchar *name);
 guint
 gtk_signal_new_generic (const gchar     *name,
                        GtkSignalRunType signal_flags,
@@ -391,7 +391,7 @@ gtk_signal_new_generic (const gchar     *name,
                        GtkType          return_type,
                        guint            nparams,
                        GtkType         *params);
-SCM sgtk_signal_emit (GObject *obj, char *name, SCM scm_args);
+SCM sgtk_signal_emit (GObject *obj, const char *name, SCM scm_args);
 void gtk_signal_set_class_function_full (GtkType            type,
                                         const gchar       *signal,
                                         GtkSignalFunc      func,
@@ -505,7 +505,7 @@ void gdk_property_change_interp (GdkWindow *window,
 
 SCM gdk_text_property_to_text_list_interp (GdkAtom encoding, gint format,
                                           SCM text);
-gint gdk_string_to_compound_text_interp (char *str, GdkAtom *encoding,
+gint gdk_string_to_compound_text_interp (const char *str, GdkAtom *encoding,
                                          gint *format, SCM *textp);
 SCM gdk_property_get_interp (GdkWindow *window, GdkAtom property, GdkAtom type,
                             gulong offset, gulong length, int pdelete,
-- 
1.5.3.4

>From 7012b5156a58761bf2ee8149662296f311eed75a Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Ludovic=20Court=C3=A8s?= <address@hidden>
Date: Sat, 10 Nov 2007 00:50:07 +0100
Subject: [Guile-GTK] Correctly honor `conditionalize' options.

* build-guile-gtk-2.0 (emits-funcs)[emit-func]: Surround
  `scm_c_define_gsubr ()' with `conditionalize-start' and
  `conditionalize-end'.
  [emit-object-predicate]: New OPTS parameter.  Inherit options from the
  object so that `conditionalize' in particular is honored.  Update
  callers.
---
 build-guile-gtk-2.0 |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/build-guile-gtk-2.0 b/build-guile-gtk-2.0
index 9e94754..d516b76 100644
--- a/build-guile-gtk-2.0
+++ b/build-guile-gtk-2.0
@@ -957,9 +957,11 @@ exec guile -s $0 $*
       (@ "static char s_~a[] = \"~a\";~%~%" 
         fullname (if scm-name scm-name (scmname fname)))
       (add-init
-       (@@ "scm_c_define_gsubr (s_~a, ~a, ~a, ~a, sgtk_~a);"
+       (@@ "~ascm_c_define_gsubr (s_~a, ~a, ~a, ~a, sgtk_~a);~%~a"
+           (with-output-to-string (lambda () (conditionalize-start opts)))
           fullname (if n-hack 9 n-preal) n-opt (if (or n-hack (= n-rest 1)) 1 
0)
-          fullname))
+          fullname
+           (with-output-to-string (lambda () (conditionalize-end opts)))))
       (@ "SCM~%")
       (@ "sgtk_~a (~a)~%" 
         fullname
@@ -1117,13 +1119,13 @@ exec guile -s $0 $*
                      name (syllables->string cparms ", "))))
       (set! cur-protection #f)))
 
-  (define (emit-object-predicate sym name)
+  (define (emit-object-predicate sym name opts)
     (let ((type (lookup-type sym)))
       (if (not (imported-type? sym))
-         (emit-func 'bool (append name '("p")) '((SCM obj)) 
-                    (string-append* (scmname name) "?") '()
-                    (lambda (cret cparms)
-                      (@ "~a = ~a;" cret (type-isa type (car cparms))))))))
+          (emit-func 'bool (append name '("p")) '((SCM obj)) 
+                     (string-append* (scmname name) "?") opts
+                     (lambda (cret cparms)
+                       (@ "~a = ~a;" cret (type-isa type (car cparms))))))))
 
   (define (emit-field-accessors typesym typename fields)
     (define (emit-accessor field)
@@ -1622,11 +1624,11 @@ exec guile -s $0 $*
                                 (emit-field-accessors name canonical fields))
                               (emit-converter-if-defined name canonical
                                                          options #f)
-                              (emit-object-predicate name canonical))
+                              (emit-object-predicate name canonical options))
                              ((define-boxed-union)
                               (register-boxed-union-converter name
                                                               (caddr form))
-                              (emit-object-predicate name canonical))
+                              (emit-object-predicate name canonical options))
                              ((define-ptype)
                               (register-ptype-converter name canonical
                                                         options)
@@ -1638,7 +1640,7 @@ exec guile -s $0 $*
                              ((define-object)
                               (register-object-type name canonical options)
                               (conditionalize-start options)
-                              (emit-object-predicate name canonical)
+                              (emit-object-predicate name canonical options)
                               (let ((fields (get-opt options
                                                      'fields '())))
                                 (emit-field-accessors name canonical fields))
-- 
1.5.3.4

>From b1c04023153041779252dc6613aa4566f60cfd2a Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Ludovic=20Court=C3=A8s?= <address@hidden>
Date: Sat, 10 Nov 2007 01:01:26 +0100
Subject: [Guile-GTK] Conditionalize `gtk_link_button_set_uri_hook ()'.

* configure.ac: Check for `gtk_link_button_set_uri_hook ()'.

* gtk-2.0.defs (gtk_link_button_set_uri_hook_interp): Conditionalize.

* gtk-support.c (gtk_link_button_set_uri_hook_interp): Enclose in
  `#ifdef HAVE_GTK_LINK_BUTTON_SET_URI_HOOK'.
---
 configure.ac  |    3 ++-
 gtk-2.0.defs  |    3 ++-
 gtk-support.c |    4 ++++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index bb6ffa9..8771ccc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -145,9 +145,10 @@ CPPFLAGS="$GUILE_CFLAGS $CPPFLAGS"
 # Reasons for testing:
 #     g_object_ref_sink - not in glib 2.6
 #     gtk_link_button_new - new in gtk 2.10
+#     gtk_link_button_set_uri_hook - new in gtk 2.10
 #     mallinfo - not available on ancient systems
 #
-AC_CHECK_FUNCS(g_object_ref_sink gtk_link_button_new mallinfo 
scm_c_issue_deprecation_warning)
+AC_CHECK_FUNCS(g_object_ref_sink gtk_link_button_new 
gtk_link_button_set_uri_hook mallinfo scm_c_issue_deprecation_warning)
 
 AC_CHECK_HEADERS(malloc.h libguile/deprecation.h)
 
diff --git a/gtk-2.0.defs b/gtk-2.0.defs
index 3531cfd..332c810 100644
--- a/gtk-2.0.defs
+++ b/gtk-2.0.defs
@@ -5305,7 +5305,8 @@
 
 (define-func gtk_link_button_set_uri_hook_interp
   none
-  ((SCM func)))
+  ((SCM func))
+  (conditionalize "HAVE_GTK_LINK_BUTTON_SET_URI_HOOK"))
 
 ;; Options
 
diff --git a/gtk-support.c b/gtk-support.c
index 90c4e3e..c95e15f 100644
--- a/gtk-support.c
+++ b/gtk-support.c
@@ -298,6 +298,8 @@ gtk_about_dialog_set_url_hook_interp (SCM func)
        (GDestroyNotify) scm_gc_unprotect_object);
 }
 
+#ifdef HAVE_GTK_LINK_BUTTON_SET_URI_HOOK
+
 /* GtkLinkButtonUriFunc and GtkAboutDialogActivateLinkFunc are the same
    except for a pointer type, so can use
    sgtk_about_dialog_activate_link_marshal here.  */
@@ -313,6 +315,8 @@ gtk_link_button_set_uri_hook_interp (SCM func)
        (GDestroyNotify) scm_gc_unprotect_object);
 }
 
+#endif /* HAVE_GTK_LINK_BUTTON_SET_URI_HOOK */
+
 
 
 /* These SCM_PROCs are here to have them initialized in
-- 
1.5.3.4


reply via email to

[Prev in Thread] Current Thread [Next in Thread]