[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: gaf.git: branch: master updated (1.5.0-20080706-70-g713225e)



The branch, master has been updated
       via  713225e719fa1bab8bc4b31dfc3cd50ea6c44f4e (commit)
       via  cae8edda94f240d5bbdae08d6f8b67a037e0e6ba (commit)
       via  57fc3a940f9609b45d26cb73b696ffcd1df15c58 (commit)
       via  61255c9b68aeae2ae845eea82babf445036a72f1 (commit)
       via  da5b6b6ae5848d988c22ed5528917bf050a54a2d (commit)
      from  1e247aeb7a4f568578bd8612f886d7f64f24c858 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


=========
 Summary
=========

 gschem/include/gschem_struct.h |    2 +
 gschem/include/prototype.h     |  544 ++++++++++++++++++++--------------------
 gschem/lib/system-gschemrc.in  |    3 +
 gschem/src/g_keys.c            |    5 +-
 gschem/src/g_register.c        |    1 +
 gschem/src/i_basic.c           |    2 +-
 gschem/src/i_callbacks.c       |   43 ++--
 gschem/src/x_dialog.c          |    4 +-
 gschem/src/x_event.c           |    4 +-
 gschem/src/x_pagesel.c         |    2 +-
 gschem/src/x_window.c          |   22 ++
 11 files changed, 337 insertions(+), 295 deletions(-)


=================
 Commit Messages
=================

commit 713225e719fa1bab8bc4b31dfc3cd50ea6c44f4e
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Tue Jul 8 02:15:46 2008 +0200

    Add the magic colon to the global keymap.

:100644 100644 d6166a2... 809ca42... M	gschem/lib/system-gschemrc.in

commit cae8edda94f240d5bbdae08d6f8b67a037e0e6ba
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Tue Jul 8 01:13:49 2008 +0200

    Use g_scm_c_eval_string_protected() so we don't crash on bad forms.

:100644 100644 1202d2d... 0259843... M	gschem/src/x_window.c

commit 57fc3a940f9609b45d26cb73b696ffcd1df15c58
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Mon Jul 7 04:46:19 2008 +0200

    Invoke scheme forms from a command prompt below the drawing area.

:100644 100644 1d5fa93... c238d7e... M	gschem/include/gschem_struct.h
:100644 100644 dc417da... 89ecf24... M	gschem/include/prototype.h
:100644 100644 b31a349... d6166a2... M	gschem/lib/system-gschemrc.in
:100644 100644 1fc3eed... f8b3512... M	gschem/src/g_keys.c
:100644 100644 a1b8818... 7fe01cf... M	gschem/src/g_register.c
:100644 100644 f4f57f0... 7bd559d... M	gschem/src/i_callbacks.c
:100644 100644 d559499... 1202d2d... M	gschem/src/x_window.c

commit 61255c9b68aeae2ae845eea82babf445036a72f1
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Sat Aug 2 12:11:19 2008 +0100

    Allow key bindings to accept a REST argument list.
    
    In order to support adding optional arguments to key bindings, the
    function signature of ALL the bindings has to change.
    
    Supply REST (if available) or SCM_EOL (no extra arguments) where the
    caller is a C function.
    
    Conflicts merged by Peter B:
    
    	gschem/include/prototype.h
    	gschem/src/x_event.c

:100644 100644 98b0319... dc417da... M	gschem/include/prototype.h
:100644 100644 20042a9... 1fc3eed... M	gschem/src/g_keys.c
:100644 100644 7022c7e... f4f57f0... M	gschem/src/i_callbacks.c
:100644 100644 eb2f45e... 728aec3... M	gschem/src/x_dialog.c
:100644 100644 604ac3b... c675f3d... M	gschem/src/x_event.c
:100644 100644 ef29a6e... 5c2e01a... M	gschem/src/x_pagesel.c

commit da5b6b6ae5848d988c22ed5528917bf050a54a2d
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Thu Jan 17 03:12:39 2008 +0200

    Desensitise function signature to function pointer parameters.
    
    func_ptr gets assigned to last_callback anyway, which itself
    does not specify any formal parameters.

:100644 100644 482a799... 98b0319... M	gschem/include/prototype.h
:100644 100644 160de2c... 2c43eb2... M	gschem/src/i_basic.c

=========
 Changes
=========

commit 713225e719fa1bab8bc4b31dfc3cd50ea6c44f4e
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Tue Jul 8 02:15:46 2008 +0200

    Add the magic colon to the global keymap.

diff --git a/gschem/lib/system-gschemrc.in b/gschem/lib/system-gschemrc.in
index d6166a2..809ca42 100644
--- a/gschem/lib/system-gschemrc.in
+++ b/gschem/lib/system-gschemrc.in
@@ -1317,6 +1317,7 @@
     ("y" . buffer-keymap)
     ("z" . view-zoom-in-hotkey)
     ("period" . repeat-last-command)
+    ("Shift colon" . edit-invoke-macro)
     ("comma" . misc-misc)
     ("equal" . misc-misc2)
     ("Shift plus" . misc-misc3)

commit cae8edda94f240d5bbdae08d6f8b67a037e0e6ba
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Tue Jul 8 01:13:49 2008 +0200

    Use g_scm_c_eval_string_protected() so we don't crash on bad forms.

diff --git a/gschem/src/x_window.c b/gschem/src/x_window.c
index 1202d2d..0259843 100644
--- a/gschem/src/x_window.c
+++ b/gschem/src/x_window.c
@@ -281,7 +281,7 @@ static void x_window_invoke_macro(GtkEntry *entry, void *userdata)
 {
   GSCHEM_TOPLEVEL *w_current = userdata;
 
-  scm_c_eval_string(gtk_entry_get_text(entry));
+  g_scm_c_eval_string_protected(gtk_entry_get_text(entry));
   gtk_widget_hide(w_current->macro_box);
   gtk_widget_grab_focus(w_current->drawing_area);
 }

commit 57fc3a940f9609b45d26cb73b696ffcd1df15c58
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Mon Jul 7 04:46:19 2008 +0200

    Invoke scheme forms from a command prompt below the drawing area.

diff --git a/gschem/include/gschem_struct.h b/gschem/include/gschem_struct.h
index 1d5fa93..c238d7e 100644
--- a/gschem/include/gschem_struct.h
+++ b/gschem/include/gschem_struct.h
@@ -18,6 +18,8 @@ struct st_gschem_toplevel {
   GtkObject *h_adjustment;
   GtkObject *v_adjustment;
 
+  GtkWidget *macro_box;
+  GtkWidget *macro_entry;
   GtkWidget *left_label;
   GtkWidget *middle_label;
   GtkWidget *right_label;
diff --git a/gschem/include/prototype.h b/gschem/include/prototype.h
index dc417da..89ecf24 100644
--- a/gschem/include/prototype.h
+++ b/gschem/include/prototype.h
@@ -81,6 +81,7 @@ SCM g_keys_edit_unlock(SCM rest);
 SCM g_keys_edit_linetype(SCM rest);
 SCM g_keys_edit_filltype(SCM rest);
 SCM g_keys_edit_translate(SCM rest);
+SCM g_keys_edit_invoke_macro(SCM rest);
 SCM g_keys_edit_embed(SCM rest);
 SCM g_keys_edit_unembed(SCM rest);
 SCM g_keys_edit_update(SCM rest);
@@ -342,6 +343,7 @@ void i_callback_edit_mirror_hotkey(SCM rest, gpointer data, guint callback_actio
 void i_callback_edit_lock(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_edit_unlock(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_edit_translate(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_invoke_macro(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_edit_embed(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_edit_unembed(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_edit_update(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
diff --git a/gschem/lib/system-gschemrc.in b/gschem/lib/system-gschemrc.in
index b31a349..d6166a2 100644
--- a/gschem/lib/system-gschemrc.in
+++ b/gschem/lib/system-gschemrc.in
@@ -1188,6 +1188,7 @@
     ("w" . edit-linetype)
     ("f" . edit-filltype)
     ("t" . edit-translate)
+    (":" . edit-invoke-macro)
     ("b" . edit-embed)
     ("u" . edit-unembed)
     ("p" . edit-update)
@@ -1406,6 +1407,7 @@
            ("Line Width & Type..." edit-linetype        edit-linetype)
            ("Fill Type..."       edit-filltype          edit-filltype)
            ("Symbol Translate..." edit-translate        edit-translate)
+           ("Invoke Macro"       edit-invoke-macro      edit-invoke-macro)
            ("Embed Component/Picture"    edit-embed             edit-embed)
            ("Unembed Component/Picture"  edit-unembed           edit-unembed)
            ("Update Component"   edit-update            edit-update)
diff --git a/gschem/src/g_keys.c b/gschem/src/g_keys.c
index 1fc3eed..f8b3512 100644
--- a/gschem/src/g_keys.c
+++ b/gschem/src/g_keys.c
@@ -247,6 +247,7 @@ DEFINE_G_KEYS(edit_unlock)
 DEFINE_G_KEYS(edit_linetype)
 DEFINE_G_KEYS(edit_filltype)
 DEFINE_G_KEYS(edit_translate)
+DEFINE_G_KEYS(edit_invoke_macro)
 DEFINE_G_KEYS(edit_embed)
 DEFINE_G_KEYS(edit_unembed)
 DEFINE_G_KEYS(edit_update)
diff --git a/gschem/src/g_register.c b/gschem/src/g_register.c
index a1b8818..7fe01cf 100644
--- a/gschem/src/g_register.c
+++ b/gschem/src/g_register.c
@@ -210,6 +210,7 @@ static struct gsubr_t gschem_funcs[] = {
   { "edit-linetype",             0, 0, 0, g_keys_edit_linetype },
   { "edit-filltype",             0, 0, 0, g_keys_edit_filltype },
   { "edit-translate",            0, 0, 0, g_keys_edit_translate },
+  { "edit-invoke-macro",         0, 0, 0, g_keys_edit_invoke_macro },
   { "edit-embed",                0, 0, 0, g_keys_edit_embed },
   { "edit-unembed",              0, 0, 0, g_keys_edit_unembed },
   { "edit-update",               0, 0, 0, g_keys_edit_update },
diff --git a/gschem/src/i_callbacks.c b/gschem/src/i_callbacks.c
index f4f57f0..7bd559d 100644
--- a/gschem/src/i_callbacks.c
+++ b/gschem/src/i_callbacks.c
@@ -1001,6 +1001,16 @@ DEFINE_I_CALLBACK(edit_translate)
   translate_dialog(w_current);
 }
 
+DEFINE_I_CALLBACK(edit_invoke_macro)
+{
+  GSCHEM_TOPLEVEL *w_current = (GSCHEM_TOPLEVEL*) data;
+
+  exit_if_null(w_current);
+
+  gtk_widget_show(w_current->macro_box);
+  gtk_widget_grab_focus(w_current->macro_entry);
+}
+
 /*! \todo Finish function documentation!!!
  *  \brief
  *  \par Function Description
diff --git a/gschem/src/x_window.c b/gschem/src/x_window.c
index d559499..1202d2d 100644
--- a/gschem/src/x_window.c
+++ b/gschem/src/x_window.c
@@ -277,6 +277,15 @@ static GtkWidget *x_window_stock_pixmap(const char *stock, GSCHEM_TOPLEVEL *w_cu
   return wpixmap;
 }
 
+static void x_window_invoke_macro(GtkEntry *entry, void *userdata)
+{
+  GSCHEM_TOPLEVEL *w_current = userdata;
+
+  scm_c_eval_string(gtk_entry_get_text(entry));
+  gtk_widget_hide(w_current->macro_box);
+  gtk_widget_grab_focus(w_current->drawing_area);
+}
+
 /*! \todo Finish function documentation!!!
  *  \brief
  *  \par Function Description
@@ -497,6 +506,18 @@ void x_window_create_main(GSCHEM_TOPLEVEL *w_current)
                         w_current);
   }
 
+  /* macro box */
+  w_current->macro_entry = gtk_entry_new();
+  g_signal_connect(w_current->macro_entry, "activate",
+		   G_CALLBACK(&x_window_invoke_macro), w_current);
+
+  w_current->macro_box = gtk_hbox_new(FALSE, 0);
+  gtk_box_pack_start(GTK_BOX(w_current->macro_box), w_current->macro_entry,
+		     FALSE, FALSE, 2);
+  gtk_container_border_width(GTK_CONTAINER(w_current->macro_box), 1);
+  gtk_box_pack_start (GTK_BOX (main_box), w_current->macro_box,
+		      FALSE, FALSE, 0);
+
   /* bottom box */
   bottom_box = gtk_hbox_new(FALSE, 0);
   gtk_container_border_width(GTK_CONTAINER(bottom_box), 1);
@@ -554,6 +575,7 @@ void x_window_create_main(GSCHEM_TOPLEVEL *w_current)
                     FALSE, 10);
 
   gtk_widget_show_all (w_current->main_window);
+  gtk_widget_hide(w_current->macro_box);
 
   w_current->window = w_current->drawing_area->window;
 

commit 61255c9b68aeae2ae845eea82babf445036a72f1
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Sat Aug 2 12:11:19 2008 +0100

    Allow key bindings to accept a REST argument list.
    
    In order to support adding optional arguments to key bindings, the
    function signature of ALL the bindings has to change.
    
    Supply REST (if available) or SCM_EOL (no extra arguments) where the
    caller is a C function.
    
    Conflicts merged by Peter B:
    
    	gschem/include/prototype.h
    	gschem/src/x_event.c

diff --git a/gschem/include/prototype.h b/gschem/include/prototype.h
index 98b0319..dc417da 100644
--- a/gschem/include/prototype.h
+++ b/gschem/include/prototype.h
@@ -47,141 +47,141 @@ SCM g_get_objects_in_page(SCM page_smob);
 /* g_keys.c */
 int g_keys_execute(GSCHEM_TOPLEVEL *w_current, int state, int keyval);
 GArray *g_keys_dump_keymap (void);
-SCM g_keys_file_new(void);
-SCM g_keys_file_new_window(void);
-SCM g_keys_file_open(void);
-SCM g_keys_file_script(void);
-SCM g_keys_file_save(void);
-SCM g_keys_file_save_as(void);
-SCM g_keys_file_save_all(void);
-SCM g_keys_file_print(void);
-SCM g_keys_file_write_png(void);
-SCM g_keys_file_close(void);
-SCM g_keys_file_quit(void);
-SCM g_keys_edit_undo(void);
-SCM g_keys_edit_redo(void);
-SCM g_keys_edit_select(void);
-SCM g_keys_edit_copy(void);
-SCM g_keys_edit_copy_hotkey(void);
-SCM g_keys_edit_mcopy(void);
-SCM g_keys_edit_mcopy_hotkey(void);
-SCM g_keys_edit_move(void);
-SCM g_keys_edit_move_hotkey(void);
-SCM g_keys_edit_delete(void);
-SCM g_keys_edit_rotate_90(void);
-SCM g_keys_edit_rotate_90_hotkey(void);
-SCM g_keys_edit_mirror(void);
-SCM g_keys_edit_mirror_hotkey(void);
-SCM g_keys_edit_slot(void);
-SCM g_keys_edit_color(void);
-SCM g_keys_edit_edit(void);
-SCM g_keys_edit_text(void);
-SCM g_keys_edit_lock(void);
-SCM g_keys_edit_unlock(void);
-SCM g_keys_edit_linetype(void);
-SCM g_keys_edit_filltype(void);
-SCM g_keys_edit_translate(void);
-SCM g_keys_edit_embed(void);
-SCM g_keys_edit_unembed(void);
-SCM g_keys_edit_update(void);
-SCM g_keys_edit_show_hidden(void);
-SCM g_keys_edit_make_visible(void);
-SCM g_keys_edit_find(void);
-SCM g_keys_edit_show_text(void);
-SCM g_keys_edit_hide_text(void);
-SCM g_keys_edit_autonumber_text(void);
-SCM g_keys_buffer_copy1(void);
-SCM g_keys_buffer_copy2(void);
-SCM g_keys_buffer_copy3(void);
-SCM g_keys_buffer_copy4(void);
-SCM g_keys_buffer_copy5(void);
-SCM g_keys_buffer_cut1(void);
-SCM g_keys_buffer_cut2(void);
-SCM g_keys_buffer_cut3(void);
-SCM g_keys_buffer_cut4(void);
-SCM g_keys_buffer_cut5(void);
-SCM g_keys_buffer_paste1(void);
-SCM g_keys_buffer_paste2(void);
-SCM g_keys_buffer_paste3(void);
-SCM g_keys_buffer_paste4(void);
-SCM g_keys_buffer_paste5(void);
-SCM g_keys_buffer_paste1_hotkey(void);
-SCM g_keys_buffer_paste2_hotkey(void);
-SCM g_keys_buffer_paste3_hotkey(void);
-SCM g_keys_buffer_paste4_hotkey(void);
-SCM g_keys_buffer_paste5_hotkey(void);
-SCM g_keys_view_redraw(void);
-SCM g_keys_view_zoom_full(void);
-SCM g_keys_view_zoom_extents(void);
-SCM g_keys_view_zoom_in(void);
-SCM g_keys_view_zoom_out(void);
-SCM g_keys_view_zoom_in_hotkey(void);
-SCM g_keys_view_zoom_out_hotkey(void);
-SCM g_keys_view_zoom_box(void);
-SCM g_keys_view_zoom_box_hotkey(void);
-SCM g_keys_view_pan(void);
-SCM g_keys_view_pan_left(void);
-SCM g_keys_view_pan_right(void);
-SCM g_keys_view_pan_up(void);
-SCM g_keys_view_pan_down(void);
-SCM g_keys_view_pan_hotkey(void);
-SCM g_keys_view_update_cues(void);
-SCM g_keys_page_manager(void);
-SCM g_keys_page_next(void);
-SCM g_keys_page_prev(void);
-SCM g_keys_page_new(void);
-SCM g_keys_page_close(void);
-SCM g_keys_page_revert(void);
-SCM g_keys_page_discard(void);
-SCM g_keys_page_print(void);
-SCM g_keys_add_component(void);
-SCM g_keys_add_attribute(void);
-SCM g_keys_add_attribute_hotkey(void);
-SCM g_keys_add_net(void);
-SCM g_keys_add_net_hotkey(void);
-SCM g_keys_add_bus(void);
-SCM g_keys_add_bus_hotkey(void);
-SCM g_keys_add_text(void);
-SCM g_keys_add_line(void);
-SCM g_keys_add_line_hotkey(void);
-SCM g_keys_add_box(void);
-SCM g_keys_add_box_hotkey(void);
-SCM g_keys_add_picture(void);
-SCM g_keys_add_picture_hotkey(void);
-SCM g_keys_add_circle(void);
-SCM g_keys_add_circle_hotkey(void);
-SCM g_keys_add_arc(void);
-SCM g_keys_add_arc_hotkey(void);
-SCM g_keys_add_pin(void);
-SCM g_keys_add_pin_hotkey(void);
-SCM g_keys_hierarchy_down_schematic(void);
-SCM g_keys_hierarchy_down_symbol(void);
-SCM g_keys_hierarchy_up(void);
-SCM g_keys_hierarchy_documentation(void);
-SCM g_keys_attributes_attach(void);
-SCM g_keys_attributes_detach(void);
-SCM g_keys_attributes_show_name(void);
-SCM g_keys_attributes_show_value(void);
-SCM g_keys_attributes_show_both(void);
-SCM g_keys_attributes_visibility_toggle(void);
-SCM g_keys_script_console(void);
-SCM g_keys_options_text_size(void);
-SCM g_keys_options_afeedback(void);
-SCM g_keys_options_grid(void);
-SCM g_keys_options_snap(void);
-SCM g_keys_options_snap_size(void);
-SCM g_keys_options_scale_up_snap_size(void);
-SCM g_keys_options_scale_down_snap_size(void);
-SCM g_keys_options_rubberband(void);
-SCM g_keys_options_magneticnet(void);
-SCM g_keys_options_show_log_window(void);
-SCM g_keys_options_show_coord_window(void);
-SCM g_keys_misc(void);
-SCM g_keys_misc2(void);
-SCM g_keys_misc3(void);
-SCM g_keys_help_about(void);
-SCM g_keys_help_hotkeys(void);
-SCM g_keys_cancel(void);
+SCM g_keys_file_new(SCM rest);
+SCM g_keys_file_new_window(SCM rest);
+SCM g_keys_file_open(SCM rest);
+SCM g_keys_file_script(SCM rest);
+SCM g_keys_file_save(SCM rest);
+SCM g_keys_file_save_as(SCM rest);
+SCM g_keys_file_save_all(SCM rest);
+SCM g_keys_file_print(SCM rest);
+SCM g_keys_file_write_png(SCM rest);
+SCM g_keys_file_close(SCM rest);
+SCM g_keys_file_quit(SCM rest);
+SCM g_keys_edit_undo(SCM rest);
+SCM g_keys_edit_redo(SCM rest);
+SCM g_keys_edit_select(SCM rest);
+SCM g_keys_edit_copy(SCM rest);
+SCM g_keys_edit_copy_hotkey(SCM rest);
+SCM g_keys_edit_mcopy(SCM rest);
+SCM g_keys_edit_mcopy_hotkey(SCM rest);
+SCM g_keys_edit_move(SCM rest);
+SCM g_keys_edit_move_hotkey(SCM rest);
+SCM g_keys_edit_delete(SCM rest);
+SCM g_keys_edit_rotate_90(SCM rest);
+SCM g_keys_edit_rotate_90_hotkey(SCM rest);
+SCM g_keys_edit_mirror(SCM rest);
+SCM g_keys_edit_mirror_hotkey(SCM rest);
+SCM g_keys_edit_slot(SCM rest);
+SCM g_keys_edit_color(SCM rest);
+SCM g_keys_edit_edit(SCM rest);
+SCM g_keys_edit_text(SCM rest);
+SCM g_keys_edit_lock(SCM rest);
+SCM g_keys_edit_unlock(SCM rest);
+SCM g_keys_edit_linetype(SCM rest);
+SCM g_keys_edit_filltype(SCM rest);
+SCM g_keys_edit_translate(SCM rest);
+SCM g_keys_edit_embed(SCM rest);
+SCM g_keys_edit_unembed(SCM rest);
+SCM g_keys_edit_update(SCM rest);
+SCM g_keys_edit_show_hidden(SCM rest);
+SCM g_keys_edit_make_visible(SCM rest);
+SCM g_keys_edit_find(SCM rest);
+SCM g_keys_edit_show_text(SCM rest);
+SCM g_keys_edit_hide_text(SCM rest);
+SCM g_keys_edit_autonumber_text(SCM rest);
+SCM g_keys_buffer_copy1(SCM rest);
+SCM g_keys_buffer_copy2(SCM rest);
+SCM g_keys_buffer_copy3(SCM rest);
+SCM g_keys_buffer_copy4(SCM rest);
+SCM g_keys_buffer_copy5(SCM rest);
+SCM g_keys_buffer_cut1(SCM rest);
+SCM g_keys_buffer_cut2(SCM rest);
+SCM g_keys_buffer_cut3(SCM rest);
+SCM g_keys_buffer_cut4(SCM rest);
+SCM g_keys_buffer_cut5(SCM rest);
+SCM g_keys_buffer_paste1(SCM rest);
+SCM g_keys_buffer_paste2(SCM rest);
+SCM g_keys_buffer_paste3(SCM rest);
+SCM g_keys_buffer_paste4(SCM rest);
+SCM g_keys_buffer_paste5(SCM rest);
+SCM g_keys_buffer_paste1_hotkey(SCM rest);
+SCM g_keys_buffer_paste2_hotkey(SCM rest);
+SCM g_keys_buffer_paste3_hotkey(SCM rest);
+SCM g_keys_buffer_paste4_hotkey(SCM rest);
+SCM g_keys_buffer_paste5_hotkey(SCM rest);
+SCM g_keys_view_redraw(SCM rest);
+SCM g_keys_view_zoom_full(SCM rest);
+SCM g_keys_view_zoom_extents(SCM rest);
+SCM g_keys_view_zoom_in(SCM rest);
+SCM g_keys_view_zoom_out(SCM rest);
+SCM g_keys_view_zoom_in_hotkey(SCM rest);
+SCM g_keys_view_zoom_out_hotkey(SCM rest);
+SCM g_keys_view_zoom_box(SCM rest);
+SCM g_keys_view_zoom_box_hotkey(SCM rest);
+SCM g_keys_view_pan(SCM rest);
+SCM g_keys_view_pan_left(SCM rest);
+SCM g_keys_view_pan_right(SCM rest);
+SCM g_keys_view_pan_up(SCM rest);
+SCM g_keys_view_pan_down(SCM rest);
+SCM g_keys_view_pan_hotkey(SCM rest);
+SCM g_keys_view_update_cues(SCM rest);
+SCM g_keys_page_manager(SCM rest);
+SCM g_keys_page_next(SCM rest);
+SCM g_keys_page_prev(SCM rest);
+SCM g_keys_page_new(SCM rest);
+SCM g_keys_page_close(SCM rest);
+SCM g_keys_page_revert(SCM rest);
+SCM g_keys_page_discard(SCM rest);
+SCM g_keys_page_print(SCM rest);
+SCM g_keys_add_component(SCM rest);
+SCM g_keys_add_attribute(SCM rest);
+SCM g_keys_add_attribute_hotkey(SCM rest);
+SCM g_keys_add_net(SCM rest);
+SCM g_keys_add_net_hotkey(SCM rest);
+SCM g_keys_add_bus(SCM rest);
+SCM g_keys_add_bus_hotkey(SCM rest);
+SCM g_keys_add_text(SCM rest);
+SCM g_keys_add_line(SCM rest);
+SCM g_keys_add_line_hotkey(SCM rest);
+SCM g_keys_add_box(SCM rest);
+SCM g_keys_add_box_hotkey(SCM rest);
+SCM g_keys_add_picture(SCM rest);
+SCM g_keys_add_picture_hotkey(SCM rest);
+SCM g_keys_add_circle(SCM rest);
+SCM g_keys_add_circle_hotkey(SCM rest);
+SCM g_keys_add_arc(SCM rest);
+SCM g_keys_add_arc_hotkey(SCM rest);
+SCM g_keys_add_pin(SCM rest);
+SCM g_keys_add_pin_hotkey(SCM rest);
+SCM g_keys_hierarchy_down_schematic(SCM rest);
+SCM g_keys_hierarchy_down_symbol(SCM rest);
+SCM g_keys_hierarchy_up(SCM rest);
+SCM g_keys_hierarchy_documentation(SCM rest);
+SCM g_keys_attributes_attach(SCM rest);
+SCM g_keys_attributes_detach(SCM rest);
+SCM g_keys_attributes_show_name(SCM rest);
+SCM g_keys_attributes_show_value(SCM rest);
+SCM g_keys_attributes_show_both(SCM rest);
+SCM g_keys_attributes_visibility_toggle(SCM rest);
+SCM g_keys_script_console(SCM rest);
+SCM g_keys_options_text_size(SCM rest);
+SCM g_keys_options_afeedback(SCM rest);
+SCM g_keys_options_grid(SCM rest);
+SCM g_keys_options_snap(SCM rest);
+SCM g_keys_options_snap_size(SCM rest);
+SCM g_keys_options_scale_up_snap_size(SCM rest);
+SCM g_keys_options_scale_down_snap_size(SCM rest);
+SCM g_keys_options_rubberband(SCM rest);
+SCM g_keys_options_magneticnet(SCM rest);
+SCM g_keys_options_show_log_window(SCM rest);
+SCM g_keys_options_show_coord_window(SCM rest);
+SCM g_keys_misc(SCM rest);
+SCM g_keys_misc2(SCM rest);
+SCM g_keys_misc3(SCM rest);
+SCM g_keys_help_about(SCM rest);
+SCM g_keys_help_hotkeys(SCM rest);
+SCM g_keys_cancel(SCM rest);
 SCM g_get_selected_filename(void);
 SCM g_get_selected_component_attributes(void);
 /* g_rc.c */
@@ -303,152 +303,152 @@ void i_update_menus(GSCHEM_TOPLEVEL *w_current);
 void i_set_filename(GSCHEM_TOPLEVEL *w_current, const gchar *string);
 void i_set_grid(GSCHEM_TOPLEVEL *w_current, int visible_grid);
 /* i_callbacks.c */
-void i_callback_file_new(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_new(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_file_new(GtkWidget *widget, gpointer data);
-void i_callback_file_new_window(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_file_open(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_new_window(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_open(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_file_open(GtkWidget *widget, gpointer data);
-void i_callback_file_script(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_file_save(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_script(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_save(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_file_save(GtkWidget *widget, gpointer data);
-void i_callback_file_save_all(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_file_save_as(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_file_print(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_file_write_png(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_file_close(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_save_all(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_save_as(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_print(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_write_png(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_close(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 int i_callback_close(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_file_quit(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_undo(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_file_quit(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_undo(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_edit_undo(GtkWidget *widget, gpointer data);
-void i_callback_edit_redo(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_redo(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_edit_redo(GtkWidget *widget, gpointer data);
-void i_callback_edit_select(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_select(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_edit_select(GtkWidget *widget, gpointer data);
-void i_callback_edit_copy(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_copy_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_mcopy(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_mcopy_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_move(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_move_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_delete(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_edit(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_text(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_slot(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_color(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_rotate_90(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_rotate_90_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_mirror(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_mirror_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_lock(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_unlock(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_translate(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_embed(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_unembed(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_update(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_show_hidden(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_make_visible(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_find(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_hide_text(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_show_text(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_autonumber_text(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_linetype(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_edit_filltype(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_redraw(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_full(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_extents(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_box(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_box_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_in(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_out(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_in_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_zoom_out_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_pan(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_pan_left(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_pan_right(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_pan_up(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_pan_down(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_pan_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_view_update_cues(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_manager(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_next(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_prev(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_new(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_close(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_revert(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_discard(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_page_print(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_copy1(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_copy2(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_copy3(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_copy4(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_copy5(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_cut1(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_cut2(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_cut3(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_cut4(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_cut5(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste1(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste2(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste3(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste4(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste5(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste1_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste2_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste3_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste4_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_buffer_paste5_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_component(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_copy(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_copy_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_mcopy(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_mcopy_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_move(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_move_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_delete(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_edit(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_text(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_slot(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_color(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_rotate_90(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_rotate_90_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_mirror(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_mirror_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_lock(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_unlock(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_translate(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_embed(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_unembed(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_update(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_show_hidden(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_make_visible(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_find(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_hide_text(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_show_text(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_autonumber_text(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_linetype(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_edit_filltype(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_redraw(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_full(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_extents(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_box(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_box_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_in(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_out(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_in_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_zoom_out_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_pan(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_pan_left(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_pan_right(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_pan_up(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_pan_down(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_pan_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_view_update_cues(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_manager(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_next(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_prev(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_new(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_close(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_revert(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_discard(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_page_print(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_copy1(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_copy2(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_copy3(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_copy4(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_copy5(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_cut1(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_cut2(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_cut3(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_cut4(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_cut5(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste1(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste2(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste3(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste4(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste5(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste1_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste2_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste3_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste4_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_buffer_paste5_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_component(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_add_component(GtkWidget *widget, gpointer data);
-void i_callback_add_attribute(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_attribute_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_net(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_net_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_attribute(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_attribute_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_net(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_net_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_add_net(GtkWidget *widget, gpointer data);
-void i_callback_add_bus(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_bus_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_bus(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_bus_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_add_bus(GtkWidget *widget, gpointer data);
-void i_callback_add_text(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_text(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 void i_callback_toolbar_add_text(GtkWidget *widget, gpointer data);
-void i_callback_add_line(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_line_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_box(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_box_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_picture(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_picture_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_circle(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_circle_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_arc(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_arc_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_pin(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_add_pin_hotkey(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_hierarchy_down_schematic(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_hierarchy_down_symbol(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_hierarchy_up(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_hierarchy_documentation(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_attributes_attach(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_attributes_detach(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_attributes_show_name(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_attributes_show_value(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_attributes_show_both(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_attributes_visibility_toggle(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_script_console(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_text_size(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_snap_size(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_scale_up_snap_size(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_scale_down_snap_size(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_afeedback(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_grid(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_snap(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_rubberband(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_magneticnet(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_show_log_window(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_misc(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_misc2(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_misc3(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_cancel(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_help_about(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_help_hotkeys(gpointer data, guint callback_action, GtkWidget *widget);
-void i_callback_options_show_coord_window(gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_line(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_line_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_box(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_box_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_picture(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_picture_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_circle(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_circle_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_arc(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_arc_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_pin(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_add_pin_hotkey(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_hierarchy_down_schematic(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_hierarchy_down_symbol(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_hierarchy_up(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_hierarchy_documentation(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_attributes_attach(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_attributes_detach(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_attributes_show_name(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_attributes_show_value(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_attributes_show_both(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_attributes_visibility_toggle(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_script_console(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_text_size(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_snap_size(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_scale_up_snap_size(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_scale_down_snap_size(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_afeedback(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_grid(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_snap(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_rubberband(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_magneticnet(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_show_log_window(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_misc(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_misc2(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_misc3(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_cancel(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_help_about(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_help_hotkeys(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
+void i_callback_options_show_coord_window(SCM rest, gpointer data, guint callback_action, GtkWidget *widget);
 gboolean i_callback_close_wm(GtkWidget *widget, GdkEvent *event, gpointer data);
 /* i_vars.c */
 void i_vars_set(GSCHEM_TOPLEVEL *w_current);
diff --git a/gschem/src/g_keys.c b/gschem/src/g_keys.c
index 20042a9..1fc3eed 100644
--- a/gschem/src/g_keys.c
+++ b/gschem/src/g_keys.c
@@ -186,10 +186,10 @@ static gboolean clear_keyaccel_string(gpointer data)
 }
 
 #define DEFINE_G_KEYS(name)				\
-SCM g_keys_ ## name(void)				\
+SCM g_keys_ ## name(SCM rest)				\
 {							\
    g_timeout_add(400, clear_keyaccel_string, global_window_current); \
-   i_callback_ ## name(global_window_current, 0, NULL); \
+   i_callback_ ## name(rest, global_window_current, 0, NULL); \
    return SCM_BOOL_T;				\
 }
 
diff --git a/gschem/src/i_callbacks.c b/gschem/src/i_callbacks.c
index 7022c7e..f4f57f0 100644
--- a/gschem/src/i_callbacks.c
+++ b/gschem/src/i_callbacks.c
@@ -151,14 +151,15 @@ static void initiate_gschemdoc(const char* documentation,const char *device,
  *  \par Function Description
  *
  */
-/* evey i_callback functions have the same footprint */
+/* every i_callback functions have the same footprint */
 #define DEFINE_I_CALLBACK(name)				\
-	void i_callback_ ## name(gpointer data,		\
+	void i_callback_ ## name(SCM rest,		\
+				 gpointer data,		\
 			         guint callback_action,	\
 			         GtkWidget *widget)
 
 /*! \section callback-intro Callback Functions
- * right now, all callbacks execpt for the ones on the File menu have
+ * right now, all callbacks except for the ones on the File menu have
  * the middle button shortcut. Let me (Ales) know if we should also
  * shortcut the File button
  */
@@ -200,7 +201,7 @@ void i_callback_toolbar_file_new(GtkWidget* widget, gpointer data)
   exit_if_null(w_current);
   if (!w_current->window) return;
     
-  i_callback_file_new(data, 0, NULL);
+  i_callback_file_new(SCM_EOL, data, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
@@ -257,7 +258,7 @@ void i_callback_toolbar_file_open(GtkWidget* widget, gpointer data)
   exit_if_null(w_current);
   if (!w_current->window) return;
 
-  i_callback_file_open(data, 0, NULL);
+  i_callback_file_open(SCM_EOL, data, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
@@ -319,7 +320,7 @@ void i_callback_toolbar_file_save(GtkWidget* widget, gpointer data)
   exit_if_null(w_current);
   if (!w_current->window) return;
 
-  i_callback_file_save(data, 0, NULL);
+  i_callback_file_save(SCM_EOL, data, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
@@ -448,7 +449,7 @@ int i_callback_close(gpointer data, guint callback_action, GtkWidget *widget)
   GSCHEM_TOPLEVEL *w_current = (GSCHEM_TOPLEVEL*) data;
 
   exit_if_null(w_current);
-  i_callback_file_close(w_current, 0, widget);
+  i_callback_file_close(SCM_EOL, w_current, 0, widget);
   return(FALSE);
 }
 
@@ -493,7 +494,7 @@ void i_callback_toolbar_edit_undo(GtkWidget* widget, gpointer data)
   exit_if_null(w_current);
   if (!w_current->window) return;
 
-  i_callback_edit_undo(data, 0, NULL);
+  i_callback_edit_undo(SCM_EOL, data, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
@@ -523,7 +524,7 @@ void i_callback_toolbar_edit_redo(GtkWidget* widget, gpointer data)
   exit_if_null(w_current);
   if (!w_current->window) return;
 
-  i_callback_edit_redo(data, 0, NULL);
+  i_callback_edit_redo(SCM_EOL, data, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
@@ -560,9 +561,9 @@ void i_callback_toolbar_edit_select(GtkWidget* widget, gpointer data)
 
   if (GTK_TOGGLE_BUTTON (widget)->active) {
     if (!o_erase_rubber(w_current)) {
-      i_callback_cancel(w_current, 0, NULL);
+      i_callback_cancel(SCM_EOL, w_current, 0, NULL);
     }
-    i_callback_edit_select(data, 0, NULL);
+    i_callback_edit_select(SCM_EOL, data, 0, NULL);
   }
 }
 
@@ -2284,7 +2285,7 @@ void i_callback_toolbar_add_component(GtkWidget* widget, gpointer data)
   exit_if_null(w_current);
   if (!w_current->window) return;
 
-  i_callback_add_component(data, 0, NULL);
+  i_callback_add_component(SCM_EOL, data, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
@@ -2393,7 +2394,7 @@ void i_callback_toolbar_add_net(GtkWidget* widget, gpointer data)
   if (!w_current->window) return;
 
   if (GTK_TOGGLE_BUTTON (widget)->active) {
-    i_callback_add_net(data, 0, NULL);
+    i_callback_add_net(SCM_EOL, data, 0, NULL);
   }
 }
 
@@ -2464,7 +2465,7 @@ void i_callback_toolbar_add_bus(GtkWidget* widget, gpointer data)
   if (!w_current->window) return;
 
   if (GTK_TOGGLE_BUTTON (widget)->active) {
-     i_callback_add_bus(data, 0, NULL);
+     i_callback_add_bus(SCM_EOL, data, 0, NULL);
   }
 }
 
@@ -2503,7 +2504,7 @@ void i_callback_toolbar_add_text(GtkWidget* widget, gpointer data)
   exit_if_null(w_current);
   if (!w_current->window) return;
 
-  i_callback_add_text(data, 0, NULL);
+  i_callback_add_text(SCM_EOL, data, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
@@ -2627,7 +2628,7 @@ DEFINE_I_CALLBACK(add_picture_hotkey)
   GSCHEM_TOPLEVEL *w_current = (GSCHEM_TOPLEVEL*) data;
 
   /* If this function necessary? Yes, if you want the hotkey to work. */
-  i_callback_add_picture(w_current, 0, NULL);
+  i_callback_add_picture(rest, w_current, 0, NULL);
 }
 
 /*! \todo Finish function documentation!!!
diff --git a/gschem/src/x_dialog.c b/gschem/src/x_dialog.c
index eb2f45e..728aec3 100644
--- a/gschem/src/x_dialog.c
+++ b/gschem/src/x_dialog.c
@@ -3922,7 +3922,7 @@ x_dialog_close_changed_page (GSCHEM_TOPLEVEL *w_current, PAGE *page)
       case GTK_RESPONSE_YES:
         /* action selected: save */
         s_page_goto (w_current->toplevel, page);
-        i_callback_file_save (w_current, 0, NULL);
+        i_callback_file_save(SCM_EOL, w_current, 0, NULL);
         /* has the page been really saved? */
         if (!page->CHANGED) {
           x_window_close_page (w_current, page);
@@ -4018,7 +4018,7 @@ x_dialog_close_window (GSCHEM_TOPLEVEL *w_current)
           p_current = (PAGE*)p_unsaved->data;
 
           s_page_goto (toplevel, p_current);
-          i_callback_file_save (w_current, 0, NULL);
+          i_callback_file_save(SCM_EOL, w_current, 0, NULL);
           /* if user cancelled previous, do not close window */
           ret &= !p_current->CHANGED;
         }
diff --git a/gschem/src/x_event.c b/gschem/src/x_event.c
index 604ac3b..c675f3d 100644
--- a/gschem/src/x_event.c
+++ b/gschem/src/x_event.c
@@ -351,7 +351,7 @@ gint x_event_button_pressed(GtkWidget *widget, GdkEventButton *event,
           w_current->event_state == ENDPASTE ) {
             return(0);
           } else {
-            i_callback_cancel(w_current, 0, NULL);
+            i_callback_cancel(SCM_EOL, w_current, 0, NULL);
             return(0);
           }
     }
@@ -494,7 +494,7 @@ gint x_event_button_pressed(GtkWidget *widget, GdkEventButton *event,
           break;
 
         default:
-          i_callback_cancel(w_current, 0, NULL);
+          i_callback_cancel(SCM_EOL, w_current, 0, NULL);
           break;
       }
       i_update_toolbar(w_current);
diff --git a/gschem/src/x_pagesel.c b/gschem/src/x_pagesel.c
index ef29a6e..5c2e01a 100644
--- a/gschem/src/x_pagesel.c
+++ b/gschem/src/x_pagesel.c
@@ -226,7 +226,7 @@ static void                                                       \
 pagesel_callback_popup_ ## name (GtkMenuItem *menuitem,           \
                                  gpointer user_data)              \
 {                                                                 \
-  i_callback_ ## action (GSCHEM_DIALOG (user_data)->w_current, 0, NULL); \
+  i_callback_ ## action (SCM_EOL, GSCHEM_DIALOG (user_data)->w_current, 0, NULL); \
 }
 
 DEFINE_POPUP_CALLBACK (new_page,     file_new)

commit da5b6b6ae5848d988c22ed5528917bf050a54a2d
Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
Date:   Thu Jan 17 03:12:39 2008 +0200

    Desensitise function signature to function pointer parameters.
    
    func_ptr gets assigned to last_callback anyway, which itself
    does not specify any formal parameters.

diff --git a/gschem/include/prototype.h b/gschem/include/prototype.h
index 482a799..98b0319 100644
--- a/gschem/include/prototype.h
+++ b/gschem/include/prototype.h
@@ -297,7 +297,7 @@ int main(int argc, char *argv[]);
 void i_show_state(GSCHEM_TOPLEVEL *w_current, const char *message);
 void i_set_state(GSCHEM_TOPLEVEL *w_current, enum x_states newstate);
 void i_set_state_msg(GSCHEM_TOPLEVEL *w_current, enum x_states newstate, const char *message);
-void i_update_middle_button(GSCHEM_TOPLEVEL *w_current, void (*func_ptr)(gpointer, guint, GtkWidget*), const char *string);
+void i_update_middle_button(GSCHEM_TOPLEVEL *w_current, void (*func_ptr)(), const char *string);
 void i_update_toolbar(GSCHEM_TOPLEVEL *w_current);
 void i_update_menus(GSCHEM_TOPLEVEL *w_current);
 void i_set_filename(GSCHEM_TOPLEVEL *w_current, const gchar *string);
diff --git a/gschem/src/i_basic.c b/gschem/src/i_basic.c
index 160de2c..2c43eb2 100644
--- a/gschem/src/i_basic.c
+++ b/gschem/src/i_basic.c
@@ -236,7 +236,7 @@ void i_set_state_msg(GSCHEM_TOPLEVEL *w_current, enum x_states newstate,
  *
  */
 void i_update_middle_button(GSCHEM_TOPLEVEL *w_current,
-			    void (*func_ptr)(gpointer, guint, GtkWidget*),
+			    void (*func_ptr)(),
 			    const char *string)
 {
   char *temp_string;




_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs