IDE Options: allow to set colors for messages in message window by urgency.

git-svn-id: trunk@48789 -
This commit is contained in:
martin 2015-04-20 21:59:46 +00:00
parent 691df1520b
commit 045b4fea7a
5 changed files with 370 additions and 142 deletions

View File

@ -347,6 +347,7 @@ type
FMsgViewAlwaysDrawFocused: boolean; FMsgViewAlwaysDrawFocused: boolean;
FMsgViewFilenameStyle: TMsgWndFileNameStyle; FMsgViewFilenameStyle: TMsgWndFileNameStyle;
fMsgViewColors: array[TMsgWndColor] of TColor; fMsgViewColors: array[TMsgWndColor] of TColor;
fMsgColors: array[TMessageLineUrgency] of TColor;
FShowCompileDialog: Boolean; // show dialog during compile FShowCompileDialog: Boolean; // show dialog during compile
FAutoCloseCompileDialog: Boolean; // auto close dialog after succesed compile FAutoCloseCompileDialog: Boolean; // auto close dialog after succesed compile
FMsgViewFilters: TLMsgViewFilters; FMsgViewFilters: TLMsgViewFilters;
@ -429,6 +430,7 @@ type
function GetFPDocPaths: string; function GetFPDocPaths: string;
function GetLazarusDirectory: string; function GetLazarusDirectory: string;
function GetMakeFilename: string; function GetMakeFilename: string;
function GetMsgColors(u: TMessageLineUrgency): TColor;
function GetMsgViewColors(c: TMsgWndColor): TColor; function GetMsgViewColors(c: TMsgWndColor): TColor;
function GetTestBuildDirectory: string; function GetTestBuildDirectory: string;
procedure SetCompilerFilename(const AValue: string); procedure SetCompilerFilename(const AValue: string);
@ -441,6 +443,7 @@ type
procedure SetDebuggerFilename(AValue: string); procedure SetDebuggerFilename(AValue: string);
procedure SetFPCSourceDirectory(const AValue: string); procedure SetFPCSourceDirectory(const AValue: string);
procedure SetLazarusDirectory(const AValue: string); procedure SetLazarusDirectory(const AValue: string);
procedure SetMsgColors(u: TMessageLineUrgency; AValue: TColor);
procedure SetMsgViewColors(c: TMsgWndColor; AValue: TColor); procedure SetMsgViewColors(c: TMsgWndColor; AValue: TColor);
procedure SetParseValue(o: TEnvOptParseType; const NewValue: string); procedure SetParseValue(o: TEnvOptParseType; const NewValue: string);
@ -717,6 +720,7 @@ type
write FMsgViewFilenameStyle; write FMsgViewFilenameStyle;
property MsgViewColors[c: TMsgWndColor]: TColor read GetMsgViewColors write SetMsgViewColors; property MsgViewColors[c: TMsgWndColor]: TColor read GetMsgViewColors write SetMsgViewColors;
property MsgViewFilters: TLMsgViewFilters read FMsgViewFilters; property MsgViewFilters: TLMsgViewFilters read FMsgViewFilters;
property MsgColors[u: TMessageLineUrgency]: TColor read GetMsgColors write SetMsgColors;
// glyphs // glyphs
property ShowButtonGlyphs: TApplicationShowGlyphs read FShowButtonGlyphs write FShowButtonGlyphs; property ShowButtonGlyphs: TApplicationShowGlyphs read FShowButtonGlyphs write FShowButtonGlyphs;
@ -759,6 +763,7 @@ const
); );
function dbgs(o: TEnvOptParseType): string; overload; function dbgs(o: TEnvOptParseType): string; overload;
function dbgs(u: TMessageLineUrgency): string; overload;
implementation implementation
@ -833,12 +838,18 @@ begin
Result:=EnvOptParseTypeNames[o]; Result:=EnvOptParseTypeNames[o];
end; end;
function dbgs(u: TMessageLineUrgency): string;
begin
WriteStr(Result, u);
end;
{ TEnvironmentOptions } { TEnvironmentOptions }
constructor TEnvironmentOptions.Create; constructor TEnvironmentOptions.Create;
var var
o: TEnvOptParseType; o: TEnvOptParseType;
c: TMsgWndColor; c: TMsgWndColor;
u: TMessageLineUrgency;
begin begin
inherited Create; inherited Create;
for o:=low(FParseValues) to high(FParseValues) do for o:=low(FParseValues) to high(FParseValues) do
@ -930,6 +941,8 @@ begin
FMsgViewFilenameStyle:=mwfsShort; FMsgViewFilenameStyle:=mwfsShort;
for c:=low(TMsgWndColor) to high(TMsgWndColor) do for c:=low(TMsgWndColor) to high(TMsgWndColor) do
fMsgViewColors[c]:=MsgWndDefaultColors[c]; fMsgViewColors[c]:=MsgWndDefaultColors[c];
for u:=low(TMessageLineUrgency) to high(TMessageLineUrgency) do
fMsgColors[u] := clDefault;
FMsgViewFilters:=TLMsgViewFilters.Create(nil); FMsgViewFilters:=TLMsgViewFilters.Create(nil);
// glyphs // glyphs
@ -1134,6 +1147,7 @@ var
EventType: TDBGEventType; EventType: TDBGEventType;
NodeName: String; NodeName: String;
mwc: TMsgWndColor; mwc: TMsgWndColor;
u: TMessageLineUrgency;
begin begin
Cfg:=nil; Cfg:=nil;
try try
@ -1389,6 +1403,9 @@ begin
for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do
fMsgViewColors[mwc]:=XMLConfig.GetValue( fMsgViewColors[mwc]:=XMLConfig.GetValue(
Path+'MsgView/Colors/'+MsgWndColorNames[mwc],MsgWndDefaultColors[mwc]); Path+'MsgView/Colors/'+MsgWndColorNames[mwc],MsgWndDefaultColors[mwc]);
for u:=low(TMessageLineUrgency) to high(TMessageLineUrgency) do
fMsgColors[u] := XMLConfig.GetValue(
Path+'MsgView/MsgColors/'+dbgs(u),clDefault);
MsgViewFilters.LoadFromXMLConfig(XMLConfig,'MsgView/Filters/'); MsgViewFilters.LoadFromXMLConfig(XMLConfig,'MsgView/Filters/');
// glyphs // glyphs
@ -1532,6 +1549,7 @@ var
CurLazDir: String; CurLazDir: String;
BaseDir: String; BaseDir: String;
mwc: TMsgWndColor; mwc: TMsgWndColor;
u: TMessageLineUrgency;
begin begin
Cfg:=nil; Cfg:=nil;
try try
@ -1774,6 +1792,9 @@ begin
for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do
XMLConfig.SetDeleteValue(Path+'MsgView/Colors/'+MsgWndColorNames[mwc], XMLConfig.SetDeleteValue(Path+'MsgView/Colors/'+MsgWndColorNames[mwc],
fMsgViewColors[mwc],MsgWndDefaultColors[mwc]); fMsgViewColors[mwc],MsgWndDefaultColors[mwc]);
for u:=low(TMessageLineUrgency) to high(TMessageLineUrgency) do
XMLConfig.SetDeleteValue(Path+'MsgView/MsgColors/'+dbgs(u),
fMsgColors[u],clDefault);
MsgViewFilters.SaveToXMLConfig(XMLConfig,'MsgView/Filters/'); MsgViewFilters.SaveToXMLConfig(XMLConfig,'MsgView/Filters/');
// glyphs // glyphs
@ -2236,6 +2257,11 @@ begin
SetParseValue(eopLazarusDirectory,NewValue); SetParseValue(eopLazarusDirectory,NewValue);
end; end;
procedure TEnvironmentOptions.SetMsgColors(u: TMessageLineUrgency; AValue: TColor);
begin
fMsgColors[u] := AValue;
end;
procedure TEnvironmentOptions.SetMsgViewColors(c: TMsgWndColor; AValue: TColor); procedure TEnvironmentOptions.SetMsgViewColors(c: TMsgWndColor; AValue: TColor);
begin begin
fMsgViewColors[c]:=AValue; fMsgViewColors[c]:=AValue;
@ -2312,6 +2338,11 @@ begin
Result:=FParseValues[eopMakeFilename].UnparsedValue; Result:=FParseValues[eopMakeFilename].UnparsedValue;
end; end;
function TEnvironmentOptions.GetMsgColors(u: TMessageLineUrgency): TColor;
begin
Result:=fMsgColors[u];
end;
function TEnvironmentOptions.GetMsgViewColors(c: TMsgWndColor): TColor; function TEnvironmentOptions.GetMsgViewColors(c: TMsgWndColor): TColor;
begin begin
Result:=fMsgViewColors[c]; Result:=fMsgViewColors[c];

View File

@ -1598,9 +1598,9 @@ begin
inc(NodeRect.Left,Images.Width+2); inc(NodeRect.Left,Images.Width+2);
end; end;
// message text // message text
col:=TextColor; col:=UrgencyStyles[Line.Urgency].Color;
if col=clDefault then if col=clDefault then
col:=UrgencyStyles[Line.Urgency].Color; col:=TextColor;
DrawText(NodeRect,GetLineText(Line),IsSelected,col); DrawText(NodeRect,GetLineText(Line),IsSelected,col);
inc(y,ItemHeight); inc(y,ItemHeight);
inc(j); inc(j);
@ -1629,9 +1629,9 @@ begin
if (y+ItemHeight>0) and (y<ClientHeight) then begin if (y+ItemHeight>0) and (y<ClientHeight) then begin
// progress text // progress text
NodeRect:=Rect(Indent,y,ClientWidth,y+ItemHeight); NodeRect:=Rect(Indent,y,ClientWidth,y+ItemHeight);
col:=TextColor; col:=UrgencyStyles[View.ProgressLine.Urgency].Color;
if col=clDefault then if col=clDefault then
col:=UrgencyStyles[View.ProgressLine.Urgency].Color; col:=TextColor;
DrawText(NodeRect,View.ProgressLine.Msg, DrawText(NodeRect,View.ProgressLine.Msg,
(fSelectedView=View) and (FSelectedLine=View.Lines.Count),col); (fSelectedView=View) and (FSelectedLine=View.Lines.Count),col);
end; end;
@ -3439,22 +3439,31 @@ begin
Align:=alClient; Align:=alClient;
Parent:=Self; Parent:=Self;
UrgencyStyles[mluNone].SetValues('?',ImgIDInfo,clDefault); UrgencyStyles[mluNone].SetValues('?',ImgIDInfo,EnvironmentOptions.MsgColors[mluNone]);
UrgencyStyles[mluProgress].SetValues(lisPDProgress, ImgIDInfo, clDefault); UrgencyStyles[mluProgress].SetValues(lisPDProgress, ImgIDInfo,
UrgencyStyles[mluDebug].SetValues(lisDebug, ImgIDInfo, clDefault); EnvironmentOptions.MsgColors[mluProgress]);
UrgencyStyles[mluDebug].SetValues(lisDebug, ImgIDInfo,
EnvironmentOptions.MsgColors[mluDebug]);
UrgencyStyles[mluVerbose3].SetValues(lisExtremelyVerbose, ImgIDInfo, UrgencyStyles[mluVerbose3].SetValues(lisExtremelyVerbose, ImgIDInfo,
clDefault); EnvironmentOptions.MsgColors[mluVerbose3]);
UrgencyStyles[mluVerbose2].SetValues(lisVeryVerbose, ImgIDInfo, clDefault); UrgencyStyles[mluVerbose2].SetValues(lisVeryVerbose, ImgIDInfo,
UrgencyStyles[mluVerbose].SetValues(lisVerbose, ImgIDInfo, clDefault); EnvironmentOptions.MsgColors[mluVerbose2]);
UrgencyStyles[mluHint].SetValues(lisHint, ImgIDHint, clDefault); UrgencyStyles[mluVerbose].SetValues(lisVerbose, ImgIDInfo,
UrgencyStyles[mluNote].SetValues(lisNote, ImgIDNote, clDefault); EnvironmentOptions.MsgColors[mluVerbose]);
UrgencyStyles[mluHint].SetValues(lisHint, ImgIDHint,
EnvironmentOptions.MsgColors[mluHint]);
UrgencyStyles[mluNote].SetValues(lisNote, ImgIDNote,
EnvironmentOptions.MsgColors[mluNote]);
UrgencyStyles[mluWarning].SetValues(lisCCOWarningCaption, ImgIDWarning, UrgencyStyles[mluWarning].SetValues(lisCCOWarningCaption, ImgIDWarning,
clDefault); EnvironmentOptions.MsgColors[mluWarning]);
UrgencyStyles[mluImportant].SetValues(lisImportant, ImgIDInfo, clDefault); UrgencyStyles[mluImportant].SetValues(lisImportant, ImgIDInfo,
UrgencyStyles[mluError].SetValues(lisCCOErrorCaption, ImgIDError, clDefault EnvironmentOptions.MsgColors[mluImportant]);
); UrgencyStyles[mluError].SetValues(lisCCOErrorCaption, ImgIDError,
UrgencyStyles[mluFatal].SetValues(lisFatal, ImgIDFatal, clDefault); EnvironmentOptions.MsgColors[mluError]);
UrgencyStyles[mluPanic].SetValues(lisPanic, ImgIDFatal, clDefault); UrgencyStyles[mluFatal].SetValues(lisFatal, ImgIDFatal,
EnvironmentOptions.MsgColors[mluFatal]);
UrgencyStyles[mluPanic].SetValues(lisPanic, ImgIDFatal,
EnvironmentOptions.MsgColors[mluPanic]);
Images:=IDEImages.Images_12; Images:=IDEImages.Images_12;
PopupMenu:=MsgCtrlPopupMenu; PopupMenu:=MsgCtrlPopupMenu;
end; end;

