# Color Scheme preferences dialog class definition for GDBtk.
# Copyright (C) 2004, Red Hat Inc.
#
# 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 CSPref {
  inherit ManagedWin ModalDialog

  private {
    variable _saved	;# These are the saved values...
    variable _new	;# These are the changed values
    variable w
    method _apply {}
    method _build_win {}
    method _cancel {}
    method _init_var {}
    method _pick {color win num}
    method _save {}
    method _setcolors {}
  }

  public {
    method constructor {args}
    method reconfig {}
  }
}

