00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef HK_FORM_H
00012 #define HK_FORM_H
00013 #include "hk_presentation.h"
00014 #include <list>
00015 using namespace std;
00016
00017 class hk_dslineedit;
00018 class hk_dsgrid;
00019 class hk_dsboolean;
00020 class hk_dsrowselector;
00021 class hk_dscombobox;
00022 class hk_dsmemo;
00023 class hk_button;
00024 class hk_label;
00025 class hk_dsimage;
00026 class hk_dsdate;
00027 class hk_tabvisible;
00028 class hk_formprivate;
00029 class hk_subform;
00030 class hk_formmodeprivate;
00043 class hk_form:public hk_presentation
00044 {
00045 friend class hk_dsvisible;
00046 friend class hk_visible;
00047 friend class hk_subform;
00048
00049 public:
00050
00051 hk_form(void);
00052 virtual ~hk_form(void);
00058 hk_dsgrid* new_grid(void);
00064 hk_dslineedit* new_lineedit(void);
00070 hk_dsboolean* new_bool(void);
00076 hk_dscombobox* new_combobox(void);
00082 hk_button* new_button(void);
00088 hk_dsrowselector* new_rowselector(void);
00094 hk_dsmemo* new_memo(void);
00100 hk_label* new_label(void);
00101
00102 hk_subform* new_subform(void);
00103 hk_dsdate* new_date(void);
00104 hk_dsimage* new_image(void);
00105 hk_tabvisible* new_tabvisible(void);
00106
00113 bool save_form(const hk_string& name="",bool ask=true);
00119 bool load_form(const hk_string& name="");
00120 virtual void savedata(ostream& s);
00121 virtual void loaddata(xmlNodePtr definition);
00122
00128 virtual void set_designsize(unsigned int width, unsigned int height,bool registerchange=true);
00129 hk_visible* get_visible(long nr);
00130 hk_visible* get_visible(const hk_string& identifier);
00131 virtual void bulk_operation(enum_bulkoperation bulkoperation);
00132 virtual bool set_mode(enum_mode s);
00136 hk_form* masterform(void) const;
00140 void clear_visiblelist(void);
00141 void set_taborder(list<int> t,bool registerchange=true, bool forcesetting=true);
00146 list<int> taborder() const;
00147 hk_visible* taborder_previous(hk_visible*);
00148 hk_visible* taborder_next(hk_visible*);
00149 hk_visible* first_tabobject();
00150 hk_visible* last_tabobject();
00154 virtual void goto_taborder_next(){}
00158 virtual void goto_taborder_previous(){}
00162 virtual void goto_taborder_first(){}
00166 virtual void goto_taborder_last(){}
00170 virtual void set_focus(hk_visible*){}
00171
00172 list<hk_visible*>* visibles(void);
00173 bool is_subform() const;
00174 virtual bool is_subpresentation(void);
00175 virtual bool show_asdialog(hk_form* parentform=NULL);
00176
00177 virtual int screen_width();
00178 virtual int screen_height();
00179 bool while_load_form(void) const;
00180 virtual bool while_loading(void);
00181
00182 enum enum_include {include_data,no_data};
00183 hk_string form2html(enum_include i=no_data);
00184
00185 protected:
00186 bool set_formbasedfilter();
00187 void set_masterform(hk_form*);
00188 virtual hk_dsgrid* widget_specific_new_grid(void){return NULL;}
00189 virtual hk_dsrowselector* widget_specific_new_rowselector(void){return NULL;}
00190 virtual hk_dslineedit* widget_specific_new_lineedit(void){return NULL;}
00191 virtual hk_dsboolean* widget_specific_new_bool(void){return NULL;}
00192 virtual hk_button* widget_specific_new_button(void){return NULL;}
00193 virtual hk_dscombobox* widget_specific_new_combobox(void){return NULL;}
00194 virtual hk_dsmemo* widget_specific_new_memo(void){return NULL;}
00195 virtual hk_label* widget_specific_new_label(void){return NULL;}
00196 virtual hk_subform* widget_specific_new_subform(void){return NULL;}
00197 virtual hk_dsdate* widget_specific_new_date(void){return NULL;}
00198 virtual hk_dsimage* widget_specific_new_image(void){return NULL;}
00199 virtual hk_tabvisible* widget_specific_new_tabvisible(void){return NULL;}
00200 virtual void widget_specific_fieldresize(hk_visible* v);
00201 virtual void widget_specific_after_loadform(void){}
00202 void remove_visible(hk_visible* v);
00203 hk_visible* new_object(const hk_string& name);
00204 void raise_widget(hk_visible*);
00205 void lower_widget(hk_visible*);
00206 virtual void sizetype_changed(void);
00207 void set_subformobject(hk_subform*);
00208 hk_subform* subformobject() const;
00209 private:
00210 void add_visible(hk_visible* v);
00211
00212 hk_formprivate* p_private;
00213 hk_formmodeprivate* p_designdata;
00214 hk_formmodeprivate* p_viewdata;
00215
00216 };
00217 #endif