Skip to content

Commit 77473a1

Browse files
committed
Merge branch 'feature/73-make-tcssselector.addproperty-fluent' into develop
2 parents f9c6a41 + 5d7a34f commit 77473a1

12 files changed

+356
-378
lines changed

Src/FirstRun.FmWhatsNew.FrHTML.pas

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
44
* obtain one at https://mozilla.org/MPL/2.0/
55
*
6-
* Copyright (C) 2020-2021, Peter Johnson (gravatar.com/delphidabbler).
6+
* Copyright (C) 2020-2022, Peter Johnson (gravatar.com/delphidabbler).
77
*
88
* Frame that displays HTML of "what's new" message in a TWebBrowser control.
99
}
@@ -67,34 +67,24 @@ procedure TWhatsNewHTMLFrame.BuildCSS(const CSSBuilder: TCSSBuilder);
6767
try
6868
TFontHelper.SetContentFont(CSSFont);
6969
CSSFont.Size := CSSFont.Size + 2;
70-
with CSSBuilder.AddSelector('body') do
71-
begin
72-
AddProperty(TCSS.FontProps(CSSFont));
73-
AddProperty(TCSS.MarginProp(0, 8, 0, 8));
74-
end;
75-
with CSSBuilder.AddSelector('.lead') do
76-
begin
77-
AddProperty(TCSS.FontSizeProp(CSSFont.Size + 2));
78-
AddProperty(TCSS.FontWeightProp(cfwBold));
79-
AddProperty(TCSS.ColorProp($233bc2));
80-
end;
70+
CSSBuilder.AddSelector('body')
71+
.AddProperty(TCSS.FontProps(CSSFont))
72+
.AddProperty(TCSS.MarginProp(0, 8, 0, 8));
73+
CSSBuilder.AddSelector('.lead')
74+
.AddProperty(TCSS.FontSizeProp(CSSFont.Size + 2))
75+
.AddProperty(TCSS.FontWeightProp(cfwBold))
76+
.AddProperty(TCSS.ColorProp($233bc2));
8177
// Sets paragraph margins and padding
82-
with CSSBuilder.AddSelector('p') do
83-
begin
84-
AddProperty(TCSS.MarginProp(cssTop, 6));
85-
AddProperty(TCSS.MarginProp(cssBottom, 0));
86-
AddProperty(TCSS.PaddingProp(0));
87-
end;
88-
with CSSBuilder.AddSelector('ul') do
89-
begin
90-
AddProperty(TCSS.MarginProp(cssTop, 6));
91-
AddProperty(TCSS.MarginProp(cssBottom, 0));
92-
AddProperty(TCSS.PaddingProp(0));
93-
end;
94-
with CSSBuilder.AddSelector('li') do
95-
begin
96-
AddProperty(TCSS.MarginProp(cssTop, 6));
97-
end;
78+
CSSBuilder.AddSelector('p')
79+
.AddProperty(TCSS.MarginProp(cssTop, 6))
80+
.AddProperty(TCSS.MarginProp(cssBottom, 0))
81+
.AddProperty(TCSS.PaddingProp(0));
82+
CSSBuilder.AddSelector('ul')
83+
.AddProperty(TCSS.MarginProp(cssTop, 6))
84+
.AddProperty(TCSS.MarginProp(cssBottom, 0))
85+
.AddProperty(TCSS.PaddingProp(0));
86+
CSSBuilder.AddSelector('li')
87+
.AddProperty(TCSS.MarginProp(cssTop, 6));
9888
finally
9989
CSSFont.Free;
10090
end;

