Filter:   InfoImg
download Fl_Help_Dialog.cxx
Language: C++
LOC: 219
Project Info
Fast Light Tool Kit(fltk)
Server: SourceForge
Type: cvs
...Forge\f\fltk\fltk\fltk\src\
   allfiles.xbm
   ARRAY.h
   browser_minus.xbm
   browser_plus.xbm
   cmap.cxx
   CycleButton.cxx
   d1.xbm
   d1_mask.xbm
   dlload_osx.cxx
   dump_compose.c
   ew.xbm
   ew_mask.xbm
   fastarrow.h
   filename_absolute.cxx
   filename_expand.cxx
   filename_ext.cxx
   filename_isdir.cxx
   filename_list.cxx
   filename_match.cxx
   filename_setext.cxx
   Fl.cxx
   Fl_abort.cxx
   Fl_add_idle.cxx
   Fl_Adjuster.cxx
   Fl_Align_Group.cxx
   fl_arc.cxx
   fl_arci.cxx
   Fl_arg.cxx
   fl_ask.cxx
   Fl_Bar.cxx
   Fl_Bitmap.cxx
   fl_bmp.cxx
   Fl_Box.cxx
   Fl_Boxtype.cxx
   Fl_Browser.cxx
   Fl_Browser_load.cxx
   Fl_Button.cxx
   fl_call_main.c
   Fl_Check_Button.cxx
   Fl_Choice.cxx
   fl_clip.cxx
   Fl_Clock.cxx
   fl_cmap.h
   fl_color.cxx
   Fl_Color_Chooser.cxx
   fl_color_mac.cxx
   fl_color_win32.cxx
   fl_color_x.cxx
   Fl_compose.cxx
   fl_cursor.cxx
   fl_curve.cxx
   Fl_Dial.cxx
   fl_diamond_box.cxx
   Fl_display.cxx
   fl_dnd.cxx
   fl_dnd_mac.cxx
   fl_dnd_win32.cxx
   fl_dnd_x.cxx
   fl_draw.cxx
   fl_draw_image.cxx
   fl_draw_image_mac.cxx
   fl_draw_image_win32.cxx
   fl_draw_image_x.cxx
   fl_draw_pixmap.cxx
   fl_engraved_label.cxx
   fl_file_chooser.cxx
   Fl_FileBrowser.cxx
   Fl_FileChooser.cxx
   Fl_FileChooser.fl
   Fl_FileChooser2.cxx
   Fl_FileIcon.cxx
   Fl_FileIcon2.cxx
   Fl_FileInput.cxx
   Fl_Float_Input.cxx
   fl_font.cxx
   fl_font_mac.cxx
   fl_font_win32.cxx
   fl_font_x.cxx
   fl_font_xft.cxx
   Fl_get_key.cxx
   Fl_get_key_mac.cxx
   Fl_get_key_win32.cxx
   fl_gif.cxx
   fl_glyph.cxx
   Fl_Group.cxx
   Fl_Help_Dialog.cxx
   Fl_Help_View.cxx
   Fl_Highlight_Button.cxx
   Fl_Image.cxx
   Fl_Input.cxx
   Fl_Input_Browser.cxx
   Fl_Item.cxx
   Fl_key_name.cxx
   fl_labeltype.cxx
   Fl_Light_Button.cxx
   fl_list_fonts.cxx
   fl_list_fonts_mac.cxx
   fl_list_fonts_win32.cxx
   fl_list_fonts_x.cxx
   fl_load_plugin.cxx
   Fl_lock.cxx
   Fl_mac.cxx
   Fl_Menu.cxx
   Fl_Menu_.cxx
   Fl_Menu_add.cxx
   Fl_Menu_Bar.cxx
   Fl_Menu_Button.cxx
   Fl_Menu_global.cxx
   Fl_Menu_Item.cxx
   Fl_Menu_Window.cxx
   Fl_Multi_Image.cxx
   Fl_Numeric_Input.cxx
   Fl_Output.cxx
   fl_oval_box.cxx
   fl_overlay.cxx
   fl_overlay_visual.cxx
   Fl_own_colormap.cxx
   Fl_Pack.cxx
   Fl_Pixmap.cxx
   fl_plastic_box.cxx
   Fl_ProgressBar.cxx
   Fl_Radio_Button.cxx
   fl_rect.cxx
   Fl_Repeat_Button.cxx
   Fl_Return_Button.cxx
   fl_rgb.cxx
   Fl_RGB_Image.cxx
   Fl_Roller.cxx
   fl_round_box.cxx
   fl_rounded_box.cxx
   Fl_Scroll.cxx
   fl_scroll_area.cxx
   Fl_Scrollbar.cxx
   fl_set_fonts_mac.cxx
   fl_shadow_box.cxx
   Fl_Shaped_Window.cxx
   Fl_Shared_Image.cxx
   fl_show_colormap.cxx
   Fl_Single_Window.cxx
   Fl_Slider.cxx
   Fl_String_List.cxx
   Fl_Style.cxx
   Fl_Style_Set.cxx
   fl_symbols.cxx
   Fl_Tabs.cxx
   Fl_Text_Buffer.cxx
   Fl_Text_Display.cxx
   Fl_Text_Editor.cxx
   Fl_Tile.cxx
   Fl_Tiled_Image.cxx
   Fl_Tooltip.cxx
   Fl_Valuator.cxx
   Fl_Value_Input.cxx
   Fl_Value_Slider.cxx
   fl_vertex.cxx
   Fl_visual.cxx
   Fl_Widget.cxx
   Fl_win32.cxx
   Fl_Window.cxx
   Fl_Window_fullscreen.cxx
   Fl_Window_hotspot.cxx
   Fl_Window_iconize.cxx
   Fl_x.cxx
   Fl_XColor.h
   fl_xpm.cxx
   fltk_theme.cxx
   fltk_theme_win32.cxx
   fltk_theme_x.cxx
   IFont.h
   mediumarrow.h
   new.xbm
   ns.xbm
   ns_mask.xbm
   pktdef.h
   scandir.c
   scandir_win32.c
   shortcuts.cxx
   slowarrow.h
   string.c
   up.xbm
   utf.c
   ValueOutput.cxx
   vsnprintf.c
   wintab.h
   wintabx.h
   XColorMap.h
   xutf8.cxx

