/* This file is part of cardwords
   (c) 1999 Tobias Peters
   see file COPYING for the copyright terms.
   
   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
*/

// cardwords_gtk_helpwindow.cc

#include "cardwords_gtk_helpwindow.hh"
#include "cardwords_gettext.hh"
#include <gtk--/text.h>

// CardWords_Gtk_HelpWindow is a window displaying a help text on demand.

  
CardWords_Gtk_HelpWindow::CardWords_Gtk_HelpWindow()
  : Gtk::Window(GTK_WINDOW_DIALOG),
    text (new Gtk::Text)
{
  set_title(gettext("cardwords help"));

  text->set_editable(false);
  text->set_word_wrap(true);
  add(*text);
  text->show();

  delete_event.
    connect(SigC::slot(this, &CardWords_Gtk_HelpWindow::hide_help_window));
}

int
CardWords_Gtk_HelpWindow::hide_help_window(GdkEventAny *)
{
  hide();
  return true;
}

CardWords_Gtk_HelpWindow::~CardWords_Gtk_HelpWindow()
{
  text->hide();
  remove(/*text*/);
  delete text;

  hide();
}

void
CardWords_Gtk_HelpWindow::show_help_text(const string & help_text)
{
  text->show();
  show();

  // The window may already be open but hidden behind some other windows on
  // the screen. This should bring it to the top again.
  gdk_window_show(this->get_window());
  gdk_window_raise(this->get_window());

  {
    size_t length = text->get_length();

    if (length != 0) {
      text->delete_text(0, length);
    }
  }

  text->insert(0,0,0, help_text, -1);
}

gint
CardWords_Gtk_HelpWindow::delete_event_impl(GdkEventAny* p1)
{
  // Only hide the window:
  // Gtk::Window::delete_event_impl(p1);
  hide();
  return true;
}
