void FunctionListPanel::reload() { // clean up removeAllEntries(); generic_string funcBegin = TEXT("^[\\s]*"); generic_string qualifier_maybe = TEXT("((static|const)[\\s]+)?"); generic_string returnType = TEXT("[\\w]+"); generic_string space_starMaybe = TEXT("([\\s]+|\\*[\\s]+|[\\s]+\\*|[\\s]+\\*[\\s]+)"); //generic_string space_starMaybe = TEXT("([\\s]+|\\*[\\s]+|[\\s]+\\*)"); generic_string classQualifier_maybe = TEXT("([\\w_]+[\\s]*::)?"); generic_string funcName = TEXT("(?!(if|whil|for))[\\w_]+"); generic_string const_maybe = TEXT("([\\s]*const[\\s]*)?"); generic_string space_maybe = TEXT("[\\s]*"); generic_string params = TEXT("\\([\\n\\w_,*&\\s]*\\)"); generic_string funcBody = TEXT("\\{"); generic_string space_eol_maybe = TEXT("[\\n\\s]*"); generic_string function = funcBegin + qualifier_maybe + returnType + space_starMaybe + classQualifier_maybe + funcName + space_maybe + params + const_maybe + space_eol_maybe + funcBody; generic_string secondSearch = funcName + space_maybe; secondSearch += TEXT("\\("); int docLen = (*_ppEditView)->getCurrentDocLen(); vector<foundInfo> fi; vector<generic_string> regExpr1; vector<generic_string> regExpr2; regExpr1.push_back(secondSearch); regExpr1.push_back(funcName); generic_string secondSearch_className = TEXT("[\\w_]+(?=[\\s]*::)"); regExpr2.push_back(secondSearch_className); generic_string classRegExpr = TEXT("^[\\t ]*(class|struct)[\\t ]+[\\w]+[\\s]*(:[\\s]*(public|protected|private)[\\s]+[\\w]+[\\s]*)?\\{"); vector<generic_string> classRegExprArray; generic_string str1 = TEXT("(class|struct)[\\t ]+[\\w]+"); generic_string str2 = TEXT("[\\t ]+[\\w]+"); generic_string str3 = TEXT("[\\w]+"); classRegExprArray.push_back(str1.c_str()); classRegExprArray.push_back(str2.c_str()); classRegExprArray.push_back(str3.c_str()); //parse(fi, 0, docLen, function.c_str(), regExpr1, regExpr2); const TCHAR bodyOpenSymbol[] = TEXT("\\{"); const TCHAR bodyCloseSymbol[] = TEXT("\\}"); parse2(fi, 0, docLen, classRegExpr.c_str(), classRegExprArray, bodyOpenSymbol, bodyCloseSymbol, function.c_str(), regExpr1); for (size_t i = 0; i < fi.size(); i++) { generic_string entryName = TEXT(""); if (fi[i]._pos2 != -1) { entryName = fi[i]._data2; entryName += TEXT("=>"); } entryName += fi[i]._data; addEntry(entryName.c_str(), fi[i]._pos); } }
AddressOverviewWindow::AddressOverviewWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::AddressOverviewWindow) { ui->setupUi(this); ui->filterComboBox->addItem(QString("First Name")); ui->filterComboBox->addItem(QString("Last Name")); ui->filterComboBox->addItem(QString("Address")); ui->filterComboBox->addItem(QString("City")); ui->filterComboBox->addItem(QString("Zip Code")); ui->loadPushButton->setToolTip(tr("Load contacts from a file")); ui->savePushButton->setToolTip(tr("Save contacts to a file")); model = new TableModel(this); proxyModel = new QSortFilterProxyModel(model); proxyModel->setSourceModel(model); proxyModel->setFilterRegExp(QRegExp(QString(), Qt::CaseInsensitive, QRegExp::FixedString)); proxyModel->setFilterKeyColumn(1); ui->AddressesTableView->setModel(proxyModel); connect(ui->addAdressPushButton,SIGNAL(clicked()),this,SLOT(addEntry())); connect(ui->filterComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(filterColumnSelected())); connect(ui->filterLineEdit,SIGNAL(textChanged(QString)),this,SLOT(filterAdresses())); connect(ui->removePushButton,SIGNAL(clicked()),this,SLOT(removeEntry())); connect(ui->removeAllPushButton,SIGNAL(clicked()),this,SLOT(removeAllEntries())); connect(ui->editPushButton,SIGNAL(clicked()),this,SLOT(editEntry())); connect(ui->savePushButton,SIGNAL(clicked()),this,SLOT(saveFile())); connect(ui->loadPushButton,SIGNAL(clicked()),this,SLOT(openFile())); connect(ui->actionQuit,SIGNAL(triggered()),this,SLOT(quitApp())); connect(ui->actionLoad,SIGNAL(triggered()),this,SLOT(openFile())); connect(ui->actionSave_As,SIGNAL(triggered()),this,SLOT(saveFile())); connect(ui->actionAdd,SIGNAL(triggered()),this,SLOT(addEntry())); connect(ui->actionEdit,SIGNAL(triggered()),this,SLOT(editEntry())); connect(ui->actionRemove,SIGNAL(triggered()),this,SLOT(removeEntry())); connect(ui->actionRemoveAll,SIGNAL(triggered()),this,SLOT(removeAllEntries())); }
void FunctionListPanel::reload() { // clean up TreeStateNode currentTree; bool isOK = _treeView.retrieveFoldingStateTo(currentTree, _treeView.getRoot()); if (isOK) { TCHAR text2Search[MAX_PATH]; ::SendMessage(_hSearchEdit, WM_GETTEXT, MAX_PATH, (LPARAM)text2Search); bool isSorted = shouldSort(); addInStateArray(currentTree, text2Search, isSorted); } removeAllEntries(); ::SendMessage(_hSearchEdit, WM_SETTEXT, 0, (LPARAM)TEXT("")); setSort(false); vector<foundInfo> fi; const TCHAR *fn = ((*_ppEditView)->getCurrentBuffer())->getFileName(); LangType langID = ((*_ppEditView)->getCurrentBuffer())->getLangType(); const TCHAR *udln = NULL; if (langID == L_USER) { udln = ((*_ppEditView)->getCurrentBuffer())->getUserDefineLangName(); } TCHAR *ext = ::PathFindExtension(fn); if (_funcParserMgr.parse(fi, AssociationInfo(-1, langID, ext, udln))) { _treeView.addItem(fn, NULL, INDEX_ROOT, TEXT("-1")); } for (size_t i = 0, len = fi.size(); i < len; ++i) { // no 2 level bool b = false; if (b) { generic_string entryName = TEXT(""); if (fi[i]._pos2 != -1) { entryName = fi[i]._data2; entryName += TEXT("=>"); } entryName += fi[i]._data; addEntry(NULL, entryName.c_str(), fi[i]._pos); } else { addEntry(fi[i]._data2.c_str(), fi[i]._data.c_str(), fi[i]._pos); } } HTREEITEM root = _treeView.getRoot(); const TCHAR *fullFilePath = ((*_ppEditView)->getCurrentBuffer())->getFullPathName(); if (root) { _treeView.setItemParam(root, fullFilePath); TreeParams *previousParams = getFromStateArray(fullFilePath); if (!previousParams) { ::SendMessage(_hSearchEdit, WM_SETTEXT, 0, (LPARAM)TEXT("")); setSort(false); _treeView.expand(root); } else { ::SendMessage(_hSearchEdit, WM_SETTEXT, 0, (LPARAM)(previousParams->_searchParameters)._text2Find.c_str()); _treeView.restoreFoldingStateFrom(previousParams->_treeState, root); bool isSort = (previousParams->_searchParameters)._doSort; setSort(isSort); if (isSort) _pTreeView->sort(_pTreeView->getRoot()); } } // invalidate the editor rect ::InvalidateRect(_hSearchEdit, NULL, TRUE); }