// 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 Liam Girdwood 2003 #include "config.h" #include "import.hh" #include "splash.hh" #include "library.hh" namespace GUI { /*! \fn Splash::Splash () : Gtk::Window (Gtk::WINDOW_TOPLEVEL) * * Create the Nova splash */ Splash::Splash () : Gtk::Window (Gtk::WINDOW_TOPLEVEL) { // display splash screen and load default catalog Glib::ustring logo_path(NOVA_PIXMAP_DIR); logo_path+="/nova_logo.png"; vbox = Gtk::manage(new Gtk::VBox(false,3)); Glib::ustring title = "Nova I.O.E. Version "; title += VERSION; splash_label = Gtk::manage(new Gtk::Label(title)); progress = Gtk::manage(new Gtk::ProgressBar()); logo = Gtk::manage (new Gtk::Image (logo_path)); hbox = Gtk::manage (new Gtk::HBox(false, 3)); cat_label = Gtk::manage (new Gtk::Label("Loading catalogs ")); status_label = Gtk::manage (new Gtk::Label("")); set_resizable(false); set_decorated(false); set_position(Gtk::WIN_POS_CENTER); hbox->pack_start(*cat_label); hbox->pack_start(*status_label); hbox->pack_start(*progress); vbox->pack_start(*logo); vbox->pack_start(*splash_label); vbox->pack_start(*hbox); vbox->set_spacing(5); vbox->set_border_width(5); add(*vbox); show_all(); // Connect to the cross-thread signal. nova_signal.connect(SigC::slot(*this, &Splash::progress_increment)); } Splash::~Splash() { } /*! \fn void Splash::progress_increment() * * Increment the progress indicator. */ void Splash::progress_increment() { double fraction = Pollux::Library::get_library()->get_progress(); if (fraction >= 0 && fraction <= 1) progress->set_fraction(fraction); } /*! \fn void Splash::init_import(void) * * Create import update thread_resume */ void Splash::init_import(void) { // Create a non-joinable thread -- it's deleted automatically on thread exit. Glib::Thread::create(SigC::slot(*this, &Splash::import_default), false); } /*! \fn void Splash::import_default (void) * * Import Nova's default astro catalogs * Sky2000, PGC */ void Splash::import_default (void) { Pollux::Library* lib = Pollux::Library::get_library(); std::string cat_name("default"); status_label->set_label("Sky2000"); if (lib->get_catalog (cat_name, &nova_signal) == 0) { std::cerr << __FILE__ << " " << __LINE__ << " Error: could not load default catalog " << cat_name << std::endl; std::cerr << "Please install " << cat_name << " with the same --prefix as nova" << std::endl; m_import_status = false; Gtk::Main::quit(); return; } cat_name = "pgc"; status_label->set_label(cat_name); lib->get_catalog (cat_name, &nova_signal); m_import_status = true; Gtk::Main::quit(); } bool Splash::import_status(void) { return m_import_status; } }