IDE, EditorOptions: New ColorSchemFactory; fixed slow down issue

git-svn-id: trunk@25642 -
This commit is contained in:
martin 2010-05-25 18:42:37 +00:00
parent cda968f496
commit c2d78fb927
2 changed files with 17 additions and 15 deletions

View File

@ -985,7 +985,6 @@ type
procedure WriteColorScheme(const LanguageName, SynColorScheme: String);
procedure ReadHighlighterSettings(Syn: TSrcIDEHighlighter;
SynColorScheme: String);
procedure WriteHighlighterSettings;
procedure ReadHighlighterFoldSettings(Syn: TSrcIDEHighlighter);
procedure ReadDefaultsForHighlighterFoldSettings(Syn: TSrcIDEHighlighter);
@ -3137,6 +3136,8 @@ begin
end;
FMultiWinEditAccessOrder.LoadFromXMLConfig(XMLConfig, 'EditorOptions/MultiWin/');
UserColorSchemeGroup.LoadFromXml(XMLConfig, 'EditorOptions/Color/',
ColorSchemeFactory, 'EditorOptions/Display/');
except
on E: Exception do
@ -3349,6 +3350,7 @@ begin
end;
FMultiWinEditAccessOrder.SaveToXMLConfig(XMLConfig, 'EditorOptions/MultiWin/');
UserColorSchemeGroup.SaveToXml(XMLConfig, 'EditorOptions/Color/', ColorSchemeFactory);
InvalidateFileStateCache;
XMLConfig.Flush;
@ -3545,10 +3547,6 @@ begin
if (SynColorScheme = '') or (Syn.LanguageName = '') then
exit;
// reset all to defaults
UserColorSchemeGroup.LoadFromXml(XMLConfig, 'EditorOptions/Color/',
ColorSchemeFactory, 'EditorOptions/Display/');
Scheme := UserColorSchemeGroup.ColorSchemeGroup[SynColorScheme];
if Scheme = nil then
exit;
@ -3559,11 +3557,6 @@ begin
LangScheme.ApplyTo(Syn);
end;
procedure TEditorOptions.WriteHighlighterSettings;
begin
UserColorSchemeGroup.SaveToXml(XMLConfig, 'EditorOptions/Color/', ColorSchemeFactory);
end;
procedure TEditorOptions.ReadHighlighterFoldSettings(Syn: TSrcIDEHighlighter);
var
ConfName: String;
@ -3807,8 +3800,6 @@ var
i: Integer;
j: Integer;
begin
UserColorSchemeGroup.LoadFromXml(XMLConfig, 'EditorOptions/Color/',
ColorSchemeFactory, 'EditorOptions/Display/');
// general options
ASynEdit.Options := fSynEditOptions;
ASynEdit.Options2 := fSynEditOptions2;

View File

@ -93,6 +93,8 @@ type
procedure ComboBoxOnChange(Sender: TObject);
procedure ComboBoxOnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
FTempColorSchemeSettings: TColorSchemeFactory;
FDialog: TAbstractOptionsEditorDialog;
FCurHighlightElement: TColorSchemeAttribute;
@ -126,6 +128,7 @@ type
function DoSynEditMouse(var AnInfo: TSynEditMouseActionInfo;
HandleActionProc: TSynEditMouseActionHandler): Boolean;
public
constructor Create(TheOwner : TComponent); override;
destructor Destroy; override;
function GetTitle: String; override;
@ -317,7 +320,7 @@ begin
XMLConfig.SetValue('Lazarus/ColorSchemes/Names/Item1/Value', NewName);
NewScheme := TColorScheme.Create(NewName);
NewScheme.Assign(EditorOpts.UserColorSchemeGroup.ColorSchemeGroup[ColorSchemeComboBox.Text]);
NewScheme.Assign(FTempColorSchemeSettings.ColorSchemeGroup[ColorSchemeComboBox.Text]);
NewScheme.SaveToXml(XMLConfig, 'Lazarus/ColorSchemes/',nil);
NewScheme.Free;
@ -934,7 +937,7 @@ var
NewColorScheme: TColorSchemeLanguage;
begin
// Modfiy directly => will be re-read form XML if canceled
SchemeGrp := EditorOpts.UserColorSchemeGroup.ColorSchemeGroup[ColorScheme];
SchemeGrp := FTempColorSchemeSettings.ColorSchemeGroup[ColorScheme];
if SchemeGrp = nil then
exit;
@ -1022,8 +1025,15 @@ begin
Result := True;
end;
constructor TEditorColorOptionsFrame.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
FTempColorSchemeSettings := TColorSchemeFactory.Create;
end;
destructor TEditorColorOptionsFrame.Destroy;
begin
FreeAndNil(FTempColorSchemeSettings);
FFileExtensions.Free;
FColorSchemes.Free;
inherited Destroy;
@ -1101,6 +1111,7 @@ begin
with AOptions as TEditorOptions do
begin
FTempColorSchemeSettings.Assign(UserColorSchemeGroup);
UseSyntaxHighlightCheckBox.Checked := UseSyntaxHighlight;
with LanguageComboBox do
@ -1153,7 +1164,7 @@ begin
FColorSchemes.Values[FColorSchemes.Names[i]]);
// Write from userFactory
WriteHighlighterSettings;
UserColorSchemeGroup.Assign(FTempColorSchemeSettings);
end;
end;