Lots of enhancements for Unix Gtk Version
parent
573e4a6042
commit
08de764143
|
@ -369,3 +369,6 @@ Code:
|
|||
* Unix: Inserted testing code for GtkGLArea into configure.in (dramsey)
|
||||
* Unix: Integrated a current gnome macros package. (dramsey)
|
||||
* Removed many errors and compiler warnings (dramsey)
|
||||
* Label Galaxies option. (dramsey)
|
||||
* Unix: Added several menu options already present in the windows version to
|
||||
the Gtk version. (dramsey)
|
||||
|
|
|
@ -72,5 +72,5 @@
|
|||
{
|
||||
Name "Comet Borrelly"
|
||||
Target "Sol/Borrelly"
|
||||
Description "One September 22, 2001, Comet Borrelly became the second comet to be imaged at close range by a spacecraft. Despite not being designed for a comet flyby, Deep Space 1 approached within 2200 kilometers of the Borrelly's nucleus to return the highest resolution pictures we have of a cometary cire."
|
||||
Description "One September 22, 2001, Comet Borrelly became the second comet to be imaged at close range by a spacecraft. Despite not being designed for a comet flyby, Deep Space 1 approached within 2200 kilometers of the Borrelly's nucleus to return the highest resolution pictures we have of a cometary core."
|
||||
}
|
||||
|
|
|
@ -361,6 +361,8 @@ int parseRenderFlags(string s)
|
|||
flags |= Renderer::ShowPlanets;
|
||||
else if (compareIgnoringCase(name, "stars") == 0)
|
||||
flags |= Renderer::ShowStars;
|
||||
else if (compareIgnoringCase(name, "nightmaps") == 0)
|
||||
flags |= Renderer::ShowNightMaps;
|
||||
|
||||
ttype = tokenizer.nextToken();
|
||||
if (ttype == Tokenizer::TokenBar)
|
||||
|
@ -401,6 +403,8 @@ int parseLabelFlags(string s)
|
|||
flags |= Renderer::ConstellationLabels;
|
||||
else if (compareIgnoringCase(name, "stars") == 0)
|
||||
flags |= Renderer::StarLabels;
|
||||
else if (compareIgnoringCase(name, "galaxies") == 0)
|
||||
flags |= Renderer::GalaxyLabels;
|
||||
|
||||
ttype = tokenizer.nextToken();
|
||||
if (ttype == Tokenizer::TokenBar)
|
||||
|
|
|
@ -722,6 +722,8 @@ void Renderer::render(const Observer& observer,
|
|||
}
|
||||
}
|
||||
|
||||
if ((labelMode & GalaxyLabels) != 0)
|
||||
labelGalaxies(*galaxies, observer);
|
||||
if ((labelMode & StarLabels) != 0)
|
||||
labelStars(labelledStars, starDB, observer);
|
||||
if ((labelMode & ConstellationLabels) != 0 && asterisms != NULL)
|
||||
|
@ -2616,6 +2618,28 @@ void Renderer::renderCelestialSphere(const Observer& observer)
|
|||
}
|
||||
|
||||
|
||||
void Renderer::labelGalaxies(const GalaxyList& galaxies,
|
||||
const Observer& observer)
|
||||
{
|
||||
Point3f observerPos = (Point3f) observer.getPosition();
|
||||
|
||||
for (GalaxyList::const_iterator iter = galaxies.begin();
|
||||
iter != galaxies.end(); iter++)
|
||||
{
|
||||
Galaxy* galaxy = *iter;
|
||||
Point3d posd = galaxy->getPosition();
|
||||
Point3f pos(posd.x,posd.y,posd.z);
|
||||
|
||||
Vec3f rpos = pos - observerPos;
|
||||
if ((rpos * conjugate(observer.getOrientation()).toMatrix3()).z < 0)
|
||||
{
|
||||
addLabel(galaxy->getName(), Color(0.7f, 0.7f, 0.0f),
|
||||
Point3f(rpos.x, rpos.y, rpos.z));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Renderer::labelStars(const vector<Star*>& stars,
|
||||
const StarDatabase& starDB,
|
||||
const Observer& observer)
|
||||
|
|
|
@ -53,6 +53,7 @@ class Renderer
|
|||
MajorPlanetLabels = 2,
|
||||
MinorPlanetLabels = 4,
|
||||
ConstellationLabels = 8,
|
||||
GalaxyLabels = 16,
|
||||
};
|
||||
enum {
|
||||
ShowNothing = 0,
|
||||
|
@ -188,6 +189,8 @@ class Renderer
|
|||
const Quatf& orientation,
|
||||
float renderDistance,
|
||||
bool useHaloes);
|
||||
void labelGalaxies(const GalaxyList& galaxies,
|
||||
const Observer& observer);
|
||||
void labelStars(const std::vector<Star*>& stars,
|
||||
const StarDatabase& starDB,
|
||||
const Observer& observer);
|
||||
|
|
|
@ -20,18 +20,18 @@
|
|||
#include <cstdlib>
|
||||
#include <cctype>
|
||||
#include <cstring>
|
||||
#include "../celengine/gl.h"
|
||||
#include <celmath/vecmath.h>
|
||||
#include <celmath/quaternion.h>
|
||||
#include <celmath/mathlib.h>
|
||||
#include <celutil/util.h>
|
||||
#include <celengine/stardb.h>
|
||||
#include <celengine/solarsys.h>
|
||||
#include <celengine/asterism.h>
|
||||
#include <celengine/astro.h>
|
||||
#include <celengine/overlay.h>
|
||||
#include <celengine/execution.h>
|
||||
#include <celengine/cmdparser.h>
|
||||
#include "celengine/gl.h"
|
||||
#include "celmath/vecmath.h"
|
||||
#include "celmath/quaternion.h"
|
||||
#include "celmath/mathlib.h"
|
||||
#include "celutil/util.h"
|
||||
#include "celengine/stardb.h"
|
||||
#include "celengine/solarsys.h"
|
||||
#include "celengine/asterism.h"
|
||||
#include "celengine/astro.h"
|
||||
#include "celengine/overlay.h"
|
||||
#include "celengine/execution.h"
|
||||
#include "celengine/cmdparser.h"
|
||||
#include "favorites.h"
|
||||
#include "celestiacore.h"
|
||||
|
||||
|
@ -133,6 +133,10 @@ CelestiaCore::CelestiaCore() :
|
|||
logoTexture(NULL),
|
||||
alerter(NULL)
|
||||
{
|
||||
/* Get a renderer here so it may be queried for capabilities of the
|
||||
underlying engine even before rendering is enabled. It's initRenderer()
|
||||
routine will be called much later. */
|
||||
renderer = new Renderer();
|
||||
timer = CreateTimer();
|
||||
|
||||
execEnv = new CoreExecutionEnvironment(*this);
|
||||
|
@ -604,6 +608,10 @@ void CelestiaCore::charEntered(char c)
|
|||
runningScript = new Execution(*demoScript, *execEnv);
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
renderer->setLabelMode(renderer->getLabelMode() ^ Renderer::GalaxyLabels);
|
||||
break;
|
||||
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
|
@ -1066,8 +1074,6 @@ void CelestiaCore::renderOverlay()
|
|||
}
|
||||
else
|
||||
{
|
||||
*overlay << setprecision(0);
|
||||
|
||||
double timeScale = sim->getTimeScale();
|
||||
if (abs(abs(timeScale) - 1) < 1e-6)
|
||||
{
|
||||
|
@ -1082,8 +1088,6 @@ void CelestiaCore::renderOverlay()
|
|||
*overlay << timeScale << "x faster";
|
||||
else
|
||||
*overlay << 1.0 / timeScale << "x slower";
|
||||
|
||||
*overlay << setprecision(3);
|
||||
}
|
||||
overlay->endText();
|
||||
glPopMatrix();
|
||||
|
@ -1143,9 +1147,9 @@ void CelestiaCore::renderOverlay()
|
|||
case astro::Geographic:
|
||||
modeName = "Sync Orbiting";
|
||||
break;
|
||||
default:
|
||||
//Prevent Gnu C compiler from warning about unhandled case.
|
||||
break;
|
||||
default:
|
||||
// Keep compiler from warning about unhandled cases
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1463,8 +1467,6 @@ bool CelestiaCore::initSimulation()
|
|||
|
||||
bool CelestiaCore::initRenderer()
|
||||
{
|
||||
renderer = new Renderer();
|
||||
|
||||
renderer->setRenderFlags(Renderer::ShowStars |
|
||||
Renderer::ShowPlanets |
|
||||
Renderer::ShowAtmospheres);
|
||||
|
|
|
@ -18,12 +18,17 @@
|
|||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include "celengine/gl.h"
|
||||
#include "celengine/celestia.h"
|
||||
|
||||
#ifndef DEBUG
|
||||
# define G_DISABLE_ASSERT
|
||||
#endif
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <gtkgl/gtkglarea.h>
|
||||
#include <gnome.h>
|
||||
#include "celengine/celestia.h"
|
||||
#include "celmath/vecmath.h"
|
||||
#include "celmath/quaternion.h"
|
||||
#include "celmath/mathlib.h"
|
||||
|
@ -81,8 +86,16 @@ enum
|
|||
Menu_ShowConstellations = 2003,
|
||||
Menu_ShowAtmospheres = 2004,
|
||||
Menu_PlanetLabels = 2005,
|
||||
Menu_StarLabels = 2006,
|
||||
Menu_ConstellationLabels = 2007,
|
||||
Menu_ShowClouds = 2005,
|
||||
Menu_ShowCelestialSphere = 2006,
|
||||
Menu_ShowNightSideMaps = 2007,
|
||||
Menu_MajorPlanetLabels = 2008,
|
||||
Menu_MinorPlanetLabels = 2009,
|
||||
Menu_StarLabels = 2010,
|
||||
Menu_GalaxyLabels = 2011,
|
||||
Menu_ConstellationLabels = 2012,
|
||||
Menu_PixelShaders = 2013,
|
||||
Menu_VertexShaders = 2014,
|
||||
};
|
||||
|
||||
static void menuSelectSol()
|
||||
|
@ -100,6 +113,16 @@ static void menuGoto()
|
|||
appCore->charEntered('G');
|
||||
}
|
||||
|
||||
static void menuSync()
|
||||
{
|
||||
appCore->charEntered('Y');
|
||||
}
|
||||
|
||||
static void menuTrack()
|
||||
{
|
||||
appCore->charEntered('T');
|
||||
}
|
||||
|
||||
static void menuFollow()
|
||||
{
|
||||
appCore->charEntered('F');
|
||||
|
@ -122,7 +145,7 @@ static void menuPause()
|
|||
|
||||
static void menuRealTime()
|
||||
{
|
||||
// sim->setTimeScale(1.0);
|
||||
appCore->charEntered('\\');
|
||||
}
|
||||
|
||||
static void menuReverse()
|
||||
|
@ -132,7 +155,7 @@ static void menuReverse()
|
|||
|
||||
static gint menuShowGalaxies(GtkWidget* w, gpointer data)
|
||||
{
|
||||
bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowGalaxies, on);
|
||||
appCore->charEntered('U');
|
||||
return TRUE;
|
||||
|
@ -140,23 +163,63 @@ static gint menuShowGalaxies(GtkWidget* w, gpointer data)
|
|||
|
||||
static gint menuShowOrbits(GtkWidget* w, gpointer data)
|
||||
{
|
||||
bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowOrbits, on);
|
||||
appCore->charEntered('O');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuShowAtmospheres(GtkWidget* w, gpointer data)
|
||||
static gint menuShowClouds(GtkWidget* w, gpointer data)
|
||||
{
|
||||
bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowCloudMaps, on);
|
||||
appCore->charEntered('I');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuShowAtmospheres(GtkWidget* w, gpointer data)
|
||||
{
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowAtmospheres, on);
|
||||
appCore->charEntered('\001'); //Ctrl+A
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuPixelShaders(GtkWidget* w, gpointer data)
|
||||
{
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowNightSideMaps, on);
|
||||
appCore->charEntered('\020'); //Ctrl+P
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuVertexShaders(GtkWidget* w, gpointer data)
|
||||
{
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowNightSideMaps, on);
|
||||
appCore->charEntered('\026'); //Ctrl+V
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuShowNightSideMaps(GtkWidget* w, gpointer data)
|
||||
{
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowNightSideMaps, on);
|
||||
appCore->charEntered('\014'); //Ctrl+L
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuShowCelestialSphere(GtkWidget* w, gpointer data)
|
||||
{
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowCelestialSphere, on);
|
||||
appCore->charEntered(';');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuShowConstellations(GtkWidget* w, gpointer data)
|
||||
{
|
||||
bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetRenderFlag(Renderer::ShowDiagrams, on);
|
||||
appCore->charEntered('/');
|
||||
return TRUE;
|
||||
|
@ -164,28 +227,43 @@ static gint menuShowConstellations(GtkWidget* w, gpointer data)
|
|||
|
||||
static gint menuStarLabels(GtkWidget* w, gpointer data)
|
||||
{
|
||||
bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetLabelFlag(Renderer::StarLabels, on);
|
||||
appCore->charEntered('B');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuGalaxyLabels(GtkWidget* w, gpointer data)
|
||||
{
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetLabelFlag(Renderer::StarLabels, on);
|
||||
appCore->charEntered('E');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuConstellationLabels(GtkWidget* w, gpointer data)
|
||||
{
|
||||
bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetLabelFlag(Renderer::ConstellationLabels, on);
|
||||
appCore->charEntered('=');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuPlanetLabels(GtkWidget* w, gpointer data)
|
||||
static gint menuMajorPlanetLabels(GtkWidget* w, gpointer data)
|
||||
{
|
||||
bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetLabelFlag(Renderer::MajorPlanetLabels, on);
|
||||
appCore->charEntered('N');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gint menuMinorPlanetLabels(GtkWidget* w, gpointer data)
|
||||
{
|
||||
// bool on = (GTK_CHECK_MENU_ITEM(w)->active == 1);
|
||||
// SetLabelFlag(Renderer::MinorPlanetLabels, on);
|
||||
appCore->charEntered('M');
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void menuMoreStars()
|
||||
{
|
||||
|
@ -197,6 +275,31 @@ static void menuLessStars()
|
|||
appCore->charEntered('[');
|
||||
}
|
||||
|
||||
static void menuNoAmbient()
|
||||
{
|
||||
appCore->getRenderer()->setAmbientLightLevel(0.0f);
|
||||
}
|
||||
|
||||
static void menuLowAmbient()
|
||||
{
|
||||
appCore->getRenderer()->setAmbientLightLevel(0.02f);
|
||||
}
|
||||
|
||||
static void menuMedAmbient()
|
||||
{
|
||||
appCore->getRenderer()->setAmbientLightLevel(0.1f);
|
||||
}
|
||||
|
||||
static void menuHiAmbient()
|
||||
{
|
||||
appCore->getRenderer()->setAmbientLightLevel(0.25f);
|
||||
}
|
||||
|
||||
static void menuShowInfo()
|
||||
{
|
||||
appCore->charEntered('V');
|
||||
}
|
||||
|
||||
static void menuRunDemo()
|
||||
{
|
||||
appCore->charEntered('D');
|
||||
|
@ -702,40 +805,59 @@ static void menuTourGuide()
|
|||
static GtkItemFactoryEntry menuItems[] =
|
||||
{
|
||||
{ "/_File", NULL, NULL, 0, "<Branch>" },
|
||||
{ "/File/Capture Image...", "F10", menuCaptureImage, 0, NULL },
|
||||
{ "/File/Capture Image...", "F10", menuCaptureImage,0, NULL },
|
||||
{ "/File/Quit", "<control>Q", gtk_main_quit, 0, NULL },
|
||||
{ "/_Navigation", NULL, NULL, 0, "<Branch>" },
|
||||
{ "/Navigation/Select Sol", "H", menuSelectSol, 0, NULL },
|
||||
{ "/Navigation/Tour Guide", NULL, menuTourGuide, 0, NULL },
|
||||
{ "/Navigation/Select Object...", NULL, menuSelectObject, 0, NULL },
|
||||
{ "/Navigation/Goto Object...", NULL, menuGotoObject, 0, NULL },
|
||||
{ "/Navigation/Goto Object...", NULL, menuGotoObject,0, NULL },
|
||||
{ "/Navigation/sep1", NULL, NULL, 0, "<Separator>" },
|
||||
{ "/Navigation/Center Selection", "C", menuCenter, 0, NULL },
|
||||
{ "/Navigation/Goto Selection", "G", menuGoto, 0, NULL },
|
||||
{ "/Navigation/Follow Selection", "F", menuFollow, 0, NULL },
|
||||
{ "/Navigation/Sync Orbit", "Y", menuSync, 0, NULL },
|
||||
{ "/Navigation/Track Selection", "T", menuTrack, 0, NULL },
|
||||
{ "/_Time", NULL, NULL, 0, "<Branch>" },
|
||||
{ "/Time/10x Faster", "L", menuFaster, 0, NULL },
|
||||
{ "/Time/10x Slower", "K", menuSlower, 0, NULL },
|
||||
{ "/Time/Pause", " ", menuPause, 0, NULL },
|
||||
{ "/Time/Real Time", NULL, menuRealTime, 0, NULL },
|
||||
{ "/Time/Pause", "space", menuPause, 0, NULL },
|
||||
{ "/Time/Real Time", "backslash", menuRealTime, 0, NULL },
|
||||
{ "/Time/Reverse", "J", menuReverse, 0, NULL },
|
||||
{ "/_Render", NULL, NULL, 0, "<Branch>" },
|
||||
{ "/Render/Show Galaxies", "U", NULL, Menu_ShowGalaxies, "<ToggleItem>" },
|
||||
{ "/Render/Show Atmospheres", "I", NULL, Menu_ShowAtmospheres, "<ToggleItem>" },
|
||||
{ "/Render/Show Orbits", "O", NULL, Menu_ShowOrbits, "<ToggleItem>" },
|
||||
{ "/Render/Show Constellations", "-", NULL, Menu_ShowConstellations, "<ToggleItem>" },
|
||||
{ "/Render/Show Galaxies", "U", NULL, Menu_ShowGalaxies, "<ToggleItem>" },
|
||||
{ "/Render/Show Atmospheres", "<control>A",NULL, Menu_ShowAtmospheres, "<ToggleItem>" },
|
||||
{ "/Render/Show Clouds", "I", NULL, Menu_ShowClouds, "<ToggleItem>" },
|
||||
{ "/Render/Show Orbits", "O", NULL, Menu_ShowOrbits, "<ToggleItem>" },
|
||||
{ "/Render/Show Constellations", "minus",NULL, Menu_ShowConstellations, "<ToggleItem>" },
|
||||
{ "/Render/Show Coordinate Sphere", "semicolon",NULL, Menu_ShowCelestialSphere, "<ToggleItem>" },
|
||||
{ "/Render/Show Night Side Lights", "<control>L",NULL, Menu_ShowNightSideMaps, "<ToggleItem>" },
|
||||
{ "/Render/sep1", NULL, NULL, 0, "<Separator>" },
|
||||
{ "/Render/More Stars", "]", menuMoreStars, 0, NULL },
|
||||
{ "/Render/Fewer Stars", "[", menuLessStars, 0, NULL },
|
||||
{ "/Render/More Stars Visible", "bracketleft", menuMoreStars, 0, NULL },
|
||||
{ "/Render/Fewer Stars Visible", "bracketright", menuLessStars, 0, NULL },
|
||||
{ "/Render/sep2", NULL, NULL, 0, "<Separator>" },
|
||||
{ "/Render/Label Planets", "N", NULL, Menu_PlanetLabels, "<ToggleItem>" },
|
||||
{ "/Render/Label Major Planets", "N", NULL, Menu_MajorPlanetLabels, "<ToggleItem>" },
|
||||
{ "/Render/Label Minor Planets", "M", NULL, Menu_MinorPlanetLabels, "<ToggleItem>" },
|
||||
{ "/Render/Label Stars", "B", NULL, Menu_StarLabels, "<ToggleItem>" },
|
||||
{ "/Render/LabelConstellations", "=", NULL, Menu_ConstellationLabels, "<ToggleItem>" },
|
||||
{ "/Render/Label Galaxies", "E", NULL, Menu_GalaxyLabels, "<ToggleItem>" },
|
||||
{ "/Render/LabelConstellations", "equal",NULL, Menu_ConstellationLabels, "<ToggleItem>" },
|
||||
{ "/Render/Show Info Text", "V", menuShowInfo, 0, NULL },
|
||||
{ "/Render/sep3", NULL, NULL, 0, "<Separator>" },
|
||||
{ "/Render/_Ambient", NULL, NULL, 0, "<Branch>" },
|
||||
{ "/Render/Ambient/None", NULL, menuNoAmbient, 0, NULL },
|
||||
{ "/Render/Ambient/Low", NULL, menuLowAmbient,0, NULL },
|
||||
{ "/Render/Ambient/Medium", NULL, menuMedAmbient,0, NULL },
|
||||
{ "/Render/Ambient/High", NULL, menuHiAmbient, 0, NULL },
|
||||
{ "/_Help", NULL, NULL, 0, "<LastBranch>" },
|
||||
{ "/Help/Run Demo", "D", menuRunDemo, 0, NULL },
|
||||
{ "/Help/About", NULL, menuAbout, 0, NULL },
|
||||
};
|
||||
|
||||
static GtkItemFactoryEntry optMenuItems[] =
|
||||
{
|
||||
{ "/Render/Use Pixel Shaders", "<control>P", NULL, Menu_PixelShaders, "<ToggleItem>" },
|
||||
{ "/Render/Use Vertex Shaders", "<control>V", NULL, Menu_PixelShaders, "<ToggleItem>" },
|
||||
};
|
||||
|
||||
void setupCheckItem(GtkItemFactory* factory, int action, GtkSignalFunc func)
|
||||
{
|
||||
|
@ -758,6 +880,12 @@ void createMainMenu(GtkWidget* window, GtkWidget** menubar)
|
|||
"<main>",
|
||||
accelGroup);
|
||||
gtk_item_factory_create_items(menuItemFactory, nItems, menuItems, NULL);
|
||||
Renderer *renderer=appCore->getRenderer();
|
||||
g_assert(renderer);
|
||||
if(renderer->fragmentShaderSupported())
|
||||
gtk_item_factory_create_item(menuItemFactory, &optMenuItems[0], NULL, 1);
|
||||
if (renderer->vertexShaderSupported())
|
||||
gtk_item_factory_create_item(menuItemFactory, &optMenuItems[1], NULL, 1);
|
||||
|
||||
gtk_window_add_accel_group(GTK_WINDOW(window), accelGroup);
|
||||
if (menubar != NULL)
|
||||
|
@ -769,14 +897,30 @@ void createMainMenu(GtkWidget* window, GtkWidget** menubar)
|
|||
GTK_SIGNAL_FUNC(menuShowConstellations));
|
||||
setupCheckItem(menuItemFactory, Menu_ShowAtmospheres,
|
||||
GTK_SIGNAL_FUNC(menuShowAtmospheres));
|
||||
setupCheckItem(menuItemFactory, Menu_ShowClouds,
|
||||
GTK_SIGNAL_FUNC(menuShowClouds));
|
||||
setupCheckItem(menuItemFactory, Menu_ShowNightSideMaps,
|
||||
GTK_SIGNAL_FUNC(menuShowNightSideMaps));
|
||||
setupCheckItem(menuItemFactory, Menu_ShowOrbits,
|
||||
GTK_SIGNAL_FUNC(menuShowOrbits));
|
||||
setupCheckItem(menuItemFactory, Menu_PlanetLabels,
|
||||
GTK_SIGNAL_FUNC(menuPlanetLabels));
|
||||
setupCheckItem(menuItemFactory, Menu_MajorPlanetLabels,
|
||||
GTK_SIGNAL_FUNC(menuMajorPlanetLabels));
|
||||
setupCheckItem(menuItemFactory, Menu_MinorPlanetLabels,
|
||||
GTK_SIGNAL_FUNC(menuMinorPlanetLabels));
|
||||
setupCheckItem(menuItemFactory, Menu_StarLabels,
|
||||
GTK_SIGNAL_FUNC(menuStarLabels));
|
||||
setupCheckItem(menuItemFactory, Menu_GalaxyLabels,
|
||||
GTK_SIGNAL_FUNC(menuGalaxyLabels));
|
||||
setupCheckItem(menuItemFactory, Menu_ConstellationLabels,
|
||||
GTK_SIGNAL_FUNC(menuConstellationLabels));
|
||||
setupCheckItem(menuItemFactory, Menu_ShowCelestialSphere,
|
||||
GTK_SIGNAL_FUNC(menuShowCelestialSphere));
|
||||
if(renderer->fragmentShaderSupported())
|
||||
setupCheckItem(menuItemFactory, Menu_PixelShaders,
|
||||
GTK_SIGNAL_FUNC(menuPixelShaders));
|
||||
if (renderer->vertexShaderSupported())
|
||||
setupCheckItem(menuItemFactory, Menu_VertexShaders,
|
||||
GTK_SIGNAL_FUNC(menuVertexShaders));
|
||||
}
|
||||
|
||||
|
||||
|
@ -950,6 +1094,9 @@ static bool handleSpecialKey(int key, bool down)
|
|||
case GDK_F6:
|
||||
k = CelestiaCore::Key_F6;
|
||||
break;
|
||||
case GDK_F7:
|
||||
k = CelestiaCore::Key_F7;
|
||||
break;
|
||||
case GDK_F10:
|
||||
if (down)
|
||||
menuCaptureImage();
|
||||
|
|
Loading…
Reference in New Issue