IDE: Option for code fold pop up menu order

git-svn-id: trunk@26831 -
This commit is contained in:
martin 2010-07-25 15:40:47 +00:00
parent 3308c03211
commit 67006b2d8e
4 changed files with 86 additions and 36 deletions

View File

@ -1001,10 +1001,13 @@ type
// Code Folding
FUseCodeFolding: Boolean;
FReverseFoldPopUpOrder: Boolean;
// Multi window
FMultiWinEditAccessOrder: TEditorOptionsEditAccessOrderList;
FDefaultValues: TEditorOptions;
function OldAdditionalAttributeName(NewAha:String): string;
public
class function GetGroupCaption:string; override;
@ -1012,7 +1015,9 @@ type
procedure DoAfterWrite; override;
public
constructor Create;
constructor CreateDefaultOnly;
destructor Destroy; override;
procedure Init;
procedure Load;
procedure Save;
function GetAdditionalAttributeName(aha:TAdditionalHilightAttribute): string;
@ -1046,7 +1051,7 @@ type
AddHilightAttr: TAdditionalHilightAttribute;
aMarkup: TSynSelectedColor);
procedure SetMarkupColors(aSynEd: TSynEdit);
published
public
// general options
property SynEditOptions: TSynEditorOptions
read fSynEditOptions write fSynEditOptions default SynEditDefaultOptions;
@ -1163,6 +1168,12 @@ type
// Multi window
property MultiWinEditAccessOrder: TEditorOptionsEditAccessOrderList
read FMultiWinEditAccessOrder write FMultiWinEditAccessOrder;
published { use RTTIConf}
// Code Folding
property ReverseFoldPopUpOrder: Boolean
read FReverseFoldPopUpOrder write FReverseFoldPopUpOrder default True;
end;
const
@ -3188,7 +3199,57 @@ begin
end;
// set defaults
Init;
// code templates (dci file)
fCodeTemplateFileName :=
TrimFilename(GetPrimaryConfigPath+PathDelim+DefaultCodeTemplatesFilename);
CopySecondaryConfigFile(DefaultCodeTemplatesFilename);
if not FileExistsUTF8(CodeTemplateFileName) then
begin
res := LazarusResources.Find('lazarus_dci_file');
if (res <> Nil) and (res.Value <> '') and (res.ValueType = 'DCI') then
try
InvalidateFileStateCache;
fs := TFileStream.Create(UTF8ToSys(CodeTemplateFileName), fmCreate);
try
fs.Write(res.Value[1], length(res.Value));
finally
fs.Free;
end;
except
DebugLn('WARNING: unable to write code template file "',
CodeTemplateFileName, '"');
end;
end;
FMultiWinEditAccessOrder := TEditorOptionsEditAccessOrderList.Create;
FMultiWinEditAccessOrder.InitDefaults;
FDefaultValues := TEditorOptions.CreateDefaultOnly;
end;
constructor TEditorOptions.CreateDefaultOnly;
begin
inherited Create;
Init;
FDefaultValues := nil;
end;
destructor TEditorOptions.Destroy;
begin
FreeAndNil(FUserColorSchemeSettings);
fKeyMap.Free;
FreeAndNil(FMultiWinEditAccessOrder);
XMLConfig.Free;
FUserMouseSettings.Free;
FTempMouseSettings.Free;
FreeAndNil(FDefaultValues);
inherited Destroy;
end;
procedure TEditorOptions.Init;
begin
// General options
fShowTabCloseButtons := True;
FHideSingleTabInWindow := False;
@ -3231,41 +3292,8 @@ begin
// Code Tools options
FCompletionLongLineHintType := sclpExtendRightOnly;
// code templates (dci file)
fCodeTemplateFileName :=
TrimFilename(GetPrimaryConfigPath+PathDelim+DefaultCodeTemplatesFilename);
CopySecondaryConfigFile(DefaultCodeTemplatesFilename);
if not FileExistsUTF8(CodeTemplateFileName) then
begin
res := LazarusResources.Find('lazarus_dci_file');
if (res <> Nil) and (res.Value <> '') and (res.ValueType = 'DCI') then
try
InvalidateFileStateCache;
fs := TFileStream.Create(UTF8ToSys(CodeTemplateFileName), fmCreate);
try
fs.Write(res.Value[1], length(res.Value));
finally
fs.Free;
end;
except
DebugLn('WARNING: unable to write code template file "',
CodeTemplateFileName, '"');
end;
end;
FMultiWinEditAccessOrder := TEditorOptionsEditAccessOrderList.Create;
FMultiWinEditAccessOrder.InitDefaults;
end;
destructor TEditorOptions.Destroy;
begin
FreeAndNil(FUserColorSchemeSettings);
fKeyMap.Free;
FreeAndNil(FMultiWinEditAccessOrder);
XMLConfig.Free;
FUserMouseSettings.Free;
FTempMouseSettings.Free;
inherited Destroy;
// Code folding
FReverseFoldPopUpOrder := True;
end;
type
@ -3284,6 +3312,8 @@ begin
try
FileVersion:=XMLConfig.GetValue('EditorOptions/Version', 0);
XMLConfig.ReadObject('EditorOptions/Misc/', Self, FDefaultValues);
// general options
for SynEditOpt := Low(TSynEditorOption) to High(TSynEditorOption) do
begin
@ -3491,6 +3521,8 @@ begin
try
XMLConfig.SetValue('EditorOptions/Version', EditorOptsFormatVersion);
XMLConfig.WriteObject('EditorOptions/Misc/', Self, FDefaultValues);
// general options
for SynEditOpt := Low(TSynEditorOption) to High(TSynEditorOption) do
begin
@ -4135,6 +4167,7 @@ begin
ASynEdit.Gutter.CodeFoldPart.Visible := FUseCodeFolding;
if not FUseCodeFolding then
ASynEdit.UnfoldAll;
ASynEdit.Gutter.CodeFoldPart.ReversePopMenuOrder := ReverseFoldPopUpOrder;
ASynEdit.Gutter.Width := fGutterWidth;
ASynEdit.Gutter.SeparatorPart.Visible := FGutterSeparatorIndex <> -1;