View File

@ -8,113 +8,15 @@ object MsgWndOptionsFrame: TMsgWndOptionsFrame
TabOrder = 0 TabOrder = 0
DesignLeft = 386 DesignLeft = 386
DesignTop = 221 DesignTop = 221
object MWColorsGroupBox: TGroupBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 172
Top = 0
Width = 495
Anchors = [akTop, akLeft, akRight]
Caption = 'MWColorsGroupBox'
ClientHeight = 155
ClientWidth = 491
TabOrder = 0
object MWColorListBox: TColorListBox
AnchorSideLeft.Control = MWColorsGroupBox
AnchorSideTop.Control = MWColorsGroupBox
AnchorSideRight.Control = MWSpeedSetColorsGroupBox
AnchorSideBottom.Control = MWColorBox
Left = 6
Height = 108
Top = 6
Width = 303
Style = [cbCustomColors]
OnGetColors = MWColorListBoxGetColors
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 6
ItemHeight = 0
OnSelectionChange = MWColorListBoxSelectionChange
TabOrder = 0
TopIndex = -1
end
object MWColorBox: TColorBox
AnchorSideLeft.Control = MWColorsGroupBox
AnchorSideRight.Control = MWSpeedSetColorsGroupBox
AnchorSideBottom.Control = MWColorsGroupBox
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 29
Top = 120
Width = 303
Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeNone, cbIncludeDefault, cbCustomColor, cbPrettyNames, cbCustomColors]
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Around = 6
ItemHeight = 20
OnChange = MWColorBoxChange
TabOrder = 1
end
object MWSpeedSetColorsGroupBox: TGroupBox
Left = 315
Height = 143
Top = 6
Width = 170
Align = alRight
BorderSpacing.Around = 6
Caption = 'MWSpeedSetColorsGroupBox'
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 126
ClientWidth = 166
TabOrder = 2
object MWSetEditorColorsButton: TButton
Left = 0
Height = 27
Top = 0
Width = 166
AutoSize = True
Caption = 'MWSetEditorColorsButton'
OnClick = MWSetEditorColorsButtonClick
TabOrder = 0
end
object MWSetDefaultColorsButton: TButton
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 27
Top = 33
Width = 166
AutoSize = True
BorderSpacing.Top = 6
BorderSpacing.Right = 6
Caption = 'MWSetDefaultColorsButton'
OnClick = MWSetDefaultColorsButtonClick
TabOrder = 1
end
object MWSetPastelColorsButton: TButton
Left = 0
Height = 27
Top = 66
Width = 166
AutoSize = True
BorderSpacing.Top = 6
Caption = 'MWSetPastelColorsButton'
OnClick = MWSetPastelColorsButtonClick
TabOrder = 2
end
end
end
object MWOptionsLabel: TLabel object MWOptionsLabel: TLabel
AnchorSideLeft.Control = MWOptsLeftBevel AnchorSideLeft.Control = MWOptsLeftBevel
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = MWColorsGroupBox AnchorSideTop.Control = Notebook1
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 70 Left = 70
Height = 15 Height = 15
Top = 178 Top = 206
Width = 93 Width = 92
BorderSpacing.Left = 10 BorderSpacing.Left = 10
BorderSpacing.Top = 6 BorderSpacing.Top = 6
BorderSpacing.Right = 10 BorderSpacing.Right = 10
@ -128,7 +30,7 @@ object MsgWndOptionsFrame: TMsgWndOptionsFrame
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 0 Left = 0
Height = 3 Height = 3
Top = 184 Top = 212
Width = 60 Width = 60
end end
object MWOptsRightBevel: TBevel object MWOptsRightBevel: TBevel
@ -138,10 +40,10 @@ object MsgWndOptionsFrame: TMsgWndOptionsFrame
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 173 Left = 172
Height = 3 Height = 3
Top = 184 Top = 212
Width = 322 Width = 323
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
end end
object MWShowIconsCheckBox: TCheckBox object MWShowIconsCheckBox: TCheckBox
@ -149,53 +51,53 @@ object MsgWndOptionsFrame: TMsgWndOptionsFrame
AnchorSideTop.Control = MWOptionsLabel AnchorSideTop.Control = MWOptionsLabel
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 19
Top = 199 Top = 227
Width = 158 Width = 151
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'MWShowIconsCheckBox' Caption = 'MWShowIconsCheckBox'
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 1 TabOrder = 0
end end
object MWFocusCheckBox: TCheckBox object MWFocusCheckBox: TCheckBox
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MWAlwaysDrawFocusedCheckBox AnchorSideTop.Control = MWAlwaysDrawFocusedCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 19
Top = 247 Top = 265
Width = 132 Width = 125
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'MWFocusCheckBox' Caption = 'MWFocusCheckBox'
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 2 TabOrder = 1
end end
object MWAlwaysDrawFocusedCheckBox: TCheckBox object MWAlwaysDrawFocusedCheckBox: TCheckBox
AnchorSideLeft.Control = MWShowIconsCheckBox AnchorSideLeft.Control = MWShowIconsCheckBox
AnchorSideTop.Control = MWShowIconsCheckBox AnchorSideTop.Control = MWShowIconsCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 19
Top = 223 Top = 246
Width = 212 Width = 202
Caption = 'MWAlwaysDrawFocusedCheckBox' Caption = 'MWAlwaysDrawFocusedCheckBox'
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 3 TabOrder = 2
end end
object MWMaxProcsSpinEdit: TSpinEdit object MWMaxProcsSpinEdit: TSpinEdit
AnchorSideLeft.Control = MWMaxProcsLabel AnchorSideLeft.Control = MWMaxProcsLabel
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = MWFocusCheckBox AnchorSideTop.Control = MWFocusCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 110 Left = 109
Height = 25 Height = 23
Top = 271 Top = 284
Width = 50 Width = 50
BorderSpacing.Left = 2 BorderSpacing.Left = 2
TabOrder = 4 TabOrder = 3
end end
object MWMaxProcsLabel: TLabel object MWMaxProcsLabel: TLabel
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
@ -203,10 +105,195 @@ object MsgWndOptionsFrame: TMsgWndOptionsFrame
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 6 Left = 6
Height = 15 Height = 15
Top = 276 Top = 288
Width = 102 Width = 101
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'MWMaxProcsLabel' Caption = 'MWMaxProcsLabel'
ParentColor = False ParentColor = False
end end
object ToolBar1: TToolBar
Left = 0
Height = 26
Top = 0
Width = 495
Caption = 'ToolBar1'
ShowCaptions = True
TabOrder = 4
object BtnHeaderColor: TToolButton
Left = 1
Top = 2
AllowAllUp = True
Caption = 'BtnHeaderColor'
Down = True
Grouped = True
OnClick = BtnHeaderColorClick
Style = tbsCheck
end
object BtnMsgColor: TToolButton
Left = 94
Top = 2
AllowAllUp = True
Caption = 'BtnMsgColor'
Grouped = True
OnClick = BtnMsgColorClick
Style = tbsCheck
end
end
object Notebook1: TNotebook
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = ToolBar1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 174
Top = 26
Width = 495
PageIndex = 1
Anchors = [akTop, akLeft, akRight]
TabOrder = 5
TabStop = True
object PageHeader: TPage
object MWColorsGroupBox: TGroupBox
Left = 0
Height = 174
Top = 0
Width = 495
Align = alClient
Anchors = [akTop, akLeft, akRight]
Caption = 'MWColorsGroupBox'
ClientHeight = 154
ClientWidth = 491
TabOrder = 0
object MWColorListBox: TColorListBox
AnchorSideLeft.Control = MWColorsGroupBox
AnchorSideTop.Control = MWColorsGroupBox
AnchorSideRight.Control = MWSpeedSetColorsGroupBox
AnchorSideBottom.Control = MWColorBox
Left = 6
Height = 110
Top = 6
Width = 303
Style = [cbCustomColors]
OnGetColors = MWColorListBoxGetColors
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
ItemHeight = 0
OnSelectionChange = MWColorListBoxSelectionChange
TabOrder = 0
end
object MWColorBox: TColorBox
AnchorSideLeft.Control = MWColorsGroupBox
AnchorSideTop.Control = MWColorListBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = MWSpeedSetColorsGroupBox
AnchorSideBottom.Control = MWColorsGroupBox
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 26
Top = 122
Width = 303
Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeNone, cbIncludeDefault, cbCustomColor, cbPrettyNames, cbCustomColors]
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 6
ItemHeight = 20
OnChange = MWColorBoxChange
TabOrder = 1
end
object MWSpeedSetColorsGroupBox: TGroupBox
Left = 315
Height = 142
Top = 6
Width = 170
Align = alRight
BorderSpacing.Around = 6
Caption = 'MWSpeedSetColorsGroupBox'
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 122
ClientWidth = 166
TabOrder = 2
object MWSetEditorColorsButton: TButton
Left = 0
Height = 25
Top = 0
Width = 172
AutoSize = True
Caption = 'MWSetEditorColorsButton'
OnClick = MWSetEditorColorsButtonClick
TabOrder = 0
end
object MWSetDefaultColorsButton: TButton
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 25
Top = 31
Width = 172
AutoSize = True
BorderSpacing.Top = 6
BorderSpacing.Right = 6
Caption = 'MWSetDefaultColorsButton'
OnClick = MWSetDefaultColorsButtonClick
TabOrder = 1
end
object MWSetPastelColorsButton: TButton
Left = 0
Height = 25
Top = 62
Width = 172
AutoSize = True
BorderSpacing.Top = 6
Caption = 'MWSetPastelColorsButton'
OnClick = MWSetPastelColorsButtonClick
TabOrder = 2
end
end
end
end
object PageMsg: TPage
object MsgColorGroupBox: TGroupBox
Left = 0
Height = 174
Top = 0
Width = 495
Align = alClient
Caption = 'MsgColorGroupBox'
ClientHeight = 154
ClientWidth = 491
TabOrder = 0
object MsgColorListBox: TColorListBox
AnchorSideLeft.Control = MsgColorGroupBox
AnchorSideTop.Control = MsgColorGroupBox
Left = 6
Height = 110
Top = 6
Width = 303
Style = [cbCustomColors]
OnGetColors = MsgColorListBoxGetColors
BorderSpacing.Around = 6
ItemHeight = 0
OnSelectionChange = MsgColorListBoxSelectionChange
TabOrder = 0
end
object MsgColorBox: TColorBox
AnchorSideLeft.Control = MsgColorGroupBox
AnchorSideTop.Control = MsgColorListBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = MsgColorListBox
AnchorSideRight.Side = asrBottom
Left = 6
Height = 24
Top = 122
Width = 297
Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeDefault, cbCustomColor]
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
ItemHeight = 16
OnChange = MsgColorBoxChange
TabOrder = 1
end
end
end
end
end end

