├── .gitignore ├── Bin32 ├── Register32bit.bat └── UnRegister32bit.bat ├── Bin64 ├── Register64bit.bat └── UnRegister64bit.bat ├── Build.bat ├── Debug └── Preview Handlers │ ├── PreviewHandler Host │ ├── PreviewHost.dpr │ ├── PreviewHost.dproj │ ├── PreviewHost.res │ ├── uHostPreview.pas │ ├── uMain.dfm │ └── uMain.pas │ └── PreviewHandler Host_Without_TShellListView │ ├── PreviewHost.dpr │ ├── PreviewHost.dproj │ ├── PreviewHost.res │ ├── uHostPreview.pas │ ├── uMain.dfm │ └── uMain.pas ├── Ext ├── SVGIconImageList │ ├── Image32 │ │ └── source │ │ │ ├── Clipper.Core.pas │ │ │ ├── Clipper.Engine.pas │ │ │ ├── Clipper.Minkowski.pas │ │ │ ├── Clipper.Offset.pas │ │ │ ├── Clipper.RectClip.pas │ │ │ ├── Clipper.inc │ │ │ ├── Clipper.pas │ │ │ ├── Img32.CQ.pas │ │ │ ├── Img32.Clipper2.pas │ │ │ ├── Img32.Draw.pas │ │ │ ├── Img32.Extra.pas │ │ │ ├── Img32.FMX.pas │ │ │ ├── Img32.Fmt.BMP.pas │ │ │ ├── Img32.Fmt.GIF.pas │ │ │ ├── Img32.Fmt.JPG.pas │ │ │ ├── Img32.Fmt.PNG.pas │ │ │ ├── Img32.Fmt.QOI.pas │ │ │ ├── Img32.Fmt.SVG.pas │ │ │ ├── Img32.Layers.pas │ │ │ ├── Img32.Panels.dcr │ │ │ ├── Img32.Panels.pas │ │ │ ├── Img32.Resamplers.pas │ │ │ ├── Img32.SVG.Core.pas │ │ │ ├── Img32.SVG.HashConsts.inc │ │ │ ├── Img32.SVG.HtmlColorConsts.inc │ │ │ ├── Img32.SVG.HtmlHashConsts.inc │ │ │ ├── Img32.SVG.HtmlValues.inc │ │ │ ├── Img32.SVG.Path.pas │ │ │ ├── Img32.SVG.PathDesign.pas │ │ │ ├── Img32.SVG.Reader.pas │ │ │ ├── Img32.Storage.pas │ │ │ ├── Img32.Text.pas │ │ │ ├── Img32.Transform.pas │ │ │ ├── Img32.Vector.pas │ │ │ ├── Img32.Vectorizer.pas │ │ │ ├── Img32.inc │ │ │ └── Img32.pas │ └── Source │ │ ├── Browser.IconifyApi.pas │ │ ├── D2DSVGFactory.pas │ │ ├── FMX.Image32SVG.pas │ │ ├── FMX.ImageSVG.pas │ │ ├── FMX.ImageSkiaSVG.pas │ │ ├── FMX.SVGIconImage.pas │ │ ├── FMX.SVGIconImageList.pas │ │ ├── FMX.SVGIconsUtils.pas │ │ ├── Image32SVGFactory.pas │ │ ├── SVGIconImage.pas │ │ ├── SVGIconImageCollection.pas │ │ ├── SVGIconImageList.inc │ │ ├── SVGIconImageList.pas │ │ ├── SVGIconImageListBase.pas │ │ ├── SVGIconItems.pas │ │ ├── SVGIconUtils.pas │ │ ├── SVGIconVirtualImageList.pas │ │ ├── SVGInterfaces.pas │ │ ├── SVGMessaging.pas │ │ ├── SkiaSVGFactory.pas │ │ ├── Winapi.D2DMissing.pas │ │ ├── dlgExportPNG.dfm │ │ └── dlgExportPNG.pas ├── StyledComponents │ ├── packages │ │ ├── D12 │ │ │ ├── 1.Vcl.StyledComponents.groupproj │ │ │ ├── 2.Vcl.StyledAnimatedComponents.groupproj │ │ │ ├── StyledAnimatedComponents.dpk │ │ │ ├── StyledAnimatedComponents.dproj │ │ │ ├── StyledComponents.dpk │ │ │ ├── StyledComponents.dproj │ │ │ ├── dclStyledAnimatedComponents.dpk │ │ │ ├── dclStyledAnimatedComponents.dproj │ │ │ ├── dclStyledComponents.dpk │ │ │ └── dclStyledComponents.dproj │ │ ├── StyledAnimatedButton.dcr │ │ ├── StyledAnimatedTaskDialog.dcr │ │ ├── StyledAnimatedToolBar.dcr │ │ ├── StyledButton.dcr │ │ ├── StyledButtonGroup.dcr │ │ ├── StyledCategoryButtons.dcr │ │ ├── StyledComponentsSplash.res │ │ ├── StyledDbNavigator.dcr │ │ ├── StyledTaskDialog.dcr │ │ ├── StyledToolBar.dcr │ │ ├── Vcl.StyledAnimatedComponentsRegister.pas │ │ ├── Vcl.StyledAttributesFrameUnit.dfm │ │ ├── Vcl.StyledAttributesFrameUnit.pas │ │ ├── Vcl.StyledButtonCustomEditorUnit.dfm │ │ ├── Vcl.StyledButtonCustomEditorUnit.pas │ │ ├── Vcl.StyledButtonEditorUnit.dfm │ │ ├── Vcl.StyledButtonEditorUnit.pas │ │ └── Vcl.StyledComponentsRegister.pas │ └── source │ │ ├── Animations.RES │ │ ├── Animations.rc │ │ ├── BuildResFileOfAnimations.cmd │ │ ├── CommandLinkBMP.RES │ │ ├── CommandLinkPNG.RES │ │ ├── Skia.Vcl.StyledTaskDialogAnimatedUnit.dfm │ │ ├── Skia.Vcl.StyledTaskDialogAnimatedUnit.pas │ │ ├── StyledButtonsBMP.RES │ │ ├── StyledButtonsPNG.RES │ │ ├── StyledComponents.inc │ │ ├── StyledNavButtonsBMP.RES │ │ ├── StyledNavButtonsPNG.RES │ │ ├── Vcl.AngularButtonStyles.pas │ │ ├── Vcl.BootstrapButtonStyles.pas │ │ ├── Vcl.ButtonStylesAttributes.pas │ │ ├── Vcl.ColorButtonStyles.pas │ │ ├── Vcl.SkAnimatedImageHelper.pas │ │ ├── Vcl.StandardButtonStyles.pas │ │ ├── Vcl.StyledAnimatedButton.pas │ │ ├── Vcl.StyledAnimatedTaskDialog.pas │ │ ├── Vcl.StyledAnimatedToolbar.pas │ │ ├── Vcl.StyledButton.pas │ │ ├── Vcl.StyledButtonGroup.pas │ │ ├── Vcl.StyledCategoryButtons.pas │ │ ├── Vcl.StyledCmpMessages.pas │ │ ├── Vcl.StyledCmpStrUtils.pas │ │ ├── Vcl.StyledCompResources.dfm │ │ ├── Vcl.StyledComponentsHooks.pas │ │ ├── Vcl.StyledDbNavigator.pas │ │ ├── Vcl.StyledGraphicsUtils.pas │ │ ├── Vcl.StyledMessagesHooks.pas │ │ ├── Vcl.StyledTaskDialog.pas │ │ ├── Vcl.StyledTaskDialogFormUnit.dfm │ │ ├── Vcl.StyledTaskDialogFormUnit.pas │ │ ├── Vcl.StyledTaskDialogStdUnit.dfm │ │ ├── Vcl.StyledTaskDialogStdUnit.pas │ │ ├── Vcl.StyledToolbar.pas │ │ └── Vcl.TemplateButtonStyles.pas ├── SynEdit │ └── Source │ │ ├── DPageSetup.dfm │ │ ├── DPageSetup.pas │ │ ├── FSynHighlightProp.dfm │ │ ├── FSynHighlightProp.pas │ │ ├── FTestPrintPreview.dfm │ │ ├── FTestPrintPreview.pas │ │ ├── Page.bmp │ │ ├── SynAccessibility.pas │ │ ├── SynAutoCorrect.pas │ │ ├── SynAutoCorrectEditor.dfm │ │ ├── SynAutoCorrectEditor.pas │ │ ├── SynCompletionProposal.pas │ │ ├── SynDBEdit.pas │ │ ├── SynDWrite.pas │ │ ├── SynEdit.inc │ │ ├── SynEdit.pas │ │ ├── SynEdit.res │ │ ├── SynEditCodeFolding.pas │ │ ├── SynEditDataObject.pas │ │ ├── SynEditDragDrop.pas │ │ ├── SynEditExport.pas │ │ ├── SynEditHighlighter.pas │ │ ├── SynEditHighlighterOptions.pas │ │ ├── SynEditJedi.inc │ │ ├── SynEditKbdHandler.pas │ │ ├── SynEditKeyCmdEditor.dfm │ │ ├── SynEditKeyCmdEditor.pas │ │ ├── SynEditKeyCmds.pas │ │ ├── SynEditKeyCmdsEditor.dfm │ │ ├── SynEditKeyCmdsEditor.pas │ │ ├── SynEditKeyConst.pas │ │ ├── SynEditMiscClasses.pas │ │ ├── SynEditMiscProcs.pas │ │ ├── SynEditOptionsDialog.dfm │ │ ├── SynEditOptionsDialog.pas │ │ ├── SynEditPlugins.pas │ │ ├── SynEditPrint.pas │ │ ├── SynEditPrintHeaderFooter.pas │ │ ├── SynEditPrintMargins.pas │ │ ├── SynEditPrintMarginsDialog.dfm │ │ ├── SynEditPrintMarginsDialog.pas │ │ ├── SynEditPrintPreview.pas │ │ ├── SynEditPrintTypes.pas │ │ ├── SynEditPrinterInfo.pas │ │ ├── SynEditPropertyReg.pas │ │ ├── SynEditPythonBehaviour.pas │ │ ├── SynEditReg.dcr │ │ ├── SynEditReg.pas │ │ ├── SynEditReg.res │ │ ├── SynEditRegexSearch.pas │ │ ├── SynEditScrollBars.pas │ │ ├── SynEditSearch.pas │ │ ├── SynEditStrConst.pas │ │ ├── SynEditTextBuffer.pas │ │ ├── SynEditTypes.pas │ │ ├── SynEditUndo.pas │ │ ├── SynEditWildcardSearch.pas │ │ ├── SynEditWordWrap.pas │ │ ├── SynExportHTML.pas │ │ ├── SynExportRTF.pas │ │ ├── SynExportTeX.pas │ │ ├── SynHighlighterADSP21xx.pas │ │ ├── SynHighlighterAWK.pas │ │ ├── SynHighlighterAsm.pas │ │ ├── SynHighlighterBaan.pas │ │ ├── SynHighlighterBat.pas │ │ ├── SynHighlighterCAC.pas │ │ ├── SynHighlighterCPM.pas │ │ ├── SynHighlighterCS.pas │ │ ├── SynHighlighterCache.pas │ │ ├── SynHighlighterCobol.pas │ │ ├── SynHighlighterCpp.pas │ │ ├── SynHighlighterCss.pas │ │ ├── SynHighlighterDOT.pas │ │ ├── SynHighlighterDWS.pas │ │ ├── SynHighlighterDfm.pas │ │ ├── SynHighlighterDml.pas │ │ ├── SynHighlighterEiffel.pas │ │ ├── SynHighlighterFortran.pas │ │ ├── SynHighlighterFoxpro.pas │ │ ├── SynHighlighterGWS.pas │ │ ├── SynHighlighterGalaxy.pas │ │ ├── SynHighlighterGeneral.pas │ │ ├── SynHighlighterHC11.pas │ │ ├── SynHighlighterHP48.pas │ │ ├── SynHighlighterHaskell.pas │ │ ├── SynHighlighterHtml.pas │ │ ├── SynHighlighterIDL.pas │ │ ├── SynHighlighterIni.pas │ │ ├── SynHighlighterInno.pas │ │ ├── SynHighlighterJSON.pas │ │ ├── SynHighlighterJScript.pas │ │ ├── SynHighlighterJava.pas │ │ ├── SynHighlighterKix.pas │ │ ├── SynHighlighterLDraw.pas │ │ ├── SynHighlighterLLVM.pas │ │ ├── SynHighlighterM3.pas │ │ ├── SynHighlighterManager.pas │ │ ├── SynHighlighterModelica.pas │ │ ├── SynHighlighterMsg.pas │ │ ├── SynHighlighterMulti.pas │ │ ├── SynHighlighterOmni.pas │ │ ├── SynHighlighterPHP.pas │ │ ├── SynHighlighterPas.pas │ │ ├── SynHighlighterPerl.pas │ │ ├── SynHighlighterProgress.pas │ │ ├── SynHighlighterPython.pas │ │ ├── SynHighlighterRC.pas │ │ ├── SynHighlighterRexx.pas │ │ ├── SynHighlighterRuby.pas │ │ ├── SynHighlighterSDD.pas │ │ ├── SynHighlighterSQL.pas │ │ ├── SynHighlighterST.pas │ │ ├── SynHighlighterSml.pas │ │ ├── SynHighlighterTclTk.pas │ │ ├── SynHighlighterTeX.pas │ │ ├── SynHighlighterUNIXShellScript.pas │ │ ├── SynHighlighterURI.pas │ │ ├── SynHighlighterUnreal.pas │ │ ├── SynHighlighterVB.pas │ │ ├── SynHighlighterVBScript.pas │ │ ├── SynHighlighterVrml97.pas │ │ ├── SynHighlighterWebIDL.pas │ │ ├── SynHighlighterXML.pas │ │ ├── SynHighlighterYAML.pas │ │ ├── SynMacroRecorder.pas │ │ ├── SynOmniSetupDialog.dfm │ │ ├── SynOmniSetupDialog.pas │ │ ├── SynSpellCheck.dcr │ │ ├── SynSpellCheck.pas │ │ ├── SynURIOpener.pas │ │ ├── SynUnicode.pas │ │ ├── dlgConfirmReplace.dfm │ │ ├── dlgConfirmReplace.pas │ │ ├── dlgReplaceText.dfm │ │ ├── dlgReplaceText.pas │ │ ├── dlgSearchText.dfm │ │ └── dlgSearchText.pas └── VCLStyleUtils │ ├── Common │ ├── AwesomeFont.RC │ ├── AwesomeFont.RES │ ├── AwesomeFont_zip.RC │ ├── AwesomeFont_zip.RES │ ├── CompileResources.bat │ ├── CompileResources_zip.bat │ ├── VCL.Styles.Utils.inc │ ├── Vcl.PlatformVclStylesActnCtrls.pas │ ├── Vcl.Styles.ColorTabs.pas │ ├── Vcl.Styles.ControlColor.pas │ ├── Vcl.Styles.DPIAware.pas │ ├── Vcl.Styles.DateTimePickers.pas │ ├── Vcl.Styles.DbGrid.pas │ ├── Vcl.Styles.Ext.pas │ ├── Vcl.Styles.Fixes.pas │ ├── Vcl.Styles.FontAwesome.pas │ ├── Vcl.Styles.FormStyleHooks.pas │ ├── Vcl.Styles.Hooks.pas │ ├── Vcl.Styles.NC.pas │ ├── Vcl.Styles.OwnerDrawFix.pas │ ├── Vcl.Styles.Preview.pas │ ├── Vcl.Styles.Register.pas │ ├── Vcl.Styles.Utils.ComCtrls.pas │ ├── Vcl.Styles.Utils.Forms.pas │ ├── Vcl.Styles.Utils.Graphics.pas │ ├── Vcl.Styles.Utils.Menus.pas │ ├── Vcl.Styles.Utils.Misc.pas │ ├── Vcl.Styles.Utils.ScreenTips.pas │ ├── Vcl.Styles.Utils.StdCtrls.pas │ ├── Vcl.Styles.Utils.SysControls.pas │ ├── Vcl.Styles.Utils.SysStyleHook.pas │ ├── Vcl.Styles.Utils.SystemMenu.pas │ ├── Vcl.Styles.Utils.pas │ ├── Vcl.Styles.UxTheme.pas │ └── Vcl.Styles.WebBrowser.pas │ └── DDetours │ └── Source │ ├── CPUID.pas │ ├── DDetours.pas │ ├── DDetoursDefs.inc │ ├── InstDecode.pas │ ├── LegacyTypes.pas │ ├── ModRmFlagsTables.inc │ ├── OpCodesTables.inc │ └── TlHelp32.inc ├── Icons ├── folder-yellow-svg.svg ├── logo.ico ├── logo.svg ├── logo_512.png ├── setup.ico ├── setup.svg ├── setup_512.png ├── svg-logo-v.svg └── svgfolder_multires.ico ├── Images ├── About.png ├── Context-Menu.png ├── ExportToPNG.png ├── PreviewDelphiLogos.png ├── PreviewThumbnailsDark.png ├── PreviewThumbnailsLight.png ├── SVGIconImageListBanner.png ├── SVGPreviewHandler.png ├── SVGTextEditorDark.png ├── SVGTextEditorLight.png ├── SearchText.png ├── SettingsFont.png ├── SettingsPreview.png ├── SettingsTextColors.png ├── SettingsTheme.png ├── Setup.png ├── XYplorer_Preview.png └── XYplorer_Settings.png ├── LICENSE ├── README.htm ├── README.md ├── Setup ├── License_ENG.rtf ├── Licenza_ITA.rtf ├── SVGShellExtensions.iss ├── Settings.ini ├── SupportingDelphi.jpg ├── WizEtheaImage.bmp ├── WizEtheaSmallImage.bmp ├── WizEtheaSmallImage110x106.bmp ├── WizEtheaSmallImage119x123.bmp ├── WizEtheaSmallImage138x140.bmp ├── WizEtheaSmallImage64x68.bmp ├── WizEtheaSmallImage83x80.bmp └── WizEtheaSmallImage92x97.bmp ├── Source ├── ChildForm.dfm ├── ChildForm.pas ├── DPageSetup.dfm ├── DPageSetup.pas ├── DResources.dfm ├── DResources.pas ├── EditorMainForm.dfm ├── EditorMainForm.pas ├── EtheaMultires.ico ├── FSplash.dfm ├── FSplash.pas ├── FTestPrintPreview.dfm ├── FTestPrintPreview.pas ├── Main.pas ├── PreviewForm.dfm ├── PreviewForm.pas ├── SVGShellExtensions.dpr ├── SVGShellExtensions.dproj ├── SVGShellExtensions.res ├── SVGShellExtensions32.dpr ├── SVGShellExtensions32.dproj ├── SVGShellExtensions32.res ├── SVGShellExtensionsGroup.groupproj ├── SVGTextEditor.dpr ├── SVGTextEditor.dproj ├── SVGTextEditor.res ├── SettingsForm.dfm ├── SettingsForm.pas ├── SynEditOptionsDialog.dfm ├── SynEditOptionsDialog.pas ├── dlgConfirmReplace.dfm ├── dlgConfirmReplace.pas ├── dlgReplaceText.dfm ├── dlgReplaceText.pas ├── dlgSearchText.dfm ├── dlgSearchText.pas ├── uAbout.dfm ├── uAbout.pas ├── uCommonPreviewHandler.pas ├── uDragDropUtils.pas ├── uFilePreviewHandler.pas ├── uLogExcept.pas ├── uMisc.pas ├── uPreviewContainer.dfm ├── uPreviewContainer.pas ├── uPreviewHandler.pas ├── uPreviewHandlerRegister.pas ├── uRegistry.pas ├── uSVGContextMenuHandler.pas ├── uSVGPreviewHandler.pas ├── uSVGThumbnailHandler.pas ├── uSettings.pas ├── uStackTrace.pas ├── uStreamAdapter.pas ├── uStreamPreviewHandler.pas └── uThumbnailHandlerRegister.pas ├── Unregister_Register.cmd └── Unregister_Register_Program_Files.cmd /.gitignore: -------------------------------------------------------------------------------- 1 | # Uncomment these types if you want even more clean repository. But be careful. 2 | # It can make harm to an existing project source. Read explanations below. 3 | # 4 | # Resource files are binaries containing manifest, project icon and version info. 5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 6 | #*.res 7 | # 8 | # Type library file (binary). In old Delphi versions it should be stored. 9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 10 | #*.tlb 11 | # 12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 13 | # Uncomment this if you are not using diagrams or use newer Delphi version. 14 | #*.ddp 15 | # 16 | # Visual LiveBindings file. Added in Delphi XE2. 17 | # Uncomment this if you are not using LiveBindings Designer. 18 | #*.vlb 19 | # 20 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 21 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 22 | #*.deployproj 23 | # 24 | # C++ object files produced when C/C++ Output file generation is configured. 25 | # Uncomment this if you are not using external objects (zlib library for example). 26 | #*.obj 27 | # 28 | 29 | # Delphi compiler-generated binaries (safe to delete) 30 | *.exe 31 | *.dll 32 | *.bpl 33 | *.bpi 34 | *.dcp 35 | *.so 36 | *.apk 37 | *.drc 38 | *.map 39 | *.dres 40 | *.rsm 41 | *.tds 42 | *.dcu 43 | *.lib 44 | *.a 45 | *.o 46 | *.ocx 47 | 48 | # Delphi autogenerated files (duplicated info) 49 | *.cfg 50 | *.hpp 51 | *Resource.rc 52 | 53 | # Delphi local files (user-specific info) 54 | *.local 55 | *.identcache 56 | *.projdata 57 | *.tvsconfig 58 | *.dsk 59 | 60 | # Delphi history and backups 61 | __history/ 62 | __recovery/ 63 | *.~* 64 | 65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 66 | *.stat 67 | 68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss 69 | modules/ 70 | -------------------------------------------------------------------------------- /Bin32/Register32bit.bat: -------------------------------------------------------------------------------- 1 | %systemroot%\SysWoW64\regsvr32 "D:\ETHEA\SVGShellExtensions\Bin32\SVGShellExtensions32.dll" -------------------------------------------------------------------------------- /Bin32/UnRegister32bit.bat: -------------------------------------------------------------------------------- 1 | %systemroot%\SysWoW64\regsvr32 /u "D:\ETHEA\SVGShellExtensions\Bin32\SVGShellExtensions32.dll" -------------------------------------------------------------------------------- /Bin64/Register64bit.bat: -------------------------------------------------------------------------------- 1 | %systemroot%\System32\regsvr32 "D:\ETHEA\SVGShellExtensions\Bin64\SVGShellExtensions.dll" -------------------------------------------------------------------------------- /Bin64/UnRegister64bit.bat: -------------------------------------------------------------------------------- 1 | %systemroot%\System32\regsvr32 /u "D:\ETHEA\SVGShellExtensions\Bin64\SVGShellExtensions.dll" 2 | rem %systemroot%\System32\regsvr32 /u "C:\Program Files\Ethea\SVGShellExtensions\SVGShellExtensions.dll" -------------------------------------------------------------------------------- /Build.bat: -------------------------------------------------------------------------------- 1 | call "C:\BDS\Studio\23.0\bin\rsvars.bat" 2 | msbuild.exe "Source\SVGShellExtensions.dproj" /target:Clean;Build /p:Platform=Win64 /p:config=release 3 | msbuild.exe "Source\SVGShellExtensions32.dproj" /target:Clean;Build /p:Platform=Win32 /p:config=release 4 | msbuild.exe "Source\SVGTextEditor.dproj" /target:Clean;Build /p:Platform=Win64 /p:config=release 5 | msbuild.exe "Source\SVGTextEditor.dproj" /target:Clean;Build /p:Platform=Win32 /p:config=release 6 | 7 | call D:\ETHEA\Certificate\SignFileWithSectico.bat D:\ETHEA\SVGShellExtensions\Bin32\SVGTextEditor.exe 8 | call D:\ETHEA\Certificate\SignFileWithSectico.bat D:\ETHEA\SVGShellExtensions\Bin64\SVGTextEditor.exe 9 | 10 | :INNO 11 | "C:\Program Files (x86)\Inno Setup 6\iscc.exe" "D:\ETHEA\SVGShellExtensions\Setup\SVGShellExtensions.iss" 12 | set INNO_STATUS=%ERRORLEVEL% 13 | if %INNO_STATUS%==0 GOTO SIGNSETUP 14 | pause 15 | EXIT 16 | 17 | :SIGNSETUP 18 | call D:\ETHEA\Certificate\SignFileWithSectico.bat D:\ETHEA\SVGShellExtensions\Setup\Output\SVGShellExtensionsSetup.exe 19 | 20 | :END 21 | pause 22 | -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host/PreviewHost.dpr: -------------------------------------------------------------------------------- 1 | program PreviewHost; 2 | 3 | uses 4 | Vcl.Forms, 5 | uMain in 'uMain.pas' {FrmMain}, 6 | uHostPreview in 'uHostPreview.pas'; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.MainFormOnTaskbar := True; 13 | Application.CreateForm(TFrmMain, FrmMain); 14 | Application.Run; 15 | end. 16 | -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host/PreviewHost.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Debug/Preview Handlers/PreviewHandler Host/PreviewHost.res -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host/uMain.dfm: -------------------------------------------------------------------------------- 1 | object FrmMain: TFrmMain 2 | Left = 0 3 | Top = 0 4 | Caption = 'Preview Handler Host Demo' 5 | ClientHeight = 559 6 | ClientWidth = 960 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | OnDestroy = FormDestroy 16 | PixelsPerInch = 96 17 | TextHeight = 13 18 | object Splitter1: TSplitter 19 | Left = 417 20 | Top = 0 21 | Width = 4 22 | Height = 559 23 | AutoSnap = False 24 | ExplicitLeft = 217 25 | ExplicitHeight = 338 26 | end 27 | object Panel1: TPanel 28 | Left = 421 29 | Top = 0 30 | Width = 539 31 | Height = 559 32 | Align = alClient 33 | TabOrder = 0 34 | end 35 | object Panel3: TPanel 36 | Left = 0 37 | Top = 0 38 | Width = 417 39 | Height = 559 40 | Align = alLeft 41 | TabOrder = 1 42 | object ShellListView1: TShellListView 43 | Left = 1 44 | Top = 1 45 | Width = 415 46 | Height = 557 47 | ObjectTypes = [otFolders, otNonFolders] 48 | Root = 'D:\ETHEA\SVGIconImageList\Demo\svg_examples' 49 | Sorted = True 50 | Align = alClient 51 | ReadOnly = False 52 | HideSelection = False 53 | OnChange = ShellListView1Change 54 | TabOrder = 0 55 | end 56 | end 57 | end 58 | -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host/uMain.pas: -------------------------------------------------------------------------------- 1 | unit uMain; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtnrs, uHostPreview, 8 | Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.Shell.ShellCtrls; 9 | 10 | type 11 | TFrmMain = class(TForm) 12 | Panel1: TPanel; 13 | Panel3: TPanel; 14 | ShellListView1: TShellListView; 15 | Splitter1: TSplitter; 16 | procedure ShellListView1Change(Sender: TObject; Item: TListItem; 17 | Change: TItemChange); 18 | procedure FormCreate(Sender: TObject); 19 | procedure FormDestroy(Sender: TObject); 20 | private 21 | FFileName: string; 22 | { Private declarations } 23 | FPreview: THostPreviewHandler; 24 | procedure LoadPreview(const FileName: string); 25 | public 26 | { Public declarations } 27 | end; 28 | 29 | var 30 | FrmMain: TFrmMain; 31 | 32 | implementation 33 | 34 | 35 | {$R *.dfm} 36 | 37 | type 38 | THostPreviewHandlerClass=class(THostPreviewHandler); 39 | 40 | 41 | procedure TFrmMain.FormCreate(Sender: TObject); 42 | begin 43 | FPreview := nil; 44 | end; 45 | 46 | procedure TFrmMain.FormDestroy(Sender: TObject); 47 | begin 48 | if FPreview<>nil then 49 | FPreview.Free; 50 | end; 51 | 52 | procedure TFrmMain.LoadPreview(const FileName: string); 53 | begin 54 | if FPreview = nil then 55 | FPreview := THostPreviewHandler.Create(Self); 56 | 57 | // if FPreview<>nil then 58 | // FPreview.Free; 59 | 60 | FPreview.Top := 0; 61 | FPreview.Left := 0; 62 | FPreview.Width := Panel1.ClientWidth; 63 | FPreview.Height := Panel1.ClientHeight; 64 | FPreview.Parent := Panel1; 65 | FPreview.Align := alClient; 66 | //FPreview.FileName:='C:\Users\Dexter\Desktop\RAD Studio Projects\XE2\delphi-preview-handler\main.pas'; 67 | //FPreview.FileName:='C:\Users\Dexter\Desktop\RAD Studio Projects\2010\SMBIOS Delphi\Docs\DSP0119.pdf'; 68 | //FPreview.FileName:='C:\Users\Dexter\Desktop\seleccion\RePLE.msg'; 69 | FPreview.FileName:=FileName; 70 | THostPreviewHandlerClass(FPreview).Paint; 71 | end; 72 | 73 | procedure TFrmMain.ShellListView1Change(Sender: TObject; Item: TListItem; 74 | Change: TItemChange); 75 | var 76 | LFileName: string; 77 | begin 78 | if (ShellListView1.SelectedFolder<>nil) then 79 | begin 80 | LFileName := ShellListView1.SelectedFolder.PathName; 81 | if (LFileName <> FFileName) and FileExists(LFileName) then 82 | begin 83 | LoadPreview(LFileName); 84 | FFileName := LFileName; 85 | end; 86 | end; 87 | end; 88 | 89 | end. 90 | -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host_Without_TShellListView/PreviewHost.dpr: -------------------------------------------------------------------------------- 1 | program PreviewHost; 2 | 3 | uses 4 | Vcl.Forms, 5 | uMain in 'uMain.pas' {FrmMain}, 6 | uHostPreview in 'uHostPreview.pas'; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.MainFormOnTaskbar := True; 13 | Application.CreateForm(TFrmMain, FrmMain); 14 | Application.Run; 15 | end. 16 | -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host_Without_TShellListView/PreviewHost.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Debug/Preview Handlers/PreviewHandler Host_Without_TShellListView/PreviewHost.res -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host_Without_TShellListView/uMain.dfm: -------------------------------------------------------------------------------- 1 | object FrmMain: TFrmMain 2 | Left = 0 3 | Top = 0 4 | Caption = 'Preview Handler Host Demo' 5 | ClientHeight = 480 6 | ClientWidth = 432 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object Panel3: TPanel 18 | Left = 0 19 | Top = 0 20 | Width = 432 21 | Height = 49 22 | Align = alTop 23 | TabOrder = 0 24 | DesignSize = ( 25 | 432 26 | 49) 27 | object EditFileName: TEdit 28 | Left = 16 29 | Top = 16 30 | Width = 322 31 | Height = 21 32 | Anchors = [akLeft, akTop, akRight] 33 | Enabled = False 34 | TabOrder = 0 35 | end 36 | object Button1: TButton 37 | Left = 344 38 | Top = 13 39 | Width = 75 40 | Height = 25 41 | Anchors = [akTop, akRight] 42 | Caption = 'Select File' 43 | TabOrder = 1 44 | OnClick = Button1Click 45 | end 46 | end 47 | object RadioGroup: TRadioGroup 48 | Left = 8 49 | Top = 64 50 | Width = 137 51 | Height = 193 52 | Caption = 'Thumbnail size' 53 | Items.Strings = ( 54 | 'Small' 55 | 'Medium' 56 | 'Large' 57 | 'Huge') 58 | TabOrder = 1 59 | OnClick = RadioGroupClick 60 | end 61 | object Panel1: TPanel 62 | Left = 224 63 | Top = 64 64 | Width = 185 65 | Height = 177 66 | TabOrder = 2 67 | end 68 | object OpenDialog1: TOpenDialog 69 | Left = 360 70 | Top = 424 71 | end 72 | end 73 | -------------------------------------------------------------------------------- /Debug/Preview Handlers/PreviewHandler Host_Without_TShellListView/uMain.pas: -------------------------------------------------------------------------------- 1 | unit uMain; 2 | interface 3 | uses 4 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 5 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtnrs, 6 | Vcl.ExtCtrls, Vcl.ComCtrls; 7 | type 8 | TFrmMain = class(TForm) 9 | Panel3: TPanel; 10 | EditFileName: TEdit; 11 | Button1: TButton; 12 | OpenDialog1: TOpenDialog; 13 | RadioGroup: TRadioGroup; 14 | Panel1: TPanel; 15 | procedure FormCreate(Sender: TObject); 16 | procedure Button1Click(Sender: TObject); 17 | procedure RadioGroupClick(Sender: TObject); 18 | private 19 | { Private declarations } 20 | procedure LoadPreview(const FileName: string); 21 | public 22 | { Public declarations } 23 | end; 24 | var 25 | FrmMain: TFrmMain; 26 | 27 | implementation 28 | 29 | uses 30 | Winapi.ActiveX; 31 | {$R *.dfm} 32 | 33 | 34 | procedure TFrmMain.Button1Click(Sender: TObject); 35 | begin 36 | if OpenDialog1.Execute() then 37 | begin 38 | EditFileName.Text:= OpenDialog1.FileName; 39 | //LoadPreview(EditFileName.Text); 40 | end; 41 | end; 42 | procedure TFrmMain.FormCreate(Sender: TObject); 43 | begin 44 | ReportMemoryLeaksOnShutdown := True; 45 | end; 46 | 47 | procedure TFrmMain.LoadPreview(const FileName: string); 48 | begin 49 | end; 50 | procedure TFrmMain.RadioGroupClick(Sender: TObject); 51 | begin 52 | (* 53 | case RadioGroup.ItemIndex of 54 | 0: Print(32); 55 | 1: Print(64); 56 | 2: Print(128); 57 | 3: Print(256); 58 | end; 59 | *) 60 | end; 61 | 62 | end. 63 | -------------------------------------------------------------------------------- /Ext/SVGIconImageList/Image32/source/Clipper.Minkowski.pas: -------------------------------------------------------------------------------- 1 | unit Clipper.Minkowski; 2 | 3 | (******************************************************************************* 4 | * Author : Angus Johnson * 5 | * Date : 21 December 2023 * 6 | * Copyright : Angus Johnson 2010-2022 * 7 | * Purpose : Minkowski Addition and Difference * 8 | * License : https://www.boost.org/LICENSE_1_0.txt * 9 | *******************************************************************************) 10 | 11 | {$I Clipper.inc} 12 | 13 | interface 14 | 15 | uses 16 | Classes, Math, Clipper.Core; 17 | 18 | function MinkowskiSum(const Pattern, Path: TPath64; 19 | PathIsClosed: Boolean): TPaths64; overload; 20 | function MinkowskiSum(const Pattern, Path: TPathD; 21 | PathIsClosed: Boolean; decimalPlaces: integer = 2): TPathsD; overload; 22 | function MinkowskiDiff(const path1, path2: TPath64): TPaths64; overload; 23 | function MinkowskiDiff(const Pattern, Path: TPathD; 24 | PathIsClosed: Boolean; decimalPlaces: integer): TPathsD; overload; 25 | 26 | implementation 27 | 28 | uses 29 | Clipper; 30 | 31 | function AddPoints(val1, val2: TPoint64): TPoint64; 32 | {$IFDEF INLINING} inline; {$ENDIF} 33 | begin 34 | Result.X := val1.X + val2.X; 35 | Result.Y := val1.Y + val2.Y; 36 | end; 37 | //------------------------------------------------------------------------------ 38 | 39 | function SubtractPoints(val1, val2: TPoint64): TPoint64; 40 | {$IFDEF INLINING} inline; {$ENDIF} 41 | begin 42 | Result.X := val1.X - val2.X; 43 | Result.Y := val1.Y - val2.Y; 44 | end; 45 | //------------------------------------------------------------------------------ 46 | 47 | function Minkowski(const Base, Path: TPath64; 48 | IsSum: Boolean; IsClosed: Boolean): TPaths64; 49 | var 50 | i,j,k,g,h, delta, baseLen, pathLen: integer; 51 | tmp: TPaths64; 52 | quad: TPath64; 53 | begin 54 | delta := Iif(IsClosed, 0 , 1); 55 | baseLen := Length(Base); 56 | pathLen := Length(Path); 57 | setLength(tmp, pathLen); 58 | 59 | for i := 0 to pathLen -1 do 60 | begin 61 | setLength(tmp[i], baseLen); 62 | if IsSum then 63 | for j := 0 to baseLen -1 do 64 | tmp[i][j] := AddPoints(Path[i], Base[j]) 65 | else 66 | for j := 0 to baseLen -1 do 67 | tmp[i][j] := SubtractPoints(Path[i], Base[j]); 68 | end; 69 | 70 | SetLength(quad, 4); 71 | SetLength(Result, (pathLen - delta) * baseLen); 72 | g := Iif(IsClosed, pathLen - 1, 0); 73 | 74 | for i := delta to pathLen - 1 do 75 | begin 76 | h := baseLen - 1; 77 | k := (i - delta) * baseLen; 78 | for j := 0 to baseLen - 1 do 79 | begin 80 | quad[0] := tmp[g][h]; 81 | quad[1] := tmp[i][h]; 82 | quad[2] := tmp[i][(j)]; 83 | quad[3] := tmp[g][(j)]; 84 | if not IsPositive(quad) then 85 | Result[k + j] := ReversePath(quad) else 86 | Result[k + j] := copy(quad, 0, 4); 87 | h := j; 88 | end; 89 | g := i; 90 | end; 91 | end; 92 | //------------------------------------------------------------------------------ 93 | 94 | function MinkowskiSum(const Pattern, Path: TPath64; PathIsClosed: Boolean): TPaths64; 95 | begin 96 | Result := Union( Minkowski(Pattern, Path, true, PathIsClosed), frNonZero); 97 | end; 98 | //------------------------------------------------------------------------------ 99 | 100 | function MinkowskiSum(const Pattern, Path: TPathD; 101 | PathIsClosed: Boolean; decimalPlaces: integer): TPathsD; 102 | var 103 | tmp: TPaths64; 104 | scale: double; 105 | begin 106 | scale := Power(10, decimalPlaces); 107 | tmp := Union( Minkowski(ScalePath(Pattern, scale), 108 | ScalePath(Path, scale), true, PathIsClosed), frNonZero); 109 | Result := ScalePathsD(tmp, 1/scale); 110 | end; 111 | //------------------------------------------------------------------------------ 112 | 113 | function MinkowskiDiff(const path1, path2: TPath64): TPaths64; 114 | begin 115 | Result := Union( Minkowski(path1, path2, false, true), frNonZero); 116 | end; 117 | //------------------------------------------------------------------------------ 118 | 119 | function MinkowskiDiff(const Pattern, Path: TPathD; 120 | PathIsClosed: Boolean; decimalPlaces: integer): TPathsD; 121 | var 122 | tmp: TPaths64; 123 | scale: double; 124 | begin 125 | scale := Power(10, decimalPlaces); 126 | tmp := Union( Minkowski(ScalePath(Pattern, scale), 127 | ScalePath(Path, scale), false, PathIsClosed), frNonZero); 128 | Result := ScalePathsD(tmp, 1/scale); 129 | end; 130 | //------------------------------------------------------------------------------ 131 | 132 | end. 133 | 134 | -------------------------------------------------------------------------------- /Ext/SVGIconImageList/Image32/source/Clipper.inc: -------------------------------------------------------------------------------- 1 | 2 | /////////////////////////////////////////////////////////////////////////////// 3 | //USER DEFINED PREPROCESSOR DIRECTIVES 4 | /////////////////////////////////////////////////////////////////////////////// 5 | 6 | //For user defined Z-coordinates, defined in Clipper's 'SetZ' callback event 7 | {.$DEFINE USINGZ} 8 | 9 | /////////////////////////////////////////////////////////////////////////////// 10 | //COMPILER DEFINED PREPROCESSOR DIRECTIVES (ie. do not touch ;)) 11 | /////////////////////////////////////////////////////////////////////////////// 12 | 13 | {$IFDEF FPC} 14 | {$DEFINE INLINING} 15 | {$MODE DELPHI} 16 | {$ELSE} 17 | {$IF COMPILERVERSION < 14} 18 | Requires Delphi version 6 or above. 19 | {$IFEND} 20 | {$IF COMPILERVERSION >= 18} //Delphi 2007 21 | {$DEFINE RECORD_METHODS} 22 | {$DEFINE STRICT} 23 | {$IF COMPILERVERSION >= 19} //Delphi 2009 24 | //While "inlining" is supported from D2005, it's buggy (see QC41166) until D2009 25 | {$DEFINE INLINING} 26 | {$IF COMPILERVERSION >= 23} //Delphi XE2+ 27 | {$DEFINE XPLAT_GENERICS} 28 | {$DEFINE ROUNDINGMODE} 29 | {$IF COMPILERVERSION >= 24} //Delphi XE3+ 30 | {$LEGACYIFEND ON} 31 | {$IFEND} 32 | {$IFEND} 33 | {$IFEND} 34 | {$IFEND} 35 | {$ENDIF} 36 | 37 | {$IFDEF DEBUG} 38 | {$UNDEF INLINING} 39 | {$ENDIF} 40 | -------------------------------------------------------------------------------- /Ext/SVGIconImageList/Image32/source/Img32.Panels.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SVGIconImageList/Image32/source/Img32.Panels.dcr -------------------------------------------------------------------------------- /Ext/SVGIconImageList/Image32/source/Img32.SVG.HtmlValues.inc: -------------------------------------------------------------------------------- 1 | //hash identifiers with appended underscores refer to 2 | //case sensitive string values (ie they contain capitals) 3 | h_038_aacute : val := 225; 4 | h_038_aacute_ : val := 193; 5 | h_038_acirc : val := 226; 6 | h_038_acirc_ : val := 194; 7 | h_038_acute : val := 180; 8 | h_038_aelig : val := 230; 9 | h_038_aelig_ : val := 198; 10 | h_038_agrave : val := 224; 11 | h_038_agrave_ : val := 192; 12 | h_038_alefsym : val := $2135; 13 | h_038_alpha : val := $3B1; 14 | h_038_Alpha_ : val := $391; 15 | h_038_amp : val := $26; 16 | h_038_apos : val := $27; 17 | h_038_aring_ : val := 197; 18 | h_038_aring : val := 229; 19 | h_038_ast : val := $2A; 20 | h_038_atilde_ : val := 195; 21 | h_038_atilde : val := 227; 22 | h_038_auml_ : val := 196; 23 | h_038_auml : val := 228; 24 | h_038_bull : val := $2022; 25 | h_038_cap : val := $2229; 26 | h_038_clubs : val := $2663; 27 | h_038_cup : val := $222A; 28 | h_038_brvbar : val := 166; 29 | h_038_ccedil : val := 231; 30 | h_038_cedil : val := 184; 31 | h_038_cent : val := 162; 32 | h_038_copy : val := 169; 33 | h_038_curren : val := 164; 34 | h_038_deg : val := 176; 35 | h_038_diams : val := $2666; 36 | h_038_divide : val := $F7; 37 | h_038_eacute_ : val := 201; 38 | h_038_eacute : val := 233; 39 | h_038_ecirc_ : val := 202; 40 | h_038_ecirc : val := 234; 41 | h_038_egrave : val := 232; 42 | h_038_egrave_ : val := 200; 43 | h_038_eth : val := 240; 44 | h_038_euml_ : val := 203; 45 | h_038_euml : val := 235; 46 | h_038_euro : val := 128; 47 | h_038_frac12 : val := 189; 48 | h_038_frac14 : val := 188; 49 | h_038_frac34 : val := 190; 50 | h_038_ge : val := $2265; 51 | h_038_gt : val := $3E; 52 | h_038_hearts : val := $2665; 53 | h_038_iacute_ : val := 205; 54 | h_038_iacute : val := 237; 55 | h_038_icirc_ : val := 206; 56 | h_038_icirc : val := 238; 57 | h_038_iexcl : val := 161; 58 | h_038_igrave_ : val := 204; 59 | h_038_igrave : val := 236; 60 | h_038_int : val := $222B; 61 | h_038_iquest : val := 191; 62 | h_038_iuml_ : val := 207; 63 | h_038_iuml : val := 239; 64 | h_038_laquo : val := 171; 65 | h_038_le : val := $2264; 66 | h_038_lt : val := $3C; 67 | h_038_macr : val := 175; 68 | h_038_micro : val := 181; 69 | h_038_middot : val := 183; 70 | h_038_nbsp : val := 32; 71 | h_038_not : val := 172; 72 | h_038_ntilde : val := 241; 73 | h_038_oacute_ : val := 211; 74 | h_038_oacute : val := 243; 75 | h_038_ocirc_ : val := 212; 76 | h_038_ocirc : val := 244; 77 | h_038_ograve_ : val := 210; 78 | h_038_ograve : val := 242; 79 | h_038_ordf : val := 170; 80 | h_038_ordm : val := 186; 81 | h_038_oslash : val := 248; 82 | h_038_otilde_ : val := 213; 83 | h_038_otilde : val := 245; 84 | h_038_ouml_ : val := 214; 85 | h_038_ouml : val := 246; 86 | h_038_para : val := 182; 87 | h_038_plusmn : val := 177; 88 | h_038_pound : val := 163; 89 | h_038_quot : val := $22; 90 | h_038_raquo : val := 187; 91 | h_038_reg : val := 174; 92 | h_038_sect : val := 167; 93 | h_038_shy : val := 173; 94 | h_038_spades : val := $2660; 95 | h_038_sup1 : val := 185; 96 | h_038_sup2 : val := 178; 97 | h_038_sup3 : val := 179; 98 | h_038_szlig : val := 223; 99 | h_038_thorn : val := 254; 100 | h_038_times : val := 215; 101 | h_038_uacute_ : val := 218; 102 | h_038_uacute : val := 250; 103 | h_038_ucirc : val := 251; 104 | h_038_ucirc_ : val := 219; 105 | h_038_ugrave_ : val := 217; 106 | h_038_ugrave : val := 249; 107 | h_038_uml : val := 168; 108 | h_038_uuml_ : val := 220; 109 | h_038_uuml : val := 252; 110 | h_038_yacute : val := 253; 111 | h_038_yen : val := 165; 112 | -------------------------------------------------------------------------------- /Ext/SVGIconImageList/Source/FMX.SVGIconsUtils.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { SVGIconImageList: An extended ImageList for Delphi/FMX } 4 | { to simplify use of SVG Icons (resize, opacity and more...) } 5 | { } 6 | { Copyright (c) 2019-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { Contributors: } 9 | { } 10 | { https://github.com/EtheaDev/SVGIconImageList } 11 | { } 12 | {******************************************************************************} 13 | { } 14 | { Licensed under the Apache License, Version 2.0 (the "License"); } 15 | { you may not use this file except in compliance with the License. } 16 | { You may obtain a copy of the License at } 17 | { } 18 | { http://www.apache.org/licenses/LICENSE-2.0 } 19 | { } 20 | { Unless required by applicable law or agreed to in writing, software } 21 | { distributed under the License is distributed on an "AS IS" BASIS, } 22 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 23 | { See the License for the specific language governing permissions and } 24 | { limitations under the License. } 25 | { } 26 | {******************************************************************************} 27 | unit FMX.SVGIconsUtils; 28 | 29 | interface 30 | 31 | Uses 32 | System.Types 33 | , FMX.ListBox 34 | ; 35 | 36 | function UpdateSVGIconListView(const AListBox: TListBox): Integer; 37 | 38 | implementation 39 | 40 | uses 41 | FMX.SVGIconImageList 42 | , System.SysUtils 43 | , System.Classes 44 | ; 45 | 46 | function UpdateSVGIconListView(const AListBox: TListBox): Integer; 47 | var 48 | I: Integer; 49 | LItem: TSVGIconSourceItem; 50 | LListItem: TListBoxItem; 51 | LSVGIconImageList: TSVGIconImageList; 52 | begin 53 | LSVGIconImageList := AListBox.Images as TSVGIconImageList; 54 | 55 | AListBox.Items.BeginUpdate; 56 | try 57 | AListBox.Clear; 58 | Result := LSVGIconImageList.Source.Count; 59 | for I := 0 to Result -1 do 60 | begin 61 | LItem := LSVGIconImageList.Source.Items[I] as TSVGIconSourceItem; 62 | LListItem := TListBoxItem.Create(AListBox); 63 | LListItem.StyleLookup := 'CustomListBoxItemStyle'; 64 | LListItem.Text := Format('%d.%s', [LItem.Index,Litem.IconName]); 65 | LListItem.ImageIndex := I; 66 | 67 | AListBox.AddObject(LListItem); 68 | end; 69 | finally 70 | AListBox.Items.EndUpdate; 71 | end; 72 | end; 73 | 74 | end. 75 | -------------------------------------------------------------------------------- /Ext/SVGIconImageList/Source/SVGIconImageList.inc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SVGIconImageList/Source/SVGIconImageList.inc -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/D12/1.Vcl.StyledComponents.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {EDD8D142-65E5-48C2-83D1-BD82B331C67A} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | {F870FD7C-4984-4784-8B29-4CDB55E64524} 51 | Release 52 | Win32;Win64 53 | True 54 | 55 | 56 | {03F938E4-4CBD-4FD4-86A2-084115D91AA9} 57 | Release 58 | Win32;Win64 59 | True 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/D12/2.Vcl.StyledAnimatedComponents.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {C2368AEE-8E75-4300-B331-E1E8DBE3BC14} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | {18935916-9466-4807-98CC-6A91C06F1F85} 51 | Release 52 | Win32;Win64 53 | True 54 | 55 | 56 | {EBF448F0-3AF1-4B95-B1AD-5874F1BABAEC} 57 | Release 58 | Win32;Win64 59 | True 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/D12/StyledAnimatedComponents.dpk: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { StyledAnimatedComponents: a set of StyledComponents with animations } 4 | { using Skia4Delphi (needs Skia Package already installed } 5 | { } 6 | { Copyright (c) 2022-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { Contributors: } 9 | { } 10 | { https://github.com/EtheaDev/StyledComponents } 11 | { } 12 | {******************************************************************************} 13 | { } 14 | { Licensed under the Apache License, Version 2.0 (the "License"); } 15 | { you may not use this file except in compliance with the License. } 16 | { You may obtain a copy of the License at } 17 | { } 18 | { http://www.apache.org/licenses/LICENSE-2.0 } 19 | { } 20 | { Unless required by applicable law or agreed to in writing, software } 21 | { distributed under the License is distributed on an "AS IS" BASIS, } 22 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 23 | { See the License for the specific language governing permissions and } 24 | { limitations under the License. } 25 | { } 26 | {******************************************************************************} 27 | package StyledAnimatedComponents; 28 | 29 | {$R *.res} 30 | {$R '..\StyledAnimatedButton.dcr'} 31 | {$R '..\StyledAnimatedTaskDialog.dcr'} 32 | {$R '..\StyledAnimatedToolbar.dcr'} 33 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 34 | {$ALIGN 8} 35 | {$ASSERTIONS ON} 36 | {$BOOLEVAL OFF} 37 | {$DEBUGINFO OFF} 38 | {$EXTENDEDSYNTAX ON} 39 | {$IMPORTEDDATA ON} 40 | {$IOCHECKS ON} 41 | {$LOCALSYMBOLS OFF} 42 | {$LONGSTRINGS ON} 43 | {$OPENSTRINGS ON} 44 | {$OPTIMIZATION ON} 45 | {$OVERFLOWCHECKS OFF} 46 | {$RANGECHECKS OFF} 47 | {$REFERENCEINFO OFF} 48 | {$SAFEDIVIDE OFF} 49 | {$STACKFRAMES OFF} 50 | {$TYPEDADDRESS OFF} 51 | {$VARSTRINGCHECKS ON} 52 | {$WRITEABLECONST OFF} 53 | {$MINENUMSIZE 1} 54 | {$IMAGEBASE $400000} 55 | {$DEFINE RELEASE} 56 | {$ENDIF IMPLICITBUILDING} 57 | {$DESCRIPTION 'Ethea Styled Components with Animations by Skia4Delphi'} 58 | {$LIBSUFFIX AUTO} 59 | {$RUNONLY} 60 | {$IMPLICITBUILD OFF} 61 | 62 | requires 63 | StyledComponents, 64 | Skia.Package.VCL, 65 | Skia.Package.RTL; 66 | 67 | contains 68 | Vcl.SkAnimatedImageHelper in '..\..\source\Vcl.SkAnimatedImageHelper.pas', 69 | Vcl.StyledAnimatedButton in '..\..\source\Vcl.StyledAnimatedButton.pas', 70 | Vcl.StyledAnimatedTaskDialog in '..\..\source\Vcl.StyledAnimatedTaskDialog.pas', 71 | Skia.Vcl.StyledTaskDialogAnimatedUnit in '..\..\source\Skia.Vcl.StyledTaskDialogAnimatedUnit.pas' {StyledTaskDialogAnimated}, 72 | Vcl.StyledAnimatedToolbar in '..\..\source\Vcl.StyledAnimatedToolbar.pas'; 73 | 74 | end. 75 | 76 | -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/D12/StyledComponents.dpk: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { StyledComponents: a set of Styled VCL Component } 4 | { } 5 | { Copyright (c) 2022-2025 (Ethea S.r.l.) } 6 | { Author: Carlo Barazzetta } 7 | { Contributors: } 8 | { } 9 | { https://github.com/EtheaDev/StyledComponents } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | {******************************************************************************} 26 | package StyledComponents; 27 | 28 | {$R *.res} 29 | {$R '..\StyledButton.dcr'} 30 | {$R '..\StyledTaskDialog.dcr'} 31 | {$R '..\StyledToolbar.dcr'} 32 | {$R '..\StyledDbNavigator.dcr'} 33 | {$R '..\StyledButtonGroup.dcr'} 34 | {$R '..\StyledCategoryButtons.dcr'} 35 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 36 | {$ALIGN 8} 37 | {$ASSERTIONS ON} 38 | {$BOOLEVAL OFF} 39 | {$DEBUGINFO OFF} 40 | {$EXTENDEDSYNTAX ON} 41 | {$IMPORTEDDATA ON} 42 | {$IOCHECKS ON} 43 | {$LOCALSYMBOLS OFF} 44 | {$LONGSTRINGS ON} 45 | {$OPENSTRINGS ON} 46 | {$OPTIMIZATION ON} 47 | {$OVERFLOWCHECKS OFF} 48 | {$RANGECHECKS OFF} 49 | {$REFERENCEINFO OFF} 50 | {$SAFEDIVIDE OFF} 51 | {$STACKFRAMES OFF} 52 | {$TYPEDADDRESS OFF} 53 | {$VARSTRINGCHECKS ON} 54 | {$WRITEABLECONST OFF} 55 | {$MINENUMSIZE 1} 56 | {$IMAGEBASE $400000} 57 | {$DEFINE RELEASE} 58 | {$ENDIF IMPLICITBUILDING} 59 | {$DESCRIPTION 'Ethea Styled Components Library'} 60 | {$LIBSUFFIX AUTO} 61 | {$RUNONLY} 62 | {$IMPLICITBUILD OFF} 63 | 64 | requires 65 | rtl, 66 | vcl, 67 | vclimg, 68 | dbrtl, 69 | vcldb, 70 | bindcomp; 71 | 72 | contains 73 | Vcl.StyledButton in '..\..\source\Vcl.StyledButton.pas', 74 | Vcl.ButtonStylesAttributes in '..\..\source\Vcl.ButtonStylesAttributes.pas', 75 | Vcl.StandardButtonStyles in '..\..\source\Vcl.StandardButtonStyles.pas', 76 | Vcl.ColorButtonStyles in '..\..\source\Vcl.ColorButtonStyles.pas', 77 | Vcl.BootstrapButtonStyles in '..\..\source\Vcl.BootstrapButtonStyles.pas', 78 | Vcl.AngularButtonStyles in '..\..\source\Vcl.AngularButtonStyles.pas', 79 | Vcl.StyledTaskDialog in '..\..\source\Vcl.StyledTaskDialog.pas', 80 | Vcl.StyledCmpMessages in '..\..\source\Vcl.StyledCmpMessages.pas', 81 | Vcl.StyledCmpStrUtils in '..\..\source\Vcl.StyledCmpStrUtils.pas', 82 | Vcl.StyledTaskDialogStdUnit in '..\..\source\Vcl.StyledTaskDialogStdUnit.pas', 83 | Vcl.StyledTaskDialogFormUnit in '..\..\source\Vcl.StyledTaskDialogFormUnit.pas' {StyledTaskDialogForm}, 84 | Vcl.StyledToolbar in '..\..\source\Vcl.StyledToolbar.pas', 85 | Vcl.StyledDbNavigator in '..\..\source\Vcl.StyledDbNavigator.pas', 86 | Vcl.StyledButtonGroup in '..\..\source\Vcl.StyledButtonGroup.pas', 87 | Vcl.StyledCategoryButtons in '..\..\source\Vcl.StyledCategoryButtons.pas'; 88 | 89 | end. 90 | 91 | -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/D12/dclStyledAnimatedComponents.dpk: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { StyledAnimatedComponents: a set of StyledComponents with animations } 4 | { using Skia4Delphi (needs Skia Package already installed } 5 | { } 6 | { Copyright (c) 2022-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { Contributors: } 9 | { } 10 | { https://github.com/EtheaDev/StyledComponents } 11 | { } 12 | {******************************************************************************} 13 | { } 14 | { Licensed under the Apache License, Version 2.0 (the "License"); } 15 | { you may not use this file except in compliance with the License. } 16 | { You may obtain a copy of the License at } 17 | { } 18 | { http://www.apache.org/licenses/LICENSE-2.0 } 19 | { } 20 | { Unless required by applicable law or agreed to in writing, software } 21 | { distributed under the License is distributed on an "AS IS" BASIS, } 22 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 23 | { See the License for the specific language governing permissions and } 24 | { limitations under the License. } 25 | { } 26 | {******************************************************************************} 27 | package dclStyledAnimatedComponents; 28 | 29 | {$R *.res} 30 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 31 | {$ALIGN 8} 32 | {$ASSERTIONS ON} 33 | {$BOOLEVAL OFF} 34 | {$DEBUGINFO OFF} 35 | {$EXTENDEDSYNTAX ON} 36 | {$IMPORTEDDATA ON} 37 | {$IOCHECKS ON} 38 | {$LOCALSYMBOLS OFF} 39 | {$LONGSTRINGS ON} 40 | {$OPENSTRINGS ON} 41 | {$OPTIMIZATION ON} 42 | {$OVERFLOWCHECKS OFF} 43 | {$RANGECHECKS OFF} 44 | {$REFERENCEINFO OFF} 45 | {$SAFEDIVIDE OFF} 46 | {$STACKFRAMES OFF} 47 | {$TYPEDADDRESS OFF} 48 | {$VARSTRINGCHECKS ON} 49 | {$WRITEABLECONST OFF} 50 | {$MINENUMSIZE 1} 51 | {$IMAGEBASE $400000} 52 | {$DEFINE RELEASE} 53 | {$ENDIF IMPLICITBUILDING} 54 | {$DESCRIPTION 'Ethea Styled Components with Animations by Skia4Delphi'} 55 | {$LIBSUFFIX AUTO} 56 | {$DESIGNONLY} 57 | {$IMPLICITBUILD OFF} 58 | 59 | requires 60 | DesignIDE, 61 | StyledAnimatedComponents, 62 | dclStyledComponents, 63 | Skia.Package.VCL.Designtime; 64 | 65 | contains 66 | Vcl.StyledAnimatedComponentsRegister in '..\Vcl.StyledAnimatedComponentsRegister.pas'; 67 | 68 | end. 69 | -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/D12/dclStyledComponents.dpk: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { StyledComponents: a set of Styled VCL Component } 4 | { } 5 | { Copyright (c) 2022-2025 (Ethea S.r.l.) } 6 | { Author: Carlo Barazzetta } 7 | { Contributors: } 8 | { } 9 | { https://github.com/EtheaDev/StyledComponents } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | {******************************************************************************} 26 | package dclStyledComponents; 27 | 28 | {$R *.res} 29 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 30 | {$ALIGN 8} 31 | {$ASSERTIONS ON} 32 | {$BOOLEVAL OFF} 33 | {$DEBUGINFO OFF} 34 | {$EXTENDEDSYNTAX ON} 35 | {$IMPORTEDDATA ON} 36 | {$IOCHECKS ON} 37 | {$LOCALSYMBOLS OFF} 38 | {$LONGSTRINGS ON} 39 | {$OPENSTRINGS ON} 40 | {$OPTIMIZATION ON} 41 | {$OVERFLOWCHECKS OFF} 42 | {$RANGECHECKS OFF} 43 | {$REFERENCEINFO OFF} 44 | {$SAFEDIVIDE OFF} 45 | {$STACKFRAMES OFF} 46 | {$TYPEDADDRESS OFF} 47 | {$VARSTRINGCHECKS ON} 48 | {$WRITEABLECONST OFF} 49 | {$MINENUMSIZE 1} 50 | {$IMAGEBASE $400000} 51 | {$DEFINE RELEASE} 52 | {$ENDIF IMPLICITBUILDING} 53 | {$DESCRIPTION 'Ethea Styled Components Library'} 54 | {$LIBSUFFIX AUTO} 55 | {$DESIGNONLY} 56 | {$IMPLICITBUILD OFF} 57 | 58 | requires 59 | DesignIDE, 60 | StyledComponents; 61 | 62 | contains 63 | Vcl.StyledComponentsRegister in '..\Vcl.StyledComponentsRegister.pas', 64 | Vcl.StyledButtonEditorUnit in '..\Vcl.StyledButtonEditorUnit.pas' {StyledButtonEditor}; 65 | 66 | end. 67 | -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledAnimatedButton.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledAnimatedButton.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledAnimatedTaskDialog.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledAnimatedTaskDialog.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledAnimatedToolBar.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledAnimatedToolBar.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledButton.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledButton.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledButtonGroup.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledButtonGroup.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledCategoryButtons.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledCategoryButtons.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledComponentsSplash.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledComponentsSplash.res -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledDbNavigator.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledDbNavigator.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledTaskDialog.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledTaskDialog.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/packages/StyledToolBar.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/packages/StyledToolBar.dcr -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Animations.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/Animations.RES -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Animations.rc: -------------------------------------------------------------------------------- 1 | LOTTIE_INFORMATION RCDATA "..\Animations\information.json" 2 | LOTTIE_CUSTOM RCDATA "..\Animations\custom.json" 3 | LOTTIE_ERROR RCDATA "..\Animations\error.json" 4 | LOTTIE_WARNING RCDATA "..\Animations\warning.json" 5 | LOTTIE_SHIELD RCDATA "..\Animations\shield.json" 6 | LOTTIE_NOTIFY RCDATA "..\Animations\notify.json" 7 | LOTTIE_QUESTION RCDATA "..\Animations\question.json" -------------------------------------------------------------------------------- /Ext/StyledComponents/source/BuildResFileOfAnimations.cmd: -------------------------------------------------------------------------------- 1 | @echo Buid Animations.res file from Animations.rc 2 | BRCC32.EXE Animations.rc 3 | pause -------------------------------------------------------------------------------- /Ext/StyledComponents/source/CommandLinkBMP.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/CommandLinkBMP.RES -------------------------------------------------------------------------------- /Ext/StyledComponents/source/CommandLinkPNG.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/CommandLinkPNG.RES -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Skia.Vcl.StyledTaskDialogAnimatedUnit.dfm: -------------------------------------------------------------------------------- 1 | inherited StyledTaskDialogAnimatedForm: TStyledTaskDialogAnimatedForm 2 | Caption = 'StyledTaskDialogAnimatedForm' 3 | TextHeight = 15 4 | inherited FooterPanel: TPanel 5 | inherited FooterIconPanel: TPanel 6 | object SkFooterAnimatedImage: TSkAnimatedImage 7 | Left = 0 8 | Top = 0 9 | Width = 25 10 | Height = 25 11 | Align = alTop 12 | end 13 | end 14 | end 15 | inherited CenterPanel: TPanel 16 | inherited ImagePanel: TPanel 17 | inherited IconContainer: TPanel 18 | object SkAnimatedImage: TSkAnimatedImage 19 | Left = 0 20 | Top = 0 21 | Width = 64 22 | Height = 64 23 | Align = alClient 24 | end 25 | end 26 | end 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /Ext/StyledComponents/source/StyledButtonsBMP.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/StyledButtonsBMP.RES -------------------------------------------------------------------------------- /Ext/StyledComponents/source/StyledButtonsPNG.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/StyledButtonsPNG.RES -------------------------------------------------------------------------------- /Ext/StyledComponents/source/StyledComponents.inc: -------------------------------------------------------------------------------- 1 | {.$Define ItaMessages} 2 | {.$Define FraMessages} 3 | {.$DEFINE Use_Large_Dialog_Icons} 4 | 5 | {$DEFINE INCLUDE_AngularButtonStyles} 6 | {$DEFINE INCLUDE_BootstrapButtonStyles} 7 | {$DEFINE INCLUDE_ColorButtonStyles} 8 | 9 | // Delphi XE6 10 | {$IFDEF VER270} 11 | {$DEFINE DXE6+} 12 | {$ENDIF} 13 | 14 | // Delphi XE7 15 | {$IFDEF VER280} 16 | {$DEFINE DXE6+} 17 | {$DEFINE DXE7+} 18 | {$ENDIF} 19 | 20 | // Delphi XE8 21 | {$IFDEF VER290} 22 | {$DEFINE DXE6+} 23 | {$DEFINE DXE7+} 24 | {$DEFINE DXE8+} 25 | {$ENDIF} 26 | 27 | // Delphi 10 Seattle 28 | {$IFDEF VER300} 29 | {$DEFINE DXE6+} 30 | {$DEFINE DXE7+} 31 | {$DEFINE DXE8+} 32 | {$DEFINE D10_0+} 33 | {$ENDIF} 34 | 35 | // Delphi 10.1 Berlin 36 | {$IFDEF VER310} 37 | {$DEFINE DXE6+} 38 | {$DEFINE DXE7+} 39 | {$DEFINE DXE8+} 40 | {$DEFINE D10_0+} 41 | {$DEFINE D10_1+} 42 | {$ENDIF} 43 | 44 | // Delphi 10.2 Tokyo 45 | {$IFDEF VER320} 46 | {$DEFINE DXE6+} 47 | {$DEFINE DXE7+} 48 | {$DEFINE DXE8+} 49 | {$DEFINE D10_0+} 50 | {$DEFINE D10_1+} 51 | {$DEFINE D10_2+} 52 | {$ENDIF} 53 | 54 | // Delphi 10.3 Rio 55 | {$IFDEF VER330} 56 | {$DEFINE DXE6+} 57 | {$DEFINE DXE7+} 58 | {$DEFINE DXE8+} 59 | {$DEFINE D10_0+} 60 | {$DEFINE D10_1+} 61 | {$DEFINE D10_2+} 62 | {$DEFINE D10_3+} 63 | {$ENDIF} 64 | 65 | // Delphi 10.4 Sydney 66 | {$IFDEF VER340} 67 | {$DEFINE DXE6+} 68 | {$DEFINE DXE7+} 69 | {$DEFINE DXE8+} 70 | {$DEFINE D10_0+} 71 | {$DEFINE D10_1+} 72 | {$DEFINE D10_2+} 73 | {$DEFINE D10_3+} 74 | {$DEFINE D10_4+} 75 | {$ENDIF} 76 | 77 | // Delphi 11 Alexandria 78 | {$IFDEF VER350} 79 | {$DEFINE DXE6+} 80 | {$DEFINE DXE7+} 81 | {$DEFINE DXE8+} 82 | {$DEFINE D10_0+} 83 | {$DEFINE D10_1+} 84 | {$DEFINE D10_2+} 85 | {$DEFINE D10_3+} 86 | {$DEFINE D10_4+} 87 | {$DEFINE D11+} 88 | {$ENDIF} 89 | 90 | // Delphi 12 Athens 91 | {$IFDEF VER360} 92 | {$DEFINE DXE6+} 93 | {$DEFINE DXE7+} 94 | {$DEFINE DXE8+} 95 | {$DEFINE D10_0+} 96 | {$DEFINE D10_1+} 97 | {$DEFINE D10_2+} 98 | {$DEFINE D10_3+} 99 | {$DEFINE D10_4+} 100 | {$DEFINE D11+} 101 | {$DEFINE D12+} 102 | {$ENDIF} 103 | 104 | {$IFDEF DXE6+} 105 | {$Define GDIPlusSupport} 106 | {.$Define DrawTextWithGDIPlus} 107 | {$Define DrawRectWithGDIPlus} 108 | {$ENDIF} 109 | 110 | {$IFDEF D10_3+} 111 | {$Define HiDPISupport} 112 | {$ENDIF} 113 | 114 | -------------------------------------------------------------------------------- /Ext/StyledComponents/source/StyledNavButtonsBMP.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/StyledNavButtonsBMP.RES -------------------------------------------------------------------------------- /Ext/StyledComponents/source/StyledNavButtonsPNG.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/StyledNavButtonsPNG.RES -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Vcl.StyledAnimatedTaskDialog.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { StyledAnimatedTaskDialog: a Task Dialog Component with StyleButtons } 4 | { and animations using Skia4Delphi } 5 | { } 6 | { Copyright (c) 2022-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { Contributors: } 9 | { } 10 | { https://github.com/EtheaDev/StyledComponents } 11 | { } 12 | {******************************************************************************} 13 | { } 14 | { Licensed under the Apache License, Version 2.0 (the "License"); } 15 | { you may not use this file except in compliance with the License. } 16 | { You may obtain a copy of the License at } 17 | { } 18 | { http://www.apache.org/licenses/LICENSE-2.0 } 19 | { } 20 | { Unless required by applicable law or agreed to in writing, software } 21 | { distributed under the License is distributed on an "AS IS" BASIS, } 22 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 23 | { See the License for the specific language governing permissions and } 24 | { limitations under the License. } 25 | { } 26 | {******************************************************************************} 27 | unit Vcl.StyledAnimatedTaskDialog; 28 | 29 | {$INCLUDE StyledComponents.inc} 30 | 31 | interface 32 | 33 | uses 34 | System.SysUtils 35 | , System.Classes 36 | , WinApi.Windows 37 | , Vcl.StyledTaskDialog 38 | ; 39 | 40 | //{$WARN SYMBOL_PLATFORM OFF} 41 | type 42 | TStyledAnimatedTaskDialog = class(TStyledTaskDialog) 43 | private 44 | strict protected 45 | public 46 | end; 47 | 48 | implementation 49 | 50 | uses 51 | Skia.Vcl.StyledTaskDialogAnimatedUnit //to register StyledTaskDialogAnimatedUnit 52 | ; 53 | 54 | initialization 55 | 56 | finalization 57 | 58 | end. 59 | -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Vcl.StyledCmpMessages.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/Vcl.StyledCmpMessages.pas -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Vcl.StyledCmpStrUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/StyledComponents/source/Vcl.StyledCmpStrUtils.pas -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Vcl.StyledCompResources.dfm: -------------------------------------------------------------------------------- 1 | object StyledCompResourcesData: TStyledCompResourcesData 2 | Height = 192 3 | Width = 320 4 | object SVGIconImageCollection: TSVGIconImageCollection 5 | SVGIconItems = < 6 | item 7 | IconName = 'Warning' 8 | SVGText = 9 | '' 15 | FixedColor = clYellow 16 | end 17 | item 18 | IconName = 'Error' 19 | SVGText = 20 | '<' + 28 | '/svg>' 29 | FixedColor = clRed 30 | end 31 | item 32 | IconName = 'Information' 33 | SVGText = 34 | '' 41 | FixedColor = clBlue 42 | end 43 | item 44 | IconName = 'Confirmation' 45 | SVGText = 46 | '' 57 | FixedColor = clLime 58 | end 59 | item 60 | IconName = 'Custom' 61 | SVGText = 62 | '' 78 | FixedColor = clSilver 79 | end> 80 | Left = 145 81 | Top = 80 82 | end 83 | end 84 | -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Vcl.StyledComponentsHooks.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { StyledComponentsHooks: an interposer Unit to use Styled Components } 4 | { using Standard Delphi Controls Class Names } 5 | { } 6 | { Copyright (c) 2022-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { Contributors: } 9 | { } 10 | { https://github.com/EtheaDev/StyledComponents } 11 | { } 12 | {******************************************************************************} 13 | { } 14 | { Licensed under the Apache License, Version 2.0 (the "License"); } 15 | { you may not use this file except in compliance with the License. } 16 | { You may obtain a copy of the License at } 17 | { } 18 | { http://www.apache.org/licenses/LICENSE-2.0 } 19 | { } 20 | { Unless required by applicable law or agreed to in writing, software } 21 | { distributed under the License is distributed on an "AS IS" BASIS, } 22 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 23 | { See the License for the specific language governing permissions and } 24 | { limitations under the License. } 25 | { } 26 | {******************************************************************************} 27 | unit Vcl.StyledComponentsHooks; 28 | 29 | interface 30 | 31 | {$INCLUDE StyledComponents.inc} 32 | 33 | uses 34 | Vcl.StyledButton 35 | , Vcl.StyledDbNavigator 36 | , Vcl.StyledToolbar 37 | , Vcl.StyledButtonGroup 38 | , Vcl.StyledCategoryButtons 39 | ; 40 | 41 | type 42 | //Interposer Class for TButton -> TStyledButton 43 | TButton = class(TStyledButton) end; 44 | 45 | //Interposer Class for TBitBtn -> TStyledBitBtn 46 | TBitBtn = class(TStyledBitBtn) end; 47 | 48 | //Interposer Class for TBitBtn -> TStyledSpeedButton 49 | TSpeedButton = class(TStyledSpeedButton) end; 50 | 51 | //Interposer Class for TDbNavigator -> TStyledDbNavigator 52 | TDbNavigator = class(TStyledDbNavigator) end; 53 | 54 | //Interposer Class for TBindNavigator -> TStyledBindNavigator 55 | TBindNavigator = class(TStyledBindNavigator) end; 56 | 57 | //Interposer Class for TToolbar -> TStyledToolbar 58 | TToolbar = class(TStyledToolbar) end; 59 | 60 | //Interposer Class for TToolbutton -> TStyledToolButton 61 | TToolbutton = class(TStyledToolbutton) end; 62 | 63 | //Interposer Class for TButtonGroup -> TStyledButtonGroup 64 | TButtonGroup = class(TStyledButtonGroup) end; 65 | 66 | //Interposer Class for TCategoryButtons -> TStyledCategoryButtons 67 | TCategoryButtons = class(TStyledCategoryButtons) end; 68 | 69 | //Interposer Class for TButtonCategory -> TStyledButtonCategory 70 | TButtonCategory = class(TStyledButtonCategory) end; 71 | 72 | implementation 73 | 74 | end. 75 | -------------------------------------------------------------------------------- /Ext/StyledComponents/source/Vcl.StyledMessagesHooks.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { StyledMessagesHooks: an interposer Unit to use Styled Dialog Boxes } 4 | { using Standard Delphi calls MessageDialog or ShowMessage } 5 | { } 6 | { Copyright (c) 2022-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { Contributors: } 9 | { } 10 | { https://github.com/EtheaDev/StyledComponents } 11 | { } 12 | {******************************************************************************} 13 | { } 14 | { Licensed under the Apache License, Version 2.0 (the "License"); } 15 | { you may not use this file except in compliance with the License. } 16 | { You may obtain a copy of the License at } 17 | { } 18 | { http://www.apache.org/licenses/LICENSE-2.0 } 19 | { } 20 | { Unless required by applicable law or agreed to in writing, software } 21 | { distributed under the License is distributed on an "AS IS" BASIS, } 22 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 23 | { See the License for the specific language governing permissions and } 24 | { limitations under the License. } 25 | { } 26 | {******************************************************************************} 27 | unit Vcl.StyledMessagesHooks; 28 | 29 | interface 30 | 31 | {$INCLUDE StyledComponents.inc} 32 | 33 | uses 34 | Vcl.Dialogs 35 | ; 36 | 37 | function TaskMessageDlg(const Title, Msg: string; DlgType: TMsgDlgType; 38 | Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; 39 | 40 | function MessageDlg(const Msg: string; DlgType: TMsgDlgType; 41 | Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; 42 | 43 | function MessageDlgPos(const Msg: string; DlgType: TMsgDlgType; 44 | Buttons: TMsgDlgButtons; HelpCtx: Longint; 45 | X: Integer = -1; Y: Integer = -1): Integer; 46 | 47 | function TaskDlgPos(const Title, Msg: string; DlgType: TMsgDlgType; 48 | Buttons: TMsgDlgButtons; HelpCtx: Longint; 49 | X: Integer = -1; Y: Integer = -1): Integer; 50 | 51 | procedure ShowMessage(const Msg: string); 52 | 53 | implementation 54 | 55 | uses 56 | Vcl.StyledTaskDialog 57 | ; 58 | 59 | function TaskMessageDlg(const Title, Msg: string; DlgType: TMsgDlgType; 60 | Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; 61 | begin 62 | Result := StyledTaskMessageDlg(Title, Msg, DlgType, Buttons, HelpCtx); 63 | end; 64 | 65 | function MessageDlg(const Msg: string; DlgType: TMsgDlgType; 66 | Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; 67 | begin 68 | Result := StyledMessageDlg(Msg, DlgType, Buttons, HelpCtx); 69 | end; 70 | 71 | function MessageDlgPos(const Msg: string; DlgType: TMsgDlgType; 72 | Buttons: TMsgDlgButtons; HelpCtx: Longint; 73 | X: Integer = -1; Y: Integer = -1): Integer; 74 | begin 75 | Result := StyledMessageDlgPos(Msg, DlgType, Buttons, HelpCtx, X, Y); 76 | end; 77 | 78 | function TaskDlgPos(const Title, Msg: string; DlgType: TMsgDlgType; 79 | Buttons: TMsgDlgButtons; HelpCtx: Longint; 80 | X: Integer = -1; Y: Integer = -1): Integer; 81 | begin 82 | Result := StyledTaskMessageDlgPos(Title, Msg, DlgType, Buttons, HelpCtx, X, Y); 83 | end; 84 | 85 | procedure ShowMessage(const Msg: string); 86 | begin 87 | StyledShowMessage(Msg); 88 | end; 89 | 90 | end. 91 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/FSynHighlightProp.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/FSynHighlightProp.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/FTestPrintPreview.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/FTestPrintPreview.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/Page.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/Page.bmp -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynAutoCorrectEditor.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynAutoCorrectEditor.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEdit.inc: -------------------------------------------------------------------------------- 1 | {------------------------------------------------------------------------------} 2 | { Common compiler defines } 3 | { (remove the dot in front of a define to enable it) } 4 | {------------------------------------------------------------------------------} 5 | 6 | {$B-,H+} // defaults are short evaluation of boolean values and long strings 7 | 8 | {.$DEFINE SYN_DEVELOPMENT_CHECKS} // additional tests for debugging 9 | {$IFDEF SYN_DEVELOPMENT_CHECKS} 10 | {$R+,Q+,S+,T+} 11 | {$ENDIF} 12 | 13 | {------------------------------------------------------------------------------} 14 | { Pull in all defines from SynEditJedi.inc (must be done after the common } 15 | { compiler defines to work correctly). Use SynEdit-prefix to avoid problems } 16 | { with other versions of jedi.inc in the search-path. } 17 | {------------------------------------------------------------------------------} 18 | 19 | {$I SynEditJedi.inc} 20 | 21 | {------------------------------------------------------------------------------} 22 | { Please change this to suit your needs (to activate an option remove the dot } 23 | { in front of a DEFINE) } 24 | {------------------------------------------------------------------------------} 25 | 26 | // "Heredoc" syntax highlighting 27 | // If you enable the following statement and use highlighter(s) that have 28 | // support for "Heredoc" strings as scheme(s) in SynMultiSyn, you must 29 | // implement your own SynMultiSyn OnCustomRange event handler in order to 30 | // properly store Range State information 31 | {.$DEFINE SYN_HEREDOC} 32 | 33 | 34 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEdit.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEdit.res -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditExport.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditExport.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditHighlighterOptions.pas: -------------------------------------------------------------------------------- 1 | {------------------------------------------------------------------------------- 2 | The contents of this file are subject to the Mozilla Public License 3 | Version 1.1 (the "License"); you may not use this file except in compliance 4 | with the License. You may obtain a copy of the License at 5 | http://www.mozilla.org/MPL/ 6 | Software distributed under the License is distributed on an "AS IS" basis, 7 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 8 | the specific language governing rights and limitations under the License. 9 | 10 | Datetime format is dd.MM.yyyy hh:mm:ss. 11 | 12 | The Original Code is: SynEditHighlighterOptions.pas, released 12.09.2012. 13 | 14 | All Rights Reserved. 15 | 16 | Contributors to the SynEdit and mwEdit projects are listed in the 17 | Contributors.txt file. 18 | 19 | $Id: SynEditHighlighterOptions.pas,v 1.0.2 25.10.2012 11:16:19 CodehunterWorks Exp $ 20 | 21 | You may retrieve the latest version of this file at the SynEdit home page, 22 | located at http://SynEdit.SourceForge.net 23 | 24 | Last Changes: 25 | 21.09.2012 08:37:10 - Moved from String to WideString 26 | 25.10.2012 11:16:19 - Added DefaultExtension property 27 | 28 | Known Issues: 29 | -------------------------------------------------------------------------------} 30 | 31 | unit SynEditHighlighterOptions; 32 | 33 | interface 34 | 35 | uses 36 | Classes; 37 | 38 | type 39 | TSynEditHighlighterOptions = class(TPersistent) 40 | private 41 | FAutoDetectEnabled: Boolean; 42 | FAutoDetectLineLimit: Cardinal; 43 | FAutoDetectMatchExpression: WideString; 44 | FDefaultExtension: WideString; 45 | FLineCommentarEnd: WideString; 46 | FLineCommentarStart: WideString; 47 | FTitle: WideString; 48 | FVisible: Boolean; 49 | public 50 | procedure Assign(Source: TPersistent); override; 51 | procedure AssignTo(Dest: TPersistent); override; 52 | published 53 | property AutoDetectEnabled: Boolean read FAutoDetectEnabled write FAutoDetectEnabled; 54 | property AutoDetectLineLimit: Cardinal read FAutoDetectLineLimit write FAutoDetectLineLimit; 55 | property AutoDetectMatchExpression: WideString read FAutoDetectMatchExpression write FAutoDetectMatchExpression; 56 | property DefaultExtension: WideString read FDefaultExtension write FDefaultExtension; 57 | property LineCommentarEnd: WideString read FLineCommentarEnd write FLineCommentarEnd; 58 | property LineCommentarStart: WideString read FLineCommentarStart write FLineCommentarStart; 59 | property Title: WideString read FTitle write FTitle; 60 | property Visible: Boolean read FVisible write FVisible; 61 | end; 62 | 63 | implementation 64 | 65 | procedure TSynEditHighlighterOptions.Assign(Source: TPersistent); 66 | begin 67 | if Source.InheritsFrom(TSynEditHighlighterOptions) then begin 68 | with TSynEditHighlighterOptions(Source) do begin 69 | FAutoDetectEnabled := AutoDetectEnabled; 70 | FAutoDetectMatchExpression := AutoDetectMatchExpression; 71 | FAutoDetectLineLimit := AutoDetectLineLimit; 72 | FDefaultExtension := DefaultExtension; 73 | FLineCommentarStart := LineCommentarStart; 74 | FLineCommentarEnd := LineCommentarEnd; 75 | FTitle := Title; 76 | FVisible := Visible; 77 | end; 78 | end; 79 | end; 80 | 81 | procedure TSynEditHighlighterOptions.AssignTo(Dest: TPersistent); 82 | begin 83 | if Dest.InheritsFrom(TSynEditHighlighterOptions) then begin 84 | with TSynEditHighlighterOptions(Dest) do begin 85 | AutoDetectEnabled := FAutoDetectEnabled; 86 | AutoDetectMatchExpression := FAutoDetectMatchExpression; 87 | AutoDetectLineLimit := FAutoDetectLineLimit; 88 | DefaultExtension := FDefaultExtension; 89 | LineCommentarStart := FLineCommentarStart; 90 | LineCommentarEnd := FLineCommentarEnd; 91 | Title := FTitle; 92 | Visible := FVisible; 93 | end; 94 | end; 95 | end; 96 | 97 | end. 98 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditKbdHandler.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditKbdHandler.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditKeyCmdEditor.dfm: -------------------------------------------------------------------------------- 1 | object SynEditKeystrokeEditorForm: TSynEditKeystrokeEditorForm 2 | Left = 424 3 | Top = 306 4 | BorderStyle = bsDialog 5 | Caption = 'Edit Keystroke' 6 | ClientHeight = 129 7 | ClientWidth = 269 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'MS Sans Serif' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | OnCreate = FormCreate 16 | OnShow = FormShow 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object pnlAlign: TPanel 20 | Left = 3 21 | Top = 5 22 | Width = 262 23 | Height = 120 24 | BevelInner = bvRaised 25 | BevelOuter = bvLowered 26 | TabOrder = 0 27 | object Label1: TLabel 28 | Left = 9 29 | Top = 14 30 | Width = 50 31 | Height = 13 32 | Caption = 'Command:' 33 | end 34 | object Label2: TLabel 35 | Left = 9 36 | Top = 41 37 | Width = 50 38 | Height = 13 39 | Caption = 'Keystroke:' 40 | end 41 | object Label4: TLabel 42 | Left = 9 43 | Top = 65 44 | Width = 50 45 | Height = 13 46 | Caption = 'Keystroke:' 47 | end 48 | object bntClearKey: TButton 49 | Left = 9 50 | Top = 86 51 | Width = 75 52 | Height = 25 53 | Caption = 'Clear Key' 54 | TabOrder = 3 55 | OnClick = bntClearKeyClick 56 | end 57 | object btnOK: TButton 58 | Left = 93 59 | Top = 86 60 | Width = 75 61 | Height = 25 62 | Caption = 'OK' 63 | TabOrder = 1 64 | OnClick = btnOKClick 65 | end 66 | object cmbCommand: TComboBox 67 | Left = 65 68 | Top = 14 69 | Width = 186 70 | Height = 21 71 | Style = csDropDownList 72 | TabOrder = 0 73 | end 74 | object btnCancel: TButton 75 | Left = 177 76 | Top = 86 77 | Width = 75 78 | Height = 25 79 | Cancel = True 80 | Caption = 'Cancel' 81 | ModalResult = 2 82 | TabOrder = 2 83 | end 84 | end 85 | end 86 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditKeyCmdsEditor.dfm: -------------------------------------------------------------------------------- 1 | object SynEditKeystrokesEditorForm: TSynEditKeystrokesEditorForm 2 | Left = 300 3 | Top = 241 4 | BorderIcons = [biSystemMenu, biMaximize] 5 | Caption = 'Keystroke Editor' 6 | ClientHeight = 319 7 | ClientWidth = 382 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'MS Sans Serif' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | OnCreate = FormCreate 16 | OnResize = FormResize 17 | TextHeight = 13 18 | object pnlBottom: TPanel 19 | Left = 8 20 | Top = 8 21 | Width = 365 22 | Height = 308 23 | BevelInner = bvRaised 24 | BevelOuter = bvLowered 25 | TabOrder = 0 26 | object lnlInfo: TLabel 27 | Left = 5 28 | Top = 271 29 | Width = 229 30 | Height = 13 31 | Caption = 'NOTE: To have multiple keystrokes do the same' 32 | end 33 | object lnlInfo2: TLabel 34 | Left = 42 35 | Top = 287 36 | Width = 217 37 | Height = 13 38 | Caption = 'command, assign the command multiple times.' 39 | end 40 | object pnlCommands: TPanel 41 | Left = 16 42 | Top = 16 43 | Width = 246 44 | Height = 244 45 | BevelInner = bvLowered 46 | BorderWidth = 4 47 | Caption = 'pnlCommands' 48 | TabOrder = 0 49 | object KeyCmdList: TListView 50 | Left = 6 51 | Top = 6 52 | Width = 234 53 | Height = 232 54 | Align = alClient 55 | BorderStyle = bsNone 56 | Columns = < 57 | item 58 | Caption = 'Command' 59 | Width = 117 60 | end 61 | item 62 | Caption = 'Keystroke' 63 | Width = 101 64 | end> 65 | ColumnClick = False 66 | HideSelection = False 67 | TabOrder = 0 68 | ViewStyle = vsReport 69 | OnClick = KeyCmdListClick 70 | OnDblClick = btnEditClick 71 | end 72 | end 73 | object btnAdd: TButton 74 | Left = 276 75 | Top = 20 76 | Width = 75 77 | Height = 25 78 | Caption = '&Add' 79 | TabOrder = 1 80 | OnClick = btnAddClick 81 | end 82 | object btnEdit: TButton 83 | Left = 276 84 | Top = 52 85 | Width = 75 86 | Height = 25 87 | Caption = '&Edit' 88 | Enabled = False 89 | TabOrder = 2 90 | OnClick = btnEditClick 91 | end 92 | object btnDelete: TButton 93 | Left = 276 94 | Top = 84 95 | Width = 75 96 | Height = 25 97 | Caption = '&Delete' 98 | Enabled = False 99 | TabOrder = 3 100 | OnClick = btnDeleteClick 101 | end 102 | object btnClear: TButton 103 | Left = 276 104 | Top = 116 105 | Width = 75 106 | Height = 25 107 | Caption = 'C&lear List' 108 | TabOrder = 4 109 | OnClick = btnClearClick 110 | end 111 | object btnReset: TButton 112 | Left = 276 113 | Top = 148 114 | Width = 75 115 | Height = 25 116 | Caption = '&Reset List' 117 | TabOrder = 5 118 | OnClick = btnResetClick 119 | end 120 | object btnOK: TButton 121 | Left = 276 122 | Top = 241 123 | Width = 75 124 | Height = 25 125 | Caption = '&OK' 126 | Default = True 127 | TabOrder = 6 128 | OnClick = btnOKClick 129 | end 130 | object btnCancel: TButton 131 | Left = 276 132 | Top = 273 133 | Width = 75 134 | Height = 25 135 | Cancel = True 136 | Caption = '&Cancel' 137 | TabOrder = 7 138 | OnClick = btnCancelClick 139 | end 140 | end 141 | end 142 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditKeyConst.pas: -------------------------------------------------------------------------------- 1 | {------------------------------------------------------------------------------- 2 | The contents of this file are subject to the Mozilla Public License 3 | Version 1.1 (the "License"); you may not use this file except in compliance 4 | with the License. You may obtain a copy of the License at 5 | http://www.mozilla.org/MPL/ 6 | 7 | Software distributed under the License is distributed on an "AS IS" basis, 8 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 9 | the specific language governing rights and limitations under the License. 10 | 11 | The Original Code is: SynEditKeyCmds.pas, released 2000-04-07. 12 | The Original Code is based on the mwKeyCmds.pas file from the 13 | mwEdit component suite by Martin Waldenburg and other developers, the Initial 14 | Author of this file is Brad Stowers. 15 | All Rights Reserved. 16 | 17 | Contributors to the SynEdit and mwEdit projects are listed in the 18 | Contributors.txt file. 19 | 20 | Alternatively, the contents of this file may be used under the terms of the 21 | GNU General Public License Version 2 or later (the "GPL"), in which case 22 | the provisions of the GPL are applicable instead of those above. 23 | If you wish to allow use of your version of this file only under the terms 24 | of the GPL and not to allow others to use your version of this file 25 | under the MPL, indicate your decision by deleting the provisions above and 26 | replace them with the notice and other provisions required by the GPL. 27 | If you do not delete the provisions above, a recipient may use your version 28 | of this file under either the MPL or the GPL. 29 | -------------------------------------------------------------------------------} 30 | 31 | unit SynEditKeyConst; 32 | 33 | { This unit provides a translation of DELPHI and CLX key constants to 34 | more readable SynEdit constants } 35 | 36 | {$I SynEdit.inc} 37 | 38 | interface 39 | 40 | uses 41 | Windows; 42 | 43 | const 44 | 45 | SYNEDIT_RETURN = VK_RETURN; 46 | SYNEDIT_ESCAPE = VK_ESCAPE; 47 | SYNEDIT_SPACE = VK_SPACE; 48 | SYNEDIT_PRIOR = VK_PRIOR; 49 | SYNEDIT_NEXT = VK_NEXT; 50 | SYNEDIT_END = VK_END; 51 | SYNEDIT_HOME = VK_HOME; 52 | SYNEDIT_UP = VK_UP; 53 | SYNEDIT_DOWN = VK_DOWN; 54 | SYNEDIT_BACK = VK_BACK; 55 | SYNEDIT_LEFT = VK_LEFT; 56 | SYNEDIT_RIGHT = VK_RIGHT; 57 | SYNEDIT_MENU = VK_MENU; 58 | SYNEDIT_CONTROL = VK_CONTROL; 59 | SYNEDIT_SHIFT = VK_SHIFT; 60 | SYNEDIT_F1 = VK_F1; 61 | SYNEDIT_F2 = VK_F2; 62 | SYNEDIT_F3 = VK_F3; 63 | SYNEDIT_F4 = VK_F4; 64 | SYNEDIT_F5 = VK_F5; 65 | SYNEDIT_F6 = VK_F6; 66 | SYNEDIT_F7 = VK_F7; 67 | SYNEDIT_F8 = VK_F8; 68 | SYNEDIT_F9 = VK_F9; 69 | SYNEDIT_F10 = VK_F10; 70 | SYNEDIT_F11 = VK_F11; 71 | SYNEDIT_F12 = VK_F12; 72 | SYNEDIT_F13 = VK_F13; 73 | SYNEDIT_F14 = VK_F14; 74 | SYNEDIT_F15 = VK_F15; 75 | SYNEDIT_F16 = VK_F16; 76 | SYNEDIT_F17 = VK_F17; 77 | SYNEDIT_F18 = VK_F18; 78 | SYNEDIT_F19 = VK_F19; 79 | SYNEDIT_F20 = VK_F20; 80 | SYNEDIT_F21 = VK_F21; 81 | SYNEDIT_F22 = VK_F22; 82 | SYNEDIT_F23 = VK_F23; 83 | SYNEDIT_F24 = VK_F24; 84 | SYNEDIT_PRINT = VK_PRINT; 85 | SYNEDIT_INSERT = VK_INSERT; 86 | SYNEDIT_DELETE = VK_DELETE; 87 | SYNEDIT_NUMPAD0 = VK_NUMPAD0; 88 | SYNEDIT_NUMPAD1 = VK_NUMPAD1; 89 | SYNEDIT_NUMPAD2 = VK_NUMPAD2; 90 | SYNEDIT_NUMPAD3 = VK_NUMPAD3; 91 | SYNEDIT_NUMPAD4 = VK_NUMPAD4; 92 | SYNEDIT_NUMPAD5 = VK_NUMPAD5; 93 | SYNEDIT_NUMPAD6 = VK_NUMPAD6; 94 | SYNEDIT_NUMPAD7 = VK_NUMPAD7; 95 | SYNEDIT_NUMPAD8 = VK_NUMPAD8; 96 | SYNEDIT_NUMPAD9 = VK_NUMPAD9; 97 | SYNEDIT_MULTIPLY = VK_MULTIPLY; 98 | SYNEDIT_ADD = VK_ADD; 99 | SYNEDIT_SEPARATOR = VK_SEPARATOR; 100 | SYNEDIT_SUBTRACT = VK_SUBTRACT; 101 | SYNEDIT_DECIMAL = VK_DECIMAL; 102 | SYNEDIT_DIVIDE = VK_DIVIDE; 103 | SYNEDIT_NUMLOCK = VK_NUMLOCK; 104 | SYNEDIT_SCROLL = VK_SCROLL; 105 | SYNEDIT_TAB = VK_TAB; 106 | SYNEDIT_CLEAR = VK_CLEAR; 107 | SYNEDIT_PAUSE = VK_PAUSE; 108 | SYNEDIT_CAPITAL = VK_CAPITAL; 109 | 110 | implementation 111 | 112 | end. 113 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditMiscClasses.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditMiscClasses.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditPlugins.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditPlugins.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditPrintHeaderFooter.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditPrintHeaderFooter.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditPrintPreview.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditPrintPreview.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditPrintTypes.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditPrintTypes.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditPropertyReg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditPropertyReg.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditPythonBehaviour.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditPythonBehaviour.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditReg.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditReg.dcr -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditReg.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditReg.res -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditRegexSearch.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditRegexSearch.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditTextBuffer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditTextBuffer.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditTypes.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditTypes.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditWildcardSearch.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditWildcardSearch.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynEditWordWrap.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynEditWordWrap.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynExportHTML.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynExportHTML.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynExportTeX.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynExportTeX.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterADSP21xx.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterADSP21xx.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterAWK.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterAWK.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterAsm.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterAsm.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterBaan.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterBaan.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterBat.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterBat.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterCAC.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterCAC.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterCPM.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterCPM.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterCS.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterCS.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterCache.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterCache.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterCobol.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterCobol.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterCpp.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterCpp.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterCss.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterCss.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterDOT.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterDOT.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterDfm.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterDfm.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterDml.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterDml.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterEiffel.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterEiffel.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterFortran.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterFortran.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterFoxpro.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterFoxpro.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterGWS.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterGWS.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterGalaxy.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterGalaxy.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterGeneral.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterGeneral.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterHC11.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterHC11.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterHP48.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterHP48.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterHaskell.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterHaskell.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterHtml.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterHtml.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterIDL.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterIDL.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterIni.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterIni.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterInno.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterInno.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterJScript.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterJScript.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterJava.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterJava.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterKix.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterKix.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterLDraw.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterLDraw.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterM3.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterM3.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterModelica.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterModelica.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterMsg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterMsg.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterMulti.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterMulti.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterPas.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterPas.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterProgress.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterProgress.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterPython.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterPython.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterRC.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterRC.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterRuby.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterRuby.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterSDD.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterSDD.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterST.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterST.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterSml.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterSml.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterTclTk.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterTclTk.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterTeX.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterTeX.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterURI.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterURI.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterUnreal.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterUnreal.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterVB.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterVB.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterVBScript.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterVBScript.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterVrml97.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterVrml97.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynHighlighterXML.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynHighlighterXML.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynMacroRecorder.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynMacroRecorder.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynSpellCheck.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynSpellCheck.dcr -------------------------------------------------------------------------------- /Ext/SynEdit/Source/SynURIOpener.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/SynEdit/Source/SynURIOpener.pas -------------------------------------------------------------------------------- /Ext/SynEdit/Source/dlgConfirmReplace.dfm: -------------------------------------------------------------------------------- 1 | object ConfirmReplaceDialog: TConfirmReplaceDialog 2 | Left = 176 3 | Top = 158 4 | BorderStyle = bsDialog 5 | Caption = 'Confirm replace' 6 | ClientHeight = 98 7 | ClientWidth = 328 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | OnCreate = FormCreate 16 | OnDestroy = FormDestroy 17 | PixelsPerInch = 96 18 | TextHeight = 15 19 | object lblConfirmation: TLabel 20 | Left = 60 21 | Top = 12 22 | Width = 261 23 | Height = 44 24 | AutoSize = False 25 | WordWrap = True 26 | end 27 | object Image: TImage 28 | Left = 16 29 | Top = 16 30 | Width = 32 31 | Height = 32 32 | end 33 | object btnReplace: TButton 34 | Left = 8 35 | Top = 67 36 | Width = 75 37 | Height = 23 38 | Caption = '&Yes' 39 | Default = True 40 | ModalResult = 6 41 | TabOrder = 0 42 | end 43 | object btnSkip: TButton 44 | Left = 87 45 | Top = 67 46 | Width = 75 47 | Height = 23 48 | Caption = '&No' 49 | ModalResult = 7 50 | TabOrder = 1 51 | end 52 | object btnCancel: TButton 53 | Left = 166 54 | Top = 67 55 | Width = 75 56 | Height = 23 57 | Cancel = True 58 | Caption = 'Cancel' 59 | ModalResult = 2 60 | TabOrder = 2 61 | end 62 | object btnReplaceAll: TButton 63 | Left = 245 64 | Top = 67 65 | Width = 75 66 | Height = 23 67 | Caption = 'Yes to &all' 68 | ModalResult = 10 69 | TabOrder = 3 70 | end 71 | end 72 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/dlgConfirmReplace.pas: -------------------------------------------------------------------------------- 1 | {------------------------------------------------------------------------------- 2 | The contents of this file are subject to the Mozilla Public License 3 | Version 1.1 (the "License"); you may not use this file except in compliance 4 | with the License. You may obtain a copy of the License at 5 | http://www.mozilla.org/MPL/ 6 | 7 | Software distributed under the License is distributed on an "AS IS" basis, 8 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 9 | the specific language governing rights and limitations under the License. 10 | 11 | The Original Code is: dlgConfirmReplace.dpr, released 2000-06-23. 12 | 13 | The Original Code is part of the SearchReplaceDemo project, written by 14 | Michael Hieke for the SynEdit component suite. 15 | All Rights Reserved. 16 | 17 | Contributors to the SynEdit project are listed in the Contributors.txt file. 18 | 19 | Alternatively, the contents of this file may be used under the terms of the 20 | GNU General Public License Version 2 or later (the "GPL"), in which case 21 | the provisions of the GPL are applicable instead of those above. 22 | If you wish to allow use of your version of this file only under the terms 23 | of the GPL and not to allow others to use your version of this file 24 | under the MPL, indicate your decision by deleting the provisions above and 25 | replace them with the notice and other provisions required by the GPL. 26 | If you do not delete the provisions above, a recipient may use your version 27 | of this file under either the MPL or the GPL. 28 | 29 | $Id: dlgConfirmReplace.pas,v 1.2 2002/11/05 17:04:02 giuseppem Exp $ 30 | 31 | You may retrieve the latest version of this file at the SynEdit home page, 32 | located at http://SynEdit.SourceForge.net 33 | 34 | Contributors: Carlo Barazzetta 35 | 36 | Known Issues: 37 | -------------------------------------------------------------------------------} 38 | unit dlgConfirmReplace; 39 | 40 | {$I SynEdit.inc} 41 | 42 | interface 43 | 44 | uses 45 | Windows, SysUtils, Classes, Graphics, Controls, Forms, 46 | StdCtrls, ExtCtrls; 47 | 48 | type 49 | TConfirmReplaceDialog = class(TForm) 50 | btnReplace: TButton; 51 | lblConfirmation: TLabel; 52 | btnSkip: TButton; 53 | btnCancel: TButton; 54 | btnReplaceAll: TButton; 55 | Image: TImage; 56 | procedure FormCreate(Sender: TObject); 57 | procedure FormDestroy(Sender: TObject); 58 | public 59 | procedure PrepareShow(AEditorRect: TRect; X, Y1, Y2: integer; 60 | AReplaceText: string); 61 | end; 62 | 63 | var 64 | ConfirmReplaceDialog: TConfirmReplaceDialog; 65 | 66 | implementation 67 | 68 | {$R *.DFM} 69 | 70 | resourcestring 71 | SAskReplaceText = 'Replace this occurence of "%s"?'; 72 | 73 | { TConfirmReplaceDialog } 74 | 75 | procedure TConfirmReplaceDialog.FormCreate(Sender: TObject); 76 | begin 77 | Image.Picture.Icon.Handle := LoadIcon(0, IDI_QUESTION); 78 | end; 79 | 80 | procedure TConfirmReplaceDialog.FormDestroy(Sender: TObject); 81 | begin 82 | ConfirmReplaceDialog := nil; 83 | end; 84 | 85 | procedure TConfirmReplaceDialog.PrepareShow(AEditorRect: TRect; 86 | X, Y1, Y2: integer; AReplaceText: string); 87 | var 88 | nW, nH: integer; 89 | begin 90 | lblConfirmation.Caption := Format(SAskReplaceText, [AReplaceText]); 91 | nW := AEditorRect.Right - AEditorRect.Left; 92 | nH := AEditorRect.Bottom - AEditorRect.Top; 93 | 94 | if nW <= Width then 95 | X := AEditorRect.Left - (Width - nW) div 2 96 | else 97 | begin 98 | if X + Width > AEditorRect.Right then 99 | X := AEditorRect.Right - Width; 100 | end; 101 | if Y2 > AEditorRect.Top + MulDiv(nH, 2, 3) then 102 | Y2 := Y1 - Height - 4 103 | else 104 | Inc(Y2, 4); 105 | SetBounds(X, Y2, Width, Height); 106 | end; 107 | 108 | end. 109 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/dlgReplaceText.dfm: -------------------------------------------------------------------------------- 1 | inherited TextReplaceDialog: TTextReplaceDialog 2 | Caption = 'Replace text' 3 | ClientHeight = 206 4 | OldCreateOrder = True 5 | ExplicitHeight = 235 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | object ReplaceWidthLabel: TLabel [0] 9 | Left = 8 10 | Top = 41 11 | Width = 82 12 | Height = 13 13 | Alignment = taRightJustify 14 | AutoSize = False 15 | Caption = '&Replace with:' 16 | end 17 | inherited cbSearchText: TComboBox 18 | TabOrder = 5 19 | end 20 | inherited FSearchOptions: TGroupBox 21 | Top = 70 22 | ExplicitTop = 70 23 | end 24 | inherited FSearchDirection: TRadioGroup 25 | Top = 70 26 | ExplicitTop = 70 27 | end 28 | inherited btnOK: TButton 29 | Top = 174 30 | ExplicitTop = 174 31 | end 32 | object cbReplaceText: TComboBox [6] 33 | Left = 96 34 | Top = 37 35 | Width = 228 36 | Height = 21 37 | TabOrder = 0 38 | end 39 | inherited btnCancel: TButton 40 | Top = 174 41 | ExplicitTop = 174 42 | end 43 | end 44 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/dlgReplaceText.pas: -------------------------------------------------------------------------------- 1 | {------------------------------------------------------------------------------- 2 | The contents of this file are subject to the Mozilla Public License 3 | Version 1.1 (the "License"); you may not use this file except in compliance 4 | with the License. You may obtain a copy of the License at 5 | http://www.mozilla.org/MPL/ 6 | 7 | Software distributed under the License is distributed on an "AS IS" basis, 8 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 9 | the specific language governing rights and limitations under the License. 10 | 11 | The Original Code is: dlgReplaceText.pas, released 2000-06-23. 12 | 13 | The Original Code is part of the SearchReplaceDemo project, written by 14 | Michael Hieke for the SynEdit component suite. 15 | All Rights Reserved. 16 | 17 | Contributors to the SynEdit project are listed in the Contributors.txt file. 18 | 19 | Alternatively, the contents of this file may be used under the terms of the 20 | GNU General Public License Version 2 or later (the "GPL"), in which case 21 | the provisions of the GPL are applicable instead of those above. 22 | If you wish to allow use of your version of this file only under the terms 23 | of the GPL and not to allow others to use your version of this file 24 | under the MPL, indicate your decision by deleting the provisions above and 25 | replace them with the notice and other provisions required by the GPL. 26 | If you do not delete the provisions above, a recipient may use your version 27 | of this file under either the MPL or the GPL. 28 | 29 | $Id: dlgReplaceText.pas,v 1.2 2002/11/05 17:04:02 giuseppem Exp $ 30 | 31 | You may retrieve the latest version of this file at the SynEdit home page, 32 | located at http://SynEdit.SourceForge.net 33 | 34 | Contributors: Carlo Barazzetta 35 | 36 | Known Issues: 37 | -------------------------------------------------------------------------------} 38 | unit dlgReplaceText; 39 | 40 | {$I SynEdit.inc} 41 | 42 | interface 43 | 44 | uses 45 | SysUtils, Classes, Controls, Forms, 46 | dlgSearchText, StdCtrls, ExtCtrls; 47 | 48 | type 49 | TTextReplaceDialog = class(TTextSearchDialog) 50 | ReplaceWidthLabel: TLabel; 51 | cbReplaceText: TComboBox; 52 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); 53 | private 54 | function GetReplaceText: string; 55 | function GetReplaceTextHistory: string; 56 | procedure SetReplaceText(Value: string); 57 | procedure SetReplaceTextHistory(Value: string); 58 | public 59 | property ReplaceText: string read GetReplaceText write SetReplaceText; 60 | property ReplaceTextHistory: string read GetReplaceTextHistory 61 | write SetReplaceTextHistory; 62 | end; 63 | 64 | implementation 65 | 66 | {$R *.DFM} 67 | 68 | { TTextReplaceDialog } 69 | 70 | function TTextReplaceDialog.GetReplaceText: string; 71 | begin 72 | Result := cbReplaceText.Text; 73 | end; 74 | 75 | function TTextReplaceDialog.GetReplaceTextHistory: string; 76 | var 77 | i: Integer; 78 | begin 79 | Result := ''; 80 | for i := 0 to cbReplaceText.Items.Count - 1 do 81 | begin 82 | if i >= 10 then 83 | break; 84 | if i > 0 then 85 | Result := Result + #13#10; 86 | Result := Result + cbReplaceText.Items[i]; 87 | end; 88 | end; 89 | 90 | procedure TTextReplaceDialog.SetReplaceText(Value: string); 91 | begin 92 | cbReplaceText.Text := Value; 93 | end; 94 | 95 | procedure TTextReplaceDialog.SetReplaceTextHistory(Value: string); 96 | begin 97 | cbReplaceText.Items.Text := Value; 98 | end; 99 | 100 | procedure TTextReplaceDialog.FormCloseQuery(Sender: TObject; 101 | var CanClose: Boolean); 102 | var 103 | s: string; 104 | i: Integer; 105 | begin 106 | inherited; 107 | if ModalResult = mrOK then 108 | begin 109 | s := cbReplaceText.Text; 110 | if s <> '' then 111 | begin 112 | i := cbReplaceText.Items.IndexOf(s); 113 | if i > -1 then 114 | begin 115 | cbReplaceText.Items.Delete(i); 116 | cbReplaceText.Items.Insert(0, s); 117 | cbReplaceText.Text := s; 118 | end 119 | else 120 | cbReplaceText.Items.Insert(0, s); 121 | end; 122 | end; 123 | end; 124 | 125 | end. 126 | -------------------------------------------------------------------------------- /Ext/SynEdit/Source/dlgSearchText.dfm: -------------------------------------------------------------------------------- 1 | object TextSearchDialog: TTextSearchDialog 2 | Left = 132 3 | Top = 168 4 | BorderStyle = bsDialog 5 | Caption = 'Search Text' 6 | ClientHeight = 180 7 | ClientWidth = 332 8 | Color = clBtnFace 9 | Font.Charset = ANSI_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | Position = poOwnerFormCenter 16 | OnCloseQuery = FormCloseQuery 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object SearchForLabel: TLabel 20 | Left = 8 21 | Top = 12 22 | Width = 82 23 | Height = 13 24 | Alignment = taRightJustify 25 | AutoSize = False 26 | Caption = '&Search for:' 27 | end 28 | object cbSearchText: TComboBox 29 | Left = 96 30 | Top = 8 31 | Width = 228 32 | Height = 21 33 | TabOrder = 0 34 | end 35 | object FSearchOptions: TGroupBox 36 | Left = 8 37 | Top = 40 38 | Width = 154 39 | Height = 127 40 | Caption = 'Options' 41 | TabOrder = 1 42 | object cbSearchCaseSensitive: TCheckBox 43 | Left = 8 44 | Top = 17 45 | Width = 140 46 | Height = 17 47 | Caption = 'C&ase sensitivity' 48 | TabOrder = 0 49 | end 50 | object cbSearchWholeWords: TCheckBox 51 | Left = 8 52 | Top = 39 53 | Width = 140 54 | Height = 17 55 | Caption = '&Whole words only' 56 | TabOrder = 1 57 | end 58 | object cbSearchFromCursor: TCheckBox 59 | Left = 8 60 | Top = 61 61 | Width = 140 62 | Height = 17 63 | Caption = 'Search from &caret' 64 | TabOrder = 2 65 | end 66 | object cbSearchSelectedOnly: TCheckBox 67 | Left = 8 68 | Top = 83 69 | Width = 140 70 | Height = 17 71 | Caption = '&Selected text only' 72 | TabOrder = 3 73 | end 74 | object cbRegularExpression: TCheckBox 75 | Left = 8 76 | Top = 104 77 | Width = 140 78 | Height = 17 79 | Caption = '&Regular expression' 80 | TabOrder = 4 81 | end 82 | end 83 | object FSearchDirection: TRadioGroup 84 | Left = 170 85 | Top = 40 86 | Width = 154 87 | Height = 65 88 | Caption = 'Direction' 89 | ItemIndex = 0 90 | Items.Strings = ( 91 | '&Forward' 92 | '&Backward') 93 | TabOrder = 2 94 | end 95 | object btnOK: TButton 96 | Left = 170 97 | Top = 149 98 | Width = 75 99 | Height = 23 100 | Caption = 'OK' 101 | Default = True 102 | ModalResult = 1 103 | TabOrder = 3 104 | end 105 | object btnCancel: TButton 106 | Left = 249 107 | Top = 149 108 | Width = 75 109 | Height = 23 110 | Cancel = True 111 | Caption = 'Cancel' 112 | ModalResult = 2 113 | TabOrder = 4 114 | end 115 | end 116 | -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/AwesomeFont.RC: -------------------------------------------------------------------------------- 1 | fontawesome RCDATA fontawesome.ttf -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/AwesomeFont.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/VCLStyleUtils/Common/AwesomeFont.RES -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/AwesomeFont_zip.RC: -------------------------------------------------------------------------------- 1 | fontawesome_zip RCDATA fontawesome.zip -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/AwesomeFont_zip.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/VCLStyleUtils/Common/AwesomeFont_zip.RES -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/CompileResources.bat: -------------------------------------------------------------------------------- 1 | "C:\Program Files (x86)\Embarcadero\Studio\18.0\bin\brcc32.exe" AwesomeFont.rc 2 | Pause -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/CompileResources_zip.bat: -------------------------------------------------------------------------------- 1 | "C:\Program Files (x86)\Embarcadero\Studio\18.0\bin\brcc32.exe" AwesomeFont_zip.rc 2 | Pause -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/VCL.Styles.Utils.inc: -------------------------------------------------------------------------------- 1 | //************************************************************************************************** 2 | // 3 | // Vcl.Styles.Utils.inc 4 | // file for the VCL Styles Utils 5 | // https://github.com/RRUZ/vcl-styles-utils/ 6 | // 7 | // The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 8 | // you may not use this file except in compliance with the License. You may obtain a copy of the 9 | // License at http://www.mozilla.org/MPL/ 10 | // 11 | // Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 12 | // ANY KIND, either express or implied. See the License for the specific language governing rights 13 | // and limitations under the License. 14 | // 15 | // 16 | // Portions created by Mahdi Safsafi [SMP3] e-mail SMP@LIVE.FR 17 | // Portions created by Rodrigo Ruz V. are Copyright (C) 2013-2023 Rodrigo Ruz V. 18 | // All Rights Reserved. 19 | // 20 | //************************************************************************************************ 21 | {$DEFINE USE_Vcl.Styles.Hooks} 22 | {$DEFINE HOOK_UXTHEME} 23 | {$DEFINE HOOK_TDateTimePicker} 24 | {$DEFINE HOOK_TProgressBar} 25 | {.$DEFINE LimitStylesToMainApplicationThread} 26 | {.$DEFINE HOOK_VirtualShell} 27 | {.$DEFINE HOOK_ExplorerStatusBar} 28 | { Feature toggles for supported UxThemes - see Vcl.Styles.UxTheme } 29 | {$DEFINE HOOK_Button} 30 | {$DEFINE HOOK_AllButtons} 31 | {$DEFINE HOOK_Scrollbar} 32 | {$DEFINE HOOK_TaskDialog} 33 | {$DEFINE HOOK_ProgressBar} 34 | {$DEFINE HOOK_DateTimePicker} 35 | {$DEFINE HOOK_TreeView} 36 | {$DEFINE HOOK_ListView} 37 | {$DEFINE HOOK_ListBox} 38 | {$DEFINE HOOK_ComboBox} 39 | 40 | {$DEFINE HOOK_Spin} 41 | {$DEFINE HOOK_EDIT} 42 | {$DEFINE HOOK_Rebar} 43 | {$DEFINE HOOK_ToolBar} 44 | {$DEFINE HOOK_Menu} 45 | {$DEFINE HOOK_TrackBar} 46 | {$DEFINE HOOK_ToolTip} 47 | {$DEFINE HOOK_Tab} 48 | // Introduced in Windows Vista 49 | {$DEFINE HOOK_CommandModule} 50 | {$DEFINE HOOK_SearchBox} 51 | {$DEFINE HOOK_AddressBand} 52 | {$DEFINE HOOK_PreviewPane} 53 | {$DEFINE HOOK_TRYHARDER} 54 | {$DEFINE HOOK_BREADCRUMBAR} 55 | {$DEFINE HOOK_InfoBar} 56 | // Introduced in Windows 8 57 | {$DEFINE HOOK_Navigation} 58 | -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/Vcl.Styles.Register.pas: -------------------------------------------------------------------------------- 1 | unit Vcl.Styles.Register; 2 | 3 | interface 4 | 5 | procedure Register; 6 | 7 | implementation 8 | 9 | uses 10 | System.Classes, Vcl.Styles.Preview; 11 | 12 | procedure Register; 13 | begin 14 | RegisterComponents('VisualStyles', [TVisualStylePreview]); 15 | end; 16 | 17 | end. 18 | -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/Common/Vcl.Styles.Utils.SysControls.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Ext/VCLStyleUtils/Common/Vcl.Styles.Utils.SysControls.pas -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/DDetours/Source/DDetoursDefs.inc: -------------------------------------------------------------------------------- 1 | {.$DEFINE HOOK_INTERNAL_FUNCTIONS} // hook internal functions. 2 | 3 | {$IFDEF FPC} 4 | {$ASMMODE INTEL} 5 | {$ELSE !FPC} 6 | 7 | {$T-} 8 | 9 | {$IF CompilerVersion >= 17.0} 10 | {$DEFINE DELPHI_2005_UP} 11 | {$IFEND} 12 | 13 | {$IF CompilerVersion >= 18.5} 14 | {$DEFINE DELPHI_2007_UP} 15 | {$IFEND} 16 | 17 | {$IF CompilerVersion >= 20} 18 | {$DEFINE DELPHI_2009_UP} 19 | {$IFEND} 20 | 21 | {$IF CompilerVersion >= 21} 22 | {$DEFINE DELPHI_2010_UP} 23 | {$IFEND} 24 | 25 | {$IF CompilerVersion >= 22} 26 | {$DEFINE DELPHI_XE_UP} 27 | {$IFEND} 28 | 29 | {$IF CompilerVersion >= 23} 30 | {$DEFINE DELPHI_XE2_UP} 31 | {$IFEND} 32 | 33 | {$IF CompilerVersion >= 33} 34 | {$DEFINE DELPHI_RIO_UP} 35 | {$IFEND} 36 | 37 | {$IFDEF DELPHI_2005_UP} 38 | {$DEFINE SUPPORTS_INLINE} 39 | {$ENDIF} 40 | 41 | {$IFDEF DELPHI_XE2_UP} 42 | {$DEFINE SUPPORTS_RTTI} 43 | {$DEFINE SUPPORTS_GENERICS} 44 | {$DEFINE RENAMED_NAMESPACE} 45 | {$ENDIF} 46 | 47 | {$ENDIF FPC} 48 | 49 | -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/DDetours/Source/LegacyTypes.pas: -------------------------------------------------------------------------------- 1 | // ************************************************************************************************** 2 | // 3 | // https://github.com/MahdiSafsafi/DDetours 4 | // 5 | // ************************************************************************************************** 6 | 7 | unit LegacyTypes; 8 | 9 | interface 10 | 11 | {$I DDetoursDefs.inc} 12 | 13 | type 14 | 15 | {$IFNDEF FPC} 16 | {$IFNDEF DELPHI_XE_UP} 17 | NativeInt = Integer; 18 | NativeUInt = Cardinal; 19 | PNativeInt = ^NativeInt; 20 | PNativeUInt = ^NativeUInt; 21 | {$IFDEF MSWINDOWS} 22 | TThreadID = LongWord; 23 | {$ENDIF MSWINDOWS} 24 | {$ENDIF DELPHI_XE_UP} 25 | {$ENDIF FPC} 26 | Int8 = Shortint; 27 | Int16 = Smallint; 28 | Int32 = Integer; 29 | 30 | UInt8 = Byte; 31 | UInt16 = Word; 32 | UInt32 = Cardinal; 33 | 34 | PInt8 = ^Int8; 35 | PInt16 = ^Int16; 36 | PInt32 = ^Int32; 37 | PInt64 = ^Int64; 38 | 39 | PUInt8 = ^UInt8; 40 | PUInt16 = ^UInt16; 41 | PUInt32 = ^UInt32; 42 | PUInt64 = ^UInt64; 43 | 44 | SIZE_T = NativeUInt; 45 | 46 | implementation 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Ext/VCLStyleUtils/DDetours/Source/TlHelp32.inc: -------------------------------------------------------------------------------- 1 | { TlHelp32 types for fpc } 2 | 3 | const 4 | TH32CS_SNAPHEAPLIST = $00000001; 5 | TH32CS_SNAPPROCESS = $00000002; 6 | TH32CS_SNAPTHREAD = $00000004; 7 | TH32CS_SNAPMODULE = $00000008; 8 | TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST or TH32CS_SNAPPROCESS or 9 | TH32CS_SNAPTHREAD or TH32CS_SNAPMODULE; 10 | TH32CS_INHERIT = $80000000; 11 | 12 | TLS_OUT_OF_INDEXES = DWORD($FFFFFFFF); // FPC does not declare TLS_OUT_OF_INDEXES. 13 | 14 | type 15 | tagTHREADENTRY32 = record 16 | dwSize: DWORD; 17 | cntUsage: DWORD; 18 | th32ThreadID: DWORD; 19 | th32OwnerProcessID: DWORD; 20 | tpBasePri: Longint; 21 | tpDeltaPri: Longint; 22 | dwFlags: DWORD; 23 | end; 24 | THREADENTRY32 = tagTHREADENTRY32; 25 | PTHREADENTRY32 = ^tagTHREADENTRY32; 26 | LPTHREADENTRY32 = ^tagTHREADENTRY32; 27 | TThreadEntry32 = tagTHREADENTRY32; 28 | 29 | TThread32First = function (hSnapshot: THandle; var lpte: TThreadEntry32): BOOL stdcall; 30 | TThread32Next = function (hSnapshot: THandle; var lpte: TThreadENtry32): BOOL stdcall; 31 | TCreateToolhelp32Snapshot = function (dwFlags, th32ProcessID: DWORD): THandle; stdcall; 32 | -------------------------------------------------------------------------------- /Icons/folder-yellow-svg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Icons/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Icons/logo.ico -------------------------------------------------------------------------------- /Icons/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /Icons/logo_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Icons/logo_512.png -------------------------------------------------------------------------------- /Icons/setup.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Icons/setup.ico -------------------------------------------------------------------------------- /Icons/setup_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Icons/setup_512.png -------------------------------------------------------------------------------- /Icons/svg-logo-v.svg: -------------------------------------------------------------------------------- 1 | 6 | 7 | SVG Logo 8 | Designed for the SVG Logo Contest in 2006 by Harvey Rayner, and adopted by W3C in 2009. It is available under the Creative Commons license for those who have an SVG product or who are using SVG on their site. 9 | 10 | 11 | 15 | 16 | SVG Logo 17 | 14-08-2009 18 | 19 | W3C 20 | Harvey Rayner, designer 21 | 22 | See document description 23 | 24 | image/svg+xml 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Icons/svgfolder_multires.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Icons/svgfolder_multires.ico -------------------------------------------------------------------------------- /Images/About.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/About.png -------------------------------------------------------------------------------- /Images/Context-Menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/Context-Menu.png -------------------------------------------------------------------------------- /Images/ExportToPNG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/ExportToPNG.png -------------------------------------------------------------------------------- /Images/PreviewDelphiLogos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/PreviewDelphiLogos.png -------------------------------------------------------------------------------- /Images/PreviewThumbnailsDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/PreviewThumbnailsDark.png -------------------------------------------------------------------------------- /Images/PreviewThumbnailsLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/PreviewThumbnailsLight.png -------------------------------------------------------------------------------- /Images/SVGIconImageListBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SVGIconImageListBanner.png -------------------------------------------------------------------------------- /Images/SVGPreviewHandler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SVGPreviewHandler.png -------------------------------------------------------------------------------- /Images/SVGTextEditorDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SVGTextEditorDark.png -------------------------------------------------------------------------------- /Images/SVGTextEditorLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SVGTextEditorLight.png -------------------------------------------------------------------------------- /Images/SearchText.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SearchText.png -------------------------------------------------------------------------------- /Images/SettingsFont.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SettingsFont.png -------------------------------------------------------------------------------- /Images/SettingsPreview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SettingsPreview.png -------------------------------------------------------------------------------- /Images/SettingsTextColors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SettingsTextColors.png -------------------------------------------------------------------------------- /Images/SettingsTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/SettingsTheme.png -------------------------------------------------------------------------------- /Images/Setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/Setup.png -------------------------------------------------------------------------------- /Images/XYplorer_Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/XYplorer_Preview.png -------------------------------------------------------------------------------- /Images/XYplorer_Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Images/XYplorer_Settings.png -------------------------------------------------------------------------------- /Setup/License_ENG.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1040\deflangfe1040{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}} 2 | {\colortbl ;\red0\green0\blue255;} 3 | {\*\generator Riched20 10.0.22621}\viewkind4\uc1 4 | \pard\nowidctlpar\b\f0\fs24 SVG Shell Extensions and SVG Text Editor\par 5 | \fs20 Copyright \'a9 2021-2025 Ethea S.r.l.\par 6 | all rights reserved.\par 7 | \par 8 | \b0 Licensed under the Apache License, Version 2.0 (the "License");\par 9 | you may not use this software except in compliance with the License.\par 10 | You may obtain a copy of the License at\par 11 | \par 12 | {{\field{\*\fldinst{HYPERLINK http://www.apache.org/licenses/LICENSE-2.0 }}{\fldrslt{http://www.apache.org/licenses/LICENSE-2.0\ul0\cf0}}}}\f0\fs20\par 13 | \par 14 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\par 15 | \par 16 | See the License for the specific language governing permissions and limitations under the License.\par 17 | \par 18 | \b Credits:\par 19 | \b0 Author: Carlo Barazzetta\par 20 | Source project:\par 21 | {{\field{\*\fldinst{HYPERLINK https://github.com/EtheaDev/SVGShellExtensions }}{\fldrslt{https://github.com/EtheaDev/SVGShellExtensions\ul0\cf0}}}}\f0\fs20\par 22 | \par 23 | Third Party libraries and tools used from Ethea:\par 24 | SVGIconImageList {{\field{\*\fldinst{HYPERLINK https://github.com/EtheaDev/SVGIconImageList/ }}{\fldrslt{https://github.com/EtheaDev/SVGIconImageList/\ul0\cf0}}}}\f0\fs20\par 25 | \par 26 | The Initial Developer of the Original Code is Rodrigo Ruz V.\par 27 | Portions created by Rodrigo Ruz V. are Copyright \'a9 2011-2021 Rodrigo Ruz V.\par 28 | {{\field{\*\fldinst{HYPERLINK https://github.com/RRUZ/delphi-preview-handler }}{\fldrslt{https://github.com/RRUZ/delphi-preview-handler\ul0\cf0}}}}\f0\fs20\par 29 | \par 30 | Third Party libraries and tools used\par 31 | SynEdit forked by PyScripter {{\field{\*\fldinst{HYPERLINK https://github.com/pyscripter/SynEdit/ }}{\fldrslt{https://github.com/pyscripter/SynEdit/\ul0\cf0}}}}\f0\fs20 all rights reserved.\par 32 | \par 33 | Image32 Library - {{\field{\*\fldinst{HYPERLINK https://www.angusj.com/delphi/image32/Docs/_Body.htm }}{\fldrslt{https://www.angusj.com/delphi/image32/Docs/_Body.htm\ul0\cf0}}}}\f0\fs20\par 34 | Copyright \'a92019-2025 Angus Johnson.\par 35 | } 36 | � -------------------------------------------------------------------------------- /Setup/Licenza_ITA.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1040\deflangfe1040{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fnil\fcharset0 Calibri;}} 2 | {\colortbl ;\red0\green0\blue255;} 3 | {\*\generator Riched20 10.0.22621}\viewkind4\uc1 4 | \pard\nowidctlpar\b\f0\fs24 SVG Shell Extensions and SVG Text Editor\par 5 | \fs20 Copyright \'a9 2021-2025 Ethea S.r.l.\par 6 | Tutti i diritti sono riservati.\par 7 | \par 8 | \b0 Rilasciato con licenza Apache, versione 2.0 (the "license");\par 9 | Non \'e8 possibile utilizzare questo software se non in conformit\'e0 con la licenza.\par 10 | \'c8 possibile ottenere una copia della licenza all'indirizzo\par 11 | \par 12 | {{\field{\*\fldinst{HYPERLINK http://www.apache.org/licenses/LICENSE-2.0 }}{\fldrslt{http://www.apache.org/licenses/LICENSE-2.0\ul0\cf0}}}}\f0\fs20\par 13 | \par 14 | A meno che non sia richiesto dalla legge applicabile o concordato per iscritto, il software distribuito ai sensi della Licenza \'e8 distribuito "COS\'cc COM'\'c8", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, espresse o implicite.\par 15 | \par 16 | Vedere la licenza per i permessi le autorizzazioni e le limitazioni.\par 17 | \par 18 | \b Crediti:\par 19 | \b0 Autore: Carlo Barazzetta\par 20 | Sorgenti del progetto:\par 21 | {{\field{\*\fldinst{HYPERLINK https://github.com/EtheaDev/SVGShellExtensions }}{\fldrslt{https://github.com/EtheaDev/SVGShellExtensions\ul0\cf0}}}}\f0\fs20\par 22 | \par 23 | Librerie di terze parti e tools usate da Ethea:\par 24 | SVGIconImageList {{\field{\*\fldinst{HYPERLINK https://github.com/EtheaDev/SVGIconImageList/ }}{\fldrslt{https://github.com/EtheaDev/SVGIconImageList/\ul0\cf0}}}}\f0\fs20\par 25 | \par 26 | Lo sviluppatore originale del codice originale \'e8 Rodrigo Ruz V.\par 27 | Porzioni di codice create da Rodrigo Ruz V. sono Copyright \'a9 2011-2021 Rodrigo Ruz V.\par 28 | {{\field{\*\fldinst{HYPERLINK https://github.com/RRUZ/delphi-preview-handler }}{\fldrslt{https://github.com/RRUZ/delphi-preview-handler\ul0\cf0}}}}\f0\fs20\par 29 | \par 30 | Librerie di terze parti utilizzate:\par 31 | SynEdit forked by PyScripter {{\field{\*\fldinst{HYPERLINK https://github.com/pyscripter/SynEdit/ }}{\fldrslt{https://github.com/pyscripter/SynEdit/\ul0\cf0}}}}\f0\fs20 all rights reserved.\par 32 | \par 33 | Image32 Library - {{\field{\*\fldinst{HYPERLINK https://www.angusj.com/delphi/image32/Docs/_Body.htm }}{\fldrslt{https://www.angusj.com/delphi/image32/Docs/_Body.htm\ul0\cf0}}}}\f0\fs20\par 34 | Copyright \'a92019-2025 Angus Johnson.\par 35 | 36 | \pard\sa200\sl276\slmult1\f1\fs22\lang16\par 37 | } 38 | � -------------------------------------------------------------------------------- /Setup/SVGShellExtensions.iss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/SVGShellExtensions.iss -------------------------------------------------------------------------------- /Setup/Settings.ini: -------------------------------------------------------------------------------- 1 | [Global] 2 | FontSize=12 3 | FontName=Consolas 4 | StyleName=Windows10 5 | ShowEditor=0 6 | SplitterPos=50 7 | PreferD2D=0 -------------------------------------------------------------------------------- /Setup/SupportingDelphi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/SupportingDelphi.jpg -------------------------------------------------------------------------------- /Setup/WizEtheaImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaImage.bmp -------------------------------------------------------------------------------- /Setup/WizEtheaSmallImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaSmallImage.bmp -------------------------------------------------------------------------------- /Setup/WizEtheaSmallImage110x106.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaSmallImage110x106.bmp -------------------------------------------------------------------------------- /Setup/WizEtheaSmallImage119x123.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaSmallImage119x123.bmp -------------------------------------------------------------------------------- /Setup/WizEtheaSmallImage138x140.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaSmallImage138x140.bmp -------------------------------------------------------------------------------- /Setup/WizEtheaSmallImage64x68.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaSmallImage64x68.bmp -------------------------------------------------------------------------------- /Setup/WizEtheaSmallImage83x80.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaSmallImage83x80.bmp -------------------------------------------------------------------------------- /Setup/WizEtheaSmallImage92x97.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Setup/WizEtheaSmallImage92x97.bmp -------------------------------------------------------------------------------- /Source/ChildForm.dfm: -------------------------------------------------------------------------------- 1 | object MDIChildForm: TMDIChildForm 2 | Left = 197 3 | Top = 117 4 | Caption = 'MDI Child' 5 | ClientHeight = 0 6 | ClientWidth = 120 7 | Color = clAppWorkSpace 8 | ParentFont = True 9 | FormStyle = fsMDIChild 10 | Position = poDefault 11 | WindowState = wsMaximized 12 | TextHeight = 15 13 | end 14 | -------------------------------------------------------------------------------- /Source/EtheaMultires.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Source/EtheaMultires.ico -------------------------------------------------------------------------------- /Source/FSplash.dfm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Source/FSplash.dfm -------------------------------------------------------------------------------- /Source/FSplash.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { SVG Shell Extensions: Shell extensions for SVG files } 4 | { (Preview Panel, Thumbnail Icon, SVG Editor) } 5 | { } 6 | { Copyright (c) 2021-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { } 9 | { https://github.com/EtheaDev/SVGShellExtensions } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | {******************************************************************************} 26 | unit FSplash; 27 | 28 | interface 29 | 30 | uses 31 | SysUtils, Windows, Messages, Classes, Graphics, Controls, 32 | Forms, Dialogs, StdCtrls, ExtCtrls, jpeg, SVGIconImage; 33 | 34 | type 35 | TSplashForm = class(TForm) 36 | Image1: TImage; 37 | SVGIconImage1: TSVGIconImage; 38 | lbVersion: TLabel; 39 | lbLoad: TLabel; 40 | procedure FormShow(Sender: TObject); 41 | end; 42 | 43 | var 44 | SplashForm: TSplashForm; 45 | 46 | implementation 47 | 48 | {$R *.DFM} 49 | 50 | procedure GetVerInfo( const FileName : string; 51 | var MajorVersion, MinorVersion, Release, Build : integer); 52 | var 53 | InfoSize, Wnd: DWORD; 54 | VerBuf: Pointer; 55 | FI: PVSFixedFileInfo; 56 | VerSize: DWORD; 57 | begin 58 | MajorVersion := 0; 59 | MinorVersion := 0; 60 | Release := 0; 61 | Build := 0; 62 | 63 | InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd); 64 | if InfoSize <> 0 then 65 | begin 66 | GetMem(VerBuf, InfoSize); 67 | try 68 | if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then 69 | if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then 70 | begin 71 | MajorVersion := HIWORD(FI.dwFileVersionMS); 72 | MinorVersion := LOWORD(FI.dwFileVersionMS); 73 | Release := HIWORD(FI.dwFileVersionLS); 74 | Build := LOWORD(FI.dwFileVersionLS); 75 | end; 76 | finally 77 | FreeMem(VerBuf); 78 | end; 79 | end; 80 | end; 81 | 82 | procedure TSplashForm.FormShow(Sender: TObject); 83 | var 84 | MajorVersion : integer; 85 | MinorVersion : integer; 86 | Release : integer; 87 | Build : integer; 88 | begin 89 | GetVerInfo( Application.ExeName, 90 | MajorVersion, MinorVersion, Release, Build ); 91 | 92 | lbVersion.Caption := Format(lbVersion.Caption, 93 | [MajorVersion, MinorVersion]); 94 | end; 95 | 96 | 97 | end. 98 | -------------------------------------------------------------------------------- /Source/Main.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { SVG Shell Extensions: Shell extensions for SVG files } 4 | { (Preview Panel, Thumbnail Icon, SVG Editor) } 5 | { } 6 | { Copyright (c) 2021-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { } 9 | { https://github.com/EtheaDev/SVGShellExtensions } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | { The Original Code is Main.pas. } 26 | { Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler } 27 | { } 28 | { The Initial Developer of the Original Code is Rodrigo Ruz V. } 29 | { Portions created by Rodrigo Ruz V. are Copyright 2011-2021 Rodrigo Ruz V. } 30 | { All Rights Reserved. } 31 | {******************************************************************************} 32 | unit Main; 33 | 34 | interface 35 | 36 | implementation 37 | 38 | uses 39 | uSVGThumbnailHandler, 40 | uSVGPreviewHandler, 41 | Winapi.ShlObj; 42 | 43 | initialization 44 | {$IFDEF WIN64} 45 | TSVGPreviewHandler.RegisterPreview(MySVG_PreviewHandlerGUID_64, 46 | 'SVG.PreviewHandler', 'Delphi SVG Preview Handler 64bit'); 47 | {$ELSE} 48 | TSVGPreviewHandler.RegisterPreview(MySVG_PreviewHandlerGUID_32, 49 | 'SVG.PreviewHandler', 'Delphi SVG Preview Handler 32bit'); 50 | {$ENDIF} 51 | 52 | {$IFDEF WIN64} 53 | TSVGThumbnailProvider.RegisterThumbnailProvider(MySVG_ThumbnailProviderGUID, 54 | 'SVG.ThumbnailProvider', 'Delphi SVG Thumbnail Provider 64bit'); 55 | {$ELSE} 56 | TSVGThumbnailProvider.RegisterThumbnailProvider(MySVG_ThumbnailProviderGUID, 57 | 'SVG.ThumbnailProvider', 'Delphi SVG Thumbnail Provider 32bit'); 58 | {$ENDIF} 59 | 60 | //Invalidate the shell's cache for Preview Thumbnails 61 | SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); 62 | 63 | end. 64 | 65 | -------------------------------------------------------------------------------- /Source/SVGShellExtensions.dpr: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { SVG Shell Extensions: Shell extensions for SVG files } 4 | { (Preview Panel, Thumbnail Icon, SVG Editor) } 5 | { } 6 | { Copyright (c) 2021-2024 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { } 9 | { https://github.com/EtheaDev/SVGShellExtensions } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | { The Original Code is: } 26 | { Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler } 27 | { } 28 | { The Initial Developer of the Original Code is Rodrigo Ruz V. } 29 | { Portions created by Rodrigo Ruz V. are Copyright 2011-2021 Rodrigo Ruz V. } 30 | { All Rights Reserved. } 31 | {******************************************************************************} 32 | library SVGShellExtensions; 33 | uses 34 | ComServ, 35 | Main in 'Main.pas', 36 | uMisc in 'uMisc.pas', 37 | uRegistry in 'uRegistry.pas', 38 | uLogExcept in 'uLogExcept.pas', 39 | uStreamPreviewHandler in 'uStreamPreviewHandler.pas', 40 | uCommonPreviewHandler in 'uCommonPreviewHandler.pas', 41 | uPreviewHandler in 'uPreviewHandler.pas', 42 | uPreviewContainer in 'uPreviewContainer.pas' {PreviewContainer}, 43 | uSVGPreviewHandler in 'uSVGPreviewHandler.pas', 44 | uPreviewHandlerRegister in 'uPreviewHandlerRegister.pas', 45 | uSVGThumbnailHandler in 'uSVGThumbnailHandler.pas', 46 | uThumbnailHandlerRegister in 'uThumbnailHandlerRegister.pas', 47 | uSVGContextMenuHandler in 'uSVGContextMenuHandler.pas', 48 | PreviewForm in 'PreviewForm.pas' {FrmPreview}, 49 | SettingsForm in 'SettingsForm.pas' {UserSettingsForm}, 50 | uSettings in 'uSettings.pas', 51 | DResources in 'DResources.pas' {dmResources: TDataModule}, 52 | dlgSearchText in 'dlgSearchText.pas' {TextSearchDialog}, 53 | uAbout in 'uAbout.pas' {FrmAbout}; 54 | 55 | exports 56 | DllGetClassObject, 57 | DllCanUnloadNow, 58 | DllRegisterServer, 59 | DllUnregisterServer, 60 | DllInstall; 61 | 62 | {$R *.res} 63 | 64 | begin 65 | end. 66 | -------------------------------------------------------------------------------- /Source/SVGShellExtensions.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Source/SVGShellExtensions.res -------------------------------------------------------------------------------- /Source/SVGShellExtensions32.dpr: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { SVG Shell Extensions: Shell extensions for SVG files } 4 | { (Preview Panel, Thumbnail Icon, SVG Editor) } 5 | { } 6 | { Copyright (c) 2021-2024 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { } 9 | { https://github.com/EtheaDev/SVGShellExtensions } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | { The Original Code is: } 26 | { Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler } 27 | { } 28 | { The Initial Developer of the Original Code is Rodrigo Ruz V. } 29 | { Portions created by Rodrigo Ruz V. are Copyright 2011-2021 Rodrigo Ruz V. } 30 | { All Rights Reserved. } 31 | {******************************************************************************} 32 | library SVGShellExtensions32; 33 | uses 34 | ComServ, 35 | Main in 'Main.pas', 36 | uMisc in 'uMisc.pas', 37 | uRegistry in 'uRegistry.pas', 38 | uLogExcept in 'uLogExcept.pas', 39 | uStreamPreviewHandler in 'uStreamPreviewHandler.pas', 40 | uCommonPreviewHandler in 'uCommonPreviewHandler.pas', 41 | uPreviewHandler in 'uPreviewHandler.pas', 42 | uPreviewContainer in 'uPreviewContainer.pas' {PreviewContainer}, 43 | uSVGPreviewHandler in 'uSVGPreviewHandler.pas', 44 | uPreviewHandlerRegister in 'uPreviewHandlerRegister.pas', 45 | uSVGThumbnailHandler in 'uSVGThumbnailHandler.pas', 46 | uThumbnailHandlerRegister in 'uThumbnailHandlerRegister.pas', 47 | uSVGContextMenuHandler in 'uSVGContextMenuHandler.pas', 48 | PreviewForm in 'PreviewForm.pas' {FrmPreview}, 49 | SettingsForm in 'SettingsForm.pas' {UserSettingsForm}, 50 | uSettings in 'uSettings.pas', 51 | DResources in 'DResources.pas' {dmResources: TDataModule}, 52 | dlgSearchText in 'dlgSearchText.pas' {TextSearchDialog}, 53 | uAbout in 'uAbout.pas' {FrmAbout}; 54 | 55 | exports 56 | //Initialize, 57 | //Finalize, 58 | DllGetClassObject, 59 | DllCanUnloadNow, 60 | DllRegisterServer, 61 | DllUnregisterServer, 62 | DllInstall; 63 | 64 | {$R *.res} 65 | 66 | begin 67 | end. 68 | -------------------------------------------------------------------------------- /Source/SVGShellExtensions32.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Source/SVGShellExtensions32.res -------------------------------------------------------------------------------- /Source/SVGShellExtensionsGroup.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {68E0D2A4-9F7D-409B-9373-BA6AC49A07FE} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Default.Personality.12 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Source/SVGTextEditor.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Source/SVGTextEditor.dpr -------------------------------------------------------------------------------- /Source/SVGTextEditor.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Source/SVGTextEditor.res -------------------------------------------------------------------------------- /Source/dlgConfirmReplace.dfm: -------------------------------------------------------------------------------- 1 | object ConfirmReplaceDialog: TConfirmReplaceDialog 2 | Left = 176 3 | Top = 158 4 | BorderStyle = bsDialog 5 | Caption = 'Confirm replace' 6 | ClientHeight = 98 7 | ClientWidth = 328 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | OnCreate = FormCreate 16 | OnDestroy = FormDestroy 17 | PixelsPerInch = 96 18 | TextHeight = 15 19 | object lblConfirmation: TLabel 20 | Left = 60 21 | Top = 12 22 | Width = 261 23 | Height = 44 24 | AutoSize = False 25 | WordWrap = True 26 | end 27 | object Image: TImage 28 | Left = 16 29 | Top = 16 30 | Width = 32 31 | Height = 32 32 | end 33 | object btnReplace: TButton 34 | Left = 8 35 | Top = 67 36 | Width = 75 37 | Height = 23 38 | Caption = '&Yes' 39 | Default = True 40 | ModalResult = 6 41 | TabOrder = 0 42 | end 43 | object btnSkip: TButton 44 | Left = 87 45 | Top = 67 46 | Width = 75 47 | Height = 23 48 | Caption = '&No' 49 | ModalResult = 7 50 | TabOrder = 1 51 | end 52 | object btnCancel: TButton 53 | Left = 166 54 | Top = 67 55 | Width = 75 56 | Height = 23 57 | Cancel = True 58 | Caption = 'Cancel' 59 | ModalResult = 2 60 | TabOrder = 2 61 | end 62 | object btnReplaceAll: TButton 63 | Left = 245 64 | Top = 67 65 | Width = 75 66 | Height = 23 67 | Caption = 'Yes to &all' 68 | ModalResult = 10 69 | TabOrder = 3 70 | end 71 | end 72 | -------------------------------------------------------------------------------- /Source/dlgConfirmReplace.pas: -------------------------------------------------------------------------------- 1 | {------------------------------------------------------------------------------- 2 | The contents of this file are subject to the Mozilla Public License 3 | Version 1.1 (the "License"); you may not use this file except in compliance 4 | with the License. You may obtain a copy of the License at 5 | http://www.mozilla.org/MPL/ 6 | 7 | Software distributed under the License is distributed on an "AS IS" basis, 8 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 9 | the specific language governing rights and limitations under the License. 10 | 11 | The Original Code is: dlgConfirmReplace.dpr, released 2000-06-23. 12 | 13 | The Original Code is part of the SearchReplaceDemo project, written by 14 | Michael Hieke for the SynEdit component suite. 15 | All Rights Reserved. 16 | 17 | Contributors to the SynEdit project are listed in the Contributors.txt file. 18 | 19 | Alternatively, the contents of this file may be used under the terms of the 20 | GNU General Public License Version 2 or later (the "GPL"), in which case 21 | the provisions of the GPL are applicable instead of those above. 22 | If you wish to allow use of your version of this file only under the terms 23 | of the GPL and not to allow others to use your version of this file 24 | under the MPL, indicate your decision by deleting the provisions above and 25 | replace them with the notice and other provisions required by the GPL. 26 | If you do not delete the provisions above, a recipient may use your version 27 | of this file under either the MPL or the GPL. 28 | 29 | $Id: dlgConfirmReplace.pas,v 1.2 2002/11/05 17:04:02 giuseppem Exp $ 30 | 31 | You may retrieve the latest version of this file at the SynEdit home page, 32 | located at http://SynEdit.SourceForge.net 33 | 34 | Contributors: Carlo Barazzetta 35 | 36 | Known Issues: 37 | -------------------------------------------------------------------------------} 38 | unit dlgConfirmReplace; 39 | 40 | {$I SynEdit.inc} 41 | 42 | interface 43 | 44 | uses 45 | Windows, SysUtils, Classes, Graphics, Controls, Forms, 46 | StdCtrls, ExtCtrls; 47 | 48 | type 49 | TConfirmReplaceDialog = class(TForm) 50 | btnReplace: TButton; 51 | lblConfirmation: TLabel; 52 | btnSkip: TButton; 53 | btnCancel: TButton; 54 | btnReplaceAll: TButton; 55 | Image: TImage; 56 | procedure FormCreate(Sender: TObject); 57 | procedure FormDestroy(Sender: TObject); 58 | public 59 | procedure PrepareShow(AEditorRect: TRect; X, Y1, Y2: integer; 60 | AReplaceText: string); 61 | end; 62 | 63 | var 64 | ConfirmReplaceDialog: TConfirmReplaceDialog; 65 | 66 | implementation 67 | 68 | {$R *.DFM} 69 | 70 | resourcestring 71 | SAskReplaceText = 'Replace this occurence of "%s"?'; 72 | 73 | { TConfirmReplaceDialog } 74 | 75 | procedure TConfirmReplaceDialog.FormCreate(Sender: TObject); 76 | begin 77 | Image.Picture.Icon.Handle := LoadIcon(0, IDI_QUESTION); 78 | end; 79 | 80 | procedure TConfirmReplaceDialog.FormDestroy(Sender: TObject); 81 | begin 82 | ConfirmReplaceDialog := nil; 83 | end; 84 | 85 | procedure TConfirmReplaceDialog.PrepareShow(AEditorRect: TRect; 86 | X, Y1, Y2: integer; AReplaceText: string); 87 | var 88 | nW, nH: integer; 89 | begin 90 | lblConfirmation.Caption := Format(SAskReplaceText, [AReplaceText]); 91 | nW := AEditorRect.Right - AEditorRect.Left; 92 | nH := AEditorRect.Bottom - AEditorRect.Top; 93 | 94 | if nW <= Width then 95 | X := AEditorRect.Left - (Width - nW) div 2 96 | else 97 | begin 98 | if X + Width > AEditorRect.Right then 99 | X := AEditorRect.Right - Width; 100 | end; 101 | if Y2 > AEditorRect.Top + MulDiv(nH, 2, 3) then 102 | Y2 := Y1 - Height - 4 103 | else 104 | Inc(Y2, 4); 105 | SetBounds(X, Y2, Width, Height); 106 | end; 107 | 108 | end. 109 | -------------------------------------------------------------------------------- /Source/dlgReplaceText.dfm: -------------------------------------------------------------------------------- 1 | inherited TextReplaceDialog: TTextReplaceDialog 2 | Caption = 'Replace text' 3 | ClientHeight = 206 4 | OldCreateOrder = True 5 | ExplicitHeight = 235 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | object ReplaceWidthLabel: TLabel [0] 9 | Left = 8 10 | Top = 41 11 | Width = 82 12 | Height = 13 13 | Alignment = taRightJustify 14 | AutoSize = False 15 | Caption = '&Replace with:' 16 | end 17 | inherited cbSearchText: TComboBox 18 | TabOrder = 5 19 | end 20 | inherited FSearchOptions: TGroupBox 21 | Top = 70 22 | ExplicitTop = 70 23 | end 24 | inherited FSearchDirection: TRadioGroup 25 | Top = 70 26 | ExplicitTop = 70 27 | end 28 | inherited btnOK: TButton 29 | Top = 174 30 | ExplicitTop = 174 31 | end 32 | object cbReplaceText: TComboBox [6] 33 | Left = 96 34 | Top = 37 35 | Width = 228 36 | Height = 21 37 | TabOrder = 0 38 | end 39 | inherited btnCancel: TButton 40 | Top = 174 41 | ExplicitTop = 174 42 | end 43 | end 44 | -------------------------------------------------------------------------------- /Source/dlgReplaceText.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { SVG Shell Extensions: Shell extensions for SVG files } 4 | { (Preview Panel, Thumbnail Icon, SVG Editor) } 5 | { } 6 | { Copyright (c) 2021-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { } 9 | { https://github.com/EtheaDev/SVGShellExtensions } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | {******************************************************************************} 26 | unit dlgReplaceText; 27 | 28 | {$I SynEdit.inc} 29 | 30 | interface 31 | 32 | uses 33 | SysUtils, Classes, Controls, Forms, 34 | dlgSearchText, StdCtrls, ExtCtrls; 35 | 36 | type 37 | TTextReplaceDialog = class(TTextSearchDialog) 38 | ReplaceWidthLabel: TLabel; 39 | cbReplaceText: TComboBox; 40 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); 41 | private 42 | function GetReplaceText: string; 43 | function GetReplaceTextHistory: string; 44 | procedure SetReplaceText(Value: string); 45 | procedure SetReplaceTextHistory(Value: string); 46 | public 47 | property ReplaceText: string read GetReplaceText write SetReplaceText; 48 | property ReplaceTextHistory: string read GetReplaceTextHistory 49 | write SetReplaceTextHistory; 50 | end; 51 | 52 | implementation 53 | 54 | {$R *.DFM} 55 | 56 | { TTextReplaceDialog } 57 | 58 | function TTextReplaceDialog.GetReplaceText: string; 59 | begin 60 | Result := cbReplaceText.Text; 61 | end; 62 | 63 | function TTextReplaceDialog.GetReplaceTextHistory: string; 64 | var 65 | i: Integer; 66 | begin 67 | Result := ''; 68 | for i := 0 to cbReplaceText.Items.Count - 1 do 69 | begin 70 | if i >= 10 then 71 | break; 72 | if i > 0 then 73 | Result := Result + #13#10; 74 | Result := Result + cbReplaceText.Items[i]; 75 | end; 76 | end; 77 | 78 | procedure TTextReplaceDialog.SetReplaceText(Value: string); 79 | begin 80 | cbReplaceText.Text := Value; 81 | end; 82 | 83 | procedure TTextReplaceDialog.SetReplaceTextHistory(Value: string); 84 | begin 85 | cbReplaceText.Items.Text := Value; 86 | end; 87 | 88 | procedure TTextReplaceDialog.FormCloseQuery(Sender: TObject; 89 | var CanClose: Boolean); 90 | var 91 | s: string; 92 | i: Integer; 93 | begin 94 | inherited; 95 | if ModalResult = mrOK then 96 | begin 97 | s := cbReplaceText.Text; 98 | if s <> '' then 99 | begin 100 | i := cbReplaceText.Items.IndexOf(s); 101 | if i > -1 then 102 | begin 103 | cbReplaceText.Items.Delete(i); 104 | cbReplaceText.Items.Insert(0, s); 105 | cbReplaceText.Text := s; 106 | end 107 | else 108 | cbReplaceText.Items.Insert(0, s); 109 | end; 110 | end; 111 | end; 112 | 113 | end. 114 | -------------------------------------------------------------------------------- /Source/dlgSearchText.dfm: -------------------------------------------------------------------------------- 1 | object TextSearchDialog: TTextSearchDialog 2 | Left = 132 3 | Top = 168 4 | BorderStyle = bsDialog 5 | Caption = 'Search Text' 6 | ClientHeight = 180 7 | ClientWidth = 332 8 | Color = clBtnFace 9 | Font.Charset = ANSI_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | Position = poOwnerFormCenter 16 | OnCloseQuery = FormCloseQuery 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object SearchForLabel: TLabel 20 | Left = 8 21 | Top = 12 22 | Width = 82 23 | Height = 13 24 | Alignment = taRightJustify 25 | AutoSize = False 26 | Caption = '&Search for:' 27 | end 28 | object cbSearchText: TComboBox 29 | Left = 96 30 | Top = 8 31 | Width = 228 32 | Height = 21 33 | TabOrder = 0 34 | end 35 | object FSearchOptions: TGroupBox 36 | Left = 8 37 | Top = 40 38 | Width = 154 39 | Height = 127 40 | Caption = 'Options' 41 | TabOrder = 1 42 | object cbSearchCaseSensitive: TCheckBox 43 | Left = 8 44 | Top = 17 45 | Width = 140 46 | Height = 17 47 | Caption = 'C&ase sensitivity' 48 | TabOrder = 0 49 | end 50 | object cbSearchWholeWords: TCheckBox 51 | Left = 8 52 | Top = 39 53 | Width = 140 54 | Height = 17 55 | Caption = '&Whole words only' 56 | TabOrder = 1 57 | end 58 | object cbSearchFromCursor: TCheckBox 59 | Left = 8 60 | Top = 61 61 | Width = 140 62 | Height = 17 63 | Caption = 'Search from &caret' 64 | TabOrder = 2 65 | end 66 | object cbSearchSelectedOnly: TCheckBox 67 | Left = 8 68 | Top = 83 69 | Width = 140 70 | Height = 17 71 | Caption = '&Selected text only' 72 | TabOrder = 3 73 | end 74 | object cbRegularExpression: TCheckBox 75 | Left = 8 76 | Top = 104 77 | Width = 140 78 | Height = 17 79 | Caption = '&Regular expression' 80 | TabOrder = 4 81 | end 82 | end 83 | object FSearchDirection: TRadioGroup 84 | Left = 170 85 | Top = 40 86 | Width = 154 87 | Height = 65 88 | Caption = 'Direction' 89 | ItemIndex = 0 90 | Items.Strings = ( 91 | '&Forward' 92 | '&Backward') 93 | TabOrder = 2 94 | end 95 | object btnOK: TButton 96 | Left = 170 97 | Top = 149 98 | Width = 75 99 | Height = 23 100 | Caption = 'OK' 101 | Default = True 102 | ModalResult = 1 103 | TabOrder = 3 104 | end 105 | object btnCancel: TButton 106 | Left = 249 107 | Top = 149 108 | Width = 75 109 | Height = 23 110 | Cancel = True 111 | Caption = 'Cancel' 112 | ModalResult = 2 113 | TabOrder = 4 114 | end 115 | end 116 | -------------------------------------------------------------------------------- /Source/uAbout.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EtheaDev/SVGShellExtensions/829e1f39c62ffa6902f389ea2f6b5fc546d0180d/Source/uAbout.pas -------------------------------------------------------------------------------- /Source/uCommonPreviewHandler.pas: -------------------------------------------------------------------------------- 1 | // ************************************************************************************************** 2 | // 3 | // Unit uCommonPreviewHandler 4 | // unit for the Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler 5 | // 6 | // The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 7 | // you may not use this file except in compliance with the License. You may obtain a copy of the 8 | // License at http://www.mozilla.org/MPL/ 9 | // 10 | // Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 11 | // ANY KIND, either express or implied. See the License for the specific language governing rights 12 | // and limitations under the License. 13 | // 14 | // The Original Code is uCommonPreviewHandler.pas. 15 | // 16 | // The Initial Developer of the Original Code is Rodrigo Ruz V. 17 | // Portions created by Rodrigo Ruz V. are Copyright (C) 2011-2021 Rodrigo Ruz V. 18 | // All Rights Reserved. 19 | // 20 | // ************************************************************************************************* 21 | unit uCommonPreviewHandler; 22 | 23 | interface 24 | 25 | {$DEFINE USE_TStreamPreviewHandler} 26 | 27 | uses 28 | Classes, 29 | Controls, 30 | StdCtrls, 31 | SysUtils, 32 | PreviewForm, 33 | {$IFDEF USE_TStreamPreviewHandler} 34 | uStreamAdapter, 35 | uStreamPreviewHandler, 36 | {$ELSE} 37 | uFilePreviewHandler, 38 | {$ENDIF} 39 | uPreviewHandler; 40 | 41 | type 42 | {$IFDEF USE_TStreamPreviewHandler} 43 | TBasePreviewHandler = class(TStreamPreviewHandler) 44 | {$ELSE} 45 | TBasePreviewHandler = class(TFilePreviewHandler) 46 | {$ENDIF} 47 | end; 48 | 49 | implementation 50 | 51 | end. 52 | -------------------------------------------------------------------------------- /Source/uFilePreviewHandler.pas: -------------------------------------------------------------------------------- 1 | // ************************************************************************************************** 2 | // 3 | // Unit uFilePreviewHandler 4 | // unit for the Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler 5 | // 6 | // The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 7 | // you may not use this file except in compliance with the License. You may obtain a copy of the 8 | // License at http://www.mozilla.org/MPL/ 9 | // 10 | // Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 11 | // ANY KIND, either express or implied. See the License for the specific language governing rights 12 | // and limitations under the License. 13 | // 14 | // The Original Code is uFilePreviewHandler.pas. 15 | // 16 | // The Initial Developer of the Original Code is Rodrigo Ruz V. 17 | // Portions created by Rodrigo Ruz V. are Copyright (C) 2011-2021 Rodrigo Ruz V. 18 | // All Rights Reserved. 19 | // 20 | // ************************************************************************************************* 21 | 22 | unit uFilePreviewHandler; 23 | 24 | interface 25 | 26 | uses 27 | ComObj, 28 | uPreviewHandler; 29 | 30 | type 31 | TFilePreviewHandler = class abstract(TPreviewHandler) 32 | public 33 | class function GetComClass: TComClass; override; final; 34 | end; 35 | 36 | implementation 37 | 38 | uses 39 | Windows, 40 | PropSys, 41 | SysUtils, 42 | uLogExcept, 43 | uMisc; 44 | 45 | type 46 | TComFilePreviewHandler = class(TComPreviewHandler, IInitializeWithFile) 47 | // strict private 48 | function IInitializeWithFile.Initialize = IInitializeWithFile_Initialize; 49 | function IInitializeWithFile_Initialize(pszFilePath: LPCWSTR; grfMode: DWORD): HRESULT; stdcall; 50 | private 51 | FFilePath: TFileName; 52 | FMode: DWORD; 53 | function GetPreviewHandler: TFilePreviewHandler; 54 | protected 55 | procedure InternalDoPreview; override; 56 | procedure InternalUnload; override; 57 | property PreviewHandler: TFilePreviewHandler read GetPreviewHandler; 58 | property FilePath: TFileName read FFilePath; 59 | property Mode: DWORD read FMode; 60 | end; 61 | 62 | function TComFilePreviewHandler.GetPreviewHandler: TFilePreviewHandler; 63 | begin 64 | Result := inherited PreviewHandler as TFilePreviewHandler; 65 | end; 66 | 67 | function TComFilePreviewHandler.IInitializeWithFile_Initialize(pszFilePath: LPCWSTR; grfMode: DWORD): HRESULT; 68 | begin 69 | FFilePath := pszFilePath; 70 | Initialize_GDI; 71 | FMode := grfMode; 72 | Result := S_OK; 73 | end; 74 | 75 | procedure TComFilePreviewHandler.InternalDoPreview; 76 | begin 77 | TLogPreview.Add('TComFilePreviewHandler.InternalDoPreview'); 78 | CheckContainer; 79 | Container.LoadFromFile(FFilePath); 80 | Container.Show; 81 | end; 82 | 83 | procedure TComFilePreviewHandler.InternalUnload; 84 | begin 85 | FFilePath := ''; 86 | end; 87 | 88 | class function TFilePreviewHandler.GetComClass: TComClass; 89 | begin 90 | Result := TComFilePreviewHandler; 91 | end; 92 | 93 | end. 94 | -------------------------------------------------------------------------------- /Source/uLogExcept.pas: -------------------------------------------------------------------------------- 1 | // ************************************************************************************************** 2 | // 3 | // Unit uLogExcept 4 | // unit for the Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler 5 | // 6 | // The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 7 | // you may not use this file except in compliance with the License. You may obtain a copy of the 8 | // License at http://www.mozilla.org/MPL/ 9 | // 10 | // Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 11 | // ANY KIND, either express or implied. See the License for the specific language governing rights 12 | // and limitations under the License. 13 | // 14 | // The Original Code is uLogExcept.pas. 15 | // 16 | // The Initial Developer of the Original Code is Rodrigo Ruz V. 17 | // Portions created by Rodrigo Ruz V. are Copyright (C) 2011-2021 Rodrigo Ruz V. 18 | // All Rights Reserved. 19 | // 20 | // ************************************************************************************************* 21 | 22 | unit uLogExcept; 23 | 24 | interface 25 | 26 | Uses 27 | System.SysUtils, 28 | System.Classes; 29 | 30 | type 31 | TLogPreview = class 32 | private 33 | FLogStream: TStream; 34 | class var FLogFile: string; 35 | class procedure InitLogFile; static; 36 | public 37 | property LogStream: TStream read FLogStream write FLogStream; 38 | class procedure Add(const AMessage: string); overload; 39 | class procedure Add(const AException: Exception); overload; 40 | end; 41 | 42 | implementation 43 | 44 | uses 45 | uMisc, 46 | IOUtils; 47 | 48 | {$IFDEF DEBUG} 49 | {$DEFINE ENABLELOG} 50 | {$ENDIF} 51 | 52 | procedure AppendAllText(const FileName, Contents: string); 53 | {$IFDEF ENABLELOG} 54 | var 55 | LFileStream: TFileStream; 56 | LBuffer: TBytes; 57 | {$ENDIF} 58 | begin 59 | {$IFDEF ENABLELOG} 60 | if (TFile.Exists(FileName)) then 61 | LFileStream := TFileStream.Create(FileName, fmOpenReadWrite or fmShareDenyNone) 62 | else 63 | LFileStream := TFileStream.Create(FileName, fmCreate or fmShareDenyNone); 64 | 65 | try 66 | LFileStream.Seek(0, soFromEnd); 67 | LBuffer := TEncoding.ANSI.GetBytes(Contents); 68 | LFileStream.WriteBuffer(LBuffer, Length(LBuffer)); 69 | finally 70 | LFileStream.Free; 71 | end; 72 | {$ENDIF} 73 | end; 74 | 75 | { TLogException } 76 | 77 | class procedure TLogPreview.InitLogFile; 78 | begin 79 | if FLogFile = '' then 80 | FLogFile := IncludeTrailingPathDelimiter(GetTempDirectory) + 'SvgShellExtensions.log'; 81 | end; 82 | 83 | class procedure TLogPreview.Add(const AMessage: string); 84 | begin 85 | {$IFDEF ENABLELOG} 86 | try 87 | InitLogFile; 88 | //if (Copy(AMessage,1,4) = 'GDI+') then 89 | AppendAllText(FLogFile, FormatDateTime('hh:nn:ss.zzz', Now) + ' ' + AMessage + sLineBreak); 90 | except 91 | on e: EFOpenError do; 92 | end; 93 | {$ENDIF} 94 | end; 95 | 96 | class procedure TLogPreview.Add(const AException: Exception); 97 | begin 98 | try 99 | InitLogFile; 100 | AppendAllText(FLogFile, Format('%s %s StackTrace %s %s', [FormatDateTime('hh:nn:ss.zzz', Now), AException.Message, 101 | AException.StackTrace, sLineBreak])); 102 | except 103 | on e: EFOpenError do; 104 | end; 105 | end; 106 | 107 | initialization 108 | 109 | end. 110 | -------------------------------------------------------------------------------- /Source/uPreviewContainer.dfm: -------------------------------------------------------------------------------- 1 | object PreviewContainer: TPreviewContainer 2 | Left = 753 3 | Top = 443 4 | ClientHeight = 273 5 | ClientWidth = 296 6 | Color = clBtnFace 7 | Font.Charset = DEFAULT_CHARSET 8 | Font.Color = clWindowText 9 | Font.Height = -11 10 | Font.Name = 'Tahoma' 11 | Font.Style = [] 12 | OnCreate = FormCreate 13 | OnDestroy = FormDestroy 14 | TextHeight = 13 15 | end 16 | -------------------------------------------------------------------------------- /Source/uSVGPreviewHandler.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { SVG Shell Extensions: Shell extensions for SVG files } 4 | { (Preview Panel, Thumbnail Icon, SVG Editor) } 5 | { } 6 | { Copyright (c) 2021-2025 (Ethea S.r.l.) } 7 | { Author: Carlo Barazzetta } 8 | { } 9 | { https://github.com/EtheaDev/SVGShellExtensions } 10 | { } 11 | {******************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | { The Original Code is: } 26 | { Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler } 27 | { } 28 | { The Initial Developer of the Original Code is Rodrigo Ruz V. } 29 | { Portions created by Rodrigo Ruz V. are Copyright 2011-2021 Rodrigo Ruz V. } 30 | { All Rights Reserved. } 31 | {******************************************************************************} 32 | unit uSVGPreviewHandler; 33 | 34 | interface 35 | 36 | uses 37 | Classes, 38 | Controls, 39 | StdCtrls, 40 | SysUtils, 41 | uCommonPreviewHandler, 42 | uStreamPreviewHandler, 43 | uPreviewHandler; 44 | 45 | type 46 | TSVGPreviewHandler = class(TBasePreviewHandler) 47 | public 48 | constructor Create(AParent: TWinControl); override; 49 | end; 50 | 51 | const 52 | MySVG_PreviewHandlerGUID_64: TGUID = '{742ADF0E-3C4D-4F46-9E91-236BF0194C21}'; 53 | MySVG_PreviewHandlerGUID_32: TGUID = '{203BA25A-6765-4537-B7F9-5A617EC5E193}'; 54 | 55 | implementation 56 | 57 | Uses 58 | uLogExcept, 59 | SynEdit, 60 | Windows, 61 | Forms, 62 | uMisc; 63 | type 64 | TWinControlClass = class(TWinControl); 65 | 66 | constructor TSVGPreviewHandler.Create(AParent: TWinControl); 67 | begin 68 | TLogPreview.Add('TSVGPreviewHandler.Create'); 69 | inherited Create(AParent); 70 | TLogPreview.Add('TSVGPreviewHandler Done'); 71 | end; 72 | 73 | end. 74 | -------------------------------------------------------------------------------- /Source/uStackTrace.pas: -------------------------------------------------------------------------------- 1 | // ************************************************************************************************** 2 | // 3 | // Unit uStackTrace 4 | // unit for the Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler 5 | // 6 | // The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 7 | // you may not use this file except in compliance with the License. You may obtain a copy of the 8 | // License at http://www.mozilla.org/MPL/ 9 | // 10 | // Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 11 | // ANY KIND, either express or implied. See the License for the specific language governing rights 12 | // and limitations under the License. 13 | // 14 | // The Original Code is uStackTrace.pas. 15 | // 16 | // The Initial Developer of the Original Code is Rodrigo Ruz V. 17 | // Portions created by Rodrigo Ruz V. are Copyright (C) 2011-2021 Rodrigo Ruz V. 18 | // All Rights Reserved. 19 | // 20 | // ************************************************************************************************* 21 | 22 | unit uStackTrace; 23 | 24 | interface 25 | 26 | uses 27 | SysUtils, Classes, JclDebug; 28 | 29 | implementation 30 | 31 | function GetExceptionStackInfoProc(P: PExceptionRecord): Pointer; 32 | begin 33 | Result := TJclStackInfoList.Create(False, 0, nil); 34 | end; 35 | 36 | function GetStackInfoStringProc(Info: Pointer): string; 37 | var 38 | StackInfoList: TJclStackInfoList; 39 | List: TStringList; 40 | begin 41 | if Info = nil then 42 | Exit; 43 | List := TStringList.Create; 44 | try 45 | StackInfoList := TJclStackInfoList(Info); 46 | StackInfoList.AddToStrings(List); 47 | Result := List.Text; 48 | finally 49 | List.Free; 50 | end; 51 | end; 52 | 53 | procedure CleanUpStackInfoProc(Info: Pointer); 54 | begin 55 | FreeAndNil(TJclStackInfoList(Info)); 56 | end; 57 | 58 | initialization 59 | 60 | if JclStartExceptionTracking then 61 | begin 62 | Exception.GetExceptionStackInfoProc := GetExceptionStackInfoProc; 63 | Exception.GetStackInfoStringProc := GetStackInfoStringProc; 64 | Exception.CleanUpStackInfoProc := CleanUpStackInfoProc; 65 | end; 66 | 67 | finalization 68 | 69 | if JclExceptionTrackingActive then 70 | begin 71 | Exception.GetExceptionStackInfoProc := nil; 72 | Exception.GetStackInfoStringProc := nil; 73 | Exception.CleanUpStackInfoProc := nil; 74 | JclStopExceptionTracking; 75 | end; 76 | 77 | end. 78 | -------------------------------------------------------------------------------- /Source/uStreamAdapter.pas: -------------------------------------------------------------------------------- 1 | // ************************************************************************************************** 2 | // 3 | // Unit uStreamAdapter 4 | // unit for the Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler 5 | // 6 | // The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 7 | // you may not use this file except in compliance with the License. You may obtain a copy of the 8 | // License at http://www.mozilla.org/MPL/ 9 | // 10 | // Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 11 | // ANY KIND, either express or implied. See the License for the specific language governing rights 12 | // and limitations under the License. 13 | // 14 | // The Original Code is uStreamPreviewHandler.pas. 15 | // 16 | // The Initial Developer of the Original Code is Rodrigo Ruz V. 17 | // Portions created by Rodrigo Ruz V. are Copyright (C) 2011-2021 Rodrigo Ruz V. 18 | // All Rights Reserved. 19 | // 20 | // ************************************************************************************************* 21 | 22 | unit uStreamAdapter; 23 | 24 | interface 25 | 26 | uses 27 | ComObj, 28 | ActiveX, 29 | Classes; 30 | 31 | type 32 | TIStreamAdapter = class(TStream) 33 | private 34 | FBaseStream: IStream; 35 | protected 36 | function GetSize: Int64; override; 37 | procedure SetSize(NewSize: Longint); override; 38 | procedure SetSize(const NewSize: Int64); override; 39 | public 40 | constructor Create(Stream: IStream); 41 | function Read(var Buffer; Count: Longint): Longint; override; 42 | function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; override; 43 | property BaseStream: IStream read FBaseStream; 44 | end; 45 | 46 | implementation 47 | 48 | uses 49 | PropSys, 50 | SysUtils; 51 | 52 | resourcestring 53 | sSetSizeNotImplemented = '%s.SetSize not implemented'; 54 | 55 | { TIStreamAdapter } 56 | constructor TIStreamAdapter.Create(Stream: IStream); 57 | begin 58 | inherited Create; 59 | FBaseStream := Stream; 60 | end; 61 | 62 | function TIStreamAdapter.GetSize: Int64; 63 | var 64 | statStg: TStatStg; 65 | grfStatFlag: Longint; 66 | begin 67 | Result := -1; 68 | grfStatFlag := STATFLAG_NONAME; 69 | if BaseStream.Stat(statStg, grfStatFlag) = S_OK then 70 | Result := statStg.cbSize; 71 | end; 72 | 73 | function TIStreamAdapter.Read(var Buffer; Count: Longint): Longint; 74 | begin 75 | BaseStream.Read(@Buffer, Count, @Result); 76 | end; 77 | 78 | function TIStreamAdapter.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; 79 | var 80 | LResult: LargeUInt; 81 | begin 82 | BaseStream.Seek(Offset, Ord(Origin), LResult); 83 | Result := LResult; 84 | end; 85 | 86 | procedure TIStreamAdapter.SetSize(const NewSize: Int64); 87 | begin 88 | raise EStreamError.CreateResFmt(@sSetSizeNotImplemented, [Classname]); 89 | end; 90 | 91 | procedure TIStreamAdapter.SetSize(NewSize: Longint); 92 | begin 93 | raise EStreamError.CreateResFmt(@sSetSizeNotImplemented, [Classname]); 94 | end; 95 | 96 | end. 97 | -------------------------------------------------------------------------------- /Source/uStreamPreviewHandler.pas: -------------------------------------------------------------------------------- 1 | // ************************************************************************************************** 2 | // 3 | // Unit uStreamPreviewHandler 4 | // unit for the Delphi Preview Handler https://github.com/RRUZ/delphi-preview-handler 5 | // 6 | // The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 7 | // you may not use this file except in compliance with the License. You may obtain a copy of the 8 | // License at http://www.mozilla.org/MPL/ 9 | // 10 | // Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 11 | // ANY KIND, either express or implied. See the License for the specific language governing rights 12 | // and limitations under the License. 13 | // 14 | // The Original Code is uStreamPreviewHandler.pas. 15 | // 16 | // The Initial Developer of the Original Code is Rodrigo Ruz V. 17 | // Portions created by Rodrigo Ruz V. are Copyright (C) 2011-2021 Rodrigo Ruz V. 18 | // All Rights Reserved. 19 | // 20 | // ************************************************************************************************* 21 | 22 | unit uStreamPreviewHandler; 23 | 24 | interface 25 | 26 | uses 27 | ComObj, 28 | ActiveX, 29 | Classes, 30 | uStreamAdapter, 31 | uPreviewHandler; 32 | 33 | type 34 | TStreamPreviewHandler = class abstract(TPreviewHandler) 35 | public 36 | class function GetComClass: TComClass; override; final; 37 | end; 38 | 39 | implementation 40 | 41 | uses 42 | PropSys, 43 | SysUtils, 44 | uLogExcept, 45 | uMisc; 46 | 47 | type 48 | TComStreamPreviewHandler = class(TComPreviewHandler, IInitializeWithStream) 49 | // strict private 50 | function IInitializeWithStream.Initialize = IInitializeWithStream_Initialize; 51 | function IInitializeWithStream_Initialize(const pstream: IStream; grfMode: Cardinal): HRESULT; stdcall; 52 | private 53 | FIStream: IStream; 54 | FMode: Cardinal; 55 | function GetPreviewHandler: TStreamPreviewHandler; 56 | protected 57 | procedure InternalUnload; override; 58 | procedure InternalDoPreview; override; 59 | property PreviewHandler: TStreamPreviewHandler read GetPreviewHandler; 60 | property Mode: Cardinal read FMode write FMode; 61 | property IStream: IStream read FIStream write FIStream; 62 | end; 63 | 64 | resourcestring 65 | sSetSizeNotImplemented = '%s.SetSize not implemented'; 66 | 67 | { TComStreamPreviewHandler } 68 | function TComStreamPreviewHandler.GetPreviewHandler: TStreamPreviewHandler; 69 | begin 70 | Result := inherited PreviewHandler as TStreamPreviewHandler; 71 | end; 72 | 73 | function TComStreamPreviewHandler.IInitializeWithStream_Initialize(const pstream: IStream; grfMode: Cardinal): HRESULT; 74 | begin 75 | TLogPreview.Add('TComStreamPreviewHandler.IInitializeWithStream_Initialize Init'); 76 | Initialize_GDI; 77 | FIStream := pstream; 78 | FMode := grfMode; 79 | Result := S_OK; 80 | TLogPreview.Add('TComStreamPreviewHandler.IInitializeWithStream_Initialize Done'); 81 | end; 82 | 83 | procedure TComStreamPreviewHandler.InternalUnload; 84 | begin 85 | TLogPreview.Add('TComStreamPreviewHandler.InternalUnload'); 86 | FIStream := nil; 87 | end; 88 | 89 | procedure TComStreamPreviewHandler.InternalDoPreview; 90 | var 91 | AStream: TIStreamAdapter; 92 | begin 93 | TLogPreview.Add('TComStreamPreviewHandler.InternalDoPreview'); 94 | AStream := TIStreamAdapter.Create(FIStream); 95 | try 96 | CheckContainer; 97 | Container.LoadFromStream(AStream); 98 | Container.Show; 99 | finally 100 | AStream.Free; 101 | end; 102 | end; 103 | 104 | { TStreamPreviewHandler } 105 | class function TStreamPreviewHandler.GetComClass: TComClass; 106 | begin 107 | Result := TComStreamPreviewHandler; 108 | end; 109 | 110 | end. 111 | 112 | -------------------------------------------------------------------------------- /Unregister_Register.cmd: -------------------------------------------------------------------------------- 1 | echo Unregister dll 2 | call D:\ETHEA\SVGShellExtensions\Bin32\UnRegister32bit.bat 3 | call D:\ETHEA\SVGShellExtensions\Bin64\UnRegister64bit.bat 4 | 5 | echo Register dll 6 | call D:\ETHEA\SVGShellExtensions\Bin32\Register32bit.bat 7 | call D:\ETHEA\SVGShellExtensions\Bin64\Register64bit.bat 8 | 9 | pause -------------------------------------------------------------------------------- /Unregister_Register_Program_Files.cmd: -------------------------------------------------------------------------------- 1 | echo Unregister dll 2 | %systemroot%\SysWoW64\regsvr32 /u "%ProgramFiles%\Ethea\SVGShellExtensions\SVGShellExtensions32.dll" 3 | %systemroot%\System32\regsvr32 /u "%ProgramFiles%\Ethea\SVGShellExtensions\SVGShellExtensions.dll" 4 | 5 | echo Register dll 6 | %systemroot%\SysWoW64\regsvr32 "%ProgramFiles%\Ethea\SVGShellExtensions\SVGShellExtensions32.dll" 7 | %systemroot%\System32\regsvr32 "%ProgramFiles%\Ethea\SVGShellExtensions\SVGShellExtensions.dll" 8 | 9 | pause --------------------------------------------------------------------------------