📄 doxywizard.cpp
字号:
{ saveFile(); QString s = "doxygen " + configFileName; system((const char*)s); statusBar()->message("doxygen completed: "+ configFileName, messageTimeout ); hasChanged = FALSE; refreshCaption();} void Wizard::quit(){ if (hasChanged) { switch( QMessageBox::warning( this, "DoxyWizard", "Quit and lose changes?\n", "Yes", "No", 0, 0, 1 )) { case 0: qApp->quit(); break; case 1: break; } } else { qApp->quit(); }}void Wizard::changed(){ hasChanged = TRUE; refreshCaption();}void Wizard::refreshCaption(){ QString s; if (hasChanged) s=" *"; setCaption("Doxywizard - ["+configFileName+s+"]");}void Wizard::about(){ QMessageBox::about(this, "DoxyWizard", "<qt><center>A tool to create and edit configuration files " "that can be read by doxygen.</center><p>" "<center>Written by Dimitri van Heesch</center><p>" "<center>(c) 2000-2001</center></qt>" );}//----------------------------------------------------------------------ConfigFile::ConfigFile( QWidget *parent ) : QWidget( parent ){ m_dependencies = new QDict< QList<IInput> >(257); m_dependencies->setAutoDelete(TRUE); m_inputWidgets = new QDict< IInput >; m_switches = new QDict< QObject >; QVBoxLayout *layout = new QVBoxLayout( this ); // QTabWidget definition QTabWidget *tab = new QTabWidget( this ); layout->addWidget( tab ); QListIterator<ConfigOption> options = Config::instance()->iterator(); PageWidget *page = 0; ConfigOption *option = 0; for (options.toFirst();(option=options.current());++options) { switch(option->kind()) { case ConfigOption::O_Info: if (page) page->addStretch(1); page = new PageWidget( tab, option->name() ); QWhatsThis::add(page, option->docs().simplifyWhiteSpace() ); break; case ConfigOption::O_String: { ASSERT(page!=0); InputString::StringMode sm=InputString::StringFree; switch(((ConfigString *)option)->widgetType()) { case ConfigString::String: sm=InputString::StringFree; break; case ConfigString::File: sm=InputString::StringFile; break; case ConfigString::Dir: sm=InputString::StringDir; break; } InputString *inputString = new InputString( option->name(), // name page, // widget *((ConfigString *)option)->valueRef(), // variable sm // type ); QWhatsThis::add(inputString, option->docs().simplifyWhiteSpace() ); connect(inputString,SIGNAL(changed()),SIGNAL(changed())); m_inputWidgets->insert(option->name(),inputString); addDependency(m_switches,option->dependsOn(),option->name()); } break; case ConfigOption::O_Enum: { ASSERT(page!=0); InputString *inputString = new InputString( option->name(), // name page, // widget *((ConfigEnum *)option)->valueRef(), // variable InputString::StringFixed // type ); QStrListIterator sli=((ConfigEnum *)option)->iterator(); for (sli.toFirst();sli.current();++sli) { inputString->addValue(sli.current()); } QWhatsThis::add(inputString, option->docs().simplifyWhiteSpace() ); connect(inputString,SIGNAL(changed()),SIGNAL(changed())); m_inputWidgets->insert(option->name(),inputString); addDependency(m_switches,option->dependsOn(),option->name()); } break; case ConfigOption::O_List: { ASSERT(page!=0); InputStrList::ListMode lm=InputStrList::ListString; switch(((ConfigList *)option)->widgetType()) { case ConfigList::String: lm=InputStrList::ListString; break; case ConfigList::File: lm=InputStrList::ListFile; break; case ConfigList::Dir: lm=InputStrList::ListDir; break; case ConfigList::FileAndDir: lm=InputStrList::ListFileDir; break; } InputStrList *inputStrList = new InputStrList( option->name(), // name page, // widget *((ConfigList *)option)->valueRef(), // variable lm // type ); QWhatsThis::add(inputStrList, option->docs().simplifyWhiteSpace() ); connect(inputStrList,SIGNAL(changed()),SIGNAL(changed())); m_inputWidgets->insert(option->name(),inputStrList); addDependency(m_switches,option->dependsOn(),option->name()); } break; break; case ConfigOption::O_Bool: { ASSERT(page!=0); InputBool *inputBool = new InputBool( option->name(), // name page, // widget *((ConfigBool *)option)->valueRef() // variable ); QWhatsThis::add(inputBool, option->docs().simplifyWhiteSpace() ); connect(inputBool,SIGNAL(changed()),SIGNAL(changed())); m_inputWidgets->insert(option->name(),inputBool); addDependency(m_switches,option->dependsOn(),option->name()); } break; case ConfigOption::O_Int: { ASSERT(page!=0); InputInt *inputInt = new InputInt( option->name(), // name page, // widget *((ConfigInt *)option)->valueRef(), // variable ((ConfigInt *)option)->minVal(), // min value ((ConfigInt *)option)->maxVal() // max value ); QWhatsThis::add(inputInt, option->docs().simplifyWhiteSpace() ); connect(inputInt,SIGNAL(changed()),SIGNAL(changed())); m_inputWidgets->insert(option->name(),inputInt); addDependency(m_switches,option->dependsOn(),option->name()); } break; } } if (page) page->addStretch(1); QDictIterator<QObject> di(*m_switches); QObject *obj = 0; for (di.toFirst();(obj=di.current());++di) { connect(obj,SIGNAL(toggle(const char *,bool)),SLOT(toggle(const char *,bool))); // UGLY HACK: assumes each item depends on a boolean without checking! emit toggle(di.currentKey(),((InputBool *)obj)->getState()); } }ConfigFile::~ConfigFile(){ delete m_dependencies; delete m_inputWidgets; delete m_switches;}void ConfigFile::addDependency(QDict<QObject> *switches, const QCString &dep,const QCString &name){ if (!dep.isEmpty()) { IInput *parent = m_inputWidgets->find(dep); ASSERT(parent!=0); IInput *child = m_inputWidgets->find(name); ASSERT(child!=0); if (switches->find(dep)==0) { switches->insert(dep,parent->qobject()); } QList<IInput> *list = m_dependencies->find(dep); if (list==0) { list = new QList<IInput>; m_dependencies->insert(dep,list); } list->append(child); }}void ConfigFile::toggle(const char *name,bool state){ QList<IInput> *inputs = m_dependencies->find(name); ASSERT(inputs!=0); IInput *input = inputs->first(); while (input) { input->setEnabled(state); input = inputs->next(); }}void ConfigFile::init(){ QDictIterator<IInput> di(*m_inputWidgets); IInput *input = 0; for (di.toFirst();(input=di.current());++di) { input->init(); } QDictIterator<QObject> dio(*m_switches); QObject *obj = 0; for (dio.toFirst();(obj=dio.current());++dio) { connect(obj,SIGNAL(toggle(const char *,bool)),SLOT(toggle(const char *,bool))); // UGLY HACK: assumes each item depends on a boolean without checking! emit toggle(dio.currentKey(),((InputBool *)obj)->getState()); } }//----------------------------------------------------------------------int main(int argc,char **argv){ QApplication::setColorSpec( QApplication::NormalColor ); QApplication app(argc,argv); Wizard wizard(argc,argv); app.setMainWidget( &wizard ); wizard.show(); return app.exec();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -