#include <gtk/gtk.h>#include <celengine/body.h>#include <celengine/selection.h>#include <celestia/celestiacore.h>#include "common.h"Include dependency graph for menu-context.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Functions | |
| void | initContext (AppData *a) |
| void | menuContext (float, float, Selection sel) |
|
|
Definition at line 44 of file menu-context.cpp. References app. Referenced by main(). 00045 {
00046 app = a;
00047 }
|
|
||||||||||||||||
|
Definition at line 52 of file menu-context.cpp. References _AppData::agMain, app, AppendMenu(), Selection::body(), CreateAlternateSurfaceMenu(), CreatePlanetarySystemMenu(), Selection::deepsky(), Universe::find(), Body::getAlternateSurfaceNames(), Star::getCatalogNumber(), Universe::getDSOCatalog(), DSODatabase::getDSOName(), Body::getName(), SolarSystem::getPlanets(), Body::getSatellites(), Universe::getSolarSystemCatalog(), Universe::getStarCatalog(), StarDatabase::getStarName(), PlanetarySystem::getSystemSize(), Selection::getType(), Simulation::getUniverse(), Universe::isMarked(), menuMark(), menuUnMark(), ReplaceGreekLetterAbbr(), Simulation::setSelection(), _AppData::simulation, and Selection::star(). Referenced by main(). 00053 {
00054 GtkWidget* popup = gtk_menu_new();
00055 string name;
00056
00057 switch (sel.getType())
00058 {
00059 case Selection::Type_Body:
00060 {
00061 name = sel.body()->getName();
00062 AppendMenu(popup, NULL, name.c_str(), gtk_action_group_get_action(app->agMain, "CenterSelection"));
00063 AppendMenu(popup, NULL, NULL, 0);
00064 AppendMenu(popup, NULL, "_Goto", gtk_action_group_get_action(app->agMain, "GotoSelection"));
00065 AppendMenu(popup, NULL, "_Follow", gtk_action_group_get_action(app->agMain, "FollowSelection"));
00066 AppendMenu(popup, NULL, "S_ync Orbit", gtk_action_group_get_action(app->agMain, "SyncSelection"));
00067 /* Add info eventually:
00068 * AppendMenu(popup, NULL, "_Info", 0); */
00069
00070 const PlanetarySystem* satellites = sel.body()->getSatellites();
00071 if (satellites != NULL && satellites->getSystemSize() != 0)
00072 {
00073 GtkMenu* satMenu = CreatePlanetarySystemMenu(name, satellites);
00074 gtk_menu_item_set_submenu(AppendMenu(popup, NULL, "_Satellites", 0), GTK_WIDGET(satMenu));
00075 }
00076
00077 vector<string>* altSurfaces = sel.body()->getAlternateSurfaceNames();
00078 if (altSurfaces != NULL)
00079 {
00080 if (altSurfaces->size() > 0)
00081 {
00082 GtkMenu* surfMenu = CreateAlternateSurfaceMenu(*altSurfaces);
00083 gtk_menu_item_set_submenu(AppendMenu(popup, NULL, "_Alternate Surfaces", 0), GTK_WIDGET(surfMenu));
00084 delete altSurfaces;
00085 }
00086 }
00087 }
00088 break;
00089
00090 case Selection::Type_Star:
00091 {
00092 Simulation* sim = app->simulation;
00093 name = ReplaceGreekLetterAbbr(sim->getUniverse()->getStarCatalog()->getStarName(*(sel.star())));
00094 AppendMenu(popup, NULL, name.c_str(), gtk_action_group_get_action(app->agMain, "CenterSelection"));
00095 AppendMenu(popup, NULL, NULL, 0);
00096 AppendMenu(popup, NULL, "_Goto", gtk_action_group_get_action(app->agMain, "GotoSelection"));
00097 /* Add info eventually:
00098 * AppendMenu(popup, NULL, "_Info", 0); */
00099
00100 SolarSystemCatalog* solarSystemCatalog = sim->getUniverse()->getSolarSystemCatalog();
00101 SolarSystemCatalog::iterator iter = solarSystemCatalog->find(sel.star()->getCatalogNumber());
00102 if (iter != solarSystemCatalog->end())
00103 {
00104 SolarSystem* solarSys = iter->second;
00105 GtkMenu* planetsMenu = CreatePlanetarySystemMenu(name, solarSys->getPlanets());
00106 if (name == "Sol")
00107 gtk_menu_item_set_submenu(AppendMenu(popup, NULL, "Orbiting Bodies", 0), GTK_WIDGET(planetsMenu));
00108 else
00109 gtk_menu_item_set_submenu(AppendMenu(popup, NULL, "Planets", 0), GTK_WIDGET(planetsMenu));
00110 }
00111 }
00112 break;
00113
00114 case Selection::Type_DeepSky:
00115 {
00116 AppendMenu(popup, NULL, app->simulation->getUniverse()->getDSOCatalog()->getDSOName(sel.deepsky()).c_str(), gtk_action_group_get_action(app->agMain, "CenterSelection"));
00117 AppendMenu(popup, NULL, NULL, 0);
00118 AppendMenu(popup, NULL, "_Goto", gtk_action_group_get_action(app->agMain, "GotoSelection"));
00119 AppendMenu(popup, NULL, "_Follow", gtk_action_group_get_action(app->agMain, "FollowSelection"));
00120 /* Add info eventually:
00121 * AppendMenu(popup, NULL, "_Info", 0); */
00122 }
00123 break;
00124
00125 case Selection::Type_Location:
00126 break;
00127
00128 default:
00129 break;
00130 }
00131
00132 if (app->simulation->getUniverse()->isMarked(sel, 1))
00133 AppendMenu(popup, menuUnMark, "_Unmark", 0);
00134 else
00135 AppendMenu(popup, menuMark, "_Mark", 0);
00136
00137 app->simulation->setSelection(sel);
00138
00139 gtk_widget_show_all(popup);
00140 gtk_menu_popup(GTK_MENU(popup), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
00141 }
|
1.4.1