hk_interpreter.h

00001 // ****************************************************************************
00002 // copyright (c) 2000-2005 Horst Knorr <hk_classes@knoda.org>
00003 // This file is part of the hk_classes library.
00004 // This file may be distributed and/or modified under the terms of the
00005 // GNU Library Public License version 2 as published by the Free Software
00006 // Foundation and appearing in the file COPYING included in the
00007 // packaging of this file.
00008 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00009 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00010 // ****************************************************************************
00011 #ifndef HK_INTERPRETER
00012 #define HK_INTERPRETER
00013 #include "hk_class.h"
00014 #ifdef HAVE_CONFIG_H
00015 #include "config.h"
00016 #endif
00017 
00018 class hk_button;
00019 class hk_dslineedit;
00020 class hk_dsgrid;
00021 class hk_dsgridcolumn;
00022 class hk_dsboolean;
00023 class hk_dscombobox;
00024 class hk_dsmemo;
00025 class hk_dsimage;
00026 class hk_dsdate;
00027 class hk_dsgrid;
00028 class hk_visible;
00029 class hk_dsvisible;
00030 class hk_dsdatavisible;
00031 class hk_presentation;
00032 class hk_form;
00033 class hk_report;
00034 class hk_reportdata;
00035 class hk_subform;
00036 
00044 class hk_interpreter:public hk_class
00045 {
00046 public:
00047 hk_interpreter(hk_presentation* p);
00048 virtual ~hk_interpreter(){}
00049 virtual void init(){}
00053 virtual bool on_click(hk_visible*)=0;
00057 virtual bool on_doubleclick(hk_visible*)=0;
00062 virtual bool before_row_change(hk_dsvisible*)=0;
00066 virtual bool after_row_change(hk_dsvisible*)=0;
00070 virtual bool before_update(hk_dsvisible*)=0;
00075 virtual bool after_update(hk_dsvisible*)=0;
00079 virtual bool before_delete(hk_dsvisible*)=0;
00083 virtual bool after_delete(hk_dsvisible*)=0;
00087 virtual bool before_insert(hk_dsvisible*)=0;
00091 virtual bool after_insert(hk_dsvisible*)=0;
00095 virtual bool on_close(hk_visible*)=0;
00099 virtual bool on_open(hk_visible*)=0;
00103 virtual bool on_getfocus(hk_visible*)=0;
00107 virtual bool on_loosefocus(hk_visible*)=0;
00108 
00112 virtual bool on_key(hk_visible*)=0;
00113 
00117 virtual bool on_valuechanged(hk_dsdatavisible*)=0;
00118 
00122 virtual bool on_print_data(hk_reportdata*)=0;
00126 virtual bool on_print_new_page(hk_report*)=0;
00127 
00128 virtual bool on_select(hk_dscombobox*)=0;
00129 virtual bool on_select(hk_dsgridcolumn*)=0;
00130 virtual bool load_module(const hk_string&)=0;
00131 
00132 void set_block_execution(bool);
00133 bool block_execution(void) const;
00134 
00138 bool scripterror(void){return p_error_occured;}
00142 hk_string errormessage(void){return p_errormessage;}
00146 int error_rownumber(void){return p_error_rownumber;}
00150 virtual hk_string interpretername(void) const {return "unknown";}
00151 enum enum_action{       a_before_row_change,
00152                                 a_after_row_change,
00153                                 a_click,
00154                                 a_doubleclick,
00155                                 a_on_open,
00156                                 a_on_close,
00157                                 a_on_getfocus,
00158                                 a_on_loosefocus,
00159                                 a_on_key,
00160                                 a_before_update,
00161                                 a_after_update,
00162                                 a_before_delete,
00163                                 a_after_delete,
00164                                 a_before_insert,
00165                                 a_after_insert,
00166                                 a_on_print_data,
00167                                 a_on_print_new_page,
00168                                 a_on_select,
00169                                 a_on_valuechanged,
00170                                 a_on_loadmodule
00171                                 };//when gets updated don't forget to update hk_kdesimpleform/hk_kdesimplereport::script_error !!!
00172 
00173 protected:
00174 hk_presentation* p_presentation;
00175 bool p_error_occured;
00176 hk_string p_errormessage;
00177 int p_error_rownumber;
00178 
00179 private:
00180 bool p_block_execution;
00181 };
00182 
00191 class hk_no_interpreter:public hk_interpreter
00192 {
00193 public:
00194 hk_no_interpreter(hk_presentation*p);
00195 virtual bool on_click(hk_visible*);
00196 virtual bool on_doubleclick(hk_visible*);
00197 virtual bool before_row_change(hk_dsvisible*);
00198 virtual bool after_row_change(hk_dsvisible*);
00199 virtual bool before_update(hk_dsvisible*);
00200 virtual bool after_update(hk_dsvisible*);
00201 virtual bool on_close(hk_visible*);
00202 virtual bool on_open(hk_visible*);
00203 virtual bool before_delete(hk_dsvisible*);
00204 virtual bool after_delete(hk_dsvisible*);
00205 virtual bool before_insert(hk_dsvisible*);
00206 virtual bool after_insert(hk_dsvisible*);
00207 virtual bool on_print_data(hk_reportdata*);
00208 virtual bool on_print_new_page(hk_report*);
00209 virtual bool on_getfocus(hk_visible*);
00210 virtual bool on_loosefocus(hk_visible*);
00211 virtual bool on_key(hk_visible*);
00212 virtual bool on_select(hk_dscombobox*);
00213 virtual bool on_select(hk_dsgridcolumn*);
00214 virtual bool on_valuechanged(hk_dsdatavisible*);
00215 virtual bool load_module(const hk_string&);
00216 private:
00217 void warning(void);
00218  bool warning_already_displayed;
00219 };
00220 
00221 
00222 
00223 class hk_pythoninterpreterprivate;
00232 class hk_pythoninterpreter:public hk_interpreter
00233 {
00234 public:
00235 hk_pythoninterpreter(hk_presentation* );
00236 virtual ~hk_pythoninterpreter();
00237 virtual void init();
00238 
00239 virtual bool on_click(hk_visible*);
00240 virtual bool on_doubleclick(hk_visible*);
00241 virtual bool before_row_change(hk_dsvisible*);
00242 virtual bool after_row_change(hk_dsvisible*);
00243 virtual bool before_update(hk_dsvisible*);
00244 virtual bool after_update(hk_dsvisible*);
00245 virtual bool on_close(hk_visible*);
00246 virtual bool on_open(hk_visible*);
00247 virtual hk_string interpretername(void) const {return "python";}
00248 virtual bool before_delete(hk_dsvisible*);
00249 virtual bool after_delete(hk_dsvisible*);
00250 virtual bool before_insert(hk_dsvisible*);
00251 virtual bool after_insert(hk_dsvisible*);
00252 virtual bool on_print_data(hk_reportdata*);
00253 virtual bool on_print_new_page(hk_report*);
00254 virtual bool on_getfocus(hk_visible*);
00255 virtual bool on_loosefocus(hk_visible*);
00256 virtual bool on_key(hk_visible*);
00257 virtual bool on_select(hk_dscombobox*);
00258 virtual bool on_select(hk_dsgridcolumn*);
00259 virtual bool on_valuechanged(hk_dsdatavisible*);
00260 virtual bool load_module(const hk_string&);
00261 protected:
00262 
00263 
00264 private:
00265 void error_occured(enum_action action);
00266 bool execute_script(const hk_string& script,enum_action action);
00267 hk_string pystatement(void);
00268 hk_pythoninterpreterprivate* p_privatdata;
00269 
00270 static int p_referencecounting;
00271 
00272 
00273 };
00274 
00275 
00276  hk_button* currentbutton(void);
00277  hk_dslineedit* currentlineedit(void);
00278  hk_dsmemo* currentmemo(void);
00279  hk_dsgrid* currentgrid(void);
00280  hk_dsgridcolumn* currentgridcolumn(void);
00281  hk_dscombobox* currentcombobox(void);
00282  hk_dsboolean*  currentboolean(void);
00283  hk_form* currentform(void);
00284  hk_report* currentreport(void);
00285  hk_reportdata* currentreportdata(void);
00286  hk_dsvisible* currentdsvisible(void);
00287  hk_visible*  currentvisible(void);
00288  hk_dsimage* currentdsimage(void);
00289  hk_dsdate*  currentdsdate(void);
00290  hk_button *cast_button(hk_visible*);
00291  hk_dslineedit *cast_dslineedit(hk_visible*);
00292  hk_dsmemo *cast_dsmemo(hk_visible*);
00293  hk_dsgrid *cast_dsgrid(hk_visible*);
00294  hk_dsgridcolumn *cast_dsgridcolumn(hk_visible*);
00295  hk_dscombobox *cast_dscombobox(hk_visible*);
00296  hk_dsboolean *cast_dsboolean(hk_visible*);
00297  hk_dsimage *cast_dsimage(hk_visible*);
00298  hk_dsdate *cast_dsdate(hk_visible*);
00299  hk_dsvisible *cast_dsvisible(hk_visible*);
00300  hk_form *cast_form(hk_visible*);
00301  hk_report *cast_report(hk_visible*);
00302  hk_reportdata *cast_reportdata(hk_visible*);
00303  hk_subform *cast_subform(hk_visible*);
00304 
00305 #endif //HK_INTERPRETER
00306 

Generated on Tue Nov 28 02:48:08 2006 for Databaseconnectionclasses by  doxygen 1.5.0