00001 /*-------------------------------------------------------------------- 00002 * vform.h 00003 * 00004 */ 00005 00006 #ifndef VFORM_H 00007 #define VFORM_H 00008 00009 #include "tcltk_calling_convention.h" 00010 #include "vwidget.h" 00011 #include <stdarg.h> 00012 00013 class field_info; 00014 class binding; 00015 00016 //typedef slist_tos<field_info*> field_info_list; 00017 typedef list<field_info*> field_info_list; 00018 00019 00020 class vform : public vwidget { 00021 00022 protected: 00023 00024 binding *dialog_binding; 00025 field_info_list *fields; 00026 00027 int filter(char *title, char *variable); 00028 00029 public: 00030 00031 vform(vwidget *par); 00032 ~vform(void); 00033 void destroy(void); 00034 00035 void add_field(char *field_name, char *type, char*val); 00036 void insert_field(int field_num, char *field_name, char *type, 00037 char *val); 00038 void remove_field(int field_num); 00039 void clear(void); 00040 00041 char *get_field_data(int field_num); 00042 char *get_field_type(int field_num); 00043 char *get_field_name(int field_num); 00044 int num_fields(void); 00045 00046 int get_current_field(void); 00047 void set_current_field(int field_num); 00048 void focus_field(int field_num); 00049 00050 void set_dialog_binding(binding *b) { 00051 dialog_binding = b; 00052 } 00053 00054 virtual int kind(void) { return WIDGET_FORM; } 00055 00056 /* interface with tcl/tk */ 00057 static int TCLTK_CALLING_CONVENTION vform_cmd(ClientData, Tcl_Interp *interp, int argc, 00058 char *argv[]); 00059 00060 }; 00061 00062 #endif