EditorOptions: user defined mouse schemes

git-svn-id: trunk@25818 -
This commit is contained in:
martin 2010-06-01 19:20:46 +00:00
parent 9e6de7a287
commit 1b77293eb8
6 changed files with 1059 additions and 725 deletions

View File

@ -685,21 +685,31 @@ type
FTextDoubleSelLine: Boolean;
FTextDrag: Boolean;
FTextRightMoveCaret: Boolean;
FUserSchemes: TQuickStringlist;
private
FCustomSavedActions: Boolean;
FOptions: TEditorOptions;
FMainActions, FSelActions: TSynEditMouseActions;
FName: String;
FGutterActions: TSynEditMouseActions;
FGutterActionsFold, FGutterActionsFoldExp, FGutterActionsFoldCol: TSynEditMouseActions;
FGutterActionsLines: TSynEditMouseActions;
FSelectedUserScheme: String;
procedure ClearUserSchemes;
function GetUserSchemeNames(Index: Integer): String;
function GetUserSchemes(Index: String): TEditorMouseOptions;
function GetUserSchemesAtPos(Index: Integer): TEditorMouseOptions;
function GetSelectedUserSchemeIndex: Integer;
procedure SetSelectedUserScheme(const AValue: String);
procedure SetSelectedUserSchemeIndex(const AValue: Integer);
procedure AssignActions(Src: TEditorMouseOptions);
public
constructor Create(AOptions: TEditorOptions);
constructor Create;
destructor Destroy; override;
procedure Reset;
procedure Read;
procedure WriteBack;
procedure ResetGutterToDefault;
procedure ResetTextToDefault;
procedure ResetToUserScheme;
procedure AssignEx(Src: TEditorMouseOptions; WithUserSchemes: Boolean);
procedure Assign(Src: TEditorMouseOptions); reintroduce;
function IsPresetEqualToMouseActions: Boolean;
function CalcCustomSavedActions: Boolean;
@ -707,6 +717,16 @@ type
procedure SaveToXml(aXMLConfig: TRttiXMLConfig; aPath: String);
procedure ImportFromXml(aXMLConfig: TRttiXMLConfig; aPath: String);
procedure ExportToXml(aXMLConfig: TRttiXMLConfig; aPath: String);
procedure LoadUserSchemes;
function UserSchemeCount: Integer;
function IndexOfUserScheme(SchemeName: String): Integer;
property Name: String read FName;
property UserSchemes[Index: String]: TEditorMouseOptions read GetUserSchemes;
property UserSchemesAtPos[Index: Integer]: TEditorMouseOptions read GetUserSchemesAtPos;
property UserSchemeNames[Index: Integer]: String read GetUserSchemeNames;
property SelectedUserSchemeIndex: Integer
read GetSelectedUserSchemeIndex write SetSelectedUserSchemeIndex;
property MainActions: TSynEditMouseActions read FMainActions;
property SelActions: TSynEditMouseActions read FSelActions;
@ -725,6 +745,7 @@ type
property TextCtrlLeftClick: TMouseOptTextCtrlLeft read FTextCtrlLeftClick write FTextCtrlLeftClick;
// the flag below is set by CalcCustomSavedActions
property CustomSavedActions: Boolean read FCustomSavedActions write FCustomSavedActions;
property SelectedUserScheme: String read FSelectedUserScheme write SetSelectedUserScheme;
end;
{ TEditorMouseOptionPresets }
@ -945,13 +966,7 @@ type
fKeyMap: TKeyCommandRelationList;
// Mouse Mappings options
fMouseMap: TSynEditMouseActions;
fMouseSelMap: TSynEditMouseActions;
FMouseGutterActions: TSynEditMouseActions;
FMouseGutterActionsFold: TSynEditMouseActions;
FMouseGutterActionsFoldCol: TSynEditMouseActions;
FMouseGutterActionsFoldExp: TSynEditMouseActions;
FMouseGutterActionsLines: TSynEditMouseActions;
FUserMouseSettings: TEditorMouseOptions;
FTempMouseSettings: TEditorMouseOptions;
// Color options
@ -1088,15 +1103,10 @@ type
property KeyMap: TKeyCommandRelationList read fKeyMap;
// Mouse Mappings
property MouseMap: TSynEditMouseActions read fMouseMap;
property MouseSelMap: TSynEditMouseActions read fMouseSelMap;
property MouseGutterActions: TSynEditMouseActions read FMouseGutterActions;
property MouseGutterActionsFold: TSynEditMouseActions read FMouseGutterActionsFold;
property MouseGutterActionsFoldExp: TSynEditMouseActions read FMouseGutterActionsFoldExp;
property MouseGutterActionsFoldCol: TSynEditMouseActions read FMouseGutterActionsFoldCol;
property MouseGutterActionsLines: TSynEditMouseActions read FMouseGutterActionsLines;
// Used by the 2 Mouse-option pages, so they share data
property TempMouseSettings: TEditorMouseOptions read FTempMouseSettings write FTempMouseSettings;
// Current saved config
property UserMouseSettings: TEditorMouseOptions read FUserMouseSettings;
// Used by the 2 Mouse-option pages, so they share data (un-saved)
property TempMouseSettings: TEditorMouseOptions read FTempMouseSettings;
// Color options
property HighlighterList: TEditOptLangList read fHighlighterList;
@ -2396,11 +2406,39 @@ end;
{ TEditorMouseOptions }
constructor TEditorMouseOptions.Create(AOptions: TEditorOptions);
procedure TEditorMouseOptions.ClearUserSchemes;
begin
while FUserSchemes.Count > 0 do begin
FUserSchemes.Objects[0].Free;
FUserSchemes.Delete(0);
end;
end;
function TEditorMouseOptions.GetUserSchemeNames(Index: Integer): String;
begin
Result := TEditorMouseOptions(FUserSchemes.Objects[Index]).Name;
end;
function TEditorMouseOptions.GetUserSchemes(Index: String): TEditorMouseOptions;
var
i: Integer;
begin
i := IndexOfUserScheme(Index);
if i >= 0 then
Result := UserSchemesAtPos[i]
else
Result := nil;
end;
function TEditorMouseOptions.GetUserSchemesAtPos(Index: Integer): TEditorMouseOptions;
begin
Result := TEditorMouseOptions(FUserSchemes.Objects[Index]);
end;
constructor TEditorMouseOptions.Create;
begin
inherited Create;
Reset;
FOptions := AOptions;
FMainActions := TSynEditMouseActions.Create(nil);
FSelActions := TSynEditMouseActions.Create(nil);
FGutterActions := TSynEditMouseActions.Create(nil);
@ -2408,10 +2446,13 @@ begin
FGutterActionsFoldExp := TSynEditMouseActions.Create(nil);
FGutterActionsFoldCol := TSynEditMouseActions.Create(nil);
FGutterActionsLines := TSynEditMouseActions.Create(nil);
FUserSchemes := TQuickStringlist.Create;
end;
destructor TEditorMouseOptions.Destroy;
begin
ClearUserSchemes;
FUserSchemes.Free;
FMainActions.Free;
FSelActions.Free;
FGutterActions.Free;
@ -2434,28 +2475,6 @@ begin
FTextDrag := True;
end;
procedure TEditorMouseOptions.Read;
begin
FMainActions.Assign(FOptions.MouseMap);
FSelActions.Assign(FOptions.MouseSelMap);
FGutterActions.Assign(FOptions.MouseGutterActions);
FGutterActionsFold.Assign(FOptions.MouseGutterActionsFold);
FGutterActionsFoldExp.Assign(FOptions.MouseGutterActionsFoldExp);
FGutterActionsFoldCol.Assign(FOptions.MouseGutterActionsFoldCol);
FGutterActionsLines.Assign(FOptions.MouseGutterActionsLines);
end;
procedure TEditorMouseOptions.WriteBack;
begin
FOptions.MouseMap.Assign(FMainActions);
FOptions.MouseSelMap.Assign(FSelActions);
FOptions.MouseGutterActions.Assign(FGutterActions);
FOptions.MouseGutterActionsFold.Assign(FGutterActionsFold);
FOptions.MouseGutterActionsFoldExp.Assign(FGutterActionsFoldExp);
FOptions.MouseGutterActionsFoldCol.Assign(FGutterActionsFoldCol);
FOptions.MouseGutterActionsLines.Assign(FGutterActionsLines);
end;
procedure TEditorMouseOptions.ResetGutterToDefault;
var
CDir: TSynMAClickDir;
@ -2571,16 +2590,17 @@ begin
end;
end;
procedure TEditorMouseOptions.Assign(Src: TEditorMouseOptions);
procedure TEditorMouseOptions.ResetToUserScheme;
var
i: LongInt;
begin
FAltColumnMode := Src.AltColumnMode;
FGutterLeft := Src.GutterLeft;
FTextMiddleClick := Src.TextMiddleClick;
FTextCtrlLeftClick := Src.TextCtrlLeftClick;
FTextDoubleSelLine := Src.TextDoubleSelLine;
FTextDrag := Src.TextDrag;
FTextRightMoveCaret := Src.TextRightMoveCaret;
i := SelectedUserSchemeIndex;
if i < 0 then exit;
AssignActions(UserSchemesAtPos[i]);
end;
procedure TEditorMouseOptions.AssignActions(Src: TEditorMouseOptions);
begin
FMainActions.Assign (Src.MainActions);
FSelActions.Assign (Src.SelActions);
FGutterActions.Assign (Src.GutterActions);
@ -2590,14 +2610,52 @@ begin
FGutterActionsLines.Assign (Src.GutterActionsLines);
end;
procedure TEditorMouseOptions.AssignEx(Src: TEditorMouseOptions; WithUserSchemes: Boolean);
var
i: Integer;
begin
FName := Src.FName;
FAltColumnMode := Src.AltColumnMode;
FGutterLeft := Src.GutterLeft;
FTextMiddleClick := Src.TextMiddleClick;
FTextCtrlLeftClick := Src.TextCtrlLeftClick;
FTextDoubleSelLine := Src.TextDoubleSelLine;
FTextDrag := Src.TextDrag;
FTextRightMoveCaret := Src.TextRightMoveCaret;
FSelectedUserScheme := Src.FSelectedUserScheme;
AssignActions(Src);
if WithUserSchemes then begin
ClearUserSchemes;
for i := 0 to Src.FUserSchemes.Count - 1 do begin
FUserSchemes.AddObject(Src.FUserSchemes[i], TEditorMouseOptions.Create);
TEditorMouseOptions(FUserSchemes.Objects[i]).Assign
( TEditorMouseOptions(Src.FUserSchemes.Objects[i]) );
end;
end;
end;
procedure TEditorMouseOptions.Assign(Src: TEditorMouseOptions);
begin
AssignEx(Src, True);
end;
function TEditorMouseOptions.IsPresetEqualToMouseActions: Boolean;
var
Temp: TEditorMouseOptions;
i: Integer;
begin
Temp := TEditorMouseOptions.Create(nil);
Temp.Assign(self);
i := SelectedUserSchemeIndex;
Temp := TEditorMouseOptions.Create;
Temp.AssignEx(self, i >= 0);
if i >= 0 then begin
Temp.ResetToUserScheme;
end else begin
Temp.ResetTextToDefault;
Temp.ResetGutterToDefault;
end;
Result :=
Temp.MainActions.Equals(self.MainActions) and
Temp.SelActions.Equals (self.SelActions) and
@ -2610,14 +2668,8 @@ begin
end;
function TEditorMouseOptions.CalcCustomSavedActions: Boolean;
var
Temp: TEditorMouseOptions;
begin
Temp := TEditorMouseOptions.Create(FOptions);
Temp.Assign(self);
Temp.Read;
Result := not Temp.IsPresetEqualToMouseActions;
Temp.Free;
Result := not IsPresetEqualToMouseActions;
FCustomSavedActions := Result;
end;
@ -2681,22 +2733,27 @@ begin
CustomSavedActions := False;
aXMLConfig.ReadObject(aPath + 'Default/', Self);
if (FSelectedUserScheme <> '') and (UserSchemes[FSelectedUserScheme] = nil) then
FSelectedUserScheme := '';
if CustomSavedActions then begin
// Load
LoadMouseAct(aPath + 'Main/', FOptions.MouseMap);
LoadMouseAct(aPath + 'MainSelection/', FOptions.MouseSelMap);
LoadMouseAct(aPath + 'Gutter/', FOptions.MouseGutterActions);
LoadMouseAct(aPath + 'GutterFold/', FOptions.MouseGutterActionsFold);
LoadMouseAct(aPath + 'GutterFoldExp/', FOptions.MouseGutterActionsFoldExp);
LoadMouseAct(aPath + 'GutterFoldCol/', FOptions.MouseGutterActionsFoldCol);
LoadMouseAct(aPath + 'GutterLineNum/', FOptions.MouseGutterActionsLines);
LoadMouseAct(aPath + 'Main/', MainActions);
LoadMouseAct(aPath + 'MainSelection/', SelActions);
LoadMouseAct(aPath + 'Gutter/', GutterActions);
LoadMouseAct(aPath + 'GutterFold/', GutterActionsFold);
LoadMouseAct(aPath + 'GutterFoldExp/', GutterActionsFoldExp);
LoadMouseAct(aPath + 'GutterFoldCol/', GutterActionsFoldCol);
LoadMouseAct(aPath + 'GutterLineNum/', GutterActionsLines);
end
else begin
else
if (FSelectedUserScheme <> '') then begin
ResetToUserScheme;
end else begin
ResetTextToDefault;
ResetGutterToDefault;
WriteBack;
end;
end;
procedure TEditorMouseOptions.SaveToXml(aXMLConfig: TRttiXMLConfig; aPath: String);
@ -2724,30 +2781,29 @@ procedure TEditorMouseOptions.SaveToXml(aXMLConfig: TRttiXMLConfig; aPath: Strin
var
DefMouseSettings: TEditorMouseOptions;
begin
DefMouseSettings := TEditorMouseOptions.Create(FOptions);
DefMouseSettings := TEditorMouseOptions.Create;
CalcCustomSavedActions;
aXMLConfig.WriteObject('EditorOptions/Mouse/Default/', Self, DefMouseSettings);
aXMLConfig.WriteObject(aPath + 'Default/', Self, DefMouseSettings);
DefMouseSettings.Free;
if CustomSavedActions then begin
// Save full settings / based on empty
SaveMouseAct('EditorOptions/Mouse/Main/', FOptions.MouseMap);
SaveMouseAct('EditorOptions/Mouse/MainSelection/', FOptions.MouseSelMap);
SaveMouseAct('EditorOptions/Mouse/Gutter/', FOptions.MouseGutterActions);
SaveMouseAct('EditorOptions/Mouse/GutterFold/', FOptions.MouseGutterActionsFold);
SaveMouseAct('EditorOptions/Mouse/GutterFoldExp/', FOptions.MouseGutterActionsFoldExp);
SaveMouseAct('EditorOptions/Mouse/GutterFoldCol/', FOptions.MouseGutterActionsFoldCol);
SaveMouseAct('EditorOptions/Mouse/GutterLineNum/', FOptions.MouseGutterActionsLines);
SaveMouseAct(aPath + 'Main/', MainActions);
SaveMouseAct(aPath + 'MainSelection/', SelActions);
SaveMouseAct(aPath + 'Gutter/', GutterActions);
SaveMouseAct(aPath + 'GutterFold/', GutterActionsFold);
SaveMouseAct(aPath + 'GutterFoldExp/', GutterActionsFoldExp);
SaveMouseAct(aPath + 'GutterFoldCol/', GutterActionsFoldCol);
SaveMouseAct(aPath + 'GutterLineNum/', GutterActionsLines);
end else begin
// clear unused entries
aXMLConfig.DeletePath('EditorOptions/Mouse/Main');
aXMLConfig.DeletePath('EditorOptions/Mouse/MainSelection');
aXMLConfig.DeletePath('EditorOptions/Mouse/Gutter');
aXMLConfig.DeletePath('EditorOptions/Mouse/GutterFold');
aXMLConfig.DeletePath('EditorOptions/Mouse/GutterFoldExp');
aXMLConfig.DeletePath('EditorOptions/Mouse/GutterFoldCol');
aXMLConfig.DeletePath('EditorOptions/Mouse/GutterLineNum');
aXMLConfig.DeletePath(aPath + 'Main');
aXMLConfig.DeletePath(aPath + 'MainSelection');
aXMLConfig.DeletePath(aPath + 'Gutter');
aXMLConfig.DeletePath(aPath + 'GutterFold');
aXMLConfig.DeletePath(aPath + 'GutterFoldExp');
aXMLConfig.DeletePath(aPath + 'GutterFoldCol');
aXMLConfig.DeletePath(aPath + 'GutterLineNum');
end;
end;
procedure TEditorMouseOptions.ImportFromXml(aXMLConfig: TRttiXMLConfig; aPath: String);
@ -2821,6 +2877,72 @@ begin
MAct.Free;
end;
procedure TEditorMouseOptions.LoadUserSchemes;
var
i, j, k, c: Integer;
FileList: TStringList;
XMLConfig: TRttiXMLConfig;
n: String;
begin
ClearUserSchemes;
if DirectoryExistsUTF8(UserSchemeDirectory(False)) then begin
FileList := FindAllFiles(UserSchemeDirectory(False), '*.xml', False);
for i := 0 to FileList.Count - 1 do begin
XMLConfig := nil;
try
XMLConfig := TRttiXMLConfig.Create(FileList[i]);
c := XMLConfig.GetValue('Lazarus/MouseSchemes/Names/Count', 0);
for j := 0 to c-1 do begin
n := XMLConfig.GetValue('Lazarus/MouseSchemes/Names/Item'+IntToStr(j+1)+'/Value', '');
if n <> '' then begin
k := FUserSchemes.AddObject(UTF8UpperCase(n), TEditorMouseOptions.Create);
TEditorMouseOptions(FUserSchemes.Objects[k]).FName := n;
TEditorMouseOptions(FUserSchemes.Objects[k]).ImportFromXml
(XMLConfig, 'Lazarus/MouseSchemes/Scheme' + n + '/');
end;
end;
except
ShowMessage(Format(dlgUserSchemeError, [FileList[i]]));
end;
XMLConfig.Free;
end;
FileList.Free;
end;
end;
function TEditorMouseOptions.UserSchemeCount: Integer;
begin
Result := FUserSchemes.Count;
end;
function TEditorMouseOptions.IndexOfUserScheme(SchemeName: String): Integer;
begin
Result := FUserSchemes.IndexOf(UTF8UpperCase(SchemeName));
end;
function TEditorMouseOptions.GetSelectedUserSchemeIndex: Integer;
begin
if FSelectedUserScheme = '' then
Result := -1
else
Result := IndexOfUserScheme(FSelectedUserScheme);
end;
procedure TEditorMouseOptions.SetSelectedUserScheme(const AValue: String);
begin
if FSelectedUserScheme = AValue then exit;
FSelectedUserScheme := AValue;
ResetToUserScheme;
end;
procedure TEditorMouseOptions.SetSelectedUserSchemeIndex(const AValue: Integer);
begin
if AValue < 0 then
SelectedUserScheme := ''
else
SelectedUserScheme := TEditorMouseOptions(FUserSchemes.Objects[AValue]).Name;
end;
{ TEditorMouseOptionPresets }
constructor TEditorMouseOptionPresets.Create;
@ -3030,7 +3152,6 @@ begin
inherited Create;
InitLocale;
FTempMouseSettings := TEditorMouseOptions.Create(self);
ConfFileName := SetDirSeparators(GetPrimaryConfigPath + '/' +
EditOptsConfFileName);
CopySecondaryConfigFile(EditOptsConfFileName);
@ -3076,20 +3197,10 @@ begin
fKeyMap := TKeyCommandRelationList.Create;
// Mouse Mappings
fMouseMap := TSynEditMouseTextActions.Create(nil);
fMouseMap.ResetDefaults;
fMouseSelMap := TSynEditMouseSelActions.Create(nil);
fMouseSelMap.ResetDefaults;
FMouseGutterActions := TSynEditMouseActionsGutter.Create(nil);
FMouseGutterActions.ResetDefaults;
FMouseGutterActionsFold := TSynEditMouseActionsGutterFold.Create(nil);
FMouseGutterActionsFold.ResetDefaults;
FMouseGutterActionsFoldCol := TSynEditMouseActionsGutterFoldCollapsed.Create(nil);
FMouseGutterActionsFoldCol.ResetDefaults;
FMouseGutterActionsFoldExp := TSynEditMouseActionsGutterFoldExpanded.Create(nil);
FMouseGutterActionsFoldExp.ResetDefaults;
FMouseGutterActionsLines := TSynEditMouseActionsLineNum.Create(nil);
FMouseGutterActionsLines.ResetDefaults;
FUserMouseSettings := TEditorMouseOptions.Create;
FTempMouseSettings := TEditorMouseOptions.Create;
FUserMouseSettings.LoadUserSchemes;
// Color options
fHighlighterList := HighlighterListSingleton;
FUserColorSchemeSettings := TColorSchemeFactory.Create;
@ -3132,16 +3243,10 @@ end;
destructor TEditorOptions.Destroy;
begin
FreeAndNil(FUserColorSchemeSettings);
fMouseMap.Free;
fMouseSelMap.Free;
FMouseGutterActions.Free;
FMouseGutterActionsFold.Free;
FMouseGutterActionsFoldCol.Free;
FMouseGutterActionsFoldExp.Free;
FMouseGutterActionsLines.Free;
fKeyMap.Free;
FreeAndNil(FMultiWinEditAccessOrder);
XMLConfig.Free;
FUserMouseSettings.Free;
FTempMouseSettings.Free;
inherited Destroy;
end;
@ -3339,7 +3444,7 @@ begin
XMLConfig.GetValue(
'EditorOptions/CodeFolding/UseCodeFolding', True);
FTempMouseSettings.LoadFromXml(XMLConfig, 'EditorOptions/Mouse/',
FUserMouseSettings.LoadFromXml(XMLConfig, 'EditorOptions/Mouse/',
'EditorOptions/General/Editor/');
FMultiWinEditAccessOrder.LoadFromXMLConfig(XMLConfig, 'EditorOptions/MultiWin/');
@ -3511,7 +3616,7 @@ begin
XMLConfig.SetDeleteValue('EditorOptions/CodeFolding/UseCodeFolding',
FUseCodeFolding, True);
FTempMouseSettings.SaveToXml(XMLConfig, 'EditorOptions/Mouse/');
FUserMouseSettings.SaveToXml(XMLConfig, 'EditorOptions/Mouse/');
FMultiWinEditAccessOrder.SaveToXMLConfig(XMLConfig, 'EditorOptions/MultiWin/');
UserColorSchemeGroup.SaveToXml(XMLConfig, 'EditorOptions/Color/', ColorSchemeFactory);
@ -4046,16 +4151,16 @@ begin
end;
end;
ASynEdit.MouseActions.Assign(MouseMap);
ASynEdit.MouseSelActions.Assign(MouseSelMap);
ASynEdit.Gutter.MouseActions.Assign(MouseGutterActions);
ASynEdit.MouseActions.Assign(FUserMouseSettings.MainActions);
ASynEdit.MouseSelActions.Assign(FUserMouseSettings.SelActions);
ASynEdit.Gutter.MouseActions.Assign(FUserMouseSettings.GutterActions);
if ASynEdit.Gutter.CodeFoldPart <> nil then begin
ASynEdit.Gutter.CodeFoldPart.MouseActions.Assign(MouseGutterActionsFold);
ASynEdit.Gutter.CodeFoldPart.MouseActionsCollapsed.Assign(MouseGutterActionsFoldCol);
ASynEdit.Gutter.CodeFoldPart.MouseActionsExpanded.Assign(MouseGutterActionsFoldExp);
ASynEdit.Gutter.CodeFoldPart.MouseActions.Assign(FUserMouseSettings.GutterActionsFold);
ASynEdit.Gutter.CodeFoldPart.MouseActionsCollapsed.Assign(FUserMouseSettings.GutterActionsFoldCol);
ASynEdit.Gutter.CodeFoldPart.MouseActionsExpanded.Assign(FUserMouseSettings.GutterActionsFoldExp);
end;
if ASynEdit.Gutter.LineNumberPart <> nil then begin
ASynEdit.Gutter.LineNumberPart.MouseActions.Assign(MouseGutterActionsLines);
ASynEdit.Gutter.LineNumberPart.MouseActions.Assign(FUserMouseSettings.GutterActionsLines);
end;
end;

View File

@ -1,55 +1,155 @@
inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
Height = 487
Width = 607
Height = 480
Width = 697
Anchors = [akTop]
ClientHeight = 487
ClientWidth = 607
TabOrder = 0
AutoScroll = True
ClientHeight = 480
ClientWidth = 697
Visible = False
DesignLeft = 153
DesignTop = 291
object DiffLabel: TLabel[0]
object ScrollBox1: TScrollBox[0]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = BottomDivider
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ResetAllButton
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 14
Top = 382
Width = 492
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'DiffLabel'
Font.Color = clRed
ParentColor = False
ParentFont = False
WordWrap = True
end
object GutterDividerRight: TBevel[1]
AnchorSideLeft.Control = GutterDividerLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = GutterDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 188
AnchorSideBottom.Control = pnlBottom
Left = 0
Height = 440
Top = 0
Width = 697
Anchors = [akTop, akLeft, akRight, akBottom]
AutoSize = True
BorderStyle = bsNone
ClientHeight = 423
ClientWidth = 680
TabOrder = 0
object pnlUserSchemes: TPanel
AnchorSideLeft.Control = ScrollBox1
AnchorSideTop.Control = ScrollBox1
AnchorSideRight.Control = ScrollBox1
AnchorSideRight.Side = asrBottom
Left = 0
Height = 23
Top = 0
Width = 697
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BevelOuter = bvNone
ClientHeight = 23
ClientWidth = 697
TabOrder = 0
Visible = False
object chkPredefinedScheme: TCheckBox
AnchorSideLeft.Control = pnlUserSchemes
AnchorSideTop.Control = dropUserSchemes
AnchorSideTop.Side = asrCenter
Left = 6
Height = 19
Top = 2
Width = 138
BorderSpacing.Left = 6
Caption = 'chkPredefinedScheme'
OnChange = chkPredefinedSchemeChange
TabOrder = 0
end
object dropUserSchemes: TComboBox
AnchorSideLeft.Control = chkPredefinedScheme
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = pnlUserSchemes
AnchorSideRight.Control = pnlUserSchemes
AnchorSideRight.Side = asrBottom
Left = 150
Height = 23
Top = 0
Width = 200
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
Constraints.MaxWidth = 200
ItemHeight = 15
OnChange = dropUserSchemesChange
OnExit = dropUserSchemesChange
OnKeyDown = dropUserSchemesKeyDown
Style = csDropDownList
TabOrder = 1
end
end
object GenericDividerLeft: TBevel
AnchorSideLeft.Control = ScrollBox1
AnchorSideTop.Control = GenericDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 49
Width = 419
Top = 36
Width = 60
BorderSpacing.Bottom = 6
end
object GenericDividerLabel: TLabel
AnchorSideLeft.Control = GenericDividerLeft
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = pnlUserSchemes
AnchorSideTop.Side = asrBottom
Left = 70
Height = 16
Top = 29
Width = 115
BorderSpacing.Left = 10
BorderSpacing.Top = 6
BorderSpacing.Right = 10
BorderSpacing.Bottom = 6
Caption = 'GenericDividerLabel'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object GenericDividerRight: TBevel
AnchorSideLeft.Control = GenericDividerLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = GenericDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = ScrollBox1
AnchorSideRight.Side = asrBottom
Left = 195
Height = 3
Top = 36
Width = 502
Anchors = [akTop, akLeft, akRight]
end
object GutterDividerLabel: TLabel[2]
object HideMouseCheckBox: TCheckBox
AnchorSideLeft.Control = ScrollBox1
AnchorSideTop.Control = GenericDividerLabel
AnchorSideTop.Side = asrBottom
Left = 6
Height = 19
Top = 51
Width = 133
BorderSpacing.Left = 6
BorderSpacing.Top = 6
Caption = 'HideMouseCheckBox'
TabOrder = 1
end
object GutterDividerLeft: TBevel
AnchorSideLeft.Control = ScrollBox1
AnchorSideTop.Control = GutterDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 83
Width = 60
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
end
object GutterDividerLabel: TLabel
AnchorSideLeft.Control = GutterDividerLeft
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = HideMouseCheckBox
AnchorSideTop.Side = asrBottom
Left = 70
Height = 14
Top = 43
Width = 108
Height = 16
Top = 76
Width = 109
BorderSpacing.Left = 10
BorderSpacing.Top = 6
BorderSpacing.Right = 10
@ -59,230 +159,127 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
ParentColor = False
ParentFont = False
end
object GutterDividerLeft: TBevel[3]
AnchorSideLeft.Control = Owner
object GutterDividerRight: TBevel
AnchorSideLeft.Control = GutterDividerLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = GutterDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = ScrollBox1
AnchorSideRight.Side = asrBottom
Left = 0
Left = 189
Height = 3
Top = 49
Width = 60
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
end
object TextDividerLeft: TBevel[4]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = TextDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 148
Width = 60
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
end
object TextDividerLabel: TLabel[5]
AnchorSideLeft.Control = GutterDividerLeft
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ResetGutterButton
AnchorSideTop.Side = asrBottom
Left = 70
Height = 14
Top = 142
Width = 97
BorderSpacing.Left = 10
BorderSpacing.Right = 10
BorderSpacing.Bottom = 6
Caption = 'TextDividerLabel'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object TextDividerRight: TBevel[6]
AnchorSideLeft.Control = TextDividerLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = TextDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 177
Height = 3
Top = 148
Width = 430
Top = 83
Width = 508
Anchors = [akTop, akLeft, akRight]
end
object BottomDivider: TBevel[7]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = ResetTextButton
object pnlAllGutter: TPanel
AnchorSideLeft.Control = ScrollBox1
AnchorSideTop.Control = GutterDividerLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Control = ScrollBox1
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 373
Width = 607
Height = 81
Top = 98
Width = 697
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Bottom = 6
end
object WarnLabel: TLabel[8]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = BottomDivider
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ResetAllButton
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 14
Top = 382
Width = 492
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'WarnLabel'
Font.Color = clRed
ParentColor = False
ParentFont = False
WordWrap = True
end
object MiddleBtnLabel: TLabel[9]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = PanelTextCheckBox
AnchorSideTop.Side = asrBottom
Left = 6
Height = 14
Top = 236
Width = 72
BorderSpacing.Left = 6
Caption = 'MiddleBtnLabel'
ParentColor = False
end
object CtrLLeftLabel: TLabel[10]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = PanelTextMiddle
AnchorSideTop.Side = asrBottom
Left = 6
Height = 14
Top = 290
Width = 65
BorderSpacing.Left = 6
Caption = 'CtrLLeftLabel'
ParentColor = False
end
object GenericDividerLeft: TBevel[11]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = GenericDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 6
Width = 60
BorderSpacing.Bottom = 6
end
object GenericDividerLabel: TLabel[12]
AnchorSideLeft.Control = GenericDividerLeft
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
Left = 70
Height = 14
Top = 0
Width = 114
BorderSpacing.Left = 10
BorderSpacing.Right = 10
BorderSpacing.Bottom = 6
Caption = 'GenericDividerLabel'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object GenericDividerRight: TBevel[13]
AnchorSideLeft.Control = GenericDividerLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = GenericDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 194
Height = 3
Top = 6
Width = 413
Anchors = [akTop, akLeft, akRight]
end
object ResetAllButton: TButton[14]
AnchorSideTop.Control = BottomDivider
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 504
Height = 23
Top = 382
Width = 97
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 6
BorderSpacing.Right = 6
Caption = 'ResetAllButton'
OnClick = ResetAllButtonClick
TabOrder = 0
end
object PanelGutter: TPanel[15]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = GutterDividerLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
BevelOuter = bvNone
ClientHeight = 81
ClientWidth = 697
TabOrder = 2
object PanelGutter: TPanel
AnchorSideLeft.Control = pnlAllGutter
AnchorSideTop.Control = pnlAllGutter
AnchorSideRight.Control = pnlAllGutter
AnchorSideRight.Side = asrBottom
Left = 6
Height = 44
Top = 63
Width = 595
Top = 0
Width = 685
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Left = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
BevelOuter = bvNone
ChildSizing.ControlsPerLine = 1
ClientHeight = 44
ClientWidth = 595
TabOrder = 1
ClientWidth = 685
TabOrder = 0
object GutterLeftRadio1: TRadioButton
AnchorSideTop.Side = asrBottom
AnchorSideLeft.Control = PanelGutter
AnchorSideTop.Control = PanelGutter
AnchorSideRight.Control = PanelGutter
AnchorSideRight.Side = asrBottom
Left = 0
Height = 19
Top = 0
Width = 595
AutoSize = False
Width = 685
Anchors = [akTop, akLeft, akRight]
Caption = 'GutterLeftRadio1'
OnChange = CheckOrRadioChange
TabOrder = 0
end
object GutterLeftRadio2: TRadioButton
AnchorSideLeft.Control = PanelGutter
AnchorSideTop.Control = GutterLeftRadio1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = PanelGutter
AnchorSideRight.Side = asrBottom
Left = 0
Height = 19
Top = 19
Width = 595
AutoSize = False
Width = 685
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Bottom = 6
Caption = 'GutterLeftRadio2'
OnChange = CheckOrRadioChange
TabOrder = 1
end
end
object PanelTextMiddle: TPanel[16]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MiddleBtnLabel
object ResetGutterButton: TButton
AnchorSideTop.Control = PanelGutter
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Control = pnlAllGutter
AnchorSideRight.Side = asrBottom
Left = 568
Height = 25
Top = 50
Width = 123
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
Caption = 'ResetGutterButton'
OnClick = ResetGutterButtonClick
TabOrder = 1
end
end
object pnlAllText: TPanel
AnchorSideLeft.Control = ScrollBox1
AnchorSideTop.Control = TextDividerLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ScrollBox1
AnchorSideRight.Side = asrBottom
Left = 0
Height = 233
Top = 201
Width = 697
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BevelOuter = bvNone
ClientHeight = 233
ClientWidth = 697
TabOrder = 3
object PanelTextCheckBox: TPanel
AnchorSideLeft.Control = pnlAllText
AnchorSideTop.Control = pnlAllText
AnchorSideRight.Control = pnlAllText
AnchorSideRight.Side = asrBottom
Left = 6
Height = 34
Top = 250
Width = 595
Height = 76
Top = 0
Width = 685
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Left = 6
@ -290,16 +287,98 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
BorderSpacing.Bottom = 6
BevelOuter = bvNone
ChildSizing.ControlsPerLine = 2
ClientHeight = 34
ClientWidth = 595
ClientHeight = 76
ClientWidth = 685
TabOrder = 0
object TextAltMode: TCheckBox
AnchorSideLeft.Control = PanelTextCheckBox
AnchorSideTop.Control = PanelTextCheckBox
Left = 0
Height = 19
Top = 0
Width = 88
Caption = 'TextAltMode'
OnChange = CheckOrRadioChange
TabOrder = 0
end
object TextDrag: TCheckBox
AnchorSideLeft.Control = PanelTextCheckBox
AnchorSideTop.Control = TextAltMode
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 19
Width = 67
Caption = 'TextDrag'
OnChange = CheckOrRadioChange
TabOrder = 1
end
object RightMoveCaret: TCheckBox
AnchorSideLeft.Control = PanelTextCheckBox
AnchorSideTop.Control = TextDrag
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 38
Width = 106
Caption = 'RightMoveCaret'
OnChange = CheckOrRadioChange
TabOrder = 2
end
object TextDoubleSelLine: TCheckBox
AnchorSideLeft.Control = RightMoveCaret
AnchorSideTop.Control = RightMoveCaret
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 57
Width = 117
Caption = 'TextDoubleSelLine'
OnChange = CheckOrRadioChange
TabOrder = 3
end
end
object MiddleBtnLabel: TLabel
AnchorSideLeft.Control = pnlAllText
AnchorSideTop.Control = PanelTextCheckBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = pnlAllText
AnchorSideRight.Side = asrBottom
Left = 6
Height = 16
Top = 82
Width = 84
BorderSpacing.Left = 6
Caption = 'MiddleBtnLabel'
ParentColor = False
end
object PanelTextMiddle: TPanel
AnchorSideLeft.Control = pnlAllText
AnchorSideTop.Control = MiddleBtnLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = pnlAllText
AnchorSideRight.Side = asrBottom
Left = 6
Height = 38
Top = 98
Width = 685
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Left = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
BevelOuter = bvNone
ChildSizing.ControlsPerLine = 2
ClientHeight = 38
ClientWidth = 685
TabOrder = 1
object TextMidRadio1: TRadioButton
AnchorSideLeft.Control = PanelTextMiddle
AnchorSideTop.Control = PanelTextMiddle
Left = 0
Height = 17
Height = 19
Top = 0
Width = 89
Width = 99
Caption = 'TextMidRadio1'
OnChange = CheckOrRadioChange
TabOrder = 0
@ -308,9 +387,9 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
AnchorSideLeft.Control = PanelTextMiddle
AnchorSideTop.Control = PanelTextMiddle
Left = 250
Height = 17
Height = 19
Top = 0
Width = 89
Width = 99
BorderSpacing.Left = 250
Caption = 'TextMidRadio2'
OnChange = CheckOrRadioChange
@ -321,126 +400,36 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
AnchorSideTop.Control = TextMidRadio1
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 17
Width = 89
Height = 19
Top = 19
Width = 99
Caption = 'TextMidRadio3'
OnChange = CheckOrRadioChange
TabOrder = 2
end
end
object ResetGutterButton: TButton[17]
AnchorSideTop.Control = PanelGutter
object CtrLLeftLabel: TLabel
AnchorSideLeft.Control = pnlAllText
AnchorSideTop.Control = PanelTextMiddle
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 484
Height = 23
Top = 113
Width = 117
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
Caption = 'ResetGutterButton'
OnClick = ResetGutterButtonClick
TabOrder = 3
end
object ResetTextButton: TButton[18]
AnchorSideTop.Control = PanelTextCtrlLeft
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 493
Height = 23
Top = 344
Width = 108
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
Caption = 'ResetTextButton'
OnClick = ResetTextButtonClick
TabOrder = 4
end
object PanelTextCheckBox: TPanel[19]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = TextDividerLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 6
Height = 68
Top = 162
Width = 595
Anchors = [akTop, akLeft, akRight]
AutoSize = True
Height = 16
Top = 142
Width = 71
BorderSpacing.Left = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
BevelOuter = bvNone
ChildSizing.ControlsPerLine = 2
ClientHeight = 68
ClientWidth = 595
TabOrder = 5
object TextAltMode: TCheckBox
AnchorSideLeft.Control = PanelTextCheckBox
AnchorSideTop.Control = PanelTextCheckBox
Left = 0
Height = 17
Top = 0
Width = 79
Caption = 'TextAltMode'
OnChange = CheckOrRadioChange
TabOrder = 0
Caption = 'CtrLLeftLabel'
ParentColor = False
end
object TextDrag: TCheckBox
AnchorSideLeft.Control = PanelTextCheckBox
AnchorSideTop.Control = TextAltMode
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 17
Width = 63
Caption = 'TextDrag'
OnChange = CheckOrRadioChange
TabOrder = 1
end
object RightMoveCaret: TCheckBox
AnchorSideLeft.Control = PanelTextCheckBox
AnchorSideTop.Control = TextDrag
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 34
Width = 96
Caption = 'RightMoveCaret'
OnChange = CheckOrRadioChange
TabOrder = 2
end
object TextDoubleSelLine: TCheckBox
AnchorSideLeft.Control = RightMoveCaret
AnchorSideTop.Control = RightMoveCaret
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 51
Width = 106
Caption = 'TextDoubleSelLine'
OnChange = CheckOrRadioChange
TabOrder = 3
end
end
object PanelTextCtrlLeft: TPanel[20]
AnchorSideLeft.Control = Owner
object PanelTextCtrlLeft: TPanel
AnchorSideLeft.Control = pnlAllText
AnchorSideTop.Control = CtrLLeftLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Control = pnlAllText
AnchorSideRight.Side = asrBottom
Left = 6
Height = 34
Top = 304
Width = 595
Height = 38
Top = 158
Width = 685
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Left = 6
@ -448,16 +437,16 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
BorderSpacing.Bottom = 6
BevelOuter = bvNone
ChildSizing.ControlsPerLine = 2
ClientHeight = 34
ClientWidth = 595
TabOrder = 6
ClientHeight = 38
ClientWidth = 685
TabOrder = 2
object CtrlLeftRadio1: TRadioButton
AnchorSideLeft.Control = PanelTextCtrlLeft
AnchorSideTop.Control = PanelTextCtrlLeft
Left = 0
Height = 17
Height = 19
Top = 0
Width = 87
Width = 95
Caption = 'CtrlLeftRadio1'
OnChange = CheckOrRadioChange
TabOrder = 0
@ -466,9 +455,9 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
AnchorSideLeft.Control = PanelTextCtrlLeft
AnchorSideTop.Control = PanelTextCtrlLeft
Left = 250
Height = 17
Height = 19
Top = 0
Width = 87
Width = 95
BorderSpacing.Left = 250
Caption = 'CtrlLeftRadio2'
OnChange = CheckOrRadioChange
@ -479,25 +468,158 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
AnchorSideTop.Control = CtrlLeftRadio1
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 17
Width = 87
Height = 19
Top = 19
Width = 95
Caption = 'CtrlLeftRadio3'
OnChange = CheckOrRadioChange
TabOrder = 2
end
end
object HideMouseCheckBox: TCheckBox[21]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = GenericDividerLabel
object ResetTextButton: TButton
AnchorSideTop.Control = PanelTextCtrlLeft
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 20
Width = 117
BorderSpacing.Left = 6
AnchorSideRight.Side = asrBottom
Left = 579
Height = 25
Top = 202
Width = 112
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
Caption = 'ResetTextButton'
OnClick = ResetTextButtonClick
TabOrder = 3
end
end
object TextDividerLeft: TBevel
AnchorSideLeft.Control = ScrollBox1
AnchorSideTop.Control = TextDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 186
Width = 60
BorderSpacing.Top = 6
Caption = 'HideMouseCheckBox'
TabOrder = 7
BorderSpacing.Bottom = 6
end
object TextDividerLabel: TLabel
AnchorSideLeft.Control = GutterDividerLeft
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = pnlAllGutter
AnchorSideTop.Side = asrBottom
Left = 70
Height = 16
Top = 179
Width = 97
BorderSpacing.Left = 10
BorderSpacing.Right = 10
BorderSpacing.Bottom = 6
Caption = 'TextDividerLabel'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object TextDividerRight: TBevel
AnchorSideLeft.Control = TextDividerLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = TextDividerLabel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = ScrollBox1
AnchorSideRight.Side = asrBottom
Left = 177
Height = 3
Top = 186
Width = 520
Anchors = [akTop, akLeft, akRight]
end
end
object pnlBottom: TPanel[1]
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 40
Top = 440
Width = 697
Anchors = [akLeft, akRight, akBottom]
AutoSize = True
BevelOuter = bvNone
ClientHeight = 40
ClientWidth = 697
TabOrder = 1
object BottomDivider: TBevel
AnchorSideLeft.Control = pnlBottom
AnchorSideTop.Control = pnlBottom
AnchorSideRight.Control = pnlBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 6
Width = 697
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
end
object DiffLabel: TLabel
AnchorSideLeft.Control = pnlBottom
AnchorSideTop.Control = BottomDivider
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ResetAllButton
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 16
Top = 15
Width = 575
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'DiffLabel'
Font.Color = clRed
ParentColor = False
ParentFont = False
WordWrap = True
end
object WarnLabel: TLabel
AnchorSideLeft.Control = pnlBottom
AnchorSideTop.Control = BottomDivider
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ResetAllButton
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 16
Top = 15
Width = 575
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'WarnLabel'
Font.Color = clRed
ParentColor = False
ParentFont = False
WordWrap = True
end
object ResetAllButton: TButton
AnchorSideTop.Control = BottomDivider
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = pnlBottom
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 587
Height = 25
Top = 15
Width = 104
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 6
BorderSpacing.Right = 6
Caption = 'ResetAllButton'
OnClick = ResetAllButtonClick
TabOrder = 0
end
end
end

View File

@ -25,63 +25,78 @@ unit editor_mouseaction_options;
interface
uses
EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, SynEdit,
StdCtrls, ExtCtrls, Classes, LCLProc, editor_mouseaction_options_advanced;
math, EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, SynEdit,
StdCtrls, ExtCtrls, Classes, LCLProc, editor_mouseaction_options_advanced, Controls, Forms;
type
{ TEditorMouseOptionsFrame }
TEditorMouseOptionsFrame = class(TAbstractIDEOptionsEditor)
HideMouseCheckBox: TCheckBox;
DiffLabel: TLabel;
GenericDividerLeft: TBevel;
GenericDividerLabel: TLabel;
GenericDividerRight: TBevel;
TextDoubleSelLine: TCheckBox;
BottomDivider: TBevel;
chkPredefinedScheme: TCheckBox;
CtrLLeftLabel: TLabel;
MiddleBtnLabel: TLabel;
PanelTextCtrlLeft: TPanel;
CtrlLeftRadio1: TRadioButton;
CtrlLeftRadio2: TRadioButton;
CtrlLeftRadio3: TRadioButton;
RightMoveCaret: TCheckBox;
TextDrag : TCheckBox;
PanelTextCheckBox : TPanel;
TextAltMode: TCheckBox;
WarnLabel: TLabel;
ResetTextButton: TButton;
ResetGutterButton: TButton;
DiffLabel: TLabel;
dropUserSchemes: TComboBox;
GenericDividerLabel: TLabel;
GenericDividerLeft: TBevel;
GenericDividerRight: TBevel;
GutterDividerLabel: TLabel;
GutterDividerLeft: TBevel;
GutterDividerRight: TBevel;
GutterLeftRadio1: TRadioButton;
GutterLeftRadio2: TRadioButton;
HideMouseCheckBox: TCheckBox;
MiddleBtnLabel: TLabel;
pnlBottom: TPanel;
PanelGutter: TPanel;
PanelTextCheckBox: TPanel;
PanelTextCtrlLeft: TPanel;
PanelTextMiddle: TPanel;
pnlAllGutter: TPanel;
pnlAllText: TPanel;
pnlUserSchemes: TPanel;
ResetAllButton: TButton;
ResetGutterButton: TButton;
ResetTextButton: TButton;
RightMoveCaret: TCheckBox;
ScrollBox1: TScrollBox;
TextAltMode: TCheckBox;
TextDividerLabel: TLabel;
TextDividerLeft: TBevel;
TextDividerRight: TBevel;
TextDoubleSelLine: TCheckBox;
TextDrag: TCheckBox;
TextMidRadio1: TRadioButton;
TextMidRadio2: TRadioButton;
TextMidRadio3: TRadioButton;
GutterDividerLabel: TLabel;
BottomDivider: TBevel;
GutterLeftRadio1: TRadioButton;
GutterLeftRadio2: TRadioButton;
TextDividerLabel: TLabel;
GutterDividerLeft: TBevel;
TextDividerLeft: TBevel;
GutterDividerRight: TBevel;
TextDividerRight: TBevel;
RadioGroup1: TRadioGroup;
TextLeft: TCheckGroup;
TextMiddle: TRadioGroup;
GutterLeft: TRadioGroup;
ResetAllButton: TButton;
procedure ResetGutterButtonClick(Sender: TObject);
procedure ResetAllButtonClick(Sender: TObject);
procedure ResetTextButtonClick(Sender: TObject);
WarnLabel: TLabel;
procedure CheckOrRadioChange(Sender: TObject);
procedure chkPredefinedSchemeChange(Sender: TObject);
procedure dropUserSchemesChange(Sender: TObject);
procedure dropUserSchemesKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure ResetGutterButtonClick(Sender: TObject);
procedure ResetTextButtonClick(Sender: TObject);
procedure ResetAllButtonClick(Sender: TObject);
private
FDialog: TAbstractOptionsEditorDialog;
FOptions: TAbstractIDEOptions;
FTempMouseSettings: TEditorMouseOptions;
FInClickHandler: Integer;
procedure UpdateButtons;
function IsUserSchemeChanged: Boolean;
function IsTextSettingsChanged: Boolean;
function IsGutterSettingsChanged: Boolean;
procedure SaveUserScheme;
procedure SaveTextSettings;
procedure SaveGutterSettings;
protected
procedure SetVisible(Value: Boolean); override;
public
@ -101,45 +116,142 @@ implementation
{ TEditorMouseOptionsFrame }
procedure TEditorMouseOptionsFrame.CheckOrRadioChange(Sender: TObject);
var
MouseDiff: Boolean;
begin
if FInClickHandler > 0 then exit;
Inc(FInClickHandler);
try
MouseDiff := not FTempMouseSettings.IsPresetEqualToMouseActions;
if not MouseDiff then begin
ResetAllButtonClick(nil);
ResetTextButton.Visible := False;
ResetGutterButton.Visible := False;
ResetAllButton.Visible := False;
WarnLabel.Visible := False;
DiffLabel.Visible := False;
exit;
if FTempMouseSettings.IsPresetEqualToMouseActions then begin
// write settings to conf (and reset conf to settings)
SaveGutterSettings;
SaveTextSettings;
end;
ResetTextButton.Visible := True; // MouseDiff or IsTextSettingsChanged;
ResetGutterButton.Visible := True; // MouseDiff or IsGutterSettingsChanged;
ResetAllButton.Visible := True; // ResetTextButton.Enabled or ResetGutterButton.Enabled;
WarnLabel.Visible := IsTextSettingsChanged or IsGutterSettingsChanged;
DiffLabel.Visible := (not WarnLabel.Visible) and MouseDiff;
UpdateButtons;
finally
Dec(FInClickHandler);
end;
end;
procedure TEditorMouseOptionsFrame.UpdateButtons;
begin
if FTempMouseSettings.IsPresetEqualToMouseActions then begin
ResetTextButton.Visible := False;
ResetGutterButton.Visible := False;
ResetAllButton.Visible := False;
WarnLabel.Visible := False;
DiffLabel.Visible := False;
BottomDivider.Visible := False;
end
else begin
ResetTextButton.Visible := (FTempMouseSettings.SelectedUserScheme = '') and IsTextSettingsChanged;
ResetGutterButton.Visible := (FTempMouseSettings.SelectedUserScheme = '') and IsGutterSettingsChanged;
ResetAllButton.Visible := True; // ResetTextButton.Enabled or ResetGutterButton.Enabled;
WarnLabel.Visible := (IsTextSettingsChanged or IsGutterSettingsChanged) and
( (FTempMouseSettings.SelectedUserScheme = '') or
IsUserSchemeChanged );
DiffLabel.Visible := (not WarnLabel.Visible);
BottomDivider.Visible := True;
end;
end;
procedure TEditorMouseOptionsFrame.dropUserSchemesChange(Sender: TObject);
begin
if Sender <> nil then begin;
chkPredefinedScheme.Checked := dropUserSchemes.ItemIndex > 0;
if dropUserSchemes.ItemIndex > 0 then
dropUserSchemes.tag := dropUserSchemes.ItemIndex;
end;
pnlAllGutter.Enabled := dropUserSchemes.ItemIndex = 0;
pnlAllText.Enabled := dropUserSchemes.ItemIndex = 0;
if FTempMouseSettings.IsPresetEqualToMouseActions then
SaveUserScheme;
UpdateButtons;
end;
procedure TEditorMouseOptionsFrame.dropUserSchemesKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
dropUserSchemesChange(Sender);
end;
procedure TEditorMouseOptionsFrame.chkPredefinedSchemeChange(Sender: TObject);
begin
if chkPredefinedScheme.Checked then
dropUserSchemes.ItemIndex := Max(dropUserSchemes.Tag, 1)
else
dropUserSchemes.ItemIndex := 0;
dropUserSchemesChange(nil);
end;
procedure TEditorMouseOptionsFrame.ResetGutterButtonClick(Sender: TObject);
begin
if GutterLeftRadio2.Checked then
FTempMouseSettings.GutterLeft := moglUpClickAndSelect
else
FTempMouseSettings.GutterLeft := moGLDownClick;
FTempMouseSettings.ResetGutterToDefault;
if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then
TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings;
CheckOrRadioChange(nil);
SaveGutterSettings;
UpdateButtons;
end;
procedure TEditorMouseOptionsFrame.ResetTextButtonClick(Sender: TObject);
begin
SaveTextSettings;
UpdateButtons;
end;
procedure TEditorMouseOptionsFrame.ResetAllButtonClick(Sender: TObject);
begin
SaveGutterSettings;
SaveTextSettings;
SaveUserScheme; // must be last
UpdateButtons;
end;
function TEditorMouseOptionsFrame.IsUserSchemeChanged: Boolean;
begin
Result := FTempMouseSettings.SelectedUserSchemeIndex <>
PtrInt(dropUserSchemes.Items.Objects[dropUserSchemes.ItemIndex]);
end;
function TEditorMouseOptionsFrame.IsTextSettingsChanged: Boolean;
begin
Result := not (
(FTempMouseSettings.AltColumnMode = TextAltMode.Checked) and
(FTempMouseSettings.TextDrag = TextDrag.Checked) and
(FTempMouseSettings.TextRightMoveCaret = RightMoveCaret.Checked) and
(FTempMouseSettings.TextDoubleSelLine = TextDoubleSelLine.Checked) and
( (TextMidRadio1.Checked and (FTempMouseSettings.TextMiddleClick = moTMPaste)) or
(TextMidRadio2.Checked and (FTempMouseSettings.TextMiddleClick = moTMIgnore)) or
(TextMidRadio3.Checked and (FTempMouseSettings.TextMiddleClick = moTMDeclarationJump))
) and
( (CtrlLeftRadio1.Checked and (FTempMouseSettings.TextCtrlLeftClick = moTCLJump)) or
(CtrlLeftRadio2.Checked and (FTempMouseSettings.TextCtrlLeftClick = moTCLNone)) or
(CtrlLeftRadio3.Checked and (FTempMouseSettings.TextCtrlLeftClick = moTCLJumpOrBlock))
)
);
end;
function TEditorMouseOptionsFrame.IsGutterSettingsChanged: Boolean;
begin
Result := not (
( (GutterLeftRadio1.Checked and (FTempMouseSettings.GutterLeft = moGLDownClick)) or
(GutterLeftRadio2.Checked and (FTempMouseSettings.GutterLeft = moglUpClickAndSelect))
)
);
end;
procedure TEditorMouseOptionsFrame.SaveUserScheme;
var
i: Integer;
begin
i := PtrInt(dropUserSchemes.Items.Objects[dropUserSchemes.ItemIndex]);
FTempMouseSettings.SelectedUserSchemeIndex := i;
if i >= 0 then
FTempMouseSettings.ResetToUserScheme
else begin
FTempMouseSettings.ResetTextToDefault;
FTempMouseSettings.ResetGutterToDefault;
end;
if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then
TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings;
end;
procedure TEditorMouseOptionsFrame.SaveTextSettings;
begin
FTempMouseSettings.AltColumnMode := TextAltMode.Checked;
FTempMouseSettings.TextDrag := TextDrag.Checked;
@ -163,48 +275,24 @@ begin
FTempMouseSettings.ResetTextToDefault;
if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then
TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings;
CheckOrRadioChange(nil);
end;
procedure TEditorMouseOptionsFrame.ResetAllButtonClick(Sender: TObject);
procedure TEditorMouseOptionsFrame.SaveGutterSettings;
begin
ResetTextButtonClick(nil);
ResetGutterButtonClick(nil);
end;
function TEditorMouseOptionsFrame.IsGutterSettingsChanged: Boolean;
begin
Result := not (
( (GutterLeftRadio1.Checked and (FTempMouseSettings.GutterLeft = moGLDownClick)) or
(GutterLeftRadio2.Checked and (FTempMouseSettings.GutterLeft = moglUpClickAndSelect))
)
);
end;
function TEditorMouseOptionsFrame.IsTextSettingsChanged: Boolean;
begin
Result := not (
(FTempMouseSettings.AltColumnMode = TextAltMode.Checked) and
(FTempMouseSettings.TextDrag = TextDrag.Checked) and
(FTempMouseSettings.TextRightMoveCaret = RightMoveCaret.Checked) and
(FTempMouseSettings.TextDoubleSelLine = TextDoubleSelLine.Checked) and
( (TextMidRadio1.Checked and (FTempMouseSettings.TextMiddleClick = moTMPaste)) or
(TextMidRadio2.Checked and (FTempMouseSettings.TextMiddleClick = moTMIgnore)) or
(TextMidRadio3.Checked and (FTempMouseSettings.TextMiddleClick = moTMDeclarationJump))
) and
( (CtrlLeftRadio1.Checked and (FTempMouseSettings.TextCtrlLeftClick = moTCLJump)) or
(CtrlLeftRadio2.Checked and (FTempMouseSettings.TextCtrlLeftClick = moTCLNone)) or
(CtrlLeftRadio3.Checked and (FTempMouseSettings.TextCtrlLeftClick = moTCLJumpOrBlock))
)
);
if GutterLeftRadio2.Checked then
FTempMouseSettings.GutterLeft := moglUpClickAndSelect
else
FTempMouseSettings.GutterLeft := moGLDownClick;
FTempMouseSettings.ResetGutterToDefault;
if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then
TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings;
end;
procedure TEditorMouseOptionsFrame.SetVisible(Value: Boolean);
begin
inherited SetVisible(Value);
if Value and (FTempMouseSettings <> nil) then
CheckOrRadioChange(nil);
UpdateButtons;
end;
function TEditorMouseOptionsFrame.GetTitle: String;
@ -215,6 +303,7 @@ end;
procedure TEditorMouseOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
FDialog := ADialog;
chkPredefinedScheme.Caption := dlfMousePredefinedScheme;
GenericDividerLabel.Caption := dlfMouseSimpleGenericSect;
GutterDividerLabel.Caption := dlfMouseSimpleGutterSect;
GutterLeftRadio1.Caption := dlfMouseSimpleGutterLeftDown;
@ -242,11 +331,27 @@ end;
procedure TEditorMouseOptionsFrame.ReadSettings(
AOptions: TAbstractIDEOptions);
var
i: Integer;
begin
Inc(FInClickHandler);
FOptions := AOptions;
FTempMouseSettings := TEditorOptions(AOptions).TempMouseSettings;
FTempMouseSettings.Read;
FTempMouseSettings.Assign(TEditorOptions(AOptions).UserMouseSettings);
pnlUserSchemes.Visible := FTempMouseSettings.UserSchemeCount > 0;
dropUserSchemes.Clear;
for i := 0 to FTempMouseSettings.UserSchemeCount - 1 do begin
dropUserSchemes.Items.AddObject(FTempMouseSettings.UserSchemeNames[i],
TObject(PtrUInt(i)) );
end;
dropUserSchemes.Sorted := True;
dropUserSchemes.Sorted := False;
dropUserSchemes.Items.InsertObject(0, dlfNoPredefinedScheme, TObject(PtrUInt(-1)));
dropUserSchemes.ItemIndex := dropUserSchemes.Items.IndexOfObject
( TObject(PtrUInt(FTempMouseSettings.SelectedUserSchemeIndex)) );
dropUserSchemesChange(Self);
case FTempMouseSettings.GutterLeft of
moGLDownClick: GutterLeftRadio1.Checked := True;
moglUpClickAndSelect: GutterLeftRadio2.Checked := True;
@ -266,7 +371,7 @@ begin
moTCLJumpOrBlock: CtrlLeftRadio3.Checked := True;
end;
Dec(FInClickHandler);
CheckOrRadioChange(nil);
UpdateButtons;
HideMouseCheckBox.Checked := eoAutoHideCursor in TEditorOptions(AOptions).SynEditOptions2;
end;
@ -274,7 +379,7 @@ end;
procedure TEditorMouseOptionsFrame.WriteSettings(
AOptions: TAbstractIDEOptions);
begin
FTempMouseSettings.WriteBack;
TEditorOptions(AOptions).UserMouseSettings.Assign(FTempMouseSettings);
with TEditorOptions(AOptions) do begin
if HideMouseCheckBox.Checked then
SynEditOptions2 := SynEditOptions2 + [eoAutoHideCursor]

View File

@ -4,7 +4,6 @@ inherited EditorMouseOptionsAdvFrame: TEditorMouseOptionsAdvFrame
Anchors = [akTop]
ClientHeight = 420
ClientWidth = 610
TabOrder = 0
Visible = False
DesignLeft = 246
DesignTop = 209
@ -41,13 +40,13 @@ inherited EditorMouseOptionsAdvFrame: TEditorMouseOptionsAdvFrame
Align = alLeft
AutoExpand = True
Constraints.MinWidth = 50
DefaultItemHeight = 15
DefaultItemHeight = 17
ReadOnly = True
ShowButtons = False
ShowRoot = False
TabOrder = 1
OnChange = ContextTreeChange
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowLines, tvoToolTips, tvoThemedDraw, tvoNoDoubleClickExpand]
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowLines, tvoToolTips, tvoNoDoubleClickExpand, tvoThemedDraw]
end
object Splitter1: TSplitter[2]
Left = 130
@ -74,32 +73,32 @@ inherited EditorMouseOptionsAdvFrame: TEditorMouseOptionsAdvFrame
OnClick = BtnImportClick
end
object BtnExport: TToolButton
Left = 57
Left = 63
Top = 0
Caption = 'BtnExport'
OnClick = BtnExportClick
end
object ToolButton3: TToolButton
Left = 113
Left = 122
Top = 0
Width = 3
Width = 4
Caption = 'ToolButton3'
Style = tbsDivider
end
object UpdateButton: TToolButton
Left = 116
Left = 126
Top = 0
Caption = 'UpdateButton'
OnClick = UpdateButtonClick
end
object AddNewButton: TToolButton
Left = 191
Left = 208
Top = 0
Caption = 'AddNewButton'
OnClick = AddNewButtonClick
end
object DelButton: TToolButton
Left = 271
Left = 298
Top = 0
Caption = 'DelButton'
OnClick = DelButtonClick
@ -116,19 +115,19 @@ inherited EditorMouseOptionsAdvFrame: TEditorMouseOptionsAdvFrame
TabOrder = 4
object Panel1: TPanel
Left = 1
Height = 17
Height = 20
Top = 1
Width = 608
Align = alTop
AutoSize = True
ClientHeight = 17
ClientHeight = 20
ClientWidth = 608
TabOrder = 0
object OtherActionLabel: TLabel
Left = 1
Height = 15
Height = 18
Top = 1
Width = 84
Width = 94
Align = alLeft
Caption = 'OtherActionLabel'
ParentColor = False
@ -138,10 +137,10 @@ inherited EditorMouseOptionsAdvFrame: TEditorMouseOptionsAdvFrame
object OtherActToggleBox: TToggleBox
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
Left = 496
Height = 17
Left = 483
Height = 19
Top = 0
Width = 112
Width = 124
Anchors = [akTop, akRight]
AutoSize = True
Caption = 'OtherActToggleBox'
@ -153,8 +152,8 @@ inherited EditorMouseOptionsAdvFrame: TEditorMouseOptionsAdvFrame
end
object OtherActionGrid: TStringGrid
Left = 1
Height = 107
Top = 18
Height = 104
Top = 21
Width = 608
Align = alClient
AutoEdit = False

