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