View File

@ -139,4 +139,16 @@ inherited EditorCodefoldingOptionsFrame: TEditorCodefoldingOptionsFrame
end
end
end
object chkPopOrder: TCheckBox[5]
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 421
Height = 19
Top = 0
Width = 90
Anchors = [akTop, akRight]
Caption = 'chkPopOrder'
TabOrder = 3
end
end

View File

@ -35,6 +35,7 @@ type
TEditorCodefoldingOptionsFrame = class(TAbstractIDEOptionsEditor)
Bevel1: TBevel;
chkPopOrder: TCheckBox;
FoldConfigCheckListBox: TCheckListBox;
FoldConfPanel: TPanel;
chkCodeFoldingEnabled: TCheckBox;
@ -225,6 +226,7 @@ begin
chkFold.Caption := dlgCodeFoldEnableFold;
chkHide.Caption := dlgCodeFoldEnableHide;
chkBoth.Caption := dlgCodeFoldEnableBoth;
chkPopOrder.Caption := dlgCodeFoldPopUpOrder;
LanguageLabel.Caption := dlgLang;
FModeLock := False;
end;
@ -251,6 +253,7 @@ begin
end;
LanguageComboBox.ItemIndex := 0;
LanguageComboBoxExit(LanguageComboBox);
chkPopOrder.Checked := ReverseFoldPopUpOrder;
end;
UpdateFoldHideRadio;
end;
@ -267,6 +270,7 @@ begin
if assigned(FHighlighters[i]) then
WriteHighlighterFoldSettings(FHighlighters[i]);
end;
ReverseFoldPopUpOrder := chkPopOrder.Checked;
end;
end;

View File

@ -1273,6 +1273,7 @@ resourcestring
dlgCodeFoldEnableFold = 'Fold';
dlgCodeFoldEnableHide = 'Hide';
dlgCodeFoldEnableBoth = 'Both';
dlgCodeFoldPopUpOrder = 'Reverse fold-order in Popup';
dlgCodeFoldingMouse = 'Mouse';
dlfMousePredefinedScheme = 'Use predefined scheme';
dlfNoPredefinedScheme = '< None >';