| 115 |
|
|
| 116 |
void mnFrame::showSearchResult(mnModel* wiki, bool isExpand) |
void mnFrame::showSearchResult(mnModel* wiki, bool isExpand) |
| 117 |
{ |
{ |
| 118 |
|
/* |
| 119 |
const wxArrayString* searchStrList; |
const wxArrayString* searchStrList; |
| 120 |
int i; |
int i; |
| 121 |
|
|
| 128 |
} |
} |
| 129 |
|
|
| 130 |
searchTree->ScrollTo(searchItemRoot); |
searchTree->ScrollTo(searchItemRoot); |
| 131 |
|
*/ |
| 132 |
|
wxLogMessage(wxT("showSearchResult was invalid")); |
| 133 |
|
} |
| 134 |
|
|
| 135 |
|
void mnFrame::updateSearchResult(mnModel* wiki, wxString* searchStr, bool isExpand) |
| 136 |
|
{ |
| 137 |
|
wxTreeItemIdValue cookie1, cookie2; |
| 138 |
|
wxTreeItemId searchStrId; |
| 139 |
|
wxTreeItemId wikiDataId; |
| 140 |
|
const WikiList* wikiList; |
| 141 |
|
WikiList::Node* node; |
| 142 |
|
WikiData* data; |
| 143 |
|
const wxString* subject; |
| 144 |
|
|
| 145 |
|
memset(&cookie1, 1, sizeof(cookie1)); |
| 146 |
|
memset(&cookie2, 2, sizeof(cookie2)); |
| 147 |
|
searchStrId = searchTree->GetFirstChild(searchItemRoot, cookie1); |
| 148 |
|
while(searchStrId.IsOk()) { |
| 149 |
|
if(searchTree->GetItemText(searchStrId) == *searchStr) { |
| 150 |
|
wikiDataId = searchTree->GetFirstChild(searchStrId, cookie2); |
| 151 |
|
while(wikiDataId.IsOk()) { |
| 152 |
|
searchTree->SetItemData(wikiDataId, NULL); |
| 153 |
|
wikiDataId = searchTree->GetNextChild(searchStrId, cookie2); |
| 154 |
|
} |
| 155 |
|
searchTree->DeleteChildren(searchStrId); |
| 156 |
|
break; |
| 157 |
|
} |
| 158 |
|
searchStrId = searchTree->GetNextChild(searchItemRoot, cookie1); |
| 159 |
|
} |
| 160 |
|
|
| 161 |
|
wikiList = wiki->getSearchResultList(searchStr); |
| 162 |
|
node = wikiList->GetFirst(); |
| 163 |
|
while(node) { |
| 164 |
|
data = node->GetData(); |
| 165 |
|
subject = data->getSubject(); |
| 166 |
|
searchTree->AppendItem(searchStrId, *subject, -1, -1, (wxTreeItemData*)data); |
| 167 |
|
node = node->GetNext(); |
| 168 |
|
} |
| 169 |
|
if(isExpand){ |
| 170 |
|
searchTree->Expand(searchStrId); |
| 171 |
|
} |
| 172 |
|
else { |
| 173 |
|
searchTree->Collapse(searchStrId); |
| 174 |
|
} |
| 175 |
} |
} |
| 176 |
|
|
| 177 |
void mnFrame::addSearchResult(mnModel* wiki, wxString* searchStr, bool isExpand) |
void mnFrame::addSearchResult(mnModel* wiki, wxString* searchStr, bool isExpand) |
| 178 |
{ |
{ |
| 179 |
wxTreeItemId searchItem; |
wxTreeItemId searchItem; |
| 180 |
WikiList* wikiList; |
const WikiList* wikiList; |
| 181 |
WikiList::Node* node; |
WikiList::Node* node; |
| 182 |
WikiData* data; |
WikiData* data; |
| 183 |
const wxString* subject; |
const wxString* subject; |
| 184 |
|
|
| 185 |
wikiList = wiki->search(searchStr->mb_str()); |
wikiList = wiki->getSearchResultList(searchStr); |
| 186 |
//searchItem = searchTree->AppendItem(searchItemRoot, *searchStr, -1, -1, NULL); |
//searchItem = searchTree->AppendItem(searchItemRoot, *searchStr, -1, -1, NULL); |
| 187 |
searchItem = searchTree->InsertItem(searchItemRoot, 0, *searchStr, -1, -1, NULL); |
searchItem = searchTree->InsertItem(searchItemRoot, 0, *searchStr, -1, -1, NULL); |
| 188 |
node = wikiList->GetFirst(); |
node = wikiList->GetFirst(); |
| 277 |
|
|
| 278 |
void mnFrame::showSelectedItemText(wxTreeEvent& event) |
void mnFrame::showSelectedItemText(wxTreeEvent& event) |
| 279 |
{ |
{ |
| 280 |
wxTreeItemData* item = searchTree->GetItemData(event.GetItem()); |
wxTreeItemId id; |
| 281 |
if(item == NULL) { |
wxTreeItemData* item; |
| 282 |
|
|
| 283 |
|
id = searchTree->GetSelection(); |
| 284 |
|
if(!id.IsOk()) return ; |
| 285 |
|
item = searchTree->GetItemData(id); |
| 286 |
|
|
| 287 |
|
if(item == NULL) return ; |
| 288 |
|
|
| 289 |
|
if(!isEditableTreeLabel(id)) { /* selection is not memo data */ |
| 290 |
wikiHtmlTextCtrl->SetPage(wxT("")); |
wikiHtmlTextCtrl->SetPage(wxT("")); |
| 291 |
return; |
return; |
| 292 |
} |
} |
|
|
|
| 293 |
makeHtml((WikiData*)item, false); |
makeHtml((WikiData*)item, false); |
| 294 |
} |
} |
| 295 |
|
|
| 296 |
|
wxTreeItemId mnFrame::getSelection() |
| 297 |
|
{ |
| 298 |
|
return searchTree->GetSelection(); |
| 299 |
|
} |
| 300 |
|
|
| 301 |
void mnFrame::highlightSelectedItem() |
void mnFrame::highlightSelectedItem() |
| 302 |
{ |
{ |
| 303 |
wxTreeItemData* item = getSelectedItem(); |
wxTreeItemData* item = getSelectedItem(); |
| 304 |
if(item == NULL) { |
|
| 305 |
|
if(!isEditableTreeLabel(searchTree->GetSelection())) { /* selection is not memo data */ |
| 306 |
wikiHtmlTextCtrl->SetPage(wxT("")); |
wikiHtmlTextCtrl->SetPage(wxT("")); |
| 307 |
return; |
return; |
| 308 |
} |
} |
| 363 |
|
|
| 364 |
bool mnFrame::isEditableTreeLabel(wxTreeItemId id) |
bool mnFrame::isEditableTreeLabel(wxTreeItemId id) |
| 365 |
{ |
{ |
| 366 |
return !(searchTree->GetItemParent(id) == searchItemRoot || id == searchItemRoot); |
if(id.IsOk()){ |
| 367 |
|
return !(searchTree->GetItemParent(id) == searchItemRoot || id == searchItemRoot); |
| 368 |
|
} |
| 369 |
|
else { |
| 370 |
|
return false; |
| 371 |
|
} |
| 372 |
} |
} |
| 373 |
|
|