summaryrefslogtreecommitdiff
path: root/UOverwrite.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 /UOverwrite.pas
parent52d72cf25a6bcff19e4a488102e3b7137bde0000 (diff)
downloadtuxcmd-2e39205afb249626b24b1af2251297ff039a60ca.tar.xz
Sanitize Overwrite and DirDelete dialog response values
Also respect localized button accelerators
Diffstat (limited to 'UOverwrite.pas')
-rw-r--r--UOverwrite.pas61
1 files changed, 34 insertions, 27 deletions
diff --git a/UOverwrite.pas b/UOverwrite.pas
index b35a197..78f057b 100644
--- a/UOverwrite.pas
+++ b/UOverwrite.pas
@@ -22,7 +22,16 @@ unit UOverwrite;
interface
uses
- SysUtils, Types, Classes, Variants, GTKControls, GTKForms, GTKStdCtrls, GTKExtCtrls, GTKConsts;
+ gtk2, SysUtils, Types, Classes, Variants, GTKControls, GTKForms, GTKStdCtrls, GTKExtCtrls, GTKConsts;
+
+const OVERWRITE_CANCEL = 0;
+ OVERWRITE_OVERWRITE = 1;
+ OVERWRITE_OVERWRITE_ALL = 2;
+ OVERWRITE_SKIP = 3;
+ OVERWRITE_OVERWRITE_ALL_OLDER = 4;
+ OVERWRITE_SKIP_ALL = 5;
+ OVERWRITE_RENAME = 6;
+ OVERWRITE_APPEND = 7;
type
TFOverwrite = class(TGTKDialog)
@@ -35,7 +44,7 @@ type
procedure ButtonClick(Sender: TObject);
public
RenameStr, SourceFile, DestFile: string;
- procedure AddButtons(Sel: integer);
+ procedure AddButtons(ShowAppend: boolean);
procedure DoRename;
procedure DoAppend;
end;
@@ -45,7 +54,7 @@ var
implementation
-uses ULocale, UCopyMove;
+uses gdk2, ULocale, UCopyMove, UCoreUtils;
procedure TFOverwrite.FormCreate(Sender: TObject);
@@ -103,19 +112,18 @@ end;
procedure TFOverwrite.FormKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean);
begin
- case Key of
- GDK_O : ModalResult := TMessageButton(1);
- GDK_A : ModalResult := TMessageButton(2);
- GDK_S : ModalResult := TMessageButton(3);
- GDK_C, GDK_ESCAPE : ModalResult := TMessageButton(4);
- GDK_D : ModalResult := TMessageButton(5);
- GDK_K : ModalResult := TMessageButton(6);
- GDK_R : DoRename;
- GDK_P : DoAppend;
- end;
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGCancel))))) then ModalResult := TMessageButton(OVERWRITE_CANCEL) else
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGOverwriteButton_Caption))))) then ModalResult := TMessageButton(OVERWRITE_OVERWRITE) else
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGOverwriteAllButton_Caption))))) then ModalResult := TMessageButton(OVERWRITE_OVERWRITE_ALL) else
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGSkipButton_Caption))))) then ModalResult := TMessageButton(OVERWRITE_SKIP) else
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGOverwriteAllOlderButton_Caption))))) then ModalResult := TMessageButton(OVERWRITE_OVERWRITE_ALL_OLDER) else
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGSkipAllButton_Caption))))) then ModalResult := TMessageButton(OVERWRITE_SKIP_ALL) else
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGRenameButton_Caption))))) then DoRename else
+ if (Key = gdk_keyval_to_lower(gdk_keyval_from_name(PChar(ExtractAccelerator(LANGAppendButton_Caption))))) then DoAppend else
+ if (Key = GDK_ESCAPE) then ModalResult := TMessageButton(OVERWRITE_CANCEL);
end;
-procedure TFOverwrite.AddButtons(Sel: integer);
+procedure TFOverwrite.AddButtons(ShowAppend: boolean);
begin
ButtonTable.AddControl(0, 0, 1, 1, OverwriteButton, 0, 0);
ButtonTable.AddControl(1, 0, 1, 1, OverwriteAllButton, 0, 0);
@@ -124,19 +132,18 @@ begin
ButtonTable.AddControl(1, 1, 1, 1, OverwriteAllOlderButton, 0, 0);
ButtonTable.AddControl(2, 1, 1, 1, SkipAllButton, 0, 0);
ButtonTable.AddControl(0, 2, 1, 1, RenameButton, 0, 0);
- case Sel of
- 2 : ButtonTable.AddControl(1, 2, 1, 1, AppendButton, 0, 0);
- end;
+ if ShowAppend then
+ ButtonTable.AddControl(1, 2, 1, 1, AppendButton, 0, 0);
end;
procedure TFOverwrite.ButtonClick(Sender: TObject);
begin
- if Sender = OverwriteButton then ModalResult := TMessageButton(1) else
- if Sender = OverwriteAllButton then ModalResult := TMessageButton(2) else
- if Sender = SkipButton then ModalResult := TMessageButton(3) else
- if Sender = CancelButton then ModalResult := TMessageButton(4) else
- if Sender = OverwriteAllOlderButton then ModalResult := TMessageButton(5) else
- if Sender = SkipAllButton then ModalResult := TMessageButton(6) else
+ if Sender = OverwriteButton then ModalResult := TMessageButton(OVERWRITE_OVERWRITE) else
+ if Sender = OverwriteAllButton then ModalResult := TMessageButton(OVERWRITE_OVERWRITE_ALL) else
+ if Sender = SkipButton then ModalResult := TMessageButton(OVERWRITE_SKIP) else
+ if Sender = CancelButton then ModalResult := TMessageButton(OVERWRITE_CANCEL) else
+ if Sender = OverwriteAllOlderButton then ModalResult := TMessageButton(OVERWRITE_OVERWRITE_ALL_OLDER) else
+ if Sender = SkipAllButton then ModalResult := TMessageButton(OVERWRITE_SKIP_ALL) else
if Sender = RenameButton then DoRename else
if Sender = AppendButton then DoAppend;
end;
@@ -149,10 +156,10 @@ begin
AFCopyMove.Entry.Text := RenameStr;
AFCopyMove.Caption := LANGRename;
AFCopyMove.Label1.Caption := Format(LANGRenameFile, [RenameStr]);
- AFCopyMove.Entry.SelectRegion(0, Length(AFCopyMove.Entry.Text));
+ AFCopyMove.Entry.SelectAll;
if AFCopyMove.Run = mbOK then begin
RenameStr := AFCopyMove.Entry.Text;
- ModalResult := TMessageButton(7);
+ ModalResult := TMessageButton(OVERWRITE_RENAME);
end;
finally
AFCopyMove.Free;
@@ -161,8 +168,8 @@ end;
procedure TFOverwrite.DoAppend;
begin
- if Application.MessageBox(Format(LANGAppendQuestion, [SourceFile, DestFile]), [mbYes, mbNo], mbQuestion, mbNone, mbNo) = mbYes
- then ModalResult := TMessageButton(8);
+ if Application.MessageBox(PGtkWindow(FWidget), Format(LANGAppendQuestion, [StrToUTF8(ExtractFileName(SourceFile)), StrToUTF8(ExtractFileName(DestFile))]), [mbYes, mbNo], mbQuestion, mbNone, mbNo) = mbYes
+ then ModalResult := TMessageButton(OVERWRITE_APPEND);
end;