// 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 #include #include #include #include #include #include #include #include #include #include #include #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 m_file_new_vsky; Glib::RefPtr m_file_new_obs; Glib::RefPtr m_file_new_tlist; Glib::RefPtr m_file_new_ephemeris; Glib::RefPtr m_file_save; Glib::RefPtr m_file_save_as; Glib::RefPtr m_file_import; Glib::RefPtr m_file_print; Glib::RefPtr m_file_close; // sky menu Glib::RefPtr m_sky_view_moon; Glib::RefPtr m_sky_view_mercury; Glib::RefPtr m_sky_view_venus; Glib::RefPtr m_sky_view_mars; Glib::RefPtr m_sky_view_jupiter; Glib::RefPtr m_sky_view_saturn; Glib::RefPtr m_sky_view_uranus; Glib::RefPtr m_sky_view_neptune; Glib::RefPtr m_sky_view_pluto; Glib::RefPtr m_sky_view_asteroids; Glib::RefPtr m_sky_view_comets; Glib::RefPtr m_sky_view_sun; Glib::RefPtr m_sky_view_galaxies; Glib::RefPtr m_sky_view_nebulae; Glib::RefPtr m_sky_view_other; Glib::RefPtr m_sky_view_star; Glib::RefPtr m_sky_settings_location; Glib::RefPtr m_sky_settings_markers; Glib::RefPtr m_sky_settings_near_sky; Glib::RefPtr m_sky_settings_deep_sky; Glib::RefPtr m_sky_view_ephemeris_manage; Glib::RefPtr m_sky_view_object; Glib::RefPtr m_sky_view_object_deep; Glib::RefPtr m_sky_view_object_near; Glib::RefPtr m_sky_view_object_coordinates; Glib::RefPtr m_sky_view_ephemeris; Glib::RefPtr m_sky_view_virtual_object; Glib::RefPtr m_sky_settings; Glib::RefPtr m_sky_view; Glib::RefPtr m_sky_view_settings; // observatory menu Glib::RefPtr m_obs_goto_moon; Glib::RefPtr m_obs_goto_mercury; Glib::RefPtr m_obs_goto_venus; Glib::RefPtr m_obs_goto_mars; Glib::RefPtr m_obs_goto_jupiter; Glib::RefPtr m_obs_goto_saturn; Glib::RefPtr m_obs_goto_uranus; Glib::RefPtr m_obs_goto_neptune; Glib::RefPtr m_obs_goto_pluto; Glib::RefPtr m_obs_goto_asteroid; Glib::RefPtr m_obs_goto_comet; Glib::RefPtr m_obs_goto_galaxies; Glib::RefPtr m_obs_goto_nebulae; Glib::RefPtr m_obs_goto_other; Glib::RefPtr m_obs_goto_sun; Glib::RefPtr m_obs_goto_star; Glib::RefPtr m_obs_goto_near_sky; Glib::RefPtr m_obs_goto_deep_sky; Glib::RefPtr m_obs_goto_coords; Glib::RefPtr m_obs_goto_vsky_coords; Glib::RefPtr m_obs_connect; Glib::RefPtr m_obs_disconnect; Glib::RefPtr m_obs_goto; Glib::RefPtr m_obs_control; // target list menu Glib::RefPtr m_target_add; Glib::RefPtr m_target_delete; Glib::RefPtr m_target_properties; Glib::RefPtr m_target_up; Glib::RefPtr m_target_down; Glib::RefPtr m_target_order; Glib::RefPtr m_target_execute; Glib::RefPtr m_target_stop; // log menu Glib::RefPtr m_log_add_entry; Glib::RefPtr m_log_search_entries; Glib::RefPtr 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 m_pages; // GConf Glib::RefPtr 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