1 {
2 ***************************************************************************
3 * *
4 * This source is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This code is distributed in the hope that it will be useful, but *
10 * WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
12 * General Public License for more details. *
13 * *
14 * A copy of the GNU General Public License is available on the World *
15 * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
16 * obtain it by writing to the Free Software Foundation, *
17 * Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
18 * *
19 ***************************************************************************
20 }
21 unit editor_mouseaction_options;
22
23 {$mode objfpc}{$H+}
24
25 interface
26
27 uses
28 sysutils, math,
29 // LCL
30 LCLProc, StdCtrls, ExtCtrls, Classes, Forms, ComCtrls,
31 // LazControls
32 DividerBevel,
33 // SynEdit
34 SynEdit, SynEditTypes,
35 // IdeIntf
36 IDEOptionsIntf, IDEOptEditorIntf,
37 // IDE
38 EditorOptions, LazarusIDEStrConsts, editor_mouseaction_options_advanced;
39
40 type
41
42 { TEditorMouseOptionsFrame }
43
44 TEditorMouseOptionsFrame = class(TAbstractIDEOptionsEditor)
45 chkGutterTextLines: TCheckBox;
46 dropWheelHoriz: TComboBox;
47 dropWheelAltHoriz: TComboBox;
48 dropWheelAltCtrlHoriz: TComboBox;
49 dropWheelCtrlHoriz: TComboBox;
50 dropWheelShiftHoriz: TComboBox;
51 dropWheelShiftAltHoriz: TComboBox;
52 dropWheelShiftAltCtrlHoriz: TComboBox;
53 dropWheelShiftCtrlHoriz: TComboBox;
54 GutterLeftRadio3: TRadioButton;
55 lblWheel: TLabel;
56 lblWheelHoriz: TLabel;
57 lblWheelAlt: TLabel;
58 lblWheelAltHoriz: TLabel;
59 lblWheelAltCtrlHoriz: TLabel;
60 lblWheelCtrl: TLabel;
61 lblWheelCtrlHoriz: TLabel;
62 lblWheelShift: TLabel;
63 lblWheelAltCtrl: TLabel;
64 lblWheelShiftHoriz: TLabel;
65 lblWheelShiftAlt: TLabel;
66 lblWheelShiftAltHoriz: TLabel;
67 lblWheelShiftAltCtrlHoriz: TLabel;
68 lblWheelShiftCtrl: TLabel;
69 lblWheelShiftAltCtrl: TLabel;
70 dropWheel: TComboBox;
71 dropWheelAlt: TComboBox;
72 dropWheelCtrl: TComboBox;
73 dropWheelShift: TComboBox;
74 dropWheelAltCtrl: TComboBox;
75 dropWheelShiftAlt: TComboBox;
76 dropWheelShiftCtrl: TComboBox;
77 dropWheelShiftAltCtrl: TComboBox;
78 lblMiddle: TLabel;
79 lblMiddleAlt: TLabel;
80 lblMiddleCtrl: TLabel;
81 lblMiddleShift: TLabel;
82 lblMiddleAltCtrl: TLabel;
83 lblMiddleShiftAlt: TLabel;
84 lblMiddleShiftCtrl: TLabel;
85 lblMiddleShiftAltCtrl: TLabel;
86 dropMiddle: TComboBox;
87 dropMiddleAlt: TComboBox;
88 dropMiddleCtrl: TComboBox;
89 dropMiddleShift: TComboBox;
90 dropMiddleAltCtrl: TComboBox;
91 dropMiddleShiftAlt: TComboBox;
92 dropMiddleShiftCtrl: TComboBox;
93 dropMiddleShiftAltCtrl: TComboBox;
94 lblRight: TLabel;
95 lblRightAlt: TLabel;
96 lblRightCtrl: TLabel;
97 lblRightShift: TLabel;
98 lblRightAltCtrl: TLabel;
99 lblRightShiftAlt: TLabel;
100 lblRightShiftCtrl: TLabel;
101 lblRightShiftAltCtrl: TLabel;
102 dropRight: TComboBox;
103 dropRightAlt: TComboBox;
104 dropRightCtrl: TComboBox;
105 dropRightShift: TComboBox;
106 dropRightAltCtrl: TComboBox;
107 dropRightShiftAlt: TComboBox;
108 dropRightShiftCtrl: TComboBox;
109 dropRightShiftAltCtrl: TComboBox;
110 lblExtra1: TLabel;
111 lblExtra1Alt: TLabel;
112 lblExtra1Ctrl: TLabel;
113 lblExtra1Shift: TLabel;
114 lblExtra1AltCtrl: TLabel;
115 lblExtra1ShiftAlt: TLabel;
116 lblExtra1ShiftCtrl: TLabel;
117 lblExtra1ShiftAltCtrl: TLabel;
118 dropExtra1: TComboBox;
119 dropExtra1Alt: TComboBox;
120 dropExtra1Ctrl: TComboBox;
121 dropExtra1Shift: TComboBox;
122 dropExtra1AltCtrl: TComboBox;
123 dropExtra1ShiftAlt: TComboBox;
124 dropExtra1ShiftCtrl: TComboBox;
125 dropExtra1ShiftAltCtrl: TComboBox;
126 lblExtra2: TLabel;
127 lblExtra2Alt: TLabel;
128 lblExtra2Ctrl: TLabel;
129 lblExtra2Shift: TLabel;
130 lblExtra2AltCtrl: TLabel;
131 lblExtra2ShiftAlt: TLabel;
132 lblExtra2ShiftCtrl: TLabel;
133 lblExtra2ShiftAltCtrl: TLabel;
134 dropExtra2: TComboBox;
135 dropExtra2Alt: TComboBox;
136 dropExtra2Ctrl: TComboBox;
137 dropExtra2Shift: TComboBox;
138 dropExtra2AltCtrl: TComboBox;
139 dropExtra2ShiftAlt: TComboBox;
140 dropExtra2ShiftCtrl: TComboBox;
141 dropExtra2ShiftAltCtrl: TComboBox;
142 lblLeftDouble: TLabel;
143 lblLeftTriple: TLabel;
144 lblLeftQuad: TLabel;
145 lblLeftDoubleShift: TLabel;
146 lblLeftDoubleAlt: TLabel;
147 lblLeftDoubleCtrl: TLabel;
148 dropLeftDouble: TComboBox;
149 dropLeftTriple: TComboBox;
150 dropLeftQuad: TComboBox;
151 dropLeftShiftDouble: TComboBox;
152 dropLeftAltDouble: TComboBox;
153 dropLeftCtrlDouble: TComboBox;
154 lblWheelShiftCtrlHoriz: TLabel;
155 PageHorizWheel: TPage;
156 PageExtra2: TPage;
157 PageExtra1: TPage;
158 PageRight: TPage;
159 ScrollBoxExtra2: TScrollBox;
160 ScrollBoxExtra1: TScrollBox;
161 ScrollBoxRight: TScrollBox;
162 ScrollBoxWheelHoriz: TScrollBox;
163 ShiftLeftLabel: TLabel;
164 AltCtrlLeftLabel: TLabel;
165 CtrLLeftLabel: TLabel;
166 ShiftCtrlLeftLabel: TLabel;
167 ShiftAltLeftLabel: TLabel;
168 ShiftAltCtrlLeftLabel: TLabel;
169 BottomDivider: TBevel;
170 chkPredefinedScheme: TCheckBox;
171 AltLeftLabel: TLabel;
172 dropAltLeft: TComboBox;
173 dropAltCtrlLeft: TComboBox;
174 dropShiftAltLeft: TComboBox;
175 dropShiftCtrlLeft: TComboBox;
176 dropShiftAltCtrlLeft: TComboBox;
177 dropShiftLeft: TComboBox;
178 PageLeftDbl: TPage;
179 PageLeftMod: TPage;
180 ScrollBoxMiddle: TScrollBox;
181 ScrollBoxWheel: TScrollBox;
182 ScrollBoxLeftMod: TScrollBox;
183 ScrollBoxLeftDbl: TScrollBox;
184 TextDividerLabel: TDividerBevel;
185 GutterDividerLabel: TDividerBevel;
186 GenericDividerLabel: TDividerBevel;
187 dropCtrlLeft: TComboBox;
188 DiffLabel: TLabel;
189 dropUserSchemes: TComboBox;
190 GutterLeftRadio1: TRadioButton;
191 GutterLeftRadio2: TRadioButton;
192 HideMouseCheckBox: TCheckBox;
193 Notebook1: TNotebook;
194 PageMiddle: TPage;
195 PageWheel: TPage;
196 ToolBar1: TToolBar;
197 ToolBtnRight: TToolButton;
198 ToolBtnExtra1: TToolButton;
199 ToolBtnExtra2: TToolButton;
200 ToolBtnMiddle: TToolButton;
201 ToolBtnWheel: TToolButton;
202 ToolBtnLeftMod: TToolButton;
203 ToolBtnLeftMulti: TToolButton;
204 pnlBottom: TPanel;
205 PanelGutter: TPanel;
206 PanelTextCheckBox: TPanel;
207 pnlAllGutter: TPanel;
208 pnlAllText: TPanel;
209 pnlUserSchemes: TPanel;
210 ResetAllButton: TButton;
211 ResetGutterButton: TButton;
212 ResetTextButton: TButton;
213 RightMoveCaret: TCheckBox;
214 TextDrag: TCheckBox;
215 RadioGroup1: TRadioGroup;
216 TextLeft: TCheckGroup;
217 TextMiddle: TRadioGroup;
218 GutterLeft: TRadioGroup;
219 ToolBtnHorizWheel: TToolButton;
220 WarnLabel: TLabel;
221 procedure CheckOrRadioChange(Sender: TObject);
222 procedure chkPredefinedSchemeChange(Sender: TObject);
223 procedure dropUserSchemesChange(Sender: TObject);
224 procedure dropUserSchemesKeyDown(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState);
225 procedure ResetGutterButtonClick(Sender: TObject);
226 procedure ResetTextButtonClick(Sender: TObject);
227 procedure ResetAllButtonClick(Sender: TObject);
228 procedure ToolBtnMiddleClick(Sender: TObject);
229 private
230 FDialog: TAbstractOptionsEditorDialog;
231 FOptions: TAbstractIDEOptions;
232 FTempMouseSettings: TEditorMouseOptions;
233 FInClickHandler: Integer;
234 procedure UpdateButtons;
IsUserSchemeChangednull235 function IsUserSchemeChanged: Boolean;
IsTextSettingsChangednull236 function IsTextSettingsChanged: Boolean;
IsGutterSettingsChangednull237 function IsGutterSettingsChanged: Boolean;
238 procedure SaveUserScheme;
239 procedure SaveTextSettings;
240 procedure SaveGutterSettings;
241 protected
242 procedure SetVisible(Value: Boolean); override;
IdxToDoubleMouseOptButtonActionnull243 function IdxToDoubleMouseOptButtonAction(AIdx: integer): TMouseOptButtonAction;
244 procedure CheckForShiftChange(Sender: TObject);
245 public
246 //constructor Create(AOwner: TComponent); override;
247 //destructor Destroy; override;
GetTitlenull248 function GetTitle: String; override;
249 procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
250 procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
251 procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
SupportedOptionsClassnull252 class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
DefaultCollapseChildNodesnull253 class function DefaultCollapseChildNodes: Boolean; override;
254 end;
255
256 implementation
257
258 {$R *.lfm}
259
260 { TEditorMouseOptionsFrame }
261
262 procedure TEditorMouseOptionsFrame.CheckOrRadioChange(Sender: TObject);
263 begin
264 if FInClickHandler > 0 then exit;
265 Inc(FInClickHandler);
266 try
267 if FTempMouseSettings.IsPresetEqualToMouseActions then begin
268 // write settings to conf (and reset conf to settings)
269 SaveGutterSettings;
270 SaveTextSettings;
271 end;
272 UpdateButtons;
273 finally
274 Dec(FInClickHandler);
275 end;
276 if Sender <> nil then
277 CheckForShiftChange(Sender);
278 end;
279
280 procedure TEditorMouseOptionsFrame.UpdateButtons;
281 begin
282 if FTempMouseSettings.IsPresetEqualToMouseActions then begin
283 ResetTextButton.Visible := False;
284 ResetGutterButton.Visible := False;
285 ResetAllButton.Visible := False;
286 WarnLabel.Visible := False;
287 DiffLabel.Visible := False;
288 BottomDivider.Visible := False;
289 end
290 else begin
291 ResetTextButton.Visible := (FTempMouseSettings.SelectedUserScheme = '') and IsTextSettingsChanged;
292 ResetGutterButton.Visible := (FTempMouseSettings.SelectedUserScheme = '') and IsGutterSettingsChanged;
293 ResetAllButton.Visible := True; // ResetTextButton.Enabled or ResetGutterButton.Enabled;
294 WarnLabel.Visible := (IsTextSettingsChanged or IsGutterSettingsChanged) and
295 ( (FTempMouseSettings.SelectedUserScheme = '') or
296 IsUserSchemeChanged );
297 DiffLabel.Visible := (not WarnLabel.Visible);
298 BottomDivider.Visible := True;
299 end;
300 end;
301
302 procedure TEditorMouseOptionsFrame.dropUserSchemesChange(Sender: TObject);
303 begin
304 if Sender <> nil then begin;
305 chkPredefinedScheme.Checked := dropUserSchemes.ItemIndex > 0;
306 if dropUserSchemes.ItemIndex > 0 then
307 dropUserSchemes.tag := dropUserSchemes.ItemIndex;
308 end;
309 pnlAllGutter.Enabled := dropUserSchemes.ItemIndex = 0;
310 pnlAllText.Enabled := dropUserSchemes.ItemIndex = 0;
311 if FTempMouseSettings.IsPresetEqualToMouseActions then
312 SaveUserScheme;
313 UpdateButtons;
314 end;
315
316 procedure TEditorMouseOptionsFrame.dropUserSchemesKeyDown(Sender: TObject; var Key: Word;
317 Shift: TShiftState);
318 begin
319 dropUserSchemesChange(Sender);
320 end;
321
322 procedure TEditorMouseOptionsFrame.chkPredefinedSchemeChange(Sender: TObject);
323 begin
324 if chkPredefinedScheme.Checked then
325 dropUserSchemes.ItemIndex := Max(dropUserSchemes.Tag, 1)
326 else
327 dropUserSchemes.ItemIndex := 0;
328 dropUserSchemesChange(nil);
329 end;
330
331 procedure TEditorMouseOptionsFrame.ResetGutterButtonClick(Sender: TObject);
332 begin
333 SaveGutterSettings;
334 UpdateButtons;
335 end;
336
337 procedure TEditorMouseOptionsFrame.ResetTextButtonClick(Sender: TObject);
338 begin
339 SaveTextSettings;
340 UpdateButtons;
341 end;
342
343 procedure TEditorMouseOptionsFrame.ResetAllButtonClick(Sender: TObject);
344 begin
345 SaveGutterSettings;
346 SaveTextSettings;
347 SaveUserScheme; // must be last
348 UpdateButtons;
349 end;
350
351 procedure TEditorMouseOptionsFrame.ToolBtnMiddleClick(Sender: TObject);
352 begin
353 if not(Sender is TToolButton) then exit;
354 Notebook1.PageIndex := TToolButton(Sender).Tag;
355 end;
356
TEditorMouseOptionsFrame.IsUserSchemeChangednull357 function TEditorMouseOptionsFrame.IsUserSchemeChanged: Boolean;
358 begin
359 Result := FTempMouseSettings.SelectedUserSchemeIndex <>
360 PtrInt(dropUserSchemes.Items.Objects[dropUserSchemes.ItemIndex]);
361 end;
362
TEditorMouseOptionsFrame.IsTextSettingsChangednull363 function TEditorMouseOptionsFrame.IsTextSettingsChanged: Boolean;
364 begin
365 Result := not (
366 (FTempMouseSettings.TextDrag = TextDrag.Checked) and
367 (FTempMouseSettings.TextRightMoveCaret = RightMoveCaret.Checked) and
368
369 (FTempMouseSettings.TextAltLeftClick = TMouseOptButtonAction(dropAltLeft.ItemIndex)) and
370 (FTempMouseSettings.TextCtrlLeftClick = TMouseOptButtonAction(dropCtrlLeft.ItemIndex)) and
371 (FTempMouseSettings.TextAltCtrlLeftClick = TMouseOptButtonAction(dropAltCtrlLeft.ItemIndex)) and
372 (FTempMouseSettings.TextShiftLeftClick = TMouseOptButtonAction(dropShiftLeft.ItemIndex)) and
373 (FTempMouseSettings.TextShiftAltLeftClick = TMouseOptButtonAction(dropShiftAltLeft.ItemIndex)) and
374 (FTempMouseSettings.TextShiftCtrlLeftClick = TMouseOptButtonAction(dropShiftCtrlLeft.ItemIndex)) and
375 (FTempMouseSettings.TextShiftAltCtrlLeftClick = TMouseOptButtonAction(dropShiftAltCtrlLeft.ItemIndex)) and
376
377 (FTempMouseSettings.TextDoubleLeftClick = IdxToDoubleMouseOptButtonAction(dropLeftDouble.ItemIndex)) and
378 (FTempMouseSettings.TextTripleLeftClick = IdxToDoubleMouseOptButtonAction(dropLeftTriple.ItemIndex)) and
379 (FTempMouseSettings.TextQuadLeftClick = IdxToDoubleMouseOptButtonAction(dropLeftQuad.ItemIndex)) and
380 (FTempMouseSettings.TextShiftDoubleLeftClick = IdxToDoubleMouseOptButtonAction(dropLeftShiftDouble.ItemIndex)) and
381 (FTempMouseSettings.TextAltDoubleLeftClick = IdxToDoubleMouseOptButtonAction(dropLeftAltDouble.ItemIndex)) and
382 (FTempMouseSettings.TextCtrlDoubleLeftClick = IdxToDoubleMouseOptButtonAction(dropLeftCtrlDouble.ItemIndex)) and
383
384 (FTempMouseSettings.TextMiddleClick = TMouseOptButtonAction(dropMiddle.ItemIndex)) and
385 (FTempMouseSettings.TextShiftMiddleClick = TMouseOptButtonAction(dropMiddleShift.ItemIndex)) and
386 (FTempMouseSettings.TextAltMiddleClick = TMouseOptButtonAction(dropMiddleAlt.ItemIndex)) and
387 (FTempMouseSettings.TextCtrlMiddleClick = TMouseOptButtonAction(dropMiddleCtrl.ItemIndex)) and
388 (FTempMouseSettings.TextAltCtrlMiddleClick = TMouseOptButtonAction(dropMiddleAltCtrl.ItemIndex)) and
389 (FTempMouseSettings.TextShiftAltMiddleClick = TMouseOptButtonAction(dropMiddleShiftAlt.ItemIndex)) and
390 (FTempMouseSettings.TextShiftCtrlMiddleClick = TMouseOptButtonAction(dropMiddleShiftCtrl.ItemIndex)) and
391 (FTempMouseSettings.TextShiftAltCtrlMiddleClick = TMouseOptButtonAction(dropMiddleShiftAltCtrl.ItemIndex)) and
392
393 (FTempMouseSettings.TextRightClick = TMouseOptButtonAction(dropRight.ItemIndex)) and
394 (FTempMouseSettings.TextShiftRightClick = TMouseOptButtonAction(dropRightShift.ItemIndex)) and
395 (FTempMouseSettings.TextAltRightClick = TMouseOptButtonAction(dropRightAlt.ItemIndex)) and
396 (FTempMouseSettings.TextCtrlRightClick = TMouseOptButtonAction(dropRightCtrl.ItemIndex)) and
397 (FTempMouseSettings.TextAltCtrlRightClick = TMouseOptButtonAction(dropRightAltCtrl.ItemIndex)) and
398 (FTempMouseSettings.TextShiftAltRightClick = TMouseOptButtonAction(dropRightShiftAlt.ItemIndex)) and
399 (FTempMouseSettings.TextShiftCtrlRightClick = TMouseOptButtonAction(dropRightShiftCtrl.ItemIndex)) and
400 (FTempMouseSettings.TextShiftAltCtrlRightClick = TMouseOptButtonAction(dropRightShiftAltCtrl.ItemIndex)) and
401
402 (FTempMouseSettings.TextExtra1Click = TMouseOptButtonAction(dropExtra1.ItemIndex)) and
403 (FTempMouseSettings.TextShiftExtra1Click = TMouseOptButtonAction(dropExtra1Shift.ItemIndex)) and
404 (FTempMouseSettings.TextAltExtra1Click = TMouseOptButtonAction(dropExtra1Alt.ItemIndex)) and
405 (FTempMouseSettings.TextCtrlExtra1Click = TMouseOptButtonAction(dropExtra1Ctrl.ItemIndex)) and
406 (FTempMouseSettings.TextAltCtrlExtra1Click = TMouseOptButtonAction(dropExtra1AltCtrl.ItemIndex)) and
407 (FTempMouseSettings.TextShiftAltExtra1Click = TMouseOptButtonAction(dropExtra1ShiftAlt.ItemIndex)) and
408 (FTempMouseSettings.TextShiftCtrlExtra1Click = TMouseOptButtonAction(dropExtra1ShiftCtrl.ItemIndex)) and
409 (FTempMouseSettings.TextShiftAltCtrlExtra1Click = TMouseOptButtonAction(dropExtra1ShiftAltCtrl.ItemIndex)) and
410
411 (FTempMouseSettings.TextExtra2Click = TMouseOptButtonAction(dropExtra2.ItemIndex)) and
412 (FTempMouseSettings.TextShiftExtra2Click = TMouseOptButtonAction(dropExtra2Shift.ItemIndex)) and
413 (FTempMouseSettings.TextAltExtra2Click = TMouseOptButtonAction(dropExtra2Alt.ItemIndex)) and
414 (FTempMouseSettings.TextCtrlExtra2Click = TMouseOptButtonAction(dropExtra2Ctrl.ItemIndex)) and
415 (FTempMouseSettings.TextAltCtrlExtra2Click = TMouseOptButtonAction(dropExtra2AltCtrl.ItemIndex)) and
416 (FTempMouseSettings.TextShiftAltExtra2Click = TMouseOptButtonAction(dropExtra2ShiftAlt.ItemIndex)) and
417 (FTempMouseSettings.TextShiftCtrlExtra2Click = TMouseOptButtonAction(dropExtra2ShiftCtrl.ItemIndex)) and
418 (FTempMouseSettings.TextShiftAltCtrlExtra2Click = TMouseOptButtonAction(dropExtra2ShiftAltCtrl.ItemIndex)) and
419
420 (FTempMouseSettings.Wheel = TMouseOptWheelAction(dropWheel.ItemIndex)) and
421 (FTempMouseSettings.CtrlWheel = TMouseOptWheelAction(dropWheelCtrl.ItemIndex)) and
422 (FTempMouseSettings.AltWheel = TMouseOptWheelAction(dropWheelAlt.ItemIndex)) and
423 (FTempMouseSettings.ShiftWheel = TMouseOptWheelAction(dropWheelShift.ItemIndex)) and
424 (FTempMouseSettings.AltCtrlWheel = TMouseOptWheelAction(dropWheelAltCtrl.ItemIndex)) and
425 (FTempMouseSettings.ShiftAltWheel = TMouseOptWheelAction(dropWheelShiftAlt.ItemIndex)) and
426 (FTempMouseSettings.ShiftCtrlWheel = TMouseOptWheelAction(dropWheelShiftCtrl.ItemIndex)) and
427 (FTempMouseSettings.ShiftAltCtrlWheel = TMouseOptWheelAction(dropWheelShiftAltCtrl.ItemIndex)) and
428
429 (FTempMouseSettings.HorizWheel = TMouseOptWheelAction(dropWheelHoriz.ItemIndex)) and
430 (FTempMouseSettings.CtrlHorizWheel = TMouseOptWheelAction(dropWheelCtrlHoriz.ItemIndex)) and
431 (FTempMouseSettings.AltHorizWheel = TMouseOptWheelAction(dropWheelAltHoriz.ItemIndex)) and
432 (FTempMouseSettings.ShiftHorizWheel = TMouseOptWheelAction(dropWheelShiftHoriz.ItemIndex)) and
433 (FTempMouseSettings.AltCtrlHorizWheel = TMouseOptWheelAction(dropWheelAltCtrlHoriz.ItemIndex)) and
434 (FTempMouseSettings.ShiftAltHorizWheel = TMouseOptWheelAction(dropWheelShiftAltHoriz.ItemIndex)) and
435 (FTempMouseSettings.ShiftCtrlHorizWheel = TMouseOptWheelAction(dropWheelShiftCtrlHoriz.ItemIndex)) and
436 (FTempMouseSettings.ShiftAltCtrlHorizWheel = TMouseOptWheelAction(dropWheelShiftAltCtrlHoriz.ItemIndex))
437 );
438 end;
439
IsGutterSettingsChangednull440 function TEditorMouseOptionsFrame.IsGutterSettingsChanged: Boolean;
441 begin
442 Result := not (
443 ( (GutterLeftRadio1.Checked and (FTempMouseSettings.GutterLeft = moGLDownClick)) or
444 (GutterLeftRadio2.Checked and (FTempMouseSettings.GutterLeft = moglUpClickAndSelect))
445 )
446 );
447 end;
448
449 procedure TEditorMouseOptionsFrame.SaveUserScheme;
450 var
451 i: Integer;
452 begin
453 i := PtrInt(dropUserSchemes.Items.Objects[dropUserSchemes.ItemIndex]);
454 FTempMouseSettings.SelectedUserSchemeIndex := i;
455 if i >= 0 then
456 FTempMouseSettings.ResetToUserScheme
457 else begin
458 FTempMouseSettings.ResetTextToDefault;
459 FTempMouseSettings.ResetGutterToDefault;
460 end;
461 if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then
462 TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings;
463 end;
464
465 procedure TEditorMouseOptionsFrame.SaveTextSettings;
466 begin
467 FTempMouseSettings.TextDrag := TextDrag.Checked;
468 FTempMouseSettings.TextRightMoveCaret := RightMoveCaret.Checked;
469
470 FTempMouseSettings.TextAltLeftClick := TMouseOptButtonAction(dropAltLeft.ItemIndex);
471 FTempMouseSettings.TextCtrlLeftClick := TMouseOptButtonAction(dropCtrlLeft.ItemIndex);
472 FTempMouseSettings.TextAltCtrlLeftClick := TMouseOptButtonAction(dropAltCtrlLeft.ItemIndex);
473 FTempMouseSettings.TextShiftLeftClick := TMouseOptButtonAction(dropShiftLeft.ItemIndex);
474 FTempMouseSettings.TextShiftAltLeftClick := TMouseOptButtonAction(dropShiftAltLeft.ItemIndex);
475 FTempMouseSettings.TextShiftCtrlLeftClick := TMouseOptButtonAction(dropShiftCtrlLeft.ItemIndex);
476 FTempMouseSettings.TextShiftAltCtrlLeftClick := TMouseOptButtonAction(dropShiftAltCtrlLeft.ItemIndex);
477
478 FTempMouseSettings.TextDoubleLeftClick := IdxToDoubleMouseOptButtonAction(dropLeftDouble.ItemIndex);
479 FTempMouseSettings.TextTripleLeftClick := IdxToDoubleMouseOptButtonAction(dropLeftTriple.ItemIndex);
480 FTempMouseSettings.TextQuadLeftClick := IdxToDoubleMouseOptButtonAction(dropLeftQuad.ItemIndex);
481 FTempMouseSettings.TextShiftDoubleLeftClick := IdxToDoubleMouseOptButtonAction(dropLeftShiftDouble.ItemIndex);
482 FTempMouseSettings.TextAltDoubleLeftClick := IdxToDoubleMouseOptButtonAction(dropLeftAltDouble.ItemIndex);
483 FTempMouseSettings.TextCtrlDoubleLeftClick := IdxToDoubleMouseOptButtonAction(dropLeftCtrlDouble.ItemIndex);
484
485 FTempMouseSettings.TextMiddleClick := TMouseOptButtonAction(dropMiddle.ItemIndex);
486 FTempMouseSettings.TextShiftMiddleClick := TMouseOptButtonAction(dropMiddleShift.ItemIndex);
487 FTempMouseSettings.TextAltMiddleClick := TMouseOptButtonAction(dropMiddleAlt.ItemIndex);
488 FTempMouseSettings.TextCtrlMiddleClick := TMouseOptButtonAction(dropMiddleCtrl.ItemIndex);
489 FTempMouseSettings.TextAltCtrlMiddleClick := TMouseOptButtonAction(dropMiddleAltCtrl.ItemIndex);
490 FTempMouseSettings.TextShiftAltMiddleClick := TMouseOptButtonAction(dropMiddleShiftAlt.ItemIndex);
491 FTempMouseSettings.TextShiftCtrlMiddleClick := TMouseOptButtonAction(dropMiddleShiftCtrl.ItemIndex);
492 FTempMouseSettings.TextShiftAltCtrlMiddleClick := TMouseOptButtonAction(dropMiddleShiftAltCtrl.ItemIndex);
493
494 FTempMouseSettings.TextRightClick := TMouseOptButtonAction(dropRight.ItemIndex);
495 FTempMouseSettings.TextShiftRightClick := TMouseOptButtonAction(dropRightShift.ItemIndex);
496 FTempMouseSettings.TextAltRightClick := TMouseOptButtonAction(dropRightAlt.ItemIndex);
497 FTempMouseSettings.TextCtrlRightClick := TMouseOptButtonAction(dropRightCtrl.ItemIndex);
498 FTempMouseSettings.TextAltCtrlRightClick := TMouseOptButtonAction(dropRightAltCtrl.ItemIndex);
499 FTempMouseSettings.TextShiftAltRightClick := TMouseOptButtonAction(dropRightShiftAlt.ItemIndex);
500 FTempMouseSettings.TextShiftCtrlRightClick := TMouseOptButtonAction(dropRightShiftCtrl.ItemIndex);
501 FTempMouseSettings.TextShiftAltCtrlRightClick := TMouseOptButtonAction(dropRightShiftAltCtrl.ItemIndex);
502
503 FTempMouseSettings.TextExtra1Click := TMouseOptButtonAction(dropExtra1.ItemIndex);
504 FTempMouseSettings.TextShiftExtra1Click := TMouseOptButtonAction(dropExtra1Shift.ItemIndex);
505 FTempMouseSettings.TextAltExtra1Click := TMouseOptButtonAction(dropExtra1Alt.ItemIndex);
506 FTempMouseSettings.TextCtrlExtra1Click := TMouseOptButtonAction(dropExtra1Ctrl.ItemIndex);
507 FTempMouseSettings.TextAltCtrlExtra1Click := TMouseOptButtonAction(dropExtra1AltCtrl.ItemIndex);
508 FTempMouseSettings.TextShiftAltExtra1Click := TMouseOptButtonAction(dropExtra1ShiftAlt.ItemIndex);
509 FTempMouseSettings.TextShiftCtrlExtra1Click := TMouseOptButtonAction(dropExtra1ShiftCtrl.ItemIndex);
510 FTempMouseSettings.TextShiftAltCtrlExtra1Click := TMouseOptButtonAction(dropExtra1ShiftAltCtrl.ItemIndex);
511
512 FTempMouseSettings.TextExtra2Click := TMouseOptButtonAction(dropExtra2.ItemIndex);
513 FTempMouseSettings.TextShiftExtra2Click := TMouseOptButtonAction(dropExtra2Shift.ItemIndex);
514 FTempMouseSettings.TextAltExtra2Click := TMouseOptButtonAction(dropExtra2Alt.ItemIndex);
515 FTempMouseSettings.TextCtrlExtra2Click := TMouseOptButtonAction(dropExtra2Ctrl.ItemIndex);
516 FTempMouseSettings.TextAltCtrlExtra2Click := TMouseOptButtonAction(dropExtra2AltCtrl.ItemIndex);
517 FTempMouseSettings.TextShiftAltExtra2Click := TMouseOptButtonAction(dropExtra2ShiftAlt.ItemIndex);
518 FTempMouseSettings.TextShiftCtrlExtra2Click := TMouseOptButtonAction(dropExtra2ShiftCtrl.ItemIndex);
519 FTempMouseSettings.TextShiftAltCtrlExtra2Click := TMouseOptButtonAction(dropExtra2ShiftAltCtrl.ItemIndex);
520
521 FTempMouseSettings.Wheel := TMouseOptWheelAction(dropWheel.ItemIndex);
522 FTempMouseSettings.CtrlWheel := TMouseOptWheelAction(dropWheelCtrl.ItemIndex);
523 FTempMouseSettings.AltWheel := TMouseOptWheelAction(dropWheelAlt.ItemIndex);
524 FTempMouseSettings.ShiftWheel := TMouseOptWheelAction(dropWheelShift.ItemIndex);
525 FTempMouseSettings.AltCtrlWheel := TMouseOptWheelAction(dropWheelAltCtrl.ItemIndex);
526 FTempMouseSettings.ShiftAltWheel := TMouseOptWheelAction(dropWheelShiftAlt.ItemIndex);
527 FTempMouseSettings.ShiftCtrlWheel := TMouseOptWheelAction(dropWheelShiftCtrl.ItemIndex);
528 FTempMouseSettings.ShiftAltCtrlWheel := TMouseOptWheelAction(dropWheelShiftAltCtrl.ItemIndex);
529
530 FTempMouseSettings.HorizWheel := TMouseOptWheelAction(dropWheelHoriz.ItemIndex);
531 FTempMouseSettings.CtrlHorizWheel := TMouseOptWheelAction(dropWheelCtrlHoriz.ItemIndex);
532 FTempMouseSettings.AltHorizWheel := TMouseOptWheelAction(dropWheelAltHoriz.ItemIndex);
533 FTempMouseSettings.ShiftHorizWheel := TMouseOptWheelAction(dropWheelShiftHoriz.ItemIndex);
534 FTempMouseSettings.AltCtrlHorizWheel := TMouseOptWheelAction(dropWheelAltCtrlHoriz.ItemIndex);
535 FTempMouseSettings.ShiftAltHorizWheel := TMouseOptWheelAction(dropWheelShiftAltHoriz.ItemIndex);
536 FTempMouseSettings.ShiftCtrlHorizWheel := TMouseOptWheelAction(dropWheelShiftCtrlHoriz.ItemIndex);
537 FTempMouseSettings.ShiftAltCtrlHorizWheel := TMouseOptWheelAction(dropWheelShiftAltCtrlHoriz.ItemIndex);
538
539 FTempMouseSettings.ResetTextToDefault;
540 if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then
541 TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings;
542 end;
543
544 procedure TEditorMouseOptionsFrame.SaveGutterSettings;
545 begin
546 if GutterLeftRadio2.Checked then
547 FTempMouseSettings.GutterLeft := moglUpClickAndSelect
548 else
549 if GutterLeftRadio3.Checked then
550 FTempMouseSettings.GutterLeft := moglUpClickAndSelectRighHalf
551 else
552 FTempMouseSettings.GutterLeft := moGLDownClick;
553 FTempMouseSettings.SelectOnLineNumbers := chkGutterTextLines.Checked;
554 FTempMouseSettings.ResetGutterToDefault;
555 if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then
556 TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings;
557 end;
558
559 procedure TEditorMouseOptionsFrame.SetVisible(Value: Boolean);
560 begin
561 inherited SetVisible(Value);
562 if Value and (FTempMouseSettings <> nil) then
563 UpdateButtons;
564 end;
565
IdxToDoubleMouseOptButtonActionnull566 function TEditorMouseOptionsFrame.IdxToDoubleMouseOptButtonAction(AIdx: integer): TMouseOptButtonAction;
567 begin
568 if AIdx <> 0 then AIdx := AIdx + 3;
569 Result := TMouseOptButtonAction(AIdx);
570 end;
571
572 procedure TEditorMouseOptionsFrame.CheckForShiftChange(Sender: TObject);
573 begin
574 if (Sender = nil) then begin
575 dropShiftLeft.Items[0] := Format(dlfMouseSimpleButtonSelContinuePlain, [dlfMouseSimpleButtonSelect]);
576 end;
577 if (Sender = dropAltLeft) or (Sender = nil) then begin
578 if TMouseOptButtonAction(dropAltLeft.ItemIndex) in [mbaSelect..mbaSelectLine]
579 then dropShiftAltLeft.Items[0] := Format(dlfMouseSimpleButtonSelContinue,
580 [dropAltLeft.Items[dropAltLeft.ItemIndex], AltLeftLabel.Caption])
581 else dropShiftAltLeft.Items[0] := dlfMouseSimpleButtonNothing;
582 end;
583 if (Sender = dropCtrlLeft) or (Sender = nil) then begin
584 if TMouseOptButtonAction(dropCtrlLeft.ItemIndex) in [mbaSelect..mbaSelectLine]
585 then dropShiftCtrlLeft.Items[0] := Format(dlfMouseSimpleButtonSelContinue,
586 [dropCtrlLeft.Items[dropCtrlLeft.ItemIndex], CtrLLeftLabel.Caption])
587 else dropShiftCtrlLeft.Items[0] := dlfMouseSimpleButtonNothing;
588 end;
589 if (Sender = dropAltCtrlLeft) or (Sender = nil) then begin
590 if TMouseOptButtonAction(dropAltCtrlLeft.ItemIndex) in [mbaSelect..mbaSelectLine]
591 then dropShiftAltCtrlLeft.Items[0] := Format(dlfMouseSimpleButtonSelContinue,
592 [dropAltCtrlLeft.Items[dropAltCtrlLeft.ItemIndex], AltCtrlLeftLabel.Caption])
593 else dropShiftAltCtrlLeft.Items[0] := dlfMouseSimpleButtonNothing;
594 end;
595 end;
596
TEditorMouseOptionsFrame.GetTitlenull597 function TEditorMouseOptionsFrame.GetTitle: String;
598 begin
599 Result := dlgMouseOptions;
600 end;
601
602 procedure TEditorMouseOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
603
604 procedure SetupButtonCombo(ACombo: TComboBox; ASkipSel: Boolean = False);
605 begin
606 // must be in the order in which the mba* are declared
607 ACombo.Clear;
608 ACombo.Items.Add(dlfMouseSimpleButtonNothing); // mbaNone,
609 if not ASkipSel then begin
610 ACombo.Items.Add(dlfMouseSimpleButtonSelect); // mbaSelect,
611 ACombo.Items.Add(dlfMouseSimpleButtonSelectColumn); // mbaSelectColumn,
612 ACombo.Items.Add(dlfMouseSimpleButtonSelectLine); // mbaSelectLine,
613 end;
614 //ACombo.Items.Add(dlfMouseSimpleButtonSelectByToken); // mbaSelectTokens,
615 ACombo.Items.Add(dlfMouseSimpleButtonSelectByWord); // mbaSelectWords,
616 //ACombo.Items.Add(dlfMouseSimpleButtonSelectByLine); // mbaSelectLines,
617 ACombo.Items.Add(dlfMouseSimpleButtonSetWord); // mbaSelectSetWord,
618 ACombo.Items.Add(dlfMouseSimpleButtonSetLineSmart); // mbaSelectSetLineSmart,
619 ACombo.Items.Add(dlfMouseSimpleButtonSetLineFull); // mbaSelectSetLineFull,
620 ACombo.Items.Add(dlfMouseSimpleButtonSetPara); // mbaSelectSetPara,
621 ACombo.Items.Add(dlfMouseSimpleButtonPaste); // mbaPaste,
622 ACombo.Items.Add(dlfMouseSimpleButtonDeclaration); // mbaDeclarationJump,
623 ACombo.Items.Add(dlfMouseSimpleButtonDeclarationBlock); // mbaDeclarationOrBlockJump,
624 ACombo.Items.Add(dlfMouseSimpleButtonAddHistoryPoint); // mbaAddHistoryPoint,
625 ACombo.Items.Add(dlfMouseSimpleButtonHistBack); // mbaHistoryBack,
626 ACombo.Items.Add(dlfMouseSimpleButtonHistForw); // mbaHistoryForw,
627 ACombo.Items.Add(dlfMouseSimpleButtonSetFreeBookmark); // mbaSetFreeBookmark,
628 ACombo.Items.Add(dlfMouseSimpleButtonZoomReset); // mbaZoomReset
629 ACombo.Items.Add(dlfMouseSimpleButtonContextMenu); // mbaContextMenu
630 ACombo.Items.Add(dlfMouseSimpleButtonContextMenuDbg); // mbaContextMenuDebug;
631 ACombo.Items.Add(dlfMouseSimpleButtonContextMenuTab); // mbaContextMenuTab;
632 ACombo.Items.Add(dlfMouseSimpleButtonMultiCaretToggle); // mbaMultiCaretToggle;
633 end;
634
635 procedure SetupWheelCombo(ACombo: TComboBox);
636 begin
637 ACombo.Clear;
638 ACombo.Items.Add(dlfMouseSimpleWheelNothing); //mwaNone,
639 ACombo.Items.Add(dlfMouseSimpleWheelSrollDef); //mwaScroll,
640 ACombo.Items.Add(dlfMouseSimpleWheelSrollLine); //mwaScrollSingleLine,
641 ACombo.Items.Add(dlfMouseSimpleWheelSrollPage); //mwaScrollPage,
642 ACombo.Items.Add(dlfMouseSimpleWheelSrollPageLess); //mwaScrollPageLessOne,
643 ACombo.Items.Add(dlfMouseSimpleWheelSrollPageHalf); //mwaScrollHalfPage,
644 ACombo.Items.Add(dlfMouseSimpleWheelHSrollDef); //mwaScrollHoriz,
645 ACombo.Items.Add(dlfMouseSimpleWheelHSrollLine); //mwaScrollHorizSingleLine,
646 ACombo.Items.Add(dlfMouseSimpleWheelHSrollPage); //mwaScrollHorizPage,
647 ACombo.Items.Add(dlfMouseSimpleWheelHSrollPageLess); //mwaScrollHorizPageLessOne
648 ACombo.Items.Add(dlfMouseSimpleWheelHSrollPageHalf); //mwaScrollHorizHalfPage
649 ACombo.Items.Add(dlfMouseSimpleWheelZoom);
650 end;
651
652 begin
653 FDialog := ADialog;
654 chkPredefinedScheme.Caption := dlfMousePredefinedScheme;
655 GenericDividerLabel.Caption := dlfMouseSimpleGenericSect;
656
657 GutterDividerLabel.Caption := dlfMouseSimpleGutterSect;
658 GutterLeftRadio1.Caption := dlfMouseSimpleGutterLeftDown;
659 GutterLeftRadio2.Caption := dlfMouseSimpleGutterLeftUp;
660 GutterLeftRadio3.Caption := dlfMouseSimpleGutterLeftUpRight;
661 chkGutterTextLines.Caption := dlfMouseSimpleGutterLines;
662
663 TextDividerLabel.Caption := dlfMouseSimpleTextSect;
664 TextDrag.Caption := dlfMouseSimpleTextSectDrag;
665 RightMoveCaret.Caption := dlfMouseSimpleRightMoveCaret;
666
667 ToolBtnLeftMod.Caption := dlfMouseSimpleTextSectPageLMod;
668 ToolBtnLeftMulti.Caption := dlfMouseSimpleTextSectPageLMulti;
669 ToolBtnMiddle.Caption := dlfMouseSimpleTextSectPageBtn;
670 ToolBtnWheel.Caption := dlfMouseSimpleTextSectPageWheel;
671 ToolBtnHorizWheel.Caption := dlfMouseSimpleTextSectPageHorizWheel;
672 ToolBtnRight.Caption := dlfMouseSimpleTextSectPageRight;
673 ToolBtnExtra1.Caption := dlfMouseSimpleTextSectPageExtra1;
674 ToolBtnExtra2.Caption := dlfMouseSimpleTextSectPageExtra2;
675
676 // left multi click
677 lblLeftDouble.Caption := dlfMouseSimpleTextSectLDoubleLabel;
678 lblLeftTriple.Caption := dlfMouseSimpleTextSectLTripleLabel;
679 lblLeftQuad.Caption := dlfMouseSimpleTextSectLQuadLabel;
680 lblLeftDoubleShift.Caption := dlfMouseSimpleTextSectLDoubleShiftLabel;
681 lblLeftDoubleCtrl.Caption := dlfMouseSimpleTextSectLDoubleCtrlLabel;
682 lblLeftDoubleAlt.Caption := dlfMouseSimpleTextSectLDoubleAltLabel;
683 // left + modifier click
684 AltLeftLabel.Caption := dlfMouseSimpleTextSectAltLabel;
685 CtrLLeftLabel.Caption := dlfMouseSimpleTextSectCtrlLabel;
686 AltCtrlLeftLabel.Caption := dlfMouseSimpleTextSectAltCtrlLabel;
687 ShiftLeftLabel.Caption := dlfMouseSimpleTextSectShiftLabel;
688 ShiftAltLeftLabel.Caption := dlfMouseSimpleTextSectShiftAltLabel;
689 ShiftCtrlLeftLabel.Caption := dlfMouseSimpleTextSectShiftCtrlLabel;
690 ShiftAltCtrlLeftLabel.Caption := dlfMouseSimpleTextSectShiftAltCtrlLabel;
691 // middle click
692 lblMiddle.Caption := dlfMouseSimpleTextSectMidLabel;
693 lblMiddleShift.Caption := dlfMouseSimpleTextSectShiftLabel;
694 lblMiddleAlt.Caption := dlfMouseSimpleTextSectAltLabel;
695 lblMiddleCtrl.Caption := dlfMouseSimpleTextSectCtrlLabel;
696 lblMiddleAltCtrl.Caption := dlfMouseSimpleTextSectAltCtrlLabel;
697 lblMiddleShiftAlt.Caption := dlfMouseSimpleTextSectShiftAltLabel;
698 lblMiddleShiftCtrl.Caption := dlfMouseSimpleTextSectShiftCtrlLabel;
699 lblMiddleShiftAltCtrl.Caption := dlfMouseSimpleTextSectShiftAltCtrlLabel;
700 // Right click
701 lblRight.Caption := dlfMouseSimpleTextSectRightLabel;
702 lblRightShift.Caption := dlfMouseSimpleTextSectShiftLabel;
703 lblRightAlt.Caption := dlfMouseSimpleTextSectAltLabel;
704 lblRightCtrl.Caption := dlfMouseSimpleTextSectCtrlLabel;
705 lblRightAltCtrl.Caption := dlfMouseSimpleTextSectAltCtrlLabel;
706 lblRightShiftAlt.Caption := dlfMouseSimpleTextSectShiftAltLabel;
707 lblRightShiftCtrl.Caption := dlfMouseSimpleTextSectShiftCtrlLabel;
708 lblRightShiftAltCtrl.Caption := dlfMouseSimpleTextSectShiftAltCtrlLabel;
709 // Extra1 click
710 lblExtra1.Caption := dlfMouseSimpleTextSectExtra1Label;
711 lblExtra1Shift.Caption := dlfMouseSimpleTextSectShiftLabel;
712 lblExtra1Alt.Caption := dlfMouseSimpleTextSectAltLabel;
713 lblExtra1Ctrl.Caption := dlfMouseSimpleTextSectCtrlLabel;
714 lblExtra1AltCtrl.Caption := dlfMouseSimpleTextSectAltCtrlLabel;
715 lblExtra1ShiftAlt.Caption := dlfMouseSimpleTextSectShiftAltLabel;
716 lblExtra1ShiftCtrl.Caption := dlfMouseSimpleTextSectShiftCtrlLabel;
717 lblExtra1ShiftAltCtrl.Caption := dlfMouseSimpleTextSectShiftAltCtrlLabel;
718 // Extra2 click
719 lblExtra2.Caption := dlfMouseSimpleTextSectExtra2Label;
720 lblExtra2Shift.Caption := dlfMouseSimpleTextSectShiftLabel;
721 lblExtra2Alt.Caption := dlfMouseSimpleTextSectAltLabel;
722 lblExtra2Ctrl.Caption := dlfMouseSimpleTextSectCtrlLabel;
723 lblExtra2AltCtrl.Caption := dlfMouseSimpleTextSectAltCtrlLabel;
724 lblExtra2ShiftAlt.Caption := dlfMouseSimpleTextSectShiftAltLabel;
725 lblExtra2ShiftCtrl.Caption := dlfMouseSimpleTextSectShiftCtrlLabel;
726 lblExtra2ShiftAltCtrl.Caption := dlfMouseSimpleTextSectShiftAltCtrlLabel;
727 // wheel
728 lblWheel.Caption := dlfMouseSimpleTextSectWheelLabel;
729 lblWheelCtrl.Caption := dlfMouseSimpleTextSectCtrlWheelLabel;
730 lblWheelAlt.Caption := dlfMouseSimpleTextSectAltWheelLabel;
731 lblWheelShift.Caption := dlfMouseSimpleTextShiftSectWheelLabel;
732 lblWheelAltCtrl.Caption := dlfMouseSimpleTextSectAltCtrlWheelLabel;
733 lblWheelShiftAlt.Caption := dlfMouseSimpleTextSectShiftAltWheelLabel;
734 lblWheelShiftCtrl.Caption := dlfMouseSimpleTextSectShiftCtrlWheelLabel;
735 lblWheelShiftAltCtrl.Caption := dlfMouseSimpleTextSectShiftAltCtrlWheelLabel;
736 // Horiz wheel
737 lblWheelHoriz.Caption := dlfMouseSimpleTextSectWheelLabel;
738 lblWheelCtrlHoriz.Caption := dlfMouseSimpleTextSectCtrlWheelLabel;
739 lblWheelAltHoriz.Caption := dlfMouseSimpleTextSectAltWheelLabel;
740 lblWheelShiftHoriz.Caption := dlfMouseSimpleTextShiftSectWheelLabel;
741 lblWheelAltCtrlHoriz.Caption := dlfMouseSimpleTextSectAltCtrlWheelLabel;
742 lblWheelShiftAltHoriz.Caption := dlfMouseSimpleTextSectShiftAltWheelLabel;
743 lblWheelShiftCtrlHoriz.Caption := dlfMouseSimpleTextSectShiftCtrlWheelLabel;
744 lblWheelShiftAltCtrlHoriz.Caption := dlfMouseSimpleTextSectShiftAltCtrlWheelLabel;
745
746 // left multi click
747 SetupButtonCombo(dropLeftDouble, True);
748 SetupButtonCombo(dropLeftTriple, True);
749 SetupButtonCombo(dropLeftQuad, True);
750 SetupButtonCombo(dropLeftShiftDouble, True);
751 SetupButtonCombo(dropLeftAltDouble, True);
752 SetupButtonCombo(dropLeftCtrlDouble, True);
753 // left + modifier click
754 SetupButtonCombo(dropShiftLeft);
755 SetupButtonCombo(dropAltLeft);
756 SetupButtonCombo(dropCtrlLeft);
757 SetupButtonCombo(dropAltCtrlLeft);
758 SetupButtonCombo(dropShiftAltLeft);
759 SetupButtonCombo(dropShiftCtrlLeft);
760 SetupButtonCombo(dropShiftAltCtrlLeft);
761 // middle click
762 SetupButtonCombo(dropMiddle);
763 SetupButtonCombo(dropMiddleShift);
764 SetupButtonCombo(dropMiddleAlt);
765 SetupButtonCombo(dropMiddleCtrl);
766 SetupButtonCombo(dropMiddleAltCtrl);
767 SetupButtonCombo(dropMiddleShiftCtrl);
768 SetupButtonCombo(dropMiddleShiftAlt);
769 SetupButtonCombo(dropMiddleShiftAltCtrl);
770 // Right click
771 SetupButtonCombo(dropRight);
772 SetupButtonCombo(dropRightShift);
773 SetupButtonCombo(dropRightAlt);
774 SetupButtonCombo(dropRightCtrl);
775 SetupButtonCombo(dropRightAltCtrl);
776 SetupButtonCombo(dropRightShiftCtrl);
777 SetupButtonCombo(dropRightShiftAlt);
778 SetupButtonCombo(dropRightShiftAltCtrl);
779 // Extra1 click
780 SetupButtonCombo(dropExtra1);
781 SetupButtonCombo(dropExtra1Shift);
782 SetupButtonCombo(dropExtra1Alt);
783 SetupButtonCombo(dropExtra1Ctrl);
784 SetupButtonCombo(dropExtra1AltCtrl);
785 SetupButtonCombo(dropExtra1ShiftCtrl);
786 SetupButtonCombo(dropExtra1ShiftAlt);
787 SetupButtonCombo(dropExtra1ShiftAltCtrl);
788 // extra2 click
789 SetupButtonCombo(dropExtra2);
790 SetupButtonCombo(dropExtra2Shift);
791 SetupButtonCombo(dropExtra2Alt);
792 SetupButtonCombo(dropExtra2Ctrl);
793 SetupButtonCombo(dropExtra2AltCtrl);
794 SetupButtonCombo(dropExtra2ShiftCtrl);
795 SetupButtonCombo(dropExtra2ShiftAlt);
796 SetupButtonCombo(dropExtra2ShiftAltCtrl);
797 // wheel
798 SetupWheelCombo(dropWheel);
799 SetupWheelCombo(dropWheelCtrl);
800 SetupWheelCombo(dropWheelAlt);
801 SetupWheelCombo(dropWheelShift);
802 SetupWheelCombo(dropWheelAltCtrl);
803 SetupWheelCombo(dropWheelShiftAlt);
804 SetupWheelCombo(dropWheelShiftCtrl);
805 SetupWheelCombo(dropWheelShiftAltCtrl);
806 // Horiz wheel
807 SetupWheelCombo(dropWheelHoriz);
808 SetupWheelCombo(dropWheelCtrlHoriz);
809 SetupWheelCombo(dropWheelAltHoriz);
810 SetupWheelCombo(dropWheelShiftHoriz);
811 SetupWheelCombo(dropWheelAltCtrlHoriz);
812 SetupWheelCombo(dropWheelShiftAltHoriz);
813 SetupWheelCombo(dropWheelShiftCtrlHoriz);
814 SetupWheelCombo(dropWheelShiftAltCtrlHoriz);
815
816 WarnLabel.Caption := dlfMouseSimpleWarning;
817 DiffLabel.Caption := dlfMouseSimpleDiff;
818 ResetAllButton.Caption := dlfMouseResetAll;
819 ResetGutterButton.Caption := dlfMouseResetGutter;
820 ResetTextButton.Caption := dlfMouseResetText;
821 HideMouseCheckBox.Caption := dlgAutoHideCursor;
822 end;
823
824 procedure TEditorMouseOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
825 var
826 i: Integer;
827 begin
828 Inc(FInClickHandler);
829 FOptions := AOptions;
830 FTempMouseSettings := TEditorOptions(AOptions).TempMouseSettings;
831 FTempMouseSettings.Assign(TEditorOptions(AOptions).UserMouseSettings);
832
833 pnlUserSchemes.Visible := FTempMouseSettings.UserSchemeCount > 0;
834 dropUserSchemes.Clear;
835 for i := 0 to FTempMouseSettings.UserSchemeCount - 1 do begin
836 dropUserSchemes.Items.AddObject(FTempMouseSettings.UserSchemeNames[i],
837 TObject(PtrUInt(i)) );
838 end;
839 dropUserSchemes.Sorted := True;
840 dropUserSchemes.Sorted := False;
841 dropUserSchemes.Items.InsertObject(0, dlfNoPredefinedScheme, TObject(PtrUInt(-1)));
842 dropUserSchemes.ItemIndex := dropUserSchemes.Items.IndexOfObject
843 ( TObject(PtrUInt(FTempMouseSettings.SelectedUserSchemeIndex)) );
844 dropUserSchemesChange(Self);
845
846 case FTempMouseSettings.GutterLeft of
847 moGLDownClick: GutterLeftRadio1.Checked := True;
848 moglUpClickAndSelect: GutterLeftRadio2.Checked := True;
849 moglUpClickAndSelectRighHalf: GutterLeftRadio3.Checked := True;
850 end;
851 chkGutterTextLines.Checked := FTempMouseSettings.SelectOnLineNumbers;
852 TextDrag.Checked := FTempMouseSettings.TextDrag;
853 RightMoveCaret.Checked := FTempMouseSettings.TextRightMoveCaret;
854
855 dropAltLeft.ItemIndex := ord(FTempMouseSettings.TextAltLeftClick);
856 dropCtrlLeft.ItemIndex := ord(FTempMouseSettings.TextCtrlLeftClick);
857 dropAltCtrlLeft.ItemIndex := ord(FTempMouseSettings.TextAltCtrlLeftClick);
858 dropShiftLeft.ItemIndex := ord(FTempMouseSettings.TextShiftLeftClick);
859 dropShiftAltLeft.ItemIndex := ord(FTempMouseSettings.TextShiftAltLeftClick);
860 dropShiftCtrlLeft.ItemIndex := ord(FTempMouseSettings.TextShiftCtrlLeftClick);
861 dropShiftAltCtrlLeft.ItemIndex := ord(FTempMouseSettings.TextShiftAltCtrlLeftClick);
862
863 // 1,2&3 are mouse selection, and not avail for double clicks
864 dropLeftDouble.ItemIndex := Max(ord(FTempMouseSettings.TextDoubleLeftClick)-3,0);
865 dropLeftTriple.ItemIndex := Max(ord(FTempMouseSettings.TextTripleLeftClick)-3,0);
866 dropLeftQuad.ItemIndex := Max(ord(FTempMouseSettings.TextQuadLeftClick)-3,0);
867 dropLeftShiftDouble.ItemIndex := Max(ord(FTempMouseSettings.TextShiftDoubleLeftClick)-3,0);
868 dropLeftAltDouble.ItemIndex := Max(ord(FTempMouseSettings.TextAltDoubleLeftClick)-3,0);
869 dropLeftCtrlDouble.ItemIndex := Max(ord(FTempMouseSettings.TextCtrlDoubleLeftClick)-3,0);
870
871 dropMiddle.ItemIndex := ord(FTempMouseSettings.TextMiddleClick);
872 dropMiddleShift.ItemIndex := ord(FTempMouseSettings.TextShiftMiddleClick);
873 dropMiddleAlt.ItemIndex := ord(FTempMouseSettings.TextAltMiddleClick);
874 dropMiddleCtrl.ItemIndex := ord(FTempMouseSettings.TextCtrlMiddleClick);
875 dropMiddleAltCtrl.ItemIndex := ord(FTempMouseSettings.TextAltCtrlMiddleClick);
876 dropMiddleShiftCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftCtrlMiddleClick);
877 dropMiddleShiftAlt.ItemIndex := ord(FTempMouseSettings.TextShiftAltMiddleClick);
878 dropMiddleShiftAltCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftAltCtrlMiddleClick);
879
880 dropRight.ItemIndex := ord(FTempMouseSettings.TextRightClick);
881 dropRightShift.ItemIndex := ord(FTempMouseSettings.TextShiftRightClick);
882 dropRightAlt.ItemIndex := ord(FTempMouseSettings.TextAltRightClick);
883 dropRightCtrl.ItemIndex := ord(FTempMouseSettings.TextCtrlRightClick);
884 dropRightAltCtrl.ItemIndex := ord(FTempMouseSettings.TextAltCtrlRightClick);
885 dropRightShiftCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftCtrlRightClick);
886 dropRightShiftAlt.ItemIndex := ord(FTempMouseSettings.TextShiftAltRightClick);
887 dropRightShiftAltCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftAltCtrlRightClick);
888
889 dropExtra1.ItemIndex := ord(FTempMouseSettings.TextExtra1Click);
890 dropExtra1Shift.ItemIndex := ord(FTempMouseSettings.TextShiftExtra1Click);
891 dropExtra1Alt.ItemIndex := ord(FTempMouseSettings.TextAltExtra1Click);
892 dropExtra1Ctrl.ItemIndex := ord(FTempMouseSettings.TextCtrlExtra1Click);
893 dropExtra1AltCtrl.ItemIndex := ord(FTempMouseSettings.TextAltCtrlExtra1Click);
894 dropExtra1ShiftCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftCtrlExtra1Click);
895 dropExtra1ShiftAlt.ItemIndex := ord(FTempMouseSettings.TextShiftAltExtra1Click);
896 dropExtra1ShiftAltCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftAltCtrlExtra1Click);
897
898 dropExtra2.ItemIndex := ord(FTempMouseSettings.TextExtra2Click);
899 dropExtra2Shift.ItemIndex := ord(FTempMouseSettings.TextShiftExtra2Click);
900 dropExtra2Alt.ItemIndex := ord(FTempMouseSettings.TextAltExtra2Click);
901 dropExtra2Ctrl.ItemIndex := ord(FTempMouseSettings.TextCtrlExtra2Click);
902 dropExtra2AltCtrl.ItemIndex := ord(FTempMouseSettings.TextAltCtrlExtra2Click);
903 dropExtra2ShiftCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftCtrlExtra2Click);
904 dropExtra2ShiftAlt.ItemIndex := ord(FTempMouseSettings.TextShiftAltExtra2Click);
905 dropExtra2ShiftAltCtrl.ItemIndex := ord(FTempMouseSettings.TextShiftAltCtrlExtra2Click);
906
907 dropWheel.ItemIndex := ord(FTempMouseSettings.Wheel);
908 dropWheelCtrl.ItemIndex := ord(FTempMouseSettings.CtrlWheel);
909 dropWheelAlt.ItemIndex := ord(FTempMouseSettings.AltWheel);
910 dropWheelShift.ItemIndex := ord(FTempMouseSettings.ShiftWheel);
911 dropWheelAltCtrl.ItemIndex := ord(FTempMouseSettings.AltWheel);
912 dropWheelShiftAlt.ItemIndex := ord(FTempMouseSettings.ShiftAltWheel);
913 dropWheelShiftCtrl.ItemIndex := ord(FTempMouseSettings.ShiftCtrlWheel);
914 dropWheelShiftAltCtrl.ItemIndex := ord(FTempMouseSettings.ShiftAltCtrlWheel);
915
916 dropWheelHoriz.ItemIndex := ord(FTempMouseSettings.HorizWheel);
917 dropWheelCtrlHoriz.ItemIndex := ord(FTempMouseSettings.CtrlHorizWheel);
918 dropWheelAltHoriz.ItemIndex := ord(FTempMouseSettings.AltHorizWheel);
919 dropWheelShiftHoriz.ItemIndex := ord(FTempMouseSettings.ShiftHorizWheel);
920 dropWheelAltCtrlHoriz.ItemIndex := ord(FTempMouseSettings.AltHorizWheel);
921 dropWheelShiftAltHoriz.ItemIndex := ord(FTempMouseSettings.ShiftAltHorizWheel);
922 dropWheelShiftCtrlHoriz.ItemIndex := ord(FTempMouseSettings.ShiftCtrlHorizWheel);
923 dropWheelShiftAltCtrlHoriz.ItemIndex := ord(FTempMouseSettings.ShiftAltCtrlHorizWheel);
924
925 Dec(FInClickHandler);
926 UpdateButtons;
927
928 HideMouseCheckBox.Checked := eoAutoHideCursor in TEditorOptions(AOptions).SynEditOptions2;
929 CheckForShiftChange(nil);
930 end;
931
932 procedure TEditorMouseOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
933 begin
934 TEditorOptions(AOptions).UserMouseSettings.Assign(FTempMouseSettings);
935 with TEditorOptions(AOptions) do begin
936 if HideMouseCheckBox.Checked then
937 SynEditOptions2 := SynEditOptions2 + [eoAutoHideCursor]
938 else
939 SynEditOptions2 := SynEditOptions2 - [eoAutoHideCursor]
940 end;
941 end;
942
TEditorMouseOptionsFrame.SupportedOptionsClassnull943 class function TEditorMouseOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
944 begin
945 Result := TEditorOptions;
946 end;
947
TEditorMouseOptionsFrame.DefaultCollapseChildNodesnull948 class function TEditorMouseOptionsFrame.DefaultCollapseChildNodes: Boolean;
949 begin
950 Result := True;
951 end;
952
953 initialization
954 RegisterIDEOptionsEditor(GroupEditor, TEditorMouseOptionsFrame, EdtOptionsMouse);
955 end.
956
957