<HTML> <HEAD> <TITLE>Source: hk_classes/hk_classes/hk_dsvisible.h</TITLE> <META NAME="Generator" CONTENT="KDOC "> </HEAD> <BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff"> <TABLE WIDTH="100%" BORDER="0"> <TR> <TD> <TABLE BORDER="0"> <TR><TD valign="top" align="left" cellspacing="10"> <h1>Source: hk_classes/hk_classes/hk_dsvisible.h</h1> </TD> <TD valign="top" align="right" colspan="1"></TD></TR> </TABLE> <HR> <TABLE BORDER="0"> </TABLE> </TD> <TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR> <TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR> <TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR> <TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR> <TR><TD><small><A HREF="index.html">Index</A></small></TD></TR> </TABLE></TD></TR></TABLE> <pre> // **************************************************************************** // copyright (c) 2000-2002 Horst Knorr <hk_classes@knoda.org> // This file is part of the hk_classes library. // This file may be distributed and/or modified under the terms of the // GNU Library Public License version 2 as published by the Free Software // Foundation and appearing in the file COPYING included in the // packaging of this file. // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // **************************************************************************** #ifndef HK_DSVISIBLE #define HK_DSVISIBLE #include <hk_definitions.h> #include <hk_visible.h> #include <hk_datetime.h> using namespace std; class hk_dsvisiblemodeprivate; class hk_dsvisibleprivate; /** * *@short base class for visible widgets without column data connection *@version $Revision: 1.2 $ *@author Horst Knorr (hk_classes@knoda.org) *This is the base class for visible widgets which do not need access to the data, *but do have to know whether or not a datasource is enabled and which row is the actual one. */ class hk_dsvisible:public hk_visible { friend class hk_datasource; public: hk_dsvisible(hk_presentation* presentation=NULL); virtual ~hk_dsvisible(void); virtual void set_datasource(hk_datasource* d); virtual bool set_presentationdatasource(long n, bool registerchange=true); long presentationdatasource(void); hk_datasource* datasource(void); virtual void savedata(ostream& s, bool savedatasource,bool saveall); virtual void savedata(ostream& s ); virtual void loaddata(const hk_string& definition); void set_readonly(bool readonly); bool is_readonly(void) const; /** * sets the script for the before_row_change action * The before_row_change action before the current row changes */ void set_before_row_change_action(const hk_string&, bool registerchange=true); hk_string before_row_change_action(void); /** * sets the script for the after_row_change action * The after_row_change action after the current row changes */ void set_after_row_change_action(const hk_string&, bool registerchange=true); hk_string after_row_change_action(void); /** * sets the script for the before_update action * The before_update action before data changes will be stored */ void set_before_update_action(const hk_string&, bool registerchange=true); hk_string before_update_action(void); /** * sets the script for the after_update action * The after_update action after data changes will be stored */ void set_after_update_action(const hk_string&, bool registerchange=true); hk_string after_update_action(void); /** * sets the script for the before_delete action * The before_delete action before the current row will be deleted */ void set_before_delete_action(const hk_string&, bool registerchange=true); hk_string before_delete_action(void); /** * sets the script for the after_delete action * The after_delete action after the current row was deleted */ void set_after_delete_action(const hk_string&, bool registerchange=true); hk_string after_delete_action(void); /** * sets the script for the before_insert action * The before_insert action before a new row will be inserted */ void set_before_insert_action(const hk_string&, bool registerchange=true); hk_string before_insert_action(void); /** * sets the script for the after_insert action * The after_insert action after a new row was inserted */ void set_after_insert_action(const hk_string&, bool registerchange=true); hk_string after_insert_action(void); protected: void row_change(void); void insert_mode(void); /** *FOR WIDGET DEVELOPERS ONLY: * will be automatically called when the datasource will be set to insert_mode. *Has to be rewritten for a new widget * @see before_row_change. * */ virtual void widget_specific_insert_mode(void){} /** *FOR WIDGET DEVELOPERS ONLY: * will be automatically called when the datasource has changed the row. *Has to be rewritten for a new widget * @see before_row_change. * */ virtual bool widget_specific_row_change(void) {return false;} /** *FOR WIDGET DEVELOPERS ONLY: * defines whether the widget should be enabled or disabled. Has to be rewritten * for a new widget */ virtual void widget_specific_enable_disable(void){} virtual void widget_specific_enable(void){} virtual void widget_specific_disable(void){} virtual void widget_specific_row_added(void){} virtual void widget_specific_row_deleted(void){} /** *FOR WIDGET DEVELOPERS ONLY: *called from hk_datasource before it tries to change the row or disable *widget can i.e. store changed data there */ virtual void before_row_change(void); virtual void before_store_changed_data(void); virtual void after_store_changed_data(void); virtual void before_insert_row(void){} virtual void before_datasource_enables(void){} /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called when the datasources is disabling */ virtual bool datasource_disable(void); /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called when the datasources is enabling */ virtual bool datasource_enable(void); /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called when the datasources is destroyed */ virtual void datasource_delete(void); /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called when the datasources creates new columns *i.e.when enabling,disabling or when a depending datasource has to requery *its rows. */ virtual void row_added(void); virtual void row_deleted(void); virtual bool columns_new_created(void){return true;} virtual void list_changes(filetype type); /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called before the columns will be deleted. *usually column pointers will be set to NULL in this function. *i.e.when enabling,disabling or when a depending datasource has to requery *its rows. */ virtual bool before_columns_deleted(void){return true;} /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called after the columnstructure of a table *was successfully altered. */ virtual bool table_structure_changes(void){return true;} /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called before the database will be closed.(i.e when a new database will *be created and the old one will be destroyed by hk_connection */ virtual void before_source_vanishes(void); /** *FOR WIDGET DEVELOPERS ONLY: *will be automatically called before the presentationdatasource will be set */ virtual void widget_specific_presentationdatasource(long){} virtual void presentationmode_changed(void); hk_datasource* p_datasource; hk_datetime p_date; #ifdef HK_DEBUG hk_string debug_p_columnname; #endif private: void action_before_store_changed_data(void); void action_after_store_changed_data(void); void action_before_row_change(void); void action_after_row_change(void); void action_before_delete(void); void action_after_delete(void); void action_before_insert(void); void action_after_insert(void); hk_dsvisiblemodeprivate* p_designdata; hk_dsvisiblemodeprivate* p_viewdata; hk_dsvisibleprivate* p_private; //p_already_handled is used from hk_datasource in bulk operations to find out if this object has been already handled. bool p_already_handled; }; #endif </pre> <HR> <table> <tr><td><small>Generated by: horst on horstnotebook on Wed Sep 24 10:38:50 2003, using kdoc 2.0a54.</small></td></tr> </table> </BODY> </HTML>