Fixed shortcut bug in the settings dialog (couldn't set hotkeys to BkSp etc.)

Added "Reset" button to shortcuts page
This commit is contained in:
Christian Hammacher 2005-09-05 22:33:45 +00:00
parent e90364c17b
commit 81ab33d794
8 changed files with 109 additions and 26 deletions

View File

@ -115,7 +115,7 @@ AutoIncBuild=1
MajorVer=1 MajorVer=1
MinorVer=1 MinorVer=1
Release=0 Release=0
Build=8 Build=9
Debug=0 Debug=0
PreRelease=0 PreRelease=0
Special=0 Special=0
@ -126,7 +126,7 @@ CodePage=1252
[Version Info Keys] [Version Info Keys]
CompanyName=AMX Mod X Dev Team CompanyName=AMX Mod X Dev Team
FileDescription= FileDescription=
FileVersion=1.1.0.8 FileVersion=1.1.0.9
InternalName= InternalName=
LegalCopyright= LegalCopyright=
LegalTrademarks= LegalTrademarks=

Binary file not shown.

Binary file not shown.

View File

@ -79,6 +79,7 @@ var lInvalidFile: String;
lCloseCaption: String; lCloseCaption: String;
lNoCPP: String; lNoCPP: String;
lInvalidChannel: String; lInvalidChannel: String;
lResetShortcuts: String;
procedure ResetToEnglish; procedure ResetToEnglish;
@ -161,6 +162,7 @@ begin
lCloseCaption := 'Close'; lCloseCaption := 'Close';
lNoCPP := 'Sorry, the C++ IDE is not enabled.'; lNoCPP := 'Sorry, the C++ IDE is not enabled.';
lInvalidChannel := 'Invalid channel.'; lInvalidChannel := 'Invalid channel.';
lResetShortcuts := 'Warning: The shortcut reset would immediately take affect. Reset anyway?';
end; end;
end. end.

View File

@ -903,7 +903,6 @@ begin
end; end;
procedure TDocCollection.Activate(Document: TDocument; RestoreCaret: Boolean; SaveLastDoc: Boolean = True); procedure TDocCollection.Activate(Document: TDocument; RestoreCaret: Boolean; SaveLastDoc: Boolean = True);
var i: integer;
begin begin
if not Plugin_DocChange(Document.Index, Document.FileName, Document.Highlighter, RestoreCaret, True) then begin if not Plugin_DocChange(Document.Index, Document.FileName, Document.Highlighter, RestoreCaret, True) then begin
Started := False; Started := False;

View File

@ -729,6 +729,7 @@ end;
procedure TfrmMain.FormCreate(Sender: TObject); procedure TfrmMain.FormCreate(Sender: TObject);
begin begin
end; end;
{ <- Settings | Toolbars -> } { <- Settings | Toolbars -> }

View File

@ -59,7 +59,7 @@ object frmSettings: TfrmSettings
Top = 0 Top = 0
Width = 353 Width = 353
Height = 260 Height = 260
ActivePage = jspPlugIns ActivePage = jspShortcuts
PropagateEnable = False PropagateEnable = False
Align = alClient Align = alClient
OnChange = jplSettingsChange OnChange = jplSettingsChange
@ -105,7 +105,7 @@ object frmSettings: TfrmSettings
Height = 21 Height = 21
Style = csDropDownList Style = csDropDownList
Color = clWindow Color = clWindow
ItemHeight = 0 ItemHeight = 13
TabOrder = 0 TabOrder = 0
ItemIndex = -1 ItemIndex = -1
OnChange = cboLanguageChange OnChange = cboLanguageChange
@ -662,20 +662,10 @@ object frmSettings: TfrmSettings
OnClick = lvShortcutsClick OnClick = lvShortcutsClick
OnSelectItem = lvShortcutsSelectItem OnSelectItem = lvShortcutsSelectItem
end end
object hkShortcut: THotKey
Left = 8
Top = 206
Width = 247
Height = 19
Enabled = False
InvalidKeys = []
Modifiers = []
TabOrder = 1
end
object cmdApply: TFlatButton object cmdApply: TFlatButton
Left = 263 Left = 173
Top = 205 Top = 205
Width = 85 Width = 84
Height = 20 Height = 20
ColorFocused = 16245198 ColorFocused = 16245198
ColorDown = 16245198 ColorDown = 16245198
@ -683,9 +673,34 @@ object frmSettings: TfrmSettings
ColorShadow = 8623776 ColorShadow = 8623776
Caption = 'Apply' Caption = 'Apply'
Enabled = False Enabled = False
TabOrder = 2 TabOrder = 1
OnClick = cmdApplyClick OnClick = cmdApplyClick
end end
object cmdResetShortcuts: TFlatButton
Left = 261
Top = 205
Width = 85
Height = 20
ColorFocused = 16245198
ColorDown = 16245198
ColorHighLight = 8623776
ColorShadow = 8623776
Caption = 'Reset'
TabOrder = 2
OnClick = cmdResetShortcutsClick
end
object txtShortcut: TFlatEdit
Left = 8
Top = 206
Width = 159
Height = 19
ColorFlat = clWhite
TabOrder = 3
Text = 'None'
OnKeyDown = txtShortcutKeyDown
OnKeyPress = txtShortcutKeyPress
OnKeyUp = txtShortcutKeyUp
end
end end
object jspCodeSnippets: TJvStandardPage object jspCodeSnippets: TJvStandardPage
Left = 0 Left = 0
@ -777,9 +792,9 @@ object frmSettings: TfrmSettings
object lblPAWN: TLabel object lblPAWN: TLabel
Left = 8 Left = 8
Top = 12 Top = 12
Width = 79 Width = 75
Height = 13 Height = 13
Caption = 'PAWN-Compiler:' Caption = 'Pawn-Compiler:'
end end
object lblCPPCompiler: TLabel object lblCPPCompiler: TLabel
Left = 8 Left = 8
@ -1657,11 +1672,11 @@ object frmSettings: TfrmSettings
end end
object odBrowse: TOpenDialog object odBrowse: TOpenDialog
Filter = 'Executables (*.exe)|*.exe|All files (*.*)|*.*' Filter = 'Executables (*.exe)|*.exe|All files (*.*)|*.*'
Left = 441 Left = 455
Top = 2 Top = 2
end end
object ilImages: TImageList object ilImages: TImageList
Left = 410 Left = 424
Top = 2 Top = 2
Bitmap = { Bitmap = {
494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600

View File

@ -73,7 +73,6 @@ type
cboCodeFolding: TFlatComboBox; cboCodeFolding: TFlatComboBox;
lblCodeFoldingStyle: TLabel; lblCodeFoldingStyle: TLabel;
lvShortcuts: TListView; lvShortcuts: TListView;
hkShortcut: THotKey;
cmdApply: TFlatButton; cmdApply: TFlatButton;
shpShortcuts: TShape; shpShortcuts: TShape;
ftcCodeSnippets: TFlatTabControl; ftcCodeSnippets: TFlatTabControl;
@ -184,6 +183,8 @@ type
txtAMXXDir: TFlatEdit; txtAMXXDir: TFlatEdit;
lblAMXXDir: TLabel; lblAMXXDir: TLabel;
cmdBrowseAMXXDir: TFlatButton; cmdBrowseAMXXDir: TFlatButton;
cmdResetShortcuts: TFlatButton;
txtShortcut: TFlatEdit;
procedure jplSettingsChange(Sender: TObject); procedure jplSettingsChange(Sender: TObject);
procedure txtLinesChange(Sender: TObject); procedure txtLinesChange(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
@ -243,6 +244,12 @@ type
procedure cmdLoadClick(Sender: TObject); procedure cmdLoadClick(Sender: TObject);
procedure cmdRemoveClick(Sender: TObject); procedure cmdRemoveClick(Sender: TObject);
procedure cmdBrowseAMXXDirClick(Sender: TObject); procedure cmdBrowseAMXXDirClick(Sender: TObject);
procedure txtShortcutKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure txtShortcutKeyPress(Sender: TObject; var Key: Char);
procedure cmdResetShortcutsClick(Sender: TObject);
procedure txtShortcutKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
public public
Foreground, Background: TColor; Foreground, Background: TColor;
CaretFore, CaretBack: TColor; CaretFore, CaretBack: TColor;
@ -485,9 +492,9 @@ end;
procedure TfrmSettings.lvShortcutsClick(Sender: TObject); procedure TfrmSettings.lvShortcutsClick(Sender: TObject);
begin begin
cmdApply.Enabled := Assigned(lvShortcuts.Selected); cmdApply.Enabled := Assigned(lvShortcuts.Selected);
hkShortcut.Enabled := cmdApply.Enabled; txtShortcut.Enabled := cmdApply.Enabled;
if cmdApply.Enabled then if cmdApply.Enabled then
hkShortcut.HotKey := TextToShortCut(lvShortcuts.Selected.Subitems[0]); txtShortcut.Text := lvShortcuts.Selected.Subitems[0];
end; end;
procedure TfrmSettings.trvSettingsChanging(Sender: TObject; procedure TfrmSettings.trvSettingsChanging(Sender: TObject;
@ -536,7 +543,7 @@ end;
procedure TfrmSettings.cmdApplyClick(Sender: TObject); procedure TfrmSettings.cmdApplyClick(Sender: TObject);
begin begin
if Assigned(lvShortcuts.Selected) then if Assigned(lvShortcuts.Selected) then
lvShortcuts.Selected.SubItems[0] := ShortcutToText(hkShortcut.HotKey); lvShortcuts.Selected.SubItems[0] := txtShortcut.Text;
end; end;
procedure TfrmSettings.cmdSelectForegroundClick(Sender: TObject); procedure TfrmSettings.cmdSelectForegroundClick(Sender: TObject);
@ -946,4 +953,63 @@ begin
txtAMXXDir.Text := eStr; txtAMXXDir.Text := eStr;
end; end;
procedure TfrmSettings.txtShortcutKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_SHIFT) or (Key = VK_CONTROL) or (Key = VK_MENU) then begin
txtShortcut.Clear;
if ssShift in Shift then
txtShortcut.Text := txtShortcut.Text + 'Shift+';
if ssCtrl in Shift then
txtShortcut.Text := txtShortcut.Text + 'Ctrl+';
if ssAlt in Shift then
txtShortcut.Text := txtShortcut.Text + 'Alt+';
Key := 0;
end
else
txtShortcut.Text := ShortcutToText(Shortcut(Key, Shift));
end;
procedure TfrmSettings.txtShortcutKeyPress(Sender: TObject; var Key: Char);
begin
Key := #0;
end;
procedure TfrmSettings.cmdResetShortcutsClick(Sender: TObject);
var i: integer;
Item: TListItem;
KeyCommand: TSciKeyCommand;
Ident: String;
begin
if MessageBox(Handle, PChar(lResetShortcuts), PChar(Application.Title), MB_ICONQUESTION + MB_YESNO) = mrYes then begin
frmMain.sciEditor.KeyCommands.ResetDefaultCommands;
frmSettings.lvShortcuts.Items.BeginUpdate;
try
frmSettings.lvShortcuts.Clear;
for i := 0 to frmMain.sciEditor.KeyCommands.Count - 1 do begin
KeyCommand := frmMain.sciEditor.KeyCommands.Items[i] as TSciKeyCommand;
Ident := 'Unknown';
IntToIdent(KeyCommand.Command, Ident, Sci_KeyboardCommandMap);
if Ident <> 'No Command' then begin // Important for Control Chars, the user mustn't change the values for it...
Item := frmSettings.lvShortcuts.Items.Add;
Item.Caption:= Ident;
Item.SubItems.Add(ShortCutToText(KeyCommand.ShortCut));
Item.Data := KeyCommand;
end;
end;
finally
frmSettings.lvShortcuts.Items.EndUpdate;
end;
end;
end;
procedure TfrmSettings.txtShortcutKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_SHIFT) or (Key = VK_CONTROL) or (Key = VK_MENU) then begin
if txtShortcut.Text[Length(txtShortcut.Text)] = '+' then
txtShortcut.Text := 'None';
end;
end;
end. end.