simplify KeywordSearch; cleanup and reformat

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Surovell
2006-03-31 19:04:25 +00:00
parent d879e16fc3
commit b8c3d6306c

View File

@@ -106,8 +106,7 @@ void wxExtHelpController::SetViewer(const wxString& viewer, long flags)
SetBrowser(viewer, (flags & wxHELP_NETSCAPE) != 0);
}
bool
wxExtHelpController::DisplayHelp(const wxString &relativeURL)
bool wxExtHelpController::DisplayHelp(const wxString &relativeURL)
{
// construct hte URL to open -- it's just a file
wxString url(_T("file://") + m_helpDir);
@@ -155,23 +154,20 @@ void wxExtHelpController::DeleteList()
m_MapList->Erase(node);
node = m_MapList->GetFirst();
}
delete m_MapList;
m_MapList = (wxList*) NULL;
}
}
/** This must be called to tell the controller where to find the
documentation.
@param file - NOT a filename, but a directory name.
@return true on success
*/
bool
wxExtHelpController::Initialize(const wxString& file)
// This must be called to tell the controller where to find the documentation.
// @param file - NOT a filename, but a directory name.
// @return true on success
bool wxExtHelpController::Initialize(const wxString& file)
{
return LoadFile(file);
}
bool wxExtHelpController::ParseMapFileLine(const wxString& line)
{
const wxChar *p = line.c_str();
@@ -320,8 +316,7 @@ bool wxExtHelpController::LoadFile(const wxString& file)
}
bool
wxExtHelpController::DisplayContents()
bool wxExtHelpController::DisplayContents()
{
if (! m_NumOfEntries)
return false;
@@ -337,6 +332,7 @@ wxExtHelpController::DisplayContents()
contents = entry->url;
break;
}
node = node->GetNext();
}
@@ -352,8 +348,7 @@ wxExtHelpController::DisplayContents()
return rc ? true : KeywordSearch(wxEmptyString);
}
bool
wxExtHelpController::DisplaySection(int sectionNo)
bool wxExtHelpController::DisplaySection(int sectionNo)
{
if (! m_NumOfEntries)
return false;
@@ -368,6 +363,7 @@ wxExtHelpController::DisplaySection(int sectionNo)
return DisplayHelp(entry->url);
node = node->GetNext();
}
return false;
}
@@ -381,14 +377,12 @@ bool wxExtHelpController::DisplaySection(const wxString& section)
return KeywordSearch(section);
}
bool
wxExtHelpController::DisplayBlock(long blockNo)
bool wxExtHelpController::DisplayBlock(long blockNo)
{
return DisplaySection((int)blockNo);
}
bool
wxExtHelpController::KeywordSearch(const wxString& k,
bool wxExtHelpController::KeywordSearch(const wxString& k,
wxHelpSearchMode WXUNUSED(mode))
{
if (! m_NumOfEntries)
@@ -396,22 +390,39 @@ wxExtHelpController::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;
int idx = 0;
bool rc = false;
bool showAll = k.empty();
wxList::compatibility_iterator node = m_MapList->GetFirst();
wxExtHelpMapEntry *entry;
{
wxBusyCursor b; // display a busy cursor
compA = k; compA.LowerCase(); // we compare case insensitive
// display a busy cursor
wxBusyCursor b;
wxString compA, compB;
wxExtHelpMapEntry *entry;
// we compare case insensitive
if (! showAll)
{
compA = k;
compA.LowerCase();
}
while (node)
{
entry = (wxExtHelpMapEntry *)node->GetData();
compB = entry->doc; compB.LowerCase();
if((showAll || compB.Contains(k)) && ! compB.empty())
compB = entry->doc;
bool testTarget = ! compB.empty();
if (testTarget && ! showAll)
{
compB.LowerCase();
testTarget = compB.Contains(compA);
}
if (testTarget)
{
urls[idx] = entry->url;
// doesn't work:
@@ -419,32 +430,42 @@ wxExtHelpController::KeywordSearch(const wxString& k,
//if (choices[idx].empty()) // didn't contain the ';'
// choices[idx] = (**i).doc;
choices[idx] = wxEmptyString;
for(j=0;entry->doc.c_str()[j]
&& entry->doc.c_str()[j] != WXEXTHELP_COMMENTCHAR; j++)
choices[idx] << entry->doc.c_str()[j];
for (int j=0; ; j++)
{
wxChar targetChar = entry->doc.c_str()[j];
if ((targetChar == 0) || (targetChar == WXEXTHELP_COMMENTCHAR))
break;
choices[idx] << targetChar;
}
idx++;
}
node = node->GetNext();
}
}
if(idx == 1)
rc = DisplayHelp(urls[0]);
else if(idx == 0)
switch (idx)
{
case 0:
wxMessageBox(_("No entries found."));
rc = false;
}
else
{
idx = wxGetSingleChoiceIndex(showAll ? _("Help Index") : _("Relevant entries:"),
break;
case 1:
rc = DisplayHelp(urls[0]);
break;
default:
idx = wxGetSingleChoiceIndex(
showAll ? _("Help Index") : _("Relevant entries:"),
showAll ? _("Help Index") : _("Entries found"),
idx, choices);
if(idx != -1)
if (idx >= 0)
rc = DisplayHelp(urls[idx]);
else
rc = false;
break;
}
delete [] urls;
delete [] choices;
@@ -461,5 +482,4 @@ void wxExtHelpController::OnQuit()
{
}
#endif // wxUSE_HELP