Tools: GLazRes, a new GUI version of LazRes. Issue #21694, patch from Bart Broersma

git-svn-id: trunk@41125 -
This commit is contained in:
juha 2013-05-11 08:30:06 +00:00
parent 495e85b016
commit 50fe24b04c
4 changed files with 1494 additions and 0 deletions

3
.gitattributes vendored
View File

@ -7757,7 +7757,10 @@ tools/delete_non_svn_files.pl svneol=native#text/plain
tools/find_missing_lpl_files.sh svneol=native#text/plain
tools/getallpofiles.sh -text svneol=native#application/x-sh
tools/glazres/glazres.ico -text svneol=unset#image/ico
tools/glazres/glazres.lpi svneol=native#text/plain
tools/glazres/glazres.lpr svneol=native#text/pascal
tools/glazres/glazresmain.lfm svneol=native#text/plain
tools/glazres/glazresmain.pp svneol=native#text/pascal
tools/iconvtable.lpi svneol=native#text/plain
tools/iconvtable.pas svneol=native#text/plain
tools/install/README.txt svneol=native#text/plain

501
tools/glazres/glazres.lpi Normal file
View File

@ -0,0 +1,501 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<PathDelim Value="\"/>
<General>
<MainUnit Value="0"/>
<Title Value="glazres"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
<ActiveWindowIndexAtStart Value="0"/>
</General>
<i18n>
<EnableI18N LFM="False"/>
</i18n>
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="2" Active="Release">
<Item1 Name="Debug" Default="True"/>
<Item2 Name="Release">
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="glazres"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
<SmartLinkUnit Value="True"/>
<Optimizations>
<VariablesInRegisters Value="True"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Debugging>
<GenerateDebugInfo Value="False"/>
<DebugInfoType Value="dsStabs"/>
<UseLineInfoUnit Value="False"/>
</Debugging>
<LinkSmart Value="True"/>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CompilerMessages>
<UseMsgFile Value="True"/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
</Item2>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<RequiredPackages Count="1">
<Item1>
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="33">
<Unit0>
<Filename Value="glazres.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="glazres"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="1" Y="1"/>
<UsageCount Value="39"/>
</Unit0>
<Unit1>
<Filename Value="glazresmain.pp"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="GLazResForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="glazresmain"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="508"/>
<CursorPos X="6" Y="431"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="C:\Documents and Settings\AndyK\My Documents\lazprojects\Addons\TabbedHeader.pas"/>
<UnitName Value="TabbedHeader"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="3" Y="7"/>
<UsageCount Value="14"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit2>
<Unit3>
<Filename Value="..\lcl\include\canvas.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="916"/>
<CursorPos X="1" Y="932"/>
<UsageCount Value="8"/>
</Unit3>
<Unit4>
<Filename Value="..\lcl\buttons.pp"/>
<UnitName Value="Buttons"/>
<WindowIndex Value="0"/>
<TopLine Value="506"/>
<CursorPos X="21" Y="382"/>
<UsageCount Value="8"/>
</Unit4>
<Unit5>
<Filename Value="..\lcl\chart.pp"/>
<UnitName Value="Chart"/>
<WindowIndex Value="0"/>
<TopLine Value="332"/>
<CursorPos X="32" Y="249"/>
<UsageCount Value="8"/>
</Unit5>
<Unit6>
<Filename Value="..\lcl\comctrls.pp"/>
<UnitName Value="ComCtrls"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="93" Y="3"/>
<UsageCount Value="8"/>
</Unit6>
<Unit7>
<Filename Value="..\lcl\controls.pp"/>
<UnitName Value="Controls"/>
<WindowIndex Value="0"/>
<TopLine Value="3864"/>
<CursorPos X="29" Y="3884"/>
<UsageCount Value="8"/>
</Unit7>
<Unit8>
<Filename Value="..\lcl\editbtn.pas"/>
<UnitName Value="EditBtn"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="1" Y="1"/>
<UsageCount Value="8"/>
</Unit8>
<Unit9>
<Filename Value="..\lcl\grids.pas"/>
<UnitName Value="Grids"/>
<WindowIndex Value="0"/>
<TopLine Value="595"/>
<CursorPos X="28" Y="3253"/>
<UsageCount Value="8"/>
</Unit9>
<Unit10>
<Filename Value="..\lcl\include\customcontrol.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="114"/>
<CursorPos X="1" Y="134"/>
<UsageCount Value="8"/>
</Unit10>
<Unit11>
<Filename Value="..\lcl\include\control.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="3460"/>
<CursorPos X="1" Y="3480"/>
<UsageCount Value="8"/>
</Unit11>
<Unit12>
<Filename Value="..\lcl\include\rasterimage.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="293"/>
<CursorPos X="1" Y="308"/>
<UsageCount Value="8"/>
</Unit12>
<Unit13>
<Filename Value="..\lcl\include\custombitmap.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="335"/>
<CursorPos X="1" Y="354"/>
<UsageCount Value="8"/>
</Unit13>
<Unit14>
<Filename Value="..\lcl\graphics.pp"/>
<UnitName Value="Graphics"/>
<WindowIndex Value="0"/>
<TopLine Value="986"/>
<CursorPos X="34" Y="984"/>
<UsageCount Value="8"/>
</Unit14>
<Unit15>
<Filename Value="..\lcl\include\brush.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="181"/>
<CursorPos X="1" Y="197"/>
<UsageCount Value="8"/>
</Unit15>
<Unit16>
<Filename Value="..\lcl\include\winapi.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="276"/>
<CursorPos X="1" Y="289"/>
<UsageCount Value="8"/>
</Unit16>
<Unit17>
<Filename Value="..\lcl\interfaces\win32\win32winapi.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="1444"/>
<CursorPos X="1" Y="1460"/>
<UsageCount Value="8"/>
</Unit17>
<Unit18>
<Filename Value="lazres.pp"/>
<UnitName Value="LazRes"/>
<WindowIndex Value="0"/>
<TopLine Value="22"/>
<CursorPos X="1" Y="34"/>
<UsageCount Value="18"/>
</Unit18>
<Unit19>
<Filename Value="..\lcl\lresources.pp"/>
<UnitName Value="LResources"/>
<WindowIndex Value="0"/>
<TopLine Value="1197"/>
<CursorPos X="1" Y="1211"/>
<UsageCount Value="14"/>
</Unit19>
<Unit20>
<Filename Value="C:\Documents and Settings\AndyK\My Documents\lazprojects\Addons\smithchart.pas"/>
<UnitName Value="Smithchart"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="52" Y="15"/>
<UsageCount Value="14"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit20>
<Unit21>
<Filename Value="C:\Documents and Settings\AndyK\My Documents\lazprojects\Addons\Smithchart.lrs"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="17" Y="1"/>
<UsageCount Value="14"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit21>
<Unit22>
<Filename Value="C:\devel\lazarus\tools\lazres.pp"/>
<UnitName Value="LazRes"/>
<WindowIndex Value="0"/>
<TopLine Value="31"/>
<CursorPos X="1" Y="56"/>
<UsageCount Value="10"/>
</Unit22>
<Unit23>
<Filename Value="C:\devel\lazarus\lcl\stdctrls.pp"/>
<UnitName Value="StdCtrls"/>
<WindowIndex Value="0"/>
<TopLine Value="1538"/>
<CursorPos X="46" Y="1549"/>
<UsageCount Value="13"/>
</Unit23>
<Unit24>
<Filename Value="C:\devel\lazarus\lcl\include\customlistbox.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="459"/>
<CursorPos X="3" Y="462"/>
<UsageCount Value="13"/>
</Unit24>
<Unit25>
<Filename Value="C:\devel\lazarus\lcl\lcltype.pp"/>
<UnitName Value="LCLType"/>
<WindowIndex Value="0"/>
<TopLine Value="1127"/>
<CursorPos X="5" Y="1141"/>
<UsageCount Value="13"/>
</Unit25>
<Unit26>
<Filename Value="glazresmain.lfm"/>
<WindowIndex Value="0"/>
<TopLine Value="217"/>
<CursorPos X="1" Y="1"/>
<UsageCount Value="10"/>
<DefaultSyntaxHighlighter Value="LFM"/>
</Unit26>
<Unit27>
<Filename Value="C:\devel\lazarus\lcl\lresources.pp"/>
<UnitName Value="LResources"/>
<WindowIndex Value="0"/>
<TopLine Value="3038"/>
<CursorPos X="3" Y="3040"/>
<UsageCount Value="12"/>
</Unit27>
<Unit28>
<Filename Value="C:\devel\lazarus\lcl\forms.pp"/>
<UnitName Value="Forms"/>
<WindowIndex Value="0"/>
<TopLine Value="1356"/>
<CursorPos X="15" Y="1369"/>
<UsageCount Value="10"/>
</Unit28>
<Unit29>
<Filename Value="C:\devel\fpc\source\rtl\objpas\sysutils\osutilsh.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="25"/>
<CursorPos X="10" Y="39"/>
<UsageCount Value="11"/>
</Unit29>
<Unit30>
<Filename Value="C:\devel\fpc\source\rtl\win\sysutils.pp"/>
<UnitName Value="sysutils"/>
<WindowIndex Value="0"/>
<TopLine Value="1089"/>
<CursorPos X="3" Y="1091"/>
<UsageCount Value="11"/>
</Unit30>
<Unit31>
<Filename Value="C:\devel\fpc\source\rtl\objpas\sysutils\osutil.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="67"/>
<CursorPos X="30" Y="84"/>
<UsageCount Value="11"/>
</Unit31>
<Unit32>
<Filename Value="C:\devel\fpc\source\packages\fcl-base\src\inifiles.pp"/>
<UnitName Value="IniFiles"/>
<WindowIndex Value="0"/>
<TopLine Value="608"/>
<CursorPos X="3" Y="612"/>
<UsageCount Value="11"/>
</Unit32>
</Units>
<JumpHistory Count="28" HistoryIndex="27">
<Position1>
<Filename Value="glazresmain.pp"/>
<Caret Line="423" Column="20" TopLine="409"/>
</Position1>
<Position2>
<Filename Value="glazresmain.pp"/>
<Caret Line="85" Column="34" TopLine="61"/>
</Position2>
<Position3>
<Filename Value="glazresmain.pp"/>
<Caret Line="319" Column="3" TopLine="283"/>
</Position3>
<Position4>
<Filename Value="glazresmain.pp"/>
<Caret Line="425" Column="20" TopLine="414"/>
</Position4>
<Position5>
<Filename Value="glazresmain.pp"/>
<Caret Line="75" Column="26" TopLine="52"/>
</Position5>
<Position6>
<Filename Value="glazresmain.pp"/>
<Caret Line="114" Column="72" TopLine="97"/>
</Position6>
<Position7>
<Filename Value="glazresmain.pp"/>
<Caret Line="449" Column="22" TopLine="442"/>
</Position7>
<Position8>
<Filename Value="glazresmain.pp"/>
<Caret Line="455" Column="1" TopLine="441"/>
</Position8>
<Position9>
<Filename Value="glazresmain.pp"/>
<Caret Line="341" Column="6" TopLine="330"/>
</Position9>
<Position10>
<Filename Value="glazresmain.pp"/>
<Caret Line="351" Column="14" TopLine="330"/>
</Position10>
<Position11>
<Filename Value="glazresmain.pp"/>
<Caret Line="379" Column="1" TopLine="378"/>
</Position11>
<Position12>
<Filename Value="glazresmain.pp"/>
<Caret Line="510" Column="16" TopLine="487"/>
</Position12>
<Position13>
<Filename Value="glazresmain.pp"/>
<Caret Line="160" Column="1" TopLine="132"/>
</Position13>
<Position14>
<Filename Value="glazresmain.pp"/>
<Caret Line="132" Column="14" TopLine="119"/>
</Position14>
<Position15>
<Filename Value="glazresmain.pp"/>
<Caret Line="536" Column="1" TopLine="521"/>
</Position15>
<Position16>
<Filename Value="glazresmain.pp"/>
<Caret Line="150" Column="1" TopLine="134"/>
</Position16>
<Position17>
<Filename Value="glazresmain.pp"/>
<Caret Line="525" Column="1" TopLine="525"/>
</Position17>
<Position18>
<Filename Value="glazresmain.pp"/>
<Caret Line="155" Column="1" TopLine="134"/>
</Position18>
<Position19>
<Filename Value="glazresmain.pp"/>
<Caret Line="535" Column="1" TopLine="516"/>
</Position19>
<Position20>
<Filename Value="glazresmain.pp"/>
<Caret Line="163" Column="6" TopLine="150"/>
</Position20>
<Position21>
<Filename Value="glazresmain.pp"/>
<Caret Line="474" Column="1" TopLine="474"/>
</Position21>
<Position22>
<Filename Value="glazresmain.pp"/>
<Caret Line="453" Column="1" TopLine="332"/>
</Position22>
<Position23>
<Filename Value="glazresmain.pp"/>
<Caret Line="356" Column="1" TopLine="342"/>
</Position23>
<Position24>
<Filename Value="glazresmain.pp"/>
<Caret Line="66" Column="51" TopLine="52"/>
</Position24>
<Position25>
<Filename Value="glazresmain.pp"/>
<Caret Line="188" Column="8" TopLine="160"/>
</Position25>
<Position26>
<Filename Value="glazresmain.pp"/>
<Caret Line="193" Column="3" TopLine="191"/>
</Position26>
<Position27>
<Filename Value="glazresmain.pp"/>
<Caret Line="500" Column="37" TopLine="497"/>
</Position27>
<Position28>
<Filename Value="glazresmain.pp"/>
<Caret Line="469" Column="34" TopLine="453"/>
</Position28>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="glazres"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
<Checks>
<IOChecks Value="True"/>
<RangeChecks Value="True"/>
<OverflowChecks Value="True"/>
<StackChecks Value="True"/>
</Checks>
</CodeGeneration>
<Linking>
<Debugging>
<UseHeaptrc Value="True"/>
</Debugging>
</Linking>
<Other>
<CompilerMessages>
<UseMsgFile Value="True"/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
<EditorMacros Count="0"/>
</CONFIG>