Src/FmAboutDlg.pas

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
44
* obtain one at https://mozilla.org/MPL/2.0/
55
*
6-
* Copyright (C) 2005-2021, Peter Johnson (gravatar.com/delphidabbler).
6+
* Copyright (C) 2005-2022, Peter Johnson (gravatar.com/delphidabbler).
77
*
88
* Implements the program's About dialogue box.
99
}
@@ -524,40 +524,36 @@ procedure TAboutDlg.UpdateDetailCSS(Sender: TObject;
524524
ContentFont: TFont; // font used for content
525525
begin
526526
// Modify body's margin and, for themed windows, background colour
527-
with CSSBuilder.Selectors['body'] do
528-
begin
529-
ContentFont := TFont.Create;
530-
try
531-
TFontHelper.SetContentFont(ContentFont);
532-
AddProperty(TCSS.FontProps(ContentFont));
533-
if ThemeServicesEx.ThemesEnabled then
534-
AddProperty(TCSS.BackgroundColorProp(ThemeServicesEx.GetTabBodyColour));
535-
AddProperty(UCSSUtils.TCSS.MarginProp(0, 2, 6, 2));
536-
finally
537-
FreeAndNil(ContentFont);
538-
end;
527+
ContentFont := TFont.Create;
528+
try
529+
TFontHelper.SetContentFont(ContentFont);
530+
CSSBuilder.Selectors['body']
531+
.AddProperty(TCSS.FontProps(ContentFont))
532+
.AddProperty(UCSSUtils.TCSS.MarginProp(0, 2, 6, 2))
533+
.AddPropertyIf(
534+
ThemeServicesEx.ThemesEnabled,
535+
TCSS.BackgroundColorProp(ThemeServicesEx.GetTabBodyColour)
536+
);
537+
finally
538+
FreeAndNil(ContentFont);
539539
end;
540540
// Put border round scroll box
541-
with CSSBuilder.AddSelector('.scrollbox') do
542-
AddProperty(UCSSUtils.TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder));
541+
CSSBuilder.AddSelector('.scrollbox')
542+
.AddProperty(UCSSUtils.TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder));
543543
// Set colours and font style of contributors and testers headings
544-
with CSSBuilder.AddSelector('.contrib-head, .tester-head') do
545-
begin
546-
AddProperty(TCSS.BackgroundColorProp(clBtnFace));
547-
AddProperty(TCSS.ColorProp(clBtnText));
548-
AddProperty(TCSS.FontWeightProp(cfwBold));
549-
end;
544+
CSSBuilder.AddSelector('.contrib-head, .tester-head')
545+
.AddProperty(TCSS.BackgroundColorProp(clBtnFace))
546+
.AddProperty(TCSS.ColorProp(clBtnText))
547+
.AddProperty(TCSS.FontWeightProp(cfwBold));
550548
end;
551549

552550
procedure TAboutDlg.UpdateTitleCSS(Sender: TObject;
553551
const CSSBuilder: TCSSBuilder);
554552
begin
555553
// Set body colour, and put border round it
556-
with CSSBuilder.Selectors['body'] do
557-
begin
558-
AddProperty(TCSS.BackgroundColorProp(clWindow));
559-
AddProperty(TCSS.PaddingProp(4));
560-
end;
554+
CSSBuilder.Selectors['body']
555+
.AddProperty(TCSS.BackgroundColorProp(clWindow))
556+
.AddProperty(TCSS.PaddingProp(4));
561557
end;
562558

563559
procedure TAboutDlg.ViewConfigFile(const FileName, DlgTitle: string);

Src/FmActiveTextPreviewDlg.pas

