// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// Copyright 2003 Liam Girdwood
#ifndef _NOVA_APP_HH
# define _NOVA_APP_HH
#include <libgnomeuimm/about.h>
#include <gtkmm/tooltips.h>
#include <gtkmm/menu.h>
#include <gtkmm/menubar.h>
#include <gtkmm/stock.h>
#include <gtkmm/toolbar.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/notebook.h>
#include <gtkmm/main.h>
#include <gconfmm/client.h>
#include <vector>
#include <string>
#include "nova_page.hh"
#include "virtual_sky.hh"
/*! \namespace GUI
* \brief Nova Graphical User Interface
*
* All classes in this namespace are User Interface objects
*/
namespace GUI
{
/*! \class NovaApp
* \brief The Nova application
*
* This class is the main thread of the Nova Application.
*/
class NovaApp : public Gtk::Window
{
public:
NovaApp();
virtual ~NovaApp();
void get_pixmap_file (std::string file, std::string path);
private:
// contents
Gtk::VBox m_app;
// menubar
Gtk::MenuBar m_menubar;
// file menu
Glib::RefPtr<Gtk::MenuItem> m_file_new_vsky;
Glib::RefPtr<Gtk::MenuItem> m_file_new_obs;
Glib::RefPtr<Gtk::MenuItem> m_file_new_tlist;
Glib::RefPtr<Gtk::MenuItem> m_file_new_ephemeris;
Glib::RefPtr<Gtk::MenuItem> m_file_save;
Glib::RefPtr<Gtk::MenuItem> m_file_save_as;
Glib::RefPtr<Gtk::MenuItem> m_file_import;
Glib::RefPtr<Gtk::MenuItem> m_file_print;
Glib::RefPtr<Gtk::MenuItem> m_file_close;
// sky menu
Glib::RefPtr<Gtk::MenuItem> m_sky_view_moon;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_mercury;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_venus;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_mars;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_jupiter;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_saturn;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_uranus;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_neptune;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_pluto;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_asteroids;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_comets;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_sun;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_galaxies;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_nebulae;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_other;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_star;
Glib::RefPtr<Gtk::MenuItem> m_sky_settings_location;
Glib::RefPtr<Gtk::MenuItem> m_sky_settings_markers;
Glib::RefPtr<Gtk::MenuItem> m_sky_settings_near_sky;
Glib::RefPtr<Gtk::MenuItem> m_sky_settings_deep_sky;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_ephemeris_manage;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_object;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_object_deep;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_object_near;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_object_coordinates;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_ephemeris;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_virtual_object;
Glib::RefPtr<Gtk::MenuItem> m_sky_settings;
Glib::RefPtr<Gtk::MenuItem> m_sky_view;
Glib::RefPtr<Gtk::MenuItem> m_sky_view_settings;
// observatory menu
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_moon;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_mercury;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_venus;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_mars;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_jupiter;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_saturn;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_uranus;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_neptune;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_pluto;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_asteroid;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_comet;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_galaxies;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_nebulae;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_other;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_sun;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_star;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_near_sky;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_deep_sky;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_coords;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto_vsky_coords;
Glib::RefPtr<Gtk::MenuItem> m_obs_connect;
Glib::RefPtr<Gtk::MenuItem> m_obs_disconnect;
Glib::RefPtr<Gtk::MenuItem> m_obs_goto;
Glib::RefPtr<Gtk::MenuItem> m_obs_control;
// target list menu
Glib::RefPtr<Gtk::MenuItem> m_target_add;
Glib::RefPtr<Gtk::MenuItem> m_target_delete;
Glib::RefPtr<Gtk::MenuItem> m_target_properties;
Glib::RefPtr<Gtk::MenuItem> m_target_up;
Glib::RefPtr<Gtk::MenuItem> m_target_down;
Glib::RefPtr<Gtk::MenuItem> m_target_order;
Glib::RefPtr<Gtk::MenuItem> m_target_execute;
Glib::RefPtr<Gtk::MenuItem> m_target_stop;
// log menu
Glib::RefPtr<Gtk::MenuItem> m_log_add_entry;
Glib::RefPtr<Gtk::MenuItem> m_log_search_entries;
Glib::RefPtr<Gtk::MenuItem> m_log_database_prefs;
// toolbar
Gtk::Toolbar m_toolbar;
//Gtk::Toolbar_Helpers::ButtonElem* m_tb_proj;
//Gtk::Toolbar_Helpers::ButtonElem* m_tb_zoom_in;
//Gtk::Toolbar_Helpers::ButtonElem* m_tb_zoom_out;
// about box
Gnome::UI::About* m_about;
// mdi
Gtk::Notebook m_nova_book;
std::vector<Polaris::NovaPage*> m_pages;
// GConf
Glib::RefPtr<Gnome::Conf::Client> m_ref_client;
Glib::ustring m_str_main_dir;
Glib::ustring m_str_size_dir;
Glib::ustring m_str_vsky_dir;
// App size
int m_width;
int m_height;
int m_page_height;
// app construction
void install_menus (void);
void install_toolbar (void);
void install_appbar (void);
void install_logo (void);
void install_about (void);
void install_contents (void);
void create_menu_help (void);
void create_menu_log (void);
void create_menu_target (void);
void create_menu_observatory (void);
void create_menu_sky (void);
void create_menu_file (void);
bool import_default (void);
// signal handlers
void on_new_virtual_sky_activate();
void on_new_target_list_activate();
void on_new_ephemeris_activate();
void on_new_observatory_activate();
void on_new_activate();
void on_open_activate();
void on_save_activate();
void on_save_as_activate();
void on_import_activate();
void on_print_activate();
void on_close_activate();
void on_quit_activate();
void on_sky_local_activate();
void on_sky_vsky_activate();
void on_sky_near_sky_activate();
void on_sky_deep_sky_activate();
void on_eph1_activate();
void on_sky_ephemeris_manage_activate ();
void on_sky_view_sun_activate();
void on_sky_view_mercury_activate();
void on_sky_view_venus_activate();
void on_sky_view_mars_activate();
void on_sky_view_jupiter_activate();
void on_sky_view_saturn_activate();
void on_sky_view_uranus_activate();
void on_sky_view_neptune_activate();
void on_sky_view_pluto_activate();
void on_sky_view_asteroids_activate();
void on_sky_view_comets_activate();
void on_sky_view_moon_activate();
void on_sky_view_star_activate();
void on_sky_view_galaxy_activate();
void on_sky_view_nebula_activate();
void on_sky_view_other_activate();
void on_sky_view_deep_sky_activate();
void on_sky_view_coordinates_activate();
void on_sky_view_fainter_activate();
void on_sky_view_brighter_activate();
void on_obs_connect_activate();
void on_obs_disconnect_activate();
void on_goto_ephemeris_activate();
void on_goto_sun_activate();
void on_goto_mercury_activate();
void on_goto_venus_activate();
void on_goto_mars_activate();
void on_goto_jupiter_activate();
void on_goto_saturn_activate();
void on_goto_uranus_activate();
void on_goto_neptune_activate();
void on_goto_pluto_activate();
void on_goto_asteroids_activate();
void on_goto_comets_activate();
void on_goto_moon_activate();
void on_goto_solar_system_activate();
void on_goto_star_activate();
void on_goto_galaxy_activate();
void on_goto_nebula_activate();
void on_goto_other_activate();
void on_goto_coords_activate();
void on_goto_vsky_coords_activate();
void on_obs_control_activate();
void on_target_add_activate();
void on_target_delete_activate();
void on_target_up_activate();
void on_target_down_activate();
void on_target_order_activate();
void on_target_execute_activate();
void on_target_stop_activate();
void on_target_properties_activate();
void on_log_add_activate();
void on_log_search_activate();
void on_log_properties_activate();
void on_contents_activate();
void on_about_activate();
// virtual sky signals
void on_zoom_in_button_clicked();
void on_zoom_out_button_clicked();
void on_goto_button_clicked();
void on_change_proj();
//session management
bool load_session();
bool save_session();
void get_app_settings();
// page creation
void create_vsky(Vega::VirtualSky* page);
};
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1