View File

@ -31,7 +31,7 @@ interface
uses uses
Classes, SysUtils, FileUtil, LazLoggerBase, SynEdit, Forms, Classes, SysUtils, FileUtil, LazLoggerBase, SynEdit, Forms,
Controls, Graphics, Dialogs, StdCtrls, ColorBox, ExtCtrls, Spin, Controls, Graphics, Dialogs, StdCtrls, ColorBox, ExtCtrls, Spin, ComCtrls,
IDEOptionsIntf, IDEExternToolIntf, IDEOptionsIntf, IDEExternToolIntf,
LazarusIDEStrConsts, EnvironmentOpts, editor_general_options, EditorOptions; LazarusIDEStrConsts, EnvironmentOpts, editor_general_options, EditorOptions;
@ -40,6 +40,9 @@ type
{ TMsgWndOptionsFrame } { TMsgWndOptionsFrame }
TMsgWndOptionsFrame = class(TAbstractIDEOptionsEditor) TMsgWndOptionsFrame = class(TAbstractIDEOptionsEditor)
MsgColorBox: TColorBox;
MsgColorListBox: TColorListBox;
MsgColorGroupBox: TGroupBox;
MWAlwaysDrawFocusedCheckBox: TCheckBox; MWAlwaysDrawFocusedCheckBox: TCheckBox;
MWFocusCheckBox: TCheckBox; MWFocusCheckBox: TCheckBox;
MWSetPastelColorsButton: TButton; MWSetPastelColorsButton: TButton;
@ -55,6 +58,17 @@ type
MWSetDefaultColorsButton: TButton; MWSetDefaultColorsButton: TButton;
MWSetEditorColorsButton: TButton; MWSetEditorColorsButton: TButton;
MWSpeedSetColorsGroupBox: TGroupBox; MWSpeedSetColorsGroupBox: TGroupBox;
Notebook1: TNotebook;
PageHeader: TPage;
PageMsg: TPage;
ToolBar1: TToolBar;
BtnHeaderColor: TToolButton;
BtnMsgColor: TToolButton;
procedure BtnHeaderColorClick(Sender: TObject);
procedure BtnMsgColorClick(Sender: TObject);
procedure MsgColorBoxChange(Sender: TObject);
procedure MsgColorListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings);
procedure MsgColorListBoxSelectionChange(Sender: TObject; User: boolean);
procedure MWColorBoxChange(Sender: TObject); procedure MWColorBoxChange(Sender: TObject);
procedure MWColorListBoxGetColors(Sender: TCustomColorListBox; procedure MWColorListBoxGetColors(Sender: TCustomColorListBox;
Items: TStrings); Items: TStrings);
@ -105,6 +119,67 @@ begin
MWColorListBox.Colors[i]:=MWColorBox.Selected; MWColorListBox.Colors[i]:=MWColorBox.Selected;
end; end;
procedure TMsgWndOptionsFrame.BtnHeaderColorClick(Sender: TObject);
begin
Notebook1.PageIndex := 0;
end;
procedure TMsgWndOptionsFrame.BtnMsgColorClick(Sender: TObject);
begin
Notebook1.PageIndex := 1;
end;
procedure TMsgWndOptionsFrame.MsgColorBoxChange(Sender: TObject);
var
i: Integer;
begin
i:=MsgColorListBox.ItemIndex;
if not fReady or (i < 0) then
exit;
MsgColorListBox.Colors[i]:=MsgColorBox.Selected;
end;
procedure TMsgWndOptionsFrame.MsgColorListBoxGetColors(Sender: TCustomColorListBox;
Items: TStrings);
begin
(*
mluNone,
mluProgress, // time and statistics about the run
mluDebug, // extreme verbosity, only useful for tool authors
mluVerbose3, // all infos
mluVerbose2, // almost all infos
mluVerbose, // extra infos
mluHint, // tool found something unusual
mluNote, // maybe wrong or unnecessary
mluWarning, // probably something is wrong
mluImportant, // message has no urgency level, but should be shown
mluError, // tool could not finish, some tools can still continue
mluFatal, // critical error in input, tool had to abort
mluPanic // bug in tool
*)
Items.Add(dlgMsgWinColorUrgentNone);
Items.Add(dlgMsgWinColorUrgentProgress);
Items.Add(dlgMsgWinColorUrgentDebug);
Items.Add(dlgMsgWinColorUrgentVerbose3);
Items.Add(dlgMsgWinColorUrgentVerbose2);
Items.Add(dlgMsgWinColorUrgentVerbose);
Items.Add(dlgMsgWinColorUrgentHint);
Items.Add(dlgMsgWinColorUrgentNote);
Items.Add(dlgMsgWinColorUrgentWarning);
Items.Add(dlgMsgWinColorUrgentImportant);
Items.Add(dlgMsgWinColorUrgentError);
Items.Add(dlgMsgWinColorUrgentFatal);
Items.Add(dlgMsgWinColorUrgentPanic);
end;
procedure TMsgWndOptionsFrame.MsgColorListBoxSelectionChange(Sender: TObject; User: boolean);
begin
if not (fReady and User) then
Exit;
MsgColorBox.Selected := MWColorListBox.Selected;
end;
procedure TMsgWndOptionsFrame.MWColorListBoxSelectionChange(Sender: TObject; procedure TMsgWndOptionsFrame.MWColorListBoxSelectionChange(Sender: TObject;
User: boolean); User: boolean);
begin begin
@ -160,7 +235,10 @@ begin
inherited Create(AOwner); inherited Create(AOwner);
MWOptionsLabel.Caption:=lisOptions; MWOptionsLabel.Caption:=lisOptions;
BtnHeaderColor.Caption := lisHeaderColors;
BtnMsgColor.Caption := lisMsgColors;
MWColorsGroupBox.Caption:=dlgColors; MWColorsGroupBox.Caption:=dlgColors;
MsgColorGroupBox.Caption:=dlgColors;
MWSpeedSetColorsGroupBox.Caption:=lisSetAllColors; MWSpeedSetColorsGroupBox.Caption:=lisSetAllColors;
MWSetDefaultColorsButton.Caption:=lisLazarusDefault; MWSetDefaultColorsButton.Caption:=lisLazarusDefault;
MWSetPastelColorsButton.Caption:=lisPastelColors; MWSetPastelColorsButton.Caption:=lisPastelColors;
@ -172,6 +250,7 @@ begin
MWFocusCheckBox.Caption:=dlgEOFocusMessagesAfterCompilation; MWFocusCheckBox.Caption:=dlgEOFocusMessagesAfterCompilation;
MWMaxProcsLabel.Caption:=Format(lisMaximumParallelProcesses0MeansDefault, [ MWMaxProcsLabel.Caption:=Format(lisMaximumParallelProcesses0MeansDefault, [
IntToStr(DefaultMaxProcessCount)]); IntToStr(DefaultMaxProcessCount)]);
Notebook1.PageIndex := 0;
end; end;
function TMsgWndOptionsFrame.GetTitle: String; function TMsgWndOptionsFrame.GetTitle: String;
@ -190,10 +269,13 @@ procedure TMsgWndOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
var var
o: TEnvironmentOptions; o: TEnvironmentOptions;
c: TMsgWndColor; c: TMsgWndColor;
u: TMessageLineUrgency;
begin begin
o:=(AOptions as TEnvironmentOptions); o:=(AOptions as TEnvironmentOptions);
for c in TMsgWndColor do for c in TMsgWndColor do
MWColorListBox.Colors[ord(c)] := o.MsgViewColors[c]; MWColorListBox.Colors[ord(c)] := o.MsgViewColors[c];
for u in TMessageLineUrgency do
MsgColorListBox.Colors[ord(u)] := o.MsgColors[u];
MWShowIconsCheckBox.Checked := o.ShowMessagesIcons; MWShowIconsCheckBox.Checked := o.ShowMessagesIcons;
MWAlwaysDrawFocusedCheckBox.Checked := o.MsgViewAlwaysDrawFocused; MWAlwaysDrawFocusedCheckBox.Checked := o.MsgViewAlwaysDrawFocused;
MWFocusCheckBox.Checked := o.MsgViewFocus; MWFocusCheckBox.Checked := o.MsgViewFocus;
@ -205,10 +287,13 @@ procedure TMsgWndOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
var var
o: TEnvironmentOptions; o: TEnvironmentOptions;
c: TMsgWndColor; c: TMsgWndColor;
u: TMessageLineUrgency;
begin begin
o:=(AOptions as TEnvironmentOptions); o:=(AOptions as TEnvironmentOptions);
for c in TMsgWndColor do for c in TMsgWndColor do
o.MsgViewColors[c] := MWColorListBox.Colors[ord(c)]; o.MsgViewColors[c] := MWColorListBox.Colors[ord(c)];
for u in TMessageLineUrgency do
o.MsgColors[u] := MsgColorListBox.Colors[ord(u)];
o.ShowMessagesIcons := MWShowIconsCheckBox.Checked; o.ShowMessagesIcons := MWShowIconsCheckBox.Checked;
o.MsgViewAlwaysDrawFocused := MWAlwaysDrawFocusedCheckBox.Checked; o.MsgViewAlwaysDrawFocused := MWAlwaysDrawFocusedCheckBox.Checked;
o.MsgViewFocus := MWFocusCheckBox.Checked; o.MsgViewFocus := MWFocusCheckBox.Checked;

