📄 doxywizard.cpp
字号:
/****************************************************************************** * * $Id: doxywizard.cpp,v 1.5 2000/11/18 12:58:18 root Exp $ * * Copyright (C) 1997-2001 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * */#include <stdio.h>#include <stdlib.h>#include <qmainwindow.h>#include <qpopupmenu.h>#include <qfileinfo.h>#include <qmenubar.h>#include <qstatusbar.h>#include <qfiledialog.h>#include <qmessagebox.h>#include <qapplication.h>#include <qwhatsthis.h>#include <qlayout.h>#include <qtabwidget.h>#include <qtoolbar.h>#include <qtoolbutton.h>#include "doxywizard.h"#include "pagewidget.h"#include "inputbool.h"#include "inputstring.h"#include "inputstrlist.h"#include "inputint.h"#include "config.h"#include "version.h"#include "pixmaps.h"QString configFileName;const int messageTimeout = 4000; //!< status bar message timeout in millisec.//-------------------------------------------------------------------------static bool loadConfig( QString loadFile ){ QFileInfo fi( loadFile ); if ( !fi.exists() ) { QMessageBox::warning(0, "Warning","Input file "+loadFile+ " does not exist! Starting new file.", "ok" ); return FALSE; } // set config values to their defaults Config::instance()->init(); // parse the config file // this will initialize the various Config data members if (!Config::instance()->parse(loadFile)) { QMessageBox::warning(0, "Warning","Cannot open or read input "+loadFile+"!", "abort" ); return FALSE; } Config::instance()->convertStrToVal(); return TRUE;}static bool saveConfig( QString saveFile ){ QFile f( saveFile ); if ( !f.open(IO_WriteOnly) ) { QMessageBox::warning(0, "Warning","Cannot open file "+saveFile+ " for writing. Nothing saved!.", "ok" ); return FALSE; // failure } Config::instance()->writeTemplate(&f,TRUE,FALSE); // write brief config file return TRUE; // success}//--------------------------------------------------------------------------Wizard::Wizard(int argc,char **argv) : QMainWindow( 0, (QCString)"DoxyWizard v"+versionString ){ // File popupmenu hasChanged=FALSE; fileTools = new QToolBar( this, "file operations" ); fileTools->setLabel( "File Operations" ); new QToolButton( QPixmap( file_xpm ), "New File", QString::null, this, SLOT(newFile()), fileTools, "new file" ); //QToolButton * fileOpen = new QToolButton( QPixmap( fileopen_xpm ), "Open File", QString::null, this, SLOT(loadFile()), fileTools, "open file" ); //QToolButton * fileSave = new QToolButton( QPixmap( filesave_xpm ), "Save File", QString::null, this, SLOT(saveFile()), fileTools, "save file" ); //Micha: QToolButton * = new QToolButton( QPixmap( rundoxygen_xpm ), "Save and Run doxygen", QString::null, this, SLOT(runDoxygen()), fileTools, "save and run doxygen" ); QWhatsThis::whatsThisButton( fileTools ); QPopupMenu* file = new QPopupMenu; file->insertItem( QIconSet(QPixmap(file_xpm)), "&New", this, SLOT(newFile()), CTRL+Key_N ); file->insertItem( QIconSet(QPixmap(fileopen_xpm)), "&Load", this, SLOT(loadFile()), CTRL+Key_O ); file->insertSeparator(); file->insertItem( QIconSet(QPixmap(filesave_xpm)), "&Save", this, SLOT(saveFile()), CTRL+Key_S ); file->insertItem( "&Save as ...", this, SLOT(saveAsFile()) ); file->insertSeparator(); file->insertItem( "&Quit", this, SLOT(quit()), CTRL+Key_Q ); // Doxygen popupmenu QPopupMenu* doxygen = new QPopupMenu; int itemIndex = doxygen->insertItem( QIconSet(QPixmap(rundoxygen_xpm)), "&Run", this, SLOT(runDoxygen()), CTRL+Key_R ); doxygen->setWhatsThis ( itemIndex, "Run doxygen with the current configuration file..." ); // Help popupmenu QPopupMenu* help = new QPopupMenu; help->insertItem( "&About", this, SLOT(about()), Key_F1 ); help->insertItem( "What's &This", this , SLOT(whatsThis()), SHIFT+Key_F1); // menubar definition menuBar()->insertItem( "&File", file ); menuBar()->insertItem( "&Doxygen", doxygen ); menuBar()->insertSeparator(); menuBar()->insertItem( "&Help", help ); statusBar()->message("Welcome to DoxyWizard",messageTimeout); cw = new ConfigFile( this ); connect(cw,SIGNAL(changed()),this,SLOT(changed())); setCentralWidget( cw ); cw->show(); if (argc==2) { loadFile(argv[1]); } else { newFile(); } refreshCaption(); resize( 640, 480 );}void Wizard::newFile(){ if (hasChanged) { switch( QMessageBox::warning( this, "DoxyWizard", "Start a new file and lose changes?\n", "Yes", "No", 0, 0, 1 )) { case 0: break; default: // command aborted by the user return; } } Config::instance()->init(); configFileName="Doxyfile"; cw->init();}void Wizard::loadFile(const char *fileName){ if (fileName==0) { configFileName = QFileDialog::getOpenFileName(); } else { configFileName = fileName; } if ( !configFileName.isNull() ) { //initData( configFileName ); loadConfig(configFileName); cw->init(); statusBar()->message(configFileName, messageTimeout); } }void Wizard::loadFile(){ if (hasChanged) { switch( QMessageBox::warning( this, "DoxyWizard", "Load a new file and lose changes?\n", "Yes", "No", 0, 0, 1 )) { case 0: break; default: // command aborted by the user return; } } loadFile(0);}void Wizard::saveFile(){ //printf("configFileName=`%s'\n",configFileName.data()); if (configFileName.isEmpty()) { saveAsFile(); return; } else { saveConfig(configFileName); statusBar()->message(configFileName + " saved", messageTimeout); } hasChanged = FALSE; refreshCaption();}void Wizard::saveAsFile(){ configFileName = QFileDialog::getSaveFileName(); if (configFileName.isNull()) { statusBar()->message("Save aborted", messageTimeout ); return; // operation cancelled by the user } saveConfig(configFileName); statusBar()->message("Saved as "+ configFileName, messageTimeout );}//Micha// TODO: Use QProcess to show the output in a windowvoid Wizard::runDoxygen()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -