コード例 #1
0
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);
	}
}
コード例 #2
0
ファイル: addressoverviewwindow.cpp プロジェクト: butjar/C4J
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()));



}
コード例 #3
0
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);
}