📄 resource.cpp
字号:
forwards = forwards.nextSibling().toElement(); QDomElement includes = e; while ( includes.tagName() != "includes" && !includes.isNull() ) includes = includes.nextSibling().toElement(); QDomElement variables = e; while ( variables.tagName() != "variables" && !variables.isNull() ) variables = variables.nextSibling().toElement(); QDomElement signals = e; while ( signals.tagName() != "signals" && !signals.isNull() ) signals = signals.nextSibling().toElement(); QDomElement slots = e; while ( slots.tagName() != "slots" && !slots.isNull() ) slots = slots.nextSibling().toElement(); QDomElement functions = e; while ( functions.tagName() != "functions" && !functions.isNull() ) functions = functions.nextSibling().toElement(); QDomElement connections = e; while ( connections.tagName() != "connections" && !connections.isNull() ) connections = connections.nextSibling().toElement(); QDomElement imageCollection = e; images.clear(); while ( imageCollection.tagName() != "images" && !imageCollection.isNull() ) imageCollection = imageCollection.nextSibling().toElement(); QDomElement customWidgets = e; while ( customWidgets.tagName() != "customwidgets" && !customWidgets.isNull() ) customWidgets = customWidgets.nextSibling().toElement(); QDomElement tabOrder = e; while ( tabOrder.tagName() != "tabstops" && !tabOrder.isNull() ) tabOrder = tabOrder.nextSibling().toElement(); QDomElement actions = e; while ( actions.tagName() != "actions" && !actions.isNull() ) actions = actions.nextSibling().toElement(); QDomElement toolbars = e; while ( toolbars.tagName() != "toolbars" && !toolbars.isNull() ) toolbars = toolbars.nextSibling().toElement(); QDomElement menubar = e; while ( menubar.tagName() != "menubar" && !menubar.isNull() ) menubar = menubar.nextSibling().toElement(); QDomElement widget; while ( !e.isNull() ) { if ( e.tagName() == "widget" ) { widgets.clear(); widget = e; } else if ( e.tagName() == "include" ) { // compatibility with 2.x MetaDataBase::Include inc; inc.location = "global"; if ( e.attribute( "location" ) == "local" ) inc.location = "local"; inc.implDecl = "in declaration"; if ( e.attribute( "impldecl" ) == "in implementation" ) inc.implDecl = "in implementation"; inc.header = e.firstChild().toText().data(); if ( inc.header.right( 5 ) != ".ui.h" ) { metaIncludes.append( inc ); } else { if ( formwindow->formFile() ) formwindow->formFile()->setCodeFileState( FormFile::Ok ); } } else if ( e.tagName() == "comment" ) { metaInfo.comment = e.firstChild().toText().data(); } else if ( e.tagName() == "forward" ) { // compatibility with old betas metaForwards << e.firstChild().toText().data(); } else if ( e.tagName() == "variable" ) { // compatibility with old betas MetaDataBase::Variable v; v.varName = e.firstChild().toText().data(); v.varAccess = "protected"; metaVariables << v; } else if ( e.tagName() == "author" ) { metaInfo.author = e.firstChild().toText().data(); } else if ( e.tagName() == "class" ) { metaInfo.className = e.firstChild().toText().data(); } else if ( e.tagName() == "pixmapfunction" ) { if ( formwindow ) { formwindow->setSavePixmapInline( FALSE ); formwindow->setSavePixmapInProject( FALSE ); formwindow->setPixmapLoaderFunction( e.firstChild().toText().data() ); } } else if ( e.tagName() == "pixmapinproject" ) { if ( formwindow ) { formwindow->setSavePixmapInline( FALSE ); formwindow->setSavePixmapInProject( TRUE ); } } else if ( e.tagName() == "exportmacro" ) { exportMacro = e.firstChild().toText().data(); } else if ( e.tagName() == "layoutdefaults" ) { formwindow->setLayoutDefaultSpacing( e.attribute( "spacing", QString::number( formwindow->layoutDefaultSpacing() ) ).toInt() ); formwindow->setLayoutDefaultMargin( e.attribute( "margin", QString::number( formwindow->layoutDefaultMargin() ) ).toInt() ); } else if ( e.tagName() == "layoutfunctions" ) { formwindow->setSpacingFunction( e.attribute( "spacing" ) ); formwindow->setMarginFunction( e.attribute( "margin" ) ); if ( !formwindow->marginFunction().isEmpty() || !formwindow->spacingFunction().isEmpty() ) formwindow->hasLayoutFunctions( TRUE ); } e = e.nextSibling().toElement(); } if ( !imageCollection.isNull() ) loadImageCollection( imageCollection ); if ( !customWidgets.isNull() ) loadCustomWidgets( customWidgets, this );#if defined (QT_NON_COMMERCIAL) bool previewMode = MainWindow::self ? MainWindow::self->isPreviewing() : FALSE; QWidget *w = (QWidget*)createObject( widget, !previewMode ? (QWidget*)formwindow : MainWindow::self ); if ( !w ) return FALSE; if ( previewMode ) w->reparent( MainWindow::self, Qt::WType_TopLevel, w->pos(), TRUE );#else if ( !createObject( widget, formwindow) ) return FALSE;#endif if ( !forwards.isNull() ) { for ( QDomElement n = forwards.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) if ( n.tagName() == "forward" ) metaForwards << n.firstChild().toText().data(); } if ( !includes.isNull() ) { for ( QDomElement n = includes.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) if ( n.tagName() == "include" ) { if ( n.tagName() == "include" ) { MetaDataBase::Include inc; inc.location = "global"; if ( n.attribute( "location" ) == "local" ) inc.location = "local"; inc.implDecl = "in declaration"; if ( n.attribute( "impldecl" ) == "in implementation" ) inc.implDecl = "in implementation"; inc.header = n.firstChild().toText().data(); if ( inc.header.right( 5 ) != ".ui.h" ) { metaIncludes.append( inc ); } else { if ( formwindow->formFile() ) formwindow->formFile()->setCodeFileState( FormFile::Ok ); } } } } if ( !variables.isNull() ) { for ( QDomElement n = variables.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) { if ( n.tagName() == "variable" ) { MetaDataBase::Variable v; v.varName = n.firstChild().toText().data(); v.varAccess = n.attribute( "access", "protected" ); if ( v.varAccess.isEmpty() ) v.varAccess = "protected"; metaVariables << v; } } } if ( !signals.isNull() ) { for ( QDomElement n = signals.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) if ( n.tagName() == "signal" ) metaSignals << n.firstChild().toText().data(); } if ( !slots.isNull() ) { for ( QDomElement n = slots.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) if ( n.tagName() == "slot" ) { MetaDataBase::Function function; function.specifier = n.attribute( "specifier", "virtual" ); if ( function.specifier.isEmpty() ) function.specifier = "virtual"; function.access = n.attribute( "access", "public" ); if ( function.access.isEmpty() ) function.access = "public"; function.language = n.attribute( "language", "C++" ); function.returnType = n.attribute( "returnType", "void" ); if ( function.returnType.isEmpty() ) function.returnType = "void"; function.type = "slot"; function.function = n.firstChild().toText().data(); if ( !MetaDataBase::hasFunction( formwindow, function.function, TRUE ) ) MetaDataBase::addFunction( formwindow, function.function, function.specifier, function.access, "slot", function.language, function.returnType ); else MetaDataBase::changeFunctionAttributes( formwindow, function.function, function.function, function.specifier, function.access, "slot", function.language, function.returnType ); } } if ( !functions.isNull() ) { for ( QDomElement n = functions.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) { if ( n.tagName() == "function" ) { MetaDataBase::Function function; function.specifier = n.attribute( "specifier", "virtual" ); if ( function.specifier.isEmpty() ) function.specifier = "virtual"; function.access = n.attribute( "access", "public" ); if ( function.access.isEmpty() ) function.access = "public"; function.type = n.attribute( "type", "function" ); function.type = "function"; function.language = n.attribute( "language", "C++" ); function.returnType = n.attribute( "returnType", "void" ); if ( function.returnType.isEmpty() ) function.returnType = "void"; function.function = n.firstChild().toText().data(); if ( !MetaDataBase::hasFunction( formwindow, function.function, TRUE ) ) MetaDataBase::addFunction( formwindow, function.function, function.specifier, function.access, function.type, function.language, function.returnType ); else MetaDataBase::changeFunctionAttributes( formwindow, function.function, function.function, function.specifier, function.access, function.type, function.language, function.returnType ); } } } if ( !actions.isNull() ) loadActions( actions ); if ( !toolbars.isNull() ) loadToolBars( toolbars ); if ( !menubar.isNull() ) loadMenuBar( menubar ); if ( !connections.isNull() ) loadConnections( connections ); if ( !tabOrder.isNull() ) loadTabOrder( tabOrder ); if ( formwindow ) { MetaDataBase::setIncludes( formwindow, metaIncludes ); MetaDataBase::setForwards( formwindow, metaForwards ); MetaDataBase::setVariables( formwindow, metaVariables ); MetaDataBase::setSignalList( formwindow, metaSignals ); metaInfo.classNameChanged = metaInfo.className != QString( formwindow->name() ); MetaDataBase::setMetaInfo( formwindow, metaInfo ); MetaDataBase::setExportMacro( formwindow->mainContainer(), exportMacro ); } loadExtraSource( formwindow->formFile(), currFileName, langIface, hasFunctions ); if ( mainwindow && formwindow ) mainwindow->insertFormWindow( formwindow ); if ( formwindow ) { formwindow->killAccels( formwindow ); if ( formwindow->layout() ) formwindow->layout()->activate(); if ( hadGeometry ) formwindow->resize( formwindow->size().expandedTo( formwindow->minimumSize(). expandedTo( formwindow->minimumSizeHint() ) ) ); else formwindow->resize( formwindow->size().expandedTo( formwindow->sizeHint() ) ); } return TRUE;}static bool saveCode( const QString &filename, const QString &code ){ QFile f( filename ); if ( f.open(IO_WriteOnly | IO_Translate) ) { QTextStream ts( &f ); ts << code; return TRUE; } return FALSE;}bool Resource::save( const QString& filename, bool formCodeOnly ){ if ( !formwindow || filename.isEmpty() ) return FALSE; if (!langIface) { QString lang = "Qt Script"; if ( mainwindow ) lang = mainwindow->currProject()->language(); langIface = MetaDataBase::languageInterface( lang ); if ( langIface ) langIface->addRef(); } if ( formCodeOnly && langIface ) { if ( saveFormCode(formwindow->formFile(), langIface) ) return TRUE; bool breakout = FALSE; FormFile *ff = formwindow->formFile(); QString codeFile = ff->project()->makeAbsolute( ff->codeFile() ); QString filter = langIface->fileFilterList().join(";;"); while ( !breakout ) { QString fn = QFileDialog::getSaveFileName( codeFile, filter ); breakout = fn.isEmpty(); if ( !breakout ) { if ( saveCode(fn, ff->code()) ) return TRUE; } } } currFileName = filename; QFile f( filename ); if ( !f.open( IO_WriteOnly | IO_Translate ) ) return FALSE; bool b = save( &f ); f.close(); return b;}bool Resource::save( QIODevice* dev ){ if ( !formwindow ) return FALSE; if ( !langIface ) { QString lang = "Qt Script"; if ( mainwindow ) lang = mainwindow->currProject()->language(); langIface = MetaDataBase::languageInterface( lang ); if ( langIface ) langIface->addRef(); } QTextStream ts( dev ); ts.setCodec( QTextCodec::codecForName( "UTF-8" ) ); ts << "<!DOCTYPE UI><UI version=\"3.2\" stdsetdef=\"1\">" << endl; saveMetaInfoBefore( ts, 0 ); saveObject( formwindow->mainContainer(), 0, ts, 0 ); if ( formwindow->mainContainer()->inherits( "QMainWindow" ) ) { saveMenuBar( (QMainWindow*)formwindow->mainContainer(), ts, 0 ); saveToolBars( (QMainWindow*)formwindow->mainContainer(), ts, 0 ); } if ( !MetaDataBase::customWidgets()->isEmpty() && !usedCustomWidgets.isEmpty() ) saveCustomWidgets( ts, 0 ); if ( formwindow->mainContainer()->inherits( "QMainWindow" ) ) saveActions( formwindow->actionList(), ts, 0 ); if ( !images.isEmpty() ) saveImageCollection( ts, 0 ); if ( !MetaDataBase::connections( formwindow ).isEmpty() || !MetaDataBase::slotList( formwindow ).isEmpty() ) saveConnections( ts, 0 ); saveTabOrder( ts, 0 ); saveMetaInfoAfter( ts, 0 ); saveIncludeHints( ts, 0 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -