/* Module ut/help_gen /HELP_GEN.ic ***************************************************************************** Authors: grt@softlab.de */ #include for_spu.h // #define HELPCOMP_hc alter Compiler #define HELPCOMP_hcw neuer Compiler #define not_rtf( x,e ) ( 0 ) #define L_ourPath ( L_path - 0 ) // #define L_ourPath ( L_path - 50 ) // 16 Bit #define Path ourPath
typedef char   ourPath[ L_ourPath ]
;
struct  on_page
{ on_page :: on_page(); char * pt ; // char * suggested ; // page to jump to BOOL ref ; // is a reference only int depth ; // of page tree seen by user on_page * next ; };
struct  on_alias
{ on_alias :: on_alias(); on_page * map ; // alias on_page * to ; // to page on_alias * next ; };
class help_gen
: public EStandardServices /* _____________________________________________________________________________ R e u s e . f o r . Creating MS Help Systems to create Windows Help Systems (to be used via MS winhelp.exe - hence an now obsolete solution). _____________________________________________________________________________ */ { public: FILE * rtf ; int missing_pages ; // number of unspecified pages protected: private:
struct  on_ptc
{ on_ptc :: on_ptc(); char * ptc ; // truncated ptc on_ptc * next ; } ;
struct  on_bitmap
top . C++
{ on_bitmap :: on_bitmap(); char * file ; // Path relativ to *.hpj [ROOT] on_bitmap * next ; } ; on_bitmap * bitmap ; on_alias * alias ; on_page * end_index ; on_page * page ; on_ptc * truncated ; // see set_ptc() str_set * strset ; char norm[ 256 ] ; // norm for coding page titles char ptc [ 100 ] ; // container for page title code char * ptc_a ; char * ptc_e ; char * pt_current ; // title of current page char * nt_style ; // normal text style char * pt_style ; // page topic style char * ms_style ; // char * hs_style ; // char * hot_spot_style ; // char * fK ; // Path end_of_page ; // Path doc_pt ; // document's title Path doc_st ; // document's subtitle Path pro ; // project name Path fat ; // file at Path edit_cont ; // Path raw_rtf ; // int e_fat ; int page_nr ; int anz_pages ; BOOL pop_ups_only ; BOOL no_title_page ; BOOL title_created ; BOOL mit_Werbung ; FILE * hpj ; // FILE * cnt ; // FILE * hh ; // file mapping ptc's to integer codes char_subset trenner ; char ptc_sorry[ 12 ]; #define rtf_mat 12 FILE * rtf_stack[ rtf_mat ] ; int rtf_at ; int format ; #define for_cc_help 1 // exported methods: public: help_gen :: help_gen /* ----------------------------------------------------------------------------- Der Aufrufer garantiert: - Keiner der beiden Strings doc, st enth„lt einen Backslash. Dir Funktion garantiert: errno == 0 ----------------------------------------------------------------------------- */ ( char * root , char * pro_ID // name of the new help system, BOOL nur_pop_ups // each hot spot is pop up, char * doc // document's title, char * st // document's subtitle, char * fonts // "GEW" or default (= GRT Fonts) ) ; public: ~help_gen( /* ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- */ ) ; public: void help_gen :: title_page( /* ----------------------------------------------------------------------------- create title page for help system ----------------------------------------------------------------------------- */ ) ; public: void help_gen :: Werbung( /* ----------------------------------------------------------------------------- create title page for help system ----------------------------------------------------------------------------- */ ) ; public: void help_gen :: Push /* ----------------------------------------------------------------------------- Create subpages of the current page ----------------------------------------------------------------------------- */ ( char * rtftext ) ; public: void help_gen :: Pop( /* ----------------------------------------------------------------------------- end of page containing subpages ----------------------------------------------------------------------------- */ ) ; public: void help_gen :: PrePop( /* ----------------------------------------------------------------------------- not yet end of page containing subpages ----------------------------------------------------------------------------- */ ) ; public: int help_gen :: new_page /* ----------------------------------------------------------------------------- start specifying a new help page ----------------------------------------------------------------------------- */ ( char * pt , char * keys // keywords, char * ptu // page title as seen by the user ) ; public: void help_gen :: new_page /* ----------------------------------------------------------------------------- start specifying a new help page ----------------------------------------------------------------------------- */ ( char * pt , char * keys // keywords, char * ptu // page title as seen by the user, char * id // of resource ) ; public: virtual void help_gen :: trace /* ----------------------------------------------------------------------------- trace current pages of a Help System 'hs ----------------------------------------------------------------------------- */ ( char * hs , FILE * to ) ; public: void help_gen :: ins_macro /* ----------------------------------------------------------------------------- insert a hot spot calling a help macro ----------------------------------------------------------------------------- */ ( char * ref , char * mac // the macro to be called ) ; public: void help_gen :: X_hot_spot /* ----------------------------------------------------------------------------- insert a hot spot X_...___ ----------------------------------------------------------------------------- */ ( char * ref , char * pt // title of destination page ) ; public: void help_gen :: hot_spot /* ----------------------------------------------------------------------------- how //0: popup how //1: goto how //2: goto + popup how //3: popup + goto ----------------------------------------------------------------------------- */ ( char * pre , char * ref // the green words, char * pt // title of destination page, int how //, char * pst // ) ; public: void help_gen :: ins_keyword /* ----------------------------------------------------------------------------- Der Aufrufer sagt: kw ist noch nicht key zur current page - mache es dazu. Die Funktion garantiert: errno = 0 ----------------------------------------------------------------------------- */ ( char * kw ) ; public: void help_gen :: ins_bitmap /* ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- */ ( char * file_at ) ; public: void help_gen :: ins_mae_text /* ----------------------------------------------------------------------------- insert text given in IBM Code ----------------------------------------------------------------------------- */ ( char * style , char * text // ) ; public: void help_gen :: ins_semihot_rtf /* ----------------------------------------------------------------------------- Der Aufrufer garantiert: - String 'a ist ein rtf-Textblock { ... } . - Auftrag: Schreibe diesen Block in die gerade offene Help Seite nachdem all jene Worte zu Hot Spots wurden, die mit einer in make_hot genannten Silbe beginnen. Die Funktion garantiert: errno = EN_ok ----------------------------------------------------------------------------- */ ( char * a , str_set * make_hot // ) ; public: void help_gen :: ins_text /* ----------------------------------------------------------------------------- Der Aufrufer sagt: Append first 'plus then the 'text to the current page. Die Funktion antwortet: fErr || ok ----------------------------------------------------------------------------- */ ( char * style , char * plus //, char * text //, BOOL notrtf // ) ; public: void help_gen :: ins_text /* ----------------------------------------------------------------------------- Der Aufrufer sagt: Append this 'text to the current page. Die Funktion antwortet: fErr || ok ----------------------------------------------------------------------------- */ ( char * style , char * text //, BOOL not_rtf // ) ; public: void help_gen :: pt_alias /* ----------------------------------------------------------------------------- create a new alias for the page title currently coded in ptc ----------------------------------------------------------------------------- */ ( char * pt_a , char * pt // for this one ) ; public: void help_gen :: ins_index /* ----------------------------------------------------------------------------- Der Aufrufer sagt: Das Help System ist (bis auf einen Index) komplett. Nun erzeuge eben diesen Index. Die Funktion garantiert: errno = ok oder fErr . ----------------------------------------------------------------------------- */ ( ) ; public: int help_gen :: NotRtf /* ----------------------------------------------------------------------------- Return number of characters not allowed by Rtf and replace them by '?' ----------------------------------------------------------------------------- */ ( char * c , char e ) ; public: void help_gen :: er_data_help /* ----------------------------------------------------------------------------- Der Aufrufer garantiert: - In Datei 'from' steht ein Entity Relationship Netz aufgeschrieben in durch den ER Compiler akzeptierter Syntax. - Aufrufers Auftrag: Nehme diese Daten mit ins Help System auf. Die Funktion garantiert: errno = 0 ----------------------------------------------------------------------------- */ ( char * from ) ; public: void help_gen :: cc_data_help /* ----------------------------------------------------------------------------- Der Aufrufer garantiert: - In Datei 'from' steht ein durch pretty.exe genormtes C++ Header File. - Aufrufers Auftrag: Nehme diese Daten mit ins Help System auf. Die Funktion garantiert: errno = 0 ----------------------------------------------------------------------------- */ ( char * from ) ; public: void help_gen :: alpk_help /* ----------------------------------------------------------------------------- Der Aufrufer sagt: In Datei 'from' steht AL-PK Design. Nehme es auf ins Help System. Die Funktion garantiert: errno = 0 ----------------------------------------------------------------------------- */ ( char * from ) ; public: void help_gen :: exe_dir /* ----------------------------------------------------------------------------- Der Aufrufer garantiert: - from der Name einer Datei, die Abschnitte '\n Syntax: ... ' ent- h„lt (= short descriptions of executables) - Aufrufers Auftrag: Nehme diese Beschreibungen mit ins Help System auf. Die Funktion garantiert: errno = 0 ----------------------------------------------------------------------------- */ ( char * from ) ; public: void help_gen :: Beitrag_zum_Glossar /* ----------------------------------------------------------------------------- Der Aufrufer garantiert: - In Datei 'from steht Rtf-Text, der zu einem Windows Help System werden soll. Gesucht werden minimale Abschnitte der Form {\b ...} ... {\b ...} {\b ...} ... {\b .} wo die ersten ... zum Titel einer Help Page werden, welche als Inhalt genau den durch die zweiten ... angedeuteten Text enth„lt. Hot Spots ... werden gesucht als Abschnitte {\b\i ...} Jener Text ..., der Titel oder Hot Spot ist, darf im Rtf Source kein weiteres Klammernpaar { ... } enthalten. - Aufrufers Auftrag: Schreibe diese Seiten mit ins Helpsystem. Die Funktion garantiert: errno = 0 ----------------------------------------------------------------------------- */ ( char * from ) ; public: void help_gen :: Beispiel /* ----------------------------------------------------------------------------- Der Aufrufer garantiert: - In Datei 'from steht Rtf-Text, der zu einem Windows Help System werden soll. Gesucht werden minimale Abschnitte der Form {\i ...} ... {\i ...} {\i ...} ... {\i .} wo die ersten ... zum Titel einer Help Page werden, welche als Inhalt genau den durch die zweiten ... angedeuteten Text enth„lt. Hot Spots ... werden gesucht als Abschnitte {\b\i ...} Jener Text ..., der Titel oder Hot Spot ist, darf im Rtf Source kein weiteres Klammernpaar { ... } enthalten. - Aufrufers Auftrag: Schreibe diese Seiten mit ins Helpsystem. Die Funktion garantiert: errno = 0 ----------------------------------------------------------------------------- */ ( char * from ) ; #include help_gen.h3 } ; #endif