wxWidgets/include/wx/html/htmlhelp.h
Robert Roebling 4dcaf11a7b Small distrib updates,
tried to find a bug in html which was somewhere else,
  added wxYield() call to wxBeginBusyCursor() which
    should make the cursor appear immediately,
  corrected wxMiniFrame so that clicking on the titlebar
    makes it come to the front
  Used CreateBase() in all controls


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3171 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1999-07-27 20:23:13 +00:00

225 lines
7.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: htmlhelp.h
// Purpose: Help controller
// Author: Vaclav Slavik
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __HTMLHELP_H__
#define __HTMLHELP_H__
#ifdef __GNUG__
#pragma interface "htmlhelp.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/window.h"
#include "wx/config.h"
#include "wx/splitter.h"
#include "wx/notebook.h"
#include "wx/listctrl.h"
#include "wx/html/htmlwin.h"
//--------------------------------------------------------------------------------
// helper classes & structs - please ignore 'em
//--------------------------------------------------------------------------------
class WXDLLEXPORT HtmlBookRecord : public wxObject
{
public:
wxString m_BasePath;
wxString m_Title;
wxString m_Start;
HtmlBookRecord(const wxString& basepath, const wxString& title, const wxString& start) {m_BasePath = basepath; m_Title = title; m_Start = start;}
wxString GetTitle() const {return m_Title;}
wxString GetStart() const {return m_Start;}
wxString GetBasePath() const {return m_BasePath;}
};
#undef WXDLLEXPORTLOCAL
#define WXDLLEXPORTLOCAL WXDLLEXPORT
// ?? Don't know why - but Allen Van Sickel reported it to fix problems with DLL
WX_DECLARE_OBJARRAY(HtmlBookRecord, HtmlBookRecArray);
#undef WXDLLEXPORTLOCAL
#define WXDLLEXPORTLOCAL
typedef struct
{
short int m_Level;
int m_ID;
char* m_Name;
char* m_Page;
HtmlBookRecord *m_Book;
} HtmlContentsItem;
//--------------------------------------------------------------------------------
// wxHtmlHelpController
// This class ensures dislaying help.
// See documentation for details on its philosophy.
//
// WARNING!!
// This class is not derived from wxHelpController and is not
// compatible with it!
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlHelpController : public wxEvtHandler
{
DECLARE_DYNAMIC_CLASS(wxHtmlHelpController)
protected:
wxConfigBase *m_Config;
wxString m_ConfigRoot;
// configuration file/registry used to store custom settings
wxString m_TitleFormat;
// title of the help frame
wxString m_TempPath;
wxFrame *m_Frame;
wxHtmlWindow *m_HtmlWin;
wxSplitterWindow *m_Splitter;
wxNotebook *m_NavigPan;
wxTreeCtrl *m_ContentsBox;
wxImageList *m_ContentsImageList;
wxListBox *m_IndexBox;
wxTextCtrl *m_SearchText;
wxButton *m_SearchButton;
wxListBox *m_SearchList;
// ...pointers to parts of help window
struct {
long x, y, w, h;
long sashpos;
bool navig_on;
} m_Cfg;
// settings (window size, position, sash pos etc..)
HtmlBookRecArray m_BookRecords;
// each book has one record in this array
HtmlContentsItem* m_Contents;
int m_ContentsCnt;
// list of all available books and pages.
HtmlContentsItem* m_Index;
int m_IndexCnt;
// list of index items
public:
wxHtmlHelpController();
~wxHtmlHelpController();
void SetTitleFormat(const wxString& format) {m_TitleFormat = format;}
// Sets format of title of the frame. Must contain exactly one "%s"
// (for title of displayed HTML page)
void SetTempDir(const wxString& path);
// Sets directory where temporary files are stored.
// These temp files are index & contents file in binary (much faster to read)
// form. These files are NOT deleted on program's exit.
bool AddBook(const wxString& book, bool show_wait_msg = FALSE);
// Adds new book. 'book' is location of .htb file (stands for "html book").
// See documentation for details on its format.
// Returns success.
// If show_wait_msg == true then message window with "loading book..." is displayed
void Display(const wxString& x);
// Displays page x. If not found it will offect the user a choice of searching
// books.
// Looking for the page runs in these steps:
// 1. try to locate file named x (if x is for example "doc/howto.htm")
// 2. try to open starting page of book x
// 3. try to find x in contents (if x is for example "How To ...")
// 4. try to find x in index (if x is for example "How To ...")
// 5. offer searching and if the user agree, run KeywordSearch
void Display(const int id);
// Alternative version that works with numeric ID.
// (uses extension to MS format, <param name="ID" value=id>, see docs)
void DisplayContents();
// Displays help window and focuses contents.
void DisplayIndex();
// Displays help window and focuses index.
bool KeywordSearch(const wxString& keyword);
// Searches for keyword. Returns TRUE and display page if found, return
// FALSE otherwise
// Syntax of keyword is Altavista-like:
// * words are separated by spaces
// (but "\"hello world\"" is only one world "hello world")
// * word may be pretended by + or -
// (+ : page must contain the word ; - : page can't contain the word)
// * if there is no + or - before the word, + is default
void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString) {m_Config = config; m_ConfigRoot = rootpath;}
// Assigns config object to the controller. This config is then
// used in subsequent calls to Read/WriteCustomization of both help
// controller and it's wxHtmlWindow
void ReadCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
// saves custom settings into cfg config. it will use the path 'path'
// if given, otherwise it will save info into currently selected path.
// saved values : things set by SetFonts, SetBorders.
void WriteCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
// ...
protected:
virtual void CreateHelpWindow();
// Creates frame & html window and sets m_Frame and other variables;
// Do nothing if the window already exists
void RefreshLists();
// Refreshes Contents and Index tabs
void CreateContents();
// Adds items to m_Contents tree control
void CreateIndex();
// Adds items to m_IndexList
void LoadMSProject(HtmlBookRecord *book, wxFileSystem& fsys, const wxString& indexfile, const wxString& contentsfile, bool show_wait_msg);
// Imports .hhp files (MS HTML Help Workshop)
void LoadCachedBook(HtmlBookRecord *book, wxInputStream *f);
// Reads binary book
void SaveCachedBook(HtmlBookRecord *book, wxOutputStream *f);
// Writes binary book
void OnToolbar(wxCommandEvent& event);
void OnContentsSel(wxTreeEvent& event);
void OnIndexSel(wxCommandEvent& event);
void OnSearchSel(wxCommandEvent& event);
void OnSearch(wxCommandEvent& event);
void OnCloseWindow(wxCloseEvent& event);
DECLARE_EVENT_TABLE()
};
#endif // __HTMLHELP_H__
#endif