X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/afcaf277afb7a5f9f31cfd6c425dd9c3a68dd2ba..cc985face55ed02c310860afefc8e6d656fb849d:/src/generic/helphtml.cpp diff --git a/src/generic/helphtml.cpp b/src/generic/helphtml.cpp index 0d909968b3..3c546e1bd2 100644 --- a/src/generic/helphtml.cpp +++ b/src/generic/helphtml.cpp @@ -1,27 +1,42 @@ -/*-*- c++ -*-******************************************************** - * helphtml.cpp - base class for html help systems * - * * - * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ - *******************************************************************/ +///////////////////////////////////////////////////////////////////////////// +// Name: helphtml.cpp +// Purpose: base class for html help systems +// Author: Karsten Ballueder +// Modified by: +// Created: 04/01/98 +// RCS-ID: $Id$ +// Copyright: (c) Karsten Ballueder +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + #ifdef __GNUG__ # pragma implementation "helphtml.h" #endif -#include "wx/setup.h" -#include "wx/helpbase.h" -#include "wx/generic/helpext.h" -#include "wx/string.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "wx/intl.h" -#include -#include -#include -#include +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/setup.h" + #include "wx/string.h" + #include "wx/utils.h" + #include "wx/list.h" + #include "wx/intl.h" +#endif +#include "wx/helpbase.h" +#include "wx/generic/helpext.h" +#include +#include +#include + +#ifndef __WINDOWS__ + #include +#endif class wxExtHelpMapEntry : public wxObject { @@ -33,29 +48,22 @@ public: { id = iid; url = iurl; doc = idoc; } }; - -struct wxBusyCursor -{ - wxBusyCursor() { wxBeginBusyCursor(); } - ~wxBusyCursor() { wxEndBusyCursor(); } -}; - IMPLEMENT_ABSTRACT_CLASS(wxHTMLHelpControllerBase, wxHelpControllerBase) - + /** This class implements help via an external browser. It requires the name of a directory containing the documentation and a file mapping numerical Section numbers to relative URLS. */ -wxHTMLHelpControllerBase::wxHTMLHelpControllerBase(void) +wxHTMLHelpControllerBase::wxHTMLHelpControllerBase() { m_MapList = (wxList*) NULL; m_NumOfEntries = 0; } void -wxHTMLHelpControllerBase::DeleteList(void) +wxHTMLHelpControllerBase::DeleteList() { if(m_MapList) { @@ -71,7 +79,7 @@ wxHTMLHelpControllerBase::DeleteList(void) } } -wxHTMLHelpControllerBase::~wxHTMLHelpControllerBase(void) +wxHTMLHelpControllerBase::~wxHTMLHelpControllerBase() { DeleteList(); } @@ -95,7 +103,7 @@ wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) wxString mapFile, file, url, doc; int id,i,len; char buffer[WXEXTHELP_BUFLEN]; - + wxBusyCursor b; // display a busy cursor if(! ifile.IsEmpty()) @@ -103,7 +111,7 @@ wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) file = ifile; if(! wxIsAbsolutePath(file)) { - char* f = wxGetWorkingDirectory(); + wxChar* f = wxGetWorkingDirectory(); file = f; delete[] f; // wxGetWorkingDirectory returns new memory file << WXEXTHELP_SEPARATOR << ifile; @@ -111,6 +119,7 @@ wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) else file = ifile; +#if wxUSE_INTL // If a locale is set, look in file/localename, i.e. // If passed "/usr/local/myapp/help" and the current wxLocale is // set to be "de", then look in "/usr/local/myapp/help/de/" @@ -122,11 +131,21 @@ wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) newfile << WXEXTHELP_SEPARATOR << wxGetLocale()->GetName(); if(wxDirExists(newfile)) file = newfile; + else + { + newfile = WXEXTHELP_SEPARATOR; + const wxChar *cptr = wxGetLocale()->GetName().c_str(); + while(*cptr && *cptr != _T('_')) + newfile << *(cptr++); + if(wxDirExists(newfile)) + file = newfile; + } } - +#endif + if(! wxDirExists(file)) return FALSE; - + mapFile << file << WXEXTHELP_SEPARATOR << WXEXTHELP_MAPFILE; } else // try to reload old file @@ -138,8 +157,8 @@ wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) DeleteList(); m_MapList = new wxList; m_NumOfEntries = 0; - - FILE *input = fopen(mapFile.c_str(),"rt"); + + FILE *input = fopen(mapFile.fn_str(),"rt"); if(! input) return FALSE; do @@ -167,21 +186,21 @@ wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) } }while(! feof(input)); fclose(input); - + m_MapFile = file; // now it's valid return TRUE; } bool -wxHTMLHelpControllerBase::DisplayContents(void) +wxHTMLHelpControllerBase::DisplayContents() { if(! m_NumOfEntries) return FALSE; wxBusyCursor b; // display a busy cursor return KeywordSearch(""); } - + bool wxHTMLHelpControllerBase::DisplaySection(int sectionNo) { @@ -217,19 +236,19 @@ wxHTMLHelpControllerBase::KeywordSearch(const wxString& k) wxString *choices = new wxString[m_NumOfEntries]; wxString *urls = new wxString[m_NumOfEntries]; wxString compA, compB; - + int idx = 0, j; bool rc; bool showAll = k.IsEmpty(); wxNode *node = m_MapList->First(); wxExtHelpMapEntry *entry; - + compA = k; compA.LowerCase(); // we compare case insensitive while(node) { entry = (wxExtHelpMapEntry *)node->Data(); compB = entry->doc; compB.LowerCase(); - if((showAll || compB.Contains(k)) && ! compB.IsEmpty()) + if((showAll || compB.Contains(k)) && ! compB.IsEmpty()) { urls[idx] = entry->url; // doesn't work: @@ -264,19 +283,19 @@ wxHTMLHelpControllerBase::KeywordSearch(const wxString& k) } delete[] urls; delete[] choices; - + return rc; } bool -wxHTMLHelpControllerBase::Quit(void) +wxHTMLHelpControllerBase::Quit() { return TRUE; } void -wxHTMLHelpControllerBase::OnQuit(void) +wxHTMLHelpControllerBase::OnQuit() { }