mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-26 15:33:46 +02:00
318 lines
11 KiB
ObjectPascal
318 lines
11 KiB
ObjectPascal
{
|
|
***************************************************************************
|
|
* *
|
|
* This source is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This code is distributed in the hope that it will be useful, but *
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
|
* General Public License for more details. *
|
|
* *
|
|
* A copy of the GNU General Public License is available on the World *
|
|
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
|
* obtain it by writing to the Free Software Foundation, *
|
|
* Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
|
|
* *
|
|
***************************************************************************
|
|
|
|
Author: Mattias Gaertner
|
|
|
|
Abstract:
|
|
IDE option frame for Messages window.
|
|
}
|
|
unit MsgWnd_Options;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,
|
|
// LazUtils
|
|
LazLoggerBase,
|
|
// LCL
|
|
Forms, Controls, Graphics, Dialogs, StdCtrls, ColorBox, ExtCtrls, Spin, Buttons,
|
|
// IdeIntf
|
|
IDEOptionsIntf, IDEOptEditorIntf, IDEExternToolIntf, IDEImagesIntf,
|
|
// IdeConfig
|
|
EnvironmentOpts,
|
|
// IDE
|
|
LazarusIDEStrConsts, editor_general_options, EnvGuiOptions;
|
|
|
|
type
|
|
|
|
{ TMsgWndOptionsFrame }
|
|
|
|
TMsgWndOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
MWCtrlLeftActionComboBox: TComboBox;
|
|
MsgColorBox: TColorBox;
|
|
MsgColorListBox: TColorListBox;
|
|
MsgColorGroupBox: TGroupBox;
|
|
MWAlwaysDrawFocusedCheckBox: TCheckBox;
|
|
MWFocusCheckBox: TCheckBox;
|
|
MWSetPastelColorsButton: TBitBtn;
|
|
MWShowFPCMsgLinesCompiledCheckBox: TCheckBox;
|
|
MWShowIconsCheckBox: TCheckBox;
|
|
MWMaxProcsLabel: TLabel;
|
|
MWMaxProcsSpinEdit: TSpinEdit;
|
|
MWOptsLeftBevel: TBevel;
|
|
MWColorBox: TColorBox;
|
|
MWColorListBox: TColorListBox;
|
|
MWColorsGroupBox: TGroupBox;
|
|
MWOptionsLabel: TLabel;
|
|
MWOptsRightBevel: TBevel;
|
|
MWSetDefaultColorsButton: TBitBtn;
|
|
MWSetEditorColorsButton: TButton;
|
|
MWSpeedSetColorsGroupBox: TGroupBox;
|
|
procedure MsgColorBoxChange(Sender: TObject);
|
|
procedure MsgColorListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings);
|
|
procedure MsgColorListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
procedure MWColorBoxChange(Sender: TObject);
|
|
procedure MWColorListBoxGetColors(Sender: TCustomColorListBox;
|
|
Items: TStrings);
|
|
procedure MWColorListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
procedure MWSetDefaultColorsButtonClick(Sender: TObject);
|
|
procedure MWSetEditorColorsButtonClick(Sender: TObject);
|
|
procedure MWSetPastelColorsButtonClick(Sender: TObject);
|
|
private
|
|
fReady: boolean;
|
|
FDialog: TAbstractOptionsEditorDialog;
|
|
function GeneralPage: TEditorGeneralOptionsFrame;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
function GetTitle: String; override;
|
|
procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
end;
|
|
|
|
var
|
|
MsgWndOptionsFrame: TMsgWndOptionsFrame;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TMsgWndOptionsFrame }
|
|
|
|
procedure TMsgWndOptionsFrame.MWColorListBoxGetColors(
|
|
Sender: TCustomColorListBox; Items: TStrings);
|
|
begin
|
|
Items.Add(dlgBackColor);
|
|
Items.Add(lisToolHeaderRunning);
|
|
Items.Add(lisToolHeaderSuccess);
|
|
Items.Add(lisToolHeaderFailed);
|
|
Items.Add(lisToolHeaderScrolledUp);
|
|
Items.Add(dlfMouseSimpleTextSect);
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.MWColorBoxChange(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
i:=MWColorListBox.ItemIndex;
|
|
if not fReady or (i < 0) then
|
|
exit;
|
|
MWColorListBox.Colors[i]:=MWColorBox.Selected;
|
|
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 := MsgColorListBox.Selected;
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.MWColorListBoxSelectionChange(Sender: TObject;
|
|
User: boolean);
|
|
begin
|
|
if not (fReady and User) then
|
|
Exit;
|
|
MWColorBox.Selected := MWColorListBox.Selected;
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.MWSetDefaultColorsButtonClick(Sender: TObject);
|
|
var
|
|
c: TMsgWndColor;
|
|
begin
|
|
for c in TMsgWndColor do
|
|
MWColorListBox.Colors[ord(c)]:=MsgWndDefaultColors[c];
|
|
MWColorBox.Selected := MWColorListBox.Selected;
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.MWSetEditorColorsButtonClick(Sender: TObject);
|
|
var
|
|
Page: TEditorGeneralOptionsFrame;
|
|
begin
|
|
Page:=GeneralPage;
|
|
if Page=nil then exit;
|
|
|
|
{MWColorListBox.Colors[mwBackground]:=aSynEdit.Color;
|
|
MWColorListBox.Colors[mwRunning]:=aSynEdit.
|
|
MWColorListBox.Colors[mwSuccess]:=aSynEdit.
|
|
MWColorListBox.Colors[mwFailed]:=aSynEdit.
|
|
MWColorListBox.Colors[mwAutoHeader]:=aSynEdit.}
|
|
|
|
MWColorBox.Selected := MWColorListBox.Selected;
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.MWSetPastelColorsButtonClick(Sender: TObject);
|
|
begin
|
|
MWColorListBox.Colors[ord(mwBackground)]:=clWindow;
|
|
MWColorListBox.Colors[ord(mwRunning)] :=TColor($00CBF3FF); // harmonic pastel yellow
|
|
MWColorListBox.Colors[ord(mwSuccess)] :=TColor($00BEEFC3); // harmonic pastel green
|
|
MWColorListBox.Colors[ord(mwFailed)] :=TColor($00CCCBFF); // harmonic pastel rose
|
|
MWColorListBox.Colors[ord(mwAutoHeader)]:=TColor($00EEC3BD); // harmonic pastel blue
|
|
MWColorBox.Selected := MWColorListBox.Selected;
|
|
end;
|
|
|
|
function TMsgWndOptionsFrame.GeneralPage: TEditorGeneralOptionsFrame;
|
|
begin
|
|
Result:=nil;
|
|
if FDialog<>nil then
|
|
Result := TEditorGeneralOptionsFrame(FDialog.FindEditor(TEditorGeneralOptionsFrame));
|
|
end;
|
|
|
|
constructor TMsgWndOptionsFrame.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
|
|
MWOptionsLabel.Caption:=lisOptions;
|
|
MWColorsGroupBox.Caption:= lisHeaderColors;
|
|
MsgColorGroupBox.Caption:= lisMsgColors;
|
|
MWSpeedSetColorsGroupBox.Caption:=lisSetAllColors;
|
|
MWSetDefaultColorsButton.Caption:=lisLazarusDefault;
|
|
IDEImages.AssignImage(MWSetDefaultColorsButton, 'restore_defaults');
|
|
MWSetPastelColorsButton.Caption:=lisPastelColors;
|
|
IDEImages.AssignImage(MWSetPastelColorsButton, 'pastel_colors');
|
|
MWSetEditorColorsButton.Caption:=lisEditorColors;
|
|
MWShowIconsCheckBox.Caption:=dlgShowMessagesIcons;
|
|
MWShowIconsCheckBox.Hint:=dlgAnIconForErrorWarningHintIsShown;
|
|
MWAlwaysDrawFocusedCheckBox.Caption:=lisAlwaysDrawSelectedItemsFocused;
|
|
MWAlwaysDrawFocusedCheckBox.Hint:=lisDrawTheSelectionFocusedEvenIfTheMessagesWindowHasN;
|
|
MWFocusCheckBox.Caption:=dlgEOFocusMessagesAtCompilation;
|
|
MWMaxProcsLabel.Caption:=Format(lisMaximumParallelProcesses0MeansDefault,
|
|
[IntToStr(DefaultMaxProcessCount)]);
|
|
MWShowFPCMsgLinesCompiledCheckBox.Caption:=lisShowFPCMessageLinesCompiled;
|
|
MWShowFPCMsgLinesCompiledCheckBox.Hint:=
|
|
lisElevateTheMessagePriorityToAlwaysShowItByDefaultIt;
|
|
end;
|
|
|
|
function TMsgWndOptionsFrame.GetTitle: String;
|
|
begin
|
|
Result:=lisMessagesWindow;
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
begin
|
|
fReady:=false;
|
|
FDialog := ADialog;
|
|
MWSetEditorColorsButton.Visible:=false;
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
EnvOpt: TEnvironmentOptions;
|
|
EnvGui: TIDESubOptions;
|
|
c: TMsgWndColor;
|
|
u: TMessageLineUrgency;
|
|
begin
|
|
EnvOpt := AOptions as TEnvironmentOptions;
|
|
EnvGui := EnvOpt.GetSubConfigObj(TEnvGuiOptions);
|
|
Assert(Assigned(EnvGui), 'TMsgWndOptionsFrame.ReadSettings: EnvGui=Nil');
|
|
with EnvGui as TEnvGuiOptions do
|
|
begin
|
|
for c in TMsgWndColor do
|
|
MWColorListBox.Colors[ord(c)] := MsgViewColors[c];
|
|
for u in TMessageLineUrgency do
|
|
MsgColorListBox.Colors[ord(u)] := MsgColors[u];
|
|
MWShowIconsCheckBox.Checked := ShowMessagesIcons;
|
|
MWAlwaysDrawFocusedCheckBox.Checked := MsgViewAlwaysDrawFocused;
|
|
MWFocusCheckBox.Checked := MsgViewFocus;
|
|
end;
|
|
MWShowFPCMsgLinesCompiledCheckBox.Checked := EnvOpt.MsgViewShowFPCMsgLinesCompiled;
|
|
MWMaxProcsSpinEdit.Value := EnvOpt.MaxExtToolsInParallel;
|
|
fReady:=true;
|
|
end;
|
|
|
|
procedure TMsgWndOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
EnvOpt: TEnvironmentOptions;
|
|
EnvGui: TIDESubOptions;
|
|
c: TMsgWndColor;
|
|
u: TMessageLineUrgency;
|
|
begin
|
|
EnvOpt := AOptions as TEnvironmentOptions;
|
|
EnvGui := EnvOpt.GetSubConfigObj(TEnvGuiOptions);
|
|
with EnvGui as TEnvGuiOptions do
|
|
begin
|
|
for c in TMsgWndColor do
|
|
MsgViewColors[c] := MWColorListBox.Colors[ord(c)];
|
|
for u in TMessageLineUrgency do
|
|
MsgColors[u] := MsgColorListBox.Colors[ord(u)];
|
|
ShowMessagesIcons := MWShowIconsCheckBox.Checked;
|
|
MsgViewAlwaysDrawFocused := MWAlwaysDrawFocusedCheckBox.Checked;
|
|
MsgViewFocus := MWFocusCheckBox.Checked;
|
|
end;
|
|
EnvOpt.MsgViewShowFPCMsgLinesCompiled := MWShowFPCMsgLinesCompiledCheckBox.Checked;
|
|
EnvOpt.MaxExtToolsInParallel := MWMaxProcsSpinEdit.Value;
|
|
end;
|
|
|
|
class function TMsgWndOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result := TEnvironmentOptions;
|
|
end;
|
|
|
|
initialization
|
|
RegisterIDEOptionsEditor(GroupEnvironment, TMsgWndOptionsFrame, EnvOptionsMessages);
|
|
end.
|
|
|