Skip to content

Commit

Permalink
Support changing alpha value in editor colors
Browse files Browse the repository at this point in the history
  • Loading branch information
ollydev committed Jul 6, 2023
1 parent 7e1189e commit 64e1ea1
Show file tree
Hide file tree
Showing 6 changed files with 173 additions and 23 deletions.
23 changes: 14 additions & 9 deletions Source/components/simba.component_edit.pas
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ TSimbaEdit = class(TCustomControl)
function GetSelectedText: String;

procedure AddCharAtCursor(C: Char);
procedure AddStringAtCursor(Str: String);
procedure AddStringAtCursor(Str: String; ADeleteSelection: Boolean = False);
procedure DeleteCharAtCursor;
procedure DeleteSelection;

Expand Down Expand Up @@ -278,10 +278,13 @@ procedure TSimbaEdit.AddCharAtCursor(C: Char);
Text := NewText;
end;

procedure TSimbaEdit.AddStringAtCursor(Str: String);
procedure TSimbaEdit.AddStringAtCursor(Str: String; ADeleteSelection: Boolean);
var
NewText: String;
begin
if ADeleteSelection then
DeleteSelection();

NewText := Text;

Insert(Str, NewText, FCaretX + 1);
Expand Down Expand Up @@ -435,6 +438,7 @@ procedure TSimbaEdit.Paint;
X1, X2: Integer;
DrawCaretX: Integer;
begin
Canvas.Font := Font;
Canvas.Brush.Color := Color;
Canvas.FillRect(ClientRect);

Expand Down Expand Up @@ -544,7 +548,7 @@ procedure TSimbaEdit.KeyDown(var Key: Word; Shift: TShiftState);

VK_V:
begin
AddStringAtCursor(Clipboard.AsText);
AddStringAtCursor(Clipboard.AsText, True);

Key := 0;
end;
Expand Down Expand Up @@ -647,22 +651,23 @@ constructor TSimbaEdit.Create(AOwner: TComponent);

FCaretTimer := TTimer.Create(Self);
FCaretTimer.Enabled := False;
FCaretTimer.Interval := 530;
FCaretTimer.Interval := 500;
FCaretTimer.OnTimer := @DoCaretTimer;

ControlStyle := ControlStyle + [csOpaque];
Cursor := crIBeam;
TabStop := True;
BorderWidth := 2;

HintTextStyle := [fsItalic];
HintTextColor := cl3DDkShadow;
Font.Color := SimbaTheme.ColorFont;

Color := SimbaTheme.ColorBackground;
ColorSelection := SimbaTheme.ColorActive;
ColorBorder := SimbaTheme.ColorFrame;
ColorBorder := SimbaTheme.ColorBackground;
ColorBorderActive := SimbaTheme.ColorActive;
ColorSelection := SimbaTheme.ColorActive;

BorderWidth := 2;
HintTextStyle := [fsItalic];
HintTextColor := clLtGray;

Height := CalculateHeight();
end;
Expand Down
7 changes: 1 addition & 6 deletions Source/components/simba.component_treeview.pas
Original file line number Diff line number Diff line change
Expand Up @@ -186,12 +186,6 @@ constructor TSimbaTreeView.Create(AOwner: TComponent; NodeClass: TTreeNodeClass)
FFilterEdit.Parent := FFilterPanel;
FFilterEdit.Align := alClient;
FFilterEdit.OnChange := @DoFilterEditChange;
FFilterEdit.Color := SimbaTheme.ColorBackground;
FFilterEdit.ColorBorder := SimbaTheme.ColorBackground;
FFilterEdit.ColorBorderActive := SimbaTheme.ColorActive;
FFilterEdit.ColorSelection := SimbaTheme.ColorActive;
FFilterEdit.Font.Color := SimbaTheme.ColorFont;
FFilterEdit.HintTextColor := clLtGray;
FFilterEdit.HintText := '(search)';

FFilterClearButton := TSimbaTransparentButton.Create(Self);
Expand Down Expand Up @@ -317,6 +311,7 @@ procedure TSimbaTreeView.FontChanged(Sender: TObject);
FTree.Font.Color := SimbaTheme.ColorFont;

FFilterEdit.Font := Self.Font;
FFilterEdit.Font.Color := SimbaTheme.ColorFont;
end;

procedure TSimbaTreeView.UpdateFilter;
Expand Down
15 changes: 11 additions & 4 deletions Source/editor/simba.editor.pas
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ TSimbaEditor = class(TSimbaSynEdit)
implementation

uses
SynEditPointClasses, SynGutterBase, SynGutter, SynEditMarkupWordGroup, SynHighlighterPas_Simba,
SynEditPointClasses, SynGutterBase, SynGutter, SynEditMarkupWordGroup, SynHighlighterPas_Simba, SynEditMarkupHighAll,
LazSynEditMouseCmdsTypes, Forms,
simba.fonthelpers, simba.editor_blockcompletion,
simba.editor_docgenerator, simba.editor_commentblock,
Expand Down Expand Up @@ -455,6 +455,13 @@ constructor TSimbaEditor.Create(AOwner: TComponent);
FAutoComplete.ExecCommandID := ecNone;
FAutoComplete.ShowSizeDrag := True;

with TSynEditMarkupHighlightAllCaret(MarkupByClass[TSynEditMarkupHighlightAllCaret]) do
begin
Enabled := True;
WaitTime := 1;
IgnoreKeywords := True;
end;

with TSynGutterLineOverview.Create(RightGutter.Parts) do
begin
FModifiedLinesGutter := TSimbaEditorModifiedLinesGutter.Create(Providers);
Expand All @@ -479,16 +486,16 @@ constructor TSimbaEditor.Create(AOwner: TComponent);

FAttributes := TSimbaEditor_Attributes.Create(Self);

Gutter.LeftOffset := Scale96ToScreen(10);
Gutter.LeftOffset := Scale96ToScreen(12);
Gutter.MarksPart.Visible := False;
Gutter.SeparatorPart.Visible := False;

with TSynGutterSeparator.Create(Gutter.Parts) do
begin
MarkupInfo.Foreground := Gutter.Color;
AutoSize := False;
LineWidth := Scale96ToScreen(4);
Width := Scale96ToScreen(4);
LineWidth := Scale96ToScreen(6);
Width := Scale96ToScreen(6);
Index := Gutter.LineNumberPart().Index + 1;
end;

Expand Down
24 changes: 23 additions & 1 deletion Source/editor/simba.editor_attributes.pas
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ implementation

uses
Graphics, IniFiles,
SynGutterBase, SynEditMarkupHighAll, SynEditMarkupWordGroup, SynEditMarkupFoldColoring, SynEditPointClasses, SynHighlighterPas_Simba,
SynGutterBase, SynEditMiscClasses, SynEditMarkupHighAll, SynEditMarkupWordGroup, SynEditMarkupFoldColoring, SynEditPointClasses, SynHighlighterPas_Simba,
simba.editor, simba.theme;

type
Expand Down Expand Up @@ -330,6 +330,14 @@ constructor TSimbaEditor_Attributes.Create(Editor: TSynEdit);
for I := 0 to Editor.Highlighter.AttrCount - 1 do
Add('Highlighter.' + Editor.Highlighter.Attribute[I].StoredName, Editor.Highlighter.Attribute[I]);

with Editor.MarkupByClass[TSynEditMarkupHighlightAllCaret] as TSynEditMarkupHighlightAllCaret do
begin
MarkupInfo.Background := $FFFFFF;
MarkupInfo.BackAlpha := 50;

Add('Editor.Caret Selection', MarkupInfo);
end;

with Editor.MarkupByClass[TSynEditMarkupHighlightAll] as TSynEditMarkupHighlightAll do
begin
MarkupInfo.Background := RGBToColor(128, 0, 128);
Expand Down Expand Up @@ -394,6 +402,14 @@ procedure TSimbaEditor_Attributes.LoadFromStream(Stream: TStream; ManageStream:

FrameColor := INI.ReadInteger(StoredName, 'Frame', FrameColor);

if FAttributes[I] is TSynSelectedColor then
begin
if INI.ValueExists(StoredName, 'BackAlpha') then
TSynSelectedColor(FAttributes[I]).BackAlpha := INI.ReadInteger(StoredName, 'BackAlpha', 0);
if INI.ValueExists(StoredName, 'ForeAlpha') then
TSynSelectedColor(FAttributes[I]).ForeAlpha := INI.ReadInteger(StoredName, 'ForeAlpha', 0);
end;

Changed();
end;

Expand Down Expand Up @@ -427,6 +443,12 @@ procedure TSimbaEditor_Attributes.SaveToFile(FileName: String);
INI.WriteInteger(StoredName, 'StyleMask', IntegerStyleMask);

INI.WriteInteger(StoredName, 'Frame', FrameColor);

if FAttributes[I] is TSynSelectedColor then
begin
INI.WriteInteger(StoredName, 'BackAlpha', TSynSelectedColor(FAttributes[I]).BackAlpha);
INI.WriteInteger(StoredName, 'ForeAlpha', TSynSelectedColor(FAttributes[I]).ForeAlpha);
end;
end;

INI.UpdateFile();
Expand Down
91 changes: 89 additions & 2 deletions Source/forms/simba.settingsform_editor_colors.lfm
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ object EditorColorsFrame: TEditorColorsFrame
OnResize = FrameResize
ParentFont = False
TabOrder = 0
DesignLeft = 2858
DesignTop = 179
DesignLeft = 2689
DesignTop = 285
object Panel1: TPanel
Left = 0
Height = 894
Expand Down Expand Up @@ -248,6 +248,93 @@ object EditorColorsFrame: TEditorColorsFrame
03000000000000
}
end
object AlphaLabel: TLabel
AnchorSideLeft.Control = CheckListBox1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = TreeView
Left = 385
Height = 20
Top = 5
Width = 39
BorderSpacing.Left = 10
Caption = 'Alpha'
ParentColor = False
end
object AlphaPanel: TPanel
AnchorSideLeft.Control = AlphaLabel
AnchorSideTop.Control = CheckListBox1
AnchorSideBottom.Control = CheckListBox1
AnchorSideBottom.Side = asrBottom
Left = 385
Height = 100
Top = 30
Width = 195
Anchors = [akTop, akLeft, akBottom]
AutoSize = True
BevelOuter = bvNone
ClientHeight = 100
ClientWidth = 195
TabOrder = 4
object Label3: TLabel
AnchorSideLeft.Control = AlphaPanel
AnchorSideTop.Control = ForegroundAlphaEdit
AnchorSideBottom.Control = ForegroundAlphaEdit
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 28
Top = 31
Width = 77
Anchors = [akTop, akLeft, akBottom]
Caption = 'Foreground'
Layout = tlCenter
ParentColor = False
end
object Label2: TLabel
AnchorSideLeft.Control = AlphaPanel
AnchorSideTop.Control = BackgroundAlphaEdit
AnchorSideBottom.Control = BackgroundAlphaEdit
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 28
Top = 0
Width = 79
Anchors = [akTop, akLeft, akBottom]
Caption = 'Background'
Layout = tlCenter
ParentColor = False
end
object ForegroundAlphaEdit: TSpinEdit
AnchorSideLeft.Control = Label2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = BackgroundAlphaEdit
AnchorSideTop.Side = asrBottom
Left = 84
Height = 28
Top = 31
Width = 106
BorderSpacing.Left = 5
BorderSpacing.Top = 3
BorderSpacing.Right = 5
MaxValue = 255
OnChange = ForegroundAlphaEditChange
TabOrder = 0
end
object BackgroundAlphaEdit: TSpinEdit
AnchorSideLeft.Control = Label2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = AlphaPanel
AnchorSideRight.Side = asrBottom
Left = 84
Height = 28
Top = 0
Width = 106
BorderSpacing.Left = 5
BorderSpacing.Right = 5
MaxValue = 255
OnChange = BackgroundAlphaEditChange
TabOrder = 1
end
end
end
object SaveAsButton: TButton
AnchorSideLeft.Control = Panel1
Expand Down
36 changes: 35 additions & 1 deletion Source/forms/simba.settingsform_editor_colors.pas
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ interface

