# IPC preferences dialog class definition for Insight.
# 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 IPCPref {
  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 _save {}
  }

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