📄 designerappiface.cpp
字号:
/************************************************************************ Copyright (C) 2000 Trolltech AS. All rights reserved.**** This file is part of Qt 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.**** 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.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include <qmenubar.h>#include <qpopupmenu.h>#include "designerappiface.h"#include "mainwindow.h"#include "project.h"#include "formwindow.h"#include "workspace.h"#include "widgetfactory.h"#include "command.h"#include "outputwindow.h"#include "../shared/widgetdatabase.h"#include <qvariant.h>#include <qlistview.h>#include <qtextedit.h>#include <qstatusbar.h>#include "pixmapcollection.h"#include "hierarchyview.h"#include <stdlib.h>#include <qmetaobject.h>DesignerInterfaceImpl::DesignerInterfaceImpl( MainWindow *mw ) : mainWindow( mw ){}QRESULT DesignerInterfaceImpl::queryInterface( const QUuid &uuid, QUnknownInterface** iface ){ *iface = 0; if ( uuid == IID_QUnknown ) *iface = (QUnknownInterface*)this; else if ( uuid == IID_QComponentInformation ) *iface = (QComponentInformationInterface*)this; else if ( uuid == IID_Designer ) *iface = (DesignerInterface*)this; else return QE_NOINTERFACE; (*iface)->addRef(); return QS_OK;}DesignerProject *DesignerInterfaceImpl::currentProject() const{ return mainWindow->currProject()->iFace();}DesignerFormWindow *DesignerInterfaceImpl::currentForm() const{ if ( mainWindow->formWindow() ) return mainWindow->formWindow()->iFace(); return 0;}DesignerSourceFile *DesignerInterfaceImpl::currentSourceFile() const{ if ( mainWindow->sourceFile() ) return mainWindow->sourceFile()->iFace(); return 0;}QPtrList<DesignerProject> DesignerInterfaceImpl::projectList() const{ return mainWindow->projectList();}void DesignerInterfaceImpl::showStatusMessage( const QString &text, int ms ) const{ if ( text.isEmpty() ) { mainWindow->statusBar()->clear(); return; } if ( ms ) mainWindow->statusBar()->message( text, ms ); else mainWindow->statusBar()->message( text );}DesignerDock *DesignerInterfaceImpl::createDock() const{ return 0;}DesignerOutputDock *DesignerInterfaceImpl::outputDock() const{ return mainWindow->outputWindow() ? mainWindow->outputWindow()->iFace() : 0;}void DesignerInterfaceImpl::setModified( bool b, QWidget *window ){ mainWindow->setModified( b, window );}void DesignerInterfaceImpl::updateFunctionList(){ mainWindow->updateFunctionList(); if ( mainWindow->objectHierarchy()->sourceEditor() ) mainWindow->objectHierarchy()->updateClassBrowsers();}void DesignerInterfaceImpl::onProjectChange( QObject *receiver, const char *slot ){ QObject::connect( mainWindow, SIGNAL( projectChanged() ), receiver, slot );}void DesignerInterfaceImpl::onFormChange( QObject *receiver, const char *slot ){ QObject::connect( mainWindow, SIGNAL( formWindowChanged() ), receiver, slot ); QObject::connect( mainWindow, SIGNAL( editorChanged() ), receiver, slot );}bool DesignerInterfaceImpl::singleProjectMode() const{ return mainWindow->singleProjectMode();}DesignerProjectImpl::DesignerProjectImpl( Project *pr ) : project( pr ){}QPtrList<DesignerFormWindow> DesignerProjectImpl::formList() const{ QPtrList<DesignerFormWindow> list; QObjectList *forms = project->formList(); if ( !forms ) return list; QPtrListIterator<QObject> it( *forms ); while ( it.current() ) { QObject *obj = it.current(); QWidget *par = 0; ++it; if ( !obj->isWidgetType() || !( par = ((QWidget*)obj)->parentWidget() ) || !par->inherits( "FormWindow" ) ) continue; list.append( ((FormWindow*)par)->iFace() ); } delete forms; return list;}QString DesignerProjectImpl::formFileName( const QString &form ) const{ for ( QPtrListIterator<FormFile> forms = project->formFiles(); forms.current(); ++forms ) { if ( QString( forms.current()->formName() ) == form ) return forms.current()->fileName(); } return QString::null;}QStringList DesignerProjectImpl::formNames() const{ QStringList l; for ( QPtrListIterator<FormFile> forms = project->formFiles(); forms.current(); ++forms ) { FormFile* f = forms.current(); if ( f->isFake() ) continue; l << f->formName(); } return l;}QObjectList *DesignerProjectImpl::run(){ return project->run();}void DesignerProjectImpl::addForm( DesignerFormWindow * ){}void DesignerProjectImpl::removeForm( DesignerFormWindow * ){}QString DesignerProjectImpl::fileName() const{ return project->fileName();}void DesignerProjectImpl::setFileName( const QString & ){}QString DesignerProjectImpl::projectName() const{ return project->projectName();}void DesignerProjectImpl::setProjectName( const QString & ){}QString DesignerProjectImpl::databaseFile() const{ return QString::null;}void DesignerProjectImpl::setDatabaseFile( const QString & ){}void DesignerProjectImpl::setupDatabases() const{ MainWindow::self->editDatabaseConnections();}QPtrList<DesignerDatabase> DesignerProjectImpl::databaseConnections() const{ QPtrList<DesignerDatabase> lst;#ifndef QT_NO_SQL QPtrList<DatabaseConnection> conns = project->databaseConnections(); for ( DatabaseConnection *d = conns.first(); d; d = conns.next() ) lst.append( d->iFace() );#endif return lst;}void DesignerProjectImpl::addDatabase( DesignerDatabase * ){}void DesignerProjectImpl::removeDatabase( DesignerDatabase * ){}void DesignerProjectImpl::save() const{}void DesignerProjectImpl::setLanguage( const QString &l ){ project->setLanguage( l );}QString DesignerProjectImpl::language() const{ return project->language();}void DesignerProjectImpl::setCustomSetting( const QString &key, const QString &value ){ project->setCustomSetting( key, value );}QString DesignerProjectImpl::customSetting( const QString &key ) const{ if ( key == "QTSCRIPT_PACKAGES" ) { QString s = getenv( "QTSCRIPT_PACKAGES" ); QString s2 = project->customSetting( "QUICK_PACKAGES" ); if ( !s.isEmpty() && !s2.isEmpty() )#if defined(Q_OS_WIN32) s += ";";#else s += ":";#endif s += s2; return s; } return project->customSetting( key );}DesignerPixmapCollection *DesignerProjectImpl::pixmapCollection() const{ return project->pixmapCollection()->iFace();}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 DesignerProjectImpl::breakPointCondition( QObject *o, int line ) const{ return MetaDataBase::breakPointCondition( MainWindow::self->findRealObject( o ), line );}void DesignerProjectImpl::setBreakPointCondition( QObject *o, int line, const QString &condition ){ MetaDataBase::setBreakPointCondition( MainWindow::self->findRealObject( o ), line, condition );}void DesignerProjectImpl::clearAllBreakpoints() const{ QValueList<uint> empty; for ( QPtrListIterator<SourceFile> sources = project->sourceFiles(); sources.current(); ++sources ) { SourceFile* f = sources.current(); MetaDataBase::setBreakPoints( f, empty ); } for ( QPtrListIterator<FormFile> forms = project->formFiles(); forms.current(); ++forms ) { if ( forms.current()->formWindow() ) MetaDataBase::setBreakPoints( forms.current()->formWindow(), empty ); MainWindow::self->resetBreakPoints(); }}void DesignerProjectImpl::setIncludePath( const QString &platform, const QString &path ){ project->setIncludePath( platform, path );}void DesignerProjectImpl::setLibs( const QString &platform, const QString &path ){ project->setLibs( platform, path );}void DesignerProjectImpl::setDefines( const QString &platform, const QString &path ){ project->setDefines( platform, path );}void DesignerProjectImpl::setConfig( const QString &platform, const QString &config ){ project->setConfig( platform, config );}void DesignerProjectImpl::setTemplate( const QString &t ){ project->setTemplate( t );}QString DesignerProjectImpl::config( const QString &platform ) const{ return project->config( platform );}QString DesignerProjectImpl::libs( const QString &platform ) const{ return project->libs( platform );}QString DesignerProjectImpl::defines( const QString &platform ) const{ return project->defines( platform );}QString DesignerProjectImpl::includePath( const QString &platform ) const{ return project->includePath( platform );}QString DesignerProjectImpl::templte() const{ return project->templte();}bool DesignerProjectImpl::isGenericObject( QObject *o ) const{ return !!project->fakeFormFileFor( o );}#ifndef QT_NO_SQLDesignerDatabaseImpl::DesignerDatabaseImpl( DatabaseConnection *d ) : db( d ){}QString DesignerDatabaseImpl::name() const{ return db->name();}void DesignerDatabaseImpl::setName( const QString & ){}QString DesignerDatabaseImpl::driver() const{ return db->driver();}void DesignerDatabaseImpl::setDriver( const QString & ){}QString DesignerDatabaseImpl::database() const{ return db->database();}void DesignerDatabaseImpl::setDatabase( const QString & ){}QString DesignerDatabaseImpl::userName() const{ return db->username();}void DesignerDatabaseImpl::setUserName( const QString & ){}QString DesignerDatabaseImpl::password() const{ return db->password();}void DesignerDatabaseImpl::setPassword( const QString & ){}QString DesignerDatabaseImpl::hostName() const{ return db->hostname();}void DesignerDatabaseImpl::setHostName( const QString & ){}QStringList DesignerDatabaseImpl::tables() const{ return db->tables();}QMap<QString, QStringList> DesignerDatabaseImpl::fields() const{ return db->fields();}void DesignerDatabaseImpl::open( bool suppressDialog ) const{ db->open( suppressDialog );}void DesignerDatabaseImpl::close() const{ db->close();}void DesignerDatabaseImpl::setFields( const QMap<QString, QStringList> & ){}void DesignerDatabaseImpl::setTables( const QStringList & ){}QSqlDatabase* DesignerDatabaseImpl::connection(){ return db->connection();}#endifDesignerPixmapCollectionImpl::DesignerPixmapCollectionImpl( PixmapCollection *coll ) : pixCollection( coll ){}void DesignerPixmapCollectionImpl::addPixmap( const QPixmap &p, const QString &name, bool force ){ PixmapCollection::Pixmap pix; pix.pix = p; pix.name = name; pixCollection->addPixmap( pix, force ); FormWindow *fw = MainWindow::self->formWindow(); if ( fw ) MetaDataBase::setPixmapKey( fw, p.serialNumber(), name );}QPixmap DesignerPixmapCollectionImpl::pixmap( const QString &name ) const{ return pixCollection->pixmap( name );}DesignerFormWindowImpl::DesignerFormWindowImpl( FormWindow *fw ) : formWindow( fw ){}QString DesignerFormWindowImpl::name() const{ return formWindow->name(); }void DesignerFormWindowImpl::setName( const QString &n ){ formWindow->setName( n );}QString DesignerFormWindowImpl::fileName() const{ return formWindow->fileName();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -