Databaseconnectionclasses  0.5.3
hk_interpreter.h
1 // ****************************************************************************
2 // copyright (c) 2000-2005 Horst Knorr <hk_classes@knoda.org>
3 // This file is part of the hk_classes library.
4 // This file may be distributed and/or modified under the terms of the
5 // GNU Library Public License version 2 as published by the Free Software
6 // Foundation and appearing in the file COPYING included in the
7 // packaging of this file.
8 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10 // ****************************************************************************
11 #ifndef HK_INTERPRETER
12 #define HK_INTERPRETER
13 #include "hk_class.h"
14 #ifdef HAVE_CONFIG_H
15 #include "config.h"
16 #endif
17 
18 class hk_button;
19 class hk_dslineedit;
20 class hk_dsgrid;
21 class hk_dsgridcolumn;
22 class hk_dsboolean;
23 class hk_dscombobox;
24 class hk_dsmemo;
25 class hk_dsimage;
26 class hk_dsdate;
27 class hk_dsgrid;
28 class hk_visible;
29 class hk_dsvisible;
30 class hk_dsdatavisible;
31 class hk_presentation;
32 class hk_form;
33 class hk_report;
34 class hk_reportdata;
35 class hk_subform;
36 
45 {
46 public:
48 virtual ~hk_interpreter(){}
49 virtual void init(){}
53 virtual bool on_click(hk_visible*)=0;
57 virtual bool on_doubleclick(hk_visible*)=0;
62 virtual bool before_row_change(hk_dsvisible*)=0;
66 virtual bool after_row_change(hk_dsvisible*)=0;
70 virtual bool before_update(hk_dsvisible*)=0;
75 virtual bool after_update(hk_dsvisible*)=0;
79 virtual bool before_delete(hk_dsvisible*)=0;
83 virtual bool after_delete(hk_dsvisible*)=0;
87 virtual bool before_insert(hk_dsvisible*)=0;
91 virtual bool after_insert(hk_dsvisible*)=0;
95 virtual bool on_close(hk_visible*)=0;
99 virtual bool on_open(hk_visible*)=0;
103 virtual bool on_getfocus(hk_visible*)=0;
107 virtual bool on_loosefocus(hk_visible*)=0;
108 
112 virtual bool on_key(hk_visible*)=0;
113 
117 virtual bool on_valuechanged(hk_dsdatavisible*)=0;
118 
122 virtual bool on_print_data(hk_reportdata*)=0;
126 virtual bool on_print_new_page(hk_report*)=0;
127 
128 virtual bool on_select(hk_dscombobox*)=0;
129 virtual bool on_select(hk_dsgridcolumn*)=0;
130 virtual bool load_module(const hk_string&)=0;
131 
132 void set_block_execution(bool);
133 bool block_execution(void) const;
134 
138 bool scripterror(void){return p_error_occured;}
142 hk_string errormessage(void){return p_errormessage;}
146 int error_rownumber(void){return p_error_rownumber;}
150 virtual hk_string interpretername(void) const {return "unknown";}
151 enum enum_action{ a_before_row_change,
152  a_after_row_change,
153  a_click,
154  a_doubleclick,
155  a_on_open,
156  a_on_close,
157  a_on_getfocus,
158  a_on_loosefocus,
159  a_on_key,
160  a_before_update,
161  a_after_update,
162  a_before_delete,
163  a_after_delete,
164  a_before_insert,
165  a_after_insert,
166  a_on_print_data,
167  a_on_print_new_page,
168  a_on_select,
169  a_on_valuechanged,
170  a_on_loadmodule
171  };//when gets updated don't forget to update hk_kdesimpleform/hk_kdesimplereport::script_error !!!
172 
173 protected:
174 hk_presentation* p_presentation;
175 bool p_error_occured;
176 hk_string p_errormessage;
177 int p_error_rownumber;
178 
179 private:
180 bool p_block_execution;
181 };
182 
192 {
193 public:
195 virtual bool on_click(hk_visible*);
196 virtual bool on_doubleclick(hk_visible*);
197 virtual bool before_row_change(hk_dsvisible*);
198 virtual bool after_row_change(hk_dsvisible*);
199 virtual bool before_update(hk_dsvisible*);
200 virtual bool after_update(hk_dsvisible*);
201 virtual bool on_close(hk_visible*);
202 virtual bool on_open(hk_visible*);
203 virtual bool before_delete(hk_dsvisible*);
204 virtual bool after_delete(hk_dsvisible*);
205 virtual bool before_insert(hk_dsvisible*);
206 virtual bool after_insert(hk_dsvisible*);
207 virtual bool on_print_data(hk_reportdata*);
208 virtual bool on_print_new_page(hk_report*);
209 virtual bool on_getfocus(hk_visible*);
210 virtual bool on_loosefocus(hk_visible*);
211 virtual bool on_key(hk_visible*);
212 virtual bool on_select(hk_dscombobox*);
213 virtual bool on_select(hk_dsgridcolumn*);
214 virtual bool on_valuechanged(hk_dsdatavisible*);
215 virtual bool load_module(const hk_string&);
216 private:
217 void warning(void);
218  bool warning_already_displayed;
219 };
220 
221 
222 
233 {
234 public:
236 virtual ~hk_pythoninterpreter();
237 virtual void init();
238 
239 virtual bool on_click(hk_visible*);
240 virtual bool on_doubleclick(hk_visible*);
241 virtual bool before_row_change(hk_dsvisible*);
242 virtual bool after_row_change(hk_dsvisible*);
243 virtual bool before_update(hk_dsvisible*);
244 virtual bool after_update(hk_dsvisible*);
245 virtual bool on_close(hk_visible*);
246 virtual bool on_open(hk_visible*);
247 virtual hk_string interpretername(void) const {return "python";}
248 virtual bool before_delete(hk_dsvisible*);
249 virtual bool after_delete(hk_dsvisible*);
250 virtual bool before_insert(hk_dsvisible*);
251 virtual bool after_insert(hk_dsvisible*);
252 virtual bool on_print_data(hk_reportdata*);
253 virtual bool on_print_new_page(hk_report*);
254 virtual bool on_getfocus(hk_visible*);
255 virtual bool on_loosefocus(hk_visible*);
256 virtual bool on_key(hk_visible*);
257 virtual bool on_select(hk_dscombobox*);
258 virtual bool on_select(hk_dsgridcolumn*);
259 virtual bool on_valuechanged(hk_dsdatavisible*);
260 virtual bool load_module(const hk_string&);
261 protected:
262 
263 
264 private:
265 void error_occured(enum_action action);
266 bool execute_script(const hk_string& script,enum_action action);
267 hk_string pystatement(void);
268 hk_pythoninterpreterprivate* p_privatdata;
269 
270 static int p_referencecounting;
271 
272 
273 };
274 
275 
276  hk_button* currentbutton(void);
277  hk_dslineedit* currentlineedit(void);
278  hk_dsmemo* currentmemo(void);
279  hk_dsgrid* currentgrid(void);
280  hk_dsgridcolumn* currentgridcolumn(void);
281  hk_dscombobox* currentcombobox(void);
282  hk_dsboolean* currentboolean(void);
283  hk_form* currentform(void);
284  hk_report* currentreport(void);
285  hk_reportdata* currentreportdata(void);
286  hk_dsvisible* currentdsvisible(void);
287  hk_visible* currentvisible(void);
288  hk_dsimage* currentdsimage(void);
289  hk_dsdate* currentdsdate(void);
290  hk_button *cast_button(hk_visible*);
291  hk_dslineedit *cast_dslineedit(hk_visible*);
292  hk_dsmemo *cast_dsmemo(hk_visible*);
293  hk_dsgrid *cast_dsgrid(hk_visible*);
294  hk_dsgridcolumn *cast_dsgridcolumn(hk_visible*);
295  hk_dscombobox *cast_dscombobox(hk_visible*);
296  hk_dsboolean *cast_dsboolean(hk_visible*);
297  hk_dsimage *cast_dsimage(hk_visible*);
298  hk_dsdate *cast_dsdate(hk_visible*);
299  hk_dsvisible *cast_dsvisible(hk_visible*);
300  hk_form *cast_form(hk_visible*);
301  hk_report *cast_report(hk_visible*);
302  hk_reportdata *cast_reportdata(hk_visible*);
303  hk_subform *cast_subform(hk_visible*);
304 
305 #endif //HK_INTERPRETER
306 
base class for widgets which show multi column data in a grid.
Definition: hk_dsgrid.h:26
base class for a button in a form
Definition: hk_button.h:25
virtual bool after_update(hk_dsvisible *)=0
virtual bool on_open(hk_visible *)
Definition: hk_interpreter.cpp:416
basic class for all other defined classes.
Definition: hk_class.h:52
virtual bool before_insert(hk_dsvisible *)=0
virtual bool before_update(hk_dsvisible *)=0
base class for visible widgets without column data connection
Definition: hk_dsvisible.h:31
virtual bool after_insert(hk_dsvisible *)
Definition: hk_interpreter.cpp:131
virtual bool on_loosefocus(hk_visible *)=0
virtual bool on_getfocus(hk_visible *)
Definition: hk_interpreter.cpp:177
basic dummy interpreter class that returns a warning message
Definition: hk_interpreter.h:191
virtual bool before_update(hk_dsvisible *)
Definition: hk_interpreter.cpp:321
virtual bool after_row_change(hk_dsvisible *)
Definition: hk_interpreter.cpp:398
structure of a column in a grid
Definition: hk_dsgridcolumn.h:29
virtual bool after_delete(hk_dsvisible *)
Definition: hk_interpreter.cpp:111
virtual bool on_doubleclick(hk_visible *)=0
virtual bool on_print_data(hk_reportdata *)=0
bool scripterror(void)
Definition: hk_interpreter.h:138
base class for forms
Definition: hk_form.h:43
virtual bool before_row_change(hk_dsvisible *)
Definition: hk_interpreter.cpp:385
base class for lineedit fields
Definition: hk_dslineedit.h:24
virtual bool on_key(hk_visible *)
Definition: hk_interpreter.cpp:313
virtual bool on_click(hk_visible *)
Definition: hk_interpreter.cpp:138
virtual bool after_update(hk_dsvisible *)
Definition: hk_interpreter.cpp:98
Definition: hk_interpreter.cpp:32
virtual bool on_close(hk_visible *)
Definition: hk_interpreter.cpp:150
virtual bool on_print_new_page(hk_report *)
Definition: hk_interpreter.cpp:171
virtual bool on_loosefocus(hk_visible *)
Definition: hk_interpreter.cpp:183
virtual bool on_valuechanged(hk_dsdatavisible *)=0
virtual bool after_insert(hk_dsvisible *)
Definition: hk_interpreter.cpp:371
virtual bool on_print_data(hk_reportdata *)
Definition: hk_interpreter.cpp:434
virtual bool before_update(hk_dsvisible *)
Definition: hk_interpreter.cpp:92
virtual bool on_getfocus(hk_visible *)=0
virtual bool on_loosefocus(hk_visible *)
Definition: hk_interpreter.cpp:305
virtual bool on_close(hk_visible *)=0
Definition: hk_dsimage.h:20
virtual bool before_delete(hk_dsvisible *)
Definition: hk_interpreter.cpp:105
base class for boolean fields.
Definition: hk_dsboolean.h:25
virtual bool before_row_change(hk_dsvisible *)=0
virtual bool before_insert(hk_dsvisible *)
Definition: hk_interpreter.cpp:362
represents the data of a field within a section.
Definition: hk_reportdata.h:75
base class for memofields
Definition: hk_dsmemo.h:24
virtual bool on_click(hk_visible *)=0
virtual bool on_print_new_page(hk_report *)
Definition: hk_interpreter.cpp:442
virtual bool on_valuechanged(hk_dsdatavisible *)
Definition: hk_interpreter.cpp:425
int error_rownumber(void)
Definition: hk_interpreter.h:146
virtual bool before_delete(hk_dsvisible *)=0
base class for visible widgets
Definition: hk_visible.h:35
virtual bool after_update(hk_dsvisible *)
Definition: hk_interpreter.cpp:334
virtual bool on_close(hk_visible *)
Definition: hk_interpreter.cpp:407
virtual hk_string interpretername(void) const
Definition: hk_interpreter.h:150
virtual bool on_open(hk_visible *)
Definition: hk_interpreter.cpp:156
base class for multidatasource based classes like forms and reports
Definition: hk_presentation.h:40
virtual bool before_insert(hk_dsvisible *)
Definition: hk_interpreter.cpp:125
base class for visible widgets with data connection
Definition: hk_dsdatavisible.h:32
virtual bool before_row_change(hk_dsvisible *)
Definition: hk_interpreter.cpp:78
virtual bool on_click(hk_visible *)
Definition: hk_interpreter.cpp:282
basic class to create reports
Definition: hk_report.h:52
hk_string errormessage(void)
Definition: hk_interpreter.h:142
basic class for script handling
Definition: hk_interpreter.h:44
virtual bool on_key(hk_visible *)
Definition: hk_interpreter.cpp:189
virtual bool on_doubleclick(hk_visible *)
Definition: hk_interpreter.cpp:290
base class for combobox fields
Definition: hk_dscombobox.h:32
virtual bool before_delete(hk_dsvisible *)
Definition: hk_interpreter.cpp:343
represents a subform in a form
Definition: hk_subform.h:28
virtual bool on_valuechanged(hk_dsdatavisible *)
Definition: hk_interpreter.cpp:118
virtual bool on_open(hk_visible *)=0
virtual hk_string interpretername(void) const
Definition: hk_interpreter.h:247
virtual bool on_getfocus(hk_visible *)
Definition: hk_interpreter.cpp:298
virtual bool after_insert(hk_dsvisible *)=0
virtual bool after_delete(hk_dsvisible *)=0
virtual bool after_row_change(hk_dsvisible *)=0
virtual bool on_print_data(hk_reportdata *)
Definition: hk_interpreter.cpp:163
virtual bool after_delete(hk_dsvisible *)
Definition: hk_interpreter.cpp:352
virtual bool on_doubleclick(hk_visible *)
Definition: hk_interpreter.cpp:144
virtual bool after_row_change(hk_dsvisible *)
Definition: hk_interpreter.cpp:85
virtual bool on_key(hk_visible *)=0
basic class for Python script handling
Definition: hk_interpreter.h:232
Definition: hk_dsdate.h:16
virtual bool on_print_new_page(hk_report *)=0