├── .gitignore
├── Config.json
├── Diagramme sans nom.drawio
├── Download res
├── pDoawloadres.dpr
├── pDoawloadres.dproj
└── pDoawloadres.res
├── Images
├── img1.png
├── img10.png
├── img11.png
├── img2.png
├── img3.png
├── img4.png
├── img5.png
├── img6.png
├── img7.png
├── img8.png
└── img9.png
├── Installer
├── Setup.iss
└── setup.ifp
├── Packages
├── CustomButton1.pas
├── TYGComponents.dpk
├── TYGComponents.dproj
└── TYGComponents.res
├── README.md
├── WGHelp.dpr
├── WGHelp.dproj
├── WGHelp.res
├── Win32
└── Release
│ ├── Winget Helper-cache
│ ├── cacheIndex.txt
│ └── part1
│ │ ├── Winget Helper1.cab
│ │ └── output-info.ini
│ └── Winget Helper.aip
├── Win64
└── Debug
│ ├── config.xml
│ └── uMain.dcu
├── Windel.groupproj
├── WindelGrp.groupproj
├── WingetHelper.res
├── __history
├── uFrameBase.dfm.~1~
├── uFrameBase.dfm.~2~
├── uFrameBase.dfm.~3~
├── uFrameBase.pas.~1~
├── uFrameBase.pas.~2~
├── uFrameBase.pas.~3~
├── uFrameUpgrade.dfm.~19~
├── uFrameUpgrade.dfm.~20~
├── uFrameUpgrade.dfm.~21~
├── uFrameUpgrade.dfm.~22~
├── uFrameUpgrade.dfm.~23~
├── uFrameUpgrade.dfm.~24~
├── uFrameUpgrade.dfm.~25~
├── uFrameUpgrade.dfm.~26~
├── uFrameUpgrade.dfm.~27~
├── uFrameUpgrade.dfm.~28~
├── uFrameUpgrade.pas.~14~
├── uFrameUpgrade.pas.~15~
├── uFrameUpgrade.pas.~16~
├── uFrameUpgrade.pas.~17~
├── uFrameUpgrade.pas.~18~
├── uFrameUpgrade.pas.~19~
├── uFrameUpgrade.pas.~20~
├── uFrameUpgrade.pas.~21~
├── uFrameUpgrade.pas.~22~
└── uFrameUpgrade.pas.~23~
├── icons
├── f1 (1).png
├── f1 (2).png
├── f1.png
├── favicon.ico
├── keyboard-font.zip
└── keyboard-font
│ ├── KeyExtendedCSd-rv2K.ttf
│ ├── KeyNormalCSd-MAYv.ttf
│ └── misc
│ ├── KEYBOARD-0acf.doc
│ ├── KEYBOARD-36a3.rtf
│ ├── LICENSE-bf26.txt
│ ├── README-09a2.txt
│ ├── REGISTER-5d51.txt
│ └── VENDOR-d7ea.txt
├── openssl-1.0.2p-x64_86-win64.zip
├── openssl-1.0.2p-x64_86-win64
├── HashInfo.txt
├── OpenSSL License.txt
└── ReadMe.txt
├── pTestString.dpr
├── pTestString.dproj
├── pTestString.res
├── pWinDel.identcache
├── pWinDel.res
├── pWinDel_Icon.ico
├── pWinDel_Icon1.ico
├── pWinDel_Icon2.ico
├── pWinDel_Icon3.ico
├── pWinDel_Icon4.ico
├── testString.dfm
├── testString.pas
├── uConst.pas
├── uFrameBase.dfm
├── uFrameBase.pas
├── uFrameConfig.dfm
├── uFrameConfig.pas
├── uFrameList.dfm
├── uFrameList.pas
├── uFrameSearch.dfm
├── uFrameSearch.pas
├── uFrameUpgrade.dfm
├── uFrameUpgrade.pas
├── uFrameUpgrade2.dfm
├── uFrameUpgrade2.pas
├── uMain.dfm
├── uMain.pas
├── uOptions.dfm
├── uOptions.pas
├── uRunWinget.dfm
├── uRunWinget.pas
├── udlgClose.dfm
├── udlgClose.pas
├── utestcomponents.dfm
└── utestcomponents.pas
/.gitignore:
--------------------------------------------------------------------------------
1 | # Uncomment these types if you want even more clean repository. But be careful.
2 | # It can make harm to an existing project source. Read explanations below.
3 | #
4 | # Resource files are binaries containing manifest, project icon and version info.
5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
6 | #*.res
7 | #
8 | # Type library file (binary). In old Delphi versions it should be stored.
9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
10 | #*.tlb
11 | #
12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
13 | # Uncomment this if you are not using diagrams or use newer Delphi version.
14 | #*.ddp
15 | #
16 | # Visual LiveBindings file. Added in Delphi XE2.
17 | # Uncomment this if you are not using LiveBindings Designer.
18 | #*.vlb
19 | #
20 | # Deployment Manager configuration file for your project. Added in Delphi XE2.
21 | # Uncomment this if it is not mobile development and you do not use remote debug feature.
22 | #*.deployproj
23 | #
24 | # C++ object files produced when C/C++ Output file generation is configured.
25 | # Uncomment this if you are not using external objects (zlib library for example).
26 | #*.obj
27 | #
28 |
29 | # Delphi compiler-generated binaries (safe to delete)
30 | *.exe
31 | *.dll
32 | *.bpl
33 | *.bpi
34 | *.dcp
35 | *.so
36 | *.apk
37 | *.drc
38 | *.map
39 | *.dres
40 | *.rsm
41 | *.tds
42 | *.dcu
43 | *.lib
44 | *.a
45 | *.o
46 | *.ocx
47 |
48 | # Delphi autogenerated files (duplicated info)
49 | *.cfg
50 | *.hpp
51 | *Resource.rc
52 |
53 | # Delphi local files (user-specific info)
54 | *.local
55 | *.identcache
56 | *.projdata
57 | *.tvsconfig
58 | *.dsk
59 |
60 | # Delphi history and backups
61 | __history/
62 | __recovery/
63 | *.~*
64 |
65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi)
66 | *.stat
67 |
68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss
69 | modules/
70 | Win64/Debug/pWinDel.exe
71 | Win64/Debug/pWinDel.rsm
72 | *.dcu
73 | *.dcu
74 | Win64/Debug/pWinDel.exe
75 | Win64/Debug/pWinDel.rsm
76 | Win64/Debug/uMain.dcu
77 | pWinDel.dproj.local
78 | pWinDel.dproj.local
79 | pWinDel.identcache
80 |
--------------------------------------------------------------------------------
/Config.json:
--------------------------------------------------------------------------------
1 | {
2 | "OpenMinimized": false
3 | }
--------------------------------------------------------------------------------
/Diagramme sans nom.drawio:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Download res/pDoawloadres.dpr:
--------------------------------------------------------------------------------
1 | program pDoawloadres;
2 |
3 | {$APPTYPE CONSOLE}
4 |
5 | {$R *.res}
6 |
7 | uses
8 | System.SysUtils, Windows;
9 |
10 | procedure Test_VerLanguageName;
11 | var
12 | wLang : LangID;
13 | szLang: Array [0..254] of Char;
14 | begin
15 | wLang := GetSystemDefaultLCID;
16 | VerLanguageName(wLang, szLang, SizeOf(szLang));
17 | Writeln(szLang);
18 | end;
19 |
20 | procedure Test_GetLocaleInfo;
21 | var
22 | Buffer : PChar;
23 | Size : integer;
24 | begin
25 | Size := GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, nil, 0);
26 | GetMem(Buffer, Size);
27 | try
28 | GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, Buffer, Size);
29 | Writeln(Buffer);
30 | finally
31 | FreeMem(Buffer);
32 | end;
33 | end;
34 |
35 | begin
36 | try
37 | Test_VerLanguageName;
38 | Test_GetLocaleInfo;
39 | Sleep(5000);
40 | except
41 | on E: Exception do
42 | Writeln(E.ClassName, ': ', E.Message);
43 | end;
44 | end.
45 |
--------------------------------------------------------------------------------
/Download res/pDoawloadres.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Download res/pDoawloadres.res
--------------------------------------------------------------------------------
/Images/img1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img1.png
--------------------------------------------------------------------------------
/Images/img10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img10.png
--------------------------------------------------------------------------------
/Images/img11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img11.png
--------------------------------------------------------------------------------
/Images/img2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img2.png
--------------------------------------------------------------------------------
/Images/img3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img3.png
--------------------------------------------------------------------------------
/Images/img4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img4.png
--------------------------------------------------------------------------------
/Images/img5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img5.png
--------------------------------------------------------------------------------
/Images/img6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img6.png
--------------------------------------------------------------------------------
/Images/img7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img7.png
--------------------------------------------------------------------------------
/Images/img8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img8.png
--------------------------------------------------------------------------------
/Images/img9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img9.png
--------------------------------------------------------------------------------
/Installer/Setup.iss:
--------------------------------------------------------------------------------
1 | ; Script generated by the Inno Script Studio Wizard.
2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3 |
4 | #define MyAppName "Winget Helper"
5 | #define MyAppVersion "0.2.0.2"
6 | #define MyAppPublisher "YGO"
7 | #define MyAppURL "https://github.com/Yves848/WinDel/"
8 | #define MyAppExeName "WGHelp.exe"
9 |
10 | [Setup]
11 | ; NOTE: The value of AppId uniquely identifies this application.
12 | ; Do not use the same AppId value in installers for other applications.
13 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
14 | AppId={{B1144CEA-D704-4607-B2DD-553EE9EC26E2}
15 | AppName={#MyAppName}
16 | AppVersion={#MyAppVersion}
17 | ;AppVerName={#MyAppName} {#MyAppVersion}
18 | AppPublisher={#MyAppPublisher}
19 | AppPublisherURL={#MyAppURL}
20 | AppSupportURL={#MyAppURL}
21 | AppUpdatesURL={#MyAppURL}
22 | DefaultDirName={pf}\{#MyAppName}
23 | DefaultGroupName={#MyAppName}
24 | OutputBaseFilename=WGHelpSetup
25 | Compression=lzma
26 | SolidCompression=yes
27 |
28 | [Languages]
29 | Name: "english"; MessagesFile: "compiler:Default.isl"
30 |
31 | [Tasks]
32 | Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
33 |
34 | [Files]
35 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
36 | Source: "..\Win32\Release\WGHelp.exe"; DestDir: "{app}"; DestName: "WGHelp.exe"
37 |
38 | [Icons]
39 | Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
40 | Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
41 |
42 | [Run]
43 | Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
44 |
--------------------------------------------------------------------------------
/Installer/setup.ifp:
--------------------------------------------------------------------------------
1 |
2 | [Header]
3 | ProjectFileVersion = 1.1
4 | [General]
5 | Program name = Winget Helper
6 | Program version = 0.2
7 | Windows 2000 = 0
8 | Windows XP = 0
9 | Windows Server 2003 = 0
10 | Windows Vista = 0
11 | Windows Server 2008 = 0
12 | Windows 7 = 0
13 | Windows 8 = 0
14 | Windows 10 = 0
15 | Windows Server 2016 = 0
16 | DoNotCheckOS = 1
17 | Company name = YGO
18 | Website = https://
19 | SFA = 0
20 | DFA = 0
21 | Comp = 1
22 | [Graphics]
23 | Wizard image =
24 | Header image =
25 | Show Label = 1
26 | VisualStylesEnabled = 1
27 | [Files]
28 | Installation path = \\\
29 | Autcip = 1
30 | [Uninstall]
31 | Vwau = 0
32 | Website = https://
33 | Include uninstaller = 1
34 | Uninstaller filename = Uninstall
35 | UseCustomDisplayIcon = 0
36 | CustomDisplayIcon = \
37 | [Licence]
38 | Licence dialog = 0
39 | [Finish]
40 | Sart program = 0
41 | Reboot computer = 0
42 | Program = \
43 | ProgramArguments =
44 | [Shortcuts]
45 | Allowtc = 0
46 | Shortcut path = \\
47 | [Serialoptions]
48 | Allows = 0
49 | Number = 1000
50 | Mask = #####-#####-#####-#####
51 | [SplashScreen]
52 | Image =
53 | Sound =
54 | Time = 2
55 | PlaySound = 0
56 | Allow = 0
57 | [Build]
58 | File = C:\Users\yvesg\git\WinDel\Installer\Setup.exe
59 | SetupIconPath = ..\icons\ancient.ico
60 | UninstallIconPath = ..\icons\ancient.ico
61 | CompressionMethod = 0
62 | CompressionLevel = 2
63 | [Updater]
64 | Allow = 0
65 | 1 =
66 | 2 =
67 | 3 = http://
68 | 4 = http://
69 | 5 = http://
70 | 6 = Update
71 | Language = 0
72 | RunProg =
73 | RunProgs = 0
74 | Execdlls = 0
75 | [Languages]
76 | 1
77 | [Files/Dirs]
78 | C:\Users\yvesg\git\WinDel\Win32\Release\WingetHelper.exe
79 | 6.3 MB
80 | exe
81 | [Licence_Begin]
82 | 118
83 | {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Arial;}}
84 | \viewkind4\uc1\pard\cf0\fs20\par
85 | }
86 | [Licence_End]
87 | [Registry]
88 | [Variables]
89 | [SCs]
90 | Startmenu
91 | WingetHelper
92 | \WingetHelper.exe
93 |
94 |
95 | 0
96 | [IFP_End]
97 | [Serials]
98 | [Serials_End]
99 | [Commands]
100 |
--------------------------------------------------------------------------------
/Packages/CustomButton1.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Packages/CustomButton1.pas
--------------------------------------------------------------------------------
/Packages/TYGComponents.dpk:
--------------------------------------------------------------------------------
1 | package TYGComponents;
2 |
3 | {$R *.res}
4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
5 | {$ALIGN 8}
6 | {$ASSERTIONS ON}
7 | {$BOOLEVAL OFF}
8 | {$DEBUGINFO OFF}
9 | {$EXTENDEDSYNTAX ON}
10 | {$IMPORTEDDATA ON}
11 | {$IOCHECKS ON}
12 | {$LOCALSYMBOLS ON}
13 | {$LONGSTRINGS ON}
14 | {$OPENSTRINGS ON}
15 | {$OPTIMIZATION OFF}
16 | {$OVERFLOWCHECKS ON}
17 | {$RANGECHECKS ON}
18 | {$REFERENCEINFO ON}
19 | {$SAFEDIVIDE OFF}
20 | {$STACKFRAMES ON}
21 | {$TYPEDADDRESS OFF}
22 | {$VARSTRINGCHECKS ON}
23 | {$WRITEABLECONST OFF}
24 | {$MINENUMSIZE 1}
25 | {$IMAGEBASE $400000}
26 | {$DEFINE DEBUG}
27 | {$ENDIF IMPLICITBUILDING}
28 | {$IMPLICITBUILD ON}
29 |
30 | requires
31 | rtl,
32 | vcl;
33 |
34 | contains
35 | CustomButton1 in 'CustomButton1.pas';
36 |
37 | end.
38 |
--------------------------------------------------------------------------------
/Packages/TYGComponents.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {B8D16885-9F6E-4815-A576-C6FD4ACB489A}
4 | TYGComponents.dpk
5 | 19.5
6 | VCL
7 | True
8 | Debug
9 | Win32
10 | 3
11 | Package
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Base
29 | true
30 |
31 |
32 | true
33 | Base
34 | true
35 |
36 |
37 | true
38 | Base
39 | true
40 |
41 |
42 | true
43 | Base
44 | true
45 |
46 |
47 | true
48 | Base
49 | true
50 |
51 |
52 | true
53 | Cfg_1
54 | true
55 | true
56 |
57 |
58 | true
59 | Base
60 | true
61 |
62 |
63 | .\$(Platform)\$(Config)
64 | .\$(Platform)\$(Config)
65 | false
66 | false
67 | false
68 | false
69 | false
70 | true
71 | true
72 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
73 | All
74 | TYGComponents
75 |
76 |
77 | None
78 | rtl;$(DCC_UsePackage)
79 |
80 |
81 | None
82 | rtl;$(DCC_UsePackage)
83 |
84 |
85 | rtl;$(DCC_UsePackage)
86 |
87 |
88 | rtl;$(DCC_UsePackage)
89 |
90 |
91 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
92 | Debug
93 | true
94 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
95 | 1033
96 | vcl;rtl;$(DCC_UsePackage)
97 |
98 |
99 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
100 | Debug
101 | true
102 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
103 | 1033
104 | vcl;rtl;$(DCC_UsePackage)
105 |
106 |
107 | DEBUG;$(DCC_Define)
108 | true
109 | false
110 | true
111 | true
112 | true
113 | true
114 | true
115 |
116 |
117 | false
118 |
119 |
120 | false
121 | RELEASE;$(DCC_Define)
122 | 0
123 | 0
124 |
125 |
126 |
127 | MainSource
128 |
129 |
130 |
131 |
132 |
133 | Base
134 |
135 |
136 | Cfg_1
137 | Base
138 |
139 |
140 | Cfg_2
141 | Base
142 |
143 |
144 |
145 | Delphi.Personality.12
146 | Package
147 |
148 |
149 |
150 | TYGComponents.dpk
151 |
152 |
153 |
154 |
155 |
156 | true
157 |
158 |
159 |
160 |
161 | true
162 |
163 |
164 |
165 |
166 | true
167 |
168 |
169 |
170 |
171 | TYGComponents.bpl
172 | true
173 |
174 |
175 |
176 |
177 | 1
178 |
179 |
180 | 0
181 |
182 |
183 |
184 |
185 | classes
186 | 64
187 |
188 |
189 | classes
190 | 64
191 |
192 |
193 |
194 |
195 | res\xml
196 | 1
197 |
198 |
199 | res\xml
200 | 1
201 |
202 |
203 |
204 |
205 | library\lib\armeabi-v7a
206 | 1
207 |
208 |
209 |
210 |
211 | library\lib\armeabi
212 | 1
213 |
214 |
215 | library\lib\armeabi
216 | 1
217 |
218 |
219 |
220 |
221 | library\lib\armeabi-v7a
222 | 1
223 |
224 |
225 |
226 |
227 | library\lib\mips
228 | 1
229 |
230 |
231 | library\lib\mips
232 | 1
233 |
234 |
235 |
236 |
237 | library\lib\armeabi-v7a
238 | 1
239 |
240 |
241 | library\lib\arm64-v8a
242 | 1
243 |
244 |
245 |
246 |
247 | library\lib\armeabi-v7a
248 | 1
249 |
250 |
251 |
252 |
253 | res\drawable
254 | 1
255 |
256 |
257 | res\drawable
258 | 1
259 |
260 |
261 |
262 |
263 | res\values
264 | 1
265 |
266 |
267 | res\values
268 | 1
269 |
270 |
271 |
272 |
273 | res\values-v21
274 | 1
275 |
276 |
277 | res\values-v21
278 | 1
279 |
280 |
281 |
282 |
283 | res\values
284 | 1
285 |
286 |
287 | res\values
288 | 1
289 |
290 |
291 |
292 |
293 | res\drawable
294 | 1
295 |
296 |
297 | res\drawable
298 | 1
299 |
300 |
301 |
302 |
303 | res\drawable-xxhdpi
304 | 1
305 |
306 |
307 | res\drawable-xxhdpi
308 | 1
309 |
310 |
311 |
312 |
313 | res\drawable-xxxhdpi
314 | 1
315 |
316 |
317 | res\drawable-xxxhdpi
318 | 1
319 |
320 |
321 |
322 |
323 | res\drawable-ldpi
324 | 1
325 |
326 |
327 | res\drawable-ldpi
328 | 1
329 |
330 |
331 |
332 |
333 | res\drawable-mdpi
334 | 1
335 |
336 |
337 | res\drawable-mdpi
338 | 1
339 |
340 |
341 |
342 |
343 | res\drawable-hdpi
344 | 1
345 |
346 |
347 | res\drawable-hdpi
348 | 1
349 |
350 |
351 |
352 |
353 | res\drawable-xhdpi
354 | 1
355 |
356 |
357 | res\drawable-xhdpi
358 | 1
359 |
360 |
361 |
362 |
363 | res\drawable-mdpi
364 | 1
365 |
366 |
367 | res\drawable-mdpi
368 | 1
369 |
370 |
371 |
372 |
373 | res\drawable-hdpi
374 | 1
375 |
376 |
377 | res\drawable-hdpi
378 | 1
379 |
380 |
381 |
382 |
383 | res\drawable-xhdpi
384 | 1
385 |
386 |
387 | res\drawable-xhdpi
388 | 1
389 |
390 |
391 |
392 |
393 | res\drawable-xxhdpi
394 | 1
395 |
396 |
397 | res\drawable-xxhdpi
398 | 1
399 |
400 |
401 |
402 |
403 | res\drawable-xxxhdpi
404 | 1
405 |
406 |
407 | res\drawable-xxxhdpi
408 | 1
409 |
410 |
411 |
412 |
413 | res\drawable-small
414 | 1
415 |
416 |
417 | res\drawable-small
418 | 1
419 |
420 |
421 |
422 |
423 | res\drawable-normal
424 | 1
425 |
426 |
427 | res\drawable-normal
428 | 1
429 |
430 |
431 |
432 |
433 | res\drawable-large
434 | 1
435 |
436 |
437 | res\drawable-large
438 | 1
439 |
440 |
441 |
442 |
443 | res\drawable-xlarge
444 | 1
445 |
446 |
447 | res\drawable-xlarge
448 | 1
449 |
450 |
451 |
452 |
453 | res\values
454 | 1
455 |
456 |
457 | res\values
458 | 1
459 |
460 |
461 |
462 |
463 | 1
464 |
465 |
466 | 1
467 |
468 |
469 | 0
470 |
471 |
472 |
473 |
474 | 1
475 | .framework
476 |
477 |
478 | 1
479 | .framework
480 |
481 |
482 | 1
483 | .framework
484 |
485 |
486 | 0
487 |
488 |
489 |
490 |
491 | 1
492 | .dylib
493 |
494 |
495 | 1
496 | .dylib
497 |
498 |
499 | 1
500 | .dylib
501 |
502 |
503 | 0
504 | .dll;.bpl
505 |
506 |
507 |
508 |
509 | 1
510 | .dylib
511 |
512 |
513 | 1
514 | .dylib
515 |
516 |
517 | 1
518 | .dylib
519 |
520 |
521 | 1
522 | .dylib
523 |
524 |
525 | 1
526 | .dylib
527 |
528 |
529 | 1
530 | .dylib
531 |
532 |
533 | 0
534 | .bpl
535 |
536 |
537 |
538 |
539 | 0
540 |
541 |
542 | 0
543 |
544 |
545 | 0
546 |
547 |
548 | 0
549 |
550 |
551 | 0
552 |
553 |
554 | 0
555 |
556 |
557 | 0
558 |
559 |
560 | 0
561 |
562 |
563 | 0
564 |
565 |
566 |
567 |
568 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
569 | 1
570 |
571 |
572 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
573 | 1
574 |
575 |
576 |
577 |
578 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
579 | 1
580 |
581 |
582 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
583 | 1
584 |
585 |
586 |
587 |
588 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
589 | 1
590 |
591 |
592 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
593 | 1
594 |
595 |
596 |
597 |
598 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
599 | 1
600 |
601 |
602 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
603 | 1
604 |
605 |
606 |
607 |
608 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
609 | 1
610 |
611 |
612 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
613 | 1
614 |
615 |
616 |
617 |
618 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
619 | 1
620 |
621 |
622 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
623 | 1
624 |
625 |
626 |
627 |
628 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
629 | 1
630 |
631 |
632 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
633 | 1
634 |
635 |
636 |
637 |
638 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
639 | 1
640 |
641 |
642 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
643 | 1
644 |
645 |
646 |
647 |
648 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
649 | 1
650 |
651 |
652 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
653 | 1
654 |
655 |
656 |
657 |
658 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
659 | 1
660 |
661 |
662 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
663 | 1
664 |
665 |
666 |
667 |
668 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
669 | 1
670 |
671 |
672 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
673 | 1
674 |
675 |
676 |
677 |
678 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
679 | 1
680 |
681 |
682 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
683 | 1
684 |
685 |
686 |
687 |
688 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
689 | 1
690 |
691 |
692 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
693 | 1
694 |
695 |
696 |
697 |
698 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
699 | 1
700 |
701 |
702 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
703 | 1
704 |
705 |
706 |
707 |
708 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
709 | 1
710 |
711 |
712 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
713 | 1
714 |
715 |
716 |
717 |
718 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
719 | 1
720 |
721 |
722 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
723 | 1
724 |
725 |
726 |
727 |
728 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
729 | 1
730 |
731 |
732 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
733 | 1
734 |
735 |
736 |
737 |
738 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
739 | 1
740 |
741 |
742 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
743 | 1
744 |
745 |
746 |
747 |
748 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
749 | 1
750 |
751 |
752 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
753 | 1
754 |
755 |
756 |
757 |
758 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
759 | 1
760 |
761 |
762 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
763 | 1
764 |
765 |
766 |
767 |
768 | 1
769 |
770 |
771 | 1
772 |
773 |
774 |
775 |
776 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
777 | 1
778 |
779 |
780 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
781 | 1
782 |
783 |
784 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
785 | 1
786 |
787 |
788 |
789 |
790 |
791 |
792 |
793 | 1
794 |
795 |
796 | 1
797 |
798 |
799 | 1
800 |
801 |
802 |
803 |
804 |
805 |
806 |
807 | Contents\Resources
808 | 1
809 |
810 |
811 | Contents\Resources
812 | 1
813 |
814 |
815 | Contents\Resources
816 | 1
817 |
818 |
819 |
820 |
821 | library\lib\armeabi-v7a
822 | 1
823 |
824 |
825 | library\lib\arm64-v8a
826 | 1
827 |
828 |
829 | 1
830 |
831 |
832 | 1
833 |
834 |
835 | 1
836 |
837 |
838 | 1
839 |
840 |
841 | 1
842 |
843 |
844 | 1
845 |
846 |
847 | 1
848 |
849 |
850 | 0
851 |
852 |
853 |
854 |
855 | library\lib\armeabi-v7a
856 | 1
857 |
858 |
859 |
860 |
861 | 1
862 |
863 |
864 | 1
865 |
866 |
867 |
868 |
869 | Assets
870 | 1
871 |
872 |
873 | Assets
874 | 1
875 |
876 |
877 |
878 |
879 | Assets
880 | 1
881 |
882 |
883 | Assets
884 | 1
885 |
886 |
887 |
888 |
889 |
890 |
891 |
892 |
893 |
894 |
895 |
896 |
897 |
898 |
899 |
900 | False
901 | False
902 | False
903 | False
904 | True
905 | True
906 |
907 |
908 | 12
909 |
910 |
911 |
912 |
913 |
914 |
--------------------------------------------------------------------------------
/Packages/TYGComponents.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Packages/TYGComponents.res
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Winget Helper
2 |
3 | A graphical interface for Winget
4 |
5 | 
6 |
7 | A Brief demo video is available there : https://youtu.be/niizmd0TRWg
8 |
9 | ## Installation
10 | The setup of the latest release is available here : https://github.com/Yves848/WinDel/releases/download/0.2.0.2/Setup.exe
11 |
12 | ## History
13 |
14 | ### 0.2.0.2
15 | - Installer (Setup.exe)
16 | - Config pane
17 | - Windows notifications on package upgrade available
18 | - Can start with winndows session
19 | - Can run hidden (Tray icon menu available)
20 |
21 | ***
22 | # Screenshots
23 |
24 | ## Configuration
25 | 
26 | ## Notifications
27 | 
28 | 
29 |
30 | ## Package Searching
31 |
32 | 
33 | 
34 | 
35 |
36 | ## Packages Installed
37 | 
38 |
39 | ## Packages Upgrade
40 | 
41 |
42 | ## Closing the application
43 | 
44 |
45 | If the user click "Yes", the application minimize in tray an continue running in background.
46 | 
47 |
48 | If autocheck of the upgrades is configured, the notifications will be displayed.
49 | If "No" is choosed, the application quits.
50 |
51 |
52 |
--------------------------------------------------------------------------------
/WGHelp.dpr:
--------------------------------------------------------------------------------
1 | program WGHelp;
2 |
3 | uses
4 | Winapi.Windows,
5 | Winapi.Messages,
6 | Vcl.Forms,
7 | uMain in 'uMain.pas' {fMain},
8 | uConst in 'uConst.pas',
9 | uFrameBase in 'uFrameBase.pas' {frmBase: TFrame},
10 | uFrameUpgrade2 in 'uFrameUpgrade2.pas' {frmHeritee: TFrame},
11 | uFrameList in 'uFrameList.pas' {frmList: TFrame},
12 | uFrameSearch in 'uFrameSearch.pas' {frmSearch: TFrame},
13 | uRunWinget in 'uRunWinget.pas' {fRunWinget},
14 | uFrameConfig in 'uFrameConfig.pas' {frmConfig: TFrame},
15 | udlgClose in 'udlgClose.pas' {frmCloseDlg};
16 |
17 | {$R *.res}
18 |
19 | begin
20 |
21 | Application.Initialize;
22 | pPArams.loadParams;
23 | Application.MainFormOnTaskbar := True;
24 | Application.ShowMainForm := not pParams.StartMinimized;
25 | Application.CreateForm(TfMain, fMain);
26 | if pParams.StartMinimized then
27 | begin
28 | fMain.Onshow := Nil;
29 | PostMessage(fMain.handle, WM_GETWINGETVERSION, 0, 0);
30 | PostMessage(fMain.handle, WM_GETUPGRADELIST, 0, 0);
31 | end;
32 |
33 | Application.Run;
34 |
35 | end.
36 |
--------------------------------------------------------------------------------
/WGHelp.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/WGHelp.res
--------------------------------------------------------------------------------
/Win32/Release/Winget Helper-cache/cacheIndex.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win32/Release/Winget Helper-cache/cacheIndex.txt
--------------------------------------------------------------------------------
/Win32/Release/Winget Helper-cache/part1/Winget Helper1.cab:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win32/Release/Winget Helper-cache/part1/Winget Helper1.cab
--------------------------------------------------------------------------------
/Win32/Release/Winget Helper-cache/part1/output-info.ini:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win32/Release/Winget Helper-cache/part1/output-info.ini
--------------------------------------------------------------------------------
/Win32/Release/Winget Helper.aip:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
--------------------------------------------------------------------------------
/Win64/Debug/uMain.dcu:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win64/Debug/uMain.dcu
--------------------------------------------------------------------------------
/Windel.groupproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {76E4E0F7-E64A-484D-92A7-8BA909FE3864}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Default.Personality.12
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/WindelGrp.groupproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {AD502CA9-6CA4-4925-8082-3D3222E40B49}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | Default.Personality.12
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/WingetHelper.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/WingetHelper.res
--------------------------------------------------------------------------------
/__history/uFrameBase.dfm.~1~:
--------------------------------------------------------------------------------
1 | object Frame1: TFrame1
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | end
8 |
--------------------------------------------------------------------------------
/__history/uFrameBase.dfm.~2~:
--------------------------------------------------------------------------------
1 | object frmBase: TfrmBase
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | end
8 |
--------------------------------------------------------------------------------
/__history/uFrameBase.dfm.~3~:
--------------------------------------------------------------------------------
1 | object frmBase: TfrmBase
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object LinkLabel1: TLinkLabel
8 | Left = 72
9 | Top = 72
10 | Width = 60
11 | Height = 19
12 | Caption = 'LinkLabel1'
13 | TabOrder = 0
14 | UseVisualStyle = True
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/__history/uFrameBase.pas.~1~:
--------------------------------------------------------------------------------
1 | unit uFrameBase;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
8 |
9 | type
10 | TFrame1 = class(TFrame)
11 | private
12 | { Private declarations }
13 | public
14 | { Public declarations }
15 | end;
16 |
17 | implementation
18 |
19 | {$R *.dfm}
20 |
21 | end.
22 |
--------------------------------------------------------------------------------
/__history/uFrameBase.pas.~2~:
--------------------------------------------------------------------------------
1 | unit uFrameBase;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
8 |
9 | type
10 | TfrmBase = class(TFrame)
11 | private
12 | { Private declarations }
13 | public
14 | { Public declarations }
15 | end;
16 |
17 | implementation
18 |
19 | {$R *.dfm}
20 |
21 | end.
22 |
--------------------------------------------------------------------------------
/__history/uFrameBase.pas.~3~:
--------------------------------------------------------------------------------
1 | unit uFrameBase;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
8 |
9 | type
10 | TfrmBase = class(TFrame)
11 | LinkLabel1: TLinkLabel;
12 | private
13 | { Private declarations }
14 | public
15 | { Public declarations }
16 | end;
17 |
18 | implementation
19 |
20 | {$R *.dfm}
21 |
22 | end.
23 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~19~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object ListView1: TListView
8 | Left = 0
9 | Top = 0
10 | Width = 496
11 | Height = 480
12 | Align = alClient
13 | BevelInner = bvNone
14 | Columns = <
15 | item
16 | AutoSize = True
17 | Caption = 'Description'
18 | MinWidth = 200
19 | end
20 | item
21 | AutoSize = True
22 | Caption = 'ID'
23 | end
24 | item
25 | Caption = 'Version'
26 | end
27 | item
28 | Caption = 'Available'
29 | end
30 | item
31 | Caption = 'Source'
32 | end>
33 | TabOrder = 0
34 | ViewStyle = vsList
35 | ExplicitLeft = -6
36 | ExplicitTop = 3
37 | end
38 | object Panel1: TPanel
39 | Left = 496
40 | Top = 0
41 | Width = 144
42 | Height = 480
43 | Align = alRight
44 | BevelOuter = bvNone
45 | Caption = 'Panel1'
46 | ShowCaption = False
47 | TabOrder = 1
48 | end
49 | end
50 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~20~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object ListView1: TListView
8 | Left = 0
9 | Top = 0
10 | Width = 496
11 | Height = 480
12 | Align = alClient
13 | BevelInner = bvNone
14 | Columns = <
15 | item
16 | AutoSize = True
17 | Caption = 'Description'
18 | MinWidth = 200
19 | end
20 | item
21 | AutoSize = True
22 | Caption = 'ID'
23 | end
24 | item
25 | Caption = 'Version'
26 | end
27 | item
28 | Caption = 'Available'
29 | end
30 | item
31 | Caption = 'Source'
32 | end>
33 | GridLines = True
34 | TabOrder = 0
35 | ViewStyle = vsReport
36 | end
37 | object Panel1: TPanel
38 | Left = 496
39 | Top = 0
40 | Width = 144
41 | Height = 480
42 | Align = alRight
43 | BevelOuter = bvNone
44 | Caption = 'Panel1'
45 | ShowCaption = False
46 | TabOrder = 1
47 | end
48 | end
49 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~21~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object ListView1: TListView
8 | Left = 0
9 | Top = 0
10 | Width = 496
11 | Height = 480
12 | Align = alClient
13 | BevelInner = bvNone
14 | Columns = <
15 | item
16 | AutoSize = True
17 | Caption = 'Description'
18 | MinWidth = 200
19 | end
20 | item
21 | AutoSize = True
22 | Caption = 'ID'
23 | end
24 | item
25 | Caption = 'Version'
26 | end
27 | item
28 | Caption = 'Available'
29 | end
30 | item
31 | Caption = 'Source'
32 | end>
33 | GridLines = True
34 | TabOrder = 0
35 | ViewStyle = vsReport
36 | end
37 | object Panel1: TPanel
38 | Left = 496
39 | Top = 0
40 | Width = 144
41 | Height = 480
42 | Align = alRight
43 | BevelOuter = bvNone
44 | Caption = 'Panel1'
45 | ShowCaption = False
46 | TabOrder = 1
47 | end
48 | end
49 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~22~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object ListView1: TListView
8 | Left = 0
9 | Top = 0
10 | Width = 496
11 | Height = 480
12 | Align = alClient
13 | BevelInner = bvNone
14 | Columns = <
15 | item
16 | AutoSize = True
17 | Caption = 'Description'
18 | MinWidth = 200
19 | end
20 | item
21 | AutoSize = True
22 | Caption = 'ID'
23 | end
24 | item
25 | Caption = 'Version'
26 | end
27 | item
28 | Caption = 'Available'
29 | end
30 | item
31 | Caption = 'Source'
32 | end>
33 | GridLines = True
34 | TabOrder = 0
35 | ViewStyle = vsList
36 | end
37 | object Panel1: TPanel
38 | Left = 496
39 | Top = 0
40 | Width = 144
41 | Height = 480
42 | Align = alRight
43 | BevelOuter = bvNone
44 | Caption = 'Panel1'
45 | ShowCaption = False
46 | TabOrder = 1
47 | end
48 | end
49 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~23~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object ListView1: TListView
8 | Left = 0
9 | Top = 0
10 | Width = 496
11 | Height = 480
12 | Align = alClient
13 | BevelInner = bvNone
14 | Columns = <
15 | item
16 | AutoSize = True
17 | Caption = 'Description'
18 | MinWidth = 200
19 | end
20 | item
21 | AutoSize = True
22 | Caption = 'ID'
23 | end
24 | item
25 | Caption = 'Version'
26 | end
27 | item
28 | Caption = 'Available'
29 | end
30 | item
31 | Caption = 'Source'
32 | end>
33 | GridLines = True
34 | RowSelect = True
35 | TabOrder = 0
36 | ViewStyle = vsReport
37 | end
38 | object Panel1: TPanel
39 | Left = 496
40 | Top = 0
41 | Width = 144
42 | Height = 480
43 | Align = alRight
44 | BevelOuter = bvNone
45 | Caption = 'Panel1'
46 | ShowCaption = False
47 | TabOrder = 1
48 | end
49 | end
50 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~24~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | ClientHeight = 441
5 | ClientWidth = 624
6 | Color = clBtnFace
7 | Font.Charset = DEFAULT_CHARSET
8 | Font.Color = clWindowText
9 | Font.Height = -12
10 | Font.Name = 'Segoe UI'
11 | Font.Style = []
12 | TextHeight = 15
13 | object ListView1: TListView
14 | Left = 0
15 | Top = 0
16 | Width = 480
17 | Height = 441
18 | Align = alClient
19 | BevelInner = bvNone
20 | Columns = <
21 | item
22 | AutoSize = True
23 | Caption = 'Description'
24 | MinWidth = 200
25 | end
26 | item
27 | AutoSize = True
28 | Caption = 'ID'
29 | end
30 | item
31 | Caption = 'Version'
32 | end
33 | item
34 | Caption = 'Available'
35 | end
36 | item
37 | Caption = 'Source'
38 | end>
39 | GridLines = True
40 | RowSelect = True
41 | TabOrder = 0
42 | ViewStyle = vsReport
43 | end
44 | object Panel1: TPanel
45 | Left = 480
46 | Top = 0
47 | Width = 144
48 | Height = 441
49 | Align = alRight
50 | BevelOuter = bvNone
51 | Caption = 'Panel1'
52 | ShowCaption = False
53 | TabOrder = 1
54 | end
55 | end
56 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~25~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | ClientHeight = 441
5 | ClientWidth = 624
6 | Color = clBtnFace
7 | Font.Charset = DEFAULT_CHARSET
8 | Font.Color = clWindowText
9 | Font.Height = -12
10 | Font.Name = 'Segoe UI'
11 | Font.Style = []
12 | TextHeight = 15
13 | object ListView1: TListView
14 | Left = 0
15 | Top = 0
16 | Width = 480
17 | Height = 441
18 | Align = alClient
19 | BevelInner = bvNone
20 | Columns = <
21 | item
22 | AutoSize = True
23 | Caption = 'Description'
24 | MinWidth = 200
25 | end
26 | item
27 | AutoSize = True
28 | Caption = 'ID'
29 | end
30 | item
31 | AutoSize = True
32 | Caption = 'Version'
33 | end
34 | item
35 | AutoSize = True
36 | Caption = 'Available'
37 | end
38 | item
39 | AutoSize = True
40 | Caption = 'Source'
41 | end>
42 | GridLines = True
43 | RowSelect = True
44 | TabOrder = 0
45 | ViewStyle = vsReport
46 | end
47 | object Panel1: TPanel
48 | Left = 480
49 | Top = 0
50 | Width = 144
51 | Height = 441
52 | Align = alRight
53 | BevelOuter = bvNone
54 | Caption = 'Panel1'
55 | ShowCaption = False
56 | TabOrder = 1
57 | end
58 | end
59 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~26~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object ListView1: TListView
8 | Left = 0
9 | Top = 0
10 | Width = 480
11 | Height = 441
12 | Align = alClient
13 | BevelInner = bvNone
14 | Columns = <
15 | item
16 | AutoSize = True
17 | Caption = 'Description'
18 | MinWidth = 200
19 | end
20 | item
21 | AutoSize = True
22 | Caption = 'ID'
23 | end
24 | item
25 | AutoSize = True
26 | Caption = 'Version'
27 | end
28 | item
29 | AutoSize = True
30 | Caption = 'Available'
31 | end
32 | item
33 | AutoSize = True
34 | Caption = 'Source'
35 | end>
36 | GridLines = True
37 | RowSelect = True
38 | TabOrder = 0
39 | ViewStyle = vsReport
40 | end
41 | object Panel1: TPanel
42 | Left = 480
43 | Top = 0
44 | Width = 144
45 | Height = 441
46 | Align = alRight
47 | BevelOuter = bvNone
48 | Caption = 'Panel1'
49 | ShowCaption = False
50 | TabOrder = 1
51 | end
52 | end
53 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~27~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | ClientHeight = 441
5 | ClientWidth = 624
6 | Color = clBtnFace
7 | Font.Charset = DEFAULT_CHARSET
8 | Font.Color = clWindowText
9 | Font.Height = -12
10 | Font.Name = 'Segoe UI'
11 | Font.Style = []
12 | TextHeight = 15
13 | object ListView1: TListView
14 | Left = 0
15 | Top = 0
16 | Width = 480
17 | Height = 441
18 | Align = alClient
19 | BevelInner = bvNone
20 | Columns = <
21 | item
22 | AutoSize = True
23 | Caption = 'Description'
24 | MinWidth = 200
25 | end
26 | item
27 | AutoSize = True
28 | Caption = 'ID'
29 | end
30 | item
31 | AutoSize = True
32 | Caption = 'Version'
33 | end
34 | item
35 | AutoSize = True
36 | Caption = 'Available'
37 | end
38 | item
39 | AutoSize = True
40 | Caption = 'Source'
41 | end>
42 | GridLines = True
43 | RowSelect = True
44 | TabOrder = 0
45 | ViewStyle = vsReport
46 | end
47 | object Panel1: TPanel
48 | Left = 480
49 | Top = 0
50 | Width = 144
51 | Height = 441
52 | Align = alRight
53 | BevelOuter = bvNone
54 | Caption = 'Panel1'
55 | ShowCaption = False
56 | TabOrder = 1
57 | end
58 | end
59 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.dfm.~28~:
--------------------------------------------------------------------------------
1 | object frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | object ListView1: TListView
8 | Left = 0
9 | Top = 0
10 | Width = 640
11 | Height = 480
12 | Align = alClient
13 | BevelInner = bvNone
14 | Columns = <
15 | item
16 | AutoSize = True
17 | Caption = 'Description'
18 | MinWidth = 200
19 | end
20 | item
21 | AutoSize = True
22 | Caption = 'ID'
23 | end
24 | item
25 | AutoSize = True
26 | Caption = 'Version'
27 | end
28 | item
29 | AutoSize = True
30 | Caption = 'Available'
31 | end
32 | item
33 | AutoSize = True
34 | Caption = 'Source'
35 | end>
36 | GridLines = True
37 | RowSelect = True
38 | TabOrder = 0
39 | ViewStyle = vsReport
40 | ExplicitWidth = 480
41 | ExplicitHeight = 441
42 | end
43 | end
44 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~14~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | Label1: TLabel;
12 | procedure Label1MouseEnter(Sender: TObject);
13 | procedure Label1MouseLeave(Sender: TObject);
14 | private
15 | { Private declarations }
16 | public
17 | { Public declarations }
18 | end;
19 |
20 | implementation
21 |
22 | {$R *.dfm}
23 |
24 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject);
25 | begin
26 | tLabel(Sender).Font.Style := [fsunderline];
27 | screen.Cursor := crHandPoint;
28 | end;
29 |
30 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject);
31 | begin
32 | tLabel(Sender).Font.Style := [];
33 | screen.Cursor := crDefault;
34 | end;
35 |
36 | end.
37 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~15~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | Label1: TLabel;
12 | procedure Label1MouseEnter(Sender: TObject);
13 | procedure Label1MouseLeave(Sender: TObject);
14 | procedure Label1Click(Sender: TObject);
15 | private
16 | { Private declarations }
17 | public
18 | { Public declarations }
19 | end;
20 |
21 | implementation
22 |
23 | {$R *.dfm}
24 |
25 | procedure TframeUpgrade.Label1Click(Sender: TObject);
26 | begin
27 | ShellExecute(Handle,'explore',PChar('c:\test\'),nil,nil,SW_SHOW);
28 | end;
29 |
30 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject);
31 | begin
32 | tLabel(Sender).Font.Style := [fsunderline];
33 | screen.Cursor := crHandPoint;
34 | end;
35 |
36 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject);
37 | begin
38 | tLabel(Sender).Font.Style := [];
39 | screen.Cursor := crDefault;
40 | end;
41 |
42 | end.
43 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~16~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | Label1: TLabel;
12 | procedure Label1MouseEnter(Sender: TObject);
13 | procedure Label1MouseLeave(Sender: TObject);
14 | procedure Label1Click(Sender: TObject);
15 | private
16 | { Private declarations }
17 | public
18 | { Public declarations }
19 | end;
20 |
21 | implementation
22 |
23 | {$R *.dfm}
24 |
25 | procedure TframeUpgrade.Label1Click(Sender: TObject);
26 | begin
27 | ShellExecute(Handle,'explore',PChar('c:\test\'),nil,nil,SW_SHOW);
28 | end;
29 |
30 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject);
31 | begin
32 | tLabel(Sender).Font.Style := [fsunderline];
33 | screen.Cursor := crHandPoint;
34 | end;
35 |
36 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject);
37 | begin
38 | tLabel(Sender).Font.Style := [];
39 | screen.Cursor := crDefault;
40 | end;
41 |
42 | end.
43 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~17~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | Label1: TLabel;
12 | procedure Label1MouseEnter(Sender: TObject);
13 | procedure Label1MouseLeave(Sender: TObject);
14 | procedure Label1Click(Sender: TObject);
15 | private
16 | { Private declarations }
17 | public
18 | { Public declarations }
19 | end;
20 |
21 | implementation
22 |
23 | {$R *.dfm}
24 |
25 | procedure TframeUpgrade.Label1Click(Sender: TObject);
26 | var
27 | sFolder : String;
28 | begin
29 | sFolder := tPath.GetTempPath;
30 | ShellExecute(Handle,'explore',PChar(sFolder),nil,nil,SW_SHOW);
31 | end;
32 |
33 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject);
34 | begin
35 | tLabel(Sender).Font.Style := [fsunderline];
36 | screen.Cursor := crHandPoint;
37 | end;
38 |
39 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject);
40 | begin
41 | tLabel(Sender).Font.Style := [];
42 | screen.Cursor := crDefault;
43 | end;
44 |
45 | end.
46 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~18~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | Label1: TLabel;
12 | private
13 | { Private declarations }
14 | public
15 | { Public declarations }
16 | end;
17 |
18 | implementation
19 |
20 | {$R *.dfm}
21 |
22 | end.
23 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~19~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | ListView1: TListView;
12 | Panel1: TPanel;
13 | private
14 | { Private declarations }
15 | public
16 | { Public declarations }
17 | end;
18 |
19 | implementation
20 |
21 | {$R *.dfm}
22 |
23 | end.
24 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~20~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | ListView1: TListView;
12 | Panel1: TPanel;
13 | private
14 | { Private declarations }
15 | public
16 | { Public declarations }
17 | end;
18 |
19 | implementation
20 |
21 | {$R *.dfm}
22 |
23 | end.
24 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~21~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TfrmBase)
11 | ListView1: TListView;
12 | Panel1: TPanel;
13 | private
14 | { Private declarations }
15 | public
16 | { Public declarations }
17 | end;
18 |
19 | implementation
20 |
21 | {$R *.dfm}
22 |
23 | end.
24 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~22~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls;
8 |
9 | type
10 | TframeUpgrade = class(TFrame)
11 | ListView1: TListView;
12 | private
13 | { Private declarations }
14 | public
15 | { Public declarations }
16 | end;
17 |
18 | implementation
19 |
20 | {$R *.dfm}
21 |
22 | end.
23 |
--------------------------------------------------------------------------------
/__history/uFrameUpgrade.pas.~23~:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, uFrameBase;
8 |
9 | type
10 | TframeUpgrade = class(TFrmBase)
11 | ListView1: TListView;
12 | private
13 | { Private declarations }
14 | public
15 | { Public declarations }
16 | end;
17 |
18 | implementation
19 |
20 | {$R *.dfm}
21 |
22 | end.
23 |
--------------------------------------------------------------------------------
/icons/f1 (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/f1 (1).png
--------------------------------------------------------------------------------
/icons/f1 (2).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/f1 (2).png
--------------------------------------------------------------------------------
/icons/f1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/f1.png
--------------------------------------------------------------------------------
/icons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/favicon.ico
--------------------------------------------------------------------------------
/icons/keyboard-font.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font.zip
--------------------------------------------------------------------------------
/icons/keyboard-font/KeyExtendedCSd-rv2K.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/KeyExtendedCSd-rv2K.ttf
--------------------------------------------------------------------------------
/icons/keyboard-font/KeyNormalCSd-MAYv.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/KeyNormalCSd-MAYv.ttf
--------------------------------------------------------------------------------
/icons/keyboard-font/misc/KEYBOARD-0acf.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/KEYBOARD-0acf.doc
--------------------------------------------------------------------------------
/icons/keyboard-font/misc/KEYBOARD-36a3.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f39\fswiss\fcharset2\fprq2 Key Normal \'a9 SD 1994;}{\f40\fswiss\fcharset2\fprq2 Key Entended \'a9 SD 1995;}
2 | {\f45\fswiss\fcharset2\fprq2 Key Entended \'a9 SD 1994;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
3 | \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\f4\lang2057 \snext0 Normal;}{\s1\qc\sb240\sa60\keepn
4 | \b\f4\fs52\ul\lang2057\kerning28 \sbasedon0\snext0 heading 1;}{\*\cs10 \additive Default Paragraph Font;}}{\info{\title !"\'a3$ %^&* ()_+}{\author Simon Daykin}{\operator Simon Daykin}{\creatim\yr1994\mo2\dy20\hr18\min40}
5 | {\revtim\yr1995\mo9\dy10\hr17\min44}{\printim\yr1994\mo2\dy20\hr20\min19}{\version8}{\edmins87}{\nofpages0}{\nofwords0}{\nofchars0}{\vern49203}}\paperw11907\paperh16840\margl1418\margr1418\margt851\margb1418 \widowctrl\ftnbj\aenddoc\formshade \fet0\sectd
6 | \psz9\linex0\headery709\footery709\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4
7 | \pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang
8 | {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s1\qc\sb240\sa60\keepn \b\f4\fs52\ul\lang2057\kerning28 The Font File
9 | \ldblquote Key Extended\rdblquote
10 | \par \pard\plain \f4\lang2057
11 | \par \pard The TrueType font \ldblquote Key Extended\rdblquote contains the following keyboard keys.
12 | \par
13 | \par \pard \sl-600\slmult0\tx2268\tx6521 {\f45\fs48 \tab }{\f40\fs48 p[]}{\f39\fs48
14 | \par }\pard \sl-180\slmult0\tx2268\tx6521\tx8080\tx9923 {\f39\fs32
15 | \par }\pard \sl-600\slmult0\tx2268 {\f45\fs48 \tab }{\f40\fs48 tyu\tab #/*-
16 | \par }\pard \sl-600\slmult0\tx2268 {\f40\fs48 \tab ghj\tab 789
17 | \par \tab \tab \tab \tab 456+
18 | \par \tab c\tab \tab 123
19 | \par \tab zvx\tab 0.@}{\f45\fs48
20 | \par }\pard
21 | \par \pard Also included are two alternative keys to allow a different keyboard layout to be produced
22 | \par \pard {\f40\fs48 " ~
23 | \par }\pard From the above keys {\f40 0} - {\f40 9} are situated on the {\f39 0} - {\f39 9} keys. Most can be accessed directly from the numeric pad. The others are placed around the keyboard.
24 | \par \pard
25 | \par \pard Below is a full listing of the key strokes required to get the special keys. (I assume that the CapsLock is off!!!).
26 | \par \pard \tqc\tx1134\tqc\tx2835 \sect \sectd \margtsxn1418\margbsxn970\psz9\sbknone\linex0\headery709\footery709\cols2\endnhere \pard\plain \tqc\tx1134\tqc\tx2835 \f4\lang2057
27 | \par \tab {\ul KeyStokes}\tab {\ul Resulting Character
28 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab #\tab }{\f40\fs36 #}{\f39\fs36 \tab
29 | \par }\pard \tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |'\tab }{\f40\fs36 @}{\f39\fs36
30 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab p\tab }{\f40\fs36 p}{\f39\fs36
31 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab [\tab }{\f40\fs36 [}{\f39\fs36
32 | \par \tab ]\tab }{\f40\fs36 ]}{\f39\fs36
33 | \par \tab t\tab }{\f40\fs36 t}{\f39\fs36
34 | \par \tab y\tab }{\f40\fs36 y
35 | \par }{\f39\fs36 \tab g\tab }{\f40\fs36 g}{\f39\fs36
36 | \par \tab u\tab }{\f40\fs36 u}{\f39\fs36
37 | \par }\pard \tqc\tx1134\tqc\tx2835 \column
38 | \par \pard \tqc\tx1134\tqc\tx2835 \tab {\ul KeyStokes}\tab {\ul Resulting Character
39 | \par }
40 | \par \pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab h\tab }{\f40\fs36 h}{\f39\fs36
41 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab j\tab }{\f40\fs36 j}{\f39\fs36
42 | \par \tab z\tab }{\f40\fs36 z}{\f39\fs36
43 | \par \tab x\tab }{\f40\fs36 x}{\f39\fs36
44 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab c\tab }{\f40\fs36 c}{\f39\fs36
45 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab v\tab }{\f40\fs36 v
46 | \par \tab }{\f39\fs36 2}{\f40\fs36 \tab "
47 | \par \tab
48 | \par \tab }{\f39\fs36 #}{\f40\fs36 \tab ~}{\f39\fs36
49 | \par }\pard \sect \sectd \margtsxn1418\psz9\sbknone\linex0\headery709\footery709\colsx709\endnhere \pard\plain \s1\qc\sb240\sa60\keepn \b\f4\fs52\ul\lang2057\kerning28 \page The Font File \ldblquote Key Normal\rdblquote
50 | \par \pard\plain \f4\lang2057
51 | \par \pard The TrueType font \ldblquote Key Normal\rdblquote contains the following keyboard keys.
52 | \par
53 | \par \pard \sl-600\slmult0 {\f39\fs48 \tab \'ac !"\'a3$}{\f39\fs28 }{\f39\fs48 %^&*}{\f39\fs28 }{\f39\fs48 ()_+}{\f45\fs48
54 | \par }\pard \sl-280\slmult0
55 | \par \pard \sl-600\slmult0 {\f39\fs48 \tab `1234567890-=#~\tab }
56 | \par \pard \sl-600\slmult0 {\f39\fs48 \tab Qqwertyuiop[]\tab }
57 | \par {\f39\fs48 \tab Aasdfghjkl;'@}
58 | \par {\f39\fs48 \tab |\\zxcvbnm,./?}
59 | \par {\f39\fs48 \tab Z X }{\f39\fs22 }{\f39\fs48 X Z
60 | \par }\pard
61 | \par \pard All of the above keys are a direct lower case character map of their actual keyboard keys, with a few exceptions.
62 | \par \pard \sl-300\slmult0 Backspace {\f39 ~} can be found shifted on the {\f39 #} key.
63 | \par Tab {\f39 Q} is on the capital {\f39 q} key.
64 | \par \pard
65 | \par \pard Below is a full listing of the key strokes required to get the special keys. (I assume that the CapsLock is off!!!).
66 | \par \pard
67 | \par \pard \tqc\tx1985\tqc\tx3969 \sect \sectd \margtsxn1418\psz9\sbknone\linex0\headery709\footery709\cols2\endnhere \pard\plain \tqc\tx1134\tqc\tx2835 \f4\lang2057 \tab {\ul KeyStokes}\tab {\ul Resulting Character
68 | \par }\pard \tqc\tx1134\tqc\tx2835
69 | \par \pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |q\tab Q\tab
70 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |a\tab A
71 | \par \tab |\\\tab |
72 | \par \tab |z\tab Z
73 | \par \tab |x\tab X
74 | \par \tab |/\tab ?
75 | \par }\pard \tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |'\tab @
76 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |#\tab ~
77 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |`\tab \'ac
78 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |1\tab !
79 | \par }\pard \tqc\tx1134\tqc\tx2835 \column \tab {\ul KeyStokes}\tab {\ul Resulting Character
80 | \par }\pard \tqc\tx1134\tqc\tx2835
81 | \par \pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |2\tab "
82 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |3\tab \'a3
83 | \par \tab |4\tab $
84 | \par \tab |5\tab %
85 | \par \tab |6\tab ^
86 | \par \tab |7\tab &
87 | \par \tab |8\tab *
88 | \par \tab |9\tab (
89 | \par \tab |0\tab )
90 | \par \tab |-\tab _
91 | \par \tab |=\tab +
92 | \par }}
--------------------------------------------------------------------------------
/icons/keyboard-font/misc/LICENSE-bf26.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/LICENSE-bf26.txt
--------------------------------------------------------------------------------
/icons/keyboard-font/misc/README-09a2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/README-09a2.txt
--------------------------------------------------------------------------------
/icons/keyboard-font/misc/REGISTER-5d51.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/REGISTER-5d51.txt
--------------------------------------------------------------------------------
/icons/keyboard-font/misc/VENDOR-d7ea.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/VENDOR-d7ea.txt
--------------------------------------------------------------------------------
/openssl-1.0.2p-x64_86-win64.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/openssl-1.0.2p-x64_86-win64.zip
--------------------------------------------------------------------------------
/openssl-1.0.2p-x64_86-win64/HashInfo.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/openssl-1.0.2p-x64_86-win64/HashInfo.txt
--------------------------------------------------------------------------------
/openssl-1.0.2p-x64_86-win64/OpenSSL License.txt:
--------------------------------------------------------------------------------
1 |
2 | LICENSE ISSUES
3 | ==============
4 |
5 | The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
6 | the OpenSSL License and the original SSLeay license apply to the toolkit.
7 | See below for the actual license texts. Actually both licenses are BSD-style
8 | Open Source licenses. In case of any license issues related to OpenSSL
9 | please contact openssl-core@openssl.org.
10 |
11 | OpenSSL License
12 | ---------------
13 |
14 | /* ====================================================================
15 | * Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved.
16 | *
17 | * Redistribution and use in source and binary forms, with or without
18 | * modification, are permitted provided that the following conditions
19 | * are met:
20 | *
21 | * 1. Redistributions of source code must retain the above copyright
22 | * notice, this list of conditions and the following disclaimer.
23 | *
24 | * 2. Redistributions in binary form must reproduce the above copyright
25 | * notice, this list of conditions and the following disclaimer in
26 | * the documentation and/or other materials provided with the
27 | * distribution.
28 | *
29 | * 3. All advertising materials mentioning features or use of this
30 | * software must display the following acknowledgment:
31 | * "This product includes software developed by the OpenSSL Project
32 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
33 | *
34 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
35 | * endorse or promote products derived from this software without
36 | * prior written permission. For written permission, please contact
37 | * openssl-core@openssl.org.
38 | *
39 | * 5. Products derived from this software may not be called "OpenSSL"
40 | * nor may "OpenSSL" appear in their names without prior written
41 | * permission of the OpenSSL Project.
42 | *
43 | * 6. Redistributions of any form whatsoever must retain the following
44 | * acknowledgment:
45 | * "This product includes software developed by the OpenSSL Project
46 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
47 | *
48 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
49 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
51 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
52 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
53 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
54 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
55 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
56 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
57 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
58 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 | * OF THE POSSIBILITY OF SUCH DAMAGE.
60 | * ====================================================================
61 | *
62 | * This product includes cryptographic software written by Eric Young
63 | * (eay@cryptsoft.com). This product includes software written by Tim
64 | * Hudson (tjh@cryptsoft.com).
65 | *
66 | */
67 |
68 | Original SSLeay License
69 | -----------------------
70 |
71 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
72 | * All rights reserved.
73 | *
74 | * This package is an SSL implementation written
75 | * by Eric Young (eay@cryptsoft.com).
76 | * The implementation was written so as to conform with Netscapes SSL.
77 | *
78 | * This library is free for commercial and non-commercial use as long as
79 | * the following conditions are aheared to. The following conditions
80 | * apply to all code found in this distribution, be it the RC4, RSA,
81 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation
82 | * included with this distribution is covered by the same copyright terms
83 | * except that the holder is Tim Hudson (tjh@cryptsoft.com).
84 | *
85 | * Copyright remains Eric Young's, and as such any Copyright notices in
86 | * the code are not to be removed.
87 | * If this package is used in a product, Eric Young should be given attribution
88 | * as the author of the parts of the library used.
89 | * This can be in the form of a textual message at program startup or
90 | * in documentation (online or textual) provided with the package.
91 | *
92 | * Redistribution and use in source and binary forms, with or without
93 | * modification, are permitted provided that the following conditions
94 | * are met:
95 | * 1. Redistributions of source code must retain the copyright
96 | * notice, this list of conditions and the following disclaimer.
97 | * 2. Redistributions in binary form must reproduce the above copyright
98 | * notice, this list of conditions and the following disclaimer in the
99 | * documentation and/or other materials provided with the distribution.
100 | * 3. All advertising materials mentioning features or use of this software
101 | * must display the following acknowledgement:
102 | * "This product includes cryptographic software written by
103 | * Eric Young (eay@cryptsoft.com)"
104 | * The word 'cryptographic' can be left out if the rouines from the library
105 | * being used are not cryptographic related :-).
106 | * 4. If you include any Windows specific code (or a derivative thereof) from
107 | * the apps directory (application code) you must include an acknowledgement:
108 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
109 | *
110 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
111 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
112 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
113 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
114 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
115 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
116 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
117 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
118 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
119 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
120 | * SUCH DAMAGE.
121 | *
122 | * The licence and distribution terms for any publically available version or
123 | * derivative of this code cannot be changed. i.e. this code cannot simply be
124 | * copied and put under another distribution licence
125 | * [including the GNU Public Licence.]
126 | */
127 |
--------------------------------------------------------------------------------
/openssl-1.0.2p-x64_86-win64/ReadMe.txt:
--------------------------------------------------------------------------------
1 | =============================================================================
2 | OpenSSL v1.0.2p Precompiled Binaries for Win64
3 | -----------------------------------------------------------------------------
4 |
5 | *** Release Information ***
6 |
7 | Release Date: Sep 19, 2018
8 |
9 | Author: Frederik A. Winkelsdorf (opendec.wordpress.com)
10 | for the Indy Project (www.indyproject.org)
11 |
12 | Requirements: Indy 10.5.5+ (SVN Version or Delphi 2009 and newer)
13 |
14 | Dependencies: The libraries have no noteworthy dependencies
15 |
16 | Installation: Copy both DLL files into your application directory
17 |
18 | Supported OS: Windows XP x64 up to Windows 10 x64
19 |
20 | -----------------------------------------------------------------------------
21 |
22 | *** Legal Disclaimer ***
23 |
24 | THIS SOFTWARE IS PROVIDED BY ITS AUTHOR AND THE INDY PROJECT "AS IS" AND ANY
25 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 | DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
28 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 |
35 | OpenSSL license terms are provided in the file "OpenSSL License.txt".
36 |
37 | PLEASE CHECK IF YOU NEED TO COMPLY WITH EXPORT RESTRICTIONS FOR CRYPTOGRAPHIC
38 | SOFTWARE AND/OR PATENTS.
39 |
40 | -----------------------------------------------------------------------------
41 |
42 | *** Build Information Win64 ***
43 |
44 | Built with: Windows Server 2003 SP1 Platform SDK for x64
45 | The Netwide Assembler (NASM) v2.11.08 Win32
46 | Strawberry Perl v5.22.0.1 Win32 Portable
47 | Windows PowerShell
48 | FinalBuilder 7
49 |
50 | Shell: Windows XP x64 Build Environment (Retail)
51 |
52 | Commands: perl configure VC-WIN64A
53 | ms\do_win64a
54 | adjusted ms\version32.rc (Indy Information inserted)
55 | nmake -f ms\ntdll.mak
56 | nmake -f ms\ntdll.mak test
57 | editbin.exe /rebase:base=0x11000000 libeay32.dll
58 | editbin.exe /rebase:base=0x12000000 ssleay32.dll
59 |
60 | =============================================================================
--------------------------------------------------------------------------------
/pTestString.dpr:
--------------------------------------------------------------------------------
1 | program pTestString;
2 |
3 | uses
4 | Vcl.Forms,
5 | testString in 'testString.pas' {Form1};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.MainFormOnTaskbar := True;
12 | Application.CreateForm(TForm1, Form1);
13 | Application.Run;
14 | end.
15 |
--------------------------------------------------------------------------------
/pTestString.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pTestString.res
--------------------------------------------------------------------------------
/pWinDel.identcache:
--------------------------------------------------------------------------------
1 |
2 | 'C:\Users\yvesg\git\WinDel\udlgClose.pas #C:\Users\yvesg\git\WinDel\uMain.pas (C:\Users\yvesg\git\WinDel\uFrameBase.pas %C:\Users\yvesg\git\WinDel\pWinDel.dpr *C:\Users\yvesg\git\WinDel\uFrameConfig.pas (C:\Users\yvesg\git\WinDel\uRunWinget.pas $C:\Users\yvesg\git\WinDel\uConst.pas ,C:\Users\yvesg\git\WinDel\uFrameUpgrade2.pas (C:\Users\yvesg\git\WinDel\uFrameList.pas *C:\Users\yvesg\git\WinDel\uFrameSearch.pas
--------------------------------------------------------------------------------
/pWinDel.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel.res
--------------------------------------------------------------------------------
/pWinDel_Icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon.ico
--------------------------------------------------------------------------------
/pWinDel_Icon1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon1.ico
--------------------------------------------------------------------------------
/pWinDel_Icon2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon2.ico
--------------------------------------------------------------------------------
/pWinDel_Icon3.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon3.ico
--------------------------------------------------------------------------------
/pWinDel_Icon4.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon4.ico
--------------------------------------------------------------------------------
/testString.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 0
3 | Top = 0
4 | Caption = 'Form1'
5 | ClientHeight = 442
6 | ClientWidth = 628
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -12
11 | Font.Name = 'Segoe UI'
12 | Font.Style = []
13 | TextHeight = 15
14 | object Button1: TButton
15 | Left = 8
16 | Top = 16
17 | Width = 75
18 | Height = 25
19 | Caption = 'Button1'
20 | TabOrder = 0
21 | OnClick = Button1Click
22 | end
23 | object memo1: TMemo
24 | Left = 8
25 | Top = 64
26 | Width = 612
27 | Height = 370
28 | TabOrder = 1
29 | end
30 | object Button2: TButton
31 | Left = 104
32 | Top = 16
33 | Width = 75
34 | Height = 25
35 | Caption = 'Button2'
36 | TabOrder = 2
37 | OnClick = Button2Click
38 | end
39 | object IdHTTP1: TIdHTTP
40 | ProxyParams.BasicAuthentication = False
41 | ProxyParams.ProxyPort = 0
42 | Request.ContentLength = -1
43 | Request.ContentRangeEnd = -1
44 | Request.ContentRangeStart = -1
45 | Request.ContentRangeInstanceLength = -1
46 | Request.Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
47 | Request.BasicAuthentication = False
48 | Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
49 | Request.Ranges.Units = 'bytes'
50 | Request.Ranges = <>
51 | HTTPOptions = [hoForceEncodeParams]
52 | Left = 176
53 | Top = 16
54 | end
55 | end
56 |
--------------------------------------------------------------------------------
/testString.pas:
--------------------------------------------------------------------------------
1 | unit testString;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
7 | System.Classes, Vcl.Graphics,
8 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.StrUtils,
9 | System.AnsiStrings, uConst, Vcl.AppEvnts, IdBaseComponent, IdComponent,XMLIntf, XMLDoc,
10 | IdTCPConnection, IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
11 |
12 | const
13 | sVersion = 'v1.5.1881';
14 |
15 | type
16 | TForm1 = class(TForm)
17 | Button1: TButton;
18 | memo1: TMemo;
19 | IdHTTP1: TIdHTTP;
20 | Button2: TButton;
21 | procedure Button1Click(Sender: TObject);
22 | procedure Button2Click(Sender: TObject);
23 |
24 | private
25 | { Déclarations privées }
26 |
27 | public
28 | { Déclarations publiques }
29 | end;
30 |
31 | function GetKeyboardLanguageCodeStr: string;
32 | function GetWindowsLanguage: string;
33 |
34 | var
35 | Form1: TForm1;
36 |
37 | implementation
38 |
39 | {$R *.dfm}
40 | // function GetWindowsLanguage: string;
41 | // var
42 | // langId: word;
43 | // buffer: array [0..4] of Char;
44 | // begin
45 | // langId := GetUserDefaultUILanguage;
46 | //
47 | // // The primary language ID is in the low-order 10 bits,
48 | // // and the sublanguage ID is in the high-order 6 bits.
49 | // // Combine them to get the language ID in the format "LANG-SUBLANG".
50 | // StrFmt(buffer, '%x-%x', [langId and $3FF, langId shr 10]);
51 | //
52 | // Result := buffer;
53 | // end;
54 |
55 | function GetWindowsLanguage: string;
56 | var
57 | localeName: array [0 .. LOCALE_NAME_MAX_LENGTH] of Char;
58 | begin
59 | if GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH) > 0 then
60 | Result := localeName
61 | else
62 | Result := '';
63 | end;
64 |
65 | function GetKeyboardLanguageCodeStr: string;
66 | var
67 | tid: word;
68 | lid: word;
69 | ndxLocale: integer;
70 | begin
71 | try
72 |
73 | tid := getCurrentThreadID;
74 | lid := getKeyboardLayout(tid);
75 | ndxLocale := languages.IndexOf(lid);
76 | Result := languages.localeName[ndxLocale];
77 | except
78 | Result := 'xx'; // Error
79 | end;
80 | end;
81 |
82 | procedure TForm1.Button1Click(Sender: TObject);
83 | var
84 | l1, l2: integer;
85 | slocale: string;
86 | Stream: TMemoryStream;
87 | Url, FileName: String;
88 | IdSSL: TIdSSLIOHandlerSocketOpenSSL;
89 | begin
90 | slocale := languages.localeName[languages.IndexOf(SysLocale.DefaultLCID)];
91 | Url := Format('https://raw.githubusercontent.com/microsoft/winget-cli/release-%s/Localization/Resources/%s/winget.resw',[sVersion,'fr-FR']);
92 | FileName := 'config.xml';
93 | IdSSL := TIdSSLIOHandlerSocketOpenSSL.create(nil);
94 | IdSSL.SSLOptions.Method := sslvTLSv1_2;
95 | IdSSL.SSLOptions.Mode := sslmUnassigned;
96 | IdHTTP1.IOHandler := IdSSL;
97 | Stream := TMemoryStream.Create;
98 | try
99 |
100 | IdHTTP1.Get(Url, Stream);
101 | Stream.SaveToFile(FileName);
102 | finally
103 | Stream.Free;
104 | //IdHTTP1.Free;
105 | IdSSL.Free;
106 | end;
107 | end;
108 |
109 | procedure TForm1.Button2Click(Sender: TObject);
110 | var
111 | LDocument: IXMLDocument;
112 | LNodeElement, LNode: IXMLNode;
113 | i : integer;
114 | begin
115 | //
116 | if FileExists('d:\params.xml') then
117 | begin
118 | LDocument := TXMLDocument.Create(nil);
119 | LDocument.LoadFromFile('d:\params.xml'); { File should exist. }
120 |
121 | { Find a specific node. }
122 | LNodeElement := LDocument.ChildNodes.FindNode('root');
123 | if (LNodeElement <> nil) then
124 | begin
125 | for I := 0 to LNodeElement.ChildNodes.Count - 1 do
126 | begin
127 | LNode := LNodeElement.ChildNodes.Get(I);
128 | { Display node name. }
129 | Writeln(sLineBreak + 'Node name: ' + LNode.NodeName);
130 | { Check whether the node type is Text. }
131 | if LNode.NodeType = ntText then
132 | begin
133 | memo1.lines.add('This is a node of type Text. The text is: ' + LNode.Text);
134 | end;
135 | { Check whether the node is text element. }
136 | if LNode.IsTextElement then
137 | begin
138 | memo1.lines.add('This is a text element. The text is: ' + LNode.Text);
139 | end;
140 | end;
141 | end;
142 | end
143 | else
144 | begin
145 | memo1.Lines.Add('nope');
146 | end;
147 | end;
148 |
149 | end.
150 |
--------------------------------------------------------------------------------
/uConst.pas:
--------------------------------------------------------------------------------
1 | unit uConst;
2 |
3 | interface
4 |
5 | uses
6 | System.Generics.Collections,
7 | System.JSON,
8 | System.Types,
9 | System.strUtils,
10 | System.SysUtils,
11 | System.Classes,
12 | System.IOUtils,
13 | System.Win.Registry,
14 | winapi.Windows,
15 | winapi.Messages,
16 | vcl.ComCtrls,
17 | sListView;
18 |
19 | const
20 |
21 | aLstWidths: TArray = [46, 38, 13, 8];
22 | aLstFields: TArray = ['nom', 'id', 'version', 'source'];
23 | aUpdWidths: TArray = [40, 31, 13, 13, 8];
24 | aUpgFields: TArray = ['nom', 'id', 'version', 'disponible', 'source'];
25 | aSearchFields: TArray = ['nom', 'id', 'version', 'corresp.', 'source'];
26 |
27 | aColListLibs: TArray = ['Description', 'Id', 'Version', 'Source'];
28 | aColUpdLibs: TArray = ['Description', 'Id', 'Version', 'Available', 'Source'];
29 |
30 | // sRunUpdate = 'winget upgrade --id %s';
31 | // sRunInstall = 'winget install --id %s --force';
32 |
33 | WM_GETWINGETVERSION = WM_USER + 2001;
34 | WM_STARTSEARCH = WM_GETWINGETVERSION + 1;
35 | WM_STARTLIST = WM_STARTSEARCH + 1;
36 | WM_RUNNEXT = WM_STARTLIST + 1;
37 | WM_CLOSERUNEXT = WM_RUNNEXT + 1;
38 | WM_FRAMERESIZE = WM_CLOSERUNEXT + 1;
39 | WM_GETUPGRADELIST = WM_FRAMERESIZE + 1;
40 | WM_HIDEMAIN = WM_GETUPGRADELIST + 1;
41 |
42 | type
43 | tPackageType = (ptInstall, ptUpgrade, ptSearch, ptList, ptUninstall);
44 | tActivitySet = procedure(bActive: Boolean) of object;
45 | tRemoveItem = procedure(sID: string) of object;
46 |
47 | tGridConfig = class
48 | class procedure MakeColumns(psLV: tsListView);
49 | end;
50 |
51 | tWingetcommand = class
52 | class function Install(sID: String): String;
53 | class function Upgrade: String;
54 | class function upgradePKG(sID: String): String;
55 | class Function List: String;
56 | class function Search(sText: String): String;
57 | class function version: String;
58 | class function UnInstall(sID: String): String;
59 | end;
60 |
61 | tColumnClass = class
62 | public
63 | sLabel: String;
64 | iPos: Integer;
65 | iLen: Integer;
66 | constructor create(aPos1, aLen: Integer);
67 | end;
68 |
69 | tParams = class
70 | private
71 | fJSON: TJSONObject;
72 | fConfigPath: string;
73 | fStartMinimized : Boolean;
74 | fAutoCheckUpdates : Boolean;
75 | fCheckUpateInterval : Integer;
76 | fRunOnStartup : Boolean;
77 | procedure initParams;
78 | procedure makeConfigPath;
79 | function ConfigExists: Boolean;
80 | public
81 | procedure loadParams;
82 | procedure saveParams;
83 |
84 | function getParamb(sParam: string): Boolean;
85 | function getParams(sParam: string): String;
86 | function getParamI(sParam: Integer): Integer;
87 | procedure SetParamb(sParam: string; bValue: Boolean);
88 | procedure SetParams(sParam: string; sValue: String);
89 | procedure setParamI(sParam : string; iVaue : Integer);
90 | property StartMinimized: Boolean read fStartMinimized Write fStartMinimized;
91 | Property AutoCheckUpdates : Boolean read fAutoCheckupdates Write fAutoCheckupdates;
92 | Property CheckUpdatesInterval : Integer read fCheckUpateInterval Write fCheckUpateInterval;
93 | Property RunOnStartup : Boolean read fRunOnStartup Write fRunOnStartup;
94 | end;
95 |
96 | tWingetPackage = Class
97 | private
98 | fFields: TArray;
99 | fType: tPackageType;
100 | fLine: string;
101 | dFields: TDictionary;
102 | procedure makeFields(sLine: String);
103 | procedure makeListFields(sLine: String);
104 | function splitCols(line : string): tStrings;
105 | published
106 | property Line: String read fLine;
107 | property PackageType: tPackageType read fType;
108 | public
109 | property Fields: TArray read fFields write fFields;
110 | constructor create(sLine: String; sType: tPackageType); overload;
111 | constructor create(pWingetPackage: tWingetPackage); overload;
112 | function getField(sField: string): String;
113 | function getAllFields: TStrings;
114 | End;
115 |
116 | var
117 | lListColumn: TStrings;
118 | lListUpdates: tStrings;
119 | wgCommands: TDictionary;
120 | pParams: tParams;
121 |
122 | procedure makeUpgradeDictonary(sLine: String);
123 | procedure removekey;
124 | function CurrentUserName: String;
125 | procedure RunOnStartup(sProgTitle, sCmdLine: string; bRunOnce: Boolean);
126 | procedure RemoveOnStartup(sProgTitle: string);
127 |
128 | implementation
129 |
130 | procedure RunOnStartup(sProgTitle, sCmdLine: string; bRunOnce: Boolean);
131 | var
132 | sKey: string;
133 | reg: TRegIniFile;
134 | begin
135 | if (bRunOnce) then
136 | sKey := 'Once'
137 | else
138 | sKey := '';
139 |
140 | reg := TRegIniFile.create('');
141 | reg.RootKey := HKEY_CURRENT_USER;
142 | reg.WriteString('\Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0, sProgTitle, sCmdLine);
143 | reg.Free;
144 | end;
145 |
146 | procedure RemoveOnStartup(sProgTitle: string);
147 | var
148 | sKey: string;
149 | reg: TRegIniFile;
150 | begin
151 | reg := TRegIniFile.create('');
152 | reg.RootKey := HKEY_CURRENT_USER;
153 | reg.DeleteKey('\Software\Microsoft\Windows\CurrentVersion\Run', sProgTitle);
154 | reg.Free;
155 | end;
156 |
157 | function GetCharsCount(const AStr: UTF8String): Integer;
158 | var
159 | P: PWideChar;
160 | begin
161 | Result := 0;
162 | P := PWideChar(UnicodeString(AStr));
163 | while P <> '' do begin
164 | Inc(Result);
165 | P := CharNextW(P);
166 | end;
167 | end;
168 |
169 | function CopyChars(sLine : String; iStart : Integer; iLen : Integer) : String;
170 | var
171 | i : integer;
172 | P: PWideChar;
173 | begin
174 | result := '';
175 | i := 0;
176 | while i <= iLen do
177 | begin
178 | if (i >= iStart) and (i <= iLen) then
179 | begin
180 | P := PWideChar(UnicodeString(sLine[i]));
181 | result := result + P;
182 | while P <> '' do begin
183 | P := CharNextW(P);
184 | end;
185 | end;
186 |
187 | inc(i);
188 | end;
189 | end;
190 |
191 | function CurrentUserName: String;
192 | var
193 | u: array [0 .. 127] of Char;
194 | sz: DWord;
195 | begin
196 | sz := SizeOf(u);
197 | GetUserName(u, sz);
198 | Result := u;
199 | end;
200 |
201 | procedure removekey;
202 | var
203 | Mgs: TMsg;
204 | begin
205 | PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE);
206 | end;
207 |
208 | procedure makeUpgradeDictonary(sLine: String);
209 | var
210 | iLen: Integer;
211 | pColumn: tColumnClass;
212 | lHeaders: TStringDynArray;
213 | lsHeaders: tStringList;
214 | i: Integer;
215 | iPos1, iPos2: Integer;
216 | iPosCol, iLenCol: Integer;
217 | key: String;
218 | begin
219 | lHeaders := SplitString(sLine, ' ');
220 | i := 0;
221 | lsHeaders := tStringList.create;
222 | lsHeaders.AddStrings(lHeaders);
223 | while i <= lsHeaders.Count - 1 do
224 | begin
225 | if trim(lsHeaders[i]) = '' then
226 | begin
227 | lsHeaders.Delete(i);
228 | end
229 | else
230 | inc(i);
231 | end;
232 |
233 | if lListColumn <> Nil then
234 | FreeAndNil(lListColumn);
235 |
236 | lListColumn := tStringList.create;
237 | i := 0;
238 | repeat
239 | if (trim(lsHeaders[i]) <> '') then
240 | begin
241 | key := lsHeaders[i];
242 | iPosCol := pos(key, sLine);
243 | iLenCol := 0;
244 | pColumn := tColumnClass.create(iPosCol, iLenCol);
245 | pColumn.sLabel := key;
246 | lListColumn.AddObject(key, pColumn);
247 | end;
248 | inc(i);
249 | until i > lsHeaders.Count - 1;
250 |
251 | i := 0;
252 | repeat
253 | if i < lListColumn.Count - 1 then
254 | begin
255 | iPos1 := tColumnClass(lListColumn.Objects[i]).iPos;
256 | iPos2 := tColumnClass(lListColumn.Objects[i + 1]).iPos;
257 | tColumnClass(lListColumn.Objects[i]).iLen := iPos2 - iPos1;
258 | end
259 | else
260 | begin
261 | iPos1 := tColumnClass(lListColumn.Objects[i]).iPos;
262 | tColumnClass(lListColumn.Objects[i]).iLen := (length(sLine) - iPos1) + 1
263 | end;
264 | inc(i);
265 | until i > lsHeaders.Count - 1;
266 | end;
267 |
268 | { tColumnClass }
269 |
270 | constructor tColumnClass.create(aPos1, aLen: Integer);
271 | begin
272 | iPos := aPos1;
273 | iLen := aLen;
274 | end;
275 |
276 | { tWingetPackage }
277 |
278 | constructor tWingetPackage.create(sLine: String; sType: tPackageType);
279 | var
280 | aColumn: tColumnClass;
281 | begin
282 | fType := sType;
283 | fLine := sLine;
284 | dFields := TDictionary.create();
285 | case sType of
286 | ptInstall:
287 | begin
288 | end;
289 | ptUpgrade:
290 | begin
291 | Fields := aUpgFields;
292 | end;
293 | ptSearch:
294 | begin
295 | Fields := aSearchFields;
296 | end;
297 | ptList:
298 | begin
299 | if lListColumn.Count = 4 then
300 | Fields := aLstFields
301 | else
302 | Fields := aUpgFields;
303 | end;
304 | end;
305 | makeFields(sLine);
306 | case sType of
307 | ptInstall:
308 | ;
309 | ptUpgrade:
310 | ;
311 | ptSearch:
312 | begin
313 | dFields.Remove('source');
314 | dFields.Add('source', 'Winget');
315 | end;
316 |
317 | ptList:
318 | begin
319 |
320 | end;
321 | end;
322 | end;
323 |
324 | { tCommandClass }
325 |
326 | class function tWingetcommand.Install(sID: String): String;
327 | begin
328 | wgCommands.TryGetValue('install', Result);
329 | Result := format(Result, [sID]);
330 | end;
331 |
332 | class function tWingetcommand.List: String;
333 | begin
334 | wgCommands.TryGetValue('list', Result);
335 | end;
336 |
337 | class function tWingetcommand.Search(sText: String): String;
338 | begin
339 | wgCommands.TryGetValue('search', Result);
340 | Result := format(Result, [sText]);
341 | end;
342 |
343 | class function tWingetcommand.UnInstall(sID: String): String;
344 | begin
345 | wgCommands.TryGetValue('uninstall', Result);
346 | Result := format(Result, [sID]);
347 | end;
348 |
349 | class function tWingetcommand.Upgrade: String;
350 | begin
351 | wgCommands.TryGetValue('upgrade', Result);
352 | end;
353 |
354 | class function tWingetcommand.upgradePKG(sID: String): String;
355 | begin
356 | wgCommands.TryGetValue('upgradePKG', Result);
357 | Result := format(Result, [sID]);
358 | end;
359 |
360 | class function tWingetcommand.version: String;
361 | begin
362 | wgCommands.TryGetValue('version', Result);
363 | end;
364 |
365 | constructor tWingetPackage.create(pWingetPackage: tWingetPackage);
366 | begin
367 | //
368 | create(pWingetPackage.Line, pWingetPackage.PackageType);
369 | end;
370 |
371 | function tWingetPackage.getAllFields: TStrings;
372 | var
373 | sField: String;
374 | begin
375 | Result := tStringList.create;
376 | for sField in aUpgFields do
377 | begin
378 | Result.Add(getField(sField));
379 | end;
380 | end;
381 |
382 | function tWingetPackage.getField(sField: string): String;
383 | begin
384 | if not dFields.TryGetValue(sField, Result) then
385 | Result := 'N/A';
386 |
387 | end;
388 |
389 | procedure tWingetPackage.makeFields(sLine: String);
390 | var
391 | aColumn: tColumnClass;
392 | iCol: Integer;
393 | s : PWideChar;
394 | slCols : tStrings;
395 | begin
396 | iCol := 0;
397 | slCols := splitCols(sLine);
398 | while iCol <= slcols.Count - 1 do
399 | begin
400 | aColumn := tColumnClass(lListColumn.Objects[iCol]);
401 | dFields.Add(Fields[iCol], slCols[iCol]);
402 | inc(iCol);
403 | end;
404 | slCols.Free;
405 | end;
406 |
407 | function tWingetPackage.splitCols(line : string): tStrings;
408 | var
409 | i : integer;
410 | c,l, cl : integer;
411 | s : String;
412 | fName : String;
413 | begin
414 | result := tStringlist.Create;
415 | i := 0;
416 | c := 0;
417 | l := 0;
418 | cl := 0;
419 | fName := '';
420 | while i < llistcolumn.Count do
421 | begin
422 | if (c < line.Length) then
423 | s := line[c+1]
424 | else
425 | s := ' ';
426 | cl := TEncoding.UTF8.GetByteCount(s);
427 | if cl > 1 then dec(cl);
428 | l := l + cl;
429 | fName := fName + s;
430 | if l >= tColumnClass(lListColumn.Objects[i]).iLen then
431 | begin
432 | l := 0;
433 | result.Add(fName);
434 | fName := '';
435 | inc(i);
436 | end;
437 | inc(c);
438 | end;
439 | end;
440 |
441 | procedure tWingetPackage.makeListFields(sLine: String);
442 | begin
443 |
444 | end;
445 |
446 | { tGridConfig }
447 |
448 | class procedure tGridConfig.MakeColumns(psLV: tsListView);
449 | var
450 | aColumn: TListColumn;
451 | i: Integer;
452 | aTitles: TArray;
453 | Procedure cc(sTitle: String; iWidth: Integer);
454 | begin
455 | aColumn := psLV.Columns.Add;
456 | aColumn.Caption := sTitle;
457 | aColumn.Width := iWidth;
458 | aColumn.AutoSize := False;
459 | end;
460 |
461 | begin
462 | psLV.Columns.Clear;
463 | if lListColumn.Count = 4 then
464 | begin
465 | for i := 0 to length(aLstWidths) - 1 do
466 | begin
467 | cc(aColListLibs[i], aLstWidths[i]);
468 | end;
469 | end
470 | else
471 | begin
472 | for i := 0 to length(aUpdWidths) - 1 do
473 | begin
474 | cc(aColUpdLibs[i], aUpdWidths[i]);
475 | end;
476 | end;
477 | end;
478 |
479 | { tParams }
480 |
481 | function tParams.ConfigExists: Boolean;
482 | var
483 | sConfigFile: String;
484 | begin
485 | makeConfigPath;
486 | sConfigFile := TPath.Combine(fConfigPath, 'params.json');
487 | Result := FileExists(sConfigFile);
488 | end;
489 |
490 | function tParams.getParamb(sParam: string): Boolean;
491 | var
492 | bValue : Boolean;
493 | begin
494 | Result := False;
495 | if fJSON.TryGetValue(sParam, bValue) then
496 | result := bValue;
497 | end;
498 |
499 | function tParams.getParamI(sParam: Integer): Integer;
500 | begin
501 |
502 | end;
503 |
504 | function tParams.getParams(sParam: string): String;
505 | begin
506 |
507 | end;
508 |
509 | procedure tParams.initParams;
510 | var
511 | sConfigFile: String;
512 | jAutoUpd : TJSONObject;
513 | begin
514 | sConfigFile := TPath.Combine(fConfigPath, 'params.json');
515 | fJSON := TJSONObject.create;
516 | fJSON.AddPair('StartMinimized', tJSONBool.Create(False));
517 | fJSON.AddPair('RunOnStartUp', TJSONBool.Create(False));
518 | jAutoUpd := TJSONObject.Create;
519 | jAutoUpd.AddPair('RunAutoUpdCheck',TJSONBool.Create(False));
520 | jAutoUpd.AddPair('Interval',TJSONNumber.Create(30));
521 | fJSON.addpair('CheckUpdates',jAutoUpd);
522 | TFile.WriteAllText(sConfigFile, fJSON.ToJSON);
523 | end;
524 |
525 | procedure tParams.loadParams;
526 | var
527 | sConfigFile: String;
528 | jAutoUpd : TJSonValue;
529 | begin
530 | if ConfigExists then
531 | begin
532 | sConfigFile := TPath.Combine(fConfigPath, 'params.json');
533 | fJSON := TJSONObject.create;
534 | fJSON := TJSONObject(fJSON.ParseJSONValue(TFile.ReadAllText(sConfigFile, TEncoding.UTF8)));
535 | fStartMinimized := getParamb('StartMinimized');
536 | fRunOnStartup := getParamb('RunOnStartup');
537 |
538 |
539 | jAutoUpd := fJSON.GetValue('CheckUpdates');
540 | jAutoUpd.TryGetValue('RunAutoUpdCheck',fAutoCheckUpdates);
541 | jAutoUpd.TryGetValue('Interval',fCheckUpateInterval);
542 |
543 | end
544 | else
545 | initParams;
546 |
547 | // Load param variables.
548 | end;
549 |
550 | procedure tParams.makeConfigPath;
551 | var
552 | sUser: string;
553 | sPAth: String;
554 | begin
555 | sUser := CurrentUserName;
556 | sPAth := TPath.Combine('c:\users\', sUser);
557 | sPAth := TPath.Combine(sPAth, '.config\WingetHelper');
558 | if not tDirectory.Exists(sPAth) then
559 | ForceDirectories(sPAth);
560 | fConfigPath := sPAth;
561 | end;
562 |
563 | procedure tParams.saveParams;
564 | var
565 | sConfigFile: String;
566 | jAutoUpd : TJSONObject;
567 | begin
568 | sConfigFile := TPath.Combine(fConfigPath, 'params.json');
569 | fJSON.Free;
570 | fJSON := TJSONObject.create;
571 | fJSON.AddPair('StartMinimized', tJSONBool.Create(fStartMinimized));
572 | fJSON.AddPair('RunOnStartUp', TJSONBool.Create(fRunOnStartup));
573 | jAutoUpd := TJSONObject.Create;
574 | jAutoUpd.AddPair('RunAutoUpdCheck',TJSONBool.Create(fAutoCheckUpdates));
575 | jAutoUpd.AddPair('Interval',TJSONNumber.Create(fCheckUpateInterval));
576 | fJSON.addpair('CheckUpdates',jAutoUpd);
577 | TFile.WriteAllText(sConfigFile, fJSON.ToJSON);
578 | end;
579 |
580 | procedure tParams.SetParamb(sParam: string; bValue: Boolean);
581 | var
582 | jsPair: tJSONPair;
583 | begin
584 | jspair := fJSON.Get(sParam);
585 | if assigned(jsPair) then begin
586 | fJSON.RemovePair(sParam)
587 | end;
588 | fJSON.AddPair(sPAram, TJSONBool.Create(bValue));
589 | end;
590 |
591 | procedure tParams.setParamI(sParam: string; iVaue: Integer);
592 | begin
593 |
594 | end;
595 |
596 | procedure tParams.SetParams(sParam, sValue: String);
597 | begin
598 |
599 | end;
600 |
601 | initialization
602 |
603 | wgCommands := TDictionary.create();
604 | wgCommands.Add('list', 'winget list --accept-source-agreements');
605 | wgCommands.Add('upgrade', 'winget upgrade --include-unknown');
606 | wgCommands.Add('upgradePKG', 'winget upgrade --id "%s"');
607 | wgCommands.Add('search', 'winget search "%s" --source winget');
608 | wgCommands.Add('install', 'winget install --id "%s"');
609 | wgCommands.Add('uninstall', 'winget uninstall --id "%s"');
610 | wgCommands.Add('version', 'winget --version');
611 | pParams := tParams.create;
612 | lListUpdates := tStringList.Create;
613 |
614 | Finalization
615 |
616 | wgCommands.Clear;
617 | wgCommands.Free;
618 | pParams.Free;
619 | lListUpdates.Free;
620 |
621 | end.
622 |
--------------------------------------------------------------------------------
/uFrameBase.dfm:
--------------------------------------------------------------------------------
1 | object frmBase: TfrmBase
2 | Left = 0
3 | Top = 0
4 | Width = 640
5 | Height = 480
6 | TabOrder = 0
7 | end
8 |
--------------------------------------------------------------------------------
/uFrameBase.pas:
--------------------------------------------------------------------------------
1 | unit uFrameBase;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows,
7 | Winapi.Messages,
8 | System.SysUtils,
9 | System.Variants,
10 | System.Classes,
11 | Vcl.Graphics,
12 | Vcl.Controls,
13 | Vcl.Forms,
14 | Vcl.Dialogs,
15 | Vcl.ExtCtrls;
16 |
17 | type
18 | TfrmBase = class(TFrame)
19 | private
20 | { Private declarations }
21 | public
22 | { Public declarations }
23 | end;
24 |
25 | implementation
26 |
27 | {$R *.dfm}
28 |
29 | end.
30 |
31 |
--------------------------------------------------------------------------------
/uFrameConfig.dfm:
--------------------------------------------------------------------------------
1 | inherited frmConfig: TfrmConfig
2 | object pnlMain: TsPanel
3 | Left = 0
4 | Top = 0
5 | Width = 640
6 | Height = 480
7 | Align = alClient
8 | Caption = 'pnlMain'
9 | ShowCaption = False
10 | TabOrder = 0
11 | object pnlTitleToolBar: TsPanel
12 | Left = 1
13 | Top = 1
14 | Width = 638
15 | Height = 24
16 | Align = alTop
17 | Alignment = taLeftJustify
18 | BevelOuter = bvNone
19 | Caption = 'Configuration'
20 | StyleElements = [seFont]
21 | ParentBackground = False
22 | ParentColor = True
23 | TabOrder = 0
24 | end
25 | object pnlSideTB: TsPanel
26 | Left = 454
27 | Top = 25
28 | Width = 185
29 | Height = 454
30 | Align = alRight
31 | Caption = 'pnlSideTB'
32 | ShowCaption = False
33 | TabOrder = 1
34 | object btnUnInstallRun: TsSpeedButton
35 | Left = 1
36 | Top = 397
37 | Width = 183
38 | Height = 56
39 | Align = alBottom
40 | Caption = 'Save Params'#13#10'(F8)'
41 | ImageIndex = 1
42 | Images = sCharImageList1
43 | OnClick = btnUnInstallRunClick
44 | TextOffset = 10
45 | ExplicitLeft = 2
46 | ExplicitTop = 9
47 | end
48 | end
49 | object sPageControl1: TsPageControl
50 | Left = 1
51 | Top = 25
52 | Width = 453
53 | Height = 454
54 | ActivePage = sTabSheet1
55 | Align = alClient
56 | TabOrder = 2
57 | object sTabSheet1: TsTabSheet
58 | Caption = 'General'
59 | object ckStartup: TsCheckBox
60 | Left = 16
61 | Top = 46
62 | Width = 102
63 | Height = 19
64 | Caption = 'Run on Sartup'
65 | TabOrder = 0
66 | OnMouseUp = ckStartupMouseUp
67 | end
68 | object ckStarMinimized: TsCheckBox
69 | Left = 16
70 | Top = 71
71 | Width = 110
72 | Height = 19
73 | Caption = 'Start Minimized'
74 | TabOrder = 1
75 | OnMouseUp = ckStarMinimizedMouseUp
76 | end
77 | object ckAutoUpdCheck: TsCheckBox
78 | Left = 16
79 | Top = 96
80 | Width = 186
81 | Height = 19
82 | Caption = 'Automatic Update verification'
83 | TabOrder = 2
84 | OnMouseUp = ckAutoUpdCheckMouseUp
85 | end
86 | object pnlFrequency: TsPanel
87 | Left = 32
88 | Top = 121
89 | Width = 296
90 | Height = 32
91 | Caption = 'pnlFrequency'
92 | ShowCaption = False
93 | TabOrder = 3
94 | Visible = False
95 | object sLabel2: TsLabel
96 | Left = 12
97 | Top = 7
98 | Width = 28
99 | Height = 15
100 | Caption = 'Every'
101 | end
102 | object sLabel1: TsLabel
103 | Left = 237
104 | Top = 7
105 | Width = 43
106 | Height = 15
107 | Caption = 'minutes'
108 | end
109 | object lblMin: TsLabel
110 | Left = 202
111 | Top = 8
112 | Width = 23
113 | Height = 15
114 | Alignment = taRightJustify
115 | AutoSize = False
116 | Caption = '0'
117 | end
118 | object tbInterval: TsTrackBar
119 | Left = 46
120 | Top = 0
121 | Width = 150
122 | Height = 45
123 | Max = 60
124 | Min = 5
125 | ParentShowHint = False
126 | Frequency = 5
127 | Position = 5
128 | PositionToolTip = ptTop
129 | ShowHint = True
130 | ShowSelRange = False
131 | TabOrder = 0
132 | TickStyle = tsNone
133 | OnChange = tbIntervalChange
134 | ShowProgress = True
135 | end
136 | end
137 | end
138 | object Winget: TsTabSheet
139 | Caption = 'Winget'
140 | object sLabelFX1: TsLabelFX
141 | Left = 16
142 | Top = 16
143 | Width = 47
144 | Height = 17
145 | Caption = 'Soon .....'
146 | Angle = 0
147 | Shadow.OffsetKeeper.LeftTop = 0
148 | Shadow.OffsetKeeper.RightBottom = 2
149 | end
150 | end
151 | end
152 | end
153 | object sFrameAdapter1: TsFrameAdapter
154 | Left = 536
155 | Top = 384
156 | end
157 | object sCharImageList1: TsCharImageList
158 | EmbeddedFonts = <
159 | item
160 | FontName = 'FontAwesome'
161 | FontData = {}
162 | end>
163 | Items = <
164 | item
165 | Char = 61465
166 | Color = clLime
167 | end
168 | item
169 | DrawContour = True
170 | Char = 61465
171 | end>
172 | Left = 502
173 | Top = 369
174 | Bitmap = {}
175 | end
176 | end
177 |
--------------------------------------------------------------------------------
/uFrameConfig.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameConfig.pas
--------------------------------------------------------------------------------
/uFrameList.dfm:
--------------------------------------------------------------------------------
1 | inherited frmList: TfrmList
2 | object pnlListMain: TsPanel
3 | Left = 0
4 | Top = 0
5 | Width = 640
6 | Height = 480
7 | Align = alClient
8 | Caption = 'pnlListMain'
9 | TabOrder = 0
10 | object listView1: TsListView
11 | Left = 1
12 | Top = 25
13 | Width = 453
14 | Height = 454
15 | BevelInner = bvNone
16 | BevelKind = bkFlat
17 | BevelOuter = bvNone
18 | Align = alClient
19 | Checkboxes = True
20 | Columns = <
21 | item
22 | Caption = 'Description'
23 | MinWidth = 200
24 | Width = 200
25 | end
26 | item
27 | Caption = 'ID'
28 | Width = 67
29 | end
30 | item
31 | Caption = 'Version'
32 | Width = 66
33 | end
34 | item
35 | Caption = 'Disponible'
36 | Width = 58
37 | end
38 | item
39 | Caption = 'Source'
40 | Width = 58
41 | end>
42 | RowSelect = True
43 | TabOrder = 0
44 | ViewStyle = vsReport
45 | end
46 | object pnlSideTB: TsPanel
47 | Left = 454
48 | Top = 25
49 | Width = 185
50 | Height = 454
51 | Align = alRight
52 | BevelOuter = bvNone
53 | Caption = 'pnlSideTB'
54 | Padding.Left = 4
55 | Padding.Right = 4
56 | Padding.Bottom = 4
57 | ShowCaption = False
58 | TabOrder = 1
59 | object btnUnInstallRun: TsSpeedButton
60 | Left = 4
61 | Top = 394
62 | Width = 177
63 | Height = 56
64 | Align = alBottom
65 | Caption = 'Uninstall Selected'#13#10'(F8)'
66 | ImageIndex = 1
67 | Images = sCharImageList1
68 | OnClick = btnUnInstallRunClick
69 | ExplicitLeft = 6
70 | end
71 | object pnlUpgTopSide: TsPanel
72 | Left = 4
73 | Top = 0
74 | Width = 177
75 | Height = 41
76 | Align = alTop
77 | BevelOuter = bvNone
78 | Caption = 'pnlUpgTopSide'
79 | ShowCaption = False
80 | TabOrder = 0
81 | end
82 | object pnlFilterGroup: TsPanel
83 | Left = 4
84 | Top = 41
85 | Width = 177
86 | Height = 72
87 | Align = alTop
88 | BevelOuter = bvNone
89 | Caption = 'pnlFilterGroup'
90 | ShowCaption = False
91 | TabOrder = 1
92 | object lblfltSource: TsLabel
93 | Left = 0
94 | Top = 0
95 | Width = 177
96 | Height = 15
97 | Align = alTop
98 | Alignment = taCenter
99 | Caption = 'Source'
100 | ExplicitWidth = 36
101 | end
102 | object cbbSourceFilter: TsComboBox
103 | Left = 0
104 | Top = 15
105 | Width = 177
106 | Height = 23
107 | Align = alTop
108 | TabOrder = 0
109 | OnChange = cbbSourceFilterChange
110 | Style = csDropDownList
111 | end
112 | end
113 | end
114 | object pnlTitleToolBar: TsPanel
115 | Left = 1
116 | Top = 1
117 | Width = 638
118 | Height = 24
119 | Align = alTop
120 | Alignment = taLeftJustify
121 | BevelOuter = bvNone
122 | Caption = 'Installed Packages'
123 | StyleElements = [seFont]
124 | ParentBackground = False
125 | ParentColor = True
126 | TabOrder = 2
127 | end
128 | end
129 | object sFrameAdapter1: TsFrameAdapter
130 | Left = 502
131 | Top = 297
132 | end
133 | object sCharImageList1: TsCharImageList
134 | EmbeddedFonts = <
135 | item
136 | FontName = 'FontAwesome'
137 | FontData = {}
138 | end>
139 | Items = <
140 | item
141 | Char = 61809
142 | Color = clRed
143 | end
144 | item
145 | Char = 61561
146 | Color = clBlue
147 | end>
148 | Left = 534
149 | Top = 401
150 | Bitmap = {}
151 | end
152 | object ActionList1: TActionList
153 | Left = 526
154 | Top = 249
155 | object UninstallSelected: TAction
156 | Caption = 'Uninstall Selected'
157 | ShortCut = 119
158 | OnExecute = UninstallSelectedExecute
159 | end
160 | end
161 | end
162 |
--------------------------------------------------------------------------------
/uFrameList.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameList.pas
--------------------------------------------------------------------------------
/uFrameSearch.dfm:
--------------------------------------------------------------------------------
1 | inherited frmSearch: TfrmSearch
2 | Width = 435
3 | Height = 266
4 | OnResize = FrameResize
5 | ExplicitWidth = 435
6 | ExplicitHeight = 266
7 | object pnlSearchMain: TsPanel
8 | Left = 0
9 | Top = 24
10 | Width = 435
11 | Height = 242
12 | Align = alClient
13 | BevelOuter = bvNone
14 | Caption = 'pnlSearchMain'
15 | ShowCaption = False
16 | TabOrder = 0
17 | ExplicitWidth = 856
18 | ExplicitHeight = 622
19 | object pnlSearchEdit: TsPanel
20 | Left = 0
21 | Top = 0
22 | Width = 435
23 | Height = 105
24 | Align = alTop
25 | BevelOuter = bvNone
26 | Caption = 'pnlSearchEdit'
27 | Color = clBackground
28 | ShowCaption = False
29 | ParentBackground = False
30 | TabOrder = 0
31 | ExplicitWidth = 856
32 | object btnLaunch: TsSpeedButton
33 | Left = 704
34 | Top = 16
35 | Width = 147
36 | Height = 49
37 | Caption = 'Search'#13#10'(Enter)'
38 | ImageIndex = 3
39 | Images = sCharImageList1
40 | Spacing = 15
41 | OnClick = btnLaunchClick
42 | end
43 | object edtPackageName: TsEdit
44 | Left = 25
45 | Top = 29
46 | Width = 673
47 | Height = 23
48 | TabOrder = 0
49 | TextHint = 'Package to search'
50 | OnKeyDown = edtPackageNameKeyDown
51 | BoundLabel.Active = True
52 | BoundLabel.Caption = 'Package to search'
53 | BoundLabel.Layout = sclTopLeft
54 | LabelFromTextHint = True
55 | end
56 | end
57 | object sPanel1: TsPanel
58 | Left = 0
59 | Top = 105
60 | Width = 435
61 | Height = 248
62 | Align = alTop
63 | Caption = 'sPanel1'
64 | TabOrder = 1
65 | ExplicitWidth = 856
66 | object ListView1: TsListView
67 | Left = 1
68 | Top = 1
69 | Width = 248
70 | Height = 246
71 | BevelInner = bvNone
72 | BevelOuter = bvNone
73 | Align = alClient
74 | Checkboxes = True
75 | Columns = <
76 | item
77 | Caption = 'Description'
78 | MinWidth = 200
79 | Width = 200
80 | end
81 | item
82 | Caption = 'ID'
83 | Width = 78
84 | end
85 | item
86 | Caption = 'Version'
87 | Width = 77
88 | end
89 | item
90 | Caption = 'Correspondance'
91 | Width = 77
92 | end
93 | item
94 | Caption = 'Source'
95 | Width = 77
96 | end>
97 | RowSelect = True
98 | TabOrder = 0
99 | ViewStyle = vsReport
100 | ExplicitWidth = 669
101 | end
102 | object pnlUpgSideBar: TsPanel
103 | Left = 249
104 | Top = 1
105 | Width = 185
106 | Height = 246
107 | Align = alRight
108 | BevelOuter = bvNone
109 | Caption = 'pnlUpgSideBar'
110 | Padding.Left = 4
111 | Padding.Right = 4
112 | ShowCaption = False
113 | TabOrder = 1
114 | ExplicitLeft = 670
115 | object sbAddtoSelection: TsSpeedButton
116 | Left = 4
117 | Top = 0
118 | Width = 177
119 | Height = 48
120 | Align = alTop
121 | Caption = 'Add to Selection'#13#10'(Ctrl-A)'
122 | ImageIndex = 1
123 | Images = sCharImageList1
124 | OnClick = sbAddtoSelectionClick
125 | Reflected = True
126 | ExplicitLeft = 8
127 | ExplicitTop = 49
128 | end
129 | end
130 | end
131 | object sPanel2: TsPanel
132 | Left = 0
133 | Top = 394
134 | Width = 435
135 | Height = 228
136 | Align = alClient
137 | Caption = 'sPanel2'
138 | TabOrder = 2
139 | ExplicitWidth = 856
140 | object lvInstall: TsListView
141 | Left = 1
142 | Top = 1
143 | Width = 248
144 | Height = 226
145 | BevelInner = bvNone
146 | BevelOuter = bvNone
147 | Align = alClient
148 | Checkboxes = True
149 | Columns = <
150 | item
151 | Caption = 'Description'
152 | MinWidth = 200
153 | Width = 200
154 | end
155 | item
156 | Caption = 'ID'
157 | Width = 78
158 | end
159 | item
160 | Caption = 'Version'
161 | Width = 77
162 | end
163 | item
164 | Caption = 'Correspondance'
165 | Width = 77
166 | end
167 | item
168 | Caption = 'Source'
169 | Width = 77
170 | end>
171 | RowSelect = True
172 | TabOrder = 0
173 | ViewStyle = vsReport
174 | ExplicitWidth = 669
175 | end
176 | object sPanel3: TsPanel
177 | Left = 249
178 | Top = 1
179 | Width = 185
180 | Height = 226
181 | Align = alRight
182 | BevelOuter = bvNone
183 | Caption = 'pnlUpgSideBar'
184 | Padding.Left = 4
185 | Padding.Right = 4
186 | ShowCaption = False
187 | TabOrder = 1
188 | ExplicitLeft = 670
189 | object sbInstallRun: TsSpeedButton
190 | Left = 4
191 | Top = 48
192 | Width = 177
193 | Height = 48
194 | Align = alTop
195 | Caption = 'Install Selected'#13#10'(F8)'
196 | ImageIndex = 0
197 | Images = sCharImageList1
198 | Spacing = 15
199 | OnClick = btnInstallRunClick
200 | Reflected = True
201 | ExplicitLeft = 178
202 | ExplicitTop = 41
203 | end
204 | object sbRemovefromSelection: TsSpeedButton
205 | Left = 4
206 | Top = 0
207 | Width = 177
208 | Height = 48
209 | Align = alTop
210 | Caption = 'Remove Selected'#13#10'(Ctrl-R)'
211 | ImageIndex = 2
212 | Images = sCharImageList1
213 | OnClick = sbRemovefromSelectionClick
214 | Reflected = True
215 | ExplicitLeft = 8
216 | ExplicitTop = 8
217 | end
218 | end
219 | end
220 | object spnl1: TsPanel
221 | Left = 0
222 | Top = 353
223 | Width = 435
224 | Height = 41
225 | Align = alTop
226 | Caption = 'spnl1'
227 | ShowCaption = False
228 | TabOrder = 3
229 | ExplicitWidth = 856
230 | object spdbtn1: TsSpeedButton
231 | Left = 1
232 | Top = 1
233 | Width = 433
234 | Height = 39
235 | Align = alClient
236 | ImageIndex = 4
237 | Images = sCharImageList1
238 | OnClick = spdbtn1Click
239 | ExplicitLeft = 392
240 | ExplicitTop = 16
241 | ExplicitWidth = 23
242 | ExplicitHeight = 22
243 | end
244 | end
245 | end
246 | object pnlTitleToolBar: TsPanel
247 | Left = 0
248 | Top = 0
249 | Width = 435
250 | Height = 24
251 | Align = alTop
252 | Alignment = taLeftJustify
253 | BevelOuter = bvNone
254 | Caption = 'Search Packages'
255 | Color = 12615680
256 | StyleElements = [seFont, seBorder]
257 | ParentBackground = False
258 | TabOrder = 1
259 | ExplicitWidth = 856
260 | end
261 | object dcSearch1: TDosCommand
262 | InputToOutput = False
263 | MaxTimeAfterBeginning = 0
264 | MaxTimeAfterLastOutput = 0
265 | OnCharDecoding = dcSearch1CharDecoding
266 | OnNewLine = dcSearch1NewLine
267 | Left = 320
268 | Top = 272
269 | end
270 | object sFrameAdapter1: TsFrameAdapter
271 | Left = 577
272 | Top = 385
273 | end
274 | object sCharImageList1: TsCharImageList
275 | EmbeddedFonts = <
276 | item
277 | FontName = 'FontAwesome'
278 | FontData = {}
279 | end>
280 | Items = <
281 | item
282 | Char = 61465
283 | Color = -5344256
284 | end
285 | item
286 | Char = 61543
287 | Color = -14121702
288 | end
289 | item
290 | Char = 61544
291 | Color = -16777054
292 | end
293 | item
294 | Char = 61671
295 | Color = -16757684
296 | end
297 | item
298 | ScalingFactor = 1.160000000000000000
299 | AddedSize = 58
300 | Char = 61539
301 | AddedChar = 61538
302 | AddedFontName = 'FontAwesome'
303 | Color = 65344
304 | AddedColor = clRed
305 | end>
306 | Left = 513
307 | Top = 393
308 | Bitmap = {}
309 | end
310 | object ActionList1: TActionList
311 | Left = 551
312 | Top = 313
313 | object InstallSelected: TAction
314 | Caption = 'Install Selected'
315 | ShortCut = 119
316 | OnExecute = InstallSelectedExecute
317 | end
318 | object AddChecked: TAction
319 | Caption = 'AddChecked'
320 | ShortCut = 16449
321 | OnExecute = AddCheckedExecute
322 | end
323 | object RemoveSelected: TAction
324 | Caption = 'RemoveSelected'
325 | ShortCut = 16466
326 | OnExecute = RemoveSelectedExecute
327 | end
328 | end
329 | end
330 |
--------------------------------------------------------------------------------
/uFrameSearch.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameSearch.pas
--------------------------------------------------------------------------------
/uFrameUpgrade.dfm:
--------------------------------------------------------------------------------
1 | inherited frameUpgrade: TframeUpgrade
2 | Left = 0
3 | Top = 0
4 | ClientHeight = 445
5 | ClientWidth = 626
6 | Color = clBtnFace
7 | Font.Charset = DEFAULT_CHARSET
8 | Font.Color = clWindowText
9 | Font.Height = -12
10 | Font.Name = 'Segoe UI'
11 | Font.Style = []
12 | TextHeight = 15
13 | object ListView1: TListView
14 | Left = 0
15 | Top = 0
16 | Width = 626
17 | Height = 445
18 | Align = alClient
19 | BevelInner = bvNone
20 | Columns = <
21 | item
22 | AutoSize = True
23 | Caption = 'Description'
24 | MinWidth = 200
25 | end
26 | item
27 | AutoSize = True
28 | Caption = 'ID'
29 | end
30 | item
31 | AutoSize = True
32 | Caption = 'Version'
33 | end
34 | item
35 | AutoSize = True
36 | Caption = 'Available'
37 | end
38 | item
39 | AutoSize = True
40 | Caption = 'Source'
41 | end>
42 | GridLines = True
43 | RowSelect = True
44 | TabOrder = 0
45 | ViewStyle = vsReport
46 | ExplicitWidth = 624
47 | ExplicitHeight = 441
48 | end
49 | end
50 |
--------------------------------------------------------------------------------
/uFrameUpgrade.pas:
--------------------------------------------------------------------------------
1 | unit uFrameUpgrade;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, uFrameBase;
8 |
9 | type
10 | TframeUpgrade = class(TFrmBase)
11 | ListView1: TListView;
12 | private
13 | { Private declarations }
14 | public
15 | { Public declarations }
16 | end;
17 |
18 | implementation
19 |
20 | {$R *.dfm}
21 |
22 | end.
23 |
--------------------------------------------------------------------------------
/uFrameUpgrade2.dfm:
--------------------------------------------------------------------------------
1 | inherited frmHeritee: TfrmHeritee
2 | OnResize = FrameResize
3 | object pnlUpgMain: TsPanel
4 | Left = 0
5 | Top = 24
6 | Width = 640
7 | Height = 456
8 | Align = alClient
9 | Caption = 'pnlUpgMain'
10 | ShowCaption = False
11 | TabOrder = 0
12 | object ListView1: TsListView
13 | Left = 1
14 | Top = 1
15 | Width = 511
16 | Height = 454
17 | BevelInner = bvNone
18 | BevelOuter = bvNone
19 | Align = alClient
20 | Checkboxes = True
21 | Columns = <
22 | item
23 | Caption = 'Description'
24 | MinWidth = 200
25 | Width = 200
26 | end
27 | item
28 | Caption = 'ID'
29 | Width = 79
30 | end
31 | item
32 | Caption = 'Version'
33 | Width = 76
34 | end
35 | item
36 | Caption = 'Available'
37 | Width = 76
38 | end
39 | item
40 | Caption = 'Source'
41 | Width = 76
42 | end>
43 | RowSelect = True
44 | TabOrder = 0
45 | ViewStyle = vsReport
46 | end
47 | object pnlUpgSideBar: TsPanel
48 | Left = 512
49 | Top = 1
50 | Width = 127
51 | Height = 454
52 | Align = alRight
53 | BevelOuter = bvNone
54 | Caption = 'pnlUpgSideBar'
55 | ShowCaption = False
56 | TabOrder = 1
57 | object sbUgRun: TsSpeedButton
58 | Left = 0
59 | Top = 398
60 | Width = 127
61 | Height = 56
62 | Align = alBottom
63 | Caption = 'Upgrade Selected'#13#10'(F8)'
64 | ImageIndex = 2
65 | Images = sCharImageList1
66 | OnClick = sbUgRunClick
67 | ExplicitLeft = 356
68 | ExplicitTop = 113
69 | ExplicitWidth = 177
70 | end
71 | object sbSelectAll: TsSpeedButton
72 | Left = 0
73 | Top = 41
74 | Width = 127
75 | Height = 56
76 | Align = alTop
77 | Caption = 'Select All'#13#10'(F5)'
78 | ImageIndex = 0
79 | Images = sCharImageList1
80 | OnClick = sbSelectAllClick
81 | ExplicitLeft = 356
82 | ExplicitTop = 113
83 | ExplicitWidth = 177
84 | end
85 | object pnlUpgTopSide: TsPanel
86 | Left = 0
87 | Top = 0
88 | Width = 127
89 | Height = 41
90 | Align = alTop
91 | BevelOuter = bvNone
92 | Caption = 'pnlUpgTopSide'
93 | ShowCaption = False
94 | TabOrder = 0
95 | end
96 | end
97 | end
98 | object pnlTitleToolBar: TsPanel
99 | Left = 0
100 | Top = 0
101 | Width = 640
102 | Height = 24
103 | Align = alTop
104 | Alignment = taLeftJustify
105 | BevelOuter = bvNone
106 | Caption = 'Upgradable Packages'
107 | Color = 12615680
108 | StyleElements = [seFont, seBorder]
109 | ParentBackground = False
110 | TabOrder = 1
111 | end
112 | object actlstUpgrade: TActionList
113 | Left = 568
114 | Top = 305
115 | object actSelectAll: TAction
116 | Caption = 'actSelectAll'
117 | ShortCut = 116
118 | OnExecute = actSelectAllExecute
119 | end
120 | object actUpgrade: TAction
121 | Caption = 'actUpgrade'
122 | ShortCut = 119
123 | OnExecute = actUpgradeExecute
124 | end
125 | end
126 | object sCharImageList1: TsCharImageList
127 | EmbeddedFonts = <
128 | item
129 | FontName = 'FontAwesome'
130 | FontData = {}
131 | end>
132 | Items = <
133 | item
134 | Char = 61510
135 | Color = clLime
136 | end
137 | item
138 | Char = 61590
139 | Color = clRed
140 | end
141 | item
142 | Char = 61573
143 | Color = clLime
144 | end>
145 | Left = 520
146 | Top = 353
147 | Bitmap = {}
148 | end
149 | end
150 |
--------------------------------------------------------------------------------
/uFrameUpgrade2.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameUpgrade2.pas
--------------------------------------------------------------------------------
/uMain.pas:
--------------------------------------------------------------------------------
1 | unit uMain;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows,
7 | Winapi.Messages,
8 | System.Notification,
9 | System.SysUtils,
10 | System.Variants,
11 | System.IOUtils,
12 | System.Classes,
13 | System.Types,
14 | System.DateUtils,
15 | Vcl.Graphics,
16 | Vcl.Controls,
17 | Vcl.Forms,
18 | Vcl.Dialogs,
19 | Vcl.StdCtrls,
20 | System.StrUtils,
21 | System.RegularExpressions,
22 | uConst,
23 | Vcl.CheckLst,
24 | SynEdit,
25 | DosCommand,
26 | Vcl.WinXCtrls,
27 | Vcl.ExtCtrls,
28 | Vcl.Buttons,
29 | Vcl.ComCtrls,
30 | uFrameUpgrade2,
31 | uFrameBase,
32 | uFrameList,
33 | uFrameSearch,
34 | uFrameConfig,
35 | System.ImageList,
36 | Vcl.ImgList,
37 | System.Actions,
38 | Vcl.ActnList,
39 | sSkinProvider,
40 | sSkinManager,
41 | acAlphaImageList,
42 | sSpeedButton,
43 | sLabel,
44 | acFontStore,
45 | sPanel,
46 | Vcl.Menus,
47 | JvComponentBase,
48 | JvBalloonHint,
49 | JvTrayIcon,
50 | udlgClose;
51 |
52 | type
53 | TArg = reference to procedure(const Arg: T);
54 |
55 | TfMain = class(TForm)
56 | AI1: TActivityIndicator;
57 | DosCommand1: TDosCommand;
58 | pnlToolbar: TsPanel;
59 | pnlFooter: TPanel;
60 | pnlMain: TsPanel;
61 | actlst1: TActionList;
62 | actSearch: TAction;
63 | actList: TAction;
64 | actUpgrade: TAction;
65 | actQuit: TAction;
66 | sSkinManager1: TsSkinManager;
67 | sSkinProvider1: TsSkinProvider;
68 | sCharImageList1: TsCharImageList;
69 | sSpeedButton1: TsSpeedButton;
70 | sSpeedButton2: TsSpeedButton;
71 | sbQuit: TsSpeedButton;
72 | lblWingetVersion: TsLabelFX;
73 | sbConfig: TsSpeedButton;
74 | actConfig: TAction;
75 | lblScoopVersion: TsLabelFX;
76 | pmTray: TPopupMenu;
77 | W1: TMenuItem;
78 | WingetHelper1: TMenuItem;
79 | S1: TMenuItem;
80 | SearchPackages1: TMenuItem;
81 | N1: TMenuItem;
82 | N2: TMenuItem;
83 | sbUpgrade: TsSpeedButton;
84 | sSpeedButton3: TsSpeedButton;
85 | pmUpdatables: TMenuItem;
86 | dcupgradeSearch: TDosCommand;
87 | Timer1: TTimer;
88 | TrayIcon1: TTrayIcon;
89 | NotificationCenter1: TNotificationCenter;
90 | procedure DosCommand1NewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType);
91 | procedure btnQuitClick(Sender: TObject);
92 | function DosCommand1CharDecoding(ASender: TObject; ABuf: TStream): string;
93 | procedure DosCommand1ExecuteError(ASender: TObject; AE: Exception; var AHandled: Boolean);
94 | procedure btnSearchClick(Sender: TObject);
95 | procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
96 | procedure ygBtnSearchClick(Sender: TObject);
97 | procedure ygBtnQuitClick(Sender: TObject);
98 | procedure ygBtnListClick(Sender: TObject);
99 | procedure ygBtnUpgradeClick(Sender: TObject);
100 | procedure btnListClick(Sender: TObject);
101 | procedure btnUpgradeClick(Sender: TObject);
102 | procedure actQuitExecute(Sender: TObject);
103 | procedure actUpgradeExecute(Sender: TObject);
104 | procedure actListExecute(Sender: TObject);
105 | procedure actSearchExecute(Sender: TObject);
106 | procedure FormCreate(Sender: TObject);
107 | procedure sbQuitClick(Sender: TObject);
108 | procedure sSpeedButton2Click(Sender: TObject);
109 | procedure sSpeedButton1Click(Sender: TObject);
110 | procedure actConfigExecute(Sender: TObject);
111 | procedure sbConfigClick(Sender: TObject);
112 | procedure N2Click(Sender: TObject);
113 | procedure TrayIcon1DblClick(Sender: TObject);
114 | procedure S1Click(Sender: TObject);
115 | procedure SearchPackages1Click(Sender: TObject);
116 | procedure sbUpgradeClick(Sender: TObject);
117 | procedure sSpeedButton3Click(Sender: TObject);
118 | procedure W1Click(Sender: TObject);
119 | procedure Timer1Timer(Sender: TObject);
120 | procedure dcupgradeSearchNewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType);
121 | procedure pmUpdatablesClick(Sender: TObject);
122 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
123 | procedure FormShow(Sender: TObject);
124 | private
125 | { Private declarations }
126 | procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
127 | function makeUpgList(listIn: TStrings): tStrings;
128 | procedure GetVersion(var m: tMessage); message WM_GETWINGETVERSION;
129 | procedure StartSearch(var m: tMessage); message WM_STARTSEARCH;
130 | procedure StartList(var m: tMessage); message WM_STARTLIST;
131 | procedure taskSearch(Sender: TObject);
132 | procedure taskList(Sender: TObject);
133 | procedure taskUpgrade(Sender: TObject);
134 | procedure popup;
135 | procedure GetUpgradeList(var Msg : TMessage); message WM_GETUPGRADELIST;
136 | procedure ListUpgradeTerminated(Sender : TObject);
137 | procedure HideMain(var msg : TMessage); message WM_HIDEMAIN;
138 | public
139 | { Public declarations }
140 | lOutPut: tStrings;
141 | lOutPutUpg : tStrings;
142 | aFrame: TfrmBase;
143 | procedure upgradeTerminated(Sender: TObject);
144 | procedure upgradeAutoTerminated(Sender : TObject);
145 | procedure versionTerminated(Sender: TObject);
146 | procedure listTerminated(Sender: TObject);
147 | procedure LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
148 | procedure ActivitySet(bActive: Boolean);
149 | procedure Show2(Sender : TObject);
150 | end;
151 |
152 | var
153 | fMain: TfMain;
154 |
155 | implementation
156 |
157 | {$R *.dfm}
158 |
159 | procedure TfMain.actConfigExecute(Sender: TObject);
160 | begin
161 | if aFrame <> Nil then
162 | aFrame.Free;
163 |
164 | aFrame := TfrmConfig.Create(pnlMain);
165 |
166 | aFrame.Parent := pnlMain;
167 | aFrame.Align := alClient;
168 | TfrmConfig(aFrame).loadparams;
169 | end;
170 |
171 | procedure TfMain.ActivitySet(bActive: Boolean);
172 | begin
173 | AI1.Animate := bActive;
174 | end;
175 |
176 | procedure TfMain.actListExecute(Sender: TObject);
177 | begin
178 | taskList(Sender);
179 | end;
180 |
181 | procedure TfMain.actQuitExecute(Sender: TObject);
182 | begin
183 | Close;
184 | end;
185 |
186 | procedure TfMain.actSearchExecute(Sender: TObject);
187 | begin
188 | taskSearch(Sender);
189 | end;
190 |
191 | procedure TfMain.actUpgradeExecute(Sender: TObject);
192 | begin
193 | taskUpgrade(Sender);
194 | end;
195 |
196 | procedure TfMain.btnListClick(Sender: TObject);
197 | begin
198 | taskList(Sender);
199 | end;
200 |
201 | procedure TfMain.btnQuitClick(Sender: TObject);
202 | begin
203 | Close;
204 | end;
205 |
206 | procedure TfMain.btnSearchClick(Sender: TObject);
207 | begin
208 | taskSearch(Sender);
209 | end;
210 |
211 | procedure TfMain.btnUpgradeClick(Sender: TObject);
212 | begin
213 | taskUpgrade(Sender);
214 | end;
215 |
216 | procedure TfMain.dcupgradeSearchNewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType);
217 | begin
218 | if ANewLine.IndexOf(Chr(08)) = -1 then
219 | lOutPutUpg.Add(ANewLine);
220 | end;
221 |
222 | function TfMain.DosCommand1CharDecoding(ASender: TObject; ABuf: TStream): string;
223 | var
224 | pBytes: TBytes;
225 | iLength: Integer;
226 | begin
227 | iLength := ABuf.Size;
228 | if iLength > 0 then
229 | begin
230 | SetLength(pBytes, iLength);
231 | ABuf.Read(pBytes, iLength);
232 | try
233 | result := tEncoding.UTF8.GetString(pBytes);
234 | except
235 | result := '';
236 | end;
237 | end
238 | else
239 | result := '';
240 | end;
241 |
242 | procedure TfMain.DosCommand1ExecuteError(ASender: TObject; AE: Exception; var AHandled: Boolean);
243 | begin
244 | AHandled := True;
245 | end;
246 |
247 | procedure TfMain.DosCommand1NewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType);
248 | begin
249 | if ANewLine.IndexOf(Chr(08)) = -1 then
250 | lOutPut.Add(ANewLine);
251 | end;
252 |
253 | procedure TfMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
254 | var
255 | frmCloseDlg : TfrmCloseDlg;
256 | begin
257 | frmCloseDlg := TfrmCloseDlg.Create(Self);
258 | CanClose := (frmCloseDlg.showModal = mrNo);
259 | frmCloseDlg.Free;
260 | if not CanClose then
261 | Hide;
262 | end;
263 |
264 | procedure TfMain.FormCreate(Sender: TObject);
265 | begin
266 | lOutPut := tStringList.Create;
267 | lOutPutUpg := tStringList.Create;
268 | Timer1.Interval := pParams.CheckUpdatesInterval * 60 * 1000;
269 | Timer1.Enabled := pParams.AutoCheckUpdates;
270 | end;
271 |
272 | procedure TfMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
273 | var
274 | aComponent: TComponent;
275 | begin
276 | //
277 | if ssAlt in Shift then
278 | if Key = 80 then
279 | begin
280 | removekey;
281 | if (aFrame <> Nil) then
282 | begin
283 | if aFrame is TfrmSearch then
284 | begin
285 | TfrmSearch(aFrame).edtPackageName.SetFocus;
286 | end;
287 | end;
288 | end;
289 | end;
290 |
291 | procedure TfMain.FormShow(Sender: TObject);
292 | begin
293 | PostMessage(fMain.handle, WM_GETWINGETVERSION, 0, 0);
294 | PostMessage(fMain.handle, WM_GETUPGRADELIST, 0, 0);
295 | end;
296 |
297 | procedure TfMain.GetUpgradeList(var Msg: TMessage);
298 | begin
299 | if not dcupgradeSearch.IsRunning then
300 | begin
301 | lOutPutUpg.clear;
302 | Timer1.Enabled := False;
303 | dcupgradeSearch.CommandLine := tWingetcommand.Upgrade;
304 | dcupgradeSearch.OnTerminated := upgradeAutoTerminated;
305 | dcupgradeSearch.Execute;
306 | end;
307 |
308 | end;
309 |
310 | procedure TfMain.GetVersion(var m: tMessage);
311 | begin
312 | if not DosCommand1.IsRunning then
313 | begin
314 | DosCommand1.CommandLine := tWingetcommand.version;
315 | DosCommand1.OnTerminated := versionTerminated;
316 | DosCommand1.Execute;
317 | end;
318 | end;
319 |
320 | procedure TfMain.HideMain(var msg: TMessage);
321 | begin
322 | if pParams.StartMinimized then
323 | Hide;
324 | end;
325 |
326 | procedure TfMain.listTerminated(Sender: TObject);
327 | var
328 | i, iCol: Integer;
329 | liste: TListItems;
330 | Item: TListItem;
331 | sLine: string;
332 | sString: string;
333 | aColumn: tColumnClass;
334 | lOutClean: tStrings;
335 | aWingetPackage: tWingetPackage;
336 | begin
337 | i := 0;
338 | aFrame := TfrmList.Create(pnlMain);
339 | aFrame.Parent := pnlMain;
340 | aFrame.Align := alClient;
341 | TfrmList(aFrame).Init;
342 | lOutClean := makeUpgList(lOutPut);
343 | while i <= lOutClean.Count - 1 do
344 | begin
345 | sLine := lOutClean[i];
346 | aWingetPackage := tWingetPackage.Create(sLine, ptList);
347 | TfrmList(aFrame).addItem(aWingetPackage);
348 | TfrmList(aFrame).AddFilterCB(aWingetPackage.getField('source'));
349 | inc(i);
350 | end;
351 |
352 | liste := TfrmList(aFrame).ListView1.Items;
353 |
354 | tGridConfig.MakeColumns(TfrmList(aFrame).ListView1);
355 |
356 | TfrmList(aFrame).setupColumnHeaders;
357 | tfrmList(aFrame).filterWinget;
358 | TfrmList(aFrame).ApplyFilter;
359 | TfrmList(aFrame).ListView1.OnSelectItem := LVSelectItem;
360 | PostMessage(aFrame.handle, WM_FRAMERESIZE, 0, 0);
361 | ActivitySet(False);
362 | end;
363 |
364 | procedure TfMain.ListUpgradeTerminated(Sender: TObject);
365 | begin
366 | //
367 | end;
368 |
369 | procedure TfMain.LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
370 | var
371 | aWingetPackage: tWingetPackage;
372 | begin
373 | if Selected then
374 | if (Item.Data <> Nil) then
375 | begin
376 | aWingetPackage := tWingetPackage(Item.Data);
377 | end;
378 | end;
379 |
380 | function TfMain.makeUpgList(listIn: TStrings): tStrings;
381 | var
382 | sHeaders: string;
383 | ANewLine: string;
384 | iLine: Integer;
385 | bClean: Boolean;
386 | begin
387 | result := tStringList.Create;
388 | iLine := 0;
389 | bClean := False;
390 | while iLine <= listIn.Count - 1 do
391 | begin
392 | ANewLine := listIn[iLine];
393 | if TRegEx.IsMatch(ANewLine, '----') then
394 | begin
395 | bClean := True;
396 | sHeaders := listIn[iLine - 1];
397 | makeUpgradeDictonary(sHeaders);
398 | end
399 | else if bClean then
400 | result.Add(ANewLine);
401 | inc(iLine);
402 | end;
403 | end;
404 |
405 | procedure TfMain.N2Click(Sender: TObject);
406 | begin
407 | Close;
408 | end;
409 |
410 | procedure TfMain.popup;
411 | var
412 | MyNotification: TNotification;
413 | begin
414 | MyNotification := NotificationCenter1.CreateNotification; //Creates the notification
415 | try
416 | MyNotification.Name := 'Winget Helper Notification'; //Defines the name of the notification.
417 | MyNotification.Title := 'Winget Helper'; //Defines the name that appears when the notification is presented.
418 | MyNotification.AlertBody := Format('New Upgrades availables (%d)',[lListUpdates.count]); //Defines the body of the notification that appears below the title.
419 | MyNotification.EnableSound := True;
420 |
421 | NotificationCenter1.PresentNotification(MyNotification); //Presents the notification on the screen.
422 | finally
423 | MyNotification.Free; //Frees the variable
424 | end;
425 | //JvTrayIcon1.BalloonHint('Winget Hepler', Format('New Upgrades availables (%d)',[lListUpdates.count]), btInfo, 5000, false);
426 | //TrayIcon1.BalloonHint := Format('New Upgrades availables (%d)',[lListUpdates.count]);
427 | //TrayIcon1.BalloonTitle := 'Winget Helper';
428 | //TrayIcon1.ShowBalloonHint;
429 | end;
430 |
431 | procedure TfMain.S1Click(Sender: TObject);
432 | begin
433 | show;
434 | taskSearch(Sender);
435 | end;
436 |
437 | procedure TfMain.sSpeedButton1Click(Sender: TObject);
438 | begin
439 | taskList(Sender);
440 | end;
441 |
442 | procedure TfMain.sSpeedButton2Click(Sender: TObject);
443 | begin
444 | taskSearch(Sender);
445 | end;
446 |
447 | procedure TfMain.sSpeedButton3Click(Sender: TObject);
448 | begin
449 | Timer1Timer(Sender);
450 | end;
451 |
452 | procedure TfMain.sbConfigClick(Sender: TObject);
453 | begin
454 | actConfigExecute(Sender);
455 | end;
456 |
457 | procedure TfMain.sbQuitClick(Sender: TObject);
458 | begin
459 | Close;
460 | end;
461 |
462 | procedure TfMain.sbUpgradeClick(Sender: TObject);
463 | begin
464 | taskUpgrade(Sender);
465 | end;
466 |
467 | procedure TfMain.SearchPackages1Click(Sender: TObject);
468 | begin
469 | taskList(Sender);
470 | Show;
471 | end;
472 |
473 | procedure TfMain.Show2(Sender: TObject);
474 | begin
475 | //
476 | end;
477 |
478 | procedure TfMain.StartList(var m: tMessage);
479 | begin
480 | taskList(Nil);
481 | end;
482 |
483 | procedure TfMain.StartSearch(var m: tMessage);
484 | begin
485 | btnSearchClick(Nil);
486 | end;
487 |
488 | procedure TfMain.taskList(Sender: TObject);
489 | begin
490 | ActivitySet(True);
491 | if aFrame <> Nil then
492 | aFrame.Free;
493 | lOutPut.clear;
494 |
495 | DosCommand1.OnTerminated := listTerminated;
496 | DosCommand1.CommandLine := tWingetcommand.List;
497 | DosCommand1.Execute;
498 | end;
499 |
500 | procedure TfMain.taskSearch(Sender: TObject);
501 | begin
502 | if aFrame <> Nil then
503 | aFrame.Free;
504 |
505 | aFrame := TfrmSearch.Create(pnlMain);
506 |
507 | aFrame.Parent := pnlMain;
508 | aFrame.Align := alClient;
509 | TfrmSearch(aFrame).Init;
510 | TfrmSearch(aFrame).activityset := ActivitySet;
511 | end;
512 |
513 | procedure TfMain.taskUpgrade(Sender: TObject);
514 | begin
515 | ActivitySet(True);
516 | if aFrame <> Nil then
517 | aFrame.Free;
518 |
519 | lOutPut.clear;
520 |
521 | aFrame := TfrmHeritee.Create(pnlMain);
522 | aFrame.Parent := pnlMain;
523 | aFrame.Align := alClient;
524 | TfrmHeritee(aFrame).ListView1.OnSelectItem := LVSelectItem;
525 |
526 | DosCommand1.OnTerminated := upgradeTerminated;
527 | DosCommand1.CommandLine := tWingetcommand.Upgrade;
528 | DosCommand1.Execute;
529 | end;
530 |
531 | procedure TfMain.Timer1Timer(Sender: TObject);
532 | begin
533 | //Memo1.Lines.Add('Timer');
534 | PostMessage(handle, WM_GETUPGRADELIST, 0, 0);
535 | end;
536 |
537 | procedure TfMain.TrayIcon1DblClick(Sender: TObject);
538 | begin
539 | Show;
540 | end;
541 |
542 | procedure TfMain.pmUpdatablesClick(Sender: TObject);
543 | begin
544 | taskUpgrade(Sender);
545 | Show;
546 | end;
547 |
548 | procedure TfMain.upgradeAutoTerminated(Sender: TObject);
549 | var
550 | i, iCol: Integer;
551 | liste: TListItems;
552 | Item: TListItem;
553 | sLine: string;
554 | sString: string;
555 | aColumn: tColumnClass;
556 | lOutClean: tStrings;
557 | aWingetPackage: tWingetPackage;
558 | bNewPack : Boolean;
559 | begin
560 | i := 0;
561 | bNewPack := false;
562 | lOutClean := makeUpgList(lOutPutUpg);
563 | //Memo1.Lines.Add('#### Updates ####');
564 | while i < lOutClean.Count - 1 do
565 | begin
566 | sLine := lOutClean[i];
567 | aWingetPackage := tWingetPackage.Create(sLine, ptUpgrade);
568 | //Memo1.Lines.Add(sLine) ;
569 | if lListUpdates.IndexOf(aWingetPackage.getField('id')) = -1 then
570 | begin
571 |
572 | lListUpdates.AddObject(aWingetPackage.getField('id'),aWingetPackage);
573 | bNewPack := True;
574 | end;
575 | inc(i);
576 | end;
577 | ActivitySet(False);
578 | if bNewPack then popup;
579 | pmUpdatables.Caption := Format('Updatables Packages (%d)',[lListUpdates.Count]);
580 | Timer1.Enabled := pParams.AutoCheckUpdates;
581 | end;
582 |
583 | procedure TfMain.upgradeTerminated(Sender: TObject);
584 | var
585 | i, iCol: Integer;
586 | liste: TListItems;
587 | Item: TListItem;
588 | sLine: string;
589 | sString: string;
590 | aColumn: tColumnClass;
591 | lOutClean: tStrings;
592 | aWingetPackage: tWingetPackage;
593 | begin
594 | i := 0;
595 | lOutClean := makeUpgList(loutput);
596 | TfrmHeritee(aFrame).setupColumnHeaders;
597 | liste := TfrmHeritee(aFrame).ListView1.Items;
598 | while i < lOutClean.Count - 1 do
599 | begin
600 | sLine := lOutClean[i];
601 | aWingetPackage := tWingetPackage.Create(sLine, ptUpgrade);
602 | Item := liste.Add;
603 | Item.Data := aWingetPackage;
604 | iCol := 0;
605 | while iCol <= length(aUpgFields) - 1 do
606 | begin
607 | if (iCol = 0) then
608 | begin
609 | Item.Caption := aWingetPackage.getField(aUpgFields[iCol]);
610 | end
611 | else
612 | begin
613 | Item.SubItems.Add(aWingetPackage.getField(aUpgFields[iCol]));
614 | end;
615 | inc(iCol);
616 | end;
617 | inc(i);
618 | end;
619 | ActivitySet(False);
620 | end;
621 |
622 | procedure TfMain.versionTerminated(Sender: TObject);
623 | begin
624 | lblWingetVersion.Caption := Format('Winget version %s', [lOutPut[0]]);
625 | // Chack if scoop is installed
626 | if TDirectory.Exists(Format('c:\users\%s\scoop', [CurrentUserName])) then
627 | begin
628 | lblScoopVersion.Caption := 'Scoop Installed ' + '💈';
629 | end
630 | else
631 | begin
632 | lblScoopVersion.Caption := 'Scoop not installed ' + '💈';
633 | end;
634 | OnShow := nil;
635 | end;
636 |
637 | procedure TfMain.W1Click(Sender: TObject);
638 | begin
639 | Show;
640 | end;
641 |
642 | procedure TfMain.WMSysCommand(var Msg: TWMSysCommand);
643 | begin
644 | if Msg.CmdType = SC_MINIMIZE then
645 | Hide
646 | else
647 | inherited;
648 | end;
649 |
650 | procedure TfMain.ygBtnListClick(Sender: TObject);
651 | begin
652 | taskList(Sender);
653 | end;
654 |
655 | procedure TfMain.ygBtnQuitClick(Sender: TObject);
656 | begin
657 | Close;
658 | end;
659 |
660 | procedure TfMain.ygBtnSearchClick(Sender: TObject);
661 | begin
662 | taskSearch(Sender);
663 | end;
664 |
665 | procedure TfMain.ygBtnUpgradeClick(Sender: TObject);
666 | begin
667 | taskUpgrade(Sender);
668 | end;
669 |
670 | end.
671 |
672 |
--------------------------------------------------------------------------------
/uOptions.dfm:
--------------------------------------------------------------------------------
1 | object frmOptions: TfrmOptions
2 | Left = 0
3 | Top = 0
4 | AlphaBlend = True
5 | AlphaBlendValue = 235
6 | BorderStyle = bsSingle
7 | Caption = 'Options'
8 | ClientHeight = 423
9 | ClientWidth = 614
10 | Color = clBtnFace
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -12
14 | Font.Name = 'Segoe UI'
15 | Font.Style = []
16 | GlassFrame.Enabled = True
17 | GlassFrame.SheetOfGlass = True
18 | Position = poMainFormCenter
19 | OnShow = FormShow
20 | TextHeight = 15
21 | object sPanel1: TsPanel
22 | Left = 0
23 | Top = 382
24 | Width = 614
25 | Height = 41
26 | Align = alBottom
27 | Caption = 'sPanel1'
28 | ShowCaption = False
29 | TabOrder = 0
30 | object btnClose: TsBitBtn
31 | Left = 500
32 | Top = 1
33 | Width = 113
34 | Height = 39
35 | Align = alRight
36 | Caption = 'Accept'
37 | ImageIndex = 0
38 | Images = sCharImageList1
39 | TabOrder = 0
40 | OnClick = btnCloseClick
41 | end
42 | object sButton1: TsButton
43 | Left = 387
44 | Top = 1
45 | Width = 113
46 | Height = 39
47 | Align = alRight
48 | Caption = 'Cancel'
49 | ImageIndex = 1
50 | Images = sCharImageList1
51 | TabOrder = 1
52 | OnClick = sButton1Click
53 | end
54 | end
55 | object sTabControl1: TsTabControl
56 | Left = 0
57 | Top = 0
58 | Width = 614
59 | Height = 382
60 | Align = alClient
61 | TabOrder = 1
62 | Tabs.Strings = (
63 | 'General'
64 | 'Winget')
65 | TabIndex = 0
66 | object ckStarMinimized: TsCheckBox
67 | Left = 16
68 | Top = 71
69 | Width = 110
70 | Height = 19
71 | Caption = 'Start Minimized'
72 | TabOrder = 0
73 | end
74 | object ckAutoUpdCheck: TsCheckBox
75 | Left = 16
76 | Top = 96
77 | Width = 186
78 | Height = 19
79 | Caption = 'Automatic Update verification'
80 | TabOrder = 1
81 | OnMouseUp = ckAutoUpdCheckMouseUp
82 | end
83 | object ckStartup: TsCheckBox
84 | Left = 16
85 | Top = 46
86 | Width = 102
87 | Height = 19
88 | Caption = 'Run on Sartup'
89 | TabOrder = 2
90 | OnMouseUp = ckStartupMouseUp
91 | end
92 | object pnlFrequency: TsPanel
93 | Left = 32
94 | Top = 121
95 | Width = 296
96 | Height = 32
97 | Caption = 'pnlFrequency'
98 | ShowCaption = False
99 | TabOrder = 3
100 | object sLabel2: TsLabel
101 | Left = 12
102 | Top = 7
103 | Width = 28
104 | Height = 15
105 | Caption = 'Every'
106 | end
107 | object sLabel1: TsLabel
108 | Left = 237
109 | Top = 7
110 | Width = 43
111 | Height = 15
112 | Caption = 'minutes'
113 | end
114 | object lblMin: TsLabel
115 | Left = 202
116 | Top = 8
117 | Width = 23
118 | Height = 15
119 | Alignment = taRightJustify
120 | AutoSize = False
121 | Caption = '0'
122 | end
123 | object tbInterval: TsTrackBar
124 | Left = 46
125 | Top = 0
126 | Width = 150
127 | Height = 45
128 | Max = 60
129 | Min = 5
130 | ParentShowHint = False
131 | Frequency = 5
132 | Position = 5
133 | PositionToolTip = ptTop
134 | ShowHint = True
135 | ShowSelRange = False
136 | TabOrder = 0
137 | TickStyle = tsNone
138 | OnChange = tbIntervalChange
139 | ShowProgress = True
140 | end
141 | end
142 | end
143 | object sCharImageList1: TsCharImageList
144 | EmbeddedFonts = <
145 | item
146 | FontName = 'FontAwesome'
147 | FontData = {}
148 | end>
149 | Items = <
150 | item
151 | Char = 61452
152 | Color = -7249920
153 | end
154 | item
155 | Char = 61453
156 | Color = clRed
157 | end>
158 | Left = 408
159 | Top = 224
160 | Bitmap = {}
161 | end
162 | end
163 |
--------------------------------------------------------------------------------
/uOptions.pas:
--------------------------------------------------------------------------------
1 | unit uOptions;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
7 | System.Classes, Vcl.Graphics, System.IOUtils,
8 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, sPanel, acNoteBook,
9 | Vcl.ComCtrls, sTabControl, Vcl.StdCtrls, Vcl.Buttons, sBitBtn,
10 | System.ImageList, Vcl.ImgList, acAlphaImageList, sCheckBox, sGroupBox, uConst,
11 | sTrackBar, sLabel, sButton;
12 |
13 | type
14 | TfrmOptions = class(TForm)
15 | sPanel1: TsPanel;
16 | sTabControl1: TsTabControl;
17 | sCharImageList1: TsCharImageList;
18 | btnClose: TsBitBtn;
19 | ckStarMinimized: TsCheckBox;
20 | ckAutoUpdCheck: TsCheckBox;
21 | tbInterval: TsTrackBar;
22 | ckStartup: TsCheckBox;
23 | sLabel1: TsLabel;
24 | sButton1: TsButton;
25 | sLabel2: TsLabel;
26 | pnlFrequency: TsPanel;
27 | lblMin: TsLabel;
28 | procedure btnCloseClick(Sender: TObject);
29 | procedure FormShow(Sender: TObject);
30 | procedure ckStartupMouseUp(Sender: TObject; Button: TMouseButton;
31 | Shift: TShiftState; X, Y: Integer);
32 | procedure tbIntervalChange(Sender: TObject);
33 | procedure ckAutoUpdCheckMouseUp(Sender: TObject; Button: TMouseButton;
34 | Shift: TShiftState; X, Y: Integer);
35 | procedure sButton1Click(Sender: TObject);
36 | private
37 | { Private declarations }
38 | procedure loadParams;
39 | procedure saveParams;
40 | public
41 | { Public declarations }
42 | end;
43 |
44 | var
45 | frmOptions: TfrmOptions;
46 |
47 | implementation
48 |
49 | {$R *.dfm}
50 |
51 | procedure TfrmOptions.btnCloseClick(Sender: TObject);
52 | begin
53 | saveParams;
54 | ModalResult := mrOk;
55 | end;
56 |
57 | procedure TfrmOptions.ckAutoUpdCheckMouseUp(Sender: TObject;
58 | Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
59 | begin
60 | //
61 | pnlFrequency.Visible := ckAutoUpdCheck.Checked;
62 | end;
63 |
64 | procedure TfrmOptions.ckStartupMouseUp(Sender: TObject; Button: TMouseButton;
65 | Shift: TShiftState; X, Y: Integer);
66 | var
67 | sPath: String;
68 | begin
69 | if ckStartup.Checked then
70 | begin
71 | sPath := IncludeTrailingBackslash(TPath.GetDirectoryName(ParamStr(0)));
72 | RunOnStartup('Winget Helper', TPath.Combine(sPath,
73 | 'wingethelper.exe'), False);
74 | end
75 | else
76 | begin
77 | RemoveOnStartup('Winget Helper');
78 | end;
79 |
80 | end;
81 |
82 | procedure TfrmOptions.FormShow(Sender: TObject);
83 | begin
84 | //
85 | loadParams;
86 | end;
87 |
88 | procedure TfrmOptions.loadParams;
89 | begin
90 | ckStartup.Checked := pPArams.RunOnStartup;
91 | ckStarMinimized.Checked := pParams.StartMinimized;
92 | tbInterval.Position := pParams.CheckUpdatesInterval;
93 | ckAutoUpdCheck.Checked := pParams.AutoCheckUpdates;
94 |
95 | end;
96 |
97 | procedure TfrmOptions.saveParams;
98 | begin
99 | pPArams.SetParamb('RunOnStartUp', ckStartup.Checked);
100 | pPArams.SetParamb('StartMinimized', ckStarMinimized.Checked);
101 | pPArams.saveParams;
102 | end;
103 |
104 | procedure TfrmOptions.sButton1Click(Sender: TObject);
105 | begin
106 | ModalResult := mrCancel;
107 | end;
108 |
109 | procedure TfrmOptions.tbIntervalChange(Sender: TObject);
110 | begin
111 | lblMin.Caption := IntToStr(tbInterval.Position);
112 | end;
113 |
114 | end.
115 |
--------------------------------------------------------------------------------
/uRunWinget.dfm:
--------------------------------------------------------------------------------
1 | object fRunWinget: TfRunWinget
2 | Left = 0
3 | Top = 0
4 | Caption = 'Monitor'
5 | ClientHeight = 254
6 | ClientWidth = 697
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -12
11 | Font.Name = 'Segoe UI'
12 | Font.Style = []
13 | Position = poScreenCenter
14 | OnCreate = FormCreate
15 | OnShow = FormShow
16 | TextHeight = 15
17 | object pnltop: TPanel
18 | Left = 0
19 | Top = 0
20 | Width = 697
21 | Height = 41
22 | Align = alTop
23 | BevelOuter = bvNone
24 | Caption = 'pnltop'
25 | ShowCaption = False
26 | TabOrder = 0
27 | ExplicitWidth = 693
28 | object AI1: TActivityIndicator
29 | Left = 665
30 | Top = 3
31 | IndicatorColor = aicWhite
32 | IndicatorType = aitSectorRing
33 | end
34 | end
35 | object mmo1: TsMemo
36 | Left = 0
37 | Top = 41
38 | Width = 697
39 | Height = 213
40 | Align = alClient
41 | TabOrder = 1
42 | ExplicitWidth = 693
43 | ExplicitHeight = 212
44 | end
45 | object dcRun: TDosCommand
46 | InputToOutput = False
47 | MaxTimeAfterBeginning = 0
48 | MaxTimeAfterLastOutput = 0
49 | OnCharDecoding = dcRunCharDecoding
50 | OnNewLine = dcRunNewLine
51 | OnTerminated = dcRunTerminated
52 | Left = 496
53 | Top = 104
54 | end
55 | end
56 |
--------------------------------------------------------------------------------
/uRunWinget.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uRunWinget.pas
--------------------------------------------------------------------------------
/udlgClose.dfm:
--------------------------------------------------------------------------------
1 | object frmCloseDlg: TfrmCloseDlg
2 | Left = 0
3 | Top = 0
4 | BorderStyle = bsNone
5 | Caption = 'frmCloseDlg'
6 | ClientHeight = 127
7 | ClientWidth = 443
8 | Color = clBtnFace
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -12
12 | Font.Name = 'Segoe UI'
13 | Font.Style = []
14 | Position = poScreenCenter
15 | TextHeight = 15
16 | object sLabelFX1: TsLabelFX
17 | Left = 8
18 | Top = 24
19 | Width = 443
20 | Height = 23
21 | Caption = 'Do you want to minimize the application tu run in background ?'
22 | ParentFont = False
23 | Font.Charset = DEFAULT_CHARSET
24 | Font.Color = clWindowText
25 | Font.Height = -16
26 | Font.Name = 'Segoe UI'
27 | Font.Style = []
28 | Angle = 0
29 | Shadow.OffsetKeeper.LeftTop = 0
30 | Shadow.OffsetKeeper.RightBottom = 2
31 | end
32 | object sPanel1: TsPanel
33 | Left = 0
34 | Top = 86
35 | Width = 443
36 | Height = 41
37 | Align = alBottom
38 | Caption = 'sPanel1'
39 | Padding.Left = 3
40 | Padding.Top = 3
41 | Padding.Right = 3
42 | Padding.Bottom = 3
43 | ShowCaption = False
44 | TabOrder = 0
45 | ExplicitTop = 192
46 | object sSpeedButton1: TsSpeedButton
47 | Left = 207
48 | Top = 4
49 | Width = 232
50 | Height = 33
51 | Align = alRight
52 | Caption = 'Yes'
53 | ImageIndex = 0
54 | Images = sCharImageList1
55 | Spacing = 25
56 | OnClick = sSpeedButton1Click
57 | ExplicitLeft = 256
58 | ExplicitTop = 1
59 | ExplicitHeight = 39
60 | end
61 | object sSpeedButton2: TsSpeedButton
62 | Left = 4
63 | Top = 4
64 | Width = 203
65 | Height = 33
66 | Align = alClient
67 | Caption = 'No'
68 | ImageIndex = 1
69 | Images = sCharImageList1
70 | Spacing = 25
71 | OnClick = sSpeedButton2Click
72 | ExplicitLeft = -5
73 | ExplicitTop = 1
74 | ExplicitWidth = 209
75 | ExplicitHeight = 39
76 | end
77 | end
78 | object sCharImageList1: TsCharImageList
79 | EmbeddedFonts = <
80 | item
81 | FontName = 'FontAwesome'
82 | FontData = {}
83 | end>
84 | Items = <
85 | item
86 | Char = 61533
87 | Color = clLime
88 | end
89 | item
90 | Char = 61532
91 | Color = clRed
92 | end>
93 | Left = 336
94 | Top = 56
95 | Bitmap = {}
96 | end
97 | end
98 |
--------------------------------------------------------------------------------
/udlgClose.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/udlgClose.pas
--------------------------------------------------------------------------------
/utestcomponents.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 0
3 | Top = 0
4 | Caption = 'Form1'
5 | ClientHeight = 441
6 | ClientWidth = 624
7 | Color = clBtnFace
8 | Font.Charset = ANSI_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -19
11 | Font.Name = 'Fixedsys'
12 | Font.Style = []
13 | TextHeight = 15
14 | object ygtwnbtnYGTwinButton1: tYGTwinButton
15 | Left = 256
16 | Top = 136
17 | Width = 129
18 | Height = 41
19 | Caption = 'Search'
20 | KeyCaption = 'F1'
21 | Pen.Color = clBtnHighlight
22 | Pen.Width = 3
23 | Colors.EnterStart = 6118749
24 | Colors.LeaveStart = clWhite
25 | Colors.DownStart = clBlack
26 | Colors.EnterEnd = clWhite
27 | Colors.LeaveEnd = 6118749
28 | Colors.DownEnd = clWhite
29 | TextColors.EnterStart = clWhite
30 | TextColors.LeaveStart = clBlack
31 | TextColors.DownStart = clBlack
32 | TextColors.EnterEnd = clBlack
33 | TextColors.LeaveEnd = clBlack
34 | TextColors.DownEnd = clBlack
35 | Font.Charset = DEFAULT_CHARSET
36 | Font.Color = clWindowText
37 | Font.Height = -16
38 | Font.Name = 'Segoe UI Light'
39 | Font.Style = []
40 | State = bsLeave
41 | end
42 | object jvhtbtn1: TJvHTButton
43 | Left = 224
44 | Top = 280
45 | Width = 137
46 | Height = 73
47 | Caption = 'jvhtbtn1'
48 | TabOrder = 1
49 | SuperSubScriptRatio = 0.666666666666666600
50 | end
51 | end
52 |
--------------------------------------------------------------------------------
/utestcomponents.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/utestcomponents.pas
--------------------------------------------------------------------------------