Lines changed: 50 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
44
* obtain one at https://mozilla.org/MPL/2.0/
55
*
6-
* Copyright (C) 2009-2021, Peter Johnson (gravatar.com/delphidabbler).
6+
* Copyright (C) 2009-2022, Peter Johnson (gravatar.com/delphidabbler).
77
*
88
* Implements a dialogue box that displays active text rendered from REML markup
99
* or plain text.
@@ -214,75 +214,62 @@ procedure TActiveTextPreviewDlg.UpdateCSS(Sender: TObject;
214214
const
215215
MaxHTMLHeight = 240; // max height of rendered HTML
216216
var
217-
ContentFont: TFont; // font used for #content tab
217+
ContentFont: TFont; // font used for #content tab
218218
begin
219219
ContentFont := TFont.Create;
220220
try
221221
TFontHelper.SetContentFont(ContentFont);
222222
// Set rendered REML container
223-
with CSSBuilder.EnsureSelector('#content') do
224-
begin
225-
AddProperty(TCSS.FontProps(ContentFont));
226-
AddProperty(TCSS.BackgroundColorProp(clWindow));
227-
AddProperty(TCSS.PaddingProp(0, 6, 6, 6));
228-
AddProperty(TCSS.MarginProp(cssTop, 6));
229-
AddProperty(TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder));
230-
AddProperty(TCSS.OverflowProp(covAuto));
231-
AddProperty(TCSS.WidthProp(cluAuto, 0));
232-
// Use height instead of maxheight if IE 6 or lower
233-
if TIEInfo.SupportsCSSMaxHeight then
234-
AddProperty(TCSS.MaxHeightProp(MaxHTMLHeight))
235-
else
236-
AddProperty(TCSS.HeightProp(MaxHTMLHeight));
237-
end;
238-
with CSSBuilder.EnsureSelector('.active-text h2') do
239-
begin
240-
AddProperty(TCSS.MarginProp(4, 0, 0, 0));
241-
AddProperty(TCSS.FontWeightProp(cfwBold));
242-
AddProperty(TCSS.FontSizeProp(ContentFont.Size + 1));
243-
end;
244-
with CSSBuilder.EnsureSelector('.active-text p') do
245-
AddProperty(TCSS.MarginProp(4, 0, 0, 0));
223+
CSSBuilder.EnsureSelector('#content')
224+
.AddProperty(TCSS.FontProps(ContentFont))
225+
.AddProperty(TCSS.BackgroundColorProp(clWindow))
226+
.AddProperty(TCSS.PaddingProp(0, 6, 6, 6))
227+
.AddProperty(TCSS.MarginProp(cssTop, 6))
228+
.AddProperty(TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder))
229+
.AddProperty(TCSS.OverflowProp(covAuto))
230+
.AddProperty(TCSS.WidthProp(cluAuto, 0))
231+
.AddPropertyIf(
232+
TIEInfo.SupportsCSSMaxHeight,
233+
TCSS.MaxHeightProp(MaxHTMLHeight),
234+
TCSS.HeightProp(MaxHTMLHeight)
235+
);
236+
CSSBuilder.EnsureSelector('.active-text h2')
237+
.AddProperty(TCSS.MarginProp(4, 0, 0, 0))
238+
.AddProperty(TCSS.FontWeightProp(cfwBold))
239+
.AddProperty(TCSS.FontSizeProp(ContentFont.Size + 1));
240+
CSSBuilder.EnsureSelector('.active-text p')
241+
.AddProperty(TCSS.MarginProp(4, 0, 0, 0));
246242
// Show or hide text about links depending on if links are present
247-
with CSSBuilder.EnsureSelector('#linktext') do
248-
begin
249-
if ContainsLinks then
250-
AddProperty(TCSS.DisplayProp(cdsInline))
251-
else
252-
AddProperty(TCSS.DisplayProp(cdsNone));
253-
end;
243+
CSSBuilder.EnsureSelector('#linktext')
244+
.AddPropertyIf(
245+
ContainsLinks, TCSS.DisplayProp(cdsInline), TCSS.DisplayProp(cdsNone)
246+
);
254247
// Set up lists
255-
with CSSBuilder.EnsureSelector('.active-text ul') do
256-
begin
257-
AddProperty(TCSS.MarginProp(cssAll, 0));
258-
AddProperty(TCSS.MarginProp(cssTop, 4));
259-
AddProperty(TCSS.PaddingProp(cssAll, 0));
260-
AddProperty(TCSS.PaddingProp(cssLeft, 24));
261-
AddProperty(TCSS.ListStylePositionProp(clspOutside));
262-
AddProperty(TCSS.ListStyleTypeProp(clstDisc));
263-
end;
264-
with CSSBuilder.EnsureSelector('.active-text ol') do
265-
begin
266-
AddProperty(TCSS.MarginProp(cssAll, 0));
267-
AddProperty(TCSS.MarginProp(cssTop, 4));
268-
AddProperty(TCSS.PaddingProp(cssAll, 0));
269-
AddProperty(TCSS.PaddingProp(cssLeft, 32));
270-
AddProperty(TCSS.ListStylePositionProp(clspOutside));
271-
AddProperty(TCSS.ListStyleTypeProp(clstDecimal));
272-
end;
273-
with CSSBuilder.EnsureSelector('.active-text li') do
274-
begin
275-
AddProperty(TCSS.PaddingProp(cssAll, 0));
276-
AddProperty(TCSS.MarginProp(cssAll, 0));
277-
end;
278-
with CSSBuilder.EnsureSelector('.active-text li ol') do
279-
AddProperty(TCSS.MarginProp(cssTop, 0));
280-
with CSSBuilder.EnsureSelector('.active-text li ul') do
281-
AddProperty(TCSS.MarginProp(cssTop, 0));
282-
with CSSBuilder.EnsureSelector('.active-text ul li') do
283-
AddProperty(TCSS.PaddingProp(cssLeft, 8));
284-
with CSSBuilder.EnsureSelector('.active-text ul li ol li') do
285-
AddProperty(TCSS.PaddingProp(cssLeft, 0));
248+
CSSBuilder.EnsureSelector('.active-text ul')
249+
.AddProperty(TCSS.MarginProp(cssAll, 0))
250+
.AddProperty(TCSS.MarginProp(cssTop, 4))
251+
.AddProperty(TCSS.PaddingProp(cssAll, 0))
252+
.AddProperty(TCSS.PaddingProp(cssLeft, 24))
253+
.AddProperty(TCSS.ListStylePositionProp(clspOutside))
254+
.AddProperty(TCSS.ListStyleTypeProp(clstDisc));
255+
CSSBuilder.EnsureSelector('.active-text ol')
256+
.AddProperty(TCSS.MarginProp(cssAll, 0))
257+
.AddProperty(TCSS.MarginProp(cssTop, 4))
258+
.AddProperty(TCSS.PaddingProp(cssAll, 0))
259+
.AddProperty(TCSS.PaddingProp(cssLeft, 32))
260+
.AddProperty(TCSS.ListStylePositionProp(clspOutside))
261+
.AddProperty(TCSS.ListStyleTypeProp(clstDecimal));
262+
CSSBuilder.EnsureSelector('.active-text li')
263+
.AddProperty(TCSS.PaddingProp(cssAll, 0))
264+
.AddProperty(TCSS.MarginProp(cssAll, 0));
265+
CSSBuilder.EnsureSelector('.active-text li ol')
266+
.AddProperty(TCSS.MarginProp(cssTop, 0));
267+
CSSBuilder.EnsureSelector('.active-text li ul')
268+
.AddProperty(TCSS.MarginProp(cssTop, 0));
269+
CSSBuilder.EnsureSelector('.active-text ul li')
270+
.AddProperty(TCSS.PaddingProp(cssLeft, 8));
271+
CSSBuilder.EnsureSelector('.active-text ul li ol li')
272+
.AddProperty(TCSS.PaddingProp(cssLeft, 0));
286273
finally
287274
ContentFont.Free;
288275
end;

Src/FmDBUpdateDlg.pas

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
44
* obtain one at https://mozilla.org/MPL/2.0/
55
*
6-
* Copyright (C) 2005-2021, Peter Johnson (gravatar.com/delphidabbler).
6+
* Copyright (C) 2005-2022, Peter Johnson (gravatar.com/delphidabbler).
77
*
88
* Implements a wizard dialogue box that handles the updating of the main
99
* DelphiDabbler Code Snippets database.
@@ -254,11 +254,9 @@ procedure TDBUpdateDlg.BuildCSS(Sender: TObject;
254254
begin
255255
inherited;
256256
// Create .framed border style
257-
with CSSBuilder.AddSelector('.framed') do
258-
begin
259-
AddProperty(TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder));
260-
AddProperty(TCSS.PaddingProp(4));
261-
end;
257+
CSSBuilder.AddSelector('.framed')
258+
.AddProperty(TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder))
259+
.AddProperty(TCSS.PaddingProp(4));
262260
end;
263261

264262
procedure TDBUpdateDlg.ConfigForm;

Src/FmSWAGImportDlg.pas

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
44
* obtain one at https://mozilla.org/MPL/2.0/
55
*
6-
* Copyright (C) 2013-2021, Peter Johnson (gravatar.com/delphidabbler).
6+
* Copyright (C) 2013-2022, Peter Johnson (gravatar.com/delphidabbler).
77
*
88
* Implements a wizard dialogue box that lets the user select and import
99
* packets from the DelphiDabbler implementation of the SWAG Pascal archive as
@@ -422,15 +422,13 @@ procedure TSWAGImportDlg.BuildCSS(Sender: TObject;
422422
begin
423423
inherited;
424424
// Set body text spacing
425-
with CSSBuilder.Selectors['body'] do
426-
AddProperty(TCSS.LineHeightProp(120));
425+
CSSBuilder.Selectors['body']
426+
.AddProperty(TCSS.LineHeightProp(120));
427427
// Create .framed border style
428-
with CSSBuilder.AddSelector('.framed') do
429-
begin
430-
AddProperty(TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder));
431-
AddProperty(TCSS.PaddingProp(0, 4, 4, 4));
432-
AddProperty(TCSS.MarginProp(cssTop, 4));
433-
end;
428+
CSSBuilder.AddSelector('.framed')
429+
.AddProperty(TCSS.BorderProp(cssAll, 1, cbsSolid, clBorder))
430+
.AddProperty(TCSS.PaddingProp(0, 4, 4, 4))
431+
.AddProperty(TCSS.MarginProp(cssTop, 4));
434432
end;
435433

436434
procedure TSWAGImportDlg.clbSelectPacketsClickCheck(Sender: TObject);

0 commit comments

Comments
 (0)