diff options
Diffstat (limited to 'tools/designer/designer/designerapp.cpp')
-rw-r--r-- | tools/designer/designer/designerapp.cpp | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/tools/designer/designer/designerapp.cpp b/tools/designer/designer/designerapp.cpp new file mode 100644 index 000000000..928b2695e --- /dev/null +++ b/tools/designer/designer/designerapp.cpp @@ -0,0 +1,181 @@ + /********************************************************************** +** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved. +** +** This file is part of TQt Designer. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing retquirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at [email protected]. +** +** Licensees holding valid TQt Commercial 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 WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#include "designerappiface.h" +#include "designerapp.h" +#include "mainwindow.h" +#include "formwindow.h" + +#include <qfile.h> +#include <qdir.h> +#include <qsettings.h> +#include <qsplashscreen.h> + +#ifdef Q_WS_WIN +#include <qt_windows.h> +#include <process.h> +#endif + +static TQSplashScreen *splash = 0; + +void set_splash_status( const TQString &txt ) +{ + if ( !splash ) + return; + TQString splashText = "Licensed to " + + TQString::fromLatin1( QT_PRODUCT_LICENSEE ) + "\n" + + txt; + splash->message( splashText, TQt::AlignRight|TQt::AlignTop ); +} + +DesignerApplication::DesignerApplication( int &argc, char **argv ) + : TQApplication( argc, argv ) +{ +#if defined(Q_WS_WIN) + if ( winVersion() & TQt::WV_NT_based ) + DESIGNER_OPENFILE = RegisterWindowMessage((TCHAR*)"QT_DESIGNER_OPEN_FILE"); + else + DESIGNER_OPENFILE = RegisterWindowMessageA("QT_DESIGNER_OPEN_FILE"); +#endif +} + +TQSplashScreen *DesignerApplication::showSplash() +{ + TQRect screen = TQApplication::desktop()->screenGeometry(); + TQSettings config; + config.insertSearchPath( TQSettings::Windows, "/Trolltech" ); + + TQRect mainRect; + TQString keybase = settingsKey(); + bool show = config.readBoolEntry( keybase + "SplashScreen", TRUE ); + mainRect.setX( config.readNumEntry( keybase + "Geometries/MainwindowX", 0 ) ); + mainRect.setY( config.readNumEntry( keybase + "Geometries/MainwindowY", 0 ) ); + mainRect.setWidth( config.readNumEntry( keybase + "Geometries/MainwindowWidth", 500 ) ); + mainRect.setHeight( config.readNumEntry( keybase + "Geometries/MainwindowHeight", 500 ) ); + screen = TQApplication::desktop()->screenGeometry( TQApplication::desktop()->screenNumber( mainRect.center() ) ); + + if ( show ) { + splash = new TQSplashScreen( TQPixmap::fromMimeSource("designer_splash.png") ); + splash->show(); + set_splash_status( "Initializing..." ); + } + + return splash; +} + +void DesignerApplication::closeSplash() +{ + splash->hide(); +} + +static TQString *settings_key = 0; +static TQString *old_settings_key = 0; + +TQString DesignerApplication::settingsKey() +{ + if ( !settings_key ) + settings_key = new TQString( "/TQt Designer/" + + TQString::number( (QT_VERSION >> 16) & 0xff ) + + "." + TQString::number( (QT_VERSION >> 8) & 0xff ) + "/" ); + return *settings_key; +} + +TQString DesignerApplication::oldSettingsKey() +{ + if ( !old_settings_key ) { + int majorVer = (QT_VERSION >> 16) & 0xff; + int minorVer = (QT_VERSION >> 8) & 0xff; + + // If minorVer is 0 (e.g. 4.0) then we don't want to read the + // old settings, too much might have changed. + if ( !minorVer == 0 ) + minorVer--; + + old_settings_key = new TQString( "/TQt Designer/" + + TQString::number( majorVer ) + + "." + TQString::number( minorVer ) + "/" ); + } + return *old_settings_key; +} + +void DesignerApplication::setSettingsKey( const TQString &key ) +{ + if ( !settings_key ) + settings_key = new TQString( key ); + else + *settings_key = key; +} + +#if defined(Q_WS_WIN) +bool DesignerApplication::winEventFilter( MSG *msg ) +{ + if ( msg->message == DESIGNER_OPENFILE ) { + TQFile f( TQDir::homeDirPath() + "/.designerargs" ); + TQFileInfo fi(f); + if ( fi.lastModified() == lastMod ) + return TQApplication::winEventFilter( msg ); + lastMod = fi.lastModified(); + f.open( IO_ReadOnly ); + TQString args; + f.readLine( args, f.size() ); + TQStringList lst = TQStringList::split( " ", args ); + + for ( TQStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { + TQString arg = (*it).stripWhiteSpace(); + if ( arg[0] != '-' ) { + TQObjectList* l = MainWindow::self->queryList( "FormWindow" ); + FormWindow* fw = (FormWindow*) l->first(); + FormWindow* totop = 0; + bool haveit = FALSE; + while ( fw ) { + haveit = haveit || fw->fileName() == arg; + if ( haveit ) + totop = fw; + + fw = (FormWindow*) l->next(); + } + + if ( !haveit ) { + FlashWindow( MainWindow::self->winId(), TRUE ); + MainWindow::self->openFormWindow( arg ); + } else if ( totop ) { + totop->setFocus(); + } + delete l; + } + } + return TRUE; + } + return TQApplication::winEventFilter( msg ); +} +#endif |