Пример #1
0
int main( int argc, char *argv[] )
{
    QApplication::setColorSpec( QApplication::ManyColor );

    DesignerApplication a( argc, argv );

    DesignerApplication::setOverrideCursor( Qt::WaitCursor );

    bool creatPid = FALSE;
    if ( a.argc() > 1 ) {
	QString arg1 = a.argv()[ 1 ];
	if ( arg1 == "-client" ) {
	    QFile pf( QDir::homeDirPath() + "/.designerpid" );
	    if ( pf.exists() && pf.open( IO_ReadOnly ) ) {
		QString pidStr;
		pf.readLine( pidStr, pf.size() );
		QFile f( QDir::homeDirPath() + "/.designerargs" );
		f.open( IO_WriteOnly );
		QTextStream ts( &f );
		for ( int i = 1; i < a.argc(); ++i )
		    ts << a.argv()[ i ] << " ";
		ts << endl;
		f.close();
#if defined(Q_OS_UNIX)
		if ( kill( pidStr.toInt(), SIGUSR1 ) == -1 )
		    creatPid = TRUE;
		else
		    return 0;
#elif defined(Q_OS_WIN32)
		if ( !GetProcessVersion( pidStr.toUInt() ) ) {
		    creatPid = TRUE;
		} else {
		    if ( a.winVersion() & Qt::WV_NT_based )
			    SendMessage( HWND_BROADCAST, RegisterWindowMessage((TCHAR*)"QT_DESIGNER_OPEN_FILE"), 0, 0 );
		    else
			    SendMessage( HWND_BROADCAST, RegisterWindowMessageA("QT_DESIGNER_OPEN_FILE"), 0, 0 );
		    return 0;
		}
#endif
	    } else {
		creatPid = TRUE;
	    }
	} else if(arg1 == "-debug_stderr") {
	    extern bool debugToStderr; //outputwindow.cpp
	    debugToStderr = TRUE;
	}
    }

    if ( creatPid ) {
	QFile pf( QDir::homeDirPath() + "/.designerpid" );
	pf.open( IO_WriteOnly );
	QTextStream ts( &pf );
#if defined(Q_OS_UNIX)
	signal( SIGUSR1, signalHandler );
#endif
	ts << getpid() << endl;

	pf.close();
	signal( SIGABRT, exitHandler );
	signal( SIGFPE, exitHandler );
	signal( SIGILL, exitHandler );
	signal( SIGINT, exitHandler );
	signal( SIGSEGV, exitHandler );
	signal( SIGTERM, exitHandler );
    }

    extern void qInitImages_designercore();
    qInitImages_designercore();

    QSettings config;
    QString keybase = DesignerApplication::settingsKey();
    config.insertSearchPath( QSettings::Windows, "/Trolltech" );
    QStringList pluginPaths = config.readListEntry( keybase + "PluginPaths" );
    if (pluginPaths.count())
	QApplication::setLibraryPaths(pluginPaths);

    QSplashScreen *splash = a.showSplash();

    MainWindow *mw = new MainWindow( creatPid );
    a.setMainWidget( mw );
#if defined(QT_NON_COMMERCIAL)
    mw->setCaption( "Qt Designer by Trolltech for non-commercial use" );
#else
    mw->setCaption( "Qt Designer by Trolltech" );
#endif
    if ( config.readBoolEntry( keybase + "Geometries/MainwindowMaximized", FALSE ) ) {
	int x = config.readNumEntry( keybase + "Geometries/MainwindowX", 0 );
	int y = config.readNumEntry( keybase + "Geometries/MainwindowY", 0 );
	mw->move( x, y );
	mw->showMaximized();
    } else {
	mw->show();
    }
    if ( splash )
	splash->finish( mw );
    delete splash;

    QApplication::restoreOverrideCursor();
    for ( int i = 1; i < a.argc(); ++i ) {
	QString arg = a.argv()[ i ];
	if ( arg[0] != '-' )
	    mw->fileOpen( "", "", arg );
    }

    return a.exec();
}
Пример #2
0
int main(int argc, char *argv[])
{
  QApplication::setColorSpec(QApplication::ManyColor);

  DesignerApplication a(argc, argv);

  DesignerApplication::setOverrideCursor(Qt::WaitCursor);

  bool creatPid = FALSE;
  if (a.argc() > 1) {
    QString arg1 = a.argv()[ 1 ];
    if (arg1 == "-client") {
      QFile pf(QDir::homeDirPath() + "/.designerpid");
      if (pf.exists() && pf.open(IO_ReadOnly)) {
        QString pidStr;
        pf.readLine(pidStr, pf.size());
        QFile f(QDir::homeDirPath() + "/.designerargs");
        f.open(IO_WriteOnly);
        QTextStream ts(&f);
        for (int i = 1; i < a.argc(); ++i)
          ts << a.argv()[ i ] << " ";
        ts << endl;
        f.close();
#if defined(Q_OS_UNIX)
        if (kill(pidStr.toInt(), SIGUSR1) == -1)
          creatPid = TRUE;
        else
          return 0;
#elif defined(Q_OS_WIN32)
        if (!GetProcessVersion(pidStr.toUInt())) {
          creatPid = TRUE;
        } else {
          if (a.winVersion() & Qt::WV_NT_based)
            SendMessage(HWND_BROADCAST, RegisterWindowMessage((TCHAR *)"QT_DESIGNER_OPEN_FILE"), 0, 0);
          else
            SendMessage(HWND_BROADCAST, RegisterWindowMessageA("QT_DESIGNER_OPEN_FILE"), 0, 0);
          return 0;
        }
#endif
      } else {
        creatPid = TRUE;
      }
    } else if (arg1 == "-debug_stderr") {
      extern bool debugToStderr; //outputwindow.cpp
      debugToStderr = TRUE;
    }
  }

  if (creatPid) {
    QFile pf(QDir::homeDirPath() + "/.designerpid");
    pf.open(IO_WriteOnly);
    QTextStream ts(&pf);
#if defined(Q_OS_UNIX)
    signal(SIGUSR1, signalHandler);
#endif
    ts << getpid() << endl;

    pf.close();
    signal(SIGABRT, exitHandler);
    signal(SIGFPE, exitHandler);
    signal(SIGILL, exitHandler);
    signal(SIGINT, exitHandler);
    signal(SIGSEGV, exitHandler);
    signal(SIGTERM, exitHandler);
  }

  extern void qInitImages_designercore();
  qInitImages_designercore();

  QSettings settings;
  settings.setPath("InfoSiAL", "AbanQ", QSettings::User);
  QFont appFont;
  QString keybase("AbanQ/");

#if defined (Q_OS_LINUX)
  QPaintDeviceMetrics pdm(QApplication::desktop());
  float relDpi;
  if (pdm.logicalDpiX() < pdm.logicalDpiY())
    relDpi = 78. / pdm.logicalDpiY();
  else
    relDpi = 78. / pdm.logicalDpiX();
  int pointSize = 10 * relDpi;
#else
  int pointSize = 10;
#endif

#if defined(Q_OS_WIN32)
  appFont.setFamily(settings.readEntry(keybase + "fuente/familia", "Tahoma"));
  pointSize = 8;
#else

#if defined(Q_OS_MACX)
  appFont.setFamily(settings.readEntry(keybase + "fuente/familia", "Lucida Grande"));
  pointSize = 10;
#else
  appFont.setFamily(settings.readEntry(keybase + "fuente/familia", "Sans"));
#endif

#endif

  appFont.setPointSize(settings.readNumEntry(keybase + "fuente/puntos", pointSize));
  appFont.setBold(settings.readBoolEntry(keybase + "fuente/negrita", false));
  appFont.setItalic(settings.readBoolEntry(keybase + "fuente/cursiva", false));
  appFont.setUnderline(settings.readBoolEntry(keybase + "fuente/subrayado", false));
  appFont.setStrikeOut(settings.readBoolEntry(keybase + "fuente/tachado", false));

  a.setFont(appFont);

#if defined(Q_OS_WIN32)
  a.setStyle(settings.readEntry(keybase + "estilo", "Bluecurve"));
#else
  a.setStyle(settings.readEntry(keybase + "estilo", "Plastik"));
#endif

  keybase = DesignerApplication::settingsKey();
  QSettings config;
  config.insertSearchPath(QSettings::Windows, "/Trolltech");
  QStringList pluginPaths = config.readListEntry(keybase + "PluginPaths");
  pluginPaths << QString(qApp->applicationDirPath() + "/../plugins");
  if (pluginPaths.count())
    QApplication::setLibraryPaths(pluginPaths);

  QSplashScreen *splash = a.showSplash();

  MainWindow *mw = new MainWindow(creatPid);
  a.setMainWidget(mw);
#if defined(QT_NON_COMMERCIAL)
  mw->setCaption("Qt Designer by Trolltech for non-commercial use");
#else
  mw->setCaption("Qt Designer by Trolltech");
#endif
  if (config.readBoolEntry(keybase + "Geometries/MainwindowMaximized", FALSE)) {
    int x = config.readNumEntry(keybase + "Geometries/MainwindowX", 0);
    int y = config.readNumEntry(keybase + "Geometries/MainwindowY", 0);
    mw->move(x, y);
    mw->showMaximized();
  } else {
    mw->show();
  }
  if (splash)
    splash->finish(mw);
  delete splash;

  QApplication::restoreOverrideCursor();
  for (int i = 1; i < a.argc(); ++i) {
    QString arg = a.argv()[ i ];
    if (arg[0] != '-')
      mw->fileOpen("", "", arg);
  }

  return a.exec();
}