View File

@ -1756,11 +1756,27 @@ resourcestring
dlgUseSchemeLocal = 'Use local scheme settings'; dlgUseSchemeLocal = 'Use local scheme settings';
dlgColor = 'Color'; dlgColor = 'Color';
dlgColors = 'Colors'; dlgColors = 'Colors';
lisHeaderColors = 'Header colors';
lisMsgColors = 'Message colors:';
lisSetAllColors = 'Set all colors:'; lisSetAllColors = 'Set all colors:';
lisLazarusDefault = 'Lazarus Default'; lisLazarusDefault = 'Lazarus Default';
dlgColorNotModified = 'Not modified'; dlgColorNotModified = 'Not modified';
dlgPriorities = 'Priorities'; dlgPriorities = 'Priorities';
dlgMsgWinColorUrgentNone = 'Normal';
dlgMsgWinColorUrgentProgress = 'time and statistics';
dlgMsgWinColorUrgentDebug = 'Debug';
dlgMsgWinColorUrgentVerbose3 = 'Verbose 3';
dlgMsgWinColorUrgentVerbose2 = 'Verbose 2';
dlgMsgWinColorUrgentVerbose = 'Verbose';
dlgMsgWinColorUrgentHint = 'Hint';
dlgMsgWinColorUrgentNote = 'Note';
dlgMsgWinColorUrgentWarning = 'Warning';
dlgMsgWinColorUrgentImportant = 'Important';
dlgMsgWinColorUrgentError = 'Error';
dlgMsgWinColorUrgentFatal = 'Fatal';
dlgMsgWinColorUrgentPanic = 'Panic';
dlgForecolor = 'Foreground'; dlgForecolor = 'Foreground';
dlgFrameColor = 'Text-mark'; dlgFrameColor = 'Text-mark';
dlgUnsavedLineColor = 'Unsaved line'; dlgUnsavedLineColor = 'Unsaved line';