1 /*
2  *  Celestia GTK+ Front-End
3  *  Copyright (C) 2005 Pat Suwalski <pat@suwalski.net>
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  $Id: ui.h,v 1.6 2006-12-12 00:31:01 suwalski Exp $
11  */
12 
13 #ifndef GTK_UI_H
14 #define GTK_UI_H
15 
16 #include <gtk/gtk.h>
17 
18 #include "actions.h"
19 
20 /* By default all action widgets are turned off. They will be set later when
21  * they are being synchronized with settings and with the core. */
22 
23 /* Regular Actions */
24 static const GtkActionEntry actionsPlain[] = {
25 	{ "FileMenu", NULL, "_File", NULL, NULL, NULL },
26 	{ "CopyURL", GTK_STOCK_COPY, "Copy _URL", NULL, NULL, G_CALLBACK(actionCopyURL) },
27 	{ "OpenURL", NULL, "Open UR_L", NULL, NULL, G_CALLBACK(actionOpenURL) },
28 	{ "OpenScript", GTK_STOCK_OPEN, "_Open Script...", NULL, NULL, G_CALLBACK(actionOpenScript) },
29 	{ "CaptureImage", GTK_STOCK_SAVE_AS, "_Capture Image...", NULL, NULL, G_CALLBACK(actionCaptureImage) },
30 	{ "CaptureMovie", GTK_STOCK_SAVE_AS, "Capture _Movie...", NULL, NULL, G_CALLBACK(actionCaptureMovie) },
31 	{ "Quit", GTK_STOCK_QUIT, "_Quit", "<control>Q", NULL, G_CALLBACK(actionQuit) },
32 
33 	{ "NavigationMenu", NULL, "_Navigation", NULL, NULL, NULL },
34 	{ "SelectSol", GTK_STOCK_HOME, "Select _Sol", "H", NULL, G_CALLBACK(actionSelectSol) },
35 	{ "TourGuide", NULL, "Tour G_uide...", NULL, NULL, G_CALLBACK(actionTourGuide) },
36 	{ "SearchObject", GTK_STOCK_FIND, "Search for _Object...", NULL, NULL, G_CALLBACK(actionSearchObject) },
37 	{ "GotoObject", NULL, "Go to Object...", NULL, NULL, G_CALLBACK(actionGotoObject) },
38 	{ "CenterSelection", NULL, "_Center Selection", "c", NULL, G_CALLBACK(actionCenterSelection) },
39 	{ "GotoSelection", GTK_STOCK_JUMP_TO, "_Go to Selection", "G", NULL, G_CALLBACK(actionGotoSelection) },
40 	{ "FollowSelection", NULL, "_Follow Selection", "F", NULL, G_CALLBACK(actionFollowSelection) },
41 	{ "SyncSelection", NULL, "S_ync Orbit Selection", "Y", NULL, G_CALLBACK(actionSyncSelection) },
42 	{ "TrackSelection", NULL, "_Track Selection", "T", NULL, G_CALLBACK(actionTrackSelection) },
43 	{ "SystemBrowser", NULL, "Solar System _Browser...", NULL, NULL, G_CALLBACK(actionSystemBrowser) },
44 	{ "StarBrowser", NULL, "Star B_rowser...", NULL, NULL, G_CALLBACK(actionStarBrowser) },
45 	{ "EclipseFinder", NULL, "_Eclipse Finder...", NULL, NULL, G_CALLBACK(actionEclipseFinder) },
46 
47 	{ "TimeMenu", NULL, "_Time", NULL, NULL, NULL },
48 	{ "TimeFaster", NULL, "10x _Faster", "L", NULL, G_CALLBACK(actionTimeFaster) },
49 	{ "TimeSlower", NULL, "10x _Slower", "K", NULL, G_CALLBACK(actionTimeSlower) },
50 	{ "TimeFreeze", NULL, "Free_ze", "space", NULL, G_CALLBACK(actionTimeFreeze) },
51 	{ "TimeReal", NULL, "_Real Time", "backslash", NULL, G_CALLBACK(actionTimeReal) },
52 	{ "TimeReverse", NULL, "Re_verse Time", "J", NULL, G_CALLBACK(actionTimeReverse) },
53 	{ "TimeSet", NULL, "Set _Time...", NULL, NULL, G_CALLBACK(actionTimeSet) },
54 	/* "Show Local Time" in toggle actions */
55 
56 	{ "OptionsMenu", NULL, "_Options", NULL, NULL, NULL },
57 	{ "ViewOptions", GTK_STOCK_PREFERENCES, "View _Options...", NULL, NULL, G_CALLBACK(actionViewOptions) },
58 	{ "ShowObjectsMenu", NULL, "Show Objects", NULL, NULL, NULL },
59 	{ "ShowGridsMenu", NULL, "Show Grids", NULL, NULL, NULL },
60 	{ "ShowLabelsMenu", NULL, "Show Labels", NULL, NULL, NULL },
61 	{ "ShowOrbitsMenu", NULL, "Show Orbits", NULL, NULL, NULL },
62 	{ "InfoTextMenu", NULL, "Info Text", NULL, NULL, NULL },
63 		/* "Info Text" in radio actions */
64 	{ "StarStyleMenu", NULL, "Star St_yle", NULL, NULL, NULL },
65 		/* "Star Style" in radio actions */
66 	{ "AmbientLightMenu", NULL, "_Ambient Light", NULL, NULL, NULL },
67 		/* "Ambient Light" in radio actions */
68 	{ "StarsMore", NULL, "_More Stars Visible", "bracketright", NULL, G_CALLBACK(actionStarsMore) },
69 	{ "StarsFewer", NULL, "_Fewer Stars Visible", "bracketleft", NULL, G_CALLBACK(actionStarsFewer) },
70 	/* "VideoSync" in toggle actions */
71 
72 	{ "WindowMenu", NULL, "_Window", NULL, NULL, NULL },
73 	{ "ViewerSize", GTK_STOCK_ZOOM_FIT, "Set Window Size...", NULL, NULL, G_CALLBACK(actionViewerSize) },
74 	/* "Full Screen" in toggle actions */
75 	{ "MultiSplitH", NULL, "Split _Horizontally", "<control>R", NULL, G_CALLBACK(actionMultiSplitH) },
76 	{ "MultiSplitV", NULL, "Split _Vertically", "<control>U", NULL, G_CALLBACK(actionMultiSplitV) },
77 	{ "MultiCycle", NULL, "Cycle View", "Tab", NULL, G_CALLBACK(actionMultiCycle) },
78 	{ "MultiDelete", NULL, "_Delete Active View", "Delete", NULL, G_CALLBACK(actionMultiDelete) },
79 	{ "MultiSingle", NULL, "_Single View", "<control>D", NULL, G_CALLBACK(actionMultiSingle) },
80 	/* "Show Frames" in toggle actions */
81 	/* "Synchronize Time" in toggle actions */
82 
83 	{ "HelpMenu", NULL, "_Help", NULL, NULL, NULL },
84 	{ "RunDemo", GTK_STOCK_EXECUTE, "Run _Demo", "D", NULL, G_CALLBACK(actionRunDemo) },
85 	{ "HelpControls", GTK_STOCK_HELP, "_Controls", NULL, NULL, G_CALLBACK(actionHelpControls) },
86 	#if GTK_CHECK_VERSION(2, 7, 0)
87 	{ "HelpOpenGL", GTK_STOCK_INFO, "OpenGL _Info", NULL, NULL, G_CALLBACK(actionHelpOpenGL) },
88 	#else
89 	{ "HelpOpenGL", NULL, "OpenGL _Info", NULL, NULL, G_CALLBACK(actionHelpOpenGL) },
90 	#endif
91 	{ "HelpAbout", GTK_STOCK_ABOUT, "_About", NULL, NULL, G_CALLBACK(actionHelpAbout) },
92 };
93 
94 
95 /* Regular Checkbox Actions */
96 static const GtkToggleActionEntry actionsToggle[] = {
97 	{ "TimeLocal", NULL, "Show _Local Time", NULL, NULL, G_CALLBACK(actionTimeLocal), FALSE },
98 	#if GTK_CHECK_VERSION(2, 7, 0)
99 	{ "FullScreen", GTK_STOCK_FULLSCREEN, "_Full Screen", "<alt>Return",  NULL, G_CALLBACK(actionFullScreen), FALSE },
100 	#else
101 	{ "FullScreen", NULL, "_Full Screen", "<alt>Return",  NULL, G_CALLBACK(actionFullScreen), FALSE },
102 	#endif /* GTK_CHECK_VERSION */
103 	{ "MenuBarVisible", NULL, "_Menu Bar", "<control>M", NULL, G_CALLBACK(actionMenuBarVisible), TRUE },
104 	{ "MultiShowFrames", NULL, "Show _Frames", NULL, NULL, G_CALLBACK(actionMultiShowFrames), FALSE },
105 	{ "MultiShowActive", NULL, "Active Frame Highlighted", NULL, NULL, G_CALLBACK(actionMultiShowActive), FALSE },
106 	{ "MultiSyncTime", NULL, "Synchronize _Time", NULL, NULL, G_CALLBACK(actionMultiSyncTime), FALSE },
107 	{ "VideoSync", NULL, "_Limit Frame Rate", NULL, NULL, G_CALLBACK(actionVideoSync), TRUE },
108 };
109 
110 
111 /* Regular Radio Button Actions */
112 static const GtkRadioActionEntry actionsVerbosity[] = {
113 	{ "HudNone", NULL, "_None", NULL, NULL, 0 },
114 	{ "HudTerse", NULL, "_Terse", NULL, NULL, 1},
115 	{ "HudVerbose", NULL, "_Verbose", NULL, NULL, 2},
116 };
117 
118 static const GtkRadioActionEntry actionsStarStyle[] = {
119 	{ "StarsFuzzy", NULL, "_Fuzzy Points", NULL, NULL, Renderer::FuzzyPointStars },
120 	{ "StarsPoints", NULL, "_Points", NULL, NULL, Renderer::PointStars },
121 	{ "StarsDiscs", NULL, "Scaled _Discs", NULL, NULL, Renderer::ScaledDiscStars },
122 };
123 
124 static const GtkRadioActionEntry actionsAmbientLight[] = {
125 	{ "AmbientNone", NULL, "_None", NULL, NULL, 0 },
126 	{ "AmbientLow", NULL, "_Low", NULL, NULL, 1 },
127 	{ "AmbientMedium", NULL, "_Medium", NULL, NULL, 2},
128 };
129 
130 
131 /* Render-Flag Actions */
132 static const GtkToggleActionEntry actionsRenderFlags[] = {
133 	{ "RenderAA", NULL, "Antialiasing", "<control>X", NULL, G_CALLBACK(actionRenderAA), FALSE },
134 	{ "RenderAtmospheres", NULL, "Atmospheres", "<control>A", NULL, G_CALLBACK(actionRenderAtmospheres), FALSE },
135 	{ "RenderAutoMagnitude", NULL, "Auto Magnitude", "<control>Y", NULL, G_CALLBACK(actionRenderAutoMagnitude), FALSE },
136 	{ "RenderClouds", NULL, "Clouds", "I", NULL, G_CALLBACK(actionRenderClouds), FALSE },
137 	{ "RenderCometTails", NULL, "Comet Tails", "<control>T", NULL, G_CALLBACK(actionRenderCometTails), FALSE },
138 	{ "RenderConstellationBoundaries", NULL, "Constellation Boundaries", NULL, NULL, G_CALLBACK(actionRenderConstellationBoundaries), FALSE },
139 	{ "RenderConstellations", NULL, "Constellations", "slash", NULL, G_CALLBACK(actionRenderConstellations), FALSE },
140 	{ "RenderEclipseShadows", NULL, "Eclipse Shadows", "<control>E", NULL, G_CALLBACK(actionRenderEclipseShadows), FALSE },
141 	{ "RenderGalaxies", NULL, "Galaxies", "U", NULL, G_CALLBACK(actionRenderGalaxies), FALSE },
142 	{ "RenderGlobulars", NULL, "Globulars", "<shift>U", NULL, G_CALLBACK(actionRenderGlobulars), FALSE },
143 	{ "RenderCelestialGrid", NULL, "Grid: Celestial", "semicolon", NULL, G_CALLBACK(actionRenderCelestialGrid), FALSE },
144 	{ "RenderEclipticGrid", NULL, "Grid: Ecliptic", NULL, NULL, G_CALLBACK(actionRenderEclipticGrid), FALSE },
145 	{ "RenderGalacticGrid", NULL, "Grid: Galactic", NULL, NULL, G_CALLBACK(actionRenderGalacticGrid), FALSE },
146 	{ "RenderHorizontalGrid", NULL, "Grid: Horizontal", NULL, NULL, G_CALLBACK(actionRenderHorizontalGrid), FALSE },
147 	{ "RenderMarkers", NULL, "Markers", "<control>M", NULL, G_CALLBACK(actionRenderMarkers), FALSE },
148 	{ "RenderNebulae", NULL, "Nebulae", "asciicircum", NULL, G_CALLBACK(actionRenderNebulae), FALSE },
149 	{ "RenderNightLights", NULL, "Night Side Lights", "<control>L", NULL, G_CALLBACK(actionRenderNightLights), FALSE },
150 	{ "RenderOpenClusters", NULL, "Open Clusters", NULL, NULL, G_CALLBACK(actionRenderOpenClusters), FALSE },
151 	{ "RenderOrbits", NULL, "Orbits", "O", NULL, G_CALLBACK(actionRenderOrbits), FALSE },
152 	{ "RenderPlanets", NULL, "Planets", NULL, NULL, G_CALLBACK(actionRenderPlanets), FALSE },
153 	{ "RenderRingShadows", NULL, "Ring Shadows", NULL, NULL, G_CALLBACK(actionRenderRingShadows), FALSE },
154 	{ "RenderStars", NULL, "Stars", NULL, NULL, G_CALLBACK(actionRenderStars), FALSE },
155 };
156 
157 
158 /* Orbit-Flag Actions */
159 static const GtkToggleActionEntry actionsOrbitFlags[] = {
160 	{ "OrbitAsteroids", NULL, "Asteroids", NULL, NULL, G_CALLBACK(actionOrbitAsteroids), FALSE },
161 	{ "OrbitComets", NULL, "Comets", NULL, NULL, G_CALLBACK(actionOrbitComets), FALSE },
162 	{ "OrbitMoons", NULL, "Moons", NULL, NULL, G_CALLBACK(actionOrbitMoons), FALSE },
163 	{ "OrbitPlanets", NULL, "Planets", NULL, NULL, G_CALLBACK(actionOrbitPlanets), FALSE },
164 	{ "OrbitSpacecraft", NULL, "Spacecraft", NULL, NULL, G_CALLBACK(actionOrbitSpacecraft), FALSE },
165 };
166 
167 /* Label-Flag Actions */
168 static const GtkToggleActionEntry actionsLabelFlags[] = {
169 	{ "LabelAsteroids", NULL, "Asteroids", "W", NULL, G_CALLBACK(actionLabelAsteroids), FALSE },
170 	{ "LabelComets", NULL, "Comets", "<shift>W", NULL, G_CALLBACK(actionLabelComets), FALSE },
171 	{ "LabelConstellations", NULL, "Constellations", "equal", NULL, G_CALLBACK(actionLabelConstellations), FALSE },
172 	{ "LabelGalaxies", NULL, "Galaxies", "E", NULL, G_CALLBACK(actionLabelGalaxies), FALSE },
173 	{ "LabelGlobulars", NULL, "Globulars", "<shift>E", NULL, G_CALLBACK(actionLabelGlobulars), FALSE },
174 	{ "LabelLocations", NULL, "Locations", NULL, NULL, G_CALLBACK(actionLabelLocations), FALSE },
175 	{ "LabelMoons", NULL, "Moons", "M", NULL, G_CALLBACK(actionLabelMoons), FALSE },
176 	{ "LabelNebulae", NULL, "Nebulae", NULL, NULL, G_CALLBACK(actionLabelNebulae), FALSE },
177 	{ "LabelOpenClusters", NULL, "Open Clusters", NULL, NULL, G_CALLBACK(actionLabelOpenClusters), FALSE },
178 	{ "LabelPlanets", NULL, "Planets", "P", NULL, G_CALLBACK(actionLabelPlanets), FALSE },
179 	{ "LabelSpacecraft", NULL, "Spacecraft", "N", NULL, G_CALLBACK(actionLabelSpacecraft), FALSE },
180 	{ "LabelStars", NULL, "Stars", "B", NULL, G_CALLBACK(actionLabelStars), FALSE },
181 
182 	/*
183 	Does not appear to do anything yet:
184 	{ "LabelsLatin", NULL, "Labels in Latin", NULL, NULL, NULL, FALSE },
185 	*/
186 };
187 
188 #endif /* GTK_UI_H */
189