View File

@ -0,0 +1,454 @@
object GLazResForm: TGLazResForm
Left = 547
Height = 532
Top = 94
Width = 610
HorzScrollBar.Page = 610
VertScrollBar.Page = 532
ActiveControl = DestEdt
AutoScroll = True
Caption = 'LRS Builder'
ClientHeight = 532
ClientWidth = 610
Icon.Data = {
3615000000000100020010100000000020006804000026000000202000000000
2000A81000008E04000028000000100000002000000001002000000000004004
000000000000000000000000000000000000FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01433D2E03313131093232320F313131153232321B3232
32214C4C4C1B4C4C4C0D4C4C4C05FFFFFF01FFFFFF01323232073131310D3131
31133131311B9D741D15E39E11195B4A2B2B323232353131313B323231433432
31494C4B4B3F4C4C4C314C4C4C23FFFFFF01FFFFFF0132323223323232353131
313B3332314356452C47CA861D45BA7B2151654A2B6F5C42268B533D24A74B39
26BD654E37975A4F455F4C4B4B474C4C4C03FFFFFF01483C2E495540287D4D3A
259B473724B5403222CBC18811C7DE9C0CD74E3B1BF5232323FF242424FF2727
27FF464646FF4D453CE55045399F4D433C07FFFFFF0124211FC3232323FF2424
24FF242424FF463B23FFF4BD24FFA8801EFF232323FF242424FF242424FF2828
28FF484848FF464646FF444444FF210F020FFFFFFF01242221CB252422FF2424
24FF242424FF9B853AFFE6C446FF363024FF242424FF242424FF242424FF2929
29FF484848FF464646FF444444FF2714050FFFFFFF01242220CD7D6734FF2525
24FF312F29FFE7D66DFF756B3EFF232323FF242424FF242424FF242424FF2A2A
2AFF484848FF464646FF444444FF2816050FFFFFFF01232220CFB7A756FF8076
4CFF7E7555FFC4B679FF272726FF242424FF242424FF242424FF242424FF2B2B
2BFF494949FF464646FF444444FF2817050FFFFFFF012A2927D1BBAF68FFF1E8
9BFFDDD4A4FF6A6355FF3E3A35FF38342DFF252423FF252525FF242424FF2C2C
2CFF4E4E4EFF454545FF484848FF2716050FFFFFFF013D3C3BD3C0B471FFFEF8
AFFFFEF9CDFFF9F3DDFFE6D9BFFF786D5CFF424241FF464646FF454545FF3A3A
3AFF5B5B5BFF575757FF595959FF2514040FFFFFFF0142413FD5C1B56BFFFDF7
A0FFFCF5B4FFC7BC96FF58544EFF494949FF4A4A4AFF4B4B4BFF4B4B4BFF5454
54FF585858FF565656FF565656FF2514040FFFFFFF01454443D5C2B25CFFF3E7
7AFF958B5FFF4B4B4AFF4D4D4DFF4E4E4EFF4F4F4FFF4F4F4FFF505050FF5A5A
5AFF555555FF535353FF535353FF2615040FFFFFFF01494847D7A48B46FF6C64
4BFF515151FF525252FF525252FF535353FF545454FF545454FF555555FF6060
60FF535353FF505050FF505050FF2310020FFFFFFF014A4947D1555453FF5555
55FF565656FF565656FF575757FF585858FF595959FF595959FF5A5A5AFF6565
65FF505050FF4D4D4DFF4B4B4BF71608000BFFFFFF01EAB10E097E64202B6C5E
3B4F665D4573635C4A97635D4EB9605C51DB5C5A56F55E5E5EFF5F5F5FFF6A6A
6AFF4D4D4CFD50483CAB664C2229FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01E69E0205E69D040D845E1627725E3A4B7E73
5F6F7F6A4A37FFFFFF01FFFFFF01FFFFFF010000FFFF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF2800000020000000400000000100
2000000000008010000000000000000000000000000000000000FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF012F2F2F03323232033434
3407323232093131310D3232320F3232321332323217323232194C4C4C154C4C
4C0F4C4C4C074D4D4D03FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01433D2E093232320F32323213333333173232
32193131311D3232322133333323323232273232322B3232322D4C4C4C274C4C
4C214C4C4C194C4C4C134C4C4C0B4C4C4C05FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF013232320331313105303030093333330B3232320F3131
31138E6D2009F4AC0B09F2AA0C0FDD9D1013453E2F2132323227323232293232
322D3131313132323233323232373232323B3232323D323232414C4C4C394C4C
4C334C4C4C2B4C4C4C254C4C4C1D4C4C4C17FFFFFF01FFFFFF01FFFFFF01FFFF
FF01323232093232321332323215323232193232321D3232321F323232233232
322754472C25E8A1101DE49E1221E19B1325BD841B2D383631393333333D3232
324132323243323232473232324B3332314F34333153373431574E4B4A4D4C4C
4C454C4C4C3D4C4C4C374C4C4C2F4C4C4C294C4C4C03FFFFFF01FFFFFF01FFFF
FF013232321332323225323232293232322D3232322F32323233323232373232
32393232323DA9781F33D7921833D4901A39D08C1B3D996C2445363331533B35
30594138305F493B3067513F2F715A432E7B64492D856B4C2D8D6E553F79594E
45614E4B4A514C4C4C494C4C4C414C4C4C3B4C4C4C05FFFFFF01FFFFFF01FFFF
FF013232321D323232393232323D3232323F32323243313131473332314B3633
314F3A3530555C472C57C4822051C27F2157C07D225FBE7B23678E60277B7753
2A95755025AB5E411FBF573E20D14D381FDF3C2E1EED3B3126F35C4934DD7452
2EA96E553D7D584E46634D4B4B554C4C4C4D4C4C4C07FFFFFF01FFFFFF01FFFF
FF01323131273733314F3D3630574339305D4B3C306553402F6F5D462E79694C
2E8576532C916F4D259F94631A99C5861899C98A14ABCD8D11BFAF7615D92320
1CFB232323FF232323FF242424FF242424FF242424FF2B2B2BFF494949FF4140
40FF514435E562492EB16D553E7F554D47654D4A4909FFFFFF01FFFFFF01FFFF
FF0140372E335F482D79684A27955B4121AD503A20C34A3721D53B2F1FE5352C
20F123211EFD212121FFB27F11F5EDAB09F3F2AD06F9E8A30AFB543F18FF2323
23FF242424FF242424FF242424FF242424FF242424FF2B2B2BFF494949FF4646
46FF464646FF444444FF443E37ED493F33AF4E40360FFFFFFF01FFFFFF01FFFF
FF01241F1A8324221FF7202021FF242424FF242424FF242424FF242424FF2424
24FF242424FF40351EFFECB01CFFF8BC18FFF3B617FFA17518FF232323FF2424
24FF242424FF242424FF242424FF242424FF242424FF2C2C2CFF4A4A4AFF4646
46FF464646FF464646FF464646FF424243FF1F10031DFFFFFF01FFFFFF01FFFF
FF0124201C97242424FF242424FF242424FF242424FF242424FF242424FF2424
24FF232323FF927227FFF4C42FFFF8C72EFFDCAA2AFF322C20FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF2D2D2DFF4A4A4AFF4646
46FF464646FF464646FF464646FF424243FF230F011DFFFFFF01FFFFFF01FFFF
FF0124211C99242424FF242424FF242424FF242424FF242424FF242424FF2424
24FF2B2822FFDEB73EFFF9D343FFF0C940FF6D5927FF242424FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF2E2E2EFF4B4B4BFF4646
46FF464646FF464646FF464646FF424243FF2714051FFFFFFF01FFFFFF01FFFF
FF0124211C99242424FF2C2720FF232323FF242424FF242424FF242424FF2424
24FF706033FFF3D656FFF7DC57FFB89B41FF232222FF242424FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF2F2F2FFF4B4B4BFF4646
46FF464646FF464646FF464646FF424243FF2815051FFFFFFF01FFFFFF01FFFF
FF0124201C9B242424FF745A2EFF443A26FF232323FF242424FF242424FF2727
27FFC2AD53FFF8E76DFFEAD363FF423C29FF232323FF242424FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF303030FF4B4B4BFF4646
46FF464646FF464646FF464646FF424243FF2815051FFFFFFF01FFFFFF01FFFF
FF0124201C9D242424FF7D6935FFBFA148FF2A2926FF242424FF232323FF564F
39FFEFDF79FFF4E77EFF857846FF262626FF242424FF242424FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF313131FF4C4C4CFF4646
46FF464646FF464646FF464646FF424243FF2817051FFFFFFF01FFFFFF01FFFF
FF0123201C9D242424FF7F6F3BFFECD867FF8E7F48FF292929FF2D2D2DFF9E90
5BFFF5E991FFCDBB74FF32312DFF232323FF242424FF242424FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF323232FF4C4C4CFF4646
46FF464646FF464646FF464646FF424243FF2817051FFFFFFF01FFFFFF01FFFF
FF0123201C9F242424FF7F713FFFF4E77AFFEDDD7DFF5D5643FF46433DFFE8D6
90FFEFE09BFF5F5745FF262626FF242424FF242424FF242424FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF343434FF4C4C4CFF4646
46FF464646FF464646FF464646FF424243FF2817051FFFFFFF01FFFFFF01FFFF
FF0122201CA1242424FF7F7243FFF6EB86FFF9F196FFD3C583FF908767FFF3E7
ADFFA69875FF313131FF242424FF242424FF242424FF242424FF242424FF2424
24FF242424FF242424FF242424FF242424FF242424FF353535FF505050FF4646
46FF464646FF464646FF464646FF424243FF2817051FFFFFFF01FFFFFF01FFFF
FF012F2D29A3323232FF84774AFFF6EB8EFFFDF7A4FFFBF4AFFFFAF3BBFFF8EF
C3FF726C5FFF5F5951FF5A534AFF564F45FF50493CFF4A4032FF292623FF2323
23FF242424FF282828FF272727FF232323FF242424FF353535FF5D5D5DFF4747
47FF464646FF454545FF494949FF4F4F4FFF2615051FFFFFFF01FFFFFF01FFFF
FF01383532A5404040FF8A7D51FFF6EC91FFFEF8A9FFFEF9B8FFFEF9C8FFFDF8
D4FFF8F1D9FFF4EBDBFFF3E8D5FFEEE0C1FFD8C197FF73644EFF3B3B3AFF4040
40FF454545FF454545FF454545FF404040FF2B2B2BFF373737FF5F5F5FFF5757
57FF545454FF595959FF5B5B5BFF5A5A5AFF2514041FFFFFFF01FFFFFF01FFFF
FF013A3734A7424242FF8B7E52FFF6EB90FFFEF8A7FFFFF9B6FFFFF9C5FFFEFA
D3FFFEFADFFFFCF7E3FFF5EBD2FFC2B294FF524D47FF444444FF464646FF4747
47FF474747FF474747FF484848FF484848FF474747FF404040FF5E5E5EFF5858
58FF585858FF595959FF5A5A5AFF585858FF2514041FFFFFFF01FFFFFF01FFFF
FF013B3936A9454545FF8C7F52FFF6EB8AFFFEF79FFFFEF8ADFFFEF9BAFFFEF9
C5FFFBF4C8FFEEE0B6FF90836DFF424140FF484848FF494949FF494949FF4949
49FF4A4A4AFF4A4A4AFF4A4A4AFF4B4B4BFF4B4B4BFF585858FF5D5D5DFF5656
56FF575757FF585858FF585858FF575757FF2514041FFFFFFF01FFFFFF01FFFF
FF013D3B37AB474747FF8E8050FFF5EA80FFFDF794FFFEF8A0FFFDF6A8FFF7ED
A9FFD5C38EFF60594CFF444444FF4A4A4AFF4B4B4BFF4B4B4BFF4B4B4BFF4C4C
4CFF4C4C4CFF4C4C4CFF4D4D4DFF4D4D4DFF4E4E4EFF606060FF5B5B5BFF5454
54FF555555FF565656FF575757FF555555FF2614041FFFFFFF01FFFFFF01FFFF
FF013E3C39AD494949FF90814EFFF5E874FFFDF584FFFAF28CFFF1E38AFFA898
65FF484641FF4A4A4AFF4C4C4CFF4D4D4DFF4D4D4DFF4D4D4DFF4E4E4EFF4E4E
4EFF4E4E4EFF4F4F4FFF4F4F4FFF505050FF505050FF636363FF5A5A5AFF5353
53FF535353FF545454FF555555FF535353FF2615041FFFFFFF01FFFFFF01FFFF
FF013F3D3AAD4C4C4CFF92804BFFF4E065FFF7E870FFE0CD69FF756B49FF4646
46FF4E4E4EFF4F4F4FFF4F4F4FFF4F4F4FFF505050FF505050FF505050FF5151
51FF515151FF515151FF525252FF525252FF525252FF666666FF595959FF5151
51FF525252FF535353FF545454FF525252FF2615041FFFFFFF01FFFFFF01FFFF
FF01413F3CAF4E4E4EFF927D46FFEBCB52FFBDA34DFF565244FF4E4E4EFF5050
50FF515151FF515151FF515151FF525252FF525252FF525252FF535353FF5353
53FF535353FF545454FF545454FF545454FF555555FF696969FF585858FF4F4F
4FFF505050FF515151FF525252FF505050FF2411031FFFFFFF01FFFFFF01FFFF
FF0142403DB1515151FF8B7142FF8A733EFF4D4C4CFF525252FF535353FF5353
53FF535353FF545454FF545454FF545454FF555555FF555555FF555555FF5656
56FF565656FF565656FF575757FF575757FF575757FF6B6B6BFF575757FF4E4E
4EFF4F4F4FFF505050FF515151FF4F4F4FFF220F011DFFFFFF01FFFFFF01FFFF
FF0143413EB1535353FF54524FFF545454FF545454FF555555FF555555FF5555
55FF555555FF565656FF565656FF565656FF575757FF575757FF575757FF5858
58FF585858FF595959FF595959FF595959FF5A5A5AFF6E6E6EFF565656FF4C4C
4CFF4D4D4DFF4E4E4EFF4F4F4FFF4D4D4DFF1A0B011BFFFFFF01FFFFFF01FFFF
FF013F3D39974E4D4CFB565656FF565656FF575757FF575757FF575757FF5858
58FF585858FF585858FF595959FF595959FF595959FF5A5A5AFF5A5A5AFF5B5B
5BFF5B5B5BFF5B5B5BFF5C5C5CFF5C5C5CFF5C5C5CFF717171FF555555FF4B4B
4BFF4C4C4CFF4D4D4DFF4E4E4EFF444342E10F05000FFFFFFF01FFFFFF01FFFF
FF01EEA60403EAB20F1D8A67114377632B656B5C3789695E41A95F5946C95B57
4BE3545350FB59595AFF5C5C5CFF5C5C5CFF5C5C5CFF5C5C5CFF5D5D5DFF5D5D
5DFF5D5D5DFF5E5E5EFF5E5E5EFF5E5E5EFF5F5F5FFF747474FF535353FF4949
49FF4A4A4AFF484541F15A47288BA6680015FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01F1A60C03EBAF0E05E9B0180BECB1
1A15F4BB1E1F89660F41836B2F6167583289746645A35D5542C9675F50DD5352
50FB5F5F5FFF606060FF616161FF616161FF616161FF777777FF555555FF4543
40F555452A979D620325E2880005FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01EA9C0003E4A30005E79D040BE79E0313E69D
061FA770053970552161765F35816C5D41A36C614EC5858076DD786D5BA98F5F
132FD1820205FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFF
FF01FFFFFF01FFFFFF01DD7D0003D9870105DE90130BE19D320FD78A1F07FFFF
FF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01FFFFFF01000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
LCLVersion = '1.1'
object LrsLabel: TLabel
Left = 16
Height = 15
Top = 14
Width = 141
Caption = 'Lazarus Resource Filename'
ParentColor = False
end
object AddAnyBtn: TBitBtn
Left = 16
Height = 30
Hint = 'Add (any kind of) files to the list'
Top = 264
Width = 88
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002C86
D8702D88D8A62D87D8EA2D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88
D8F72D88D8F72D88D8F72D87D8F72D88D8F12C86D893FFFFFF00FFFFFF00338E
D9E6DCF0FAF0A7DDF4FD9EDBF4FF96DAF3FF8ED8F3FF86D7F3FF7FD4F2FF79D3
F2FF72D2F1FF6CD0F1FF69CFF1FFC2EAF8FE338ED9F0FFFFFF00FFFFFF003594
DAF7EFFAFEFFA1E9F9FF91E5F8FF81E1F7FF72DEF6FF63DAF5FF54D7F4FF47D3
F3FF39D0F2FF2ECDF1FF26CBF0FFCAF2FBFF3594DAF7FFFFFF00FFFFFF00369A
DAF8F2FAFDFFB3EDFAFFA4E9F9FF95E6F8FF85E2F7FF76DEF6FF65DBF5FF57D7
F4FF49D4F3FF3BD1F2FF30CEF1FFCCF2FBFF3598DAF7FFFFFF00FFFFFF0036A1
DAF9F6FCFEFFC8F2FCFFB9EFFBFFACECFAFF9CE8F9FF8BE3F7FF7CE0F6FF6CDC
F6FF5DD9F5FF4FD6F4FF44D3F3FFD0F3FCFF359FDAF7FFFFFF00FFFFFF0037A6
DAFAFEFFFFFFF8FDFFFFF6FDFFFFF5FCFFFFF3FCFEFFD8F6FCFF94E6F8FF85E3
F7FF76DFF6FF68DBF5FF5CD8F4FFD7F4FCFF35A4DAF7FFFFFF00FFFFFF0035AB
DAFAE8F6FBFF94D4EFFF88CEEEFF73C1E9FFC9E9F6FFF2FCFEFFF3FCFEFFF2FC
FEFFF0FCFEFFEFFBFEFFEEFBFEFFFEFFFFFF36ABDAF7FFFFFF00FFFFFF0036AA
DAF2F1FAFDFF94DEF5FF93DCF4FF81D5F2FF6ACAEDFF6CCBEAFF85D3EFFF80D2
EFFF7AD0EFFF76CFEEFF72CFEEFFE9F7FBFF34AEDAF3FFFFFF00FFFFFF0035AF
DAF0F7FCFEFF8EE4F8FF91DEF5FF9FE0F5FFACE1F6FFEFFBFEFFF4FDFEFFF3FC
FEFFF1FCFEFFEFFBFEFFEEFBFEFFFAFDFFF936AFDAD4FFFFFF00FFFFFF0036B3
DAF8FDFEFEFFFEFFFFFFFEFEFFFFFDFEFFFFFEFFFFFFEAF7FBFF6BC7E4F96BC7
E3F86BC7E3F86BC7E3F879CDE6F774CAE5E132B1D956FFFFFF00FFFFFF0034B4
D9D05EC2E1FA60C3E2FA60C3E2FA60C3E2FA5FC3E2FA3CB6DBDD2CB2D8162CB2
D80F2CB2D80F2CB2D80F2CB2D80F2CB3D80F2CB3D804FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
OnClick = AddAnyBtnClick
ParentShowHint = False
ShowHint = True
TabOrder = 2
end
object MsgMemo: TMemo
Left = 16
Height = 138
Top = 328
Width = 576
ReadOnly = True
ScrollBars = ssAutoVertical
TabOrder = 6
WordWrap = False
end
object FileListBox: TListBox
Left = 16
Height = 176
Top = 80
Width = 576
ItemHeight = 0
MultiSelect = True
OnDrawItem = FileListBoxDrawItem
Style = lbOwnerDrawFixed
TabOrder = 1
end
object FilesLabel: TLabel
Left = 16
Height = 15
Top = 64
Width = 79
Caption = 'Files to include'
ParentColor = False
end
object DeleteBtn: TBitBtn
Left = 216
Height = 30
Hint = 'Delete selected files from the list'
Top = 264
Width = 88
Glyph.Data = {
F6000000424DF60000000000000076000000280000000F000000100000000100
04000000000080000000130B0000130B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333000000000
33333330F777777033333330F080807033333330F080707033333330F0808070
33333330F080707033333330F080807033333030F080707030333300F0808070
03333330F0807070333333307070707033333300000000000333330F88877777
0333330000000000033333333077703333333333300000333333
}
OnClick = DeleteBtnClick
ParentShowHint = False
ShowHint = True
TabOrder = 4
end
object ClearBtn: TBitBtn
Left = 312
Height = 30
Hint = 'Cleare the entire list'
Top = 264
Width = 88
Caption = 'Clear'
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000240000008F78
A800BBBCFF00BFBFF800B9B9B100C88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C
4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFF1414FF0046000000380A
5500161BFF000505EA0000000900C88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFA
F6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFC88C4FFF1414FF00390000001414
FFFF1414FFFFC88C4FFFC88C4FFFC88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFA
F6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFC88C4FFFBE7A4500380000008A5E
5A001414FFFF1414FFFFFEFAF6FFC88C4FFFFEFAF6FFDEEEF4FFBDE5F5FF72D1
F8FF53C3F7FF68C2F0FF1414FFFF1414FFFFC88C4FFFBE7A45003A000000C88C
4FFFC88C4FFF1414FFFF1414FFFFC88C4FFFFEFAF6FF87D2F1FFA6E3FCFFA1E6
FFFF5DCFFFFF1414FFFF1414FFFFFEFAF6FFC88C4FFFBE7A450046AAD400C88C
4FFFFEFAF6FFC88C4FFF1414FFFF1414FFFFFEFAF6FF93DAF1FFD3F3FFFF91DF
FFFF1414FFFF1414FFFF40B8F6FFFEFAF6FFC88C4FFFBE7A45004FAFD700C88C
4FFFFEFAF6FFC88C4FFFFEFAF6FF1414FFFF1414FFFF98DCF2FFAEE6FEFF1414
FFFF1414FFFF79D8FFFF51C4F9FFFEFAF6FFC88C4FFFBE7A450052B2D700C88C
4FFFFEFAF6FFC88C4FFFFEFAF6FFC88C4FFF1414FFFF1414FFFF1414FFFF1414
FFFF8FDAF9FF84D3F8FFB3E0F3FFFEFAF6FFC88C4FFF1414FF0054B5D800C88C
4FFFFEFAF6FFC88C4FFFFEFAF6FFC88C4FFF1414FFFF1414FFFF1414FFFF1414
FFFFAFE1F1FFE1EFF3FFFEF9F4FFFEFAF6FFC88C4FFF1414FF0056B7D900C88C
4FFFFEFAF6FFC88C4FFFFEFAF6FF1414FFFF1414FFFFFEFAF6FFFEFAF6FF1414
FFFF1414FFFFFEFAF6FFFEFAF6FFF3D5B0FFC88C4FFF3996CB0050B5D900C88C
4FFFFEFAF6FFC88C4FFF1414FFFF1414FFFFFEFAF6FFFEFAF6FFFEFAF6FFFEFA
F6FF1414FFFF1414FFFFEFD1ACFFC88C4FFF84DCFB003294CA0000000000C88C
4FFFFEFAF6FF1414FFFF1414FFFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C
4FFFC88C4FFF1414FFFF1414FFFFC88C4FFF51A6D5004700000000000000C88C
4FFF1414FFFF1414FFFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFA
F6FFEFD1ACFFC88C4FFF62B2DB0064B2D9000D17FF000000000000000000C88C
4FFFFEFAF6FFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C
4FFFC88C4FFFC88C4FFF1414FF001314FF001414FF001414FF0000000000C88C
4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFEFD1ACFFC88C
4FFF4F00000044000000000000001315FF001414FF001414FF0000000000C88C
4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C
4FFF410000004400000000000000000000000000000000000000
}
ModalResult = 8
OnClick = ClearBtnClick
ParentShowHint = False
ShowHint = True
TabOrder = 5
end
object CloseBtn: TBitBtn
Left = 512
Height = 30
Hint = 'Exit the program'
Top = 488
Width = 88
Caption = '&Close'
Kind = bkClose
OnClick = AddAnyBtnClick
ParentShowHint = False
ShowHint = True
TabOrder = 8
end
object StartBtn: TBitBtn
Left = 408
Height = 30
Hint = 'Create the output LRS file'
Top = 488
Width = 88
Caption = 'Start'
Enabled = False
Kind = bkAll
ModalResult = 8
OnClick = StartBtnClick
ParentShowHint = False
ShowHint = True
TabOrder = 7
end
object DestEdt: TFileNameEdit
Left = 16
Height = 23
Top = 32
Width = 552
OnAcceptFileName = DestEdtAcceptFileName
DialogKind = dkSave
DialogOptions = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
Filter = 'Lazarus Resource Files|*.lrs|All Files|*'
FilterIndex = 0
DefaultExt = 'lrs'
HideDirectories = False
ButtonWidth = 23
NumGlyphs = 1
MaxLength = 0
TabOrder = 0
OnEditingDone = DestEdtEditingDone
end
object MessagesLabel: TLabel
Left = 16
Height = 15
Top = 304
Width = 51
Caption = 'Messages'
ParentColor = False
end
object AddImgBtn: TBitBtn
Left = 112
Height = 30
Hint = 'Add images to the list'
Top = 264
Width = 88
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00196B3788196B37F2196B37FF196B37F2196B3788FFFFFF00FFFFFF00AA74
538AAB724FC3AA6D45F0AA6B43F0AA6B43F0AA6B43F0AA6B43F0AA6B43F05D6B
3DF8288C53FF64BA8DFF95D2B2FF64BA8DFF288C53FF196B378CFFFFFF00A86D
48E1EEECEAFFF7F2F0FFF8F3F0FFF8F3EFFFF7F3EFFFF7F2EFFFF7F2EEFF2270
3FFF62BA8BFF60BA87FFFFFFFFFF60B987FF67BC8FFF196B37F7FFFFFF00A664
3AF0F6F0ECFFFDE8D7FFFEE8D7FFFEE8D7FFFEE8D7FFFEE8D7FFFEE8D7FF317B
4CFF9CD4B6FFFFFFFFFFFFFFFFFFFFFFFFFF95D2B2FF196B37FFFFFFFF00A664
39F0F7F0ECFF816242FFAC8258FFAC8258FFAC8258FFAC8258FFAC8258FF4787
5DFF90D3B1FF92D6B1FFFFFFFFFF65BC8CFF67BC8FFF196B37F7FFFFFF00A866
3AF0F7F0EBFFAC8258FFE5AD75FFE5AD75FFE5AD75FFE5AD75FFE5AD75FF9B9E
6EFF61AB81FF95D4B4FFBAE6D0FF6ABB8FFF2D8F57FF196B378CFFFFFF00A866
3AF0F7F1ECFFAC8258FFE5AD75FFE5AD75FFE5AD75FFE5AD75FFE5AD75FFE5AD
75FFA1A172FF5F956EFF4F8E66FF498960FF6C7347F7FFFFFF00FFFFFF00A866
3CF0F7F2EDFFA67F56FFDEAA73FFDEAA73FFDDA973FFDDA873FFDCA772FFDCA7
72FFDCA772FFDCA772FFA47D55FFF6EDE6FFAA6D45F0FFFFFF00FFFFFF00A866
3CF0F7F3EEFF9C966EFFE6C79DFFE2C598FFDFC496FFC8BD88FFE4BA82FFE4BA
83FFE4BA83FFD3C199FFA59A7BFFF6EDE6FFAA6D45F0FFFFFF00FFFFFF00A866
3CF0F7F4EFFFB6A583FFF5DDB0FFF6DEB0FFF4DDAFFFF1DCADFFF3DAABFFF3DA
ACFFF2D9ABFFEFDAAEFFB4A584FFF4EEE6FFAA6D45F0FFFFFF00FFFFFF00A866
3CF0F7F4F1FFBEAB88FFFEE5B5FFFDE4B5FFFDE4B5FFFDE4B5FFFDE4B5FFFDE4
B5FFFDE4B5FFFDE4B5FFBEAB88FFF6EFE7FFAA6D45F0FFFFFF00FFFFFF00A866
3CF0F7F4F3FFB6A481FFF2DCADFFF5DEB0FFF2DDAFFFF6DEAFFFF7DFAFFFF8E0
B1FFFAE1B2FFFCE3B4FFBEAB88FFF7EFE8FFAB6D45F0FFFFFF00FFFFFF00A86D
46F0F3F2F1FF96815CFFA69E76FFA4A17DFFABA07AFFBAA27AFFBAA37CFFBAA4
7EFFBBA680FFBCA883FF8F8065FFF7F1EAFFAB6D45F0FFFFFF00FFFFFF00AB79
58E9DEDEDCFEF3F3F2FFF7F4F3FFF7F4F2FFF7F4F1FFF7F4EFFFF8F4EFFFF8F3
EEFFF8F2EDFFF8F2EBFFF7F2EBFFF1EEE8FFAA704AEFFFFFFF00FFFFFF00AA7B
5B8DAB7758E8A86D46F0A8663AF0A8663AF0A8663AF0A8663AF0A8663AF0A864
3AF0A8643AF0A8643AF0A8643AF0A86B43F0A874518FFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
OnClick = AddImgBtnClick
ParentShowHint = False
ShowHint = True
TabOrder = 3
end
object OpenDialog: TOpenDialog
Options = [ofAllowMultiSelect, ofEnableSizing, ofViewDetail]
left = 64
top = 400
end
object OpenPictureDialog: TOpenPictureDialog
Options = [ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail]
left = 232
top = 400
end
end