// generated by Fast Light User Interface Designer (fluid) version 1.0101

#include <fltk/HelpDialog.h>
#include <fltk/string.h>
#include <fltk/ask.h>

using namespace fltk;

void HelpDialog::cb_view__i (HelpView *, void *)
{
  if (view_->changed ()) {
    index_++;

    if (index_ >= 100) {
      memmove (line_, line_ + 10, sizeof (line_[0]) * 90);
      memmove (file_, file_ + 10, sizeof (file_[0]) * 90);
      index_ -= 10;
    }

    max_ = index_;

    strlcpy (file_[index_], view_->filename (), sizeof (file_[0]));
    line_[index_] = view_->topline ();

    if (index_ > 0)
      back_->activate ();
    else
      back_->deactivate ();

    forward_->deactivate ();
    window_->label (view_->title ());
  } else if (view_->filename ()) {
    strlcpy (file_[index_], view_->filename (), sizeof (file_[0]));
    line_[index_] = view_->topline ();
  };
}
void HelpDialog::cb_view_ (HelpView * o, void *v)
{
  ((HelpDialog *) (o->parent ()->user_data ()))->cb_view__i (o, v);
}

void HelpDialog::cb_Close_i (Button *, void *)
{
  window_->hide ();
}
void HelpDialog::cb_Close (Button * o, void *v)
{
  ((HelpDialog *) (o->parent ()->user_data ()))->cb_Close_i (o, v);
}

void HelpDialog::cb_back__i (Button *, void *)
{
  if (index_ > 0)
    index_--;

  if (index_ == 0)
    back_->deactivate ();

  forward_->activate ();

  if (strcmp (view_->filename (), file_[index_]) != 0)
    view_->load (file_[index_]);

  view_->topline (line_[index_]);
}
void HelpDialog::cb_back_ (Button * o, void *v)
{
  ((HelpDialog *) (o->parent ()->user_data ()))->cb_back__i (o, v);
}

void HelpDialog::cb_forward__i (Button *, void *)
{
  if (index_ < max_)
    index_++;

  if (index_ >= max_)
    forward_->deactivate ();

  back_->activate ();

  if (strcmp (view_->filename (), file_[index_]) != 0)
    view_->load (file_[index_]);

  view_->topline (line_[index_]);
}
void HelpDialog::cb_forward_ (Button * o, void *v)
{
  ((HelpDialog *) (o->parent ()->user_data ()))->cb_forward__i (o, v);
}

