📄 mainwidget.cpp
字号:
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 + -