View File

@ -711,7 +711,8 @@ procedure TEditorMouseOptionsAdvFrame.ReadSettings(
AOptions: TAbstractIDEOptions);
begin
FTempMouseSettings := TEditorOptions(AOptions).TempMouseSettings;
FTempMouseSettings.Read;
FTempMouseSettings.Assign(TEditorOptions(AOptions).UserMouseSettings);
with AOptions as TEditorOptions do
begin
FKeyMap := KeyMap;
@ -723,7 +724,7 @@ end;
procedure TEditorMouseOptionsAdvFrame.WriteSettings(
AOptions: TAbstractIDEOptions);
begin
FTempMouseSettings.WriteBack;
TEditorOptions(AOptions).UserMouseSettings.Assign(FTempMouseSettings);
end;
procedure TEditorMouseOptionsAdvFrame.RefreshSettings;

View File

@ -1257,6 +1257,8 @@ resourcestring
dlgUseSyntaxHighlight = 'Use syntax highlight';
dlgUseCodeFolding = 'Code folding';
dlgCodeFoldingMouse = 'Mouse';
dlfMousePredefinedScheme = 'Use predefined scheme';
dlfNoPredefinedScheme = '< None >';
dlfMouseSimpleGenericSect = 'General';
dlfMouseSimpleGutterSect = 'Gutter';
dlfMouseSimpleGutterLeftDown = 'Standard, All actions (breakpoint, fold) on Mouse down';