Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

hk_report.h

00001 // ****************************************************************************
00002 // copyright (c) 2000-2004 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_REPORT
00012 #define HK_REPORT
00013 #include "hk_definitions.h"
00014 #include "hk_presentation.h"
00015 #include <list>
00016 #include <vector>
00017 //#include <iostream>
00018 //#include <fstream>
00019 #include <time.h>
00020 #include <map>
00021 using namespace std;
00022 
00023 class hk_reportsection;
00024 class hk_reportdata;
00025 class hk_report;
00026 class hk_column;
00027 
00028 class hk_reportprivate;
00029 
00051 class hk_report :public hk_presentation
00052 {
00053     friend class hk_reportsectionpair;
00054     friend class hk_reportsection;
00055     public:
00056         hk_report(void);
00057         virtual       ~hk_report(void);
00065         void          set_filename(const hk_string&,bool registerchange=true);
00066         hk_string     filename(void);
00072         void          set_use_standard_storagepath(bool s=true);
00073         bool          use_standard_storagepath(void);
00078         hk_string     outputfile(void);
00079 
00084         void          set_begin(const hk_string&,bool registerchange=true);
00085         hk_string     begin(void);
00090         void          set_end(const hk_string&,bool registerchange=true);
00091         hk_string     end(void);
00095         hk_reportsection* page_header(void);
00099         hk_reportsection* page_footer(void);
00103         hk_reportsection* report_header(void);
00107         hk_reportsection* report_footer(void);
00108 
00113         hk_reportsection* datasection(void);
00114 
00119         hk_reportsectionpair* new_sectionpair(bool registerchange=true);
00124         hk_reportsectionpair* new_sectionpair_at(unsigned int position,bool registerchange=true);
00130         bool move_sectionpair(unsigned int actualposition,int steps);
00131 
00136         bool          execute(void);
00137        virtual bool            set_mode(enum_mode s);
00138 
00144         void        set_recodefunction(const hk_string& r,bool registerchange=true);
00145         recodefunctiontype* recodefunction(void);
00146         hk_string       recodefunctionstring(void);
00147 
00148         static void add_recodetype(const hk_string& name,recodefunctiontype* f);
00149         static list<hk_string>* recodelist(void);
00154         static list<hk_string>* fontencodinglist(void);
00155         static bool set_fontencoding(int );
00156         static bool set_fontencoding(const hk_string&);
00157         static hk_string   fontencodingstring(void);
00158         static int      fontencoding(void);
00159 
00160         void        new_page(void);
00161 
00166         void        set_pagedelimiter(const hk_string& d,bool registerchange=true);
00167         hk_string   pagedelimiter(void);
00171         vector<hk_reportsectionpair*>* sectionpairs(void);
00176         virtual void    set_multiplefiles(bool m=true,bool registerchange=true);
00177         bool    multiplefiles(void);
00181         void        set_fileextension(const hk_string& ext,bool registerchange=true);
00182         hk_string   fileextension(void);
00186         void        set_firstpagenumber(long int f,bool registerchange=true);
00187         long int    firstpagenumber(void);
00193         void        set_pagenamecolumn(const hk_string& c,bool registerchange=true);
00194         hk_string   pagenamecolumn(void);
00198         void        set_filebegin(const hk_string& b,bool registerchange=true);
00199         hk_string   filebegin(void);
00203         void        set_fileend(const hk_string& e,bool registerchange=true);
00204         hk_string   fileend(void);
00212         void        set_periodic(unsigned long when, const hk_string& what="",bool newpage=false,bool registerchange=true);
00213         unsigned long   periodic_when(void);
00214         hk_string   periodic_what(void);
00215         bool        periodic_newpage(void);
00216 
00220         ostream*    outputstream(void);
00226         void    set_masterreport(hk_report* m);
00227         hk_report* masterreport(void);
00228 
00232         void        rowcount(unsigned long);
00233         virtual hk_font font(void);
00240         long pagenumber(void);
00241         long absolutepagenumber(void);
00242         unsigned long rownumber(void);
00243 
00244         virtual bool        set_presentationdatasource(long n, bool registerchange=true);
00245 
00246         virtual bool save_report(const hk_string& name="",bool ask=true);
00247         virtual bool load_report(const hk_string& name="");
00248         virtual void  savedata(ostream& s);
00249         virtual void  loaddata(const hk_string& definition);
00250 
00255         hk_string   default_reportdata(void);
00256         void        set_default_reportdata(const hk_string& v,bool registerchange=true);
00260         hk_string   default_beforereportdata(void);
00261         void        set_default_beforereportdata(const hk_string& v,bool registerchange=true);
00265         hk_string   default_afterreportdata(void);
00266         void        set_default_afterreportdata(const hk_string& v,bool registerchange=true);
00267 
00268         int         default_reportprecision(void);
00269         void        set_default_reportprecision(int, bool registerchange=true);
00270 
00271         bool        default_use_reportseparator(void);
00272         void        set_default_use_reportseparator(bool, bool registerchange=true);
00273 
00277         void            set_default_reportdataconfigurefunction(const hk_string& f,bool registerchange=true);
00278         hk_string   default_reportdataconfigurefunction(void);
00284         void set_default_reportsectionbegin(const hk_string& e,bool registerchange=true);
00285         hk_string default_reportsectionbegin(void);
00286 
00292         void set_default_reportsectionend(const hk_string& e,bool registerchange=true);
00293         hk_string default_reportsectionend(void);
00299         void set_default_reportsectionbetweendata(const hk_string& b,bool registerchange=true);
00300         hk_string default_reportsectionbetweendata(void);
00306         void set_default_reportsectioncountfunction(const hk_string& f,bool registerchange=true);
00307         hk_string default_reportsectioncountfunction(void);
00308 
00312         void    set_topline(bool l=true,bool registerchange=true);
00313         bool    topline(void);
00317         void    set_bottomline(bool l=true,bool registerchange=true);
00318         bool    bottomline(void);
00323         void    set_leftline(bool l=true,bool registerchange=true);
00324         bool    leftline(void);
00325 
00329         void    set_rightline(bool l=true,bool registerchange=true);
00330         bool    rightline(void);
00334         void    set_diagonalluro(bool l=true,bool registerchange=true);
00335         bool    diagonalluro(void);
00339         void    set_diagonalloru(bool l=true,bool registerchange=true);
00340         bool    diagonalloru(void);
00345         void    set_frame(bool l=true,bool registerchange=true);
00346 
00350         void    set_borders(unsigned int left=200,unsigned  int right=200,unsigned  int top=200,unsigned  int bottom=300,bool registerchange=true);
00351         unsigned int    border_left(void);
00352         unsigned int    border_right(void);
00353         unsigned int    border_top(void);
00354         unsigned int    border_bottom(void);
00355         enum    orientationtype{landscape,portrait};
00359         void    set_orientation(orientationtype o=portrait,bool registerchange=true);
00360         orientationtype orientation(void);
00361         enum    pageformattype {A0=0,A1=1,A2=2,A3=3,A4=4,A5=5,A6=6,A7=7,A8=8,A9=9,A10=10,letter=11,legal=12,executive=13,tabloid=14,userdefined=15}
00362         ;
00366         void    set_pageformat(pageformattype t=A4,bool registerchange=true);
00370         void    set_pageformat(unsigned int width ,unsigned int height,bool registerchange);
00371         pageformattype pageformat(void);
00375         unsigned int    formatwidth(pageformattype t=A4) ;
00379         unsigned int    formatheight(pageformattype t=A4);
00380         void    set_reportconfigurefunction(const hk_string& f,bool registerchange);
00381 
00382         void    set_reporttype(const hk_string&,bool registerchange=true);
00383         hk_string reporttype(void);
00384 
00385         static void add_reporttype(const hk_string& name,reporttypefunction* f);
00386         static list<hk_string>* reporttypelist(void);
00387 
00388         void    configure_page(void);
00389         void    neutralize_definition(bool registerchange);
00393         void    init_report(void);
00394         static void add_configurefunctiontype(const hk_string& name,report_configurefunction* f);
00395         static list<hk_string>* configurefunctionlist(void);
00396 
00397         void   remove_sectionpair(hk_reportsectionpair*,bool registerchange=true);
00398         list<hk_string>* neededfonts(void);
00399         list<hk_string>* usedfonts(void);
00403         static void set_printcommand(const hk_string& printcommand);
00404         static hk_string printcommand(void);
00405 
00409         bool print_report(bool execute_before_printing=true);
00410 
00411         unsigned int    designwidth(void);
00412         unsigned int    designheight(void);
00413         unsigned int        horizontal2relativ(unsigned int h);
00414         unsigned int        vertical2relativ(unsigned int v);
00415         unsigned int        relativ2horizontal(unsigned int r);
00416         unsigned int        relativ2vertical(unsigned int r);
00417         virtual void bulk_operation(enum_bulkoperation bulkoperation);
00418 static  void setup_reportbasics(void);
00419 hk_reportdata* get_reportdatavisible(long nr);
00420 hk_reportdata* get_reportdatavisible(const hk_string& identifier);
00421 
00422 void set_on_new_page_action(const hk_string&,bool registerchange=true);
00423 hk_string on_new_page_action(void);
00424 void stop_execution(void);
00425 bool execution_stopped(void);
00426 
00427 
00428     protected:
00429         void   remove_section(hk_reportsection*);
00430         virtual hk_string replace(const hk_string& where);
00431         virtual bool datasource_disable(void);
00432         virtual bool before_columns_deleted(void);
00433 
00437         virtual bool widget_specific_before_new_page(void);
00438 
00442         virtual bool widget_specific_after_new_page(void);
00443 
00444         virtual hk_reportsection* widget_specific_new_section(void);
00445         virtual void    widget_specific_after_loadreport(void){}
00446         virtual void    widget_specific_before_execute(void){}
00447         virtual void    widget_specific_after_first_outstream_created(void){}
00448         virtual void    widget_specific_before_last_outstream_closed(void){}
00449         virtual void    widget_specific_after_execute(void){}
00450         void remove_all_sections(void);
00451 
00452         bool        p_multiplefiles;
00453         vector<hk_reportsectionpair*> p_sectionpairs;
00454 
00455         hk_string p_default_data;
00456         hk_string p_default_beforedata;
00457         hk_string p_default_afterdata;
00458         hk_string p_default_dataconfigurefunction;
00459         virtual void sizetype_changed(void);
00460 
00461         virtual bool action_on_new_page(void);
00462 
00463     private:
00464         void init_section(hk_reportsection*);
00465         bool internal_execute();
00466         void    new_outputstream(void);
00467         void    set_pagenumber(long int f);
00468         void    create_fontslists(void);
00469         bool    is_newfont(const hk_string&);
00470         void    search_sectionfonts(hk_reportsection*);
00471         hk_reportprivate* p_private;
00472 //      bool            p_lastpage;
00473 
00474         typedef  map<hk_string,reporttypefunction*,less<hk_string> >  reporttypelisttype ;
00475         static    reporttypelisttype  p_reporttypefunctions;
00476         static  list<hk_string> p_reporttypelist;
00477 
00478         typedef  map<hk_string,recodefunctiontype*,less<hk_string> >  recodefunctionlisttype ;
00479         static    recodefunctionlisttype  p_recodefunctions;
00480         static  list<hk_string> p_recodelist;
00481         static list<hk_string> p_fontencodinglist;
00482 
00483         typedef  map<hk_string,report_configurefunction*,less<hk_string> >  reportconfigurelisttype ;
00484         static    reportconfigurelisttype  p_reportconfigurefunctions;
00485         static  list<hk_string> p_reportconfigurelist;
00486         static int p_fontencoding;
00487 
00488         static int p_defaultfilenumber;
00489         static hk_string p_printcommand;
00490 
00491 }
00492 
00493 
00494 ;
00495 #endif

Generated on Tue Mar 22 19:28:08 2005 for Databaseconnectionclasses by  doxygen 1.4.1