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

OpenGL

开发平台:

Visual C++

  1. /***************************************************************************
  2.                           kdeapp.h  -  description
  3.                              -------------------
  4.     begin                : Tue Jul 16 22:28:19 CEST 2002
  5.     copyright            : (C) 2002 by Christophe Teyssier
  6.     email                : chris@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. #ifndef KDE_MAIN_WINDOW_H
  17. #define KDE_MAIN_WINDOW_H
  18. #ifdef HAVE_CONFIG_H
  19. #include <config.h>
  20. #endif
  21. #include <time.h>
  22. #include <kapp.h>
  23. #include <qwidget.h>
  24. #include <kmainwindow.h>
  25. #include <kaction.h>
  26. #include <qvaluestack.h>
  27. #include <kurl.h>
  28. #include <kdialogbase.h>
  29. #include <qdir.h>
  30. #include <kbookmarkmanager.h>
  31. #include <kbookmarkbar.h>
  32. #include "kcelbookmarkowner.h"
  33. #include "celestiacore.h"
  34. #include "kdeglwidget.h"
  35. #include "celengine/render.h"
  36. #include "celengine/glcontext.h"
  37. #include "url.h"
  38. class KdeApp;
  39. class QResizeEvent;
  40. class KdeAlerter : public CelestiaCore::Alerter
  41. {
  42. public:
  43.     KdeAlerter(QWidget* parent = 0);
  44.     virtual ~KdeAlerter() {};
  45.     virtual void fatalError(const std::string&);
  46. protected:
  47.     QWidget* parent;
  48. };
  49. class KdeWatcher : public CelestiaWatcher {
  50. public:
  51.     KdeWatcher(CelestiaCore* core, KdeApp* app) : CelestiaWatcher(*core),kdeapp(app) {};
  52.     virtual void notifyChange(CelestiaCore*, int);
  53. protected:
  54.     KdeApp *kdeapp;
  55. };
  56. class KdeApp : public KMainWindow, virtual public KCelBookmarkOwner
  57. {
  58. Q_OBJECT
  59. friend void KdeWatcher::notifyChange(CelestiaCore*, int);
  60. public:
  61.     /** construtor */
  62.     KdeApp(std::string config, std::string dir, std::vector<std::string> extrasDirs, bool fullscreen, bool disableSplash);
  63.     /** destructor */
  64.     ~KdeApp() {};
  65.     QString getOpenGLInfo();
  66.     void dragEnterEvent(QDragEnterEvent* event);
  67.     void dropEvent(QDropEvent* event);
  68.     void setStartURL(KURL url);
  69.     void goToURL(const KURL& url);
  70.     void openBookmarkURL(const QString& _url);
  71.     Url currentUrl(Url::UrlType type = Url::Absolute) const ;
  72.     QString currentIcon() const;
  73.     const KActionCollection* getActionCollection() { return actionCollection(); }
  74.     int getGlWidth() const { return glWidget->width(); };
  75.     int getGlHeight() const { return glWidget->height(); };
  76. signals:
  77.     void resized(int w, int h);
  78. public slots:
  79.     void celestia_tick() { appCore->tick(); glWidget->updateGL(); }
  80.     void slotFileOpen();
  81.     void slotFileOpenRecent(const KURL&);
  82.     void slotNull();
  83.     void slotClose();
  84.     void slotHome();
  85.     void slotZoomIn();
  86.     void slotZoomOut();
  87.     void slotToggleToolbar();
  88.     void slotToggleMenubar();
  89.     void slotConfigureToolbars();
  90.     void slotNewToolbarConfig();
  91.     void slotKeyBindings();
  92.     void slotOpenGLInfo();
  93.     void slotPreferences();
  94.     void slotSetTime();
  95.     void slotSetTimeNow();
  96.     void slotAccelerateTime();
  97.     void slotSlowDownTime();
  98.     void slotAccelerateTimeFine();
  99.     void slotSlowDownTimeFine();
  100.     void slotPauseTime();
  101.     void slotReverseTime();
  102.     void slotCenterCO();
  103.     void slotShowStars();
  104.     void slotShowPlanets();
  105.     void slotShowGalaxies();
  106.     void slotShowGlobulars();
  107.     void slotShowNebulae();
  108.     void slotShowOpenClusters();
  109.     void slotShowPartialTrajectories();
  110.     void slotShowDiagrams();
  111.     void slotShowCloudMaps();
  112.     void slotShowCloudShadows();
  113.     void slotShowOrbits();
  114.     void slotShowAsteroidOrbits();
  115.     void slotShowCometOrbits();
  116.     void slotShowMoonOrbits();
  117.     void slotShowStarOrbits();
  118.     void slotShowPlanetOrbits();
  119.     void slotShowSpacecraftOrbits();
  120.     void slotShowCelestialSphere();
  121.     void slotShowNightMaps();
  122.     void slotShowMarkers();
  123.     void slotShowAtmospheres();
  124.     void slotShowSmoothLines();
  125.     void slotShowEclipseShadows();
  126.     void slotCycleStarMode();
  127.     void slotShowRingShadows();
  128.     void slotShowBoundaries();
  129.     void slotShowAutoMag();
  130.     void slotShowCometTails();
  131.     void slotShowStarLabels();
  132.     void slotShowPlanetLabels();
  133.     void slotShowMoonLabels();
  134.     void slotShowCometLabels();
  135.     void slotShowConstellationLabels();
  136.     void slotShowI18nConstellationLabels();
  137.     void slotShowGalaxyLabels();
  138.     void slotShowGlobularLabels();
  139.     void slotShowNebulaLabels();
  140.     void slotShowOpenClusterLabels();
  141.     void slotShowAsteroidLabels();
  142.     void slotShowSpacecraftLabels();
  143.     void slotShowLocationLabels();
  144.     void slotShowCityLocations();
  145.     void slotShowObservatoryLocations();
  146.     void slotShowLandingSiteLocations();
  147.     void slotShowCraterLocations();
  148.     void slotShowMonsLocations();
  149.     void slotShowTerraLocations();
  150.     void slotShowVallisLocations();
  151.     void slotShowMareLocations();
  152.     void slotShowOtherLocations();
  153.     void slotMinFeatureSize(int size);
  154.     void slotAmbientLightLevel(float l);
  155.     void slotFaintestVisible(float m);
  156.     void slotHudDetail(int l);
  157.     void slotSplitH();
  158.     void slotSplitV();
  159.     void slotCycleView();
  160.     void slotToggleFramesVisible();
  161.     void slotToggleActiveFrameVisible();
  162.     void slotToggleSyncTime();
  163.     void slotAltAzMode();
  164.     void slotSingleView();
  165.     void slotDeleteView();
  166.     void slotSetRenderPathBasic();
  167.     void slotSetRenderPathMultitexture();
  168.     void slotSetRenderPathNvCombiner();
  169.     void slotSetRenderPathDOT3ARBVP();
  170.     void slotSetRenderPathNvCombinerNvVP();
  171.     void slotSetRenderPathNvCombinerARBVP();
  172.     void slotSetRenderPathARBFPARBVP();
  173.     void slotSetRenderPathNV30();
  174.     void slotSetRenderPathGLSL();
  175.     void slotCycleRenderPath();
  176.     void slotToggleVideoSync();
  177.     void slotCelestialBrowser();
  178.     void slotEclipseFinder();
  179.     
  180.     void slotDisplayLocalTime();
  181.     void slotWireframeMode();
  182.     void slotGrabImage();
  183.     void slotCaptureVideo();
  184.     void slotFullScreen();
  185.     void slotBack();
  186.     void slotForward();
  187.     void slotCopyUrl();
  188.     void slotGoTo();
  189.     void slotGoToLongLat();
  190.     void slotGoToSurface();
  191.     void slotShowBookmarkBar();
  192.     void slotOpenFileURL(const KURL& url);
  193.     void slotBackAboutToShow();
  194.     void slotBackActivated (int i);
  195.     void slotForwardAboutToShow();
  196.     void slotForwardActivated(int i);
  197.     void initBookmarkBar();
  198.     static void popupMenu(float x, float y, Selection sel);
  199. protected:
  200.     CelestiaCore* appCore;
  201.     Renderer*   renderer;
  202.     Simulation* sim;
  203.     KdeGlWidget* glWidget;
  204.     void initActions();
  205.     KRecentFilesAction *openRecent;
  206.     KBookmarkBar *bookmarkBar;
  207.     QString startDir;
  208.     bool queryExit();
  209.     bool queryClose();
  210.     KToggleAction* toggleMenubar;
  211.     KToggleAction* toggleToolbar;
  212.     void resyncMenus();
  213.     void resyncAmbient();
  214.     void resyncFaintest();
  215.     void resyncVerbosity();
  216.     void resyncHistory();
  217.     KdeWatcher *kdewatcher;
  218.     KToolBarPopupAction *backAction, *forwardAction;
  219.     static KdeApp* app;
  220.     KActionCollection* bookmarkBarActionCollection;
  221.     void resizeEvent(QResizeEvent* e);
  222. };
  223. class LongLatDialog : public KDialogBase {
  224. Q_OBJECT
  225. public:
  226.     LongLatDialog(QWidget* parent, CelestiaCore* appCore);
  227. private slots:
  228.     void slotOk();
  229.     void slotApply();
  230.     void slotCancel();
  231.     
  232. private:
  233.     CelestiaCore* appCore;
  234.     QLineEdit *altEdit, *longEdit, *latEdit, *objEdit;
  235.     QComboBox *longSign, *latSign;
  236. };
  237. #endif