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

📄 mainwidget.cpp

📁 Linux下的C、C++ IDE
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			m_menuTools->insertItem((*listAliases)[2],					  this,					  SLOT(toolsCust3()),					  0,					  MENU_TOOLS_CUST3);			break;		case 3:			m_menuTools->insertItem((*listAliases)[3],					  this,					  SLOT(toolsCust4()),					  0,					  MENU_TOOLS_CUST4);			break;		case 4:			m_menuTools->insertItem((*listAliases)[4],					  this,					  SLOT(toolsCust5()),					  0,					  MENU_TOOLS_CUST5);			break;		case 5:			m_menuTools->insertItem((*listAliases)[5],					  this,					  SLOT(toolsCust6()),					  0,					  MENU_TOOLS_CUST6);			break;		case 6:			m_menuTools->insertItem((*listAliases)[6],					  this,					  SLOT(toolsCust7()),					  0,					  MENU_TOOLS_CUST7);			break;		case 7:			m_menuTools->insertItem((*listAliases)[7],					  this,					  SLOT(toolsCust8()),					  0,					  MENU_TOOLS_CUST8);			break;		default:			return true;		}	}/*	m_menuTools->insertSeparator();	m_menuTools->insertItem("&Kill", 					this, 					SLOT(toolsKill()), 					CTRL+Key_K,					MENU_TOOLS_KILL);*/	m_custtools = i;	return true;}void MainWidget::toolsCust(unsigned tool){	QString cmd = "";	QStringList *pTools = m_CustToolMgr.getToolList();	bool ok = false; 	if (!m_bOpenFile) 		return;			for (unsigned i=0; i < pTools->count(); i++)	{		if (i == tool)		{			cmd = (*pTools)[i];			break;		}	}	if (cmd == "")		return;	m_CurCmd = cmd;	QString opt = QInputDialog::getText((QString) m_CurCmd + " Options",					    QString::null,					    QLineEdit::Normal,					    "",					    &ok,					    this);	if (!ok)		return;			showBuildWnd(true);	m_hidemain->setBuildOutput((QString) "Executing \'" + m_CurCmd + "\'...");	// NOTE: Add "options" dialog\functionality later.	cmd += (QString) " " + opt + " " + m_CurDoc.getPath();	if (!m_BuildMgr->cmd((const char *) cmd))	{		QMessageBox::warning(this,				    "hIDE",				    (QString) "Unable to execute " + m_CurCmd+ ".");		return;	}	enableBuildTools(false);	enableCustTools(false);	}bool MainWidget::openProject(const QString &path){	QStringList *flist = 0;	if (m_bOpenProj)		projClose();			if (!m_HideProj.load(path))		return false;	m_status->message("Loading project files...");	flist = m_HideProj.getFileList();		unsigned files = flist->count();	QProgressDialog prog;	prog.setAutoClose(true);	prog.setAutoReset(true);	prog.setTotalSteps(files);	prog.setCaption((QString) "Loading " + m_HideProj.getName() + " project...");	for (unsigned i=0; i < files; i++)	{		m_status->message((QString) "Loading " +				  (*flist)[i] + "...");						fileOpen((*flist)[i]);		prog.setProgress(i+1);      }	enableProjectTools(true);		m_bOpenProj = true;				m_ProjName->setText(m_HideProj.getName());	m_hidemain->getSrcList()->setSelected(0, 1);		m_status->message((QString) m_HideProj.getName() + " project loaded", 5000);	GlobalConfMgr gcm;	gcm.load();	gcm.setLastProj((QString) m_HideProj.getRoot() + 				FILE_SEP + 				m_HideProj.getName() + 				".hide");	gcm.save();	return true;}////////////////////////////////////////////////////////////////////////////// Slots.// Create new file.bool MainWidget::fileNew(){	QFileInfo fi;		// Display a "Save As" dialog so the user can name the new file.    	QString fn = QFileDialog::getSaveFileName(QString::null,                    				  "All Files (*)",     						  this,                    				  "create new file"                    				  "New File");	     	// If "Cancel" was clicked return...	if (fn.isEmpty())		return false;		fi.setFile(fn);	// If a project is open create a source file with	// the appropriate comments in the head, else create a	// blank document...	if (m_bOpenProj)	{		if (IS_C(fi.extension(0)))		{			CGen csrc;						csrc.create(fi.absFilePath(), m_HideProj.getName(), m_HideProj.getAuthor());		}		else		if (IS_CPP(fi.extension(0)))		{				CPPGen cppsrc;						cppsrc.create(fi.absFilePath(), m_HideProj.getName(), m_HideProj.getAuthor());		}		else		if (IS_JAVA(fi.extension(0)))		{				JavaGen jsrc;						jsrc.create(fi.absFilePath(), m_HideProj.getName(), m_HideProj.getAuthor());		}		else		{			SrcGen unk;						unk.create(fi.absFilePath());		}	}	else	{		SrcGen newfile;				newfile.create(fi.absFilePath());	}		fileOpen(fi.absFilePath()); // Open the file in the editor.	return true;}// Open file.void MainWidget::fileOpen(){	// Display an "Open" file dialog for the user to select a file.	QString fn(QFileDialog::getOpenFileName(QString::null, "All Files (*)"));	// If "Cancel" was clicked return...	if (fn.isEmpty())		return;	// Open the file in the editor.	fileOpen(fn); 		}// Save file.void MainWidget::fileSave(){	// If there's a file open save it...	if (m_bOpenFile)		fileSave(m_CurDoc.getPath());	else // New file...		fileSaveAs();}// Save file as.void MainWidget::fileSaveAs(){	QFileInfo fi;		// if no file's open return... 	//if (!m_bOpenFile) 	//     return; 	 	// Display a "Save As" dialog for the user to input the file name.  	QString fn = QFileDialog::getSaveFileName(QString::null,                    				  "All Files (*)",     						  this,                    				  "save as"                    				  "Save As");	   	// If the user clicked "Cancel" return...	if (fn.isEmpty())		return;		fi.setFile(fn);		// Update the current document with the editors contents.	m_CurDoc.setData(m_hidemain->getContent());		// Get the data from the current document.	QString data = m_CurDoc.getData();		// Remove the document from the list.	m_DocList->remove(m_CurDoc);		// Remove the documents title from the file listbox...	m_hidemain->removeDoc(m_CurDoc);		// Set the current document to hold the newly named one.	m_CurDoc.set(fi.filePath(), fi.fileName(), data);		// Save (create) the new document.	fileSave(m_CurDoc.getPath());	// Add the document to the list.	m_DocList->add(m_CurDoc);	// Insert the documents name into the file listbox.	m_hidemain->addDoc(m_CurDoc);	// May be newly created and only one open, set open file flag.	m_bOpenFile = true;		// Set the windows title.	setTitle(m_CurDoc.getName());}void MainWidget::fileSaveAll(){	QStringList openfiles;	HideDoc doc;	std::ofstream out;		if (!m_bOpenFile)		return;			m_CurDoc.setData(m_hidemain->getContent());		m_DocList->update(m_CurDoc);		openfiles = m_DocList->getDocPaths();		for (unsigned i=0; i < openfiles.count(); i++)	{	 	doc = m_DocList->getByPath(openfiles[i]);	 		 	if (doc.isModified())	 	{	 		out.open(doc.getPath());	 		 		if (out)	 		{	 			out << (const char *) doc.getData();	 			out.close();	 		}			doc.setModified(0);			m_DocList->update(m_CurDoc);	 	}	}	setTitle(m_CurDoc.getName());}// Close file.void MainWidget::fileClose(){	if (m_bOpenFile)	{		if (m_CurDoc.isModified())		{			QString msg = (QString)			"Save the modifications made to " + m_CurDoc.getName() + "?";						switch (QMessageBox::warning(this,						 "hIDE",						 msg,						 QMessageBox::Yes,						 QMessageBox::No,						 QMessageBox::NoButton))			{			case QMessageBox::Yes:			      m_CurDoc.setData(m_hidemain->getContent());						      fileSave(m_CurDoc.getPath());				m_CurDoc.setModified(0);											break;						case QMessageBox::No:				break;			}		}					// Remove this files title from the file listbox.		m_hidemain->removeDoc(m_CurDoc);						// Clear the editor.		m_hidemain->getEdit()->setText("");				m_CurDoc.setModified(0);		// Remove the document from the open document list...		if (!m_DocList->remove(m_CurDoc))			return;					// No more open files...			if (m_DocList->count() == 0)		{			// Clear everything up...			m_CurDoc.set("", "", "");			m_bOpenFile = false;			m_SrcType->clear();			enableBuildTools(false);			enableFileTools(false);			enableEditTools(false);			enableCustTools(false);			m_LineNum->setText(STATUS_LINE);				setTitle();   		}   		else // Still at least 1 open...   		{   			QListBox *lb = m_hidemain->getSrcList();   						// Fetch the last document.  	 		m_CurDoc = m_DocList->getByName(lb->text(lb->count()-1));			m_LineNum->setText(STATUS_LINE);				enableBuildTools(false);			  	 	 						  	 		// Display the new current document.  	 		showDoc();  	 		  	 		setTitle(m_CurDoc.getName());  	 	}		CppBrowser cb(m_hidemain->getClassTree());		cb.enumerate(m_DocList);	}}void MainWidget::fileCloseAll(){	while (m_bOpenFile)				fileClose();}void MainWidget::editUppercase(){	if (m_hidemain->getEdit()->hasSelectedText())	{		QString sel = m_hidemain->getEdit()->selectedText();		sel = sel.upper();		m_hidemain->getEdit()->insert(sel);	}}void MainWidget::editLowercase(){	if (m_hidemain->getEdit()->hasSelectedText())	{		QString sel = m_hidemain->getEdit()->selectedText();		sel = sel.lower();		m_hidemain->getEdit()->insert(sel);	}}void MainWidget::editGotoLine(){	GotoLineDlg dlg(this);	if (dlg.exec() == QDialog::Accepted)	{		m_hidemain->getEdit()->setFocus();		m_hidemain->getEdit()->moveToLine(dlg.m_editLineNum->text().toUInt());	}}void MainWidget::editFind(){	FindDlg dlg(this);	if (dlg.exec() == QDialog::Accepted)	{		QTextEdit *editor = m_hidemain->getEdit();		int i=0;		if (!editor->find(dlg.m_editFind->text(),					dlg.m_cbCase->isChecked(),					true,					&i,					&i))		{			QMessageBox::warning(this,						   "Not Found",						   "The specified text was not found."); 			}		else			editor->setFocus();	}}void MainWidget::viewBuildWnd(){	if (m_hidemain->getBuildEdit()->isVisible())		showBuildWnd(false);	else		showBuildWnd(true);}void MainWidget::viewStatusBar(){	if (m_status->isVisible())	{		m_status->hide();		m_menu->setItemChecked(MENU_VIEW_STATUSBAR, false);	}	else	{		m_status->show();		m_menu->setItemChecked(MENU_VIEW_STATUSBAR, true);	}}void MainWidget::viewHex(){	HexView hv(this, 0, m_CurDoc.getName(), m_hidemain->getContent());		hv.exec();}void MainWidget::viewBigEdit(){	if (m_hidemain->getLeftTab()->isVisible())	{			m_hidemain->getLeftTab()->hide();			m_hidemain->getBuildEdit()->hide();			m_status->hide();			m_menu->setItemChecked(MENU_VIEW_BIGEDIT, true);			m_menu->setItemChecked(MENU_VIEW_BUILD, false);			m_menu->setItemChecked(MENU_VIEW_STATUSBAR, false);	}	else	{			m_hidemain->getLeftTab()->show();			m_status->show();			m_menu->setItemChecked(MENU_VIEW_BIGEDIT, false);			m_menu->setItemChecked(MENU_VIEW_STATUSBAR, true);	}}void MainWidget::viewNext(){	QListBox *lbSrc 	= m_hidemain->getSrcList();	int newsel 		= lbSrc->currentItem()+1;		lbSrc->setSelected(newsel, true);}void MainWidget::viewPrev(){	QListBox *lbSrc 	= m_hidemain->getSrcList();	int newsel 		= lbSrc->currentItem()-1;	lbSrc->setSelected(newsel, true);}void MainWidget::toolsCust1() { toolsCust(0); }void MainWidget::toolsCust2() { toolsCust(1); }void MainWidget::toolsCust3() { toolsCust(2); }void MainWidget::toolsCust4() { toolsCust(3); }void MainWidget::toolsCust5() { toolsCust(4); }void MainWidget::toolsCust6() { toolsCust(5); }void MainWidget::toolsCust7() { toolsCust(6); }void MainWidget::toolsCust8() { toolsCust(7); }void MainWidget::toolsKill(){	m_BuildMgr->kill();	pthread_join(m_BuildMgr->getCmdTid(), NULL);	if (m_bOpenFile)	{		QFileInfo fi(m_CurDoc.getPath());		QString ext = fi.extension(0);		if (IS_C(ext) || IS_CPP(ext))			enableCppTools(true);		else		if (IS_JAVA(ext))			enableJavaTools(true);		enableCustTools(true);	}		if (m_bOpenProj)		m_menu->setItemEnabled(MENU_PROJ_BUILD, true);	m_hidemain->setBuildOutput((QString) m_CurCmd + " killed.");	m_CurCmd = "";}void MainWidget::projNew(){	NewProjDlg dlg(this);	QString path = "";	if (dlg.exec() == QDialog::Accepted)	{		if (m_bOpenProj)			projClose();		m_HideProj.create(dlg.editName->text(),				  dlg.editRoot->text(),				  dlg.listLang->currentText());			m_HideProj.setAutoMake(true);		if (dlg.editAuthor->text() != "")			m_HideProj.setAuthor(dlg.editAuthor->text());		m_HideProj.save();			// Create, add and open the main source files...		if (m_HideProj.getLang() == LANG_C)		{			path = (QString) 				m_HideProj.getRoot() + FILE_SEP +				"main.c";			CGen csrc;						csrc.createMainImp(path, m_HideProj.getName(), m_HideProj.getAuthor());		}		else		if (m_HideProj.getLang() == LANG_CPP)		{			path = (QString)				m_HideProj.getRoot() + FILE_SEP +				"main.cpp";			CPPGen cppsrc;						cppsrc.createMainImp(path, m_HideProj.getName(), m_HideProj.getAuthor());		}		else		if (m_HideProj.getLang() == LANG_JAVA)		{			path = (QString)				m_HideProj.getRoot() + FILE_SEP +				m_HideProj.getName() + ".java";			JavaGen jsrc;						jsrc.createMainImp(path, m_HideProj.getName(), m_HideProj.getAuthor());		}		m_HideProj.addFile(path);		m_HideProj.save();					fileOpen(path);				m_bOpenProj = true;				enableProjectTools(true);				m_ProjName->setText(m_HideProj.getName());	}}void MainWidget::projOpen(){		// Display an "Open" file dialog for the user to select a file.	QString fn(QFileDialog::getOpenFileName(QString::null,						"hIDE Project Files (*.hide)",						this,						"open project",						"Open Project"));	// If "Cancel" was clicked return...	if (fn.isEmpty())		return;	openProject(fn);}

⌨️ 快捷键说明

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