uses
Classes, SysUtils, Forms, Controls, ComCtrls, ExtCtrls, StdCtrls, Graphics,
Dialogs, ColorBox, CheckLst, SynEditHighlighter, DividerBevel,
Dialogs, ColorBox, CheckLst, Spin, SynEditHighlighter, DividerBevel,
simba.editor;

type
Expand All @@ -22,23 +22,31 @@ TEditorColorsFrame = class(TFrame)
DividerBevel1: TDividerBevel;
GroupBox3: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
AlphaLabel: TLabel;
LabelBackground: TLabel;
Panel2: TPanel;
FrameColorBox: TColorListBox;
LabelFrame: TLabel;
Panel3: TPanel;
AlphaPanel: TPanel;
SaveAsButton: TButton;
LoadButton: TButton;
BackgroundColorBox: TColorListBox;
ForegoundColorBox: TColorListBox;
LabelForeground: TLabel;
Panel1: TPanel;
ResetButton: TButton;
ForegroundAlphaEdit: TSpinEdit;
BackgroundAlphaEdit: TSpinEdit;
TreeView: TTreeView;

procedure BackgroundAlphaEditChange(Sender: TObject);
procedure ButtonLoadFromURLClick(Sender: TObject);
procedure ButtonResetAttributeClick(Sender: TObject);
procedure CheckListBox1ClickCheck(Sender: TObject);
procedure ForegroundAlphaEditChange(Sender: TObject);
procedure FrameColorBoxSelectionChange(Sender: TObject; User: Boolean);
procedure FrameResize(Sender: TObject);
procedure Panel2Resize(Sender: TObject);
Expand Down Expand Up @@ -70,6 +78,7 @@ implementation
{$R *.lfm}

uses
SynEditMiscClasses,
simba.settings, simba.editor_attributes, simba.files, simba.mufasatypes,
simba.httpclient;

Expand All @@ -87,6 +96,19 @@ procedure TEditorColorsFrame.TreeViewSelectionChanged(Sender: TObject);
SelectColor(SelectedAttr.Background, BackgroundColorBox);
SelectColor(SelectedAttr.FrameColor, FrameColorBox);

if SelectedAttr is TSynSelectedColor then
begin
BackgroundAlphaEdit.Value := TSynSelectedColor(SelectedAttr).BackAlpha;
ForegroundAlphaEdit.Value := TSynSelectedColor(SelectedAttr).ForeAlpha;

AlphaLabel.Show();
AlphaPanel.Show();
end else
begin
AlphaLabel.Hide();
AlphaPanel.Hide();
end;

if SelectedAttr is TSimbaEditor_Attribute then
begin
LabelForeground.Caption := 'Color';
Expand Down Expand Up @@ -289,6 +311,12 @@ procedure TEditorColorsFrame.CheckListBox1ClickCheck(Sender: TObject);
end;
end;

procedure TEditorColorsFrame.ForegroundAlphaEditChange(Sender: TObject);
begin
if SelectedAttr is TSynSelectedColor then
TSynSelectedColor(SelectedAttr).ForeAlpha := TSpinEdit(Sender).Value;
end;

procedure TEditorColorsFrame.ButtonLoadFromURLClick(Sender: TObject);
var
Value, Contents: String;
Expand All @@ -304,6 +332,12 @@ procedure TEditorColorsFrame.ButtonLoadFromURLClick(Sender: TObject);
end;
end;

procedure TEditorColorsFrame.BackgroundAlphaEditChange(Sender: TObject);
begin
if SelectedAttr is TSynSelectedColor then
TSynSelectedColor(SelectedAttr).BackAlpha := TSpinEdit(Sender).Value;
end;

procedure TEditorColorsFrame.Panel2Resize(Sender: TObject);
begin
ForegoundColorBox.Width := (TPanel(Sender).Width - 25) div 3;
Expand Down

0 comments on commit 64e1ea1

Please sign in to comment.