View File

@ -0,0 +1,536 @@
unit glazresmain;
{
***************************************************************************
* *
* This source is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This code is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* A copy of the GNU General Public License is available on the World *
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
***************************************************************************
Author of LazRes: Mattias Gaertner
Original idea for GLazRes: Andy Koz
Adapted by: Bart Broersma
GLazRes aims to be a GUI implementation of the LazRes program.
}
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
LCLProc, LResources, Buttons, EditBtn, LazUtf8Classes, Types, LCLType,
ExtDlgs, IniFiles;
type
{ TGLazResForm }
TGLazResForm = class(TForm)
ClearBtn: TBitBtn;
CloseBtn: TBitBtn;
DestEdt: TFileNameEdit;
MessagesLabel: TLabel;
OpenPictureDialog: TOpenPictureDialog;
AddImgBtn: TBitBtn;
StartBtn: TBitBtn;
FilesLabel: TLabel;
FileListBox: TListBox;
MsgMemo: TMemo;
AddAnyBtn: TBitBtn;
LrsLabel: TLabel;
OpenDialog: TOpenDialog;
DeleteBtn: TBitBtn;
procedure AddImgBtnClick(Sender: TObject);
procedure ClearBtnClick(Sender: TObject);
procedure DeleteBtnClick(Sender: TObject);
procedure DestEdtAcceptFileName(Sender: TObject; var {%H-}Value: String);
procedure DestEdtEditingDone(Sender: TObject);
procedure FileListBoxDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure AddAnyBtnClick(Sender: TObject);
procedure StartBtnClick(Sender: TObject);
private
{ private declarations }
FIniFileName: String;
procedure CreateAnchors;
procedure ResizeControls({%H-}Dummy: PtrInt);
procedure CreateLazarusResourceFile;
procedure ConvertFormToText(Stream: TMemoryStream);
procedure AddFiles(Names: TStrings);
procedure MaybeEnableButtons;
procedure AddMessage(const Msg: String);
procedure AddMessageFmt(const Msg: String; Args: Array of const);
procedure ClearMessages;
procedure LoadWindowGeometry;
procedure SaveWindowGeometry;
public
end;
var
GLazResForm: TGLazResForm;
implementation
{$R *.lfm}
const
ErrConvertToText = 'ERROR: unable to convert Delphi form to text: "%s"';
ErrFileNotFound = 'ERROR: File not found: "%s"';
ErrFileIsResource = 'ERROR: Cannot add resource file to itself ("%s")';
ErrCreate = 'ERROR: Cannot create "%s"';
ErrNoResourceName = 'ERROR: No resourcename found for "%s"';
MsgProcessing = 'Processing "%s"';
MsgResourceNameType = ' Resource name = "%s", Type = "%s"';
ErrRead = 'ERROR: Cannot read from "%s"';
MsgSuccess = 'Done.'+ LineEnding + 'Number of resources added: %d.';
MsgWrongExt = 'Filename does not have the required extension: fix it?';
AppName = 'GLazRes';
IniName = {$ifdef windows}'GLazRes.ini'{$else}'glazres.conf'{$endif};
scPosition = 'Position';
idLeft = 'Left';
idTop = 'Top';
idWidth = 'Width';
idHeight = 'Height';
//Needed for GetAppConfigDir
function GetVendorName: String;
begin
Result := '';
end;
function GetAppName: String;
begin
Result := AppName;
end;
{TGLazResForm}
// *************** Component Events *********************** //
procedure TGLazResForm.FormCreate(Sender: TObject);
begin
OnGetVendorName := @GetVendorName;
OnGetApplicationName := @GetAppName;
FIniFileName := GetAppConfigDir(False) + IniName;
CreateAnchors;
LoadWindowGeometry;
end;
procedure TGLazResForm.FormShow(Sender: TObject);
begin
MaybeEnableButtons;
OnResize := @FormResize;
//Using QueueAsyncCall delays the layout until the form is shown,
//before that ClientWidht may have wrong value (depending on widgetset and windowmanager)
Application.QueueAsyncCall(@ResizeControls,0);
end;
procedure TGLazResForm.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
SaveWindowGeometry;
end;
procedure TGLazResForm.FormResize(Sender: TObject);
begin
ResizeControls(0);
end;
procedure TGLazResForm.DestEdtAcceptFileName(Sender: TObject; var Value: String);
begin
DestEdtEditingDone(DestEdt);
end;
procedure TGLazResForm.DestEdtEditingDone(Sender: TObject);
var
Fn, Ext: String;
begin
Fn := DestEdt.FileName;
Ext := ExtractFileExt(Fn);
if (Fn <> '') and (CompareText(Ext, '.lrs') <> 0) then
begin
if MessageDlg(AppName,MsgWrongExt,mtConfirmation,[mbYes,mbNo],0) = mrYes then
begin
Fn := ChangeFileExt(Fn, '.lrs');
DestEdt.FileName := Fn;
end;
end;
MaybeEnableButtons;
end;
procedure TGLazResForm.StartBtnClick(Sender: TObject);
begin
CreateLazarusResourceFile;
end;
procedure TGLazResForm.AddAnyBtnClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
AddFiles(OpenDialog.Files);
end;
end;
procedure TGLazResForm.AddImgBtnClick(Sender: TObject);
begin
if OpenPictureDialog.Execute then
begin
AddFiles(OpenPictureDialog.Files);
end;
end;
procedure TGLazResForm.DeleteBtnClick(Sender: TObject);
var
Index: integer;
begin
for Index := FileListBox.Count - 1 downto 0 do
begin
if FileListBox.Selected[Index] then
FileListBox.Items.Delete(Index);
end;
MaybeEnableButtons;
end;
procedure TGLazResForm.ClearBtnClick(Sender: TObject);
begin
FileListBox.Items.Clear;
MaybeEnableButtons;
end;
procedure TGLazResForm.FileListBoxDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
var
OldBrushStyle: TBrushStyle;
OldTextStyle: TTextStyle;
NewTextStyle: TTextStyle;
ItemText: String;
TheCanvas: TCanvas;
begin
//Objective: draw only the FileName, not the fully qualified path.
if (odPainted in State) then Exit;
TheCanvas := (Control as TCustomListBox).Canvas;
ItemText := ExtractFileName(FileListBox.Items[Index]);
TheCanvas.FillRect(ARect);
OldBrushStyle := TheCanvas.Brush.Style;
TheCanvas.Brush.Style := bsClear;
OldTextStyle := TheCanvas.TextStyle;
NewTextStyle := OldTextStyle;
NewTextStyle.Layout := tlCenter;
NewTextStyle.RightToLeft := Control.UseRightToLeftReading;
if Control.UseRightToLeftAlignment then
begin
NewTextStyle.Alignment := taRightJustify;
ARect.Right := ARect.Right - 2;
end
else
begin
NewTextStyle.Alignment := taLeftJustify;
ARect.Left := ARect.Left + 2;
end;
TheCanvas.TextStyle := NewTextStyle;
TheCanvas.TextRect(ARect, ARect.Left, ARect.Top, ItemText);
TheCanvas.Brush.Style := OldBrushStyle;
TheCanvas.TextStyle := OldTextStyle;
end;
// ***************** Form layout and looks *********************** //
procedure TGLazResForm.CreateAnchors;
begin
DestEdt.AnchorToNeighbour(akTop, 5, LrsLabel);
FilesLabel.AnchorToNeighbour(akTop, 10, DestEdt);
FileListBox.AnchorToNeighbour(akTop, 5, FilesLabel);
AddAnyBtn.AnchorToNeighbour(akTop, 10, FileListBox);
AddImgBtn.AnchorToNeighbour(akTop, 10, FileListBox);
DeleteBtn.AnchorToNeighbour(akTop, 10, FileListBox);
ClearBtn.AnchorToNeighbour(akTop, 10, FileListBox);
AddImgBtn.AnchorToNeighbour(akLeft, 5 , AddAnyBtn);
DeleteBtn.AnchorToNeighbour(akLeft, 15, AddImgBtn);
ClearBtn.AnchorToNeighbour(akLeft, 5, DeleteBtn);
MessagesLabel.AnchorToNeighbour(akTop, 10, AddAnyBtn);
MsgMemo.AnchorToNeighbour(akTop, 5, MessagesLabel);
StartBtn.AnchorToNeighbour(akTop, 10, MsgMemo);
CloseBtn.AnchorToNeighbour(akTop, 10, MsgMemo);
CloseBtn.AnchorToNeighbour(akLeft, 5, StartBtn);
end;
procedure TGLazResForm.ResizeControls(Dummy: PtrInt);
var
CH, CW, LMargin, MinW, MinH, HeightLeft: Integer;
begin
CH := ClientHeight;
CW := ClientWidth;
LMargin := LrsLabel.Left;
MinW := ClearBtn.Left + ClearBtn.Width + 2 * LMargin;
DestEdt.Width := CW - (2 * LMargin) - DestEdt.ButtonWidth;
if (DestEdt.Width < MinW) then DestEdt.Width := MinW;
FileListBox.Width := CW - (2 * LMargin);
if (FileListBox.Width < MinW) then FileListBox.Width := MinW;
MsgMemo.Width := FileListBox.Width;
StartBtn.Left := CW - (StartBtn.Width + CloseBtn.Width + 5) - LMargin;
MinH := 532; //desing time value
if CH <= MinH then
begin
MsgMemo.Height := 138;// design time value;
Exit;
end;
HeightLeft := CH - MsgMemo.Top;
MsgMemo.Height := HeightLeft - StartBtn.Height - 10 - 10;
end;
procedure TGLazResForm.LoadWindowGeometry;
var
IniDir: String;
Ini: TIniFile;
L, T, W, H: LongInt;
begin
IniDir := ExtractFileDir(FIniFileName);
if not DirectoryExists(IniDir) then if not ForceDirectories(IniDir) then Exit;
try
Ini := TIniFile.Create(FIniFileName);
try
L := Ini.ReadInteger(scPosition, idLeft, Left);
T := Ini.ReadInteger(scPosition, idTop, Top);
W := Ini.ReadInteger(scPosition, idWidth, Width);
H := Ini.ReadInteger(scPosition, idHeight, Height);
SetBounds(L, T, W, H);
finally
Ini.Free;
end;
except
debugln('Error reading geometry from "',FIniFileName,'".');
end;
end;
procedure TGLazResForm.SaveWindowGeometry;
var
IniDir: String;
Ini: TIniFile;
begin
IniDir := ExtractFileDir(FIniFileName);
if not DirectoryExists(IniDir) then if not ForceDirectories(IniDir) then
begin
debugln('Unable to create config file "',FIniFileName,'".');
Exit;
end;
try
Ini := TIniFile.Create(FIniFileName);
try
Ini.CacheUpdates := True;
Ini.WriteInteger(scPosition, idLeft, Left);
Ini.WriteInteger(scPosition, idTop, Top);
Ini.WriteInteger(scPosition, idWidth, Width);
Ini.WriteInteger(scPosition, idHeight, Height);
finally
Ini.Free;
end;
except
debugln('Error saving geometry to "',FIniFileName,'".');
end;
end;
procedure TGLazResForm.MaybeEnableButtons;
begin
StartBtn.Enabled := (DestEdt.FileName <> '') and
(FileListBox.Count > 0);
DeleteBtn.Enabled := (FileListBox.Count > 0);
ClearBtn.Enabled := (FileListBox.Count > 0);
end;
// ************** LRS Creating related procedures ***************** //
procedure TGLazResForm.AddFiles(Names: TStrings);
var
Index: Integer;
begin
for Index := 0 to Names.Count - 1 do
begin
FileListBox.Items.Add(Names[Index]);
end;
MaybeEnableButtons;
end;
procedure TGLazResForm.ConvertFormToText(Stream: TMemoryStream);
var TextStream: TMemoryStream;
begin
try
try
TextStream:=TMemoryStream.Create;
FormDataToText(Stream,TextStream);
TextStream.Position:=0;
Stream.Clear;
Stream.CopyFrom(TextStream,TextStream.Size);
Stream.Position:=0;
except
on E: Exception do begin
debugln(Format(ErrConvertToText,[E.Message]));
end;
end;
finally
TextStream.Free;
end;
end;
procedure TGLazResForm.CreateLazarusResourceFile;
var
FileCount, Index:integer;
S:string;
ResFileStream, BinFileStream: TFileStreamUtf8;
ResMemStream, BinMemStream: TMemoryStream;
ResourceFilename, FullResourceFilename, BinFilename, BinExt, ResourceName, ResourceType: String;
begin
FileCount := FileListBox.Count;
if FileCount = 0 then
Exit;
FullResourceFileName := ExpandFileNameUtf8(DestEdt.FileName);
ResourceFileName := ExtractFileName(FullResourceFileName);
ClearMessages;
FullResourceFilename := ExpandFileNameUTF8(ResourceFilename);
// check that all resources exists and are not the destination file
for Index := 0 to FileCount-1 do
begin
S := FileListBox.Items[Index]; //FileListBox[Index];
if not FileExistsUTF8(S) then
begin
AddMessageFmt(ErrFileNotfound,[S]);
exit;
end;
if CompareFileNames(ExpandFileNameUTF8(S), FullResourceFilename, True) = 0 then
begin
AddMessageFmt(ErrFileIsResource,[S]);
exit;
end;
end;
try
ResFileStream:=TFileStreamUtf8.Create(ResourceFilename,fmCreate);
except
AddMessageFmt(ErrCreate,[ResourceFileName]);
exit;
end;
ResMemStream:=TMemoryStream.Create;
try
for Index := 0 to FileCount - 1 do
begin
BinFilename:=FileListBox.Items[Index];
AddMessageFmt(MsgProcessing,[BinFilename]);
try
BinFileStream:=TFileStreamUtf8.Create(BinFilename, fmOpenRead);
BinMemStream:=TMemoryStream.Create;
try
BinMemStream.CopyFrom(BinFileStream, BinFileStream.Size);
BinMemStream.Position := 0;
BinExt := Utf8UpperCase(ExtractFileExt(BinFilename));
if (BinExt='.LFM') or (BinExt='.DFM') or (BinExt='.XFM')
then
begin
ResourceType:='FORMDATA';
ConvertFormToText(BinMemStream);
ResourceName:=FindLFMClassName(BinMemStream);
if ResourceName='' then
begin
AddMessageFmt(ErrNoResourceName,[BinFileName]);
exit;
end;
AddMessageFmt(MsgResourceNameType,[ResourceName,ResourceType]);
LFMtoLRSstream(BinMemStream,ResMemStream);
end
else
begin
ResourceType := copy(BinExt,2,length(BinExt)-1);
ResourceName := ExtractFileName(BinFilename);
ResourceName := copy(ResourceName, 1, Length(ResourceName) - Length(BinExt));
if (ResourceName = '') then
begin
AddMessageFmt(ErrNoResourceName,[BinFileName]);
exit;
end;
AddMessageFmt(MsgResourceNameType,[ResourceName,ResourceType]);
BinaryToLazarusResourceCode(BinMemStream, ResMemStream ,ResourceName, ResourceType);
end;
finally
BinFileStream.Free;
BinMemStream.Free;
end;
except
AddMessageFmt(ErrRead,[BinfileName]);
exit;
end;
end;
ResMemStream.Position := 0;
ResFileStream.CopyFrom(ResMemStream, ResMemStream.Size);
AddMessageFmt(MsgSuccess,[FileCount]);
finally
ResMemStream.Free;
ResFileStream.Free;
end;
end;
// **************** User interaction **************** //
procedure TGLazResForm.AddMessage(const Msg: String);
begin
MsgMemo.Lines.Add(Msg);
end;
procedure TGLazResForm.AddMessageFmt(const Msg: String; Args: array of const);
begin
MsgMemo.Lines.Add(Format(Msg, Args));
end;
procedure TGLazResForm.ClearMessages;
begin
MsgMemo.Lines.Clear;
end;
end.