summaryrefslogtreecommitdiff
path: root/UDirDelete.pas
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2009-12-25 18:28:30 +0100
committerTomas Bzatek <tbzatek@users.sourceforge.net>2009-12-25 18:28:30 +0100
commit2e39205afb249626b24b1af2251297ff039a60ca (patch)
tree5fc31d531365120850be5aa3039f0c52f29a81c6 /UDirDelete.pas
parent52d72cf25a6bcff19e4a488102e3b7137bde0000 (diff)
downloadtuxcmd-2e39205afb249626b24b1af2251297ff039a60ca.tar.xz
Sanitize Overwrite and DirDelete dialog response values
Also respect localized button accelerators
Diffstat (limited to 'UDirDelete.pas')
-rw-r--r--UDirDelete.pas85
1 files changed, 52 insertions, 33 deletions
diff --git a/UDirDelete.pas b/UDirDelete.pas
index 4fa9b5c..8d22d42 100644
--- a/UDirDelete.pas
+++ b/UDirDelete.pas
@@ -24,27 +24,41 @@ interface
uses
SysUtils, Types, Classes, Variants, GTKControls, GTKForms, GTKStdCtrls, GTKExtCtrls, GTKConsts;
-type
- 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(Sel: integer);
- end;
+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 ULocale;
+uses gdk2, ULocale, UCoreUtils;
procedure TFDirDelete.FormCreate(Sender: TObject);
begin
WindowPosition := wpCenter;
- Caption := LANGRemoveDirectory;
+ Caption := '';
Label1 := TGTKLabel.Create(Self);
Label1.Caption := 'The directory /tmp is not empty!';
Label2 := TGTKLabel.Create(Self);
@@ -57,39 +71,44 @@ begin
OnKeyDown := FormKeyDown;
end;
-procedure TFDirDelete.AddButtons(Sel: integer);
+procedure TFDirDelete.AddButtons(ButtonSet: TFDirDeleteButtonSet);
begin
- case Sel of
- 1 : begin
- AddButton(LANGSkipButton_Caption, 1);
- AddButton(LANGSkipAllButton_Caption, 3);
- AddButton(LANGRetry, 2);
- AddButton(LANGCancel, 0);
+ 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;
- 2 : begin
- AddButton(LANGRetry, 1);
- AddButton(LANGCancel, 0);
+ DIR_DELETE_SET_SYMLINK_ERROR: begin
+ AddButton(LANGRetry, DIR_DELETE_RETRY);
+ AddButton(LANGCancel, DIR_DELETE_CANCEL);
end;
- 3 : begin
- AddButton(LANGSkipButton_Caption, 1);
- AddButton(LANGSkipAllButton_Caption, 3);
- AddButton(LANGIgnoreButton_Caption, 2);
- AddButton(LANGCancel, 0);
+ 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;
- 4 : begin
- AddButton(LANGDeleteButton_Caption, 1);
- AddButton(LANGAll, 2);
- AddButton(LANGSkipButton_Caption, 3);
- AddButton(LANGCancel, 0);
+ 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
- case Key of
- GDK_ESCAPE: ModalResult := TMessageButton(255);
- end;
+ 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;