/Users/huttone/Devel/sedflux-new/sedflux/trunk/ew/sed/etk_addrem.c

Go to the documentation of this file.
00001 #include <gtk/gtksignal.h>
00002 #include <glib.h>
00003 #include <glib/gprintf.h>
00004 #include "etk_addrem.h"
00005 
00006 enum
00007 {
00008    ADD_REM_ADD_LINE,
00009    ADD_REM_REM_LINE,
00010    LAST_SIGNAL
00011 };
00012 
00013 static guint add_rem_signals[LAST_SIGNAL] = { 0 };
00014 
00015 static void add_rem_class_init   ( Add_Rem_Class* c );
00016 static void add_rem_init         ( Add_Rem* obj );
00017 
00018 static void add_rem_class_init( Add_Rem_Class* c )
00019 {
00020    add_rem_signals[ADD_REM_ADD_LINE] = g_signal_new( "add_line" ,
00021                                                  G_TYPE_FROM_CLASS(c) ,
00022                                                  G_SIGNAL_RUN_FIRST|G_SIGNAL_ACTION ,
00023                                                  G_STRUCT_OFFSET( Add_Rem_Class , add_line ) ,
00024                                                  NULL ,
00025                                                  NULL ,
00026                                                  g_cclosure_marshal_VOID__VOID ,
00027                                                  G_TYPE_NONE , 0 );
00028 
00029    add_rem_signals[ADD_REM_REM_LINE] = g_signal_new( "rem_line" ,
00030                                                  G_TYPE_FROM_CLASS(c) ,
00031                                                  G_SIGNAL_RUN_FIRST|G_SIGNAL_ACTION ,
00032                                                  G_STRUCT_OFFSET( Add_Rem_Class , rem_line ) ,
00033                                                  NULL ,
00034                                                  NULL ,
00035                                                  g_cclosure_marshal_VOID__VOID ,
00036                                                  G_TYPE_NONE , 0 );
00037 
00038    return;
00039 }
00040 
00041 GType add_rem_get_type( void )
00042 {
00043    static GType this_type = 0;
00044 
00045    if ( !this_type )
00046    {
00047       static const GTypeInfo this_type_info =
00048          {
00049             sizeof( Add_Rem_Class ),
00050             NULL,
00051             NULL,
00052             (GClassInitFunc)add_rem_class_init,
00053             NULL,
00054             NULL,
00055             sizeof(Add_Rem),
00056             0,
00057             (GInstanceInitFunc)add_rem_init
00058          };
00059 
00060       this_type = g_type_register_static( GTK_TYPE_HBOX , "Add_Rem" , &this_type_info , 0 );
00061    }
00062 
00063    return this_type;
00064 }
00065 
00066 static void rem_line( GtkWidget* w , Add_Rem* ar )
00067 {
00068    g_printf( "Remove this entry.\n" );
00069    g_signal_emit( G_OBJECT(ar) , add_rem_signals[ADD_REM_REM_LINE] , 0 );
00070 }
00071 
00072 static void add_line( GtkWidget* w , Add_Rem* ar )
00073 {
00074    g_printf( "Add another entry.\n" );
00075    g_signal_emit( G_OBJECT(ar) , add_rem_signals[ADD_REM_ADD_LINE] , 0 );
00076 }
00077 
00078 static void add_rem_init( Add_Rem* obj )
00079 {
00080    obj->label      = GTK_WIDGET( gtk_label_new( "" ) );
00081    obj->add_button = GTK_WIDGET( gtk_button_new_from_stock( GTK_STOCK_ADD ) );
00082    obj->rem_button = GTK_WIDGET( gtk_button_new_from_stock( GTK_STOCK_REMOVE ) );
00083 
00084    gtk_box_set_homogeneous( GTK_BOX( obj ) , FALSE );
00085    gtk_box_set_spacing    ( GTK_BOX( obj ) , 2     );
00086    
00087    gtk_box_pack_start( GTK_BOX( obj ) , obj->label      , TRUE  , TRUE , 2 );
00088    gtk_box_pack_end  ( GTK_BOX( obj ) , obj->rem_button , FALSE , FALSE, 2 );
00089    gtk_box_pack_end  ( GTK_BOX( obj ) , obj->add_button , FALSE , FALSE, 2 );
00090 
00091    g_signal_connect( G_OBJECT( obj->rem_button ) , "clicked" ,
00092                      G_CALLBACK(rem_line) , (gpointer)obj );
00093    g_signal_connect( G_OBJECT( obj->add_button ) , "clicked" ,
00094                      G_CALLBACK(add_line) , (gpointer)obj );
00095 
00096    gtk_widget_show( obj->add_button );
00097    gtk_widget_show( obj->rem_button );
00098    gtk_widget_show( obj->label      );
00099 }
00100 
00101 const gchar* add_rem_get_name( Add_Rem* ar )
00102 {
00103    return gtk_label_get_text( GTK_LABEL( ar->label ) );
00104 }
00105 
00106 GtkWidget* add_rem_new( const char* label_str )
00107 {
00108    Add_Rem* obj = g_object_new( ADD_REM_TYPE , NULL );
00109 
00110    gtk_label_set_text( GTK_LABEL(obj->label), label_str );
00111 
00112    return GTK_WIDGET( obj );
00113 }
00114 

Generated on Fri Jan 4 18:04:15 2008 for sedflux by  doxygen 1.5.2