void HelpDialog::cb_smaller__i (Button *, void *)
{
  if (view_->textsize () > 8)
    view_->textsize (view_->textsize () - 2);

  if (view_->textsize () <= 8)
    smaller_->deactivate ();
  larger_->activate ();
}
void HelpDialog::cb_smaller_ (Button * o, void *v)
{
  ((HelpDialog *) (o->parent ()->user_data ()))->cb_smaller__i (o, v);
}

void HelpDialog::cb_larger__i (Button *, void *)
{
  if (view_->textsize () < 18)
    view_->textsize (view_->textsize () + 2);

  if (view_->textsize () >= 18)
    larger_->deactivate ();
  smaller_->activate ();
}
void HelpDialog::cb_larger_ (Button * o, void *v)
{
  ((HelpDialog *) (o->parent ()->user_data ()))->cb_larger__i (o, v);
}

HelpDialog::HelpDialog ()
{

  {
    DoubleBufferWindow *o = window_ =
      new DoubleBufferWindow (530, 385, "Help Dialog");
	o->begin();

    o->user_data ((void *) (this));
    {
      HelpView *o = view_ = new HelpView (10, 10, 510, 330);

      o->box (DOWN_BOX);
      o->callback ((Callback *) cb_view_);
      o->end ();
      Group::current ()->resizable (o);
    }
    {
      Button *o = new Button (425, 350, 95, 25, "Close");

      o->callback ((Callback *) cb_Close);
      o->label("Close");
    }
    {
      Button *o = back_ = new Button (365, 350, 25, 25, "@<-");

      o->tooltip ("Show the previous help page.");
      o->shortcut (0xff51);
      o->labelcolor (2);
      o->callback ((Callback *) cb_back_);
    }
    {
      Button *o = forward_ = new Button (395, 350, 25, 25, "@->");

      o->tooltip ("Show the next help page.");
      o->shortcut (0xff53);
      o->labelcolor (2);
      o->callback ((Callback *) cb_forward_);
    }
    {
      Button *o = smaller_ = new Button (305, 350, 25, 25, "F");

      o->tooltip ("Make the help text smaller.");
      o->labelsize (10);
      o->callback ((Callback *) cb_smaller_);
    }
    {
      Button *o = larger_ = new Button (335, 350, 25, 25, "F");

      o->tooltip ("Make the help text larger.");
      o->labelsize (16);
      o->callback ((Callback *) cb_larger_);
    }
    o->end ();
  }
  back_->deactivate ();
  forward_->deactivate ();

  index_ = -1;
  max_ = 0;

  //++ fl_register_images ();
}

HelpDialog::~HelpDialog ()
{
  delete window_;
}

int HelpDialog::h ()
{
  return (window_->h ());
}

void HelpDialog::hide ()
{
  window_->hide ();
}

void HelpDialog::load (const char *f)
{
  view_->set_changed ();
  view_->load (f);
  window_->label (view_->title ());
}

void HelpDialog::position (int xx, int yy)
{
  window_->position (xx, yy);
}

void HelpDialog::resize (int xx, int yy, int ww, int hh)
{
  window_->resize (xx, yy, ww, hh);
}

void HelpDialog::show ()
{
  window_->show ();
}

void HelpDialog::show (int argc, char **argv)
{
  window_->show (argc, argv);
}

void HelpDialog::textsize (int s)
{
  view_->textsize (s);

  if (s <= 8)
    smaller_->deactivate ();
  else
    smaller_->activate ();

  if (s >= 18)
    larger_->deactivate ();
  else
    larger_->activate ();
}

int HelpDialog::textsize ()
{
  return (view_->textsize ());
}

void HelpDialog::topline (const char *n)
{
  view_->topline (n);
}

void HelpDialog::topline (int n)
{
  view_->topline (n);
}

int HelpDialog::visible ()
{
  return (window_->visible ());
}

int HelpDialog::w ()
{
  return (window_->w ());
}

int HelpDialog::x ()
{
  return (window_->x ());
}

int HelpDialog::y ()
{
  return (window_->y ());
}