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

📄 misc.cpp

📁 用Qt4编写的linux IDE开发环境
💻 CPP
字号:
/** This file is part of QDevelop, an open-source cross-platform IDE* Copyright (C) 2007  Jean-Luc Biord** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA** Contact e-mail: Jean-Luc Biord <jl.biord@free.fr>* Program URL   : http://qdevelop.org**/#include "misc.h"#include <QSqlDatabase>#include <QSqlQuery>#include <QMessageBox>#include <QDebug>#include <QDir>#ifdef Q_OS_WIN32#include <shlobj.h>#endif//QVariant addressToVariant(void *it ) {#if QT_POINTER_SIZE == 4	return QVariant( reinterpret_cast<uint>(it)); #else	return QVariant( reinterpret_cast<qulonglong>(it)); #endif}//QTreeWidgetItem* variantToItem( QVariant variant ){#if QT_POINTER_SIZE == 4		return (QTreeWidgetItem*)variant.toUInt();#else	return (QTreeWidgetItem*)variant.toULongLong();#endif}//QAction* variantToAction( QVariant variant ){#if QT_POINTER_SIZE == 4	return (QAction*)variant.toUInt();#else	return (QAction*)variant.toULongLong();#endif}//bool connectDB(QString const& dbName){	QSqlDatabase database;	if( QSqlDatabase::database(dbName).databaseName() != dbName )	{		database = QSqlDatabase::addDatabase("QSQLITE", dbName);		database.setDatabaseName(dbName);	}	else	{		database = QSqlDatabase::database(dbName);		if ( database.isOpen() )			return true;	}	//    if (!database.open()) {        QMessageBox::critical(0, "QDevelop",            QObject::tr("Unable to establish a database connection.")+"\n"+                     QObject::tr("QDevelop needs SQLite support. Please read "                     "the Qt SQL driver documentation for information how "                     "to build it."), QMessageBox::Cancel,                     QMessageBox::NoButton);        return false;    }	else	{		QString queryString = "create table classesbrowser ("		    "text string,"		    "tooltip string,"		    "icon string,"		    "key string,"		    "parents string,"		    "name string,"		    "implementation string,"		    "declaration string,"		    "ex_cmd string,"		    "language string,"		    "classname string,"		    "structname string,"		    "enumname string,"		    "access string,"		    "signature string,"		    "kind string"		    ")";				QSqlQuery query(database);		query.exec(queryString);		queryString = "create table editors ("		    "filename string,"		    "scrollbar int,"		    "numline int"		    ")";		query.exec(queryString);		//		queryString = "create table bookmarks ("		    "filename string,"		    "numline int"		    ")";		query.exec(queryString);		//		queryString = "create table breakpoints ("		    "filename string,"		    "numline int,"		    "breakpointCondition string,"		    "isTrue int"		    ")";		query.exec(queryString);		//		queryString = "create table projectsDirectories ("		    "projectName string,"		    "srcDirectory string,"		    "uiDirectory string"		    ")";		query.exec(queryString);		//		queryString = "create table config ("		    "currentEditor int"		    ")";		query.exec(queryString);		//		queryString = "create table checksums ("		    "filename string,"		    "checksum int"		    ")";		query.exec(queryString);		//    }    return true;}////static function to determine the QDevelop directory (used for settings and global ctags database)// the directory is returnded WITH a trailing slashQString getQDevelopPath(void){	static QString path;	if (!path.isEmpty()) return path;		// if we havn't yet done so, determine the full db file name and make sure the directory exists	// determine path for application data dirs#ifdef Q_OS_WIN32	wchar_t buf[MAX_PATH];	if (!SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, 0, buf))		path = QString::fromUtf16((ushort *)buf)+"/";	else		path = QDir::homePath()+"/Application Data/"; // this shouldn't happen#else	path = QDir::homePath()+"/";#endif	// create subdir	QDir dir(path);#ifdef Q_OS_WIN32	dir.mkdir("QDevelop");	path += "QDevelop/";#else	dir.mkdir(".qdevelop");	path += ".qdevelop/";#endif	return path;}//QString simplifiedText(const QString string){    QString m_fileString = string;    enum CodeState    {        NORMAL,        NORMAL_GOT_SLASH,        COMMENT_SINGLE_LINE,        COMMENT_MULTI_LINE,        COMMENT_GOT_STAR,        COMMENT_GOT_ESCAPE,        STRING,        STRING_GOT_ESCAPE,        CHAR,        CHAR_GOT_ESCAPE    } state = NORMAL;        QChar c;    int i;    bool isAfterSharp = false;    for (i = 0; i < m_fileString.count(); i++)    {        c = m_fileString.at(i);        switch (state)        {            case NORMAL:                if (c == '/')                {                    state = NORMAL_GOT_SLASH;                    break;                }                else if (c == '"' )                {                    state = STRING;                }                else if (c == '\'' )                {                    state = CHAR;                }                else if (c == '#' )                {                    isAfterSharp = true;                }                else if (c == QChar('\n') )                {                    isAfterSharp = false;                }                break;            case NORMAL_GOT_SLASH:                if (c == '/')                {                    state = COMMENT_SINGLE_LINE;	                m_fileString[i-1] = m_fileString[i] = ' ';                }                else if (c == '*')                {                    state = COMMENT_MULTI_LINE;	                m_fileString[i-1] = m_fileString[i] = ' ';                }                else                {                    state = NORMAL;                }                isAfterSharp = false;                break;            case COMMENT_SINGLE_LINE:                if (c == '\n')                {                    state = NORMAL;                }                else if (c == '\\')                {                    state = COMMENT_GOT_ESCAPE;                	m_fileString[i] = ' ';                }                else                	m_fileString[i] = ' ';                isAfterSharp = false;                break;            case COMMENT_MULTI_LINE:                if (c == '*')                {                    state = COMMENT_GOT_STAR;                }                m_fileString[i] = ' ';                isAfterSharp = false;                break;            case COMMENT_GOT_STAR:                if (c == '*')                    state = COMMENT_GOT_STAR;                else if (c == '/')                    state = NORMAL;                else                    state = COMMENT_MULTI_LINE;                m_fileString[i] = ' ';                isAfterSharp = false;                break;            case COMMENT_GOT_ESCAPE:                state = COMMENT_SINGLE_LINE;                m_fileString[i] = ' ';                break;            case STRING:                if (c == '\\')                {                    state = STRING_GOT_ESCAPE;	                m_fileString[i] = ' ';               	}                else if (c == '"')                {                    state = NORMAL;                }                else if( isAfterSharp  )	                m_fileString[i] = c;                else	                m_fileString[i] = ' ';                break;            case CHAR:                if (c == '\\')                {                    state = CHAR_GOT_ESCAPE;	                m_fileString[i] = ' ';                	               	}                else if (c == '\'')                {                    state = NORMAL;                }                else	                m_fileString[i] = ' ';                break;            case STRING_GOT_ESCAPE:                state = STRING;                m_fileString[i] = ' ';                break;            case CHAR_GOT_ESCAPE:                state = CHAR;                m_fileString[i] = ' ';                break;        }    }    return m_fileString;}

⌨️ 快捷键说明

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