--- include/bicubic.h.orig	2005-08-29 12:24:53.000000000 +0200
+++ include/bicubic.h	2007-03-23 16:12:08.934381832 +0100
@@ -27,6 +27,10 @@
 #include "object3d.h"
 
 
+// declarations to avoid friend injection problems
+void sign_bicubic_current_point_changed( GtkWidget *wid, gpointer data );
+void sign_bicubic_current_point_num_changed( GtkWidget *wid, gpointer data );
+
 // Definition
 class Bicubic : public Object3D_with_material {
 	#define SENDER ((Bicubic*)data)
--- include/blob.h.orig	2005-08-29 12:19:22.000000000 +0200
+++ include/blob.h	2007-03-23 15:22:43.688748645 +0100
@@ -29,6 +29,11 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_blob_add_sphere( GtkWidget *wid, gpointer data );
+void sign_blob_add_cylinder( GtkWidget *wid, gpointer data );
+bool BlobTestFunc( gpointer data, float x, float y, float z );
+
 class Blob : public ObjCSG {
 
 	#define SENDER ((Blob*)data)
--- include/camera.h.orig	2005-08-29 11:45:42.000000000 +0200
+++ include/camera.h	2007-03-23 11:30:35.370600907 +0100
@@ -26,6 +26,9 @@
 using namespace std;
 #include "object3d.h"
 
+// declaration to avoid friend injection problems
+void sign_camera_mode( GtkWidget *wid, gpointer data );
+
 // Definition
 // Camera object
 class Camera : public Object3D {
--- include/density.h.orig	2005-08-27 15:04:26.000000000 +0200
+++ include/density.h	2007-03-23 11:30:09.030619237 +0100
@@ -27,6 +27,11 @@
 #include "material.h"
 #include "mapedit.h"
 
+// declarations to avoid friend injection problems
+void sign_density_delete( GtkWidget *wid, gpointer data );
+void sign_density_type_changed( GtkWidget *wid, gpointer data );
+void sign_density_densblocktype_changed( gpointer data );
+
 //****************************************************
 // Density class :
 // Used to modify media in pov material interiors & in atmospheric
--- include/dlgutils.h.orig	2005-08-31 19:31:43.000000000 +0200
+++ include/dlgutils.h	2007-03-23 11:32:23.767064347 +0100
@@ -87,6 +87,9 @@
 //**************************************
 char* extract_filename( char *str );
 
+// declaration to avoid friend injection problems
+void sign_splash_closed( GtkWidget *wid, GdkEvent *ev, gpointer data );
+
 //*************************************************************
 // Splash screen
 // create & destroy a window displayed during
--- include/glview2d.h.orig	2005-04-01 10:19:53.000000000 +0200
+++ include/glview2d.h	2007-03-23 11:36:02.818646655 +0100
@@ -26,6 +26,10 @@
 using namespace std;
 #include "glview.h"
 
+// declarations to avoid friend injection probems
+void sign_toggle_grid( GtkWidget *wid, gpointer obj );
+void sign_toggle_labels( GtkWidget *wid, gpointer obj );
+
 // Classe 2D
 class glview2d : public glview {	
 	#define SENDER ((glview2d*)obj)
--- include/glview3d.h.orig	2005-04-01 10:19:53.000000000 +0200
+++ include/glview3d.h	2007-03-23 11:38:45.119886583 +0100
@@ -27,6 +27,10 @@
 #include "glview.h"
 #include "dlgutils.h"
 
+// declarations to avoid friend injection problems
+gint sign_toggle_3Dlabels( GtkWidget *wid, gpointer obj );
+gint sign_toggle_grids( GtkWidget *wid, gpointer obj );
+
 class glview3d : public glview {
 	// Callback
 	#define SENDER ((glview3d*)obj)	
--- include/glview.h.orig	2005-06-08 19:45:26.000000000 +0200
+++ include/glview.h	2007-03-23 11:31:45.109961731 +0100
@@ -76,6 +76,31 @@
 };
 
 
+// declarations to avoid friend injection problems
+void initgl( GtkWidget *wid, gpointer data );
+void display( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
+void reshape( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
+void sign_mouse_button_pressed( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_mouse_moved( GtkWidget *wid, GdkEventMotion *ev, gpointer data );
+void sign_mouse_scroll( GtkWidget *wid, GdkEventScroll *ev, gpointer data );
+void sign_toggle_lighting( GtkWidget *wid, gpointer data );
+void sign_toggle_solid( GtkWidget *wid, gpointer data );
+void sign_toggle_smooth( GtkWidget *wid, gpointer data );
+void popup_detacher( GtkWidget *wid, GtkMenu *men );
+void sign_view_refresh( GtkWidget *wid, gpointer data );
+void sign_view_home( GtkWidget *wid, gpointer data );	
+void sign_toggle_axis( GtkWidget *wid, gpointer data );
+void sign_change_view_type( GtkWidget *wid, gpointer data );
+void sign_maximize( GtkWidget *wid, gpointer data );
+void sign_roll( GtkWidget *wid, gpointer data );
+void sign_pop_menu( GtkWidget *wid, gpointer data );
+void sign_glview_tbar_expose( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
+void sign_glview_tbar_configure( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
+void sign_glview_tbar_mouse_click( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_glview_tbar_focus_in( GtkWidget *wid, GdkEventFocus *ev, gpointer data );
+void sign_glview_tbar_focus_out( GtkWidget *wid, GdkEventFocus *ev, gpointer data );
+void sign_glview_tbar_key_press( GtkWidget *wid, GdkEventKey *ev, gpointer data );
+
 //*******************************************
 // Classe de base
 //*******************************************
--- include/interface.h.orig	2005-09-30 10:45:08.000000000 +0200
+++ include/interface.h	2007-03-23 11:52:32.722630596 +0100
@@ -40,6 +40,38 @@
 
 #define INTERF_DEF Interface *interf = (Interface*)(app_ref->interf);
 
+// declarations to avoid friend injection problems
+void sign_interface_recent_file( GtkWidget *wid, gpointer data );
+void sign_interf_hide_panel( GtkWidget *wid, gpointer data );
+void interf_sign_menu_new( GtkAction *action, gpointer data );
+void interf_sign_menu_open( GtkWidget *wid, gpointer data );
+void interf_sign_menu_save( GtkWidget *wid, gpointer data );
+void interf_sign_menu_saveas( GtkWidget *wid, gpointer data );
+void interf_sign_menu_exportpov( GtkWidget *wid, gpointer data );
+void interf_sign_menu_exportpack( GtkWidget *wid, gpointer data );
+void interf_sign_menu_loadobj( GtkWidget *wid, gpointer data );
+void interf_sign_menu_saveobj( GtkWidget *wid, gpointer data );
+void interf_sign_menu_exit( GtkWidget *wid, gpointer data );
+void interf_sign_menu_undo( GtkWidget *wid, gpointer data );
+void interf_sign_menu_redo( GtkWidget *wid, gpointer data );
+void interf_sign_menu_cut( GtkWidget *wid, gpointer data );
+void interf_sign_menu_copy( GtkWidget *wid, gpointer data );
+void interf_sign_menu_paste( GtkWidget *wid, gpointer data );
+void interf_sign_menu_prefs( GtkWidget *wid, gpointer data );
+void interf_sign_menu_render( GtkWidget *wid, gpointer data );
+void interf_sign_menu_stop( GtkWidget *wid, gpointer data );
+void interf_sign_menu_frontend( GtkWidget *wid, gpointer data );
+void interf_sign_menu_options( GtkWidget *wid, gpointer data );
+void interf_sign_menu_fullscreen( GtkWidget *wid, gpointer data );
+void interf_sign_menu_matedit( GtkWidget *wid, gpointer data );
+void interf_sign_menu_matlib( GtkWidget *wid, gpointer data );
+void interf_sign_menu_script( GtkWidget *wid, gpointer data );
+void interf_sign_menu_help( GtkWidget *wid, gpointer data );
+void interf_sign_menu_helpon( GtkWidget *wid, gpointer data );
+void interf_sign_menu_website( GtkWidget *wid, gpointer data );
+void interf_sign_menu_about( GtkWidget *wid, gpointer data );
+void interf_sign_toolbar_pointer( GtkAction *action, gpointer data );
+
 //*******************************************************************
 // Class Interface
 //
--- include/interior.h.orig	2005-08-27 11:46:43.000000000 +0200
+++ include/interior.h	2007-03-23 12:01:45.403315691 +0100
@@ -28,6 +28,10 @@
 #include "media.h"
 #include <vector>
 
+// declarations to avoid friend injection problems
+void sign_int_addmedia( GtkWidget *wid, gpointer data );
+void sign_int_media_suicide( gpointer data, gpointer victim  );
+
 class PovTexInterior : public MaterialItem {
 	#define SENDER ((PovTexInterior*)data)
 	friend void sign_int_addmedia( GtkWidget *wid, gpointer data ) { SENDER->add_media(); }
--- include/isosurface.h.orig	2005-08-29 12:24:53.000000000 +0200
+++ include/isosurface.h	2007-03-23 16:06:38.515789260 +0100
@@ -26,6 +26,9 @@
 using namespace std;
 #include "object3d.h"
 
+// declaration to avoid friend injection problems
+bool IsoSurfaceTestFunc( gpointer data, float x, float y, float z );
+
 // Definition
 // Box object
 class IsoSurface : public Object3D_with_material {
--- include/lathe.h.orig	2005-08-29 12:24:52.000000000 +0200
+++ include/lathe.h	2007-03-23 15:37:28.640743670 +0100
@@ -29,6 +29,14 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_lathe_current_point_num_changed( GtkWidget *wid, gpointer data );
+void sign_lathe_current_point_changed( GtkWidget *wid, gpointer data );
+void sign_lathe_delete_point( GtkWidget *wid, gpointer data );
+void sign_lathe_append_point( GtkWidget *wid, gpointer data );
+void sign_lathe_prepend_point( GtkWidget *wid, gpointer data );
+void sign_lathe_insert_point( GtkWidget *wid, gpointer data );
+
 // Definition
 class Lathe : public Object3D_with_material {
 	#define SENDER ((Lathe*)data)
--- include/mapedit.h.orig	2005-08-27 12:01:49.000000000 +0200
+++ include/mapedit.h	2007-03-23 12:25:16.516041598 +0100
@@ -80,6 +80,21 @@
 		~MapItem_test() {}
 };
 
+// declarations to avoid friend injection problems
+void sign_mapedit_expose( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
+void sign_mapedit_configure( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
+void sign_mapedit_realize( GtkWidget *wid, gpointer data );
+void sign_mapedit_mouse_moved( GtkWidget *wid, GdkEventMotion *ev, gpointer data );
+void sign_mapedit_mouse_click( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_mapedit_mouse_release( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_mapedit_selection( GtkWidget *wid, gpointer data );
+void sign_mapedit_delete_item( GtkWidget *wid, gpointer data );
+void sign_mapedit_append_item( GtkWidget *wid, gpointer data );
+void sign_mapedit_prepend_item( GtkWidget *wid, gpointer data );
+void sign_mapedit_duplicate_item( GtkWidget *wid, gpointer data );
+void sign_mapedit_item_changed( gpointer data );
+void sign_mapedit_valentry_changed( GtkWidget *wid, gpointer data );
+
 //********************************************
 // MapEditor
 //********************************************
--- include/material.h.orig	2005-10-03 20:52:55.000000000 +0200
+++ include/material.h	2007-03-23 12:30:01.067631469 +0100
@@ -45,6 +45,9 @@
 typedef matit_type MaterialItemType;
 
 
+// declaration to avoid friend injection problems
+void sign_miname_changed( GtkWidget *wid, gpointer data );
+
 //****************************************************
 // Classe Item de Texture
 //****************************************************
@@ -116,6 +119,8 @@
 	};
 typedef mattypes MaterialType;
 
+// declaration to avoid friend injection problems
+void sign_name_focusout( GtkWidget *wid, GdkEvent *ev, gpointer data );
 
 //****************************************************
 // Classe Texture de base
--- include/matlib.h.orig	2005-09-25 20:57:05.000000000 +0200
+++ include/matlib.h	2007-03-23 12:38:27.173421857 +0100
@@ -28,6 +28,9 @@
 #include "main.h"
 #include "tvwidgets.h"
 
+// declarations to avoid friend injection problems
+void sign_thumb_data_free( guchar *data, gpointer sender );
+
 //******************************************************
 // Material library tree Item
 //******************************************************
@@ -94,6 +97,15 @@
 #define MATLIB_DEF MatLib *matlib = (MatLib*)(app_ref->matlib);
 
 
+// declarations to avoid friend injection problems
+void sign_matlib_dlg_click( GtkDialog *wid, gint button, gpointer data );
+void sign_matlib_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_matlib_icon_select( GtkIconView *view, gpointer data );
+void sign_matlib_icon_doubleclick( GtkIconView *view, GtkTreePath *path, gpointer data );
+void sign_matlib_tree_select( GtkTreeSelection *selection, gpointer data );
+void sign_matlib_tree_doubleclick( GtkTreeView* view, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data );
+void sign_matlib_open( GtkWidget *wid, gpointer data );
+
 class MatLib : public app_object {
 	
 	// Gtk Callbacks
--- include/matlist.h.orig	2005-10-25 20:33:57.000000000 +0200
+++ include/matlist.h	2007-03-23 12:51:39.446555624 +0100
@@ -43,6 +43,19 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_matlist_row_select( GtkTreeSelection *select, gpointer data );
+void sign_matlist_row_activated( GtkTreeView *View, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data );
+void sign_matlist_button_clicked( GtkWidget *wid, gpointer data );
+void sign_ed_dlg_click( GtkDialog *wid, gint button, gpointer data );
+void sign_ed_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_matlist_editor_tree_select( GtkTreeSelection *selection, gpointer data );
+void sign_ed_dlg_select( GtkWidget *wid, gpointer data );
+void sign_edit_button_clicked( GtkWidget *wid, gpointer data );
+void sign_mat_save( GtkWidget *wid, gpointer data );
+void sign_save_dlg_click( GtkWidget *wid, gint button, gpointer data );
+void sign_save_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+
 //**************************************
 // Classe MatList
 //
--- include/matpov.h.orig	2005-08-27 12:23:58.000000000 +0200
+++ include/matpov.h	2007-03-23 12:57:03.887060190 +0100
@@ -32,6 +32,14 @@
 #include <vector>
 
 
+// declarations to avoid friend injection problems
+void sign_texture_type_changed( GtkWidget *wid, gpointer data );
+void sign_texture_delete( GtkWidget *wid, gpointer data );
+void sign_texture_add( GtkWidget *wid, gpointer data );	
+void sign_blockpat_changed( gpointer data );
+void sign_texture_child_delete( gpointer data, gpointer child );
+void sign_texture_child_move( gpointer data, gpointer child, int sens );
+
 //****************************************************
 // Classe Texture POV
 //****************************************************
--- include/media.h.orig	2005-08-27 15:12:27.000000000 +0200
+++ include/media.h	2007-03-23 13:03:26.374709301 +0100
@@ -68,6 +68,11 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_media_delete( GtkWidget *wid, gpointer data );
+void sign_media_add_density( GtkWidget *wid, gpointer data );
+void sign_media_density_suicide( gpointer data, gpointer victim );
+
 //****************************************************
 // Classe Media
 //****************************************************
--- include/object3d.h.orig	2005-09-30 19:47:29.000000000 +0200
+++ include/object3d.h	2007-03-23 13:07:05.553272237 +0100
@@ -93,7 +93,11 @@
 typedef obj3dcat Object3DCategory;
 
 
-
+// declarations to avoid friend injection problems
+void sign_entry( GtkWidget *wid, gpointer data );
+bool sign_entry2( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_hidden_changed( GtkWidget *wid, gpointer data );
+void sign_render_changed( GtkWidget *wid, gpointer data );
 
 //**************************************
 // Classe de base pour les objets 3D
--- include/objectlayer.h.orig	2005-09-30 19:47:29.000000000 +0200
+++ include/objectlayer.h	2007-03-23 13:11:02.888065328 +0100
@@ -28,6 +28,11 @@
 #include "material.h"
 #include <vector>
 
+// declarations to avoid friend injection problems
+void sign_objlayer_edit_clicked( GtkWidget *wid, gint button, gpointer data );
+void sign_objlayer_edit_ok_clicked( GtkWidget *wid, gpointer data );
+void sign_objlayer_edit_box_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+
 //**************************************
 // Layer
 //**************************************
--- include/objectlist.h.orig	2005-09-24 19:33:47.000000000 +0200
+++ include/objectlist.h	2007-03-23 13:21:22.641518051 +0100
@@ -65,6 +65,26 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_layer_select( GtkTreeSelection *selection, gpointer data );
+void sign_select_lbuttons_clicked( GtkWidget *wid, gpointer data );
+gboolean sign_layer_view_clicked( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_object_select( GtkTreeSelection *selection, gpointer data );
+void sign_select_buttons_clicked( GtkWidget *wid, gpointer data );
+gboolean sign_object_view_clicked( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_object_view_double_clicked( GtkTreeView *View, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data);
+void sign_create_button_clicked( GtkWidget *wid, gpointer data );
+void sign_create_tree_select( GtkTreeSelection *selection, gpointer data );
+void sign_create_tree_click( GtkTreeView *View, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data );
+void sign_object_drag(GtkWidget *widget, GdkDragContext *dc, GtkSelectionData *selection_data, guint info, guint t, gpointer data  );
+void sign_object_drop_on_layer( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data );
+void sign_object_motion_on_layer( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data );
+void sign_object_drop_on_tree( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data );
+void sign_object_motion_on_tree( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data );
+void sign_objlist_cut_object( GtkWidget *wid, gpointer data );
+void sign_objlist_copy_object( GtkWidget *wid, gpointer data );	
+void sign_objlist_paste_object( GtkWidget *wid, gpointer data );
+
 //************************************************************
 // Class Object List
 //
--- include/objparam.h.orig	2005-09-29 21:12:01.000000000 +0200
+++ include/objparam.h	2007-03-23 13:37:02.455143591 +0100
@@ -70,6 +70,9 @@
 		virtual void display( glview *view ) {}
 };
 
+// declaration to avoid friend injection problems
+void sign_option_combo_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe option combo
 //*********************************************
@@ -87,6 +90,9 @@
 		void swap_data( ObjParam *param );
 };
 
+// declaration to avoid friend injection problems
+void sign_int_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe int
 //*********************************************
@@ -104,6 +110,9 @@
 		void swap_data( ObjParam *param );
 };
 
+// declaration to avoid friend injection problems
+void sign_float_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe float
 //*********************************************
@@ -122,6 +131,10 @@
 		void swap_data( ObjParam *param );
 };
 
+// declarations to avoid friend injection problems
+void sign_float_angle_flush( GtkWidget *wid, gpointer data );
+void sign_float_angle_clicked( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe float angle
 //*********************************************
@@ -147,6 +160,9 @@
 };
 
 
+// declaration to avoid friend injection problems
+void sign_bool_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe bool
 //*********************************************
@@ -157,7 +173,7 @@
 		ObjParam_bool( const char *name, const char *sname, const char *tooltip, app_objs *appref,  bool refr, bool val = false ) 
 			: ObjParam( refr ) ,
 			TvWidget_bool( name, sname, tooltip, appref, val ) {}
-		ObjParam_bool::ObjParam_bool( ObjParam_bool & ref ) : ObjParam( ref ), TvWidget_bool( ref ) {}
+		ObjParam_bool( ObjParam_bool & ref ) : ObjParam( ref ), TvWidget_bool( ref ) {}
 		void get_widget( GtkWidget *box, bool tt );
 		void get_widget( GtkWidget *table, bool tt, int row );
 		void flush();
@@ -165,6 +181,9 @@
 		virtual void output_to_povray( ofstream & file ) { file << ( data ? "on" : "off"); }
 };
 
+// declaration to avoid friend injection problems
+void sign_bool_activator_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe bool activator
 //*********************************************
@@ -185,6 +204,8 @@
 		virtual void output_to_povray( ofstream & file ) { file << ( data ? "on" : "off" ); }
 };
 
+// declaration to avoid friend injection problems
+void sign_color_flush( GtkWidget *wid, gpointer data );
 //*********************************************
 // Classe color
 //*********************************************
@@ -205,6 +226,10 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_point_flush( GtkWidget *wid, gpointer data );
+void sign_point_clicked( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe point
 //*********************************************
@@ -243,6 +268,9 @@
 };
 
 
+// declaration to avoid friend injection problems
+void sign_vector4_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe vector4
 //*********************************************
@@ -312,6 +340,10 @@
 };
 
 
+// declarations to avoid friend injection problems
+void sign_rotation_flush( GtkWidget *wid, gpointer data );
+void sign_rotation_clicked( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe rotation
 //*********************************************
@@ -352,6 +384,10 @@
 };
 
 
+// declarations to avoid friend injection problems
+void sign_ref_changed( GtkWidget *wid, gpointer data );
+void sign_texref_edit( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Texture ref
 //*********************************************
@@ -413,6 +449,10 @@
 		bool load( ifstream & file, char *tag );
 		//void get_material( vector<Material*> & mlist );
 };
+
+// declaration to avoid friend injection problems
+void sign_objparam_entry_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe entry
 //*********************************************
@@ -431,6 +471,9 @@
 };
 
 
+// declaration to avoid friend injection problems
+void sign_objparam_path_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe path
 //*********************************************
@@ -448,6 +491,9 @@
 		void swap_data( ObjParam *param );
 };
 
+// declaration to avoid friend injection problems
+void sign_objparam_file_flush( GtkWidget *wid, gpointer data );
+
 //*********************************************
 // Classe file
 //*********************************************
--- include/povfe.h.orig	2005-10-03 21:15:11.000000000 +0200
+++ include/povfe.h	2007-03-23 13:55:59.141734924 +0100
@@ -36,6 +36,19 @@
 #define POVFE_DEF PovrayFE *povfe = (PovrayFE*)(app_ref->povfe);
 
 
+// declarations to avoid friend injection problems
+void sign_options_box( GtkWidget *wid, gpointer data );
+void sign_povfe_opt_click( GtkWidget *wid, gint button, gpointer data );
+void sign_povfe_opt_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_povfe_presets( GtkWidget *wid, gpointer data );
+void sign_povfe_rend_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_povfe_rend_close( GtkWidget *wid, gpointer data );
+void sign_povfe_start_stop_clicked( GtkWidget *wid, gpointer data );
+void *read_console_thread( void * data );
+void sign_povfe_console( GtkWidget *wid, gpointer data );
+void sign_povfe_cons_click( GtkWidget *wid, gint button, gpointer data );
+void sign_povfe_cons_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+
 //**********************************************
 //  Front end Class
 //
--- include/povpreview.h.orig	2005-09-17 23:24:52.000000000 +0200
+++ include/povpreview.h	2007-03-23 14:02:56.935997790 +0100
@@ -36,6 +36,11 @@
 #define MATPREV_DEF MaterialPreview *povfe = (MaterialPreview*)(app_ref->povfe);
 
 
+// declarations to avoid friend injection problems
+void *reading_image_thread( void * data );
+void *reading_console_thread( void * data );
+void sign_matpreview_start_clicked( GtkWidget *wid, gpointer data );
+
 //**********************************************
 //  Front end Class
 //
--- include/preferences.h.orig	2005-09-03 22:38:59.000000000 +0200
+++ include/preferences.h	2007-03-23 14:07:13.699826858 +0100
@@ -31,6 +31,10 @@
 #define PREF_DEF Preferences *pref = (Preferences*)(app_ref->prefer);
 
 
+// declarations to avoid friend injection problems
+gint dlg_click( GtkDialog *wid, gint button, gpointer data );
+gint dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+
 //***********************************************
 // Objet prfrences
 //***********************************************
--- include/prism.h.orig	2005-08-29 12:24:53.000000000 +0200
+++ include/prism.h	2007-03-23 15:59:41.470412147 +0100
@@ -30,6 +30,17 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_prism_current_point_num_changed( GtkWidget *wid, gpointer data );
+void sign_prism_current_spline_num_changed( GtkWidget *wid, gpointer data );
+void sign_prism_current_point_changed( GtkWidget *wid, gpointer data );
+void sign_prism_delete_point( GtkWidget *wid, gpointer data );
+void sign_prism_append_point( GtkWidget *wid, gpointer data );
+void sign_prism_prepend_point( GtkWidget *wid, gpointer data );
+void sign_prism_insert_point( GtkWidget *wid, gpointer data );
+void sign_prism_append_spline( GtkWidget *wid, gpointer data );
+void sign_prism_delete_spline( GtkWidget *wid, gpointer data );
+
 // Definition
 class Prism : public Object3D_with_material {
 	#define SENDER ((Prism*)data)
--- include/proppanel.h.orig	2005-08-25 11:32:40.000000000 +0200
+++ include/proppanel.h	2007-03-23 14:14:05.156056630 +0100
@@ -29,6 +29,12 @@
 #define PROPPANEL_DEF PropPanel *proppanel = (PropPanel*)(app_ref->proppanel);
 #define PROPPANEL_MAX_PAGE 5
 
+// declarations to avoid friend injection problems
+void sign_proppanel_clicked( GtkWidget *wid, gpointer data );
+void sign_proppanel_detach( GtkWidget *wid, gpointer data );
+bool sign_proppanel_attach( GtkWidget *wid, GdkEvent *event, gpointer data );
+void sign_proppanel_attach2( GtkWidget *wid, gpointer data );
+
 class PropPanel : public app_object {
 #define SENDER ((PropPanel*)data)
 	friend void sign_proppanel_clicked( GtkWidget *wid, gpointer data ) { SENDER->label_clicked( wid ); }
--- include/pyscriptdb.h.orig	2005-10-01 07:00:57.000000000 +0200
+++ include/pyscriptdb.h	2007-03-23 16:18:43.035259272 +0100
@@ -59,6 +59,9 @@
 };
 
 
+// declaration to avoid friend injection problems
+void sign_run_script_from_menu( GtkWidget *wid, gpointer data );
+
 class PyScriptDB : public app_object
 {
 	friend void sign_run_script_from_menu( GtkWidget *wid, gpointer data ) { ((PyScript*)data)->execute(); }
--- include/scriptobj.h.orig	2005-09-23 15:25:05.000000000 +0200
+++ include/scriptobj.h	2007-03-23 16:14:06.547439223 +0100
@@ -58,6 +58,9 @@
 	float x4; float y4; float z4;
 } GLQuad;
 
+// declaration to avoid friend injection problems
+void sign_scriptobj_edit( GtkWidget *wid, gpointer data );
+
 // ScriptObj object
 class ScriptObj : public Object3D_with_material {
 	#define SENDER ((ScriptObj*)data)
--- include/slopemap.h.orig	2003-07-04 23:32:12.000000000 +0200
+++ include/slopemap.h	2007-03-23 14:19:27.373900278 +0100
@@ -60,6 +60,19 @@
 #define MAX_SLMAP_BUT 4
 
 
+// declarations to avoid friend injection problems
+void sign_slopemap_edit( GtkWidget *wid, gpointer data );
+gint sign_slopemap_editor_click( GtkWidget *wid, gint button, gpointer data );
+gint sign_slopemap_editor_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_slopecurve_expose( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
+void sign_slopecurve_configure( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
+void sign_slopecurve_realize( GtkWidget *wid, gpointer data );
+void sign_slopecurve_mouse_moved( GtkWidget *wid, GdkEventMotion *ev, gpointer data );
+void sign_slopecurve_mouse_click( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_slopecurve_mouse_release( GtkWidget *wid, GdkEventButton *ev, gpointer data );
+void sign_slmap_button_clicked( GtkWidget *wid, gpointer data );
+void sign_slmap_value_changed( GtkWidget *wid, gpointer data );
+
 class TvWidget_slopemap : public TvWidget {
 	#define SENDER ((TvWidget_slopemap*)data)
 	friend void sign_slopemap_edit( GtkWidget *wid, gpointer data ) { SENDER->open_editor(); }
--- include/spheresweep.h.orig	2005-09-29 20:47:51.000000000 +0200
+++ include/spheresweep.h	2007-03-23 16:10:24.722280042 +0100
@@ -28,6 +28,14 @@
 #include "spline3d.h"
 
 
+// declarations to avoid friend injection problems
+void sign_ssweep_current_point_num_changed( GtkWidget *wid, gpointer data );
+void sign_ssweep_current_point_changed( GtkWidget *wid, gpointer data );
+void sign_ssweep_delete_point( GtkWidget *wid, gpointer data );
+void sign_ssweep_append_point( GtkWidget *wid, gpointer data );
+void sign_ssweep_prepend_point( GtkWidget *wid, gpointer data );
+void sign_ssweep_insert_point( GtkWidget *wid, gpointer data );
+
 //*******************************************************
 // Class sphere sweep
 //
--- include/texnormal.h.orig	2005-08-27 12:40:52.000000000 +0200
+++ include/texnormal.h	2007-03-23 14:25:59.402093919 +0100
@@ -29,6 +29,11 @@
 #include "slopemap.h"
 
 
+// declarations to avoid friend injection problems
+void sign_normal_type_changed( GtkWidget *wid, gpointer data );
+void sign_normblocktype_changed( gpointer data );
+MapItem *mapedit_feeder_normal( gpointer data );
+
 class PovTexNormal : public MaterialItem {
 	#define SENDER ((PovTexNormal*)data)
 	friend void sign_normal_type_changed( GtkWidget *wid, gpointer data ) { SENDER->type_changed(); }
--- include/texpigment.h.orig	2005-08-27 12:40:09.000000000 +0200
+++ include/texpigment.h	2007-03-23 14:38:56.816494478 +0100
@@ -27,6 +27,11 @@
 #include "material.h"
 #include "mapedit.h"
 
+// declarations to avoid friend injection problems
+void sign_pigtype_changed( GtkWidget *wid, gpointer data );
+void sign_colblocktype_changed( gpointer data );
+void sign_pigblocktype_changed( gpointer data );
+
 //****************************************************
 // Pigment class
 //****************************************************
@@ -111,6 +116,9 @@
 };
 
 
+// declaration to avoid friend injection problems
+void sign_mapitemcol_changed( gpointer data );
+
 //****************************************************
 // MapItem solid color
 //****************************************************
--- include/tvwidgets.h.orig	2005-09-30 11:33:29.000000000 +0200
+++ include/tvwidgets.h	2007-03-23 15:11:14.460894676 +0100
@@ -84,6 +84,9 @@
 		virtual void copy( TvWidget *wid ) {}
 };
 
+// declaration to avois friend injection problems
+void sign_rolling_box_clicked( GtkWidget *wid, gpointer data );
+
 //**********************************************************
 // Rolling box
 //**********************************************************
@@ -143,6 +146,9 @@
 		bool load( ifstream & file, char * tag );
 };
 
+// declaration to avois friend injection problems
+void sign_bool_activator_clicked( GtkWidget *wid, gpointer data );
+
 //**********************************************************
 // TvWidget BOOL ACTIVATOR
 //**********************************************************
@@ -352,6 +358,10 @@
 		//int get_blue() { return data[2]; }
 };
 
+// declarations to avois friend injection problems
+void sign_pigcolor_changed( GtkWidget *picker, gpointer data );
+void sign_pigalpha_changed( GtkWidget *wid, gpointer data );
+
 //**********************************************************
 // TvWidget PIGMENT
 //**********************************************************
@@ -702,6 +712,9 @@
 		void get_widget_rb( GtkWidget *box, bool tt ) { rb->get_widget_rb( box, tt ); }
 };
 
+// declaration to avoid friend injection problems
+void sign_file_changed( GnomeFileEntry *fentry, gpointer data );
+
 //**********************************************************
 // TvWidget FILE
 //**********************************************************
@@ -740,6 +753,9 @@
 };
 
 
+// declaration to avoid friend injection problems
+void sign_blockp_type_changed( GtkWidget *wid, gpointer data );
+
 //**********************************************************
 // TvWidget Block Pattern
 //**********************************************************
@@ -819,6 +835,9 @@
 		void get_widget_rb( GtkWidget *box, bool tt ) { rb->get_widget_rb( box, tt ); }
 };
 
+// declaration to avoid friend injection problems
+void sign_warptype_changed( GtkWidget *wid, gpointer data );
+
 //**********************************************************
 // TvWidget WARP
 //**********************************************************
@@ -879,6 +898,9 @@
 		void get_widget_rb( GtkWidget *box, bool tt ) { rb->get_widget_rb( box, tt ); }
 };
 
+// declaration to avoid friend injection problems
+void sign_blendtype_changed( GtkWidget *wid, gpointer data );
+
 //**********************************************************
 // TvWidget BLENDMAP
 //**********************************************************
@@ -917,6 +939,9 @@
 };
 
 
+// declaration to avoid friend injection problems
+void sign_wavetype_changed( GtkWidget *wid, gpointer data );
+
 //**********************************************************
 // TvWidget BLENDMAP MODIFIERS
 //**********************************************************
@@ -1079,6 +1104,16 @@
 };
 */
 
+// declarations to avoid friend injection problems
+void sign_tvwid_func_open_dialog( GtkWidget* wid, gpointer data );
+void sign_tvwid_func_dlg_click( GtkDialog *wid, gint button, gpointer data );
+void sign_tvwid_func_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_tvwid_func_insert( GtkWidget *wid,  gpointer data );
+void sign_tvwid_func_clear( GtkWidget *wid,  gpointer data );
+void sign_tvwid_func_cut( GtkWidget *wid,  gpointer data );
+void sign_tvwid_func_copy( GtkWidget *wid,  gpointer data );
+void sign_tvwid_func_paste( GtkWidget *wid,  gpointer data );
+
 //**********************************************************
 // TvWidget Function
 //**********************************************************
@@ -1132,6 +1167,15 @@
 
 
 
+// declarations to avoid friend injection problems
+void sign_tvwid_tb_open_dialog( GtkWidget* wid, gpointer data );
+void sign_tvwid_tb_dlg_click( GtkDialog *wid, gint button, gpointer data );
+void sign_tvwid_tb_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
+void sign_tvwid_tb_clear( GtkWidget *wid,  gpointer data );
+void sign_tvwid_tb_cut( GtkWidget *wid,  gpointer data );
+void sign_tvwid_tb_copy( GtkWidget *wid,  gpointer data );
+void sign_tvwid_tb_paste( GtkWidget *wid,  gpointer data );
+
 //**********************************************************
 // TvWidget TextButton
 //**********************************************************
