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

📄 editor.cpp

📁 Linux下的C、C++ IDE
💻 CPP
字号:
// FILE: editor.cpp// DESCRIPTION: Implementation for the HideEditor object.// AUTHOR: James Martin (boolean_machine@yahoo.com)#include "editor.h"#include <qstylesheet.h>#include <qstringlist.h>#include <qfileinfo.h>#include <qmessagebox.h>#include <cstring>#include <new>// Constructor.HideEditor::HideEditor(QWidget *parent, const char *name)	: QTextEdit(parent, name){	m_bColorize = false;	m_keywords = NULL;	m_slc = m_smlc = m_emlc = "";	m_SyntaxMgr = NULL;			m_SyntaxMgr = new SyntaxMgr;		if (!m_SyntaxMgr->load())	{	 	QMessageBox::warning(this,	 		"Error",	 		"Failed to intialize language keywords.");	}}HideEditor::~HideEditor(){	if (m_SyntaxMgr)		delete m_SyntaxMgr;}void HideEditor::setFontSize(int fs){	setFont(QFont("Courier", fs));}void HideEditor::moveToLine(unsigned line){	setCursorPosition(line-1, 0);}void HideEditor::moveToLine(QString tok){}void HideEditor::render(HideDoc &doc){/*		if (initHighlightState(doc.getName()))	{		QString html = (QString)			"<tt><pre>" +			QStyleSheet::escape(doc.getData()) +			"</pre></tt><br>";		setTextFormat(Qt::RichText);			setText(*colorize(&html));		setTextFormat(Qt::PlainText);	}	else*/		setText(doc.getData());}QString *HideEditor::colorize(QString *data){	QString kw = "";	int i = 0, kwlen = 0;		for (unsigned kwi=0; kwi < m_keywords->count(); kwi++)	{		kw = (*m_keywords)[kwi];				kwlen = kw.length();					i = data->find(kw);			while (i != -1)		{	 		data->insert(i, "<font color=\"#bb0000\">");	 		 		i += strlen("<font color=\"#bb0000\">") + kwlen;	 		 		data->insert(i, "</font>");	 		 		i += 7;	 			 		i = data->find(kw, i);		}	}		i =  data->find(m_slc);		while (i != -1)	{		data->insert(i, "<font color=\"#00aa00\"><i>");				i += strlen("<font color=\"#00aa00\"><i>") + m_slc.length(); 		 	i = data->find('\n', i);	 			 	data->insert(i, "</i></font>");	 		 	i += 11;	 		 	i = data->find(m_slc, i);		}		return data;}void HideEditor::colorize(int line){	QStringList words;	QString kw = "", slc = "//";	register int i=0, kwlen=0, start=0, end=0;	setTextFormat(Qt::RichText);				QString html = QStyleSheet::escape(text());			if (!m_bColorize)		return;					words += "int";	words += "inline";	words += "return";	words += "#include";	words += "#include";	words += "if";	words += "else";	words += "#define";	words += "for";			for (; i < line; i++)		start = html.find('\n', i)+1;			end = html.find('\n', i);			for (unsigned kwi=0; kwi<words.count(); kwi++)	{	 	kw 	= words[kwi];	 	kwlen 	= kw.length();	 		 	i = html.find(kw, start);	 		 	while ((i != -1) && (i < end))	 	{	 		html.insert(i, "<font color=\"#bb0000\">");	 		 		i += strlen("<font color=\"#bb0000\">") + kwlen;	 		 		html.insert(i, "</font>");	 		 		i += 7;	 			 		i = html.find(kw, i);	 	}	}			i =  html.find(slc, start);		while ((i != -1) && (i < end))	{		html.insert(i, "<font color=\"#00aa00\"><i>");				i += strlen("<font color=\"#00aa00\"><i>") + slc.length(); 		 	i = html.find('\n', i);	 			 	html.insert(i, "</i></font>");	 		 	i += 11;	 		 	i = html.find(slc, i);		}			setTextFormat(Qt::PlainText);		setText(html);}bool HideEditor::initHighlightState(QString fn){	QFileInfo fi(fn);	QString x = fi.extension(0);		m_keywords = m_SyntaxMgr->keywords(x);		if (!m_keywords)	{		m_bColorize = false;				return false;	}		m_slc 	= m_SyntaxMgr->slc(x);	m_smlc 	= m_SyntaxMgr->smlc(x);	m_emlc 	= m_SyntaxMgr->emlc(x);		m_bColorize = true;		return true;}

⌨️ 快捷键说明

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