# Global preference class definition for GDBtk.
# Copyright (C) 1998, 1999 Cygnus Solutions
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License (GPL) 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.


itcl::class GlobalPref {
  inherit ManagedWin ModalDialog

  private {
    variable _new
    variable _saved
    variable _icondirlist ""
    variable _original	;# Original font settings
    variable _size      ;# Array tracking spinint values
    variable _fonts	;# List of all available fonts for editing
    common tracing_labels
    common inited 0

    method _init {}
    method _init_var {}
    method _build_win {}
    method _make_font_item {f name label font_list}
    method _resize_font_item_height {}
    method _change_icons {w args}
    method _change_font {font stupid implementation}
    method _change_size {direction font}
    method _ok {}
    method _apply {{deleteMe 0}}
    method _cancel {}
    method cancel {}
    method _toggle_tracing {win}
  }

  public {
    method constructor {args}
    method destructor {}
  }
}
