⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeclasses.cpp

📁 用Qt4编写的linux IDE开发环境
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    queryString = queryString                  + "'" + it->text(0).replace("'", "$") + "', "                  + "'" + it->toolTip(0).replace("'", "$") + "', "                  + "'" + parsedItem.icon.replace("'", "$") + "', "                  + "'" + parsedItem.key.replace("'", "$") + "', "                  + "'" + parents.replace("'", "$") + "', "                  + "'" + parsedItem.name.replace("'", "$") + "', "                  + "'" + QDir( projectDirectory ).relativeFilePath( QDir::cleanPath( parsedItem.implementation ) ).replace("'", "$") + "', "                  + "'" + QDir( projectDirectory ).relativeFilePath( QDir::cleanPath( parsedItem.declaration ) ).replace("'", "$") + "', "                  + "'" + parsedItem.ex_cmd.replace("'", "$") + "', "                  + "'" + parsedItem.language.replace("'", "$") + "', "                  + "'" + parsedItem.classname.replace("'", "$") + "', "                  + "'" + parsedItem.structname.replace("'", "$") + "', "                  + "'" + parsedItem.enumname.replace("'", "$") + "', "                  + "'" + parsedItem.access.replace("'", "$") + "', "                  + "'" + parsedItem.signature.replace("'", "$") + "', "                  + "'" + parsedItem.kind.replace("'", "$") + "')";    bool rc = query.exec(queryString);    if (rc == false)    {        qDebug() << "Failed to insert record to db" << query.lastError();        qDebug() << queryString;        exit(0);    }    //    for (int i=0; i<it->childCount(); i++)    {        writeItemsInDB( it->child( i ), parents+":"+it->text(0), query, projectDirectory);    }}//void TreeClasses::fromDB(QString projectDirectory){    m_treeClassesItems->clear();    connectDB(projectDirectory+"/qdevelop-settings.db");    QSqlQuery query( QSqlDatabase::database( projectDirectory + "/qdevelop-settings.db" ));    query.exec("BEGIN TRANSACTION;");    QString queryString = QString()                          + "select * from classesbrowser where 1";    query.exec(queryString);    while (query.next())    {        ParsedItem parsedItem;        QString text = query.value(0).toString().replace("$", "'");        QString tooltip = query.value(1).toString().replace("$", "'");        parsedItem.icon = query.value(2).toString().replace("$", "'");        parsedItem.key = query.value(3).toString().replace("$", "'");        QString parents = query.value(4).toString().replace("$", "'");        parsedItem.name = query.value(5).toString().replace("$", "'");        parsedItem.implementation = query.value(6).toString().replace("$", "'");        parsedItem.implementation = QDir( projectDirectory ).absoluteFilePath(parsedItem.implementation  );        parsedItem.declaration = query.value(7).toString().replace("$", "'");        parsedItem.declaration = QDir( projectDirectory ).absoluteFilePath(parsedItem.declaration  );        parsedItem.ex_cmd = query.value(8).toString().replace("$", "'");        parsedItem.language = query.value(9).toString().replace("$", "'");        parsedItem.classname = query.value(10).toString().replace("$", "'");        parsedItem.structname = query.value(11).toString().replace("$", "'");        parsedItem.enumname = query.value(12).toString().replace("$", "'");        parsedItem.access = query.value(13).toString().replace("$", "'");        parsedItem.signature = query.value(14).toString().replace("$", "'");        parsedItem.kind = query.value(15).toString().replace("$", "'");        createItemFromDB(topLevelItem(0), text, tooltip, parents, parsedItem);        m_treeClassesItems->append( parsedItem );    }    queryString = QString()                  + "select * from checksums where 1";    query.exec(queryString);    while (query.next())    {        QString filename = query.value(0).toString();        quint16 checksum = query.value(1).toInt();        QFile file(filename);        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))            return;        QByteArray array( file.readAll() );        if ( !array.count() )            return;        char *ptr = array.data();        quint16 check = qChecksum(ptr, array.length());        if ( check != checksum )        {            m_mainImpl->slotUpdateClasses(filename, QString(array));        }        file.close();    }    query.exec("END TRANSACTION;");}////void TreeClasses::createItemFromDB(QTreeWidgetItem *parent, QString text, QString /*tooltip*/, QString parents, ParsedItem parsedItem){    if ( !parent )    {        QTreeWidgetItem *it = new QTreeWidgetItem( this );        it->setText(0, text);        setTooltip(it, parsedItem);        it->setIcon(0, QIcon(parsedItem.icon));        QVariant v;        v.setValue( parsedItem );        it->setData(0, Qt::UserRole, v );        setItemExpanded( it, true );        return;    }    parents = parents.section(":", 2);    if ( !parents.isEmpty() )    {        foreach( QString p, parents.split(":", QString::SkipEmptyParts) )        {// 			QTreeWidgetItem *find;            for (int i=0; i<parent->childCount(); i++)            {                if ( parent->child( i )->text( 0 ) == p )                    parent = parent->child( i );            }        }    }    QTreeWidgetItem *it = new QTreeWidgetItem( parent );    it->setText(0, text);    setTooltip(it, parsedItem);    it->setIcon(0, QIcon(parsedItem.icon));    QVariant v;    v.setValue( parsedItem );    it->setData(0, Qt::UserRole, v );}//void TreeClasses::mouseDoubleClickEvent ( QMouseEvent * event ){    m_itemClicked = itemAt( event->pos() );    if ( !m_itemClicked )        return;    ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>();    if ( parsedItem.key.left(10) != "parent:" )    {        if ( !parsedItem.implementation.isEmpty() && (parsedItem.kind!="c" || parsedItem.declaration.isEmpty() ))            slotOpenImplementation();        else if ( !parsedItem.declaration.isEmpty() )            slotOpenDeclaration();    }    else        setItemExpanded( m_itemClicked, !isItemExpanded(m_itemClicked) );}//QString TreeClasses::signature(QString line){    QString params = line.mid( line.indexOf("(")+1 );    params = params.left( params.lastIndexOf(")") ) .simplified();    QString formattedParams;    foreach(QString param, params.split(",") )    {        param = param.simplified();        if ( param.contains("&") )            param = param.simplified().left( param.simplified().lastIndexOf("&")+1 );        else if ( param.contains("*") )            param = param.simplified().left( param.simplified().lastIndexOf("*")+1 );        else if ( param.simplified().contains(" ") )            param = param.simplified().left( param.simplified().indexOf(" ") );        else if ( param.simplified().contains("=") )            param = param.simplified().left( param.simplified().lastIndexOf("=") );        formattedParams += param + ",";    }    formattedParams = formattedParams.simplified().left( formattedParams.lastIndexOf(",") );    formattedParams.remove( " " );    QString s ="(" + formattedParams + ")";    return s;}//QString TreeClasses::getPathHash(QString const& pathName){    unsigned intHash = qHash(pathName);    return QString().sprintf("_%x_", intHash);}////void TreeClasses::slotAddNewClassMethod(){    ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>();    QString implementation = parsedItem.implementation;    QString declaration = parsedItem.declaration;    QString classname = parsedItem.name;    if ( !QFileInfo(implementation.section("|", 0, 0)).isFile() )    {        for (int i=0; i<m_itemClicked->childCount(); i++)        {            ParsedItem childItem = m_itemClicked->child( i )->data(0, Qt::UserRole).value<ParsedItem>();            if ( QFileInfo(childItem.implementation.section("|", 0, 0)).isFile() )            {                implementation = childItem.implementation;                break;            }        }    }    AddNewClassMethodImpl *dialog = new AddNewClassMethodImpl(m_mainImpl, this, implementation, declaration, classname);    dialog->exec();    delete dialog;    //}//void TreeClasses::slotAddNewClassVariable(){    ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>();    QString implementation = parsedItem.implementation;    QString declaration = parsedItem.declaration;    QString classname = parsedItem.name;    if ( !QFileInfo(implementation.section("|", 0, 0)).isFile() )    {        for (int i=0; i<m_itemClicked->childCount(); i++)        {            ParsedItem childItem = m_itemClicked->child( i )->data(0, Qt::UserRole).value<ParsedItem>();            if ( QFileInfo(childItem.implementation.section("|", 0, 0)).isFile() )            {                implementation = childItem.implementation;                break;            }        }    }    AddNewClassVariableImpl *dialog = new AddNewClassVariableImpl(m_mainImpl, this, m_itemClicked, declaration, implementation, classname);    dialog->exec();    delete dialog;//}//void TreeClasses::slotAddGetSetMethod(){    ParsedItem parsedItem = m_itemClicked->data(0, Qt::UserRole).value<ParsedItem>();    ParsedItem parsedItemParent = m_itemClicked->parent()->data(0, Qt::UserRole).value<ParsedItem>();    QTreeWidgetItem *m_itemClickedParent = m_itemClicked->parent();    QString implementation = parsedItemParent.implementation;    QString declaration = parsedItemParent.declaration;    QString classname = parsedItemParent.name;    if ( !QFileInfo(implementation.section("|", 0, 0)).isFile() )    {        for (int i=0; i<m_itemClickedParent->childCount(); i++)        {            ParsedItem childItem = m_itemClickedParent->child( i )->data(0, Qt::UserRole).value<ParsedItem>();            if ( QFileInfo(childItem.implementation.section("|", 0, 0)).isFile() )            {                implementation = childItem.implementation;                break;            }        }    }    QString type = parsedItem.ex_cmd.left( parsedItem.ex_cmd.lastIndexOf(" ") );    AddSetGetImpl *addSetGetImpl = new AddSetGetImpl(m_mainImpl, this, declaration, implementation, classname, type, parsedItem.name);    addSetGetImpl->exec();    delete addSetGetImpl;}//QStringList TreeClasses::methods(QString filename, QString /*classname*/){    QStringList listMethods;    const QList<ParsedItem> *list;    list = treeClassesItems();    //foreach( ParsedItem parsedItem, list )    for (int i = 0; i < list->size(); ++i)    {        ParsedItem parsedItem = list->at( i );        if ( ( parsedItem.kind == "p" || parsedItem.kind == "f" )                && parsedItem.declaration.section("|", 0, 0) == filename )        {            QString returnName = parsedItem.ex_cmd;            if ( returnName.left( returnName.indexOf("::") ).indexOf("\t") != -1 )                returnName = returnName.left( returnName.indexOf("::") ).section("\t", 0, 0);            else if ( returnName.left( returnName.indexOf("::") ).indexOf(" ") != -1 )                returnName = returnName.left( returnName.indexOf("::") ).section(" ", 0, 0);            else                returnName = "";            QString add = returnName+" " +parsedItem.name+parsedItem.signature;            listMethods << add.simplified();        }    }    return listMethods;}///*const QList<ParsedItem> *TreeClasses::treeClassesItems(QString classname){	QTreeWidgetItem *parent = findItem(0, classname, "class:"+classname, false);	if( parent )	{        ParsedItem parsedItem = parent->data(0, Qt::UserRole).value<ParsedItem>();		list->append( parsedItem );		for(int i=0; i<parent->childCount(); i++)		{			QTreeWidgetItem *childItem = parent->child( i );	        ParsedItem parsedItem = childItem->data(0, Qt::UserRole).value<ParsedItem>();			list->append( parsedItem );		}	}	return list;}*///

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -