├── .gitignore ├── LICENSE ├── README.md ├── images ├── Broom_96px.png ├── Bug_64px.png ├── Copy_96px.png ├── Data Transfer_96px.png ├── DelphiLibraryHelper.ico ├── Export_96px.png ├── Find and Replace_96px.png ├── Import_96px.png ├── Merge Vertical_64px.png ├── Ok_64px.png ├── Search_96px.png ├── Settings_64px.png ├── Windows Client_96px.png ├── about_96px.png ├── add_folder_96px.png ├── book_96px.png ├── cancel_96px.png ├── delete_sign_96px.png ├── exit_sign_96px.png ├── library_96px.png ├── minus_96px.png ├── opened_folder_96px.png ├── plus_96px.png ├── save_96px.png └── synchronize_96px.png ├── installer ├── DelphiLibraryHelper.iss └── scripts │ ├── closeapplications.iss │ └── uninstall.iss ├── resources ├── client │ └── all │ │ └── templates │ │ ├── delphi-defaults.dlht │ │ ├── example.dlht │ │ ├── jedi.dlht │ │ └── zeos.dlht ├── common │ ├── all │ │ ├── Delphi Library Helper - License.rtf │ │ ├── Delphi Library Helper - Release Notes.rtf │ │ ├── Delphi Library Helper - Support Details.rtf │ │ └── DelphiLibraryHelper.ico │ ├── win32 │ │ └── debug │ │ │ └── FastMM_FullDebugMode.dll │ └── win64 │ │ └── debug │ │ └── FastMM_FullDebugMode64.dll ├── copy-library.cmd ├── copy-resources.cmd └── post-build-sample.bat └── source ├── DelphiLibraryHelper.dpr ├── DelphiLibraryHelper.dproj ├── DelphiLibraryHelper.dproj.local ├── DelphiLibraryHelper.dsk ├── DelphiLibraryHelper.identcache ├── DelphiLibraryHelper.res ├── DelphiLibraryHelper.stat ├── DelphiLibraryHelper.~dsk ├── DelphiLibraryHelper_Icon.ico ├── FileVersionInformationU.pas ├── LibraryHelperU.pas ├── LibraryPathsU.pas ├── LoggingU.pas ├── __history ├── DelphiLibraryHelper.dpr.~1~ ├── DelphiLibraryHelper.dpr.~2~ ├── LibraryHelperU.pas.~113~ ├── LibraryHelperU.pas.~117~ ├── LibraryHelperU.pas.~118~ ├── LibraryHelperU.pas.~119~ ├── LibraryHelperU.pas.~120~ ├── LibraryHelperU.pas.~121~ ├── LibraryHelperU.pas.~122~ ├── LibraryHelperU.pas.~123~ ├── LibraryHelperU.pas.~124~ ├── LibraryHelperU.pas.~125~ ├── LibraryPathsU.pas.~13~ ├── LibraryPathsU.pas.~14~ ├── LibraryPathsU.pas.~15~ ├── LibraryPathsU.pas.~16~ ├── LibraryPathsU.pas.~17~ ├── LibraryPathsU.pas.~18~ ├── LibraryPathsU.pas.~19~ ├── LibraryPathsU.pas.~20~ ├── LibraryPathsU.pas.~21~ ├── LibraryPathsU.pas.~22~ ├── dmDelphiLibraryHelperU.dfm.~1~ ├── frmAboutU.dfm.~1~ ├── frmAboutU.dfm.~2~ ├── frmAddEnvironmentVariableU.dfm.~1~ ├── frmAddLibraryPathU.dfm.~1~ ├── frmAddLibraryPathU.dfm.~2~ ├── frmAddLibraryPathU.dfm.~3~ ├── frmDelphiLibraryHelperU.dfm.~1~ ├── frmDelphiLibraryHelperU.dfm.~2~ ├── frmDelphiLibraryHelperU.dfm.~3~ ├── frmDelphiLibraryHelperU.dfm.~4~ ├── frmDelphiLibraryHelperU.dfm.~5~ ├── frmDelphiLibraryHelperU.dfm.~6~ ├── frmDelphiLibraryHelperU.pas.~10~ ├── frmDelphiLibraryHelperU.pas.~11~ ├── frmDelphiLibraryHelperU.pas.~12~ ├── frmDelphiLibraryHelperU.pas.~13~ ├── frmDelphiLibraryHelperU.pas.~14~ ├── frmDelphiLibraryHelperU.pas.~15~ ├── frmDelphiLibraryHelperU.pas.~6~ ├── frmDelphiLibraryHelperU.pas.~7~ ├── frmDelphiLibraryHelperU.pas.~8~ ├── frmDelphiLibraryHelperU.pas.~9~ ├── frmFindReplaceU.dfm.~1~ ├── frmLoggingU.dfm.~1~ ├── frmSearchU.dfm.~1~ ├── version.rc.~1~ ├── version.rc.~2~ ├── version.rc.~3~ ├── version.rc.~4~ ├── version.rc.~5~ └── version.rc.~6~ ├── dmDelphiLibraryHelperU.dfm ├── dmDelphiLibraryHelperU.pas ├── frmAboutU.dfm ├── frmAboutU.pas ├── frmAddEnvironmentVariableU.dfm ├── frmAddEnvironmentVariableU.pas ├── frmAddLibraryPathU.dfm ├── frmAddLibraryPathU.pas ├── frmDelphiLibraryHelperU.dfm ├── frmDelphiLibraryHelperU.pas ├── frmFindReplaceU.dfm ├── frmFindReplaceU.pas ├── frmLoggingU.dfm ├── frmLoggingU.pas ├── frmProgressU.dfm ├── frmProgressU.pas ├── frmSearchU.dfm ├── frmSearchU.pas ├── post-build.cmd ├── version.rc └── version.res /.gitignore: -------------------------------------------------------------------------------- 1 | /windows/source/__recovery 2 | /windows/source/__history 3 | /installer/output 4 | /windows/bin 5 | /windows/dcu 6 | /windows/source/*.~dsk 7 | /build 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # delphi-library-helper 2 | 3 | Delphi Library Helper 4 | - 5 | 6 | Tool to assist Delphi developers configuring library Browse, Search and Debug DCU paths. 7 | 8 | Installation Downloads 9 | - 10 | [http://www.littleearthsolutions.net/?page_id=99](http://www.littleearthsolutions.net/?page_id=99) 11 | -------------------------------------------------------------------------------- /images/Broom_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Broom_96px.png -------------------------------------------------------------------------------- /images/Bug_64px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Bug_64px.png -------------------------------------------------------------------------------- /images/Copy_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Copy_96px.png -------------------------------------------------------------------------------- /images/Data Transfer_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Data Transfer_96px.png -------------------------------------------------------------------------------- /images/DelphiLibraryHelper.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/DelphiLibraryHelper.ico -------------------------------------------------------------------------------- /images/Export_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Export_96px.png -------------------------------------------------------------------------------- /images/Find and Replace_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Find and Replace_96px.png -------------------------------------------------------------------------------- /images/Import_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Import_96px.png -------------------------------------------------------------------------------- /images/Merge Vertical_64px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Merge Vertical_64px.png -------------------------------------------------------------------------------- /images/Ok_64px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Ok_64px.png -------------------------------------------------------------------------------- /images/Search_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Search_96px.png -------------------------------------------------------------------------------- /images/Settings_64px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Settings_64px.png -------------------------------------------------------------------------------- /images/Windows Client_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/Windows Client_96px.png -------------------------------------------------------------------------------- /images/about_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/about_96px.png -------------------------------------------------------------------------------- /images/add_folder_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/add_folder_96px.png -------------------------------------------------------------------------------- /images/book_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/book_96px.png -------------------------------------------------------------------------------- /images/cancel_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/cancel_96px.png -------------------------------------------------------------------------------- /images/delete_sign_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/delete_sign_96px.png -------------------------------------------------------------------------------- /images/exit_sign_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/exit_sign_96px.png -------------------------------------------------------------------------------- /images/library_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/library_96px.png -------------------------------------------------------------------------------- /images/minus_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/minus_96px.png -------------------------------------------------------------------------------- /images/opened_folder_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/opened_folder_96px.png -------------------------------------------------------------------------------- /images/plus_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/plus_96px.png -------------------------------------------------------------------------------- /images/save_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/save_96px.png -------------------------------------------------------------------------------- /images/synchronize_96px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/images/synchronize_96px.png -------------------------------------------------------------------------------- /installer/DelphiLibraryHelper.iss: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; Delphi Library Helper - Installation Script 3 | ; Author: Tristan Marlow 4 | ; Purpose: Install application 5 | ; 6 | ; ---------------------------------------------------------------------------- 7 | ; Copyright (c) 2016 Tristan David Marlow 8 | ; Copyright (c) 2016 Little Earth Solutions 9 | ; All Rights Reserved 10 | ; 11 | ; This product is protected by copyright and distributed under 12 | ; licenses restricting copying, distribution and decompilation 13 | ; 14 | ; ---------------------------------------------------------------------------- 15 | ; 16 | ; History: 14/02/2011 - First Release. 17 | ; 18 | ;----------------------------------------------------------------------------- 19 | #define ConstAppVersion GetFileVersion("..\build\bin\win32\release\DelphiLibraryHelper.exe") ; define variable 20 | #define ConstAppName "Delphi Library Helper" 21 | #define ConstAppMutex "Delphi Library Helper" 22 | #define ConstAppDescription "Delphi Library Helper" 23 | #define ConstAppPublisher "Little Earth Solutions" 24 | #define ConstAppCopyright "Copyright (C) 2022 Little Earth Solutions" 25 | #define ConstAppURL "http://www.littleearthsolutions.net/" 26 | #define ConstAppExeName "DelphiLibraryHelper.exe" 27 | 28 | [Setup] 29 | AppId={{A74907F6-9360-4932-9504-2A7A12437B9F} 30 | AppMutex={#ConstAppMutex} 31 | AppName={#ConstAppName} 32 | AppVersion={#ConstAppName} {#ConstAppVersion} 33 | AppPublisher={#ConstAppPublisher} 34 | AppPublisherURL={#ConstAppURL} 35 | AppSupportURL={#ConstAppURL} 36 | AppUpdatesURL={#ConstAppURL} 37 | AppCopyright={#ConstAppCopyright} 38 | VersionInfoCompany={#ConstAppPublisher} 39 | VersionInfoDescription={#ConstAppName} 40 | VersionInfoCopyright={#ConstAppCopyright} 41 | VersionInfoVersion={#ConstAppVersion} 42 | VersionInfoTextVersion={#ConstAppVersion} 43 | OutputDir=..\build\installer\ 44 | OutputBaseFilename=DelphiLibraryHelper-Setup-{#ConstAppVersion} 45 | UninstallDisplayName={#ConstAppName} 46 | DefaultDirName={pf}\{#ConstAppPublisher}\{#ConstAppName} 47 | DefaultGroupName={#ConstAppPublisher}\{#ConstAppName} 48 | AllowNoIcons=true 49 | MinVersion=0,6.1.7600 50 | InfoBeforeFile=..\resources\common\all\{#ConstAppName} - Release Notes.rtf 51 | LicenseFile=..\resources\common\all\{#ConstAppName} - License.rtf 52 | UninstallDisplayIcon={app}\{#ConstAppExeName} 53 | InternalCompressLevel=ultra 54 | Compression=lzma/ultra 55 | ChangesAssociations=yes 56 | 57 | [Types] 58 | Name: typical; Description: Typical Installation 59 | Name: custom; Description: Custom Installation; Flags: iscustom 60 | 61 | [Components] 62 | Name: code; Description: Source Code; Types: custom 63 | Name: program; Description: Program Files; Types: typical custom 64 | 65 | [Tasks] 66 | Name: "delphitools"; Description: "Add to delphi tools menu"; Components: program 67 | 68 | [Files] 69 | Source: "..\build\bin\win32\release\{#ConstAppExeName}"; DestDir: "{app}"; Flags: promptifolder replacesameversion; Components: program 70 | Source: "..\build\bin\win32\release\*"; DestDir: "{app}"; Flags: promptifolder replacesameversion; Components: program 71 | ; Source Code Components 72 | Source: "..\resources\*.*"; DestDir: "{app}\code\resources\"; Components: code 73 | Source: "..\installer\*.*"; DestDir: "{app}\code\installer\"; Components: code 74 | Source: "..\images\*.*"; DestDir: "{app}\code\images\"; Flags: recursesubdirs; Components: code 75 | Source: "..\source\*.pas"; DestDir: "{app}\code\source\"; Flags: recursesubdirs; Components: code 76 | Source: "..\source\*.dfm"; DestDir: "{app}\code\source\"; Flags: recursesubdirs; Components: code 77 | Source: "..\source\*.dpr"; DestDir: "{app}\code\source\"; Flags: recursesubdirs; Components: code 78 | Source: "..\source\*.res"; DestDir: "{app}\code\source\"; Flags: recursesubdirs; Components: code 79 | Source: "..\source\*.dproj"; DestDir: "{app}\code\source\"; Flags: recursesubdirs; Components: code 80 | 81 | [Icons] 82 | ; Program Components 83 | Name: {group}\{#ConstAppName}; Filename: {app}\{#ConstAppExeName}; WorkingDir: {app}; Components: program 84 | ; Source Code Components 85 | Name: {group}\{#ConstAppName} Source Code; Filename: {app}\Source; Flags: foldershortcut; Components: code; Tasks: 86 | 87 | [Run] 88 | Filename: "{app}\{#ConstAppExeName}"; WorkingDir: "{app}"; Flags: nowait postinstall runasoriginaluser; Description: "Launch {#ConstAppName}" 89 | 90 | [Registry] 91 | ; Add Delphi Library Helper (Just do most recent version) 92 | Root: "HKCU"; Subkey: "Software\Embarcadero\BDS\22.0\Transfer\Delphi Library Helper"; ValueType: string; ValueName: "Params"; Tasks: delphitools 93 | Root: "HKCU"; Subkey: "Software\Embarcadero\BDS\22.0\Transfer\Delphi Library Helper"; ValueType: string; ValueName: "Path"; ValueData: "{app}\DelphiLibraryHelper.exe"; Tasks: delphitools 94 | Root: "HKCU"; Subkey: "Software\Embarcadero\BDS\22.0\Transfer\Delphi Library Helper"; ValueType: string; ValueName: "Title"; ValueData: "Delphi Library Helper"; Tasks: delphitools 95 | Root: "HKCU"; Subkey: "Software\Embarcadero\BDS\22.0\Transfer\Delphi Library Helper"; ValueType: string; ValueName: "WorkingDir"; ValueData: "{app}\DelphiLibraryHelper"; Tasks: delphitools 96 | ; File association 97 | Root: HKCR; Subkey: ".dlht"; ValueData: "{#ConstAppName}";Flags: uninsdeletevalue; ValueType: string; ValueName: "" 98 | Root: HKCR; Subkey: "{#ConstAppName}"; ValueData: "Program {#ConstAppName}";Flags: uninsdeletekey; ValueType: string; ValueName: "" 99 | Root: HKCR; Subkey: "{#ConstAppName}\DefaultIcon"; ValueData: "{app}\{#ConstAppExeName},0"; ValueType: string; ValueName: "" 100 | Root: HKCR; Subkey: "{#ConstAppName}\shell\open\command";ValueData: """{app}\{#ConstAppExeName}"" ""%1""";ValueType: string;ValueName: "" -------------------------------------------------------------------------------- /installer/scripts/closeapplications.iss: -------------------------------------------------------------------------------- 1 | const 2 | WM_CLOSE = 16; 3 | 4 | procedure TaskKill(AProcessName : string); 5 | var 6 | ResultCode : integer; 7 | begin 8 | Exec('TASKKILL.EXE', '/IM:' + AProcessName + ' /F', '', SW_HIDE, 9 | ewWaitUntilTerminated, ResultCode); 10 | end; 11 | 12 | function TaskClose(AClassName : string; AFriendlyName : string) : Boolean; 13 | var winHwnd: longint; 14 | retVal : boolean; 15 | strProg: string; 16 | begin 17 | Result := true; 18 | strProg := AClassName; 19 | Repeat 20 | try 21 | winHwnd := FindWindowByClassName(strProg); 22 | Log('winHwnd: ' + strProg + inttostr(winHwnd)); 23 | if winHwnd <> 0 then 24 | begin 25 | if MsgBox(AFriendlyName + ' is running, close and continue with installation?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then 26 | begin 27 | retVal:=postmessage(winHwnd,WM_CLOSE,0,0); 28 | Sleep(5000); 29 | end else 30 | begin 31 | Result := False; 32 | end; 33 | end; 34 | except 35 | ShowExceptionMessage; 36 | Result := False; 37 | end; 38 | Until (Result = False) or (winHwnd = 0); 39 | end; -------------------------------------------------------------------------------- /installer/scripts/uninstall.iss: -------------------------------------------------------------------------------- 1 | function GetUninstallString(): String; 2 | var 3 | sUnInstPath: String; 4 | sUnInstallString: String; 5 | begin 6 | sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#ConstAppID}_is1'); 7 | sUnInstallString := ''; 8 | if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then 9 | RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString); 10 | if sUnInstallString = '' then 11 | begin 12 | sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#ConstAppID}-{#ConstAppUninstallSuffix}_is1'); 13 | if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then 14 | RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString); 15 | end; 16 | Result := sUnInstallString; 17 | end; 18 | 19 | 20 | function IsUpgrade(): Boolean; 21 | begin 22 | Result := (GetUninstallString() <> ''); 23 | end; 24 | 25 | function UnInstallOldVersion(): Integer; 26 | var 27 | sUnInstallString: String; 28 | iResultCode: Integer; 29 | begin 30 | // Return Values: 31 | // 1 - uninstall string is empty 32 | // 2 - error executing the UnInstallString 33 | // 3 - successfully executed the UnInstallString 34 | 35 | // default return value 36 | Result := 0; 37 | 38 | // get the uninstall string of the old app 39 | sUnInstallString := GetUninstallString(); 40 | if sUnInstallString <> '' then begin 41 | sUnInstallString := RemoveQuotes(sUnInstallString); 42 | if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then 43 | Result := 3 44 | else 45 | Result := 2; 46 | end else 47 | Result := 1; 48 | end; -------------------------------------------------------------------------------- /resources/client/all/templates/example.dlht: -------------------------------------------------------------------------------- 1 | [profile] 2 | ; Versions before Berlin are not supported 3 | 23=False 4 | 22=False 5 | 21=False 6 | 20=False 7 | 19=False 8 | 18=False 9 | 17=False 10 | 16=False 11 | 15=False 12 | 14=False 13 | 12=False 14 | 11=False 15 | 10=False 16 | 9=False 17 | 8=False 18 | 7=False 19 | 6=False 20 | 5=False 21 | 4=False 22 | 3=False 23 | 2=False 24 | 1=False 25 | 26 | 27 | [common] 28 | $(DELPHI_COMPONENTS)\mycomponents\common=BROWSE 29 | 30 | 31 | [common-fmx] 32 | $(DELPHI_COMPONENTS)\mycomponents\fmx=BROWSE 33 | $(DELPHI_COMPONENTS)\mycomponents\fmx\forms=SEARCH 34 | 35 | [common-vcl] 36 | $(DELPHI_COMPONENTS)\mycomponents\vcl=BROWSE 37 | $(DELPHI_COMPONENTS)\mycomponents\vcl\forms=SEARCH 38 | 39 | [win32] 40 | $(DELPHI_COMPONENTS)\mycomponents\build\dcu\win32\=SEARCH 41 | $(DELPHI_COMPONENTS)\mycomponents\build\dcu\win32\debug=DEBUGDCU 42 | 43 | [win64] 44 | $(DELPHI_COMPONENTS)\mycomponents\build\dcu\win64\=SEARCH 45 | $(DELPHI_COMPONENTS)\mycomponents\build\dcu\win64\debug=DEBUGDCU 46 | 47 | [osx32] 48 | 49 | [android] 50 | 51 | [ios32] 52 | 53 | [io64] 54 | 55 | [iosimulator] 56 | 57 | 58 | -------------------------------------------------------------------------------- /resources/client/all/templates/jedi.dlht: -------------------------------------------------------------------------------- 1 | [common] 2 | 3 | 4 | [common-fmx] 5 | 6 | 7 | [common-vcl] 8 | $(DELPHI_COMPONENTS)\JEDI\jcl\jcl\source\include=SEARCH 9 | $(DELPHI_COMPONENTS)\JEDI\jvcl\jvcl\common=SEARCH 10 | $(DELPHI_COMPONENTS)\JEDI\jvcl\jvcl\Resources=SEARCH 11 | $(DELPHI_COMPONENTS)\JEDI\jwapi\Common=SEARCH 12 | $(DELPHI_COMPONENTS)\JEDI\jwscl\source=SEARCH 13 | $(DELPHI_COMPONENTS)\JEDI\jwapi\Win32API=SEARCH 14 | $(DELPHI_COMPONENTS)\JEDI\jwapi\Win32API\jwaWindows=SEARCH 15 | 16 | [win32] 17 | 18 | [win64] 19 | 20 | [osx32] 21 | 22 | [android] 23 | 24 | [ios32] 25 | 26 | [io64] 27 | 28 | [iosimulator] -------------------------------------------------------------------------------- /resources/client/all/templates/zeos.dlht: -------------------------------------------------------------------------------- 1 | [common] 2 | 3 | 4 | [common-fmx] 5 | 6 | 7 | [common-vcl] 8 | $(DELPHI_COMPONENTS)\zeosdbo\src=BROWSE 9 | $(DELPHI_COMPONENTS)\zeosdbo\src\component=BROWSE 10 | $(DELPHI_COMPONENTS)\zeosdbo\src\core=BROWSE 11 | $(DELPHI_COMPONENTS)\zeosdbo\src\dbc=BROWSE 12 | $(DELPHI_COMPONENTS)\zeosdbo\src\parsesql=BROWSE 13 | $(DELPHI_COMPONENTS)\zeosdbo\src\plain=BROWSE 14 | 15 | [win32] 16 | 17 | [win64] 18 | 19 | [osx32] 20 | 21 | [android] 22 | 23 | [ios32] 24 | 25 | [io64] 26 | 27 | [iosimulator] -------------------------------------------------------------------------------- /resources/common/all/DelphiLibraryHelper.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/resources/common/all/DelphiLibraryHelper.ico -------------------------------------------------------------------------------- /resources/common/win32/debug/FastMM_FullDebugMode.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/resources/common/win32/debug/FastMM_FullDebugMode.dll -------------------------------------------------------------------------------- /resources/common/win64/debug/FastMM_FullDebugMode64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/resources/common/win64/debug/FastMM_FullDebugMode64.dll -------------------------------------------------------------------------------- /resources/copy-library.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | if [%1]==[] goto usage 3 | if [%2]==[] goto usage 4 | 5 | set library=%1 6 | set folder=%2 7 | set source=%~dp0 8 | 9 | xcopy "%source%libraries\%library%\%platform%\*" %folder% /E /C /Y 10 | xcopy "%source%libraries\%library%\all\*" %folder% /E /C /Y 11 | 12 | goto exit 13 | 14 | :usage 15 | echo. 16 | echo Incorrect parameters 17 | echo copy-library.cmd libname destination 18 | echo eg mysql "C:\My Folder" 19 | goto error 20 | 21 | 22 | :error 23 | EXIT /B 1 24 | 25 | :exit -------------------------------------------------------------------------------- /resources/copy-resources.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | if [%1]==[] goto usage 3 | if [%2]==[] goto usage 4 | if [%3]==[] goto usage 5 | if [%4]==[] goto usage 6 | 7 | set folder=%2 8 | set type=%1 9 | set platform=%3 10 | set config=%4 11 | set source=%~dp0 12 | 13 | echo xcopy %source%%type%\all\* %folder% /E /C /Y 14 | xcopy "%source%%type%\all\*" %folder% /E /C /Y 15 | xcopy "%source%%type%\%platform%\all\*" %folder% /E /C /Y 16 | xcopy "%source%%type%\%platform%\%config%\*" %folder% /E /C /Y 17 | 18 | xcopy "%source%common\%platform%\all\*" %folder% /E /C /Y 19 | xcopy "%source%common\%platform%\%config%\*" %folder% /E /C /Y 20 | xcopy "%source%common\all\*" %folder% /E /C /Y 21 | 22 | 23 | goto exit 24 | 25 | :usage 26 | echo. 27 | echo Incorrect parameters 28 | echo post-resources.cmd type destination platform config 29 | echo eg Client "C:\My Folder" Win32 Debug 30 | goto error 31 | 32 | :error 33 | EXIT /B 1 34 | 35 | :exit -------------------------------------------------------------------------------- /resources/post-build-sample.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if [%1]==[] goto usage 3 | if [%2]==[] goto usage 4 | if [%3]==[] goto usage 5 | 6 | set folder=%1 7 | set platform=%2 8 | set config=%3 9 | 10 | call ..\..\..\resources\copy-resources.cmd client %folder% %platform% %config% 11 | call ..\..\..\resources\copy-library.cmd mysql %folder% 12 | call ..\..\..\resources\copy-library.cmd 7zip %folder% 13 | call ..\..\..\resources\copy-library.cmd hunspell %folder% 14 | call ..\..\..\resources\copy-library.cmd freeimage %folder% 15 | goto exit 16 | 17 | :usage 18 | echo. 19 | echo Incorrect parameters 20 | echo Configure Delphi Post Build Events 21 | echo post-build.cmd "$(OutputDir)" $(Platform) $(Config) 22 | goto error 23 | 24 | 25 | :error 26 | EXIT /B 1 27 | 28 | :exit -------------------------------------------------------------------------------- /source/DelphiLibraryHelper.dpr: -------------------------------------------------------------------------------- 1 | program DelphiLibraryHelper; 2 | 3 | {$R 'version.res' 'version.rc'} 4 | 5 | uses 6 | Vcl.Forms, 7 | Windows, 8 | Controls, 9 | Dialogs, 10 | SysUtils, 11 | Printers, 12 | System.UITypes, 13 | frmDelphiLibraryHelperU in 'frmDelphiLibraryHelperU.pas' {frmDelphiLibraryHelper}, 14 | LibraryPathsU in 'LibraryPathsU.pas', 15 | LibraryHelperU in 'LibraryHelperU.pas', 16 | frmAddLibraryPathU in 'frmAddLibraryPathU.pas' {frmAddLibraryPath}, 17 | frmAddEnvironmentVariableU in 'frmAddEnvironmentVariableU.pas' {frmAddEnvironmentVariable}, 18 | frmAboutU in 'frmAboutU.pas' {frmAbout}, 19 | FileVersionInformationU in 'FileVersionInformationU.pas', 20 | frmFindReplaceU in 'frmFindReplaceU.pas' {frmFindReplace}, 21 | frmSearchU in 'frmSearchU.pas' {frmSearch}, 22 | frmProgressU in 'frmProgressU.pas' {frmProgress}, 23 | Vcl.Themes, 24 | Vcl.Styles, 25 | dmDelphiLibraryHelperU in 'dmDelphiLibraryHelperU.pas' {dmDelphiLibraryHelper: TDataModule}, 26 | LoggingU in 'LoggingU.pas', 27 | frmLoggingU in 'frmLoggingU.pas' {frmLogging}; 28 | 29 | {$R *.res} 30 | 31 | function IsFontInstalled(const AFontName: string): boolean; 32 | begin 33 | Result := Screen.Fonts.IndexOf(AFontName) <> -1; 34 | end; 35 | 36 | begin 37 | Application.Initialize; 38 | if CheckWin32Version(6) then 39 | begin 40 | 41 | if IsFontInstalled('Segoe UI') then 42 | begin 43 | Application.DefaultFont.Name := 'Segoe UI'; 44 | Screen.MessageFont.Name := 'Segoe UI'; 45 | end; 46 | // 47 | if IsFontInstalled('Roboto Lt') then 48 | begin 49 | Application.DefaultFont.Name := 'Roboto Lt'; 50 | Screen.MessageFont.Name := 'Roboto Lt'; 51 | end; 52 | 53 | if IsFontInstalled('Roboto Light') then 54 | begin 55 | Application.DefaultFont.Name := 'Roboto Light'; 56 | Screen.MessageFont.Name := 'Roboto Light'; 57 | end; 58 | end; 59 | 60 | Application.MainFormOnTaskbar := True; 61 | Application.Title := 'Delphi Library Helper'; 62 | Application.CreateForm(TfrmDelphiLibraryHelper, frmDelphiLibraryHelper); 63 | Application.CreateForm(TdmDelphiLibraryHelper, dmDelphiLibraryHelper); 64 | Application.CreateForm(TfrmLogging, frmLogging); 65 | Application.Run; 66 | 67 | end. 68 | -------------------------------------------------------------------------------- /source/DelphiLibraryHelper.dproj.local: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2016/08/08 20:43:05.000.564,=C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\Unit1.pas 5 | 2016/08/08 20:43:24.000.260,C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\frmAddEnvironmentVariableU.dfm=C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\Unit1.dfm 6 | 2016/08/08 20:43:24.000.260,C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\frmAddEnvironmentVariableU.pas=C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\Unit1.pas 7 | 2016/08/08 21:59:22.000.123,=C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\ABOUT.pas 8 | 2016/08/08 21:59:34.000.965,C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\frmAboutU.dfm=C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\ABOUT.dfm 9 | 2016/08/08 21:59:34.000.965,C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\frmAboutU.pas=C:\Development\Little Earth Solutions\DelphiLibraryHelper\source\ABOUT.pas 10 | 2016/08/08 23:34:22.000.211,=C:\Development\Little Earth Solutions\delphi-library-helper\windows\source\FileVersionInformationU.pas 11 | 2017/11/20 09:15:45.000.940,=C:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas 12 | 2017/11/20 09:16:51.000.816,C:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas=C:\Development\Little Earth Solutions\delphi-library-helper\windows\source\frmFindReplaceU.pas 13 | 2017/11/20 09:16:51.000.816,C:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.dfm=C:\Development\Little Earth Solutions\delphi-library-helper\windows\source\frmFindReplaceU.dfm 14 | 2018/01/09 12:21:28.000.351,=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\frmSearchU.pas 15 | 2018/01/11 09:45:07.000.421,=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\dlgProgressU.pas 16 | 2018/01/11 09:51:41.000.364,D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\dlgProgressU.dfm=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\frmProgressU.dfm 17 | 2018/01/11 09:51:41.000.364,D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\dlgProgressU.pas=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\frmProgressU.pas 18 | 2019/04/02 23:17:33.000.637,=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas 19 | 2019/04/02 23:18:14.000.876,D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\dmDelphiLibraryHelperU.dfm=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.dfm 20 | 2019/04/02 23:18:14.000.876,D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\dmDelphiLibraryHelperU.pas=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas 21 | 2019/04/03 09:02:14.000.389,=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas 22 | 2019/04/03 09:02:44.000.055,D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\LoggingU.pas=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas 23 | 2019/04/03 10:03:24.000.231,=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas 24 | 2019/04/03 11:10:15.000.551,D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\frmLoggingU.pas=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.pas 25 | 2019/04/03 11:10:15.000.551,D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\frmLoggingU.dfm=D:\Development\Little Earth Solutions\delphi-library-helper\windows\source\Unit1.dfm 26 | 2021/11/29 14:16:46.000.303,=C:\Users\tristan\Documents\GitHub\delphi-library-helper\source\version.rc 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 | -------------------------------------------------------------------------------- /source/DelphiLibraryHelper.identcache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/source/DelphiLibraryHelper.identcache -------------------------------------------------------------------------------- /source/DelphiLibraryHelper.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/source/DelphiLibraryHelper.res -------------------------------------------------------------------------------- /source/DelphiLibraryHelper.stat: -------------------------------------------------------------------------------- 1 | [Stats] 2 | EditorSecs=48834 3 | DesignerSecs=5347 4 | InspectorSecs=2317 5 | CompileSecs=828184 6 | OtherSecs=1161 7 | StartTime=6/08/2016 9:32:52 PM 8 | RealKeys=0 9 | EffectiveKeys=0 10 | DebugSecs=27617 11 | -------------------------------------------------------------------------------- /source/DelphiLibraryHelper_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/source/DelphiLibraryHelper_Icon.ico -------------------------------------------------------------------------------- /source/FileVersionInformationU.pas: -------------------------------------------------------------------------------- 1 | { ----------------------------------------------------------------------------- 2 | Unit Name: FileVersionInformationU 3 | Author: Tristan Marlow 4 | Purpose: File Version Information 5 | 6 | ---------------------------------------------------------------------------- 7 | Copyright (c) 2016 Tristan David Marlow 8 | Copyright (c) 2016 Little Earth Solutions 9 | All Rights Reserved 10 | 11 | This product is protected by copyright and distributed under 12 | licenses restricting copying, distribution and decompilation 13 | 14 | ---------------------------------------------------------------------------- 15 | 16 | History: 03/05/2007 - First Release. 17 | 18/06/2014 - Improvements for Locale 18 | 19 | ----------------------------------------------------------------------------- } 20 | unit FileVersionInformationU; 21 | 22 | interface 23 | 24 | uses Classes, Forms, Windows, Dialogs, SysUtils; 25 | 26 | type 27 | EFileVersionInformationException = class(Exception); 28 | 29 | type 30 | TFileVersionInformation = class(TObject) 31 | private 32 | FExceptionOnError: Boolean; 33 | FFileName: TFileName; 34 | FLanguageCodepage: string; 35 | FLanguage: string; 36 | FCompanyName: string; 37 | FFileDescription: string; 38 | FFileVersion: string; 39 | FInternalName: string; 40 | FLegalCopyright: string; 41 | FLegalTrademarks: string; 42 | FOriginalFileName: string; 43 | FProductName: string; 44 | FProductVersion: string; 45 | FComments: string; 46 | FMajorVersion: Word; 47 | FMinorVersion: Word; 48 | FReleaseVersion: Word; 49 | FBuild: Word; 50 | FDebugBuild: Boolean; 51 | FPrivateBuild: Boolean; 52 | FSpecialBuild: Boolean; 53 | FInfoInferred: Boolean; 54 | FPatched: Boolean; 55 | FPreRelease: Boolean; 56 | protected 57 | procedure SetFilename(const AFileName: TFileName); 58 | procedure ClearValues; 59 | public 60 | constructor Create; virtual; 61 | destructor Destroy; override; 62 | property ExceptionOnError: Boolean read FExceptionOnError 63 | write FExceptionOnError; 64 | property FileName: TFileName read FFileName write SetFilename; 65 | property LanguageCodepage: string read FLanguageCodepage; 66 | property Language: string read FLanguage; 67 | property CompanyName: string read FCompanyName; 68 | property FileDescription: string read FFileDescription; 69 | property FileVersion: string read FFileVersion; 70 | property InternalName: string read FInternalName; 71 | property LegalCopyright: string read FLegalCopyright; 72 | property LegalTrademarks: string read FLegalTrademarks; 73 | property OriginalFileName: string read FOriginalFileName; 74 | property ProductName: string read FProductName; 75 | property ProductVersion: string read FProductVersion; 76 | property Comments: string read FComments; 77 | property MajorVersion: Word read FMajorVersion; 78 | property MinorVersion: Word read FMinorVersion; 79 | property ReleaseVersion: Word read FReleaseVersion; 80 | property Build: Word read FBuild; 81 | property DebugBuild: Boolean read FDebugBuild; 82 | property PreRelease: Boolean read FPreRelease; 83 | property Patched: Boolean read FPatched; 84 | property PrivateBuild: Boolean read FPrivateBuild; 85 | property InfoInferred: Boolean read FInfoInferred; 86 | property SpecialBuild: Boolean read FSpecialBuild; 87 | end; 88 | 89 | type 90 | TApplicationVersionInfo = class(TFileVersionInformation) 91 | public 92 | constructor Create; override; 93 | end; 94 | 95 | implementation 96 | 97 | constructor TFileVersionInformation.Create; 98 | begin 99 | inherited; 100 | ClearValues; 101 | FExceptionOnError := False; 102 | end; 103 | 104 | procedure TFileVersionInformation.ClearValues; 105 | begin 106 | FFileDescription := ''; 107 | FLanguageCodepage := ''; 108 | FLanguage := ''; 109 | FCompanyName := ''; 110 | FFileVersion := '0.0.0.0'; 111 | FInternalName := ''; 112 | FLegalCopyright := ''; 113 | FLegalTrademarks := ''; 114 | FOriginalFileName := ''; 115 | FProductName := ''; 116 | FProductVersion := '0.0.0.0'; 117 | FComments := ''; 118 | end; 119 | 120 | destructor TFileVersionInformation.Destroy; 121 | begin 122 | inherited Destroy; 123 | end; 124 | 125 | procedure TFileVersionInformation.SetFilename(const AFileName: TFileName); 126 | type 127 | PLandCodepage = ^TLandCodepage; 128 | 129 | TLandCodepage = record 130 | wLanguage, wCodePage: Word; 131 | end; 132 | var 133 | dummy, len: cardinal; 134 | buf, pntr: pointer; 135 | FixedPtr: PVSFixedFileInfo; 136 | begin 137 | FFileName := AFileName; 138 | ClearValues; 139 | if FileExists(FFileName) then 140 | begin 141 | try 142 | len := GetFileVersionInfoSize(PChar(FFileName), dummy); 143 | if len = 0 then 144 | RaiseLastOSError; 145 | GetMem(buf, len); 146 | try 147 | if not GetFileVersionInfo(PChar(FileName), 0, len, buf) then 148 | RaiseLastOSError; 149 | 150 | if not VerQueryValue(buf, '\VarFileInfo\Translation\', pntr, len) then 151 | RaiseLastOSError; 152 | 153 | FLanguageCodepage := Format('%.4x%.4x', [PLandCodepage(pntr)^.wLanguage, 154 | PLandCodepage(pntr)^.wCodePage]); 155 | 156 | VerLanguageName(PLandCodepage(pntr)^.wLanguage, pntr, 256); 157 | FLanguage := PChar(pntr); 158 | 159 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 160 | '\CompanyName'), pntr, len) { and (@len <> nil) } then 161 | FCompanyName := PChar(pntr); 162 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 163 | '\FileDescription'), pntr, len) { and (@len <> nil) } then 164 | FFileDescription := PChar(pntr); 165 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 166 | '\FileVersion'), pntr, len) { and (@len <> nil) } then 167 | FFileVersion := PChar(pntr); 168 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 169 | '\InternalName'), pntr, len) { and (@len <> nil) } then 170 | FInternalName := PChar(pntr); 171 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 172 | '\LegalCopyright'), pntr, len) { and (@len <> nil) } then 173 | FLegalCopyright := PChar(pntr); 174 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 175 | '\LegalTrademarks'), pntr, len) { and (@len <> nil) } then 176 | FLegalTrademarks := PChar(pntr); 177 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 178 | '\OriginalFileName'), pntr, len) { and (@len <> nil) } then 179 | FOriginalFileName := PChar(pntr); 180 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 181 | '\ProductName'), pntr, len) { and (@len <> nil) } then 182 | FProductName := PChar(pntr); 183 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 184 | '\ProductVersion'), pntr, len) { and (@len <> nil) } then 185 | FProductVersion := PChar(pntr); 186 | if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 187 | '\Comments'), pntr, len) { and (@len <> nil) } then 188 | FComments := PChar(pntr); 189 | // if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 190 | // '\PrivateBuild'), pntr, len) { and (@len <> nil) } then 191 | // FPrivateBuild := PChar(pntr); 192 | // if VerQueryValue(buf, PChar('\StringFileInfo\' + FLanguageCodepage + 193 | // '\SpecialBuild'), pntr, len) { and (@len <> nil) } then 194 | // FSpecialBuild := PChar(pntr); 195 | if VerQueryValue(buf, '\', pointer(FixedPtr), len) then 196 | begin 197 | FMajorVersion := LongRec(FixedPtr.dwFileVersionMS).Hi; 198 | // Major Version 199 | FMinorVersion := LongRec(FixedPtr.dwFileVersionMS).Lo; 200 | // Minor Version 201 | FReleaseVersion := LongRec(FixedPtr.dwFileVersionLS).Hi; 202 | // Release Version 203 | FBuild := LongRec(FixedPtr.dwFileVersionLS).Lo; // Build 204 | FDebugBuild := (FixedPtr^.dwFileFlags and VS_FF_DEBUG) <> 0; 205 | 206 | FPreRelease := (FixedPtr^.dwFileFlags and VS_FF_PRERELEASE) <> 0; 207 | FPatched := (FixedPtr^.dwFileFlags and VS_FF_PATCHED) <> 0; 208 | FPrivateBuild := (FixedPtr^.dwFileFlags and VS_FF_PRIVATEBUILD) <> 0; 209 | FInfoInferred := (FixedPtr^.dwFileFlags and VS_FF_INFOINFERRED) <> 0; 210 | FSpecialBuild := (FixedPtr^.dwFileFlags and VS_FF_SPECIALBUILD) <> 0; 211 | end; 212 | finally 213 | FreeMem(buf); 214 | end; 215 | except 216 | on E: Exception do 217 | begin 218 | if FExceptionOnError then 219 | begin 220 | raise EFileVersionInformationException.Create(E.Message); 221 | end; 222 | end; 223 | end; 224 | end 225 | else 226 | begin 227 | if FExceptionOnError then 228 | begin 229 | raise EFileVersionInformationException.CreateFmt('"%s" does not exist.', 230 | [FFileName]); 231 | end; 232 | end; 233 | end; 234 | 235 | // TApplicationVersionInfo 236 | 237 | constructor TApplicationVersionInfo.Create; 238 | begin 239 | inherited; 240 | ExceptionOnError := False; 241 | FileName := ParamStr(0); 242 | end; 243 | 244 | end. 245 | -------------------------------------------------------------------------------- /source/LoggingU.pas: -------------------------------------------------------------------------------- 1 | unit LoggingU; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, 7 | System.Classes, System.Generics.Collections; 8 | 9 | type 10 | TLogLevel = (logDebug, logInformation); 11 | 12 | type 13 | TLoggerBase = class 14 | private 15 | FLogLevel: TLogLevel; 16 | procedure DoLog(AMessage: string); overload; 17 | procedure DoLog(const AFormat: string; const Args: array of const); 18 | overload; 19 | procedure SetLogLevel(const Value: TLogLevel); 20 | protected 21 | procedure InternalLog(AMessage: string); virtual; abstract; 22 | procedure InitializeLog; virtual; abstract; 23 | procedure FinalizeLog; virtual; abstract; 24 | public 25 | constructor Create; reintroduce; 26 | destructor Destroy; override; 27 | procedure Log(AMessage: string); 28 | procedure Error(AMessage: string); overload; 29 | procedure Error(AException: Exception; AMessage: string = ''); overload; 30 | procedure Debug(AProcedure, AMessage: string); 31 | property LogLevel: TLogLevel read FLogLevel write SetLogLevel; 32 | end; 33 | 34 | TSimpleLogger = class(TLoggerBase) 35 | private 36 | FLogCache: TStringList; 37 | FMaxCacheSize: integer; 38 | function GetCache: string; 39 | procedure SetMaxCacheSize(const Value: integer); 40 | protected 41 | procedure InternalLog(AMessage: string); override; 42 | procedure InitializeLog; override; 43 | procedure FinalizeLog; override; 44 | public 45 | property Cache: string read GetCache; 46 | property MaxCacheSize: integer read FMaxCacheSize write SetMaxCacheSize; 47 | end; 48 | 49 | var 50 | _Logging: TSimpleLogger; 51 | 52 | procedure Log(const AFormat: string; const Args: array of const); overload; 53 | procedure Log(AMessage: string); overload; 54 | 55 | procedure Debug(AProcedure: string; const AFormat: string; 56 | const Args: array of const); overload; 57 | procedure Debug(AProcedure, AMessage: string); overload; 58 | 59 | procedure Error(const AFormat: string; const Args: array of const); overload; 60 | procedure Error(AMessage: string); overload; 61 | procedure Error(AException: Exception; AMessage: string = ''); overload; 62 | procedure Error(AException: Exception; const AFormat: string; 63 | const Args: array of const); overload; 64 | 65 | implementation 66 | 67 | { TLoggerBase } 68 | 69 | constructor TLoggerBase.Create; 70 | begin 71 | {$IFDEF DEBUG} 72 | FLogLevel := logDebug; 73 | {$ELSE} 74 | FLogLevel := logInformation; 75 | {$ENDIF} 76 | InitializeLog; 77 | end; 78 | 79 | procedure TLoggerBase.Debug(AProcedure, AMessage: string); 80 | begin 81 | if (FLogLevel = logDebug) then 82 | begin 83 | DoLog('[DEBUG]:(%s):%s', [AProcedure, AMessage]); 84 | end; 85 | end; 86 | 87 | destructor TLoggerBase.Destroy; 88 | begin 89 | try 90 | FinalizeLog; 91 | finally 92 | inherited; 93 | end; 94 | end; 95 | 96 | procedure TLoggerBase.DoLog(const AFormat: string; const Args: array of const); 97 | begin 98 | DoLog(Format(AFormat, Args)); 99 | end; 100 | 101 | procedure TLoggerBase.DoLog(AMessage: string); 102 | begin 103 | InternalLog(AMessage); 104 | end; 105 | 106 | procedure TLoggerBase.Error(AMessage: string); 107 | begin 108 | DoLog('[ERROR]: %s', [AMessage]); 109 | end; 110 | 111 | procedure TLoggerBase.Error(AException: Exception; AMessage: string); 112 | begin 113 | DoLog('[ERROR]: %s %s', [AException.Message, AMessage]); 114 | end; 115 | 116 | procedure TLoggerBase.Log(AMessage: string); 117 | begin 118 | DoLog('[LOG]: %s', [AMessage]); 119 | end; 120 | 121 | procedure TLoggerBase.SetLogLevel(const Value: TLogLevel); 122 | begin 123 | FLogLevel := Value; 124 | end; 125 | 126 | procedure Log(const AFormat: string; const Args: array of const); 127 | begin 128 | _Logging.Log(Format(AFormat, Args)); 129 | end; 130 | 131 | procedure Log(AMessage: string); 132 | begin 133 | _Logging.Log(AMessage); 134 | end; 135 | 136 | procedure Debug(AProcedure: string; const AFormat: string; 137 | const Args: array of const); 138 | begin 139 | _Logging.Debug(AProcedure, Format(AFormat, Args)); 140 | end; 141 | 142 | procedure Debug(AProcedure, AMessage: string); 143 | begin 144 | _Logging.Debug(AProcedure, AMessage); 145 | end; 146 | 147 | procedure Error(const AFormat: string; const Args: array of const); 148 | begin 149 | _Logging.Error(Format(AFormat, Args)); 150 | end; 151 | 152 | procedure Error(AMessage: string); 153 | begin 154 | _Logging.Error(AMessage); 155 | end; 156 | 157 | procedure Error(AException: Exception; AMessage: string = ''); 158 | begin 159 | _Logging.Error(AException, AMessage); 160 | end; 161 | 162 | procedure Error(AException: Exception; const AFormat: string; 163 | const Args: array of const); 164 | begin 165 | _Logging.Error(AException, Format(AFormat, Args)); 166 | end; 167 | 168 | { TSimpleLogger } 169 | 170 | procedure TSimpleLogger.FinalizeLog; 171 | begin 172 | FreeAndNil(FLogCache); 173 | end; 174 | 175 | function TSimpleLogger.GetCache: string; 176 | begin 177 | Result := ''; 178 | if Assigned(FLogCache) then 179 | begin 180 | Result := FLogCache.Text; 181 | end; 182 | end; 183 | 184 | procedure TSimpleLogger.InitializeLog; 185 | begin 186 | FLogCache := TStringList.Create; 187 | FMaxCacheSize := 1000; 188 | end; 189 | 190 | procedure TSimpleLogger.InternalLog(AMessage: string); 191 | begin 192 | FLogCache.Insert(0, AMessage); 193 | while FLogCache.Count > FMaxCacheSize do 194 | begin 195 | FLogCache.Delete(FLogCache.Count - 1); 196 | end; 197 | 198 | end; 199 | 200 | procedure TSimpleLogger.SetMaxCacheSize(const Value: integer); 201 | begin 202 | FMaxCacheSize := Value; 203 | end; 204 | 205 | initialization 206 | 207 | _Logging := TSimpleLogger.Create; 208 | 209 | finalization 210 | 211 | FreeAndNil(_Logging); 212 | 213 | end. 214 | -------------------------------------------------------------------------------- /source/__history/DelphiLibraryHelper.dpr.~1~: -------------------------------------------------------------------------------- 1 | program DelphiLibraryHelper; 2 | 3 | uses 4 | Vcl.Forms, 5 | Windows, 6 | Controls, 7 | Dialogs, 8 | SysUtils, 9 | Printers, 10 | System.UITypes, 11 | frmDelphiLibraryHelperU in 'frmDelphiLibraryHelperU.pas' {frmDelphiLibraryHelper}, 12 | LibraryPathsU in 'LibraryPathsU.pas', 13 | LibraryHelperU in 'LibraryHelperU.pas', 14 | frmAddLibraryPathU in 'frmAddLibraryPathU.pas' {frmAddLibraryPath}, 15 | frmAddEnvironmentVariableU in 'frmAddEnvironmentVariableU.pas' {frmAddEnvironmentVariable}, 16 | frmAboutU in 'frmAboutU.pas' {frmAbout}, 17 | FileVersionInformationU in 'FileVersionInformationU.pas', 18 | frmFindReplaceU in 'frmFindReplaceU.pas' {frmFindReplace}, 19 | frmSearchU in 'frmSearchU.pas' {frmSearch}, 20 | frmProgressU in 'frmProgressU.pas' {frmProgress}, 21 | Vcl.Themes, 22 | Vcl.Styles, 23 | dmDelphiLibraryHelperU in 'dmDelphiLibraryHelperU.pas' {dmDelphiLibraryHelper: TDataModule}, 24 | LoggingU in 'LoggingU.pas', 25 | frmLoggingU in 'frmLoggingU.pas' {frmLogging}; 26 | 27 | {$R *.res} 28 | 29 | function IsFontInstalled(const AFontName: string): boolean; 30 | begin 31 | Result := Screen.Fonts.IndexOf(AFontName) <> -1; 32 | end; 33 | 34 | begin 35 | Application.Initialize; 36 | if CheckWin32Version(6) then 37 | begin 38 | 39 | if IsFontInstalled('Segoe UI') then 40 | begin 41 | Application.DefaultFont.Name := 'Segoe UI'; 42 | Screen.MessageFont.Name := 'Segoe UI'; 43 | end; 44 | // 45 | if IsFontInstalled('Roboto Lt') then 46 | begin 47 | Application.DefaultFont.Name := 'Roboto Lt'; 48 | Screen.MessageFont.Name := 'Roboto Lt'; 49 | end; 50 | 51 | if IsFontInstalled('Roboto Light') then 52 | begin 53 | Application.DefaultFont.Name := 'Roboto Light'; 54 | Screen.MessageFont.Name := 'Roboto Light'; 55 | end; 56 | end; 57 | 58 | Application.MainFormOnTaskbar := True; 59 | TStyleManager.TrySetStyle('Carbon'); 60 | Application.CreateForm(TfrmDelphiLibraryHelper, frmDelphiLibraryHelper); 61 | Application.CreateForm(TdmDelphiLibraryHelper, dmDelphiLibraryHelper); 62 | Application.CreateForm(TfrmLogging, frmLogging); 63 | Application.Run; 64 | 65 | end. 66 | -------------------------------------------------------------------------------- /source/__history/DelphiLibraryHelper.dpr.~2~: -------------------------------------------------------------------------------- 1 | program DelphiLibraryHelper; 2 | 3 | {$R 'version.res' 'version.rc'} 4 | 5 | uses 6 | Vcl.Forms, 7 | Windows, 8 | Controls, 9 | Dialogs, 10 | SysUtils, 11 | Printers, 12 | System.UITypes, 13 | frmDelphiLibraryHelperU in 'frmDelphiLibraryHelperU.pas' {frmDelphiLibraryHelper}, 14 | LibraryPathsU in 'LibraryPathsU.pas', 15 | LibraryHelperU in 'LibraryHelperU.pas', 16 | frmAddLibraryPathU in 'frmAddLibraryPathU.pas' {frmAddLibraryPath}, 17 | frmAddEnvironmentVariableU in 'frmAddEnvironmentVariableU.pas' {frmAddEnvironmentVariable}, 18 | frmAboutU in 'frmAboutU.pas' {frmAbout}, 19 | FileVersionInformationU in 'FileVersionInformationU.pas', 20 | frmFindReplaceU in 'frmFindReplaceU.pas' {frmFindReplace}, 21 | frmSearchU in 'frmSearchU.pas' {frmSearch}, 22 | frmProgressU in 'frmProgressU.pas' {frmProgress}, 23 | Vcl.Themes, 24 | Vcl.Styles, 25 | dmDelphiLibraryHelperU in 'dmDelphiLibraryHelperU.pas' {dmDelphiLibraryHelper: TDataModule}, 26 | LoggingU in 'LoggingU.pas', 27 | frmLoggingU in 'frmLoggingU.pas' {frmLogging}; 28 | 29 | {$R *.res} 30 | 31 | function IsFontInstalled(const AFontName: string): boolean; 32 | begin 33 | Result := Screen.Fonts.IndexOf(AFontName) <> -1; 34 | end; 35 | 36 | begin 37 | Application.Initialize; 38 | if CheckWin32Version(6) then 39 | begin 40 | 41 | if IsFontInstalled('Segoe UI') then 42 | begin 43 | Application.DefaultFont.Name := 'Segoe UI'; 44 | Screen.MessageFont.Name := 'Segoe UI'; 45 | end; 46 | // 47 | if IsFontInstalled('Roboto Lt') then 48 | begin 49 | Application.DefaultFont.Name := 'Roboto Lt'; 50 | Screen.MessageFont.Name := 'Roboto Lt'; 51 | end; 52 | 53 | if IsFontInstalled('Roboto Light') then 54 | begin 55 | Application.DefaultFont.Name := 'Roboto Light'; 56 | Screen.MessageFont.Name := 'Roboto Light'; 57 | end; 58 | end; 59 | 60 | Application.MainFormOnTaskbar := True; 61 | TStyleManager.TrySetStyle('Carbon'); 62 | Application.CreateForm(TfrmDelphiLibraryHelper, frmDelphiLibraryHelper); 63 | Application.CreateForm(TdmDelphiLibraryHelper, dmDelphiLibraryHelper); 64 | Application.CreateForm(TfrmLogging, frmLogging); 65 | Application.Run; 66 | 67 | end. 68 | -------------------------------------------------------------------------------- /source/__history/frmAboutU.dfm.~1~: -------------------------------------------------------------------------------- 1 | object frmAbout: TfrmAbout 2 | Left = 200 3 | Top = 108 4 | BorderStyle = bsDialog 5 | Caption = 'About' 6 | ClientHeight = 272 7 | ClientWidth = 298 8 | Color = clBtnFace 9 | ParentFont = True 10 | OldCreateOrder = True 11 | Position = poScreenCenter 12 | OnCreate = FormCreate 13 | PixelsPerInch = 96 14 | TextHeight = 13 15 | object Panel1: TPanel 16 | AlignWithMargins = True 17 | Left = 3 18 | Top = 3 19 | Width = 292 20 | Height = 219 21 | Align = alClient 22 | BevelInner = bvRaised 23 | BevelOuter = bvLowered 24 | ParentColor = True 25 | TabOrder = 0 26 | object Comments: TLabel 27 | AlignWithMargins = True 28 | Left = 5 29 | Top = 111 30 | Width = 282 31 | Height = 13 32 | Align = alTop 33 | Alignment = taCenter 34 | Caption = 'Comments' 35 | Layout = tlCenter 36 | WordWrap = True 37 | IsControl = True 38 | ExplicitWidth = 50 39 | end 40 | object Bevel1: TBevel 41 | AlignWithMargins = True 42 | Left = 5 43 | Top = 96 44 | Width = 282 45 | Height = 9 46 | Align = alTop 47 | Shape = bsTopLine 48 | end 49 | object Panel3: TPanel 50 | Left = 2 51 | Top = 2 52 | Width = 288 53 | Height = 91 54 | Align = alTop 55 | BevelOuter = bvNone 56 | TabOrder = 0 57 | object Panel4: TPanel 58 | AlignWithMargins = True 59 | Left = 3 60 | Top = 3 61 | Width = 90 62 | Height = 85 63 | Align = alLeft 64 | BevelOuter = bvNone 65 | TabOrder = 0 66 | object ProgramIcon: TImage 67 | AlignWithMargins = True 68 | Left = 3 69 | Top = 3 70 | Width = 84 71 | Height = 79 72 | Align = alClient 73 | Picture.Data = { 74 | 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000400000 75 | 00400806000000AA6971DE00000006624B474400FF00FF00FFA0BDA793000002 76 | B54944415478DAED9ACF6B134114C7BB4B36D6250A22A227E9419A930AE6D2B3 77 | 1EF51AC9263186A5841AA51EFC07F22F5835D2A5CAB224BB62AE7AD4B397148A 78 | A78820F556B014A12C31091BBFA339C8D2CC6E3686C98FF7856167C8DB79EF7D 79 | 66E6CD422B2D2DB824D101881601101D80681100D10188160110E9BC582C2EB3 80 | A7699AED850290CBE5AE4A92F4A8DFEF6B7F82902407FDE7F57AFDF3DC022895 81 | 4A8AEBBA1A12DDC43035C4AC09185BAAAA3A866174E702403A9DBEA0288A8EC4 82 | 36305C09F9DA3780DA467BE538CE8F9904806DBE86471949DC45F2A7A2CC8177 83 | 7FE1DDB7E856713C3E4D3D006C7315DB3C8BC01F607823C09C25F402B6C8512A 84 | A3BF1660BF0BDB6A229160C7C39D2A00F97CFE3A827B826E1A6D99637A84640D 85 | 59965F5B96F5E5DF1F0A85C2AAE7793AE62961788E33C731E6B0F1ACD66AB53D 86 | 610070B64FE36CDF43302CE05480F91E5BBD6EB76B371A8D639EA1AEEB67DAED 87 | B606480FF1CEB580799BB031E2F1B815F52A1D194026935989C5621B705CC4F0 88 | 22C79455F137B07B6ADB76334A70D96C3605C08F995B3485637A003B133BE825 89 | 7CED4F0280A469DA1DAC0ABBC26EA2C91CDBEF6CB5D14C54F0832889FB850FA6 90 | 4B9D4EE7FEA0565CE6987A681F01620BBEDFA1DF1F0B00CEE5F95EAFB70EC7EB 91 | 185EE19832471F98E36432F9BE52A978FF2371BF30AFDC6AB56E0F16E25640FC 92 | 5FB1083BD8AD3BA837872303C0F67B86C40BE89EE53871D957DCD2DF82B43B89 93 | A487098597DD32E5C1D7A4CA31FD8966E11ADD1C0900EE71DEF6095DD426ADB0 94 | 4513004ECC352A809913012000046034007EF981F8279CF6DF87890010000240 95 | 00080001200004800010000240000800012000048000100002400008C04913CE 96 | BAE8EF020480008C07206C519916858D9F00849D60D6450008000118EFFF03E6 97 | 5504407400A245004407205A04407400A2B5F0007E031919446E3EDC48050000 98 | 000049454E44AE426082} 99 | Stretch = True 100 | IsControl = True 101 | ExplicitLeft = 8 102 | ExplicitTop = 8 103 | ExplicitWidth = 65 104 | ExplicitHeight = 57 105 | end 106 | end 107 | object Panel5: TPanel 108 | AlignWithMargins = True 109 | Left = 99 110 | Top = 3 111 | Width = 186 112 | Height = 85 113 | Align = alClient 114 | BevelOuter = bvNone 115 | TabOrder = 1 116 | object ProductName: TLabel 117 | Left = 0 118 | Top = 0 119 | Width = 186 120 | Height = 56 121 | Align = alClient 122 | Alignment = taCenter 123 | Caption = 'Product Name' 124 | WordWrap = True 125 | IsControl = True 126 | ExplicitWidth = 67 127 | ExplicitHeight = 13 128 | end 129 | object CompanyName: TLabel 130 | AlignWithMargins = True 131 | Left = 3 132 | Top = 72 133 | Width = 180 134 | Height = 13 135 | Align = alBottom 136 | Alignment = taCenter 137 | Caption = 'Company Name' 138 | IsControl = True 139 | ExplicitWidth = 75 140 | end 141 | object Version: TLabel 142 | Left = 0 143 | Top = 56 144 | Width = 186 145 | Height = 13 146 | Align = alBottom 147 | Alignment = taCenter 148 | Caption = '0.0.0.0' 149 | IsControl = True 150 | ExplicitWidth = 36 151 | end 152 | end 153 | end 154 | object memoCredits: TMemo 155 | AlignWithMargins = True 156 | Left = 5 157 | Top = 127 158 | Width = 282 159 | Height = 87 160 | Align = alClient 161 | Alignment = taCenter 162 | Lines.Strings = ( 163 | 'Development' 164 | 'Tristan Marlow' 165 | '' 166 | 'Icons from Icons8') 167 | ReadOnly = True 168 | TabOrder = 1 169 | ExplicitLeft = 8 170 | end 171 | end 172 | object Panel2: TPanel 173 | AlignWithMargins = True 174 | Left = 3 175 | Top = 228 176 | Width = 292 177 | Height = 41 178 | Align = alBottom 179 | BevelInner = bvRaised 180 | BevelOuter = bvLowered 181 | TabOrder = 1 182 | object OKButton: TButton 183 | AlignWithMargins = True 184 | Left = 102 185 | Top = 5 186 | Width = 88 187 | Height = 31 188 | Margins.Left = 100 189 | Margins.Right = 100 190 | Align = alClient 191 | Caption = 'OK' 192 | Default = True 193 | ModalResult = 1 194 | TabOrder = 0 195 | end 196 | end 197 | end 198 | -------------------------------------------------------------------------------- /source/__history/frmAboutU.dfm.~2~: -------------------------------------------------------------------------------- 1 | object frmAbout: TfrmAbout 2 | Left = 200 3 | Top = 108 4 | BorderStyle = bsDialog 5 | Caption = 'About' 6 | ClientHeight = 361 7 | ClientWidth = 384 8 | Color = clBtnFace 9 | ParentFont = True 10 | Position = poScreenCenter 11 | OnCreate = FormCreate 12 | PixelsPerInch = 96 13 | TextHeight = 15 14 | object Panel1: TPanel 15 | AlignWithMargins = True 16 | Left = 3 17 | Top = 3 18 | Width = 378 19 | Height = 308 20 | Align = alClient 21 | BevelInner = bvRaised 22 | BevelOuter = bvLowered 23 | ParentColor = True 24 | TabOrder = 0 25 | ExplicitWidth = 292 26 | ExplicitHeight = 219 27 | object Comments: TLabel 28 | AlignWithMargins = True 29 | Left = 5 30 | Top = 111 31 | Width = 368 32 | Height = 15 33 | Align = alTop 34 | Alignment = taCenter 35 | Caption = 'Comments' 36 | Layout = tlCenter 37 | WordWrap = True 38 | IsControl = True 39 | ExplicitWidth = 59 40 | end 41 | object Bevel1: TBevel 42 | AlignWithMargins = True 43 | Left = 5 44 | Top = 96 45 | Width = 368 46 | Height = 9 47 | Align = alTop 48 | Shape = bsTopLine 49 | ExplicitWidth = 282 50 | end 51 | object Panel3: TPanel 52 | Left = 2 53 | Top = 2 54 | Width = 374 55 | Height = 91 56 | Align = alTop 57 | BevelOuter = bvNone 58 | TabOrder = 0 59 | ExplicitWidth = 288 60 | object Panel4: TPanel 61 | AlignWithMargins = True 62 | Left = 3 63 | Top = 3 64 | Width = 90 65 | Height = 85 66 | Align = alLeft 67 | BevelOuter = bvNone 68 | TabOrder = 0 69 | object ProgramIcon: TImage 70 | AlignWithMargins = True 71 | Left = 3 72 | Top = 3 73 | Width = 84 74 | Height = 79 75 | Align = alClient 76 | Picture.Data = { 77 | 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000400000 78 | 00400806000000AA6971DE00000006624B474400FF00FF00FFA0BDA793000002 79 | B54944415478DAED9ACF6B134114C7BB4B36D6250A22A227E9419A930AE6D2B3 80 | 1EF51AC9263186A5841AA51EFC07F22F5835D2A5CAB224BB62AE7AD4B397148A 81 | A78820F556B014A12C31091BBFA339C8D2CC6E3686C98FF7856167C8DB79EF7D 82 | 66E6CD422B2D2DB824D101881601101D80681100D10188160110E9BC582C2EB3 83 | A7699AED850290CBE5AE4A92F4A8DFEF6B7F82902407FDE7F57AFDF3DC022895 84 | 4A8AEBBA1A12DDC43035C4AC09185BAAAA3A866174E702403A9DBEA0288A8EC4 85 | 36305C09F9DA3780DA467BE538CE8F9904806DBE86471949DC45F2A7A2CC8177 86 | 7FE1DDB7E856713C3E4D3D006C7315DB3C8BC01F607823C09C25F402B6C8512A 87 | A3BF1660BF0BDB6A229160C7C39D2A00F97CFE3A827B826E1A6D99637A84640D 88 | 59965F5B96F5E5DF1F0A85C2AAE7793AE62961788E33C731E6B0F1ACD66AB53D 89 | 610070B64FE36CDF43302CE05480F91E5BBD6EB76B371A8D639EA1AEEB67DAED 90 | B606480FF1CEB580799BB031E2F1B815F52A1D194026935989C5621B705CC4F0 91 | 22C79455F137B07B6ADB76334A70D96C3605C08F995B3485637A003B133BE825 92 | 7CED4F0280A469DA1DAC0ABBC26EA2C91CDBEF6CB5D14C54F0832889FB850FA6 93 | 4B9D4EE7FEA0565CE6987A681F01620BBEDFA1DF1F0B00CEE5F95EAFB70EC7EB 94 | 185EE19832471F98E36432F9BE52A978FF2371BF30AFDC6AB56E0F16E25640FC 95 | 5FB1083BD8AD3BA837872303C0F67B86C40BE89EE53871D957DCD2DF82B43B89 96 | A487098597DD32E5C1D7A4CA31FD8966E11ADD1C0900EE71DEF6095DD426ADB0 97 | 4513004ECC352A809913012000046034007EF981F8279CF6DF87890010000240 98 | 00080001200004800010000240000800012000048000100002400008C04913CE 99 | BAE8EF020480008C07206C519916858D9F00849D60D6450008000118EFFF03E6 100 | 5504407400A245004407205A04407400A2B5F0007E031919446E3EDC48050000 101 | 000049454E44AE426082} 102 | Stretch = True 103 | IsControl = True 104 | ExplicitLeft = 8 105 | ExplicitTop = 8 106 | ExplicitWidth = 65 107 | ExplicitHeight = 57 108 | end 109 | end 110 | object Panel5: TPanel 111 | AlignWithMargins = True 112 | Left = 99 113 | Top = 3 114 | Width = 272 115 | Height = 85 116 | Align = alClient 117 | BevelOuter = bvNone 118 | TabOrder = 1 119 | ExplicitWidth = 186 120 | object ProductName: TLabel 121 | Left = 0 122 | Top = 0 123 | Width = 272 124 | Height = 49 125 | Align = alClient 126 | Alignment = taCenter 127 | Caption = 'Product Name' 128 | WordWrap = True 129 | IsControl = True 130 | ExplicitWidth = 77 131 | ExplicitHeight = 15 132 | end 133 | object CompanyName: TLabel 134 | AlignWithMargins = True 135 | Left = 3 136 | Top = 67 137 | Width = 266 138 | Height = 15 139 | Align = alBottom 140 | Alignment = taCenter 141 | Caption = 'Company Name' 142 | IsControl = True 143 | ExplicitTop = 72 144 | ExplicitWidth = 87 145 | end 146 | object Version: TLabel 147 | Left = 0 148 | Top = 49 149 | Width = 272 150 | Height = 15 151 | Align = alBottom 152 | Alignment = taCenter 153 | Caption = '0.0.0.0' 154 | IsControl = True 155 | ExplicitTop = 56 156 | ExplicitWidth = 33 157 | end 158 | end 159 | end 160 | object memoCredits: TMemo 161 | AlignWithMargins = True 162 | Left = 5 163 | Top = 132 164 | Width = 368 165 | Height = 171 166 | Align = alClient 167 | Alignment = taCenter 168 | Lines.Strings = ( 169 | 'Development' 170 | 'Tristan Marlow' 171 | '' 172 | 'Icons from Icons8') 173 | ReadOnly = True 174 | TabOrder = 1 175 | ExplicitWidth = 282 176 | ExplicitHeight = 82 177 | end 178 | end 179 | object Panel2: TPanel 180 | AlignWithMargins = True 181 | Left = 3 182 | Top = 317 183 | Width = 378 184 | Height = 41 185 | Align = alBottom 186 | BevelInner = bvRaised 187 | BevelOuter = bvLowered 188 | TabOrder = 1 189 | ExplicitTop = 228 190 | ExplicitWidth = 292 191 | object OKButton: TButton 192 | AlignWithMargins = True 193 | Left = 102 194 | Top = 5 195 | Width = 174 196 | Height = 31 197 | Margins.Left = 100 198 | Margins.Right = 100 199 | Align = alClient 200 | Caption = 'OK' 201 | Default = True 202 | ModalResult = 1 203 | TabOrder = 0 204 | ExplicitWidth = 88 205 | end 206 | end 207 | end 208 | -------------------------------------------------------------------------------- /source/__history/frmAddLibraryPathU.dfm.~1~: -------------------------------------------------------------------------------- 1 | object frmAddLibraryPath: TfrmAddLibraryPath 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | BorderStyle = bsDialog 6 | Caption = 'Add Library Path' 7 | ClientHeight = 235 8 | ClientWidth = 645 9 | Color = clBtnFace 10 | ParentFont = True 11 | OldCreateOrder = False 12 | Position = poOwnerFormCenter 13 | PixelsPerInch = 96 14 | TextHeight = 13 15 | object Panel1: TPanel 16 | AlignWithMargins = True 17 | Left = 3 18 | Top = 3 19 | Width = 639 20 | Height = 182 21 | Align = alClient 22 | BevelOuter = bvNone 23 | TabOrder = 0 24 | object Label1: TLabel 25 | AlignWithMargins = True 26 | Left = 3 27 | Top = 3 28 | Width = 633 29 | Height = 13 30 | Align = alTop 31 | Caption = 'Library Path' 32 | ExplicitWidth = 58 33 | end 34 | object GroupBoxDestination: TGroupBox 35 | AlignWithMargins = True 36 | Left = 3 37 | Top = 48 38 | Width = 633 39 | Height = 131 40 | Align = alClient 41 | Caption = 'Destination' 42 | TabOrder = 1 43 | object GridPanel1: TGridPanel 44 | AlignWithMargins = True 45 | Left = 5 46 | Top = 18 47 | Width = 623 48 | Height = 108 49 | Align = alClient 50 | BevelOuter = bvNone 51 | ColumnCollection = < 52 | item 53 | Value = 50.000000000000000000 54 | end 55 | item 56 | Value = 50.000000000000000000 57 | end> 58 | ControlCollection = < 59 | item 60 | Column = 0 61 | Control = cbAndroid32 62 | Row = 0 63 | end 64 | item 65 | Column = 1 66 | Control = cbIOS32 67 | Row = 0 68 | end 69 | item 70 | Column = 0 71 | Control = cbIOS64 72 | Row = 1 73 | end 74 | item 75 | Column = 1 76 | Control = cbIOSSimulator 77 | Row = 1 78 | end 79 | item 80 | Column = 0 81 | Control = cbOSX 82 | Row = 2 83 | end 84 | item 85 | Column = 1 86 | Control = cbWin32 87 | Row = 2 88 | end 89 | item 90 | Column = 0 91 | Control = cbWin64 92 | Row = 3 93 | end 94 | item 95 | Column = 1 96 | Control = cbLinux64 97 | Row = 3 98 | end> 99 | ExpandStyle = emFixedSize 100 | PopupMenu = PopupMenuDestinations 101 | RowCollection = < 102 | item 103 | SizeStyle = ssAbsolute 104 | Value = 25.000000000000000000 105 | end 106 | item 107 | SizeStyle = ssAbsolute 108 | Value = 25.000000000000000000 109 | end 110 | item 111 | SizeStyle = ssAbsolute 112 | Value = 25.000000000000000000 113 | end 114 | item 115 | SizeStyle = ssAbsolute 116 | Value = 25.000000000000000000 117 | end> 118 | TabOrder = 0 119 | object cbAndroid32: TCheckBox 120 | AlignWithMargins = True 121 | Left = 3 122 | Top = 3 123 | Width = 305 124 | Height = 19 125 | Align = alClient 126 | Caption = 'Android32' 127 | PopupMenu = PopupMenuDestinations 128 | TabOrder = 0 129 | end 130 | object cbIOS32: TCheckBox 131 | AlignWithMargins = True 132 | Left = 314 133 | Top = 3 134 | Width = 306 135 | Height = 19 136 | Align = alClient 137 | Caption = 'IOS32' 138 | PopupMenu = PopupMenuDestinations 139 | TabOrder = 1 140 | end 141 | object cbIOS64: TCheckBox 142 | AlignWithMargins = True 143 | Left = 3 144 | Top = 28 145 | Width = 305 146 | Height = 19 147 | Align = alClient 148 | Caption = 'IOS64' 149 | PopupMenu = PopupMenuDestinations 150 | TabOrder = 2 151 | end 152 | object cbIOSSimulator: TCheckBox 153 | AlignWithMargins = True 154 | Left = 314 155 | Top = 28 156 | Width = 306 157 | Height = 19 158 | Align = alClient 159 | Caption = 'IOSSimulator' 160 | PopupMenu = PopupMenuDestinations 161 | TabOrder = 3 162 | end 163 | object cbOSX: TCheckBox 164 | AlignWithMargins = True 165 | Left = 3 166 | Top = 53 167 | Width = 305 168 | Height = 19 169 | Align = alClient 170 | Caption = 'OSX' 171 | PopupMenu = PopupMenuDestinations 172 | TabOrder = 4 173 | end 174 | object cbWin32: TCheckBox 175 | AlignWithMargins = True 176 | Left = 314 177 | Top = 53 178 | Width = 306 179 | Height = 19 180 | Align = alClient 181 | Caption = 'Win32' 182 | PopupMenu = PopupMenuDestinations 183 | TabOrder = 5 184 | end 185 | object cbWin64: TCheckBox 186 | AlignWithMargins = True 187 | Left = 3 188 | Top = 78 189 | Width = 305 190 | Height = 19 191 | Align = alClient 192 | Caption = 'Win64' 193 | PopupMenu = PopupMenuDestinations 194 | TabOrder = 6 195 | end 196 | object cbLinux64: TCheckBox 197 | AlignWithMargins = True 198 | Left = 314 199 | Top = 78 200 | Width = 306 201 | Height = 19 202 | Align = alClient 203 | Caption = 'Linux64' 204 | PopupMenu = PopupMenuDestinations 205 | TabOrder = 7 206 | end 207 | end 208 | end 209 | object Panel3: TPanel 210 | Left = 0 211 | Top = 16 212 | Width = 639 213 | Height = 29 214 | Align = alTop 215 | BevelOuter = bvNone 216 | TabOrder = 0 217 | object editPath: TComboBox 218 | AlignWithMargins = True 219 | Left = 3 220 | Top = 3 221 | Width = 552 222 | Height = 21 223 | Align = alClient 224 | Sorted = True 225 | TabOrder = 0 226 | OnDropDown = editPathDropDown 227 | end 228 | object BitBtn3: TBitBtn 229 | AlignWithMargins = True 230 | Left = 561 231 | Top = 3 232 | Width = 75 233 | Height = 23 234 | Action = ActionSelectFolder 235 | Align = alRight 236 | Glyph.Data = { 237 | 36040000424D3604000000000000360000002800000010000000100000000100 238 | 2000000000000004000000000000000000000000000000000000FF00FF00FF00 239 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 240 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 241 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 242 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 243 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 244 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00049D 245 | FFFB00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 246 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF00FF00FF0000A0 247 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 248 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF41B2FFE1FF00FF00FF00FF0000A0 249 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 250 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 251 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 252 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 253 | FFFF00A0FFFF20C3FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 254 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 255 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 256 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 257 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 258 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 259 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 260 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 261 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 262 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 263 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00 264 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 265 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 266 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 267 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 268 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 269 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 270 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} 271 | TabOrder = 1 272 | end 273 | end 274 | end 275 | object Panel2: TPanel 276 | AlignWithMargins = True 277 | Left = 3 278 | Top = 191 279 | Width = 639 280 | Height = 41 281 | Align = alBottom 282 | BevelOuter = bvNone 283 | TabOrder = 1 284 | object BitBtn1: TBitBtn 285 | AlignWithMargins = True 286 | Left = 430 287 | Top = 3 288 | Width = 100 289 | Height = 35 290 | Action = ActionOk 291 | Align = alRight 292 | Caption = 'Ok' 293 | TabOrder = 0 294 | ExplicitLeft = 455 295 | end 296 | object BitBtn2: TBitBtn 297 | AlignWithMargins = True 298 | Left = 536 299 | Top = 3 300 | Width = 100 301 | Height = 35 302 | Action = ActionCancel 303 | Align = alRight 304 | Caption = 'Cancel' 305 | TabOrder = 1 306 | ExplicitLeft = 561 307 | end 308 | end 309 | object PopupMenuDestinations: TPopupMenu 310 | Images = dmDelphiLibraryHelper.ImageListCommon 311 | Left = 80 312 | Top = 191 313 | object CheckAll1: TMenuItem 314 | Caption = 'Check All' 315 | OnClick = CheckAll1Click 316 | end 317 | object UncheckAll1: TMenuItem 318 | Caption = 'Uncheck All' 319 | OnClick = UncheckAll1Click 320 | end 321 | end 322 | object ActionList: TActionList 323 | Images = dmDelphiLibraryHelper.ImageListCommon 324 | Left = 16 325 | Top = 191 326 | object ActionOk: TAction 327 | Caption = 'Ok' 328 | ImageIndex = 21 329 | OnExecute = ActionOkExecute 330 | OnUpdate = ActionOkUpdate 331 | end 332 | object ActionCancel: TAction 333 | Caption = 'Cancel' 334 | ImageIndex = 3 335 | OnExecute = ActionCancelExecute 336 | end 337 | object ActionSelectFolder: TAction 338 | ImageIndex = 9 339 | OnExecute = ActionSelectFolderExecute 340 | end 341 | end 342 | end 343 | -------------------------------------------------------------------------------- /source/__history/frmAddLibraryPathU.dfm.~2~: -------------------------------------------------------------------------------- 1 | object frmAddLibraryPath: TfrmAddLibraryPath 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | BorderStyle = bsDialog 6 | Caption = 'Add Library Path' 7 | ClientHeight = 278 8 | ClientWidth = 645 9 | Color = clBtnFace 10 | ParentFont = True 11 | Position = poOwnerFormCenter 12 | PixelsPerInch = 96 13 | TextHeight = 15 14 | object Panel1: TPanel 15 | AlignWithMargins = True 16 | Left = 3 17 | Top = 3 18 | Width = 639 19 | Height = 225 20 | Align = alClient 21 | BevelOuter = bvNone 22 | TabOrder = 0 23 | ExplicitHeight = 182 24 | object Label1: TLabel 25 | AlignWithMargins = True 26 | Left = 3 27 | Top = 3 28 | Width = 633 29 | Height = 15 30 | Align = alTop 31 | Caption = 'Library Path' 32 | ExplicitWidth = 63 33 | end 34 | object GroupBoxDestination: TGroupBox 35 | AlignWithMargins = True 36 | Left = 3 37 | Top = 53 38 | Width = 633 39 | Height = 169 40 | Align = alClient 41 | Caption = 'Destination' 42 | TabOrder = 1 43 | ExplicitHeight = 126 44 | object GridPanel1: TGridPanel 45 | AlignWithMargins = True 46 | Left = 5 47 | Top = 20 48 | Width = 623 49 | Height = 144 50 | Align = alClient 51 | BevelOuter = bvNone 52 | ColumnCollection = < 53 | item 54 | Value = 50.000000000000000000 55 | end 56 | item 57 | Value = 50.000000000000000000 58 | end> 59 | ControlCollection = < 60 | item 61 | Column = 0 62 | Control = cbAndroid32 63 | Row = 0 64 | end 65 | item 66 | Column = 1 67 | Control = cbIOS32 68 | Row = 0 69 | end 70 | item 71 | Column = 0 72 | Control = cbIOS64 73 | Row = 1 74 | end 75 | item 76 | Column = 1 77 | Control = cbIOSSimulator 78 | Row = 1 79 | end 80 | item 81 | Column = 0 82 | Control = cbOSX 83 | Row = 2 84 | end 85 | item 86 | Column = 1 87 | Control = cbWin32 88 | Row = 2 89 | end 90 | item 91 | Column = 0 92 | Control = cbWin64 93 | Row = 3 94 | end 95 | item 96 | Column = 1 97 | Control = cbLinux64 98 | Row = 3 99 | end> 100 | ExpandStyle = emFixedSize 101 | PopupMenu = PopupMenuDestinations 102 | RowCollection = < 103 | item 104 | Value = 25.000000000000000000 105 | end 106 | item 107 | Value = 25.000000000000000000 108 | end 109 | item 110 | Value = 25.000000000000000000 111 | end 112 | item 113 | Value = 25.000000000000000000 114 | end> 115 | TabOrder = 0 116 | ExplicitHeight = 101 117 | object cbAndroid32: TCheckBox 118 | AlignWithMargins = True 119 | Left = 3 120 | Top = 3 121 | Width = 306 122 | Height = 30 123 | Align = alClient 124 | Caption = 'Android32' 125 | PopupMenu = PopupMenuDestinations 126 | TabOrder = 0 127 | ExplicitHeight = 19 128 | end 129 | object cbIOS32: TCheckBox 130 | AlignWithMargins = True 131 | Left = 315 132 | Top = 3 133 | Width = 305 134 | Height = 30 135 | Align = alClient 136 | Caption = 'IOS32' 137 | PopupMenu = PopupMenuDestinations 138 | TabOrder = 1 139 | ExplicitHeight = 19 140 | end 141 | object cbIOS64: TCheckBox 142 | AlignWithMargins = True 143 | Left = 3 144 | Top = 39 145 | Width = 306 146 | Height = 30 147 | Align = alClient 148 | Caption = 'IOS64' 149 | PopupMenu = PopupMenuDestinations 150 | TabOrder = 2 151 | ExplicitTop = 28 152 | ExplicitHeight = 19 153 | end 154 | object cbIOSSimulator: TCheckBox 155 | AlignWithMargins = True 156 | Left = 315 157 | Top = 39 158 | Width = 305 159 | Height = 30 160 | Align = alClient 161 | Caption = 'IOSSimulator' 162 | PopupMenu = PopupMenuDestinations 163 | TabOrder = 3 164 | ExplicitTop = 28 165 | ExplicitHeight = 19 166 | end 167 | object cbOSX: TCheckBox 168 | AlignWithMargins = True 169 | Left = 3 170 | Top = 75 171 | Width = 306 172 | Height = 30 173 | Align = alClient 174 | Caption = 'OSX' 175 | PopupMenu = PopupMenuDestinations 176 | TabOrder = 4 177 | ExplicitTop = 53 178 | ExplicitHeight = 19 179 | end 180 | object cbWin32: TCheckBox 181 | AlignWithMargins = True 182 | Left = 315 183 | Top = 75 184 | Width = 305 185 | Height = 30 186 | Align = alClient 187 | Caption = 'Win32' 188 | PopupMenu = PopupMenuDestinations 189 | TabOrder = 5 190 | ExplicitTop = 53 191 | ExplicitHeight = 19 192 | end 193 | object cbWin64: TCheckBox 194 | AlignWithMargins = True 195 | Left = 3 196 | Top = 111 197 | Width = 306 198 | Height = 30 199 | Align = alClient 200 | Caption = 'Win64' 201 | PopupMenu = PopupMenuDestinations 202 | TabOrder = 6 203 | ExplicitTop = 78 204 | ExplicitHeight = 19 205 | end 206 | object cbLinux64: TCheckBox 207 | AlignWithMargins = True 208 | Left = 315 209 | Top = 111 210 | Width = 305 211 | Height = 30 212 | Align = alClient 213 | Caption = 'Linux64' 214 | PopupMenu = PopupMenuDestinations 215 | TabOrder = 7 216 | ExplicitTop = 78 217 | ExplicitHeight = 19 218 | end 219 | end 220 | end 221 | object Panel3: TPanel 222 | Left = 0 223 | Top = 21 224 | Width = 639 225 | Height = 29 226 | Align = alTop 227 | BevelOuter = bvNone 228 | TabOrder = 0 229 | object editPath: TComboBox 230 | AlignWithMargins = True 231 | Left = 3 232 | Top = 3 233 | Width = 552 234 | Height = 23 235 | Align = alClient 236 | Sorted = True 237 | TabOrder = 0 238 | OnDropDown = editPathDropDown 239 | end 240 | object BitBtn3: TBitBtn 241 | AlignWithMargins = True 242 | Left = 561 243 | Top = 3 244 | Width = 75 245 | Height = 23 246 | Action = ActionSelectFolder 247 | Align = alRight 248 | ImageIndex = 9 249 | Glyph.Data = { 250 | 36040000424D3604000000000000360000002800000010000000100000000100 251 | 2000000000000004000000000000000000000000000000000000FF00FF00FF00 252 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 253 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 254 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 255 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 256 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 257 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00049D 258 | FFFB00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 259 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF00FF00FF0000A0 260 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 261 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF41B2FFE1FF00FF00FF00FF0000A0 262 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 263 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 264 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 265 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 266 | FFFF00A0FFFF20C3FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 267 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 268 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 269 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 270 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 271 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 272 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 273 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 274 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 275 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 276 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00 277 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 278 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 279 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 280 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 281 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 282 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 283 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} 284 | TabOrder = 1 285 | end 286 | end 287 | end 288 | object Panel2: TPanel 289 | AlignWithMargins = True 290 | Left = 3 291 | Top = 234 292 | Width = 639 293 | Height = 41 294 | Align = alBottom 295 | BevelOuter = bvNone 296 | TabOrder = 1 297 | ExplicitTop = 191 298 | object BitBtn1: TBitBtn 299 | AlignWithMargins = True 300 | Left = 430 301 | Top = 3 302 | Width = 100 303 | Height = 35 304 | Action = ActionOk 305 | Align = alRight 306 | Caption = 'Ok' 307 | TabOrder = 0 308 | end 309 | object BitBtn2: TBitBtn 310 | AlignWithMargins = True 311 | Left = 536 312 | Top = 3 313 | Width = 100 314 | Height = 35 315 | Action = ActionCancel 316 | Align = alRight 317 | Caption = 'Cancel' 318 | TabOrder = 1 319 | end 320 | end 321 | object PopupMenuDestinations: TPopupMenu 322 | Images = dmDelphiLibraryHelper.ImageListCommon 323 | Left = 80 324 | Top = 191 325 | object CheckAll1: TMenuItem 326 | Caption = 'Check All' 327 | OnClick = CheckAll1Click 328 | end 329 | object UncheckAll1: TMenuItem 330 | Caption = 'Uncheck All' 331 | OnClick = UncheckAll1Click 332 | end 333 | end 334 | object ActionList: TActionList 335 | Images = dmDelphiLibraryHelper.ImageListCommon 336 | Left = 16 337 | Top = 191 338 | object ActionOk: TAction 339 | Caption = 'Ok' 340 | ImageIndex = 21 341 | OnExecute = ActionOkExecute 342 | OnUpdate = ActionOkUpdate 343 | end 344 | object ActionCancel: TAction 345 | Caption = 'Cancel' 346 | ImageIndex = 3 347 | OnExecute = ActionCancelExecute 348 | end 349 | object ActionSelectFolder: TAction 350 | ImageIndex = 9 351 | OnExecute = ActionSelectFolderExecute 352 | end 353 | end 354 | end 355 | -------------------------------------------------------------------------------- /source/__history/frmAddLibraryPathU.dfm.~3~: -------------------------------------------------------------------------------- 1 | object frmAddLibraryPath: TfrmAddLibraryPath 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | BorderStyle = bsDialog 6 | Caption = 'Add Library Path' 7 | ClientHeight = 278 8 | ClientWidth = 645 9 | Color = clBtnFace 10 | ParentFont = True 11 | Position = poOwnerFormCenter 12 | PixelsPerInch = 96 13 | TextHeight = 15 14 | object Panel1: TPanel 15 | AlignWithMargins = True 16 | Left = 3 17 | Top = 3 18 | Width = 639 19 | Height = 225 20 | Align = alClient 21 | BevelOuter = bvNone 22 | TabOrder = 0 23 | ExplicitHeight = 182 24 | object Label1: TLabel 25 | AlignWithMargins = True 26 | Left = 3 27 | Top = 3 28 | Width = 633 29 | Height = 15 30 | Align = alTop 31 | Caption = 'Library Path' 32 | ExplicitWidth = 63 33 | end 34 | object GroupBoxDestination: TGroupBox 35 | AlignWithMargins = True 36 | Left = 3 37 | Top = 53 38 | Width = 633 39 | Height = 169 40 | Align = alClient 41 | Caption = 'Destination' 42 | TabOrder = 1 43 | ExplicitHeight = 126 44 | object GridPanel1: TGridPanel 45 | AlignWithMargins = True 46 | Left = 5 47 | Top = 20 48 | Width = 623 49 | Height = 144 50 | Align = alClient 51 | BevelOuter = bvNone 52 | ColumnCollection = < 53 | item 54 | Value = 50.000000000000000000 55 | end 56 | item 57 | Value = 50.000000000000000000 58 | end> 59 | ControlCollection = < 60 | item 61 | Column = 0 62 | Control = cbAndroid32 63 | Row = 0 64 | end 65 | item 66 | Column = 1 67 | Control = cbIOS32 68 | Row = 0 69 | end 70 | item 71 | Column = 0 72 | Control = cbIOS64 73 | Row = 1 74 | end 75 | item 76 | Column = 1 77 | Control = cbIOSSimulator 78 | Row = 1 79 | end 80 | item 81 | Column = 0 82 | Control = cbOSX 83 | Row = 2 84 | end 85 | item 86 | Column = 1 87 | Control = cbWin32 88 | Row = 2 89 | end 90 | item 91 | Column = 0 92 | Control = cbWin64 93 | Row = 3 94 | end 95 | item 96 | Column = 1 97 | Control = cbLinux64 98 | Row = 3 99 | end> 100 | ExpandStyle = emFixedSize 101 | PopupMenu = PopupMenuDestinations 102 | RowCollection = < 103 | item 104 | Value = 25.000000000000000000 105 | end 106 | item 107 | Value = 25.000000000000000000 108 | end 109 | item 110 | Value = 25.000000000000000000 111 | end 112 | item 113 | Value = 25.000000000000000000 114 | end> 115 | TabOrder = 0 116 | ExplicitHeight = 101 117 | object cbAndroid32: TCheckBox 118 | AlignWithMargins = True 119 | Left = 3 120 | Top = 3 121 | Width = 306 122 | Height = 30 123 | Align = alClient 124 | Caption = 'Android32' 125 | PopupMenu = PopupMenuDestinations 126 | TabOrder = 0 127 | ExplicitHeight = 19 128 | end 129 | object cbIOS32: TCheckBox 130 | AlignWithMargins = True 131 | Left = 315 132 | Top = 3 133 | Width = 305 134 | Height = 30 135 | Align = alClient 136 | Caption = 'IOS32' 137 | PopupMenu = PopupMenuDestinations 138 | TabOrder = 1 139 | ExplicitHeight = 19 140 | end 141 | object cbIOS64: TCheckBox 142 | AlignWithMargins = True 143 | Left = 3 144 | Top = 39 145 | Width = 306 146 | Height = 30 147 | Align = alClient 148 | Caption = 'IOS64' 149 | PopupMenu = PopupMenuDestinations 150 | TabOrder = 2 151 | ExplicitTop = 28 152 | ExplicitHeight = 19 153 | end 154 | object cbIOSSimulator: TCheckBox 155 | AlignWithMargins = True 156 | Left = 315 157 | Top = 39 158 | Width = 305 159 | Height = 30 160 | Align = alClient 161 | Caption = 'IOSSimulator' 162 | PopupMenu = PopupMenuDestinations 163 | TabOrder = 3 164 | ExplicitTop = 28 165 | ExplicitHeight = 19 166 | end 167 | object cbOSX: TCheckBox 168 | AlignWithMargins = True 169 | Left = 3 170 | Top = 75 171 | Width = 306 172 | Height = 30 173 | Align = alClient 174 | Caption = 'OSX' 175 | PopupMenu = PopupMenuDestinations 176 | TabOrder = 4 177 | ExplicitTop = 53 178 | ExplicitHeight = 19 179 | end 180 | object cbWin32: TCheckBox 181 | AlignWithMargins = True 182 | Left = 315 183 | Top = 75 184 | Width = 305 185 | Height = 30 186 | Align = alClient 187 | Caption = 'Win32' 188 | PopupMenu = PopupMenuDestinations 189 | TabOrder = 5 190 | ExplicitTop = 53 191 | ExplicitHeight = 19 192 | end 193 | object cbWin64: TCheckBox 194 | AlignWithMargins = True 195 | Left = 3 196 | Top = 111 197 | Width = 306 198 | Height = 30 199 | Align = alClient 200 | Caption = 'Win64' 201 | PopupMenu = PopupMenuDestinations 202 | TabOrder = 6 203 | ExplicitTop = 78 204 | ExplicitHeight = 19 205 | end 206 | object cbLinux64: TCheckBox 207 | AlignWithMargins = True 208 | Left = 315 209 | Top = 111 210 | Width = 305 211 | Height = 30 212 | Align = alClient 213 | Caption = 'Linux64' 214 | PopupMenu = PopupMenuDestinations 215 | TabOrder = 7 216 | ExplicitTop = 78 217 | ExplicitHeight = 19 218 | end 219 | end 220 | end 221 | object Panel3: TPanel 222 | Left = 0 223 | Top = 21 224 | Width = 639 225 | Height = 29 226 | Align = alTop 227 | BevelOuter = bvNone 228 | TabOrder = 0 229 | object editPath: TComboBox 230 | AlignWithMargins = True 231 | Left = 3 232 | Top = 3 233 | Width = 552 234 | Height = 23 235 | Align = alClient 236 | Sorted = True 237 | TabOrder = 0 238 | OnDropDown = editPathDropDown 239 | end 240 | object BitBtn3: TBitBtn 241 | AlignWithMargins = True 242 | Left = 561 243 | Top = 3 244 | Width = 75 245 | Height = 23 246 | Action = ActionSelectFolder 247 | Align = alRight 248 | ImageIndex = 9 249 | Glyph.Data = { 250 | 36040000424D3604000000000000360000002800000010000000100000000100 251 | 2000000000000004000000000000000000000000000000000000FF00FF00FF00 252 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 253 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 254 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 255 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 256 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 257 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00049D 258 | FFFB00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 259 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF00FF00FF0000A0 260 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 261 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF41B2FFE1FF00FF00FF00FF0000A0 262 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 263 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 264 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 265 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 266 | FFFF00A0FFFF20C3FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 267 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 268 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 269 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 270 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 271 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 272 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 273 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 274 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 275 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 276 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00 277 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 278 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 279 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 280 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 281 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 282 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 283 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} 284 | TabOrder = 1 285 | end 286 | end 287 | end 288 | object Panel2: TPanel 289 | AlignWithMargins = True 290 | Left = 3 291 | Top = 234 292 | Width = 639 293 | Height = 41 294 | Align = alBottom 295 | BevelOuter = bvNone 296 | TabOrder = 1 297 | ExplicitTop = 191 298 | object BitBtn1: TBitBtn 299 | AlignWithMargins = True 300 | Left = 430 301 | Top = 3 302 | Width = 100 303 | Height = 35 304 | Action = ActionOk 305 | Align = alRight 306 | Caption = 'Ok' 307 | TabOrder = 0 308 | end 309 | object BitBtn2: TBitBtn 310 | AlignWithMargins = True 311 | Left = 536 312 | Top = 3 313 | Width = 100 314 | Height = 35 315 | Action = ActionCancel 316 | Align = alRight 317 | Caption = 'Cancel' 318 | TabOrder = 1 319 | end 320 | end 321 | object PopupMenuDestinations: TPopupMenu 322 | Images = dmDelphiLibraryHelper.ImageListCommon 323 | Left = 80 324 | Top = 191 325 | object CheckAll1: TMenuItem 326 | Caption = 'Check All' 327 | OnClick = CheckAll1Click 328 | end 329 | object UncheckAll1: TMenuItem 330 | Caption = 'Uncheck All' 331 | OnClick = UncheckAll1Click 332 | end 333 | end 334 | object ActionList: TActionList 335 | Images = dmDelphiLibraryHelper.ImageListCommon 336 | Left = 16 337 | Top = 191 338 | object ActionOk: TAction 339 | Caption = 'Ok' 340 | ImageIndex = 21 341 | OnExecute = ActionOkExecute 342 | OnUpdate = ActionOkUpdate 343 | end 344 | object ActionCancel: TAction 345 | Caption = 'Cancel' 346 | ImageIndex = 3 347 | OnExecute = ActionCancelExecute 348 | end 349 | object ActionSelectFolder: TAction 350 | ImageIndex = 9 351 | OnExecute = ActionSelectFolderExecute 352 | end 353 | end 354 | end 355 | -------------------------------------------------------------------------------- /source/__history/frmFindReplaceU.dfm.~1~: -------------------------------------------------------------------------------- 1 | object frmFindReplace: TfrmFindReplace 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu] 5 | BorderStyle = bsDialog 6 | Caption = 'Find Replace' 7 | ClientHeight = 310 8 | ClientWidth = 451 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | OldCreateOrder = False 16 | Position = poOwnerFormCenter 17 | OnShow = FormShow 18 | PixelsPerInch = 96 19 | TextHeight = 13 20 | object Panel1: TPanel 21 | AlignWithMargins = True 22 | Left = 3 23 | Top = 3 24 | Width = 445 25 | Height = 110 26 | Align = alTop 27 | BevelOuter = bvNone 28 | TabOrder = 0 29 | object Panel3: TPanel 30 | Left = 336 31 | Top = 0 32 | Width = 109 33 | Height = 110 34 | Align = alRight 35 | BevelOuter = bvNone 36 | TabOrder = 1 37 | object cbIgnoreCase: TCheckBox 38 | AlignWithMargins = True 39 | Left = 3 40 | Top = 3 41 | Width = 103 42 | Height = 17 43 | Align = alTop 44 | Caption = 'Ignore case' 45 | Checked = True 46 | State = cbChecked 47 | TabOrder = 0 48 | end 49 | end 50 | object Panel4: TPanel 51 | Left = 0 52 | Top = 0 53 | Width = 336 54 | Height = 110 55 | Align = alClient 56 | BevelOuter = bvNone 57 | TabOrder = 0 58 | object Label1: TLabel 59 | AlignWithMargins = True 60 | Left = 3 61 | Top = 46 62 | Width = 330 63 | Height = 13 64 | Align = alTop 65 | Caption = 'Replace' 66 | ExplicitTop = 49 67 | ExplicitWidth = 38 68 | end 69 | object Label2: TLabel 70 | AlignWithMargins = True 71 | Left = 3 72 | Top = 3 73 | Width = 330 74 | Height = 13 75 | Align = alTop 76 | Caption = 'Find' 77 | ExplicitWidth = 20 78 | end 79 | object editFind: TComboBox 80 | AlignWithMargins = True 81 | Left = 3 82 | Top = 19 83 | Width = 330 84 | Height = 21 85 | Align = alTop 86 | TabOrder = 0 87 | end 88 | object editReplace: TComboBox 89 | AlignWithMargins = True 90 | Left = 3 91 | Top = 62 92 | Width = 330 93 | Height = 21 94 | Align = alTop 95 | TabOrder = 1 96 | end 97 | end 98 | end 99 | object Panel2: TPanel 100 | AlignWithMargins = True 101 | Left = 3 102 | Top = 266 103 | Width = 445 104 | Height = 41 105 | Align = alBottom 106 | BevelOuter = bvNone 107 | TabOrder = 2 108 | object btnOk: TBitBtn 109 | AlignWithMargins = True 110 | Left = 236 111 | Top = 3 112 | Width = 100 113 | Height = 35 114 | Action = ActionReplace 115 | Align = alRight 116 | Caption = 'Replace' 117 | TabOrder = 0 118 | ExplicitLeft = 286 119 | end 120 | object btnCancel: TBitBtn 121 | AlignWithMargins = True 122 | Left = 342 123 | Top = 3 124 | Width = 100 125 | Height = 35 126 | Action = ActionCancel 127 | Align = alRight 128 | Caption = 'Cancel' 129 | TabOrder = 1 130 | ExplicitLeft = 367 131 | end 132 | end 133 | object GroupBoxDestination: TGroupBox 134 | AlignWithMargins = True 135 | Left = 3 136 | Top = 119 137 | Width = 445 138 | Height = 141 139 | Align = alClient 140 | Caption = 'Library' 141 | TabOrder = 1 142 | object GridPanel1: TGridPanel 143 | AlignWithMargins = True 144 | Left = 5 145 | Top = 18 146 | Width = 435 147 | Height = 118 148 | Align = alClient 149 | BevelOuter = bvNone 150 | ColumnCollection = < 151 | item 152 | Value = 50.000000000000000000 153 | end 154 | item 155 | Value = 50.000000000000000000 156 | end> 157 | ControlCollection = < 158 | item 159 | Column = 0 160 | Control = cbAndroid32 161 | Row = 0 162 | end 163 | item 164 | Column = 1 165 | Control = cbIOS32 166 | Row = 0 167 | end 168 | item 169 | Column = 0 170 | Control = cbIOS64 171 | Row = 1 172 | end 173 | item 174 | Column = 1 175 | Control = cbIOSSimulator 176 | Row = 1 177 | end 178 | item 179 | Column = 0 180 | Control = cbOSX 181 | Row = 2 182 | end 183 | item 184 | Column = 1 185 | Control = cbWin32 186 | Row = 2 187 | end 188 | item 189 | Column = 0 190 | Control = cbWin64 191 | Row = 3 192 | end 193 | item 194 | Column = 1 195 | Control = cbLinux64 196 | Row = 3 197 | end> 198 | ExpandStyle = emFixedSize 199 | PopupMenu = PopupMenuLibrary 200 | RowCollection = < 201 | item 202 | SizeStyle = ssAbsolute 203 | Value = 25.000000000000000000 204 | end 205 | item 206 | SizeStyle = ssAbsolute 207 | Value = 25.000000000000000000 208 | end 209 | item 210 | SizeStyle = ssAbsolute 211 | Value = 25.000000000000000000 212 | end 213 | item 214 | SizeStyle = ssAbsolute 215 | Value = 25.000000000000000000 216 | end> 217 | TabOrder = 0 218 | object cbAndroid32: TCheckBox 219 | AlignWithMargins = True 220 | Left = 3 221 | Top = 3 222 | Width = 211 223 | Height = 19 224 | Align = alClient 225 | Caption = 'Android32' 226 | PopupMenu = PopupMenuLibrary 227 | TabOrder = 0 228 | end 229 | object cbIOS32: TCheckBox 230 | AlignWithMargins = True 231 | Left = 220 232 | Top = 3 233 | Width = 212 234 | Height = 19 235 | Align = alClient 236 | Caption = 'IOS32' 237 | PopupMenu = PopupMenuLibrary 238 | TabOrder = 1 239 | end 240 | object cbIOS64: TCheckBox 241 | AlignWithMargins = True 242 | Left = 3 243 | Top = 28 244 | Width = 211 245 | Height = 19 246 | Align = alClient 247 | Caption = 'IOS64' 248 | PopupMenu = PopupMenuLibrary 249 | TabOrder = 2 250 | end 251 | object cbIOSSimulator: TCheckBox 252 | AlignWithMargins = True 253 | Left = 220 254 | Top = 28 255 | Width = 212 256 | Height = 19 257 | Align = alClient 258 | Caption = 'IOSSimulator' 259 | PopupMenu = PopupMenuLibrary 260 | TabOrder = 3 261 | end 262 | object cbOSX: TCheckBox 263 | AlignWithMargins = True 264 | Left = 3 265 | Top = 53 266 | Width = 211 267 | Height = 19 268 | Align = alClient 269 | Caption = 'OSX' 270 | PopupMenu = PopupMenuLibrary 271 | TabOrder = 4 272 | end 273 | object cbWin32: TCheckBox 274 | AlignWithMargins = True 275 | Left = 220 276 | Top = 53 277 | Width = 212 278 | Height = 19 279 | Align = alClient 280 | Caption = 'Win32' 281 | PopupMenu = PopupMenuLibrary 282 | TabOrder = 5 283 | end 284 | object cbWin64: TCheckBox 285 | AlignWithMargins = True 286 | Left = 3 287 | Top = 78 288 | Width = 211 289 | Height = 19 290 | Align = alClient 291 | Caption = 'Win64' 292 | PopupMenu = PopupMenuLibrary 293 | TabOrder = 6 294 | end 295 | object cbLinux64: TCheckBox 296 | AlignWithMargins = True 297 | Left = 220 298 | Top = 78 299 | Width = 212 300 | Height = 19 301 | Align = alClient 302 | Caption = 'Linux64' 303 | PopupMenu = PopupMenuLibrary 304 | TabOrder = 7 305 | end 306 | end 307 | end 308 | object ActionList: TActionList 309 | Images = dmDelphiLibraryHelper.ImageListCommon 310 | Left = 56 311 | Top = 112 312 | object ActionReplace: TAction 313 | Caption = 'Replace' 314 | ImageIndex = 13 315 | OnExecute = ActionReplaceExecute 316 | end 317 | object ActionCancel: TAction 318 | Caption = 'Cancel' 319 | ImageIndex = 3 320 | OnExecute = ActionCancelExecute 321 | end 322 | end 323 | object PopupMenuLibrary: TPopupMenu 324 | Images = dmDelphiLibraryHelper.ImageListCommon 325 | Left = 152 326 | Top = 111 327 | object CheckAll1: TMenuItem 328 | Caption = 'Check All' 329 | OnClick = CheckAll1Click 330 | end 331 | object UncheckAll1: TMenuItem 332 | Caption = 'Uncheck All' 333 | OnClick = UncheckAll1Click 334 | end 335 | end 336 | end 337 | -------------------------------------------------------------------------------- /source/__history/frmLoggingU.dfm.~1~: -------------------------------------------------------------------------------- 1 | object frmLogging: TfrmLogging 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | Caption = 'Log' 6 | ClientHeight = 561 7 | ClientWidth = 784 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object memoLog: TMemo 18 | AlignWithMargins = True 19 | Left = 3 20 | Top = 3 21 | Width = 778 22 | Height = 555 23 | Align = alClient 24 | ReadOnly = True 25 | ScrollBars = ssBoth 26 | TabOrder = 0 27 | WordWrap = False 28 | ExplicitWidth = 629 29 | ExplicitHeight = 293 30 | end 31 | object TimerLog: TTimer 32 | Interval = 5000 33 | OnTimer = TimerLogTimer 34 | Left = 60 35 | Top = 48 36 | end 37 | end 38 | -------------------------------------------------------------------------------- /source/__history/frmSearchU.dfm.~1~: -------------------------------------------------------------------------------- 1 | object frmSearch: TfrmSearch 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | BorderStyle = bsSingle 6 | Caption = 'Search' 7 | ClientHeight = 459 8 | ClientWidth = 834 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | OldCreateOrder = False 16 | Position = poOwnerFormCenter 17 | OnShow = FormShow 18 | PixelsPerInch = 96 19 | TextHeight = 13 20 | object Panel1: TPanel 21 | AlignWithMargins = True 22 | Left = 3 23 | Top = 3 24 | Width = 828 25 | Height = 62 26 | Align = alTop 27 | BevelOuter = bvNone 28 | TabOrder = 0 29 | object Panel3: TPanel 30 | Left = 719 31 | Top = 0 32 | Width = 109 33 | Height = 62 34 | Align = alRight 35 | BevelOuter = bvNone 36 | TabOrder = 1 37 | object cbIgnoreCase: TCheckBox 38 | AlignWithMargins = True 39 | Left = 3 40 | Top = 3 41 | Width = 103 42 | Height = 17 43 | Align = alTop 44 | Caption = 'Ignore case' 45 | Checked = True 46 | State = cbChecked 47 | TabOrder = 0 48 | end 49 | end 50 | object Panel4: TPanel 51 | Left = 0 52 | Top = 0 53 | Width = 719 54 | Height = 62 55 | Align = alClient 56 | BevelOuter = bvNone 57 | TabOrder = 0 58 | object Label2: TLabel 59 | AlignWithMargins = True 60 | Left = 3 61 | Top = 3 62 | Width = 713 63 | Height = 13 64 | Align = alTop 65 | Caption = 'Find' 66 | ExplicitWidth = 20 67 | end 68 | object editFind: TComboBox 69 | AlignWithMargins = True 70 | Left = 3 71 | Top = 19 72 | Width = 713 73 | Height = 21 74 | Align = alTop 75 | TabOrder = 0 76 | OnKeyDown = editFindKeyDown 77 | end 78 | end 79 | end 80 | object Panel2: TPanel 81 | AlignWithMargins = True 82 | Left = 3 83 | Top = 415 84 | Width = 828 85 | Height = 41 86 | Align = alBottom 87 | BevelOuter = bvNone 88 | TabOrder = 3 89 | object btnOk: TBitBtn 90 | AlignWithMargins = True 91 | Left = 619 92 | Top = 3 93 | Width = 100 94 | Height = 35 95 | Action = ActionFind 96 | Align = alRight 97 | Caption = 'Search' 98 | TabOrder = 0 99 | ExplicitLeft = 639 100 | end 101 | object btnCancel: TBitBtn 102 | AlignWithMargins = True 103 | Left = 725 104 | Top = 3 105 | Width = 100 106 | Height = 35 107 | Action = ActionClose 108 | Align = alRight 109 | Caption = 'Close' 110 | TabOrder = 1 111 | ExplicitLeft = 745 112 | end 113 | end 114 | object GroupBoxDestination: TGroupBox 115 | AlignWithMargins = True 116 | Left = 3 117 | Top = 71 118 | Width = 828 119 | Height = 143 120 | Align = alTop 121 | Caption = 'Library' 122 | TabOrder = 1 123 | object GridPanel1: TGridPanel 124 | AlignWithMargins = True 125 | Left = 5 126 | Top = 18 127 | Width = 818 128 | Height = 120 129 | Align = alClient 130 | BevelOuter = bvNone 131 | ColumnCollection = < 132 | item 133 | Value = 50.000000000000000000 134 | end 135 | item 136 | Value = 50.000000000000000000 137 | end> 138 | ControlCollection = < 139 | item 140 | Column = 0 141 | Control = cbAndroid32 142 | Row = 0 143 | end 144 | item 145 | Column = 1 146 | Control = cbIOS32 147 | Row = 0 148 | end 149 | item 150 | Column = 0 151 | Control = cbIOS64 152 | Row = 1 153 | end 154 | item 155 | Column = 1 156 | Control = cbIOSSimulator 157 | Row = 1 158 | end 159 | item 160 | Column = 0 161 | Control = cbOSX 162 | Row = 2 163 | end 164 | item 165 | Column = 1 166 | Control = cbWin32 167 | Row = 2 168 | end 169 | item 170 | Column = 0 171 | Control = cbWin64 172 | Row = 3 173 | end 174 | item 175 | Column = 1 176 | Control = cbLinux64 177 | Row = 3 178 | end> 179 | ExpandStyle = emFixedSize 180 | PopupMenu = PopupMenuLibrary 181 | RowCollection = < 182 | item 183 | SizeStyle = ssAbsolute 184 | Value = 25.000000000000000000 185 | end 186 | item 187 | SizeStyle = ssAbsolute 188 | Value = 25.000000000000000000 189 | end 190 | item 191 | SizeStyle = ssAbsolute 192 | Value = 25.000000000000000000 193 | end 194 | item 195 | SizeStyle = ssAbsolute 196 | Value = 25.000000000000000000 197 | end> 198 | TabOrder = 0 199 | object cbAndroid32: TCheckBox 200 | AlignWithMargins = True 201 | Left = 3 202 | Top = 3 203 | Width = 403 204 | Height = 19 205 | Align = alClient 206 | Caption = 'Android32' 207 | PopupMenu = PopupMenuLibrary 208 | TabOrder = 0 209 | end 210 | object cbIOS32: TCheckBox 211 | AlignWithMargins = True 212 | Left = 412 213 | Top = 3 214 | Width = 403 215 | Height = 19 216 | Align = alClient 217 | Caption = 'IOS32' 218 | PopupMenu = PopupMenuLibrary 219 | TabOrder = 1 220 | end 221 | object cbIOS64: TCheckBox 222 | AlignWithMargins = True 223 | Left = 3 224 | Top = 28 225 | Width = 403 226 | Height = 19 227 | Align = alClient 228 | Caption = 'IOS64' 229 | PopupMenu = PopupMenuLibrary 230 | TabOrder = 2 231 | end 232 | object cbIOSSimulator: TCheckBox 233 | AlignWithMargins = True 234 | Left = 412 235 | Top = 28 236 | Width = 403 237 | Height = 19 238 | Align = alClient 239 | Caption = 'IOSSimulator' 240 | PopupMenu = PopupMenuLibrary 241 | TabOrder = 3 242 | end 243 | object cbOSX: TCheckBox 244 | AlignWithMargins = True 245 | Left = 3 246 | Top = 53 247 | Width = 403 248 | Height = 19 249 | Align = alClient 250 | Caption = 'OSX' 251 | PopupMenu = PopupMenuLibrary 252 | TabOrder = 4 253 | end 254 | object cbWin32: TCheckBox 255 | AlignWithMargins = True 256 | Left = 412 257 | Top = 53 258 | Width = 403 259 | Height = 19 260 | Align = alClient 261 | Caption = 'Win32' 262 | PopupMenu = PopupMenuLibrary 263 | TabOrder = 5 264 | end 265 | object cbWin64: TCheckBox 266 | AlignWithMargins = True 267 | Left = 3 268 | Top = 78 269 | Width = 403 270 | Height = 19 271 | Align = alClient 272 | Caption = 'Win64' 273 | PopupMenu = PopupMenuLibrary 274 | TabOrder = 6 275 | end 276 | object cbLinux64: TCheckBox 277 | AlignWithMargins = True 278 | Left = 412 279 | Top = 78 280 | Width = 403 281 | Height = 19 282 | Align = alClient 283 | Caption = 'Linux64' 284 | PopupMenu = PopupMenuLibrary 285 | TabOrder = 7 286 | end 287 | end 288 | end 289 | object ListViewSearch: TListView 290 | AlignWithMargins = True 291 | Left = 3 292 | Top = 220 293 | Width = 828 294 | Height = 189 295 | Align = alClient 296 | Columns = < 297 | item 298 | AutoSize = True 299 | Caption = 'Entry' 300 | end 301 | item 302 | AutoSize = True 303 | Caption = 'Path' 304 | end 305 | item 306 | Caption = 'Library' 307 | Width = 120 308 | end> 309 | GridLines = True 310 | Items.ItemData = {} 311 | ReadOnly = True 312 | RowSelect = True 313 | TabOrder = 2 314 | ViewStyle = vsReport 315 | end 316 | object ActionList: TActionList 317 | Images = dmDelphiLibraryHelper.ImageListCommon 318 | Left = 56 319 | Top = 112 320 | object ActionFind: TAction 321 | Caption = 'Search' 322 | ImageIndex = 15 323 | OnExecute = ActionFindExecute 324 | end 325 | object ActionClose: TAction 326 | Caption = 'Close' 327 | ImageIndex = 3 328 | OnExecute = ActionCloseExecute 329 | end 330 | end 331 | object PopupMenuLibrary: TPopupMenu 332 | Left = 152 333 | Top = 111 334 | object CheckAll1: TMenuItem 335 | Caption = 'Check All' 336 | OnClick = CheckAll1Click 337 | end 338 | object UncheckAll1: TMenuItem 339 | Caption = 'Uncheck All' 340 | OnClick = UncheckAll1Click 341 | end 342 | end 343 | end 344 | -------------------------------------------------------------------------------- /source/__history/version.rc.~1~: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,1,1,0 3 | PRODUCTVERSION 1,0,0,0 4 | FILEFLAGSMASK 0x3fL 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x1L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Little Earth Solutions\0" 19 | VALUE "ProductVersion", "1.0.0.0\0" 20 | VALUE "FileVersion", "1.1.1.0\0" 21 | VALUE "InternalName", "LazyREST\0" 22 | VALUE "FileDescription", "LazyREST - Quick REST Server\0" 23 | VALUE "LegalCopyright", "Copyright Little Earth Solutions 2021\0" 24 | VALUE "ProductName", "LazyREST\0" 25 | END 26 | END 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1200 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /source/__history/version.rc.~2~: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,0,11,0 3 | PRODUCTVERSION 1,0,0,0 4 | FILEFLAGSMASK 0x3fL 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x1L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Little Earth Solutions\0" 19 | VALUE "ProductVersion", "1.0.0.0\0" 20 | VALUE "FileVersion", "1.1.1.0\0" 21 | VALUE "InternalName", "LazyREST\0" 22 | VALUE "FileDescription", "LazyREST - Quick REST Server\0" 23 | VALUE "LegalCopyright", "Copyright Little Earth Solutions 2021\0" 24 | VALUE "ProductName", "LazyREST\0" 25 | END 26 | END 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1200 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /source/__history/version.rc.~3~: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,0,11,0 3 | PRODUCTVERSION 1,0,0,0 4 | FILEFLAGSMASK 0x3fL 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x1L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Little Earth Solutions\0" 19 | VALUE "ProductVersion", "1.0.0.0\0" 20 | VALUE "FileVersion", "1.0.11.0\0" 21 | VALUE "InternalName", "LazyREST\0" 22 | VALUE "FileDescription", "LazyREST - Quick REST Server\0" 23 | VALUE "LegalCopyright", "Copyright Little Earth Solutions 2021\0" 24 | VALUE "ProductName", "LazyREST\0" 25 | END 26 | END 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1200 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /source/__history/version.rc.~4~: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,0,11,0 3 | PRODUCTVERSION 1,0,0,0 4 | FILEFLAGSMASK 0x3fL 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x1L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Little Earth Solutions\0" 19 | VALUE "ProductVersion", "1.0.0.0\0" 20 | VALUE "FileVersion", "1.0.11.0\0" 21 | VALUE "InternalName", "Delphi Library Helper\0" 22 | VALUE "FileDescription", "LazyREST - Quick REST Server\0" 23 | VALUE "LegalCopyright", "Copyright Little Earth Solutions 2021\0" 24 | VALUE "ProductName", "LazyREST\0" 25 | END 26 | END 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1200 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /source/__history/version.rc.~5~: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,0,11,0 3 | PRODUCTVERSION 1,0,0,0 4 | FILEFLAGSMASK 0x3fL 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x1L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Little Earth Solutions\0" 19 | VALUE "ProductVersion", "1.0.0.0\0" 20 | VALUE "FileVersion", "1.0.11.0\0" 21 | VALUE "InternalName", "Delphi Library Helper\0" 22 | VALUE "FileDescription", "Delphi Library Helper\0" 23 | VALUE "LegalCopyright", "Copyright Little Earth Solutions 2021\0" 24 | VALUE "ProductName", "LazyREST\0" 25 | END 26 | END 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1200 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /source/__history/version.rc.~6~: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,0,11,0 3 | PRODUCTVERSION 1,0,0,0 4 | FILEFLAGSMASK 0x3fL 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x1L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Little Earth Solutions\0" 19 | VALUE "ProductVersion", "1.0.0.0\0" 20 | VALUE "FileVersion", "1.0.11.0\0" 21 | VALUE "InternalName", "Delphi Library Helper\0" 22 | VALUE "FileDescription", "Delphi Library Helper\0" 23 | VALUE "LegalCopyright", "Copyright Little Earth Solutions 2022\0" 24 | VALUE "ProductName", "LazyREST\0" 25 | END 26 | END 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1200 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /source/dmDelphiLibraryHelperU.pas: -------------------------------------------------------------------------------- 1 | unit dmDelphiLibraryHelperU; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Classes, System.ImageList, Vcl.ImgList, Vcl.Controls; 7 | 8 | type 9 | TdmDelphiLibraryHelper = class(TDataModule) 10 | ImageListCommon: TImageList; 11 | private 12 | { Private declarations } 13 | public 14 | { Public declarations } 15 | end; 16 | 17 | var 18 | dmDelphiLibraryHelper: TdmDelphiLibraryHelper; 19 | 20 | implementation 21 | 22 | {%CLASSGROUP 'Vcl.Controls.TControl'} 23 | 24 | {$R *.dfm} 25 | 26 | end. 27 | -------------------------------------------------------------------------------- /source/frmAboutU.dfm: -------------------------------------------------------------------------------- 1 | object frmAbout: TfrmAbout 2 | Left = 200 3 | Top = 108 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | Caption = 'About' 6 | ClientHeight = 361 7 | ClientWidth = 384 8 | Color = clBtnFace 9 | ParentFont = True 10 | Position = poScreenCenter 11 | OnCreate = FormCreate 12 | PixelsPerInch = 96 13 | TextHeight = 15 14 | object Panel1: TPanel 15 | AlignWithMargins = True 16 | Left = 3 17 | Top = 3 18 | Width = 378 19 | Height = 308 20 | Align = alClient 21 | BevelInner = bvRaised 22 | BevelOuter = bvLowered 23 | ParentColor = True 24 | TabOrder = 0 25 | ExplicitWidth = 292 26 | ExplicitHeight = 219 27 | object Comments: TLabel 28 | AlignWithMargins = True 29 | Left = 5 30 | Top = 111 31 | Width = 368 32 | Height = 15 33 | Align = alTop 34 | Alignment = taCenter 35 | Caption = 'Comments' 36 | Layout = tlCenter 37 | WordWrap = True 38 | IsControl = True 39 | ExplicitWidth = 59 40 | end 41 | object Bevel1: TBevel 42 | AlignWithMargins = True 43 | Left = 5 44 | Top = 96 45 | Width = 368 46 | Height = 9 47 | Align = alTop 48 | Shape = bsTopLine 49 | ExplicitWidth = 282 50 | end 51 | object Panel3: TPanel 52 | Left = 2 53 | Top = 2 54 | Width = 374 55 | Height = 91 56 | Align = alTop 57 | BevelOuter = bvNone 58 | TabOrder = 0 59 | ExplicitWidth = 288 60 | object Panel4: TPanel 61 | AlignWithMargins = True 62 | Left = 3 63 | Top = 3 64 | Width = 90 65 | Height = 85 66 | Align = alLeft 67 | BevelOuter = bvNone 68 | TabOrder = 0 69 | object ProgramIcon: TImage 70 | AlignWithMargins = True 71 | Left = 3 72 | Top = 3 73 | Width = 84 74 | Height = 79 75 | Align = alClient 76 | Picture.Data = { 77 | 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000400000 78 | 00400806000000AA6971DE00000006624B474400FF00FF00FFA0BDA793000002 79 | B54944415478DAED9ACF6B134114C7BB4B36D6250A22A227E9419A930AE6D2B3 80 | 1EF51AC9263186A5841AA51EFC07F22F5835D2A5CAB224BB62AE7AD4B397148A 81 | A78820F556B014A12C31091BBFA339C8D2CC6E3686C98FF7856167C8DB79EF7D 82 | 66E6CD422B2D2DB824D101881601101D80681100D10188160110E9BC582C2EB3 83 | A7699AED850290CBE5AE4A92F4A8DFEF6B7F82902407FDE7F57AFDF3DC022895 84 | 4A8AEBBA1A12DDC43035C4AC09185BAAAA3A866174E702403A9DBEA0288A8EC4 85 | 36305C09F9DA3780DA467BE538CE8F9904806DBE86471949DC45F2A7A2CC8177 86 | 7FE1DDB7E856713C3E4D3D006C7315DB3C8BC01F607823C09C25F402B6C8512A 87 | A3BF1660BF0BDB6A229160C7C39D2A00F97CFE3A827B826E1A6D99637A84640D 88 | 59965F5B96F5E5DF1F0A85C2AAE7793AE62961788E33C731E6B0F1ACD66AB53D 89 | 610070B64FE36CDF43302CE05480F91E5BBD6EB76B371A8D639EA1AEEB67DAED 90 | B606480FF1CEB580799BB031E2F1B815F52A1D194026935989C5621B705CC4F0 91 | 22C79455F137B07B6ADB76334A70D96C3605C08F995B3485637A003B133BE825 92 | 7CED4F0280A469DA1DAC0ABBC26EA2C91CDBEF6CB5D14C54F0832889FB850FA6 93 | 4B9D4EE7FEA0565CE6987A681F01620BBEDFA1DF1F0B00CEE5F95EAFB70EC7EB 94 | 185EE19832471F98E36432F9BE52A978FF2371BF30AFDC6AB56E0F16E25640FC 95 | 5FB1083BD8AD3BA837872303C0F67B86C40BE89EE53871D957DCD2DF82B43B89 96 | A487098597DD32E5C1D7A4CA31FD8966E11ADD1C0900EE71DEF6095DD426ADB0 97 | 4513004ECC352A809913012000046034007EF981F8279CF6DF87890010000240 98 | 00080001200004800010000240000800012000048000100002400008C04913CE 99 | BAE8EF020480008C07206C519916858D9F00849D60D6450008000118EFFF03E6 100 | 5504407400A245004407205A04407400A2B5F0007E031919446E3EDC48050000 101 | 000049454E44AE426082} 102 | Stretch = True 103 | IsControl = True 104 | ExplicitLeft = 8 105 | ExplicitTop = 8 106 | ExplicitWidth = 65 107 | ExplicitHeight = 57 108 | end 109 | end 110 | object Panel5: TPanel 111 | AlignWithMargins = True 112 | Left = 99 113 | Top = 3 114 | Width = 272 115 | Height = 85 116 | Align = alClient 117 | BevelOuter = bvNone 118 | TabOrder = 1 119 | ExplicitWidth = 186 120 | object ProductName: TLabel 121 | Left = 0 122 | Top = 0 123 | Width = 272 124 | Height = 49 125 | Align = alClient 126 | Alignment = taCenter 127 | Caption = 'Product Name' 128 | WordWrap = True 129 | IsControl = True 130 | ExplicitWidth = 77 131 | ExplicitHeight = 15 132 | end 133 | object CompanyName: TLabel 134 | AlignWithMargins = True 135 | Left = 3 136 | Top = 67 137 | Width = 266 138 | Height = 15 139 | Align = alBottom 140 | Alignment = taCenter 141 | Caption = 'Company Name' 142 | IsControl = True 143 | ExplicitTop = 72 144 | ExplicitWidth = 87 145 | end 146 | object Version: TLabel 147 | Left = 0 148 | Top = 49 149 | Width = 272 150 | Height = 15 151 | Align = alBottom 152 | Alignment = taCenter 153 | Caption = '0.0.0.0' 154 | IsControl = True 155 | ExplicitTop = 56 156 | ExplicitWidth = 33 157 | end 158 | end 159 | end 160 | object memoCredits: TMemo 161 | AlignWithMargins = True 162 | Left = 5 163 | Top = 132 164 | Width = 368 165 | Height = 171 166 | Align = alClient 167 | Alignment = taCenter 168 | Lines.Strings = ( 169 | 'Development' 170 | 'Tristan Marlow' 171 | '' 172 | 'Icons from Icons8') 173 | ReadOnly = True 174 | TabOrder = 1 175 | ExplicitWidth = 282 176 | ExplicitHeight = 82 177 | end 178 | end 179 | object Panel2: TPanel 180 | AlignWithMargins = True 181 | Left = 3 182 | Top = 317 183 | Width = 378 184 | Height = 41 185 | Align = alBottom 186 | BevelInner = bvRaised 187 | BevelOuter = bvLowered 188 | TabOrder = 1 189 | ExplicitTop = 228 190 | ExplicitWidth = 292 191 | object OKButton: TButton 192 | AlignWithMargins = True 193 | Left = 102 194 | Top = 5 195 | Width = 174 196 | Height = 31 197 | Margins.Left = 100 198 | Margins.Right = 100 199 | Align = alClient 200 | Caption = 'OK' 201 | Default = True 202 | ModalResult = 1 203 | TabOrder = 0 204 | ExplicitWidth = 88 205 | end 206 | end 207 | end 208 | -------------------------------------------------------------------------------- /source/frmAboutU.pas: -------------------------------------------------------------------------------- 1 | unit frmAboutU; 2 | 3 | interface 4 | 5 | uses WinApi.Windows, System.SysUtils, System.Classes, Vcl.Graphics, 6 | Vcl.Forms, Vcl.Controls, Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls, 7 | Vcl.Imaging.pngimage; 8 | 9 | type 10 | TfrmAbout = class(TForm) 11 | Panel1: TPanel; 12 | Comments: TLabel; 13 | Panel2: TPanel; 14 | OKButton: TButton; 15 | Panel3: TPanel; 16 | Panel4: TPanel; 17 | Panel5: TPanel; 18 | ProgramIcon: TImage; 19 | ProductName: TLabel; 20 | CompanyName: TLabel; 21 | Bevel1: TBevel; 22 | Version: TLabel; 23 | memoCredits: TMemo; 24 | procedure FormCreate(Sender: TObject); 25 | private 26 | procedure UpdateProductInformation; 27 | public 28 | { Public declarations } 29 | end; 30 | 31 | implementation 32 | 33 | {$R *.dfm} 34 | 35 | uses 36 | FileVersionInformationU; 37 | 38 | procedure TfrmAbout.FormCreate(Sender: TObject); 39 | begin 40 | ProductName.Font.Size := ProductName.Font.Size * 2; 41 | CompanyName.Font.Size := CompanyName.Font.Size + 2; 42 | UpdateProductInformation; 43 | end; 44 | 45 | procedure TfrmAbout.UpdateProductInformation; 46 | var 47 | LFileVersionInformation: TFileVersionInformation; 48 | begin 49 | LFileVersionInformation := TFileVersionInformation.Create; 50 | try 51 | try 52 | LFileVersionInformation.FileName := ParamStr(0); 53 | ProductName.Caption := LFileVersionInformation.ProductName; 54 | Version.Caption := LFileVersionInformation.FileVersion; 55 | CompanyName.Caption := LFileVersionInformation.CompanyName; 56 | Comments.Caption := LFileVersionInformation.Comments; 57 | except 58 | 59 | end; 60 | finally 61 | FreeAndNil(LFileVersionInformation); 62 | end; 63 | end; 64 | 65 | end. 66 | -------------------------------------------------------------------------------- /source/frmAddEnvironmentVariableU.pas: -------------------------------------------------------------------------------- 1 | unit frmAddEnvironmentVariableU; 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, System.ImageList, Vcl.ImgList, 9 | LibraryHelperU, System.UITypes, 10 | System.Actions, Vcl.ActnList, Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls, 11 | Vcl.Mask, JvExMask, JvToolEdit; 12 | 13 | type 14 | TfrmAddEnvironmentVariable = class(TForm) 15 | Panel2: TPanel; 16 | BitBtn1: TBitBtn; 17 | BitBtn2: TBitBtn; 18 | ActionList: TActionList; 19 | ActionOk: TAction; 20 | ActionCancel: TAction; 21 | Panel1: TPanel; 22 | Label1: TLabel; 23 | editName: TEdit; 24 | Label2: TLabel; 25 | editValue: TJvDirectoryEdit; 26 | procedure ActionCancelExecute(Sender: TObject); 27 | procedure ActionOkExecute(Sender: TObject); 28 | private 29 | FDelphiInstallation: TDelphiInstallation; 30 | public 31 | function Add(ADelphiInstallation: TDelphiInstallation): Boolean; 32 | end; 33 | 34 | implementation 35 | 36 | {$R *.dfm} 37 | 38 | uses 39 | dmDelphiLibraryHelperU; 40 | 41 | { TfrmAddEnvironmentVariable } 42 | 43 | procedure TfrmAddEnvironmentVariable.ActionCancelExecute(Sender: TObject); 44 | begin 45 | Self.ModalResult := mrCancel; 46 | end; 47 | 48 | procedure TfrmAddEnvironmentVariable.ActionOkExecute(Sender: TObject); 49 | var 50 | LAllow: Boolean; 51 | begin 52 | LAllow := True; 53 | if Trim(editName.Text) = '' then 54 | begin 55 | MessageDlg('Please specify a valid name.', mtError, [mbOK], 0); 56 | LAllow := False; 57 | end; 58 | 59 | if Trim(editValue.Text) = '' then 60 | begin 61 | MessageDlg('Please specify a valid value.', mtError, [mbOK], 0); 62 | LAllow := False; 63 | end; 64 | 65 | if LAllow then 66 | begin 67 | FDelphiInstallation.EnvironmentVariables.Add(editName.Text, editValue.Text); 68 | Self.ModalResult := mrOk; 69 | end; 70 | end; 71 | 72 | function TfrmAddEnvironmentVariable.Add(ADelphiInstallation 73 | : TDelphiInstallation): Boolean; 74 | begin 75 | FDelphiInstallation := ADelphiInstallation; 76 | try 77 | editName.Text := ''; 78 | editValue.Text := ''; 79 | Result := Self.ShowModal = mrOk; 80 | finally 81 | FDelphiInstallation := nil; 82 | end; 83 | end; 84 | 85 | end. 86 | -------------------------------------------------------------------------------- /source/frmAddLibraryPathU.dfm: -------------------------------------------------------------------------------- 1 | object frmAddLibraryPath: TfrmAddLibraryPath 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | Caption = 'Add Library Path' 6 | ClientHeight = 278 7 | ClientWidth = 645 8 | Color = clBtnFace 9 | ParentFont = True 10 | Position = poOwnerFormCenter 11 | PixelsPerInch = 96 12 | TextHeight = 15 13 | object Panel1: TPanel 14 | AlignWithMargins = True 15 | Left = 3 16 | Top = 3 17 | Width = 639 18 | Height = 225 19 | Align = alClient 20 | BevelOuter = bvNone 21 | TabOrder = 0 22 | ExplicitHeight = 182 23 | object Label1: TLabel 24 | AlignWithMargins = True 25 | Left = 3 26 | Top = 3 27 | Width = 633 28 | Height = 15 29 | Align = alTop 30 | Caption = 'Library Path' 31 | ExplicitWidth = 63 32 | end 33 | object GroupBoxDestination: TGroupBox 34 | AlignWithMargins = True 35 | Left = 3 36 | Top = 53 37 | Width = 633 38 | Height = 169 39 | Align = alClient 40 | Caption = 'Destination' 41 | TabOrder = 1 42 | ExplicitHeight = 126 43 | object GridPanel1: TGridPanel 44 | AlignWithMargins = True 45 | Left = 5 46 | Top = 20 47 | Width = 623 48 | Height = 144 49 | Align = alClient 50 | BevelOuter = bvNone 51 | ColumnCollection = < 52 | item 53 | Value = 50.000000000000000000 54 | end 55 | item 56 | Value = 50.000000000000000000 57 | end> 58 | ControlCollection = < 59 | item 60 | Column = 0 61 | Control = cbAndroid32 62 | Row = 0 63 | end 64 | item 65 | Column = 1 66 | Control = cbIOS32 67 | Row = 0 68 | end 69 | item 70 | Column = 0 71 | Control = cbIOS64 72 | Row = 1 73 | end 74 | item 75 | Column = 1 76 | Control = cbIOSSimulator 77 | Row = 1 78 | end 79 | item 80 | Column = 0 81 | Control = cbOSX 82 | Row = 2 83 | end 84 | item 85 | Column = 1 86 | Control = cbWin32 87 | Row = 2 88 | end 89 | item 90 | Column = 0 91 | Control = cbWin64 92 | Row = 3 93 | end 94 | item 95 | Column = 1 96 | Control = cbLinux64 97 | Row = 3 98 | end> 99 | ExpandStyle = emFixedSize 100 | PopupMenu = PopupMenuDestinations 101 | RowCollection = < 102 | item 103 | Value = 25.000000000000000000 104 | end 105 | item 106 | Value = 25.000000000000000000 107 | end 108 | item 109 | Value = 25.000000000000000000 110 | end 111 | item 112 | Value = 25.000000000000000000 113 | end> 114 | TabOrder = 0 115 | ExplicitHeight = 101 116 | object cbAndroid32: TCheckBox 117 | AlignWithMargins = True 118 | Left = 3 119 | Top = 3 120 | Width = 306 121 | Height = 30 122 | Align = alClient 123 | Caption = 'Android32' 124 | PopupMenu = PopupMenuDestinations 125 | TabOrder = 0 126 | ExplicitHeight = 19 127 | end 128 | object cbIOS32: TCheckBox 129 | AlignWithMargins = True 130 | Left = 315 131 | Top = 3 132 | Width = 305 133 | Height = 30 134 | Align = alClient 135 | Caption = 'IOS32' 136 | PopupMenu = PopupMenuDestinations 137 | TabOrder = 1 138 | ExplicitHeight = 19 139 | end 140 | object cbIOS64: TCheckBox 141 | AlignWithMargins = True 142 | Left = 3 143 | Top = 39 144 | Width = 306 145 | Height = 30 146 | Align = alClient 147 | Caption = 'IOS64' 148 | PopupMenu = PopupMenuDestinations 149 | TabOrder = 2 150 | ExplicitTop = 28 151 | ExplicitHeight = 19 152 | end 153 | object cbIOSSimulator: TCheckBox 154 | AlignWithMargins = True 155 | Left = 315 156 | Top = 39 157 | Width = 305 158 | Height = 30 159 | Align = alClient 160 | Caption = 'IOSSimulator' 161 | PopupMenu = PopupMenuDestinations 162 | TabOrder = 3 163 | ExplicitTop = 28 164 | ExplicitHeight = 19 165 | end 166 | object cbOSX: TCheckBox 167 | AlignWithMargins = True 168 | Left = 3 169 | Top = 75 170 | Width = 306 171 | Height = 30 172 | Align = alClient 173 | Caption = 'OSX' 174 | PopupMenu = PopupMenuDestinations 175 | TabOrder = 4 176 | ExplicitTop = 53 177 | ExplicitHeight = 19 178 | end 179 | object cbWin32: TCheckBox 180 | AlignWithMargins = True 181 | Left = 315 182 | Top = 75 183 | Width = 305 184 | Height = 30 185 | Align = alClient 186 | Caption = 'Win32' 187 | PopupMenu = PopupMenuDestinations 188 | TabOrder = 5 189 | ExplicitTop = 53 190 | ExplicitHeight = 19 191 | end 192 | object cbWin64: TCheckBox 193 | AlignWithMargins = True 194 | Left = 3 195 | Top = 111 196 | Width = 306 197 | Height = 30 198 | Align = alClient 199 | Caption = 'Win64' 200 | PopupMenu = PopupMenuDestinations 201 | TabOrder = 6 202 | ExplicitTop = 78 203 | ExplicitHeight = 19 204 | end 205 | object cbLinux64: TCheckBox 206 | AlignWithMargins = True 207 | Left = 315 208 | Top = 111 209 | Width = 305 210 | Height = 30 211 | Align = alClient 212 | Caption = 'Linux64' 213 | PopupMenu = PopupMenuDestinations 214 | TabOrder = 7 215 | ExplicitTop = 78 216 | ExplicitHeight = 19 217 | end 218 | end 219 | end 220 | object Panel3: TPanel 221 | Left = 0 222 | Top = 21 223 | Width = 639 224 | Height = 29 225 | Align = alTop 226 | BevelOuter = bvNone 227 | TabOrder = 0 228 | object editPath: TComboBox 229 | AlignWithMargins = True 230 | Left = 3 231 | Top = 3 232 | Width = 552 233 | Height = 23 234 | Align = alClient 235 | Sorted = True 236 | TabOrder = 0 237 | OnDropDown = editPathDropDown 238 | end 239 | object BitBtn3: TBitBtn 240 | AlignWithMargins = True 241 | Left = 561 242 | Top = 3 243 | Width = 75 244 | Height = 23 245 | Action = ActionSelectFolder 246 | Align = alRight 247 | ImageIndex = 9 248 | Glyph.Data = { 249 | 36040000424D3604000000000000360000002800000010000000100000000100 250 | 2000000000000004000000000000000000000000000000000000FF00FF00FF00 251 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 252 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 253 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 254 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 255 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 256 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00049D 257 | FFFB00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 258 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF00FF00FF0000A0 259 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 260 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF41B2FFE1FF00FF00FF00FF0000A0 261 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 262 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 263 | FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 264 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 265 | FFFF00A0FFFF20C3FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 266 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 267 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 268 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 269 | FFFF00A0FFFF00A0FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CA 270 | FFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFF27CAFFFFFF00FF00FF00FF0000A0 271 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 272 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 273 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0 274 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00FF0000A0 275 | FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFF00A0FFFFFF00FF00FF00FF00FF00 276 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 277 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 278 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 279 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 280 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 281 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 282 | FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} 283 | TabOrder = 1 284 | end 285 | end 286 | end 287 | object Panel2: TPanel 288 | AlignWithMargins = True 289 | Left = 3 290 | Top = 234 291 | Width = 639 292 | Height = 41 293 | Align = alBottom 294 | BevelOuter = bvNone 295 | TabOrder = 1 296 | ExplicitTop = 191 297 | object BitBtn1: TBitBtn 298 | AlignWithMargins = True 299 | Left = 430 300 | Top = 3 301 | Width = 100 302 | Height = 35 303 | Action = ActionOk 304 | Align = alRight 305 | Caption = 'Ok' 306 | TabOrder = 0 307 | end 308 | object BitBtn2: TBitBtn 309 | AlignWithMargins = True 310 | Left = 536 311 | Top = 3 312 | Width = 100 313 | Height = 35 314 | Action = ActionCancel 315 | Align = alRight 316 | Caption = 'Cancel' 317 | TabOrder = 1 318 | end 319 | end 320 | object PopupMenuDestinations: TPopupMenu 321 | Images = dmDelphiLibraryHelper.ImageListCommon 322 | Left = 80 323 | Top = 191 324 | object CheckAll1: TMenuItem 325 | Caption = 'Check All' 326 | OnClick = CheckAll1Click 327 | end 328 | object UncheckAll1: TMenuItem 329 | Caption = 'Uncheck All' 330 | OnClick = UncheckAll1Click 331 | end 332 | end 333 | object ActionList: TActionList 334 | Images = dmDelphiLibraryHelper.ImageListCommon 335 | Left = 16 336 | Top = 191 337 | object ActionOk: TAction 338 | Caption = 'Ok' 339 | ImageIndex = 21 340 | OnExecute = ActionOkExecute 341 | OnUpdate = ActionOkUpdate 342 | end 343 | object ActionCancel: TAction 344 | Caption = 'Cancel' 345 | ImageIndex = 3 346 | OnExecute = ActionCancelExecute 347 | end 348 | object ActionSelectFolder: TAction 349 | ImageIndex = 9 350 | OnExecute = ActionSelectFolderExecute 351 | end 352 | end 353 | end 354 | -------------------------------------------------------------------------------- /source/frmAddLibraryPathU.pas: -------------------------------------------------------------------------------- 1 | unit frmAddLibraryPathU; 2 | 3 | {$WARN SYMBOL_PLATFORM OFF} 4 | 5 | interface 6 | 7 | uses 8 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, 9 | System.Classes, Vcl.Graphics, System.UITypes, 10 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, 11 | Vcl.ExtCtrls, Vcl.Buttons, LibraryHelperU, Vcl.Menus, 12 | System.Actions, Vcl.ActnList, System.ImageList, Vcl.ImgList; 13 | 14 | type 15 | TfrmAddLibraryPath = class(TForm) 16 | Panel1: TPanel; 17 | Panel2: TPanel; 18 | BitBtn1: TBitBtn; 19 | BitBtn2: TBitBtn; 20 | GroupBoxDestination: TGroupBox; 21 | GridPanel1: TGridPanel; 22 | cbAndroid32: TCheckBox; 23 | cbIOS32: TCheckBox; 24 | cbIOS64: TCheckBox; 25 | cbIOSSimulator: TCheckBox; 26 | cbOSX: TCheckBox; 27 | cbWin32: TCheckBox; 28 | cbWin64: TCheckBox; 29 | Label1: TLabel; 30 | PopupMenuDestinations: TPopupMenu; 31 | CheckAll1: TMenuItem; 32 | UncheckAll1: TMenuItem; 33 | ActionList: TActionList; 34 | ActionOk: TAction; 35 | ActionCancel: TAction; 36 | Panel3: TPanel; 37 | editPath: TComboBox; 38 | BitBtn3: TBitBtn; 39 | ActionSelectFolder: TAction; 40 | cbLinux64: TCheckBox; 41 | procedure CheckAll1Click(Sender: TObject); 42 | procedure UncheckAll1Click(Sender: TObject); 43 | procedure ActionCancelExecute(Sender: TObject); 44 | procedure ActionOkExecute(Sender: TObject); 45 | procedure ActionSelectFolderExecute(Sender: TObject); 46 | procedure editPathDropDown(Sender: TObject); 47 | procedure ActionOkUpdate(Sender: TObject); 48 | private 49 | FDelphiLibrary: TDelphiLibrary; 50 | FDelphiInstallation: TDelphiInstallation; 51 | procedure SetDestinationsChecked(AValue: Boolean); 52 | procedure SetFormValues; 53 | procedure UpdatePathVariables; 54 | public 55 | function Add(ADelphiLibrary: TDelphiLibrary; 56 | ADelphiInstallation: TDelphiInstallation): Boolean; 57 | end; 58 | 59 | implementation 60 | 61 | {$R *.dfm} 62 | 63 | uses 64 | dmDelphiLibraryHelperU; 65 | 66 | { TfrmAddLibraryPath } 67 | 68 | procedure TfrmAddLibraryPath.ActionCancelExecute(Sender: TObject); 69 | begin 70 | Self.ModalResult := mrCancel; 71 | end; 72 | 73 | procedure TfrmAddLibraryPath.ActionOkExecute(Sender: TObject); 74 | var 75 | LSuccess: Boolean; 76 | begin 77 | LSuccess := False; 78 | if Trim(editPath.Text) <> '' then 79 | begin 80 | if cbAndroid32.Checked then 81 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlAndroid32); 82 | if cbIOS32.Checked then 83 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlIOS32); 84 | if cbIOS64.Checked then 85 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlIOS64); 86 | if cbIOSSimulator.Checked then 87 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlIOSimulator); 88 | if cbOSX.Checked then 89 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlOSX32); 90 | if cbWin32.Checked then 91 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlWin32); 92 | if cbWin64.Checked then 93 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlWin64); 94 | if cbLinux64.Checked then 95 | LSuccess := FDelphiInstallation.AddPath(editPath.Text, dlLinux64); 96 | end; 97 | if LSuccess then 98 | begin 99 | Self.ModalResult := mrOk; 100 | end 101 | else 102 | begin 103 | MessageDlg(Format('Failed to add path "%s", please ensure it is valid', 104 | [editPath.Text]), mtError, [mbOK], 0); 105 | end; 106 | end; 107 | 108 | procedure TfrmAddLibraryPath.ActionOkUpdate(Sender: TObject); 109 | begin 110 | ActionOk.Enabled := Trim(editPath.Text) <> ''; 111 | end; 112 | 113 | procedure TfrmAddLibraryPath.ActionSelectFolderExecute(Sender: TObject); 114 | begin 115 | with TFileOpenDialog.Create(nil) do 116 | try 117 | Options := [fdoPickFolders]; 118 | if Execute then 119 | begin 120 | editPath.Text := FileName; 121 | end; 122 | finally 123 | Free; 124 | end; 125 | end; 126 | 127 | function TfrmAddLibraryPath.Add(ADelphiLibrary: TDelphiLibrary; 128 | ADelphiInstallation: TDelphiInstallation): Boolean; 129 | begin 130 | FDelphiLibrary := ADelphiLibrary; 131 | FDelphiInstallation := ADelphiInstallation; 132 | SetFormValues; 133 | Result := Self.ShowModal = mrOk; 134 | end; 135 | 136 | procedure TfrmAddLibraryPath.CheckAll1Click(Sender: TObject); 137 | begin 138 | SetDestinationsChecked(True); 139 | end; 140 | 141 | procedure TfrmAddLibraryPath.editPathDropDown(Sender: TObject); 142 | begin 143 | UpdatePathVariables; 144 | end; 145 | 146 | procedure TfrmAddLibraryPath.SetDestinationsChecked(AValue: Boolean); 147 | begin 148 | cbAndroid32.Checked := AValue; 149 | cbIOS32.Checked := AValue; 150 | cbIOS64.Checked := AValue; 151 | cbIOSSimulator.Checked := AValue; 152 | cbOSX.Checked := AValue; 153 | cbWin32.Checked := AValue; 154 | cbWin64.Checked := AValue; 155 | cbLinux64.Checked := AValue; 156 | end; 157 | 158 | procedure TfrmAddLibraryPath.SetFormValues; 159 | begin 160 | SetDestinationsChecked(False); 161 | case FDelphiLibrary of 162 | dlAndroid32: 163 | cbAndroid32.Checked := True; 164 | dlIOS32: 165 | cbIOS32.Checked := True; 166 | dlIOS64: 167 | cbIOS64.Checked := True; 168 | dlIOSimulator: 169 | cbIOSSimulator.Checked := True; 170 | dlOSX32: 171 | cbOSX.Checked := True; 172 | dlWin32: 173 | cbWin32.Checked := True; 174 | dlWin64: 175 | cbWin64.Checked := True; 176 | dlLinux64: 177 | cbLinux64.Checked := True; 178 | end; 179 | end; 180 | 181 | procedure TfrmAddLibraryPath.UncheckAll1Click(Sender: TObject); 182 | begin 183 | SetDestinationsChecked(False); 184 | end; 185 | 186 | procedure TfrmAddLibraryPath.UpdatePathVariables; 187 | var 188 | LIdx: Integer; 189 | LName, LPath: string; 190 | begin 191 | editPath.Items.BeginUpdate; 192 | try 193 | editPath.Items.Add('$(BDS)'); 194 | for LIdx := 0 to Pred(FDelphiInstallation.EnvironmentVariables.Count) do 195 | begin 196 | LPath := FDelphiInstallation.EnvironmentVariables.Variable[LIdx].Value; 197 | LName := FDelphiInstallation.EnvironmentVariables.Variable[LIdx].Name; 198 | if DirectoryExists(LPath) then 199 | begin 200 | editPath.Items.Add(Format('$(%s)\', [LName])); 201 | end; 202 | end; 203 | for LIdx := 0 to Pred 204 | (FDelphiInstallation.SystemEnvironmentVariables.Count) do 205 | begin 206 | LPath := FDelphiInstallation.SystemEnvironmentVariables.Variable 207 | [LIdx].Value; 208 | LName := FDelphiInstallation.SystemEnvironmentVariables.Variable 209 | [LIdx].Name; 210 | if DirectoryExists(LPath) then 211 | begin 212 | editPath.Items.Add(Format('$(%s)\', [LName])); 213 | end; 214 | end; 215 | finally 216 | editPath.Items.EndUpdate; 217 | end; 218 | end; 219 | 220 | end. 221 | -------------------------------------------------------------------------------- /source/frmFindReplaceU.dfm: -------------------------------------------------------------------------------- 1 | object frmFindReplace: TfrmFindReplace 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu] 5 | BorderStyle = bsDialog 6 | Caption = 'Find Replace' 7 | ClientHeight = 310 8 | ClientWidth = 451 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | Position = poOwnerFormCenter 16 | OnShow = FormShow 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object Panel1: TPanel 20 | AlignWithMargins = True 21 | Left = 3 22 | Top = 3 23 | Width = 445 24 | Height = 110 25 | Align = alTop 26 | BevelOuter = bvNone 27 | TabOrder = 0 28 | object Panel3: TPanel 29 | Left = 336 30 | Top = 0 31 | Width = 109 32 | Height = 110 33 | Align = alRight 34 | BevelOuter = bvNone 35 | TabOrder = 1 36 | object cbIgnoreCase: TCheckBox 37 | AlignWithMargins = True 38 | Left = 3 39 | Top = 3 40 | Width = 103 41 | Height = 17 42 | Align = alTop 43 | Caption = 'Ignore case' 44 | Checked = True 45 | State = cbChecked 46 | TabOrder = 0 47 | end 48 | end 49 | object Panel4: TPanel 50 | Left = 0 51 | Top = 0 52 | Width = 336 53 | Height = 110 54 | Align = alClient 55 | BevelOuter = bvNone 56 | TabOrder = 0 57 | object Label1: TLabel 58 | AlignWithMargins = True 59 | Left = 3 60 | Top = 49 61 | Width = 330 62 | Height = 13 63 | Align = alTop 64 | Caption = 'Replace' 65 | ExplicitTop = 46 66 | ExplicitWidth = 38 67 | end 68 | object Label2: TLabel 69 | AlignWithMargins = True 70 | Left = 3 71 | Top = 3 72 | Width = 330 73 | Height = 13 74 | Align = alTop 75 | Caption = 'Find' 76 | ExplicitWidth = 20 77 | end 78 | object editFind: TComboBox 79 | AlignWithMargins = True 80 | Left = 3 81 | Top = 22 82 | Width = 330 83 | Height = 21 84 | Align = alTop 85 | TabOrder = 0 86 | end 87 | object editReplace: TComboBox 88 | AlignWithMargins = True 89 | Left = 3 90 | Top = 68 91 | Width = 330 92 | Height = 21 93 | Align = alTop 94 | TabOrder = 1 95 | end 96 | end 97 | end 98 | object Panel2: TPanel 99 | AlignWithMargins = True 100 | Left = 3 101 | Top = 266 102 | Width = 445 103 | Height = 41 104 | Align = alBottom 105 | BevelOuter = bvNone 106 | TabOrder = 2 107 | object btnOk: TBitBtn 108 | AlignWithMargins = True 109 | Left = 236 110 | Top = 3 111 | Width = 100 112 | Height = 35 113 | Action = ActionReplace 114 | Align = alRight 115 | Caption = 'Replace' 116 | TabOrder = 0 117 | end 118 | object btnCancel: TBitBtn 119 | AlignWithMargins = True 120 | Left = 342 121 | Top = 3 122 | Width = 100 123 | Height = 35 124 | Action = ActionCancel 125 | Align = alRight 126 | Caption = 'Cancel' 127 | TabOrder = 1 128 | end 129 | end 130 | object GroupBoxDestination: TGroupBox 131 | AlignWithMargins = True 132 | Left = 3 133 | Top = 119 134 | Width = 445 135 | Height = 141 136 | Align = alClient 137 | Caption = 'Library' 138 | TabOrder = 1 139 | object GridPanel1: TGridPanel 140 | AlignWithMargins = True 141 | Left = 5 142 | Top = 18 143 | Width = 435 144 | Height = 118 145 | Align = alClient 146 | BevelOuter = bvNone 147 | ColumnCollection = < 148 | item 149 | Value = 50.000000000000000000 150 | end 151 | item 152 | Value = 50.000000000000000000 153 | end> 154 | ControlCollection = < 155 | item 156 | Column = 0 157 | Control = cbAndroid32 158 | Row = 0 159 | end 160 | item 161 | Column = 1 162 | Control = cbIOS32 163 | Row = 0 164 | end 165 | item 166 | Column = 0 167 | Control = cbIOS64 168 | Row = 1 169 | end 170 | item 171 | Column = 1 172 | Control = cbIOSSimulator 173 | Row = 1 174 | end 175 | item 176 | Column = 0 177 | Control = cbOSX 178 | Row = 2 179 | end 180 | item 181 | Column = 1 182 | Control = cbWin32 183 | Row = 2 184 | end 185 | item 186 | Column = 0 187 | Control = cbWin64 188 | Row = 3 189 | end 190 | item 191 | Column = 1 192 | Control = cbLinux64 193 | Row = 3 194 | end> 195 | ExpandStyle = emFixedSize 196 | PopupMenu = PopupMenuLibrary 197 | RowCollection = < 198 | item 199 | Value = 25.000000000000000000 200 | end 201 | item 202 | Value = 25.000000000000000000 203 | end 204 | item 205 | Value = 25.000000000000000000 206 | end 207 | item 208 | Value = 25.000000000000000000 209 | end> 210 | TabOrder = 0 211 | object cbAndroid32: TCheckBox 212 | AlignWithMargins = True 213 | Left = 3 214 | Top = 3 215 | Width = 212 216 | Height = 24 217 | Align = alClient 218 | Caption = 'Android32' 219 | PopupMenu = PopupMenuLibrary 220 | TabOrder = 0 221 | ExplicitHeight = 19 222 | end 223 | object cbIOS32: TCheckBox 224 | AlignWithMargins = True 225 | Left = 221 226 | Top = 3 227 | Width = 211 228 | Height = 24 229 | Align = alClient 230 | Caption = 'IOS32' 231 | PopupMenu = PopupMenuLibrary 232 | TabOrder = 1 233 | ExplicitHeight = 19 234 | end 235 | object cbIOS64: TCheckBox 236 | AlignWithMargins = True 237 | Left = 3 238 | Top = 33 239 | Width = 212 240 | Height = 23 241 | Align = alClient 242 | Caption = 'IOS64' 243 | PopupMenu = PopupMenuLibrary 244 | TabOrder = 2 245 | ExplicitTop = 28 246 | ExplicitHeight = 19 247 | end 248 | object cbIOSSimulator: TCheckBox 249 | AlignWithMargins = True 250 | Left = 221 251 | Top = 33 252 | Width = 211 253 | Height = 23 254 | Align = alClient 255 | Caption = 'IOSSimulator' 256 | PopupMenu = PopupMenuLibrary 257 | TabOrder = 3 258 | ExplicitTop = 28 259 | ExplicitHeight = 19 260 | end 261 | object cbOSX: TCheckBox 262 | AlignWithMargins = True 263 | Left = 3 264 | Top = 62 265 | Width = 212 266 | Height = 24 267 | Align = alClient 268 | Caption = 'OSX' 269 | PopupMenu = PopupMenuLibrary 270 | TabOrder = 4 271 | ExplicitTop = 53 272 | ExplicitHeight = 19 273 | end 274 | object cbWin32: TCheckBox 275 | AlignWithMargins = True 276 | Left = 221 277 | Top = 62 278 | Width = 211 279 | Height = 24 280 | Align = alClient 281 | Caption = 'Win32' 282 | PopupMenu = PopupMenuLibrary 283 | TabOrder = 5 284 | ExplicitTop = 53 285 | ExplicitHeight = 19 286 | end 287 | object cbWin64: TCheckBox 288 | AlignWithMargins = True 289 | Left = 3 290 | Top = 92 291 | Width = 212 292 | Height = 23 293 | Align = alClient 294 | Caption = 'Win64' 295 | PopupMenu = PopupMenuLibrary 296 | TabOrder = 6 297 | ExplicitTop = 78 298 | ExplicitHeight = 19 299 | end 300 | object cbLinux64: TCheckBox 301 | AlignWithMargins = True 302 | Left = 221 303 | Top = 92 304 | Width = 211 305 | Height = 23 306 | Align = alClient 307 | Caption = 'Linux64' 308 | PopupMenu = PopupMenuLibrary 309 | TabOrder = 7 310 | ExplicitTop = 78 311 | ExplicitHeight = 19 312 | end 313 | end 314 | end 315 | object ActionList: TActionList 316 | Images = dmDelphiLibraryHelper.ImageListCommon 317 | Left = 56 318 | Top = 112 319 | object ActionReplace: TAction 320 | Caption = 'Replace' 321 | ImageIndex = 13 322 | OnExecute = ActionReplaceExecute 323 | end 324 | object ActionCancel: TAction 325 | Caption = 'Cancel' 326 | ImageIndex = 3 327 | OnExecute = ActionCancelExecute 328 | end 329 | end 330 | object PopupMenuLibrary: TPopupMenu 331 | Images = dmDelphiLibraryHelper.ImageListCommon 332 | Left = 152 333 | Top = 111 334 | object CheckAll1: TMenuItem 335 | Caption = 'Check All' 336 | OnClick = CheckAll1Click 337 | end 338 | object UncheckAll1: TMenuItem 339 | Caption = 'Uncheck All' 340 | OnClick = UncheckAll1Click 341 | end 342 | end 343 | end 344 | -------------------------------------------------------------------------------- /source/frmFindReplaceU.pas: -------------------------------------------------------------------------------- 1 | unit frmFindReplaceU; 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.Actions, 9 | Vcl.ActnList, System.ImageList, Vcl.ImgList, Vcl.Buttons, Vcl.ExtCtrls, 10 | Vcl.ComCtrls, LibraryHelperU, Vcl.Menus; 11 | 12 | type 13 | TfrmFindReplace = class(TForm) 14 | Panel1: TPanel; 15 | Panel2: TPanel; 16 | btnOk: TBitBtn; 17 | btnCancel: TBitBtn; 18 | ActionList: TActionList; 19 | ActionReplace: TAction; 20 | ActionCancel: TAction; 21 | Panel3: TPanel; 22 | Panel4: TPanel; 23 | Label1: TLabel; 24 | Label2: TLabel; 25 | cbIgnoreCase: TCheckBox; 26 | editFind: TComboBox; 27 | editReplace: TComboBox; 28 | GroupBoxDestination: TGroupBox; 29 | GridPanel1: TGridPanel; 30 | cbAndroid32: TCheckBox; 31 | cbIOS32: TCheckBox; 32 | cbIOS64: TCheckBox; 33 | cbIOSSimulator: TCheckBox; 34 | cbOSX: TCheckBox; 35 | cbWin32: TCheckBox; 36 | cbWin64: TCheckBox; 37 | cbLinux64: TCheckBox; 38 | PopupMenuLibrary: TPopupMenu; 39 | CheckAll1: TMenuItem; 40 | UncheckAll1: TMenuItem; 41 | procedure FormShow(Sender: TObject); 42 | procedure ActionReplaceExecute(Sender: TObject); 43 | procedure ActionCancelExecute(Sender: TObject); 44 | procedure CheckAll1Click(Sender: TObject); 45 | procedure UncheckAll1Click(Sender: TObject); 46 | private 47 | FDelphiInstallation: TDelphiInstallation; 48 | procedure UpdateComboBoxOptions(ADelphiInstallation: TDelphiInstallation); 49 | procedure FindReplace(AFind, AReplace: string; AIgnoreCase: Boolean); 50 | procedure SetDestinationsChecked(AValue: Boolean); 51 | public 52 | function Execute(ADelphiInstallation: TDelphiInstallation): Boolean; 53 | end; 54 | 55 | implementation 56 | 57 | {$R *.dfm} 58 | 59 | uses 60 | frmProgressU, dmDelphiLibraryHelperU; 61 | 62 | procedure TfrmFindReplace.ActionCancelExecute(Sender: TObject); 63 | begin 64 | Self.ModalResult := mrCancel; 65 | end; 66 | 67 | procedure TfrmFindReplace.SetDestinationsChecked(AValue: Boolean); 68 | begin 69 | cbAndroid32.Checked := AValue; 70 | cbIOS32.Checked := AValue; 71 | cbIOS64.Checked := AValue; 72 | cbIOSSimulator.Checked := AValue; 73 | cbOSX.Checked := AValue; 74 | cbWin32.Checked := AValue; 75 | cbWin64.Checked := AValue; 76 | cbLinux64.Checked := AValue; 77 | end; 78 | 79 | procedure TfrmFindReplace.ActionReplaceExecute(Sender: TObject); 80 | begin 81 | Self.ModalResult := mrOk; 82 | end; 83 | 84 | procedure TfrmFindReplace.CheckAll1Click(Sender: TObject); 85 | begin 86 | SetDestinationsChecked(True); 87 | end; 88 | 89 | function TfrmFindReplace.Execute(ADelphiInstallation 90 | : TDelphiInstallation): Boolean; 91 | begin 92 | Result := False; 93 | if Assigned(ADelphiInstallation) then 94 | begin 95 | FDelphiInstallation := ADelphiInstallation; 96 | UpdateComboBoxOptions(FDelphiInstallation); 97 | SetDestinationsChecked(True); 98 | if Self.ShowModal = mrOk then 99 | begin 100 | FindReplace(editFind.Text, editReplace.Text, cbIgnoreCase.Checked); 101 | // FDelphiInstallation.Save; 102 | Result := True; 103 | end; 104 | end; 105 | end; 106 | 107 | procedure TfrmFindReplace.FindReplace(AFind, AReplace: string; 108 | AIgnoreCase: Boolean); 109 | var 110 | LFlags: TReplaceFlags; 111 | begin 112 | ShowProgress('Please wait...'); 113 | try 114 | LFlags := []; 115 | if AIgnoreCase then 116 | begin 117 | LFlags := LFlags + [rfIgnoreCase]; 118 | end; 119 | LFlags := LFlags + [rfReplaceAll]; 120 | 121 | if cbAndroid32.Checked then 122 | FDelphiInstallation.LibraryAndroid32 := 123 | StringReplace(FDelphiInstallation.LibraryAndroid32, AFind, 124 | AReplace, LFlags); 125 | 126 | if cbIOS32.Checked then 127 | FDelphiInstallation.LibraryIOS32 := 128 | StringReplace(FDelphiInstallation.LibraryIOS32, AFind, 129 | AReplace, LFlags); 130 | 131 | if cbIOS64.Checked then 132 | FDelphiInstallation.LibraryIOS64 := 133 | StringReplace(FDelphiInstallation.LibraryIOS64, AFind, 134 | AReplace, LFlags); 135 | 136 | if cbIOSSimulator.Checked then 137 | FDelphiInstallation.LibraryIOSSimulator := 138 | StringReplace(FDelphiInstallation.LibraryIOSSimulator, AFind, 139 | AReplace, LFlags); 140 | 141 | if cbOSX.Checked then 142 | FDelphiInstallation.LibraryOSX32 := 143 | StringReplace(FDelphiInstallation.LibraryOSX32, AFind, 144 | AReplace, LFlags); 145 | 146 | if cbWin32.Checked then 147 | FDelphiInstallation.LibraryWin32 := 148 | StringReplace(FDelphiInstallation.LibraryWin32, AFind, 149 | AReplace, LFlags); 150 | 151 | if cbWin64.Checked then 152 | FDelphiInstallation.LibraryWin64 := 153 | StringReplace(FDelphiInstallation.LibraryWin64, AFind, 154 | AReplace, LFlags); 155 | 156 | if cbLinux64.Checked then 157 | FDelphiInstallation.LibraryLinux64 := 158 | StringReplace(FDelphiInstallation.LibraryLinux64, AFind, 159 | AReplace, LFlags); 160 | finally 161 | HideProgress; 162 | end; 163 | end; 164 | 165 | procedure TfrmFindReplace.FormShow(Sender: TObject); 166 | begin 167 | editFind.SetFocus; 168 | end; 169 | 170 | procedure TfrmFindReplace.UncheckAll1Click(Sender: TObject); 171 | begin 172 | SetDestinationsChecked(False); 173 | end; 174 | 175 | procedure TfrmFindReplace.UpdateComboBoxOptions(ADelphiInstallation 176 | : TDelphiInstallation); 177 | var 178 | LItems: TStringList; 179 | 180 | function ValidatePath(APath: string; ADelphiLibrary: TDelphiLibrary): Boolean; 181 | var 182 | LPath: string; 183 | begin 184 | Result := False; 185 | LPath := APath; 186 | if Trim(LPath) <> '' then 187 | begin 188 | LPath := FDelphiInstallation.ExpandLibraryPath(LPath, ADelphiLibrary); 189 | Result := DirectoryExists(LPath); 190 | end; 191 | end; 192 | 193 | procedure AddLibraryPaths(ADelphiLibrary: TDelphiLibrary); 194 | var 195 | LLibrary: TStringList; 196 | LIdx: integer; 197 | LLibraryValue: string; 198 | begin 199 | LLibrary := TStringList.Create; 200 | try 201 | FDelphiInstallation.LibraryAsStrings(LLibrary, ADelphiLibrary); 202 | for LIdx := 0 to Pred(LLibrary.Count) do 203 | begin 204 | LLibraryValue := LLibrary[LIdx]; 205 | if ValidatePath(LLibraryValue, ADelphiLibrary) then 206 | begin 207 | LItems.Add(LLibrary[LIdx]); 208 | end; 209 | end; 210 | finally 211 | FreeAndNil(LLibrary); 212 | end; 213 | end; 214 | 215 | procedure AddEnvironmentVariables(AEnvironmentVariables 216 | : TEnvironmentVariables); 217 | var 218 | LIdx: integer; 219 | LLibraryValue: string; 220 | begin 221 | for LIdx := 0 to Pred(AEnvironmentVariables.Count) do 222 | begin 223 | LLibraryValue := AEnvironmentVariables.Variable[LIdx].Value; 224 | if ValidatePath(LLibraryValue, dlWin32) then 225 | begin 226 | LItems.Add(LLibraryValue); 227 | end; 228 | 229 | LLibraryValue := AEnvironmentVariables.Variable[LIdx].Name; 230 | if Trim(LLibraryValue) <> '' then 231 | begin 232 | LLibraryValue := '${' + LLibraryValue + '}'; 233 | LItems.Add(LLibraryValue); 234 | end; 235 | end; 236 | end; 237 | 238 | begin 239 | editFind.Items.Clear; 240 | editReplace.Items.Clear; 241 | LItems := TStringList.Create; 242 | try 243 | LItems.Duplicates := dupIgnore; 244 | LItems.Sorted := True; 245 | 246 | AddLibraryPaths(dlAndroid32); 247 | AddLibraryPaths(dlIOS32); 248 | AddLibraryPaths(dlIOS64); 249 | AddLibraryPaths(dlOSX32); 250 | AddLibraryPaths(dlIOSimulator); 251 | AddLibraryPaths(dlIOS32); 252 | AddLibraryPaths(dlWin32); 253 | AddLibraryPaths(dlWin64); 254 | AddLibraryPaths(dlLinux64); 255 | AddEnvironmentVariables(FDelphiInstallation.EnvironmentVariables); 256 | AddEnvironmentVariables(FDelphiInstallation.SystemEnvironmentVariables); 257 | 258 | editFind.Items.Text := LItems.Text; 259 | editReplace.Items.Text := LItems.Text; 260 | finally 261 | FreeAndNil(LItems); 262 | end; 263 | end; 264 | 265 | end. 266 | -------------------------------------------------------------------------------- /source/frmLoggingU.dfm: -------------------------------------------------------------------------------- 1 | object frmLogging: TfrmLogging 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | Caption = 'Log' 6 | ClientHeight = 561 7 | ClientWidth = 784 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | PixelsPerInch = 96 15 | TextHeight = 13 16 | object memoLog: TMemo 17 | AlignWithMargins = True 18 | Left = 3 19 | Top = 3 20 | Width = 778 21 | Height = 555 22 | Align = alClient 23 | ReadOnly = True 24 | ScrollBars = ssBoth 25 | TabOrder = 0 26 | WordWrap = False 27 | end 28 | object TimerLog: TTimer 29 | Interval = 5000 30 | OnTimer = TimerLogTimer 31 | Left = 60 32 | Top = 48 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /source/frmLoggingU.pas: -------------------------------------------------------------------------------- 1 | unit frmLoggingU; 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.ExtCtrls, Vcl.StdCtrls; 9 | 10 | type 11 | TfrmLogging = class(TForm) 12 | memoLog: TMemo; 13 | TimerLog: TTimer; 14 | procedure TimerLogTimer(Sender: TObject); 15 | private 16 | { Private declarations } 17 | public 18 | { Public declarations } 19 | end; 20 | 21 | var 22 | frmLogging: TfrmLogging; 23 | 24 | implementation 25 | 26 | uses 27 | LoggingU; 28 | 29 | {$R *.dfm} 30 | 31 | procedure TfrmLogging.TimerLogTimer(Sender: TObject); 32 | begin 33 | memoLog.Lines.Text := _Logging.Cache; 34 | end; 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /source/frmProgressU.dfm: -------------------------------------------------------------------------------- 1 | object frmProgress: TfrmProgress 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsNone 5 | Caption = 'Please Wait...' 6 | ClientHeight = 125 7 | ClientWidth = 400 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | Position = poScreenCenter 16 | OnCreate = FormCreate 17 | OnDestroy = FormDestroy 18 | PixelsPerInch = 96 19 | TextHeight = 13 20 | object pnlProgress: TPanel 21 | AlignWithMargins = True 22 | Left = 3 23 | Top = 3 24 | Width = 394 25 | Height = 119 26 | Align = alClient 27 | BevelOuter = bvNone 28 | BorderWidth = 5 29 | ParentBackground = False 30 | TabOrder = 0 31 | ExplicitWidth = 357 32 | object Panel1: TPanel 33 | AlignWithMargins = True 34 | Left = 8 35 | Top = 8 36 | Width = 378 37 | Height = 59 38 | Align = alTop 39 | BevelOuter = bvNone 40 | TabOrder = 0 41 | ExplicitLeft = 10 42 | ExplicitTop = 10 43 | ExplicitWidth = 337 44 | object imgProgress: TImage 45 | AlignWithMargins = True 46 | Left = 3 47 | Top = 3 48 | Width = 45 49 | Height = 53 50 | Align = alLeft 51 | Center = True 52 | Picture.Data = { 53 | 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000400000 54 | 00400806000000AA6971DE00000006624B474400FF00FF00FFA0BDA793000002 55 | B54944415478DAED9ACF6B134114C7BB4B36D6250A22A227E9419A930AE6D2B3 56 | 1EF51AC9263186A5841AA51EFC07F22F5835D2A5CAB224BB62AE7AD4B397148A 57 | A78820F556B014A12C31091BBFA339C8D2CC6E3686C98FF7856167C8DB79EF7D 58 | 66E6CD422B2D2DB824D101881601101D80681100D10188160110E9BC582C2EB3 59 | A7699AED850290CBE5AE4A92F4A8DFEF6B7F82902407FDE7F57AFDF3DC022895 60 | 4A8AEBBA1A12DDC43035C4AC09185BAAAA3A866174E702403A9DBEA0288A8EC4 61 | 36305C09F9DA3780DA467BE538CE8F9904806DBE86471949DC45F2A7A2CC8177 62 | 7FE1DDB7E856713C3E4D3D006C7315DB3C8BC01F607823C09C25F402B6C8512A 63 | A3BF1660BF0BDB6A229160C7C39D2A00F97CFE3A827B826E1A6D99637A84640D 64 | 59965F5B96F5E5DF1F0A85C2AAE7793AE62961788E33C731E6B0F1ACD66AB53D 65 | 610070B64FE36CDF43302CE05480F91E5BBD6EB76B371A8D639EA1AEEB67DAED 66 | B606480FF1CEB580799BB031E2F1B815F52A1D194026935989C5621B705CC4F0 67 | 22C79455F137B07B6ADB76334A70D96C3605C08F995B3485637A003B133BE825 68 | 7CED4F0280A469DA1DAC0ABBC26EA2C91CDBEF6CB5D14C54F0832889FB850FA6 69 | 4B9D4EE7FEA0565CE6987A681F01620BBEDFA1DF1F0B00CEE5F95EAFB70EC7EB 70 | 185EE19832471F98E36432F9BE52A978FF2371BF30AFDC6AB56E0F16E25640FC 71 | 5FB1083BD8AD3BA837872303C0F67B86C40BE89EE53871D957DCD2DF82B43B89 72 | A487098597DD32E5C1D7A4CA31FD8966E11ADD1C0900EE71DEF6095DD426ADB0 73 | 4513004ECC352A809913012000046034007EF981F8279CF6DF87890010000240 74 | 00080001200004800010000240000800012000048000100002400008C04913CE 75 | BAE8EF020480008C07206C519916858D9F00849D60D6450008000118EFFF03E6 76 | 5504407400A245004407205A04407400A2B5F0007E031919446E3EDC48050000 77 | 000049454E44AE426082} 78 | Proportional = True 79 | Stretch = True 80 | ExplicitLeft = 24 81 | ExplicitTop = 17 82 | ExplicitHeight = 42 83 | end 84 | object lblCaption: TLabel 85 | AlignWithMargins = True 86 | Left = 54 87 | Top = 3 88 | Width = 321 89 | Height = 56 90 | Align = alClient 91 | AutoSize = False 92 | Caption = 'Please Wait...' 93 | Font.Charset = DEFAULT_CHARSET 94 | Font.Color = clBlack 95 | Font.Height = -11 96 | Font.Name = 'Tahoma' 97 | Font.Style = [] 98 | ParentFont = False 99 | WordWrap = True 100 | ExplicitTop = 6 101 | ExplicitWidth = 280 102 | end 103 | end 104 | object Panel2: TPanel 105 | AlignWithMargins = True 106 | Left = 8 107 | Top = 73 108 | Width = 378 109 | Height = 38 110 | Align = alClient 111 | BevelOuter = bvNone 112 | TabOrder = 1 113 | ExplicitLeft = 10 114 | ExplicitTop = 75 115 | ExplicitWidth = 337 116 | ExplicitHeight = 34 117 | object progressNormal: TProgressBar 118 | AlignWithMargins = True 119 | Left = 3 120 | Top = 3 121 | Width = 372 122 | Height = 17 123 | Align = alTop 124 | Position = 50 125 | Smooth = True 126 | TabOrder = 0 127 | ExplicitWidth = 331 128 | end 129 | end 130 | end 131 | end 132 | -------------------------------------------------------------------------------- /source/frmProgressU.pas: -------------------------------------------------------------------------------- 1 | { ----------------------------------------------------------------------------- 2 | Unit Name: dlgSelectDatabaseU 3 | Author: Tristan Marlow 4 | Purpose: Progress Dialog. 5 | 6 | ---------------------------------------------------------------------------- 7 | Copyright (c) 2007 Tristan David Marlow 8 | Copyright (c) 2007 ABit Consulting 9 | All Rights Reserved 10 | 11 | This product is protected by copyright and distributed under 12 | licenses restricting copying, distribution and decompilation 13 | 14 | ---------------------------------------------------------------------------- 15 | 16 | History: 19/04/2007 - First Release. 17 | 26/04/2007 - Thread Timer for dialog updates 18 | 19 | ----------------------------------------------------------------------------- } 20 | unit frmProgressU; 21 | 22 | interface 23 | 24 | uses 25 | ComObj, 26 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 27 | Dialogs, ComCtrls, StdCtrls, ExtCtrls, ImgList, System.ImageList, 28 | Vcl.Imaging.pngimage; 29 | 30 | const 31 | CLSID_TaskbarList: TGUID = (D1: $56FDF344; D2: $FD6D; D3: $11D0; 32 | D4: ($95, $8A, $00, $60, $97, $C9, $A0, $90)); 33 | IID_TaskbarList: TGUID = (D1: $56FDF342; D2: $FD6D; D3: $11D0; 34 | D4: ($95, $8A, $00, $60, $97, $C9, $A0, $90)); 35 | IID_TaskbarList2: TGUID = (D1: $602D4995; D2: $B13A; D3: $429B; 36 | D4: ($A6, $6E, $19, $35, $E4, $4F, $43, $17)); 37 | IID_TaskbarList3: TGUID = (D1: $EA1AFB91; D2: $9E28; D3: $4B86; 38 | D4: ($90, $E9, $9E, $9F, $8A, $5E, $EF, $AF)); 39 | 40 | const 41 | THBF_ENABLED = $0000; 42 | THBF_DISABLED = $0001; 43 | THBF_DISMISSONCLICK = $0002; 44 | THBF_NOBACKGROUND = $0004; 45 | THBF_HIDDEN = $0008; 46 | 47 | const 48 | THB_BITMAP = $0001; 49 | THB_ICON = $0002; 50 | THB_TOOLTIP = $0004; 51 | THB_FLAGS = $0008; 52 | 53 | const 54 | THBN_CLICKED = $1800; 55 | 56 | const 57 | TBPF_NOPROGRESS = $00; 58 | TBPF_INDETERMINATE = $01; 59 | TBPF_NORMAL = $02; 60 | TBPF_ERROR = $04; 61 | TBPF_PAUSED = $08; 62 | 63 | const 64 | TBATF_USEMDITHUMBNAIL: DWORD = $00000001; 65 | TBATF_USEMDILIVEPREVIEW: DWORD = $00000002; 66 | 67 | const 68 | WM_DWMSENDICONICTHUMBNAIL = $0323; 69 | WM_DWMSENDICONICLIVEPREVIEWBITMAP = $0326; 70 | 71 | type 72 | TTipString = array [0 .. 259] of widechar; 73 | PTipString = ^TTipString; 74 | 75 | tagTHUMBBUTTON = packed record 76 | dwMask: DWORD; 77 | iId: UINT; 78 | iBitmap: UINT; 79 | hIcon: hIcon; 80 | szTip: TTipString; 81 | dwFlags: DWORD; 82 | end; 83 | 84 | THUMBBUTTON = tagTHUMBBUTTON; 85 | THUMBBUTTONLIST = ^THUMBBUTTON; 86 | 87 | type 88 | ITaskbarList = interface 89 | ['{56FDF342-FD6D-11D0-958A-006097C9A090}'] 90 | procedure HrInit; safecall; 91 | procedure AddTab(hwnd: cardinal); safecall; 92 | procedure DeleteTab(hwnd: cardinal); safecall; 93 | procedure ActivateTab(hwnd: cardinal); safecall; 94 | procedure SetActiveAlt(hwnd: cardinal); safecall; 95 | end; 96 | 97 | ITaskbarList2 = interface(ITaskbarList) 98 | ['{602D4995-B13A-429B-A66E-1935E44F4317}'] 99 | procedure MarkFullscreenWindow(hwnd: cardinal; fFullscreen: Bool); safecall; 100 | end; 101 | 102 | ITaskbarList3 = interface(ITaskbarList2) 103 | ['{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}'] 104 | function SetProgressValue(hwnd: hwnd; ullCompleted: ULONGLONG; 105 | ullTotal: ULONGLONG): HRESULT; stdcall; 106 | function SetProgressState(hwnd: hwnd; tbpFlags: integer): HRESULT; stdcall; 107 | procedure RegisterTab(hwndTab: cardinal; hwndMDI: cardinal); safecall; 108 | procedure UnregisterTab(hwndTab: cardinal); safecall; 109 | procedure SetTabOrder(hwndTab: cardinal; 110 | hwndInsertBefore: cardinal); safecall; 111 | procedure SetTabActive(hwndTab: cardinal; hwndMDI: cardinal; 112 | tbatFlags: DWORD); safecall; 113 | procedure ThumbBarAddButtons(hwnd: cardinal; cButtons: UINT; 114 | Button: THUMBBUTTONLIST); safecall; 115 | procedure ThumbBarUpdateButtons(hwnd: cardinal; cButtons: UINT; 116 | pButton: THUMBBUTTONLIST); safecall; 117 | procedure ThumbBarSetImageList(hwnd: cardinal; himl: cardinal); safecall; 118 | procedure SetOverlayIcon(hwnd: cardinal; hIcon: hIcon; 119 | pszDescription: LPCWSTR); safecall; 120 | procedure SetThumbnailTooltip(hwnd: cardinal; pszTip: LPCWSTR); safecall; 121 | procedure SetThumbnailClip(hwnd: cardinal; prcClip: PRect); safecall; 122 | end; 123 | 124 | type 125 | TProgressStyle = (psNone, psNormal); 126 | 127 | type 128 | TfrmProgress = class(TForm) 129 | pnlProgress: TPanel; 130 | Panel1: TPanel; 131 | imgProgress: TImage; 132 | lblCaption: TLabel; 133 | Panel2: TPanel; 134 | progressNormal: TProgressBar; 135 | procedure FormCreate(Sender: TObject); 136 | procedure FormDestroy(Sender: TObject); 137 | private 138 | FTaskBarFormHandle: THandle; 139 | FTaskbarList: ITaskbarList; 140 | FTaskbarList3: ITaskbarList3; 141 | function CalculatePercentage(AValue, ATotal: integer): integer; 142 | public 143 | procedure Show(ACaption: string; AProgressStyle: TProgressStyle); 144 | reintroduce; 145 | procedure Progress(AProgress: integer; ACaption: string = ''); overload; 146 | procedure Progress(AValue, AMax: integer; ACaption: string = ''); overload; 147 | procedure Update; override; 148 | published 149 | end; 150 | 151 | var 152 | _ProgressForm: TfrmProgress; 153 | 154 | procedure ShowProgress(ACaption: string; 155 | AProgressStyle: TProgressStyle = psNormal); 156 | procedure UpdateProgress(AProgress: integer; ACaption: string = ''); overload; 157 | procedure UpdateProgress(AValue, AMax: integer; ACaption: string = ''); 158 | overload; 159 | procedure HideProgress; 160 | 161 | implementation 162 | 163 | uses DateUtils, dmDelphiLibraryHelperU; 164 | 165 | {$R *.dfm} 166 | 167 | procedure HideProgress; 168 | begin 169 | if Assigned(_ProgressForm) then 170 | begin 171 | _ProgressForm.Close; 172 | _ProgressForm.Free; 173 | end; 174 | _ProgressForm := nil; 175 | end; 176 | 177 | procedure ShowProgress(ACaption: string; AProgressStyle: TProgressStyle); 178 | begin 179 | if not Assigned(_ProgressForm) then 180 | begin 181 | _ProgressForm := TfrmProgress.Create(Application.MainForm); 182 | end; 183 | 184 | if Assigned(_ProgressForm) then 185 | begin 186 | _ProgressForm.Show(ACaption, AProgressStyle); 187 | end; 188 | end; 189 | 190 | procedure UpdateProgress(AProgress: integer; ACaption: string); 191 | begin 192 | if Assigned(_ProgressForm) then 193 | begin 194 | _ProgressForm.Progress(AProgress, ACaption); 195 | end; 196 | end; 197 | 198 | procedure UpdateProgress(AValue, AMax: integer; ACaption: string = ''); 199 | begin 200 | if Assigned(_ProgressForm) then 201 | begin 202 | _ProgressForm.Progress(AValue, AMax, ACaption); 203 | end; 204 | end; 205 | 206 | procedure TfrmProgress.Show(ACaption: string; AProgressStyle: TProgressStyle); 207 | begin 208 | lblCaption.Caption := ACaption; 209 | progressNormal.Visible := False; 210 | progressNormal.Position := 100; 211 | case AProgressStyle of 212 | psNone: 213 | begin 214 | end; 215 | psNormal: 216 | begin 217 | progressNormal.Visible := True; 218 | progressNormal.Position := 0; 219 | 220 | end; 221 | end; 222 | inherited Show; 223 | Application.ProcessMessages; 224 | end; 225 | 226 | procedure TfrmProgress.Update; 227 | begin 228 | inherited Update; 229 | Application.ProcessMessages; 230 | end; 231 | 232 | procedure TfrmProgress.FormCreate(Sender: TObject); 233 | begin 234 | // Windows 7 235 | FTaskBarFormHandle := 0; 236 | if CheckWin32Version(6, 1) then 237 | begin 238 | FTaskbarList := CreateComObject(CLSID_TaskbarList) as ITaskbarList; 239 | FTaskbarList.HrInit; 240 | Supports(FTaskbarList, IID_TaskbarList3, FTaskbarList3); 241 | if not Application.MainFormOnTaskBar then 242 | begin 243 | FTaskBarFormHandle := Application.Handle; 244 | end 245 | else 246 | begin 247 | FTaskBarFormHandle := Application.MainForm.Handle; 248 | end; 249 | end; 250 | end; 251 | 252 | procedure TfrmProgress.FormDestroy(Sender: TObject); 253 | begin 254 | if Assigned(FTaskbarList3) then 255 | FTaskbarList3.SetProgressState(FTaskBarFormHandle, TBPF_NOPROGRESS); 256 | end; 257 | 258 | procedure TfrmProgress.Progress(AValue, AMax: integer; ACaption: string); 259 | begin 260 | Progress(CalculatePercentage(AValue, AMax), ACaption); 261 | end; 262 | 263 | function TfrmProgress.CalculatePercentage(AValue: integer; 264 | ATotal: integer): integer; 265 | begin 266 | Result := 0; 267 | if ATotal > 0 then 268 | begin 269 | Result := Round((AValue / ATotal) * 100); 270 | end; 271 | end; 272 | 273 | procedure TfrmProgress.Progress(AProgress: integer; ACaption: string = ''); 274 | begin 275 | if ACaption <> '' then 276 | lblCaption.Caption := ACaption; 277 | 278 | // 05/05/2007 - FIX: Vista TProgressBar not completing issue 279 | 280 | if (Win32MajorVersion = 6) then 281 | begin 282 | progressNormal.Position := AProgress + 2; 283 | end; 284 | 285 | progressNormal.Position := AProgress; 286 | 287 | // Windows 7 Taskbar progress 288 | 289 | if (FTaskBarFormHandle <> 0) and (CheckWin32Version(6, 1)) then 290 | begin 291 | if Assigned(FTaskbarList3) then 292 | FTaskbarList3.SetProgressState(FTaskBarFormHandle, TBPF_NORMAL); 293 | if Assigned(FTaskbarList3) then 294 | FTaskbarList3.SetProgressValue(FTaskBarFormHandle, 295 | progressNormal.Position, progressNormal.Max); 296 | end; 297 | Application.ProcessMessages; 298 | end; 299 | 300 | end. 301 | -------------------------------------------------------------------------------- /source/frmSearchU.dfm: -------------------------------------------------------------------------------- 1 | object frmSearch: TfrmSearch 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | BorderStyle = bsSingle 6 | Caption = 'Search' 7 | ClientHeight = 459 8 | ClientWidth = 834 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | Position = poOwnerFormCenter 16 | OnShow = FormShow 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object Panel1: TPanel 20 | AlignWithMargins = True 21 | Left = 3 22 | Top = 3 23 | Width = 828 24 | Height = 62 25 | Align = alTop 26 | BevelOuter = bvNone 27 | TabOrder = 0 28 | object Panel3: TPanel 29 | Left = 719 30 | Top = 0 31 | Width = 109 32 | Height = 62 33 | Align = alRight 34 | BevelOuter = bvNone 35 | TabOrder = 1 36 | object cbIgnoreCase: TCheckBox 37 | AlignWithMargins = True 38 | Left = 3 39 | Top = 3 40 | Width = 103 41 | Height = 17 42 | Align = alTop 43 | Caption = 'Ignore case' 44 | Checked = True 45 | State = cbChecked 46 | TabOrder = 0 47 | end 48 | end 49 | object Panel4: TPanel 50 | Left = 0 51 | Top = 0 52 | Width = 719 53 | Height = 62 54 | Align = alClient 55 | BevelOuter = bvNone 56 | TabOrder = 0 57 | object Label2: TLabel 58 | AlignWithMargins = True 59 | Left = 3 60 | Top = 3 61 | Width = 713 62 | Height = 13 63 | Align = alTop 64 | Caption = 'Find' 65 | ExplicitWidth = 20 66 | end 67 | object editFind: TComboBox 68 | AlignWithMargins = True 69 | Left = 3 70 | Top = 22 71 | Width = 713 72 | Height = 21 73 | Align = alTop 74 | TabOrder = 0 75 | OnKeyDown = editFindKeyDown 76 | end 77 | end 78 | end 79 | object Panel2: TPanel 80 | AlignWithMargins = True 81 | Left = 3 82 | Top = 415 83 | Width = 828 84 | Height = 41 85 | Align = alBottom 86 | BevelOuter = bvNone 87 | TabOrder = 3 88 | object btnOk: TBitBtn 89 | AlignWithMargins = True 90 | Left = 619 91 | Top = 3 92 | Width = 100 93 | Height = 35 94 | Action = ActionFind 95 | Align = alRight 96 | Caption = 'Search' 97 | TabOrder = 0 98 | end 99 | object btnCancel: TBitBtn 100 | AlignWithMargins = True 101 | Left = 725 102 | Top = 3 103 | Width = 100 104 | Height = 35 105 | Action = ActionClose 106 | Align = alRight 107 | Caption = 'Close' 108 | TabOrder = 1 109 | end 110 | end 111 | object GroupBoxDestination: TGroupBox 112 | AlignWithMargins = True 113 | Left = 3 114 | Top = 71 115 | Width = 828 116 | Height = 143 117 | Align = alTop 118 | Caption = 'Library' 119 | TabOrder = 1 120 | object GridPanel1: TGridPanel 121 | AlignWithMargins = True 122 | Left = 5 123 | Top = 18 124 | Width = 818 125 | Height = 120 126 | Align = alClient 127 | BevelOuter = bvNone 128 | ColumnCollection = < 129 | item 130 | Value = 50.000000000000000000 131 | end 132 | item 133 | Value = 50.000000000000000000 134 | end> 135 | ControlCollection = < 136 | item 137 | Column = 0 138 | Control = cbAndroid32 139 | Row = 0 140 | end 141 | item 142 | Column = 1 143 | Control = cbIOS32 144 | Row = 0 145 | end 146 | item 147 | Column = 0 148 | Control = cbIOS64 149 | Row = 1 150 | end 151 | item 152 | Column = 1 153 | Control = cbIOSSimulator 154 | Row = 1 155 | end 156 | item 157 | Column = 0 158 | Control = cbOSX 159 | Row = 2 160 | end 161 | item 162 | Column = 1 163 | Control = cbWin32 164 | Row = 2 165 | end 166 | item 167 | Column = 0 168 | Control = cbWin64 169 | Row = 3 170 | end 171 | item 172 | Column = 1 173 | Control = cbLinux64 174 | Row = 3 175 | end> 176 | ExpandStyle = emFixedSize 177 | PopupMenu = PopupMenuLibrary 178 | RowCollection = < 179 | item 180 | Value = 25.000000000000000000 181 | end 182 | item 183 | Value = 25.000000000000000000 184 | end 185 | item 186 | Value = 25.000000000000000000 187 | end 188 | item 189 | Value = 25.000000000000000000 190 | end> 191 | TabOrder = 0 192 | object cbAndroid32: TCheckBox 193 | AlignWithMargins = True 194 | Left = 3 195 | Top = 3 196 | Width = 403 197 | Height = 24 198 | Align = alClient 199 | Caption = 'Android32' 200 | PopupMenu = PopupMenuLibrary 201 | TabOrder = 0 202 | ExplicitHeight = 19 203 | end 204 | object cbIOS32: TCheckBox 205 | AlignWithMargins = True 206 | Left = 412 207 | Top = 3 208 | Width = 403 209 | Height = 24 210 | Align = alClient 211 | Caption = 'IOS32' 212 | PopupMenu = PopupMenuLibrary 213 | TabOrder = 1 214 | ExplicitHeight = 19 215 | end 216 | object cbIOS64: TCheckBox 217 | AlignWithMargins = True 218 | Left = 3 219 | Top = 33 220 | Width = 403 221 | Height = 24 222 | Align = alClient 223 | Caption = 'IOS64' 224 | PopupMenu = PopupMenuLibrary 225 | TabOrder = 2 226 | ExplicitTop = 28 227 | ExplicitHeight = 19 228 | end 229 | object cbIOSSimulator: TCheckBox 230 | AlignWithMargins = True 231 | Left = 412 232 | Top = 33 233 | Width = 403 234 | Height = 24 235 | Align = alClient 236 | Caption = 'IOSSimulator' 237 | PopupMenu = PopupMenuLibrary 238 | TabOrder = 3 239 | ExplicitTop = 28 240 | ExplicitHeight = 19 241 | end 242 | object cbOSX: TCheckBox 243 | AlignWithMargins = True 244 | Left = 3 245 | Top = 63 246 | Width = 403 247 | Height = 24 248 | Align = alClient 249 | Caption = 'OSX' 250 | PopupMenu = PopupMenuLibrary 251 | TabOrder = 4 252 | ExplicitTop = 53 253 | ExplicitHeight = 19 254 | end 255 | object cbWin32: TCheckBox 256 | AlignWithMargins = True 257 | Left = 412 258 | Top = 63 259 | Width = 403 260 | Height = 24 261 | Align = alClient 262 | Caption = 'Win32' 263 | PopupMenu = PopupMenuLibrary 264 | TabOrder = 5 265 | ExplicitTop = 53 266 | ExplicitHeight = 19 267 | end 268 | object cbWin64: TCheckBox 269 | AlignWithMargins = True 270 | Left = 3 271 | Top = 93 272 | Width = 403 273 | Height = 24 274 | Align = alClient 275 | Caption = 'Win64' 276 | PopupMenu = PopupMenuLibrary 277 | TabOrder = 6 278 | ExplicitTop = 78 279 | ExplicitHeight = 19 280 | end 281 | object cbLinux64: TCheckBox 282 | AlignWithMargins = True 283 | Left = 412 284 | Top = 93 285 | Width = 403 286 | Height = 24 287 | Align = alClient 288 | Caption = 'Linux64' 289 | PopupMenu = PopupMenuLibrary 290 | TabOrder = 7 291 | ExplicitTop = 78 292 | ExplicitHeight = 19 293 | end 294 | end 295 | end 296 | object ListViewSearch: TListView 297 | AlignWithMargins = True 298 | Left = 3 299 | Top = 220 300 | Width = 828 301 | Height = 189 302 | Align = alClient 303 | Columns = < 304 | item 305 | AutoSize = True 306 | Caption = 'Entry' 307 | end 308 | item 309 | AutoSize = True 310 | Caption = 'Path' 311 | end 312 | item 313 | Caption = 'Library' 314 | Width = 120 315 | end> 316 | GridLines = True 317 | ReadOnly = True 318 | RowSelect = True 319 | TabOrder = 2 320 | ViewStyle = vsReport 321 | end 322 | object ActionList: TActionList 323 | Images = dmDelphiLibraryHelper.ImageListCommon 324 | Left = 56 325 | Top = 112 326 | object ActionFind: TAction 327 | Caption = 'Search' 328 | ImageIndex = 15 329 | OnExecute = ActionFindExecute 330 | end 331 | object ActionClose: TAction 332 | Caption = 'Close' 333 | ImageIndex = 3 334 | OnExecute = ActionCloseExecute 335 | end 336 | end 337 | object PopupMenuLibrary: TPopupMenu 338 | Left = 152 339 | Top = 111 340 | object CheckAll1: TMenuItem 341 | Caption = 'Check All' 342 | OnClick = CheckAll1Click 343 | end 344 | object UncheckAll1: TMenuItem 345 | Caption = 'Uncheck All' 346 | OnClick = UncheckAll1Click 347 | end 348 | end 349 | end 350 | -------------------------------------------------------------------------------- /source/frmSearchU.pas: -------------------------------------------------------------------------------- 1 | unit frmSearchU; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, 7 | System.Classes, Vcl.Graphics, System.UITypes, Vcl.Controls, Vcl.Forms, 8 | Vcl.Dialogs, Vcl.StdCtrls, System.Actions, Vcl.ActnList, System.ImageList, 9 | Vcl.ImgList, Vcl.Buttons, Vcl.ExtCtrls, Vcl.ComCtrls, LibraryHelperU, 10 | Vcl.Menus; 11 | 12 | type 13 | TfrmSearch = class(TForm) 14 | Panel1: TPanel; 15 | Panel2: TPanel; 16 | btnOk: TBitBtn; 17 | btnCancel: TBitBtn; 18 | ActionList: TActionList; 19 | ActionFind: TAction; 20 | ActionClose: TAction; 21 | Panel3: TPanel; 22 | Panel4: TPanel; 23 | Label2: TLabel; 24 | cbIgnoreCase: TCheckBox; 25 | editFind: TComboBox; 26 | GroupBoxDestination: TGroupBox; 27 | GridPanel1: TGridPanel; 28 | cbAndroid32: TCheckBox; 29 | cbIOS32: TCheckBox; 30 | cbIOS64: TCheckBox; 31 | cbIOSSimulator: TCheckBox; 32 | cbOSX: TCheckBox; 33 | cbWin32: TCheckBox; 34 | cbWin64: TCheckBox; 35 | cbLinux64: TCheckBox; 36 | PopupMenuLibrary: TPopupMenu; 37 | CheckAll1: TMenuItem; 38 | UncheckAll1: TMenuItem; 39 | ListViewSearch: TListView; 40 | procedure FormShow(Sender: TObject); 41 | procedure ActionCloseExecute(Sender: TObject); 42 | procedure CheckAll1Click(Sender: TObject); 43 | procedure UncheckAll1Click(Sender: TObject); 44 | procedure ActionFindExecute(Sender: TObject); 45 | procedure editFindKeyDown(Sender: TObject; var Key: Word; 46 | Shift: TShiftState); 47 | private 48 | FDelphiInstallation: TDelphiInstallation; 49 | procedure UpdateComboBoxOptions(ADelphiInstallation: TDelphiInstallation); 50 | procedure Find(AFind: string; AIgnoreCase: Boolean); 51 | procedure SetDestinationsChecked(AValue: Boolean); 52 | public 53 | function Execute(ADelphiInstallation: TDelphiInstallation): Boolean; 54 | end; 55 | 56 | implementation 57 | 58 | {$R *.dfm} 59 | 60 | uses 61 | System.StrUtils, frmProgressU, dmDelphiLibraryHelperU; 62 | 63 | procedure TfrmSearch.ActionCloseExecute(Sender: TObject); 64 | begin 65 | Self.ModalResult := mrCancel; 66 | end; 67 | 68 | procedure TfrmSearch.SetDestinationsChecked(AValue: Boolean); 69 | begin 70 | cbAndroid32.Checked := AValue; 71 | cbIOS32.Checked := AValue; 72 | cbIOS64.Checked := AValue; 73 | cbIOSSimulator.Checked := AValue; 74 | cbOSX.Checked := AValue; 75 | cbWin32.Checked := AValue; 76 | cbWin64.Checked := AValue; 77 | cbLinux64.Checked := AValue; 78 | end; 79 | 80 | procedure TfrmSearch.ActionFindExecute(Sender: TObject); 81 | begin 82 | Find(editFind.Text, cbIgnoreCase.Checked); 83 | if ListViewSearch.Items.Count = 0 then 84 | begin 85 | MessageDlg(Format('"%s" was not found.', [editFind.Text]), mtInformation, 86 | [mbOK], 0); 87 | end; 88 | end; 89 | 90 | procedure TfrmSearch.CheckAll1Click(Sender: TObject); 91 | begin 92 | SetDestinationsChecked(True); 93 | end; 94 | 95 | procedure TfrmSearch.editFindKeyDown(Sender: TObject; var Key: Word; 96 | Shift: TShiftState); 97 | begin 98 | if Key = VK_RETURN then 99 | ActionFind.Execute; 100 | end; 101 | 102 | function TfrmSearch.Execute(ADelphiInstallation: TDelphiInstallation): Boolean; 103 | begin 104 | Result := True; 105 | if Assigned(ADelphiInstallation) then 106 | begin 107 | FDelphiInstallation := ADelphiInstallation; 108 | UpdateComboBoxOptions(FDelphiInstallation); 109 | SetDestinationsChecked(True); 110 | Self.ShowModal; 111 | end; 112 | end; 113 | 114 | procedure TfrmSearch.Find(AFind: string; AIgnoreCase: Boolean); 115 | 116 | var 117 | LLibrary: TStringList; 118 | 119 | function SearchText(AText, ASubText: string; AIgnoreCase: Boolean): Boolean; 120 | begin 121 | if AIgnoreCase then 122 | begin 123 | Result := ContainsStr(AText, ASubText); 124 | end 125 | else 126 | begin 127 | Result := ContainsText(AText, ASubText); 128 | end; 129 | end; 130 | 131 | procedure AddFind(AEntry: string; APath: string; ALibrary: string); 132 | begin 133 | with ListViewSearch.Items.Add do 134 | begin 135 | Caption := AEntry; 136 | SubItems.Add(APath); 137 | SubItems.Add(ALibrary); 138 | end; 139 | end; 140 | 141 | procedure SearchLibrary(ALibrary: TDelphiLibrary); 142 | var 143 | LLibrary: TStringList; 144 | LIdx: integer; 145 | LLibraryPath: string; 146 | LLibraryEntry: string; 147 | begin 148 | LLibrary := TStringList.Create; 149 | try 150 | FDelphiInstallation.LibraryAsStrings(LLibrary, ALibrary); 151 | for LIdx := 0 to Pred(LLibrary.Count) do 152 | begin 153 | LLibraryEntry := LLibrary[LIdx]; 154 | LLibraryPath := FDelphiInstallation.ExpandLibraryPath(LLibraryEntry, 155 | ALibrary); 156 | if SearchText(LLibraryPath, AFind, AIgnoreCase) then 157 | begin 158 | AddFind(LLibraryEntry, LLibraryPath, 159 | FDelphiInstallation.GetLibraryPlatformName(ALibrary)); 160 | end; 161 | end; 162 | finally 163 | FreeAndNil(LLibrary); 164 | end; 165 | end; 166 | 167 | begin 168 | ShowProgress('Searching...'); 169 | LLibrary := TStringList.Create; 170 | ListViewSearch.Items.Clear; 171 | ListViewSearch.Items.BeginUpdate; 172 | try 173 | if cbAndroid32.Checked then 174 | begin 175 | SearchLibrary(dlAndroid32); 176 | end; 177 | 178 | if cbIOS32.Checked then 179 | begin 180 | SearchLibrary(dlIOS32); 181 | end; 182 | 183 | if cbIOS64.Checked then 184 | begin 185 | SearchLibrary(dlIOS64); 186 | end; 187 | 188 | if cbIOSSimulator.Checked then 189 | begin 190 | SearchLibrary(dlIOSimulator); 191 | end; 192 | 193 | if cbOSX.Checked then 194 | begin 195 | SearchLibrary(dlOSX32); 196 | end; 197 | 198 | if cbWin32.Checked then 199 | begin 200 | SearchLibrary(dlWin32); 201 | end; 202 | 203 | if cbWin64.Checked then 204 | begin 205 | SearchLibrary(dlWin64); 206 | end; 207 | 208 | if cbLinux64.Checked then 209 | begin 210 | SearchLibrary(dlLinux64); 211 | end; 212 | 213 | finally 214 | ListViewSearch.Items.EndUpdate; 215 | FreeAndNil(LLibrary); 216 | HideProgress; 217 | end; 218 | 219 | end; 220 | 221 | procedure TfrmSearch.FormShow(Sender: TObject); 222 | begin 223 | editFind.SetFocus; 224 | end; 225 | 226 | procedure TfrmSearch.UncheckAll1Click(Sender: TObject); 227 | begin 228 | SetDestinationsChecked(False); 229 | end; 230 | 231 | procedure TfrmSearch.UpdateComboBoxOptions(ADelphiInstallation 232 | : TDelphiInstallation); 233 | var 234 | LItems: TStringList; 235 | 236 | function ValidatePath(APath: string; ADelphiLibrary: TDelphiLibrary): Boolean; 237 | var 238 | LPath: string; 239 | begin 240 | Result := False; 241 | LPath := APath; 242 | if Trim(LPath) <> '' then 243 | begin 244 | LPath := FDelphiInstallation.ExpandLibraryPath(LPath, ADelphiLibrary); 245 | Result := DirectoryExists(LPath); 246 | end; 247 | end; 248 | 249 | procedure AddLibraryPaths(ADelphiLibrary: TDelphiLibrary); 250 | var 251 | LLibrary: TStringList; 252 | LIdx: integer; 253 | LLibraryValue: string; 254 | begin 255 | LLibrary := TStringList.Create; 256 | try 257 | FDelphiInstallation.LibraryAsStrings(LLibrary, ADelphiLibrary); 258 | for LIdx := 0 to Pred(LLibrary.Count) do 259 | begin 260 | LLibraryValue := LLibrary[LIdx]; 261 | if ValidatePath(LLibraryValue, ADelphiLibrary) then 262 | begin 263 | LItems.Add(LLibrary[LIdx]); 264 | end; 265 | end; 266 | finally 267 | FreeAndNil(LLibrary); 268 | end; 269 | end; 270 | 271 | procedure AddEnvironmentVariables(AEnvironmentVariables 272 | : TEnvironmentVariables); 273 | var 274 | LIdx: integer; 275 | LLibraryValue: string; 276 | begin 277 | for LIdx := 0 to Pred(AEnvironmentVariables.Count) do 278 | begin 279 | LLibraryValue := AEnvironmentVariables.Variable[LIdx].Value; 280 | if ValidatePath(LLibraryValue, dlWin32) then 281 | begin 282 | LItems.Add(LLibraryValue); 283 | end; 284 | 285 | LLibraryValue := AEnvironmentVariables.Variable[LIdx].Name; 286 | if Trim(LLibraryValue) <> '' then 287 | begin 288 | LLibraryValue := '${' + LLibraryValue + '}'; 289 | LItems.Add(LLibraryValue); 290 | end; 291 | end; 292 | end; 293 | 294 | begin 295 | editFind.Items.Clear; 296 | ListViewSearch.Items.Clear; 297 | LItems := TStringList.Create; 298 | try 299 | LItems.Duplicates := dupIgnore; 300 | LItems.Sorted := True; 301 | 302 | AddLibraryPaths(dlAndroid32); 303 | AddLibraryPaths(dlIOS32); 304 | AddLibraryPaths(dlIOS64); 305 | AddLibraryPaths(dlOSX32); 306 | AddLibraryPaths(dlIOSimulator); 307 | AddLibraryPaths(dlIOS32); 308 | AddLibraryPaths(dlWin32); 309 | AddLibraryPaths(dlWin64); 310 | AddLibraryPaths(dlLinux64); 311 | AddEnvironmentVariables(FDelphiInstallation.EnvironmentVariables); 312 | AddEnvironmentVariables(FDelphiInstallation.SystemEnvironmentVariables); 313 | 314 | editFind.Items.Text := LItems.Text; 315 | finally 316 | FreeAndNil(LItems); 317 | end; 318 | end; 319 | 320 | end. 321 | -------------------------------------------------------------------------------- /source/post-build.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | if [%1]==[] goto usage 3 | if [%2]==[] goto usage 4 | if [%3]==[] goto usage 5 | 6 | set folder=%1 7 | set platform=%2 8 | set config=%3 9 | 10 | call ..\resources\copy-resources.cmd client %folder% %platform% %config% 11 | rem call ..\resources\copy-library.cmd ssl %folder% 12 | goto exit 13 | 14 | :usage 15 | echo. 16 | echo Incorrect parameters 17 | echo Configure Delphi Post Build Events 18 | echo post-build.cmd "$(OutputDir)" $(Platform) $(Config) 19 | goto error 20 | 21 | 22 | :error 23 | EXIT /B 1 24 | 25 | :exit -------------------------------------------------------------------------------- /source/version.rc: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION 1,0,11,0 3 | PRODUCTVERSION 1,0,0,0 4 | FILEFLAGSMASK 0x3fL 5 | #ifdef _DEBUG 6 | FILEFLAGS 0x1L 7 | #else 8 | FILEFLAGS 0x0L 9 | #endif 10 | FILEOS 0x4L 11 | FILETYPE 0x1L 12 | FILESUBTYPE 0x0L 13 | BEGIN 14 | BLOCK "StringFileInfo" 15 | BEGIN 16 | BLOCK "040904b0" 17 | BEGIN 18 | VALUE "CompanyName", "Little Earth Solutions\0" 19 | VALUE "ProductVersion", "1.0.0.0\0" 20 | VALUE "FileVersion", "1.0.11.0\0" 21 | VALUE "InternalName", "Delphi Library Helper\0" 22 | VALUE "FileDescription", "Delphi Library Helper\0" 23 | VALUE "LegalCopyright", "Copyright Little Earth Solutions 2022\0" 24 | VALUE "ProductName", "Delphi Library Helper\0" 25 | END 26 | END 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1200 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /source/version.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littleearth/delphi-library-helper/52cfd09cbd1912474a8242679c33f7f20ec40485/source/version.res --------------------------------------------------------------------------------