From cd4e5027c67fe60b35784bf9806298d52d3a22bf Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 8 Feb 2026 23:20:55 +0000
Subject: [PATCH 1/4] Initial plan
From 3ef1d65b8cc80b779f42856e40311895f823df9c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 8 Feb 2026 23:29:09 +0000
Subject: [PATCH 2/4] Add GitIgnore generator - library, frame, and menu
registration
Co-authored-by: ShaunRoselt <5418178+ShaunRoselt@users.noreply.github.com>
---
Frames/FMX/uFrame_GitIgnoreGenerator.fmx | 286 +++++++++++++++
Frames/FMX/uFrame_GitIgnoreGenerator.pas | 141 +++++++
Lib/Roselt.GitIgnoreGenerator.pas | 444 +++++++++++++++++++++++
Roselt.Menu.pas | 21 +-
4 files changed, 890 insertions(+), 2 deletions(-)
create mode 100644 Frames/FMX/uFrame_GitIgnoreGenerator.fmx
create mode 100644 Frames/FMX/uFrame_GitIgnoreGenerator.pas
create mode 100644 Lib/Roselt.GitIgnoreGenerator.pas
diff --git a/Frames/FMX/uFrame_GitIgnoreGenerator.fmx b/Frames/FMX/uFrame_GitIgnoreGenerator.fmx
new file mode 100644
index 0000000..1b5450c
--- /dev/null
+++ b/Frames/FMX/uFrame_GitIgnoreGenerator.fmx
@@ -0,0 +1,286 @@
+object Frame_GitIgnoreGenerator: TFrame_GitIgnoreGenerator
+ Size.Width = 852.000000000000000000
+ Size.Height = 756.000000000000000000
+ Size.PlatformDefault = False
+ object layBottom: TLayout
+ Align = Client
+ Padding.Left = 20.000000000000000000
+ Padding.Top = 20.000000000000000000
+ Padding.Right = 20.000000000000000000
+ Padding.Bottom = 20.000000000000000000
+ Size.Width = 852.000000000000000000
+ Size.Height = 568.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 0
+ object memTitleOutput: TLabel
+ Align = Top
+ StyledSettings = [Family, Style, FontColor]
+ Position.X = 20.000000000000000000
+ Position.Y = 20.000000000000000000
+ Size.Width = 812.000000000000000000
+ Size.Height = 36.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 20.000000000000000000
+ TextSettings.Trimming = None
+ Text = '.gitignore Content'
+ TabOrder = 0
+ object btnOutputCopyToClipboard: TButton
+ Align = Right
+ Cursor = crHandPoint
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 741.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 70.000000000000000000
+ Size.Height = 34.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 5
+ TextSettings.Trimming = None
+ OnClick = btnOutputCopyToClipboardClick
+ object imgOutputCopyToClipboard: TSkSvg
+ Align = Left
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Position.X = 5.000000000000000000
+ Position.Y = 5.000000000000000000
+ Size.Width = 24.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Svg.OverrideColor = claWhite
+ Svg.Source =
+ ''
+ end
+ object lblOutputCopyToClipboard: TLabel
+ Align = Client
+ Size.Width = 36.000000000000000000
+ Size.Height = 34.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Trimming = None
+ Text = 'Copy'
+ TabOrder = 5
+ end
+ end
+ end
+ object memOutput: TMemo
+ Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
+ DataDetectorTypes = []
+ Align = Client
+ Size.Width = 812.000000000000000000
+ Size.Height = 492.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 1
+ Viewport.Width = 812.000000000000000000
+ Viewport.Height = 492.000000000000000000
+ end
+ end
+ object layTop: TLayout
+ Align = Top
+ Padding.Left = 20.000000000000000000
+ Padding.Top = 20.000000000000000000
+ Padding.Right = 20.000000000000000000
+ Padding.Bottom = 20.000000000000000000
+ Size.Width = 852.000000000000000000
+ Size.Height = 188.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 1
+ object lblConfiguration: TLabel
+ Align = Top
+ StyledSettings = [Family, Style, FontColor]
+ Position.X = 20.000000000000000000
+ Position.Y = 20.000000000000000000
+ Size.Width = 812.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 20.000000000000000000
+ TextSettings.Trimming = None
+ Text = 'Configuration'
+ TabOrder = 0
+ end
+ object layCategory: TRectangle
+ Align = Top
+ Fill.Color = x4B000000
+ Padding.Left = 12.000000000000000000
+ Padding.Top = 12.000000000000000000
+ Padding.Right = 12.000000000000000000
+ Padding.Bottom = 12.000000000000000000
+ Margins.Bottom = 6.000000000000000000
+ Position.X = 20.000000000000000000
+ Position.Y = 50.000000000000000000
+ Sides = []
+ Size.Width = 812.000000000000000000
+ Size.Height = 56.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 8.000000000000000000
+ YRadius = 8.000000000000000000
+ object imgCategory: TSkSvg
+ Align = Left
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 17.000000000000000000
+ Position.Y = 20.000000000000000000
+ Size.Width = 24.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Svg.OverrideColor = claWhite
+ Svg.Source =
+ ''
+ end
+ object layCategoryTitleDescription: TLayout
+ Align = Client
+ Size.Width = 611.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 1
+ object lblCategoryTitle: TLabel
+ Align = Client
+ StyledSettings = [Family, Style, FontColor]
+ Size.Width = 611.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 18.000000000000000000
+ TextSettings.Trimming = None
+ Text = 'Category'
+ TabOrder = 1
+ end
+ object lblCategoryDescription: TLabel
+ Align = Bottom
+ StyledSettings = [Family, Style, FontColor]
+ Position.Y = 32.000000000000000000
+ Size.Width = 611.000000000000000000
+ Size.Height = 0.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 14.000000000000000000
+ TextSettings.Trimming = None
+ Text = 'Select the category of gitignore template'
+ TabOrder = 0
+ Visible = False
+ end
+ end
+ object cbCategory: TComboBox
+ Align = Right
+ Items.Strings = (
+ 'Languages'
+ 'IDEs'
+ 'Operating Systems')
+ ItemIndex = 0
+ Position.X = 660.000000000000000000
+ Position.Y = 12.000000000000000000
+ Size.Width = 140.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 2
+ OnChange = cbCategoryChange
+ end
+ end
+ object layTemplate: TRectangle
+ Align = Top
+ Fill.Color = x4B000000
+ Padding.Left = 12.000000000000000000
+ Padding.Top = 12.000000000000000000
+ Padding.Right = 12.000000000000000000
+ Padding.Bottom = 12.000000000000000000
+ Margins.Bottom = 6.000000000000000000
+ Position.X = 20.000000000000000000
+ Position.Y = 112.000000000000000000
+ Sides = []
+ Size.Width = 812.000000000000000000
+ Size.Height = 56.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 8.000000000000000000
+ YRadius = 8.000000000000000000
+ object imgTemplate: TSkSvg
+ Align = Left
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 17.000000000000000000
+ Position.Y = 20.000000000000000000
+ Size.Width = 24.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Svg.OverrideColor = claWhite
+ Svg.Source =
+ '