summaryrefslogtreecommitdiffstats
path: root/tdevdesigner/designer/project.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdevdesigner/designer/project.h')
-rw-r--r--tdevdesigner/designer/project.h274
1 files changed, 274 insertions, 0 deletions
diff --git a/tdevdesigner/designer/project.h b/tdevdesigner/designer/project.h
new file mode 100644
index 00000000..3e80428f
--- /dev/null
+++ b/tdevdesigner/designer/project.h
@@ -0,0 +1,274 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of TQt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition
+** licenses may use this file in accordance with the TQt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about TQt Commercial License Agreements.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef PROJECT_H
+#define PROJECT_H
+
+#include <tqfeatures.h>
+
+#include <tqstring.h>
+#include <tqstringlist.h>
+#include <tqptrlist.h>
+#include <tqmap.h>
+#include <tqpluginmanager_p.h>
+#include "../interfaces/projectsettingsiface.h"
+#include "sourcefile.h"
+#include "formfile.h"
+#include <tqobjectlist.h>
+#include <tqptrdict.h>
+#include "formfile.h"
+
+class TQObjectList;
+struct DesignerProject;
+struct DesignerDatabase;
+class PixmapCollection;
+class Project;
+
+#ifndef TQT_NO_SQL
+class TQSqlDatabase;
+
+class DatabaseConnection
+{
+public:
+ DatabaseConnection( Project *p ) :
+#ifndef TQT_NO_SQL
+ conn( 0 ),
+#endif
+ project( p ), loaded( FALSE ), iface( 0 ) {}
+ ~DatabaseConnection();
+
+ bool refreshCatalog();
+ bool open( bool suppressDialog = TRUE );
+ void close();
+ DesignerDatabase *iFace();
+
+ bool isLoaded() const { return loaded; }
+ void setName( const TQString& n ) { nm = n; }
+ TQString name() const { return nm; }
+ void setDriver( const TQString& d ) { drv = d; }
+ TQString driver() const { return drv; }
+ void setDatabase( const TQString& db ) { dbName = db; }
+ TQString database() const { return dbName; }
+ void setUsername( const TQString& u ) { uname = u; }
+ TQString username() const { return uname; }
+ void setPassword( const TQString& p ) { pword = p; }
+ TQString password() const { return pword; }
+ void setHostname( const TQString& h ) { hname = h; }
+ TQString hostname() const { return hname; }
+ void setPort( int p ) { prt = p; }
+ int port() const { return prt; }
+ TQString lastError() const { return dbErr; }
+ void addTable( const TQString& t ) { tbls.append(t); }
+ void setFields( const TQString& t, const TQStringList& f ) { flds[t] = f; }
+ TQStringList tables() const { return tbls; }
+ TQStringList fields( const TQString& t ) { return flds[t]; }
+ TQMap<TQString, TQStringList> fields() { return flds; }
+#ifndef TQT_NO_SQL
+ TQSqlDatabase* connection() const { return conn; }
+ void remove();
+#endif
+
+private:
+ TQString nm;
+ TQString drv, dbName, uname, pword, hname;
+ TQString dbErr;
+ int prt;
+ TQStringList tbls;
+ TQMap<TQString, TQStringList> flds;
+#ifndef TQT_NO_SQL
+ TQSqlDatabase *conn;
+#endif
+ Project *project;
+ bool loaded;
+ DesignerDatabase *iface;
+};
+
+#endif
+
+class Project : public TQObject
+{
+ Q_OBJECT
+
+ friend class DatabaseConnection;
+
+public:
+ Project( const TQString &fn, const TQString &pName = TQString(),
+ TQPluginManager<ProjectSettingsInterface> *pm = 0, bool isDummy = FALSE,
+ const TQString &l = "C++" );
+ ~Project();
+
+ void setFileName( const TQString &fn, bool doClear = TRUE );
+ TQString fileName( bool singlePro = FALSE ) const;
+ TQString projectName() const;
+
+ void setDatabaseDescription( const TQString &db );
+ TQString databaseDescription() const;
+
+ void setDescription( const TQString &s );
+ TQString description() const;
+
+ void setLanguage( const TQString &l );
+ TQString language() const;
+
+
+ bool isValid() const;
+
+ // returns TRUE if this project is the <No Project> project
+ bool isDummy() const;
+
+ TQString makeAbsolute( const TQString &f );
+ TQString makeRelative( const TQString &f );
+
+ void save( bool onlyProjectFile = FALSE );
+
+#ifndef TQT_NO_SQL
+ TQPtrList<DatabaseConnection> databaseConnections() const;
+ void setDatabaseConnections( const TQPtrList<DatabaseConnection> &lst );
+ void addDatabaseConnection( DatabaseConnection *conn );
+ void removeDatabaseConnection( const TQString &conn );
+ DatabaseConnection *databaseConnection( const TQString &name );
+ TQStringList databaseConnectionList();
+ TQStringList databaseTableList( const TQString &connection );
+ TQStringList databaseFieldList( const TQString &connection, const TQString &table );
+#endif
+ void saveConnections();
+ void loadConnections();
+
+ bool openDatabase( const TQString &connection, bool suppressDialog = TRUE );
+ void closeDatabase( const TQString &connection );
+
+ TQObjectList *formList( bool resolveFakeObjects = FALSE ) const;
+
+ DesignerProject *iFace();
+
+ void setCustomSetting( const TQString &key, const TQString &value );
+ TQString customSetting( const TQString &key ) const;
+
+ PixmapCollection *pixmapCollection() const { return pixCollection; }
+
+ void setActive( bool b );
+
+ TQPtrListIterator<SourceFile> sourceFiles() const { return TQPtrListIterator<SourceFile>(sourcefiles); }
+ void addSourceFile( SourceFile *sf );
+ bool removeSourceFile( SourceFile *sf );
+ SourceFile* findSourceFile( const TQString& filename, SourceFile *ignore = 0 ) const;
+
+ TQPtrListIterator<FormFile> formFiles() const { return TQPtrListIterator<FormFile>(formfiles); }
+ void addFormFile( FormFile *ff );
+ bool removeFormFile( FormFile *ff );
+ FormFile* findFormFile( const TQString& filename, FormFile *ignore = 0 ) const;
+
+ void setIncludePath( const TQString &platform, const TQString &path );
+ void setLibs( const TQString &platform, const TQString &path );
+ void setDefines( const TQString &platform, const TQString &path );
+ void setConfig( const TQString &platform, const TQString &config );
+ void setTemplate( const TQString &t );
+
+ TQString config( const TQString &platform ) const;
+ TQString libs( const TQString &platform ) const;
+ TQString defines( const TQString &platform ) const;
+ TQString includePath( const TQString &platform ) const;
+ TQString templte() const;
+
+ bool isModified() const { return !isDummy() && modified; }
+ void setModified( bool b );
+
+ void addObject( TQObject *o );
+ void setObjects( const TQObjectList &ol );
+ void removeObject( TQObject *o );
+ TQObjectList objects() const;
+ FormFile *fakeFormFileFor( TQObject *o ) const;
+ TQObject *objectForFakeForm( FormWindow *fw ) const;
+ TQObject *objectForFakeFormFile( FormFile *ff ) const;
+
+ void addAndEditFunction( const TQString &functionName, const TQString &functionBody,
+ bool openDeveloper );
+
+ void removeTempProject();
+ bool hasParentObject( TQObject *o );
+ TQString qualifiedName( TQObject *o );
+
+ bool isCpp() const { return is_cpp; }
+
+ void designerCreated();
+
+ void formOpened( FormWindow *fw );
+
+ TQString locationOfObject( TQObject *o );
+
+ bool hasGUI() const;
+
+signals:
+ void projectModified();
+ void sourceFileAdded( SourceFile* );
+ void sourceFileRemoved( SourceFile* );
+ void formFileAdded( FormFile* );
+ void formFileRemoved( FormFile* );
+ void objectAdded( TQObject * );
+ void objectRemoved( TQObject * );
+ void newFormOpened( FormWindow *fw );
+
+private:
+ void parse();
+ void clear();
+ void updateCustomSettings();
+ void readPlatformSettings( const TQString &contents,
+ const TQString &setting,
+ TQMap<TQString, TQString> &res );
+ void removePlatformSettings( TQString &contents, const TQString &setting );
+ void writePlatformSettings( TQString &contents, const TQString &setting,
+ const TQMap<TQString, TQString> &input );
+ bool singleProjectMode() const;
+ TQWidget *messageBoxParent() const;
+
+private:
+ TQString filename;
+ TQString proName;
+ TQString desc;
+ TQString dbFile;
+#ifndef TQT_NO_SQL
+ TQPtrList<DatabaseConnection> dbConnections;
+#endif
+ TQString lang;
+ DesignerProject *iface;
+ TQMap<TQString, TQString> customSettings;
+ TQStringList csList;
+ TQPluginManager<ProjectSettingsInterface> *projectSettingsPluginManager;
+ PixmapCollection *pixCollection;
+ TQPtrList<SourceFile> sourcefiles;
+ TQPtrList<FormFile> formfiles;
+ TQMap<TQString, TQString> inclPath, defs, lbs, cfg, sources, headers;
+ TQString templ;
+ bool isDummyProject;
+ bool modified;
+ TQObjectList objs;
+ TQPtrDict<FormFile> fakeFormFiles;
+ TQString singleProFileName;
+ bool is_cpp;
+
+};
+
+#endif