kdeuniquecelestia.cpp
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /***************************************************************************
  2.                           kdeuniquecelestia.cpp  -  description
  3.                              -------------------
  4.     begin                : Mon Aug 5 2002
  5.     copyright            : (C) 2002 by chris
  6.     email                : chris@tux.teyssier.org
  7.  ***************************************************************************/
  8. /***************************************************************************
  9.  *                                                                         *
  10.  *   This program is free software; you can redistribute it and/or modify  *
  11.  *   it under the terms of the GNU General Public License as published by  *
  12.  *   the Free Software Foundation; either version 2 of the License, or     *
  13.  *   (at your option) any later version.                                   *
  14.  *                                                                         *
  15.  ***************************************************************************/
  16. #include "kdeuniquecelestia.h"
  17. #include <kcmdlineargs.h>
  18. #include <qfile.h>
  19. #include <qdir.h>
  20. #include <string>
  21. #include <vector>
  22. #include <klocale.h>
  23. #include <libintl.h>
  24. KdeUniqueCelestia::KdeUniqueCelestia() {
  25.     bindtextdomain(PACKAGE, LOCALEDIR);
  26.     bind_textdomain_codeset(PACKAGE, "UTF-8");
  27.     bindtextdomain("celestia_constellations", LOCALEDIR);
  28.     bind_textdomain_codeset("celestia_constellations", "UTF-8");
  29.     textdomain(PACKAGE);
  30.     KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
  31.     std::vector<std::string> validDirs;
  32.     std::string config, dir;
  33.     bool fullscreen = false;
  34.     if (args->isSet("conf")) {
  35.         QFileInfo confFile(args->getOption("conf"));
  36.         if (confFile.exists() && confFile.isFile() && confFile.isReadable())
  37.             config = std::string(confFile.absFilePath().utf8());
  38.         else
  39.             std::cerr << i18n("File %1 does not exist, using default configuration file %2/celestia.cfg")
  40.                     .arg(args->getOption("conf"))
  41.                     .arg(CONFIG_DATA_DIR) << std::endl;
  42.     }
  43.     if (args->isSet("dir")) {
  44.         QFileInfo d(args->getOption("dir"));
  45.         if (d.exists() && d.isDir() && d.isReadable() && d.isExecutable())
  46.             dir = std::string(d.absFilePath().utf8());
  47.         else 
  48.             std::cerr << i18n("Directory %1 does not exist, using default %2")
  49.                     .arg(args->getOption("dir"))
  50.                     .arg(CONFIG_DATA_DIR)  << std::endl;
  51.     }
  52.     if (args->isSet("extrasdir")) {
  53.         QCStringList dirs = args->getOptionList("extrasdir");
  54.         for (QCStringList::Iterator i = dirs.begin(); i != dirs.end(); ++i) {
  55.             QFileInfo d(*i);
  56.             if (d.exists() && d.isDir() && d.isReadable() && d.isExecutable()) 
  57.                 validDirs.push_back(std::string(d.absFilePath().utf8()));
  58.             else 
  59.                 std::cerr << i18n("Extras directory %1 does not exist").arg(*i) << std::endl;
  60.         }
  61.     }
  62.     if (args->isSet("fullscreen")) fullscreen = true;
  63.     app = new KdeApp(config, dir, validDirs, fullscreen, !args->isSet("s"));
  64.     if (args->count() != 0) {
  65.         app->setStartURL(args->url(0));
  66.     }
  67.     setMainWidget(app);
  68.     app->show();
  69.     
  70. }
  71. int KdeUniqueCelestia::newInstance() {
  72.     KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
  73.     if (args->count() != 0) {
  74.         app->goToURL(args->url(0));
  75.         if (app->windowState() && Qt::WindowMinimized)
  76.             app->setWindowState(app->windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
  77.         app->setActiveWindow();
  78.         app->raise();
  79.     }
  80.     return 0;
  81. }