diff options
Diffstat (limited to 'tdevdesigner/designer/designerapp.cpp')
| -rw-r--r-- | tdevdesigner/designer/designerapp.cpp | 176 | 
1 files changed, 176 insertions, 0 deletions
| diff --git a/tdevdesigner/designer/designerapp.cpp b/tdevdesigner/designer/designerapp.cpp new file mode 100644 index 00000000..22d1e531 --- /dev/null +++ b/tdevdesigner/designer/designerapp.cpp @@ -0,0 +1,176 @@ + /********************************************************************** +** 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. +** +**********************************************************************/ + +#include "designerappiface.h" +#include "designerapp.h" +#include "mainwindow.h" +#include "formwindow.h" + +#include <kiconloader.h> + +#include <tqfile.h> +#include <tqdir.h> +#include <tqsettings.h> +#include <tqsplashscreen.h> + +#ifdef TQ_WS_WIN +#include <tqt_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( TQT_PRODUCT_LICENSEE ) + "\n" +			 + txt; +    splash->message( splashText, TQt::AlignRight|TQt::AlignTop ); +} + +DesignerApplication::DesignerApplication( int &argc, char **argv ) +    : TQApplication( argc, argv ) +{ +#if defined(TQ_WS_WIN) +    if ( winVersion() & TQt::WV_NT_based ) +	DESIGNER_OPENFILE = RegisterWindowMessage((TCHAR*)"TQT_DESIGNER_OPEN_FILE"); +    else +	DESIGNER_OPENFILE = RegisterWindowMessageA("TQT_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( UserIcon("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( (TQT_VERSION >> 16) & 0xff ) + +	                            "." + TQString::number( (TQT_VERSION >> 8) & 0xff ) + "/" ); +    return *settings_key; +} + +TQString DesignerApplication::oldSettingsKey() +{ +    if ( !old_settings_key ) { +	int majorVer = (TQT_VERSION >> 16) & 0xff; +	int minorVer = (TQT_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(TQ_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 | 
