(* Tux Commander - UDirDelete - Question dialog and related funcions Copyright (C) 2004 Tomas Bzatek Check for updates on tuxcmd.sourceforge.net 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 *) unit UDirDelete; interface uses SysUtils, Classes, Variants, GTKControls, GTKForms, GTKStdCtrls, GTKConsts; const DIR_DELETE_CANCEL = 0; DIR_DELETE_DELETE = 1; DIR_DELETE_ALL = 2; DIR_DELETE_RETRY = 3; DIR_DELETE_SKIP = 4; DIR_DELETE_SKIP_ALL = 5; DIR_DELETE_IGNORE = 6; type TFDirDeleteButtonSet = (DIR_DELETE_SET_DELETE_ERROR, DIR_DELETE_SET_SYMLINK_ERROR, DIR_DELETE_SET_COPY_ERROR, DIR_DELETE_SET_DELETE_NON_EMPTY); TFDirDelete = class(TGTKDialog) Label1, Label2, Label3: TGTKLabel; procedure FormCreate(Sender: TObject); override; procedure FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean); public procedure AddButtons(ButtonSet: TFDirDeleteButtonSet); end; var FDirDelete: TFDirDelete; implementation uses gdk2, ULocale, UCoreUtils; procedure TFDirDelete.FormCreate(Sender: TObject); begin WindowPosition := wpCenter; Caption := ''; Label1 := TGTKLabel.Create(Self); Label1.UseMarkup := True; Label2 := TGTKLabel.Create(Self); Label3 := TGTKLabel.Create(Self); Label3.UseMarkup := True; Label3.Visible := False; ClientArea.AddControlEx(Label1, True, True, 0); ClientArea.AddControlEx(Label2, True, True, 0); ClientArea.AddControlEx(Label3, True, True, 0); OnKeyDown := FormKeyDown; end; procedure TFDirDelete.AddButtons(ButtonSet: TFDirDeleteButtonSet); begin case ButtonSet of DIR_DELETE_SET_DELETE_ERROR: begin AddButton(LANGSkipButton_Caption, DIR_DELETE_SKIP); AddButton(LANGSkipAllButton_Caption, DIR_DELETE_SKIP_ALL); AddButton(LANGRetry, DIR_DELETE_RETRY); AddButton(LANGCancel, DIR_DELETE_CANCEL); end; DIR_DELETE_SET_SYMLINK_ERROR: begin AddButton(LANGRetry, DIR_DELETE_RETRY); AddButton(LANGCancel, DIR_DELETE_CANCEL); end; DIR_DELETE_SET_COPY_ERROR: begin AddButton(LANGSkipButton_Caption, DIR_DELETE_SKIP); AddButton(LANGSkipAllButton_Caption, DIR_DELETE_SKIP_ALL); AddButton(LANGIgnoreButton_Caption, DIR_DELETE_IGNORE); AddButton(LANGCancel, DIR_DELETE_CANCEL); end; DIR_DELETE_SET_DELETE_NON_EMPTY: begin AddButton(LANGDeleteButton_Caption, DIR_DELETE_DELETE); AddButton(LANGAll, DIR_DELETE_ALL); AddButton(LANGSkipButton_Caption, DIR_DELETE_SKIP); AddButton(LANGCancel, DIR_DELETE_CANCEL); end; end; end; procedure TFDirDelete.FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean); begin if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGSkipButton_Caption))))) then ModalResult := TMessageButton(DIR_DELETE_SKIP) else if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGSkipAllButton_Caption))))) then ModalResult := TMessageButton(DIR_DELETE_SKIP_ALL) else if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGRetry))))) then ModalResult := TMessageButton(DIR_DELETE_RETRY) else if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGCancel))))) then ModalResult := TMessageButton(DIR_DELETE_CANCEL) else if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGIgnoreButton_Caption))))) then ModalResult := TMessageButton(DIR_DELETE_IGNORE) else if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGDeleteButton_Caption))))) then ModalResult := TMessageButton(DIR_DELETE_DELETE) else if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGAll))))) then ModalResult := TMessageButton(DIR_DELETE_ALL) else if (Key = GDK_ESCAPE) then ModalResult := TMessageButton(DIR_DELETE_CANCEL); end; end.