00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00029 #ifndef __ERGTK_ENTRY_H__
00030 #define __ERGTK_ENTRY_H__
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00036 #define ERGTK_ENTRY_DEFAULT_WIDTH 150   // value from the designed screen
00037 #define ERGTK_ENTRY_DEFAULT_HEIGHT 30
00038 
00039 #define ERGTK_ENTRY_TYPE                 (ergtk_entry_get_type())
00040 #define ERGTK_ENTRY(obj)                 (G_TYPE_CHECK_INSTANCE_CAST((obj), ERGTK_ENTRY_TYPE, erGtkEntry))
00041 #define ERGTK_IS_ENTRY(obj)              (G_TYPE_CHECK_INSTANCE_TYPE((obj), ERGTK_ENTRY_TYPE))
00042 
00043 #define ERGTK_ENTRY_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST((klass),  ERGTK_ENTRY_TYPE, erGtkEntryClass))
00044 #define ERGTK_ENTRY_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS((obj),  ERGTK_ENTRY_TYPE, erGtkEntryClass))
00045 #define ERGTK_IS_ENTRY_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE((klass),  ERGTK_ENTRY_TYPE))
00046 
00047 
00048 
00049 #define gtk_entry_set_text(entry, text)                         \
00050     if ( ERGTK_IS_ENTRY(entry) )                                \
00051         ergtk_entry_set_text( (erGtkEntry*)(entry), (text) );   \
00052     else                                                        \
00053         gtk_entry_set_text( (entry), (text) );
00054 
00055 typedef enum
00056 {
00057     ipAddress_e = 0,
00058     integer_e,
00059     string_e
00060 }entryFilter_e;
00061 
00062 typedef struct _erGtkEntry      erGtkEntry;
00063 typedef struct _erGtkEntryClass erGtkEntryClass;
00064 
00065 struct _erGtkEntry
00066 {
00067     GtkEntry     parent;                
00068 
00069     
00070     guint        timeout_id;            
00071     gboolean     changed_pending;       
00072     gboolean     changed_occurred;      
00073     gboolean     movecursor_occurred;   
00074     gboolean     visible;               
00075     entryFilter_e filter;
00076 };
00077 
00078 struct _erGtkEntryClass
00079 {
00080     GtkEntryClass parent_class;
00081 
00082     
00083     void (*set_text)           (erGtkEntry* er_entry, const gchar* text);
00084     
00085     
00086     void (*changed_stable)     (erGtkEntry* er_entry);
00087     void (*screen_refresh)     (erGtkEntry* er_entry);
00088 };
00089 
00097 GtkWidget* ergtk_entry_new();
00098 
00104 GType ergtk_entry_get_type(void);
00105 
00113 void ergtk_entry_set_text(erGtkEntry* er_entry, const gchar * text);
00114 
00115 void ergtk_entry_set_ipv4_filter(erGtkEntry *er_entry);
00116 
00117 void ergtk_entry_set_integer_filter(erGtkEntry *er_entry);
00118 
00119 gboolean ergtk_entry_check_field(erGtkEntry *er_entry);
00120 
00121 #ifdef __cplusplus
00122 }
00123 #endif
00124 
00125 #endif