void DesignerProjectImpl::breakPoints( QMap<QString, QValueList<uint> > &bps ) const { MainWindow::self->saveAllBreakPoints(); for ( QPtrListIterator<SourceFile> sources = project->sourceFiles(); sources.current(); ++sources ) { SourceFile* f = sources.current(); bps.insert( project->makeRelative( f->fileName() ) + " <Source-File>", MetaDataBase::breakPoints( f ) ); } for ( QPtrListIterator<FormFile> forms = project->formFiles(); forms.current(); ++forms ) { if ( forms.current()->formWindow() ) bps.insert( QString( forms.current()->formWindow()->name() ) + " <Form>", MetaDataBase::breakPoints( forms.current()->formWindow() ) ); } }
QString Project::locationOfObject( QObject *o ) { if ( !o ) return QString::null; if ( MainWindow::self ) { QWidgetList windows = MainWindow::self->qWorkspace()->windowList(); for ( QWidget *w = windows.first(); w; w = windows.next() ) { FormWindow *fw = ::qt_cast<FormWindow*>(w); SourceEditor *se = ::qt_cast<SourceEditor*>(w); if ( fw ) { if ( fw->isFake() ) return objectForFakeForm( fw )->name() + QString( " [Source]" ); else return fw->name() + QString( " [Source]" ); } else if ( se ) { if ( !se->object() ) continue; if ( se->formWindow() ) return se->formWindow()->name() + QString( " [Source]" ); else return makeRelative( se->sourceFile()->fileName() ); } } } if ( ::qt_cast<SourceFile*>(o) ) { for ( QPtrListIterator<SourceFile> sources = sourceFiles(); sources.current(); ++sources ) { SourceFile* f = sources.current(); if ( f == o ) return makeRelative( f->fileName() ); } } extern QMap<QWidget*, QString> *qwf_forms; if ( !qwf_forms ) { qWarning( "Project::locationOfObject: qwf_forms is NULL!" ); return QString::null; } QString s = makeRelative( *qwf_forms->find( (QWidget*)o ) ); s += " [Source]"; return s; }
void Project::addAndEditFunction( const QString &function, const QString &functionBody, bool openDeveloper ) { for ( SourceFile *f = sourcefiles.first(); f; f = sourcefiles.next() ) { if ( QFileInfo( f->fileName() ).baseName() == "main" ) { QValueList<LanguageInterface::Function> funcs; LanguageInterface *iface = MetaDataBase::languageInterface( language() ); if ( !iface ) return; iface->functions( f->text(), &funcs ); QString func = function; int i = func.find( '(' ); if ( i != -1 ) func = func.left( i ); bool found = FALSE; for ( QValueList<LanguageInterface::Function>::Iterator it = funcs.begin(); it != funcs.end(); ++it ) { if ( (*it).name.left( (*it).name.find( '(' ) ) == func ) { found = TRUE; break; } } if ( !found ) { QString code = f->text(); if ( functionBody.isEmpty() ) code += "\n\n" + iface->createFunctionStart( "", func, "", "" ) + "()\n{\n\n}\n"; else code += "\n\n" + iface->createFunctionStart( "", func, "", "" ) + "()\n" + functionBody + "\n"; f->setText( code ); if ( f->editor() ) f->editor()->refresh( FALSE ); } if ( openDeveloper ) { if ( MainWindow::self ) MainWindow::self->editSource( f ); f->editor()->setFunction( func, "" ); } break; } } }
bool MainWindow::openFile(const QString& file) { QFileInfo fileInfo(file); if(!fileInfo.isFile() || !fileInfo.isReadable()) return false; for(int i = 0;i < ui_tabWidget->count();i++) { SourceFile* sourceFile = dynamic_cast<SourceFile*>(ui_tabWidget->widget(i)); if(sourceFile && sourceFile->filePath() == file) { ui_tabWidget->setCurrentIndex(i); on_ui_tabWidget_currentChanged(i); return true; } } /* Attempt to open the selected file */ SourceFile *sourceFile = new SourceFile(this); if(!sourceFile->fileOpen(file)) { MessageDialog::showError(this, "simple_error", QStringList() << tr("Could not open ") + sourceFile->fileName() << tr("Unable to open file for reading.")); delete sourceFile; return false; } QSettings settings; QStringList current = settings.value(RECENTS).toStringList().mid(0, 5); current.push_front(fileInfo.absoluteFilePath()); current.removeDuplicates(); settings.setValue(RECENTS, current); addTab(sourceFile); UiEventManager::ref().sendEvent(UI_EVENT_OPEN_FILE); return true; }
void Project::save( bool onlyProjectFile ) { bool anythingModified = FALSE; // save sources and forms if ( !onlyProjectFile ) { saveConnections(); for ( SourceFile *sf = sourcefiles.first(); sf; sf = sourcefiles.next() ) { anythingModified = anythingModified || sf->isModified(); if ( !sf->save() ) return; } for ( FormFile *ff = formfiles.first(); ff; ff = formfiles.next() ) { anythingModified = anythingModified || ff->isModified(); if ( !ff->save() ) return; } } if ( isDummy() || filename.isEmpty() ) return; if ( !modified ) { if ( singleProjectMode() ) { LanguageInterface *iface = MetaDataBase::languageInterface( language() ); if ( iface && iface->supports( LanguageInterface::CompressProject ) ) iface->compressProject( makeAbsolute( filename ), singleProFileName, anythingModified ); } return; } QFile f( filename ); QString original = ""; // read the existing file bool hasPreviousContents = FALSE; if ( f.open( IO_ReadOnly ) ) { QTextStream ts( &f ); original = ts.read(); f.close(); hasPreviousContents = TRUE; remove_contents( original, "{SOURCES+=" ); // ### compatibility with early 3.0 betas remove_contents( original, "DBFILE" ); remove_contents( original, "LANGUAGE" ); remove_contents( original, "TEMPLATE" ); removePlatformSettings( original, "CONFIG" ); removePlatformSettings( original, "DEFINES" ); removePlatformSettings( original, "LIBS" ); removePlatformSettings( original, "INCLUDEPATH" ); removePlatformSettings( original, "SOURCES" ); removePlatformSettings( original, "HEADERS" ); remove_multiline_contents( original, "FORMS" ); remove_multiline_contents( original, "INTERFACES" ); // compatibility remove_multiline_contents( original, "IMAGES" ); for ( QStringList::Iterator it = csList.begin(); it != csList.end(); ++it ) remove_contents( original, *it ); } if (!original.isEmpty()) { // Removes any new lines at the beginning of the file while (original.startsWith("\n")) original.remove(0, 1); } // the contents of the saved file QString contents; // template contents += "TEMPLATE\t= " + templ + "\n"; // language contents += "LANGUAGE\t= " + lang + "\n"; contents += "\n"; // config writePlatformSettings( contents, "CONFIG", cfg ); LanguageInterface *iface = MetaDataBase::languageInterface( lang ); if ( iface ) { QStringList sourceKeys; iface->sourceProjectKeys( sourceKeys ); for ( QStringList::Iterator spit = sourceKeys.begin(); spit != sourceKeys.end(); ++spit ) remove_multiline_contents( contents, *spit ); } // libs, defines, includes writePlatformSettings( contents, "LIBS", lbs ); writePlatformSettings( contents, "DEFINES", defs ); writePlatformSettings( contents, "INCLUDEPATH", inclPath ); writePlatformSettings( contents, "SOURCES", sources ); writePlatformSettings( contents, "HEADERS", headers ); // unix if ( !hasPreviousContents ) { contents += "unix|os2 {\n" " UI_DIR = .ui\n" " MOC_DIR = .moc\n" " OBJECTS_DIR = .obj\n" "}\n\n"; } // sources if ( !sourcefiles.isEmpty() && iface ) { QMap<QString, QStringList> sourceToKey; for ( SourceFile *f = sourcefiles.first(); f; f = sourcefiles.next() ) { QString key = iface->projectKeyForExtension( QFileInfo( f->fileName() ).extension() ); QStringList lst = sourceToKey[ key ]; lst << makeRelative( f->fileName() ); sourceToKey.replace( key, lst ); } for ( QMap<QString, QStringList>::Iterator skit = sourceToKey.begin(); skit != sourceToKey.end(); ++skit ) { QString part = skit.key() + "\t+= "; QStringList lst = *skit; for ( QStringList::Iterator sit = lst.begin(); sit != lst.end(); ++sit ) { part += *sit; part += ++sit != lst.end() ? " \\\n\t" : ""; --sit; } part += "\n\n"; contents += part; } } // forms and interfaces if ( !formfiles.isEmpty() ) { contents += "FORMS\t= "; for ( QPtrListIterator<FormFile> fit = formfiles; fit.current(); ++fit ) { contents += fit.current()->fileName() + (fit != formfiles.last() ? " \\\n\t" : ""); } contents += "\n\n"; } // images if ( !pixCollection->isEmpty() ) { contents += "IMAGES\t= "; QValueList<PixmapCollection::Pixmap> pixmaps = pixCollection->pixmaps(); for ( QValueList<PixmapCollection::Pixmap>::Iterator it = pixmaps.begin(); it != pixmaps.end(); ++it ) { contents += makeRelative( (*it).absname ); contents += ++it != pixmaps.end() ? " \\\n\t" : ""; --it; } contents += "\n\n"; } // database if ( !dbFile.isEmpty() ) contents += "DBFILE\t= " + dbFile + "\n"; // custom settings for ( QStringList::Iterator it = csList.begin(); it != csList.end(); ++it ) { QString val = *customSettings.find( *it ); if ( !val.isEmpty() ) contents += *it + "\t= " + val + "\n"; } if ( !f.open( IO_WriteOnly | IO_Translate ) ) { QMessageBox::warning( messageBoxParent(), "Save Project Failed", "Couldn't write project file " + filename ); return; } QTextStream os( &f ); os << contents; if (hasPreviousContents) os << original; f.close(); setModified( FALSE ); if ( singleProjectMode() ) { LanguageInterface *iface = MetaDataBase::languageInterface( language() ); if ( iface && iface->supports( LanguageInterface::CompressProject ) ) iface->compressProject( makeAbsolute( filename ), singleProFileName, TRUE ); } }