├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ └── bug_report.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── Images ├── Logo-Icon.ico ├── Logo-Nuget.png ├── Logo.docx ├── Logo.png ├── NewLogo.png ├── Sample11-AvalonDock.png ├── Sample11-NOTBL.png ├── Sample12-BarChart.png ├── Sample12-FIXEDTBL-BYTESHIFT.png ├── Sample13-FindDialog.png ├── Sample14-FindReplaceDialog.png ├── Sample15-CustomBackgroundBlock.png ├── Sample15-FindReplaceDialog.png ├── Sample9-TBL.png ├── TBLExplain.docx └── TBLExplain.png ├── LICENSE ├── README.md ├── SECURITY.md ├── Sources ├── .editorconfig ├── MigrationBackup │ └── 74a5b0ae │ │ └── Samples │ │ └── WpfHexEditor.Sample.CSharp │ │ ├── WpfHexEditor.Sample.CSharp.csproj │ │ └── packages.config ├── Samples │ ├── WPFHexEditor.Sample.CSharp │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Configs │ │ │ ├── NET45 │ │ │ │ └── App.config │ │ │ └── NET47 │ │ │ │ └── App.config │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── Resources │ │ │ └── Icon │ │ │ │ ├── 0x-Icon.ico │ │ │ │ ├── Close-Icon.ico │ │ │ │ ├── Logo-Icon.ico │ │ │ │ ├── Open-File-Icon.ico │ │ │ │ └── Save-Icon.ico │ │ └── WpfHexEditor.Sample.csproj │ ├── WpfHexEditor.Sample.AvalonDock │ │ ├── App.config │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── WpfHexEditor.Sample.AvalonDock.csproj │ │ └── packages.config │ ├── WpfHexEditor.Sample.BarChart │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── AssemblyInfo.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ └── WpfHexEditor.Sample.BarChart.csproj │ ├── WpfHexEditor.Sample.BinaryFilesDifference │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── AssemblyInfo.cs │ │ ├── BlockListItem.xaml │ │ ├── BlockListItem.xaml.cs │ │ ├── ByteDifferenceListItem.xaml │ │ ├── ByteDifferenceListItem.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ └── WpfHexEditor.Sample.BinaryFilesDifference.csproj │ ├── WpfHexEditor.Sample.InsertByteAnywhere │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── AssemblyInfo.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ └── WpfHexEditor.Sample.InsertByteAnywhere.csproj │ ├── WpfHexEditor.Sample.VB │ │ ├── App.config │ │ ├── Application.xaml │ │ ├── Application.xaml.vb │ │ ├── GlobalSuppressions.vb │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.vb │ │ ├── My Project │ │ │ ├── AssemblyInfo.vb │ │ │ ├── MyExtensions │ │ │ │ └── MyWpfExtension.vb │ │ │ ├── Resources.Designer.vb │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.vb │ │ │ └── Settings.settings │ │ ├── Resources │ │ │ └── Icon │ │ │ │ ├── 0x-Icon.ico │ │ │ │ ├── Close-Icon.ico │ │ │ │ ├── Logo-Icon.ico │ │ │ │ ├── Open-File-Icon.ico │ │ │ │ └── Save-Icon.ico │ │ └── WpfHexEditor.Sample.VB.vbproj │ └── WpfHexEditor.Sample.Winform │ │ ├── App.config │ │ ├── MainForm.Designer.cs │ │ ├── MainForm.cs │ │ ├── MainForm.resx │ │ ├── Program.cs │ │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ │ └── WpfHexEditor.Sample.Winform.csproj ├── WPFHexaEditor │ ├── BaseByte.cs │ ├── Core │ │ ├── BookMark.cs │ │ ├── Bytes │ │ │ ├── ByteConverters.cs │ │ │ ├── ByteDifference.cs │ │ │ ├── ByteModified.cs │ │ │ ├── ByteProvider.cs │ │ │ ├── Byte_16bit.cs │ │ │ ├── Byte_32bit.cs │ │ │ └── Byte_8bit.cs │ │ ├── Caret.cs │ │ ├── CharacterTable │ │ │ ├── DTE.cs │ │ │ ├── Enum.cs │ │ │ └── TBLStream.cs │ │ ├── ConstantReadOnly.cs │ │ ├── Converters │ │ │ ├── BoolInverterConverter.cs │ │ │ ├── BooleanToVisibilityConverter.cs │ │ │ ├── ByteToHexStringConverter.cs │ │ │ ├── HexToLongStringConverter.cs │ │ │ ├── LongToHexStringConverter.cs │ │ │ ├── PathToFilenameConverter.cs │ │ │ └── VisibilityToBooleanConverter.cs │ │ ├── CustomBackgroundBlock.cs │ │ ├── Enumeration.cs │ │ ├── EventArguments │ │ │ ├── ByteDifferenceEventArgs.cs │ │ │ ├── ByteEventArgs.cs │ │ │ └── CustomBackgroundBlockEventArgs.cs │ │ ├── Interfaces │ │ │ ├── IByte.cs │ │ │ ├── IByteControl.cs │ │ │ └── IByteModified.cs │ │ ├── KeyValidator.cs │ │ ├── MethodExtention │ │ │ ├── ApplicationExtention.cs │ │ │ ├── ByteArrayExtention.cs │ │ │ ├── DoubleExtension.cs │ │ │ ├── StringExtension.cs │ │ │ ├── TrackExtention.cs │ │ │ └── WithMethodExtention.cs │ │ ├── Native │ │ │ └── NativeMethods.cs │ │ └── RandomBrushes.cs │ ├── Dialog │ │ ├── FindReplaceWindow.xaml │ │ ├── FindReplaceWindow.xaml.cs │ │ ├── FindWindow.xaml │ │ ├── FindWindow.xaml.cs │ │ ├── GiveByteWindow.xaml │ │ ├── GiveByteWindow.xaml.cs │ │ ├── ReplaceByteWindow.xaml │ │ └── ReplaceByteWindow.xaml.cs │ ├── FastTextLine.cs │ ├── GlobalSuppressions.cs │ ├── HexBox.xaml │ ├── HexBox.xaml.cs │ ├── HexByte.cs │ ├── HexEditor.xaml │ ├── HexEditor.xaml.cs │ ├── LICENSE.txt │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.fr-CA.Designer.cs │ │ ├── Resources.fr-CA.resx │ │ ├── Resources.pl-PL.Designer.cs │ │ ├── Resources.pl-PL.resx │ │ ├── Resources.pt-BR.Designer.cs │ │ ├── Resources.pt-BR.resx │ │ ├── Resources.resx │ │ ├── Resources.ru-RU.Designer.cs │ │ ├── Resources.ru-RU.resx │ │ ├── Resources.zh-CN.resx │ │ ├── Resources.zh-CN1.Designer.cs │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── Resources │ │ ├── Dictionary │ │ │ ├── BrushesDictionary.xaml │ │ │ ├── MiscelanousDictionary.xaml │ │ │ └── ToolTipDictionary.xaml │ │ ├── EBCDIC-NoSpecialChar.tbl │ │ ├── EBCDIC.tbl │ │ └── Icon │ │ │ ├── 0x-Icon.ico │ │ │ ├── Add-Bookmark-Icon.ico │ │ │ ├── Clear-Bookmark-Icon.ico │ │ │ ├── Copy-Icon.ico │ │ │ ├── Delete-Icon.ico │ │ │ ├── Find-Icon.ico │ │ │ ├── Logo-Icon.ico │ │ │ ├── Logo-Icon.png │ │ │ ├── Paste-Icon.ico │ │ │ ├── Remove-Bookmark-Icon.ico │ │ │ ├── Sans titre.png │ │ │ ├── Settings-Icon.ico │ │ │ └── Undo-Icon.ico │ ├── StringByte.cs │ └── WpfHexEditorCore.csproj └── WpfHexEditorControl.sln ├── _config.yml └── readme-nuget.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: abbaye 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | 24 | # Visual Studio 2015 cache/options directory 25 | .vs/ 26 | # Uncomment if you have tasks that create the project's static files in wwwroot 27 | #wwwroot/ 28 | 29 | # MSTest test Results 30 | [Tt]est[Rr]esult*/ 31 | [Bb]uild[Ll]og.* 32 | 33 | # NUNIT 34 | *.VisualState.xml 35 | TestResult.xml 36 | 37 | # Build Results of an ATL Project 38 | [Dd]ebugPS/ 39 | [Rr]eleasePS/ 40 | dlldata.c 41 | 42 | # DNX 43 | project.lock.json 44 | artifacts/ 45 | 46 | *_i.c 47 | *_p.c 48 | *_i.h 49 | *.ilk 50 | *.meta 51 | *.obj 52 | *.pch 53 | *.pdb 54 | *.pgc 55 | *.pgd 56 | *.rsp 57 | *.sbr 58 | *.tlb 59 | *.tli 60 | *.tlh 61 | *.tmp 62 | *.tmp_proj 63 | *.log 64 | *.vspscc 65 | *.vssscc 66 | .builds 67 | *.pidb 68 | *.svclog 69 | *.scc 70 | 71 | # Chutzpah Test files 72 | _Chutzpah* 73 | 74 | # Visual C++ cache files 75 | ipch/ 76 | *.aps 77 | *.ncb 78 | *.opendb 79 | *.opensdf 80 | *.sdf 81 | *.cachefile 82 | 83 | # Visual Studio profiler 84 | *.psess 85 | *.vsp 86 | *.vspx 87 | *.sap 88 | 89 | # TFS 2012 Local Workspace 90 | $tf/ 91 | 92 | # Guidance Automation Toolkit 93 | *.gpState 94 | 95 | # ReSharper is a .NET coding add-in 96 | _ReSharper*/ 97 | *.[Rr]e[Ss]harper 98 | *.DotSettings.user 99 | 100 | # JustCode is a .NET coding add-in 101 | .JustCode 102 | 103 | # TeamCity is a build add-in 104 | _TeamCity* 105 | 106 | # DotCover is a Code Coverage Tool 107 | *.dotCover 108 | 109 | # NCrunch 110 | _NCrunch_* 111 | .*crunch*.local.xml 112 | nCrunchTemp_* 113 | 114 | # MightyMoose 115 | *.mm.* 116 | AutoTest.Net/ 117 | 118 | # Web workbench (sass) 119 | .sass-cache/ 120 | 121 | # Installshield output folder 122 | [Ee]xpress/ 123 | 124 | # DocProject is a documentation generator add-in 125 | DocProject/buildhelp/ 126 | DocProject/Help/*.HxT 127 | DocProject/Help/*.HxC 128 | DocProject/Help/*.hhc 129 | DocProject/Help/*.hhk 130 | DocProject/Help/*.hhp 131 | DocProject/Help/Html2 132 | DocProject/Help/html 133 | 134 | # Click-Once directory 135 | publish/ 136 | 137 | # Publish Web Output 138 | *.[Pp]ublish.xml 139 | *.azurePubxml 140 | # TODO: Comment the next line if you want to checkin your web deploy settings 141 | # but database connection strings (with potential passwords) will be unencrypted 142 | *.pubxml 143 | *.publishproj 144 | 145 | # NuGet Packages 146 | *.nupkg 147 | # The packages folder can be ignored because of Package Restore 148 | **/packages/* 149 | # except build/, which is used as an MSBuild target. 150 | !**/packages/build/ 151 | # Uncomment if necessary however generally it will be regenerated when needed 152 | #!**/packages/repositories.config 153 | # NuGet v3's project.json files produces more ignoreable files 154 | *.nuget.props 155 | *.nuget.targets 156 | 157 | # Microsoft Azure Build Output 158 | csx/ 159 | *.build.csdef 160 | 161 | # Microsoft Azure Emulator 162 | ecf/ 163 | rcf/ 164 | 165 | # Microsoft Azure ApplicationInsights config file 166 | ApplicationInsights.config 167 | 168 | # Windows Store app package directory 169 | AppPackages/ 170 | BundleArtifacts/ 171 | 172 | # Visual Studio cache files 173 | # files ending in .cache can be ignored 174 | *.[Cc]ache 175 | # but keep track of directories ending in .cache 176 | !*.[Cc]ache/ 177 | 178 | # Others 179 | ClientBin/ 180 | ~$* 181 | *~ 182 | *.dbmdl 183 | *.dbproj.schemaview 184 | *.pfx 185 | *.publishsettings 186 | node_modules/ 187 | orleans.codegen.cs 188 | 189 | # RIA/Silverlight projects 190 | Generated_Code/ 191 | 192 | # Backup & report files from converting an old project file 193 | # to a newer Visual Studio version. Backup files are not needed, 194 | # because we have git ;-) 195 | _UpgradeReport_Files/ 196 | Backup*/ 197 | UpgradeLog*.XML 198 | UpgradeLog*.htm 199 | 200 | # SQL Server files 201 | *.mdf 202 | *.ldf 203 | 204 | # Business Intelligence projects 205 | *.rdl.data 206 | *.bim.layout 207 | *.bim_*.settings 208 | 209 | # Microsoft Fakes 210 | FakesAssemblies/ 211 | 212 | # GhostDoc plugin setting file 213 | *.GhostDoc.xml 214 | 215 | # Node.js Tools for Visual Studio 216 | .ntvs_analysis.dat 217 | 218 | # Visual Studio 6 build log 219 | *.plg 220 | 221 | # Visual Studio 6 workspace options file 222 | *.opt 223 | 224 | # Visual Studio LightSwitch build output 225 | **/*.HTMLClient/GeneratedArtifacts 226 | **/*.DesktopClient/GeneratedArtifacts 227 | **/*.DesktopClient/ModelManifest.xml 228 | **/*.Server/GeneratedArtifacts 229 | **/*.Server/ModelManifest.xml 230 | _Pvt_Extensions 231 | 232 | # Paket dependency manager 233 | .paket/paket.exe 234 | 235 | # FAKE - F# Make 236 | .fake/ 237 | /WPFHexaEditor.Control/Properties 238 | /WPFHexaEditor.Control/Properties 239 | /WPFHexaEditor.Control/Properties/resources1.Designer.cs 240 | /WPFHexaEditor.Control/Properties/Resources.fr-CA.resx 241 | /WPFHexaEditorExample/Window1.xaml 242 | 243 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at derektremblay666@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | You are welcome for help in the project :) 2 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Expected Behavior 2 | 3 | 4 | ## Actual Behavior 5 | 6 | 7 | ## Steps to Reproduce the Problem 8 | 9 | 1. 10 | 1. 11 | 1. 12 | 13 | -------------------------------------------------------------------------------- /Images/Logo-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Logo-Icon.ico -------------------------------------------------------------------------------- /Images/Logo-Nuget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Logo-Nuget.png -------------------------------------------------------------------------------- /Images/Logo.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Logo.docx -------------------------------------------------------------------------------- /Images/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Logo.png -------------------------------------------------------------------------------- /Images/NewLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/NewLogo.png -------------------------------------------------------------------------------- /Images/Sample11-AvalonDock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample11-AvalonDock.png -------------------------------------------------------------------------------- /Images/Sample11-NOTBL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample11-NOTBL.png -------------------------------------------------------------------------------- /Images/Sample12-BarChart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample12-BarChart.png -------------------------------------------------------------------------------- /Images/Sample12-FIXEDTBL-BYTESHIFT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample12-FIXEDTBL-BYTESHIFT.png -------------------------------------------------------------------------------- /Images/Sample13-FindDialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample13-FindDialog.png -------------------------------------------------------------------------------- /Images/Sample14-FindReplaceDialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample14-FindReplaceDialog.png -------------------------------------------------------------------------------- /Images/Sample15-CustomBackgroundBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample15-CustomBackgroundBlock.png -------------------------------------------------------------------------------- /Images/Sample15-FindReplaceDialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample15-FindReplaceDialog.png -------------------------------------------------------------------------------- /Images/Sample9-TBL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/Sample9-TBL.png -------------------------------------------------------------------------------- /Images/TBLExplain.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/TBLExplain.docx -------------------------------------------------------------------------------- /Images/TBLExplain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Images/TBLExplain.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [![NuGet](https://img.shields.io/badge/Nuget-v2.1.5-red.svg)](https://www.nuget.org/packages/WPFHexaEditor/) 4 | [![NetFramework](https://img.shields.io/badge/.Net%20Framework-4.7/4.8-green.svg)](https://www.microsoft.com/net/download/windows) 5 | [![NetFramework](https://img.shields.io/badge/.Net%20-5.0-green.svg)](https://www.microsoft.com/net/download/windows) 6 | [![NetFramework](https://img.shields.io/badge/Language-C%23%207.0+-orange.svg)](https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/) 7 | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/abbaye/WpfHexEditorControl/blob/master/LICENSE) 8 | 9 | Wpf Hexeditor is a powerful and fully customisable user control for editing file or stream as hexadecimal, decimal and binary. 10 | 11 | You can use it very easily in Wpf or WinForm application. Download the code and test the Wpf (C#, VB.NET) and WinForm (C#) samples. 12 | 13 | The control are localized in English, French, Russian, Polish, Portuguese and Chinese 14 | 15 | ### ⭐ You want to say thank or just like project ? 16 | 17 | Hexeditor control is totaly free and can be used in all project you want like open source and commercial applications. I make it in my free time and a few colaborators help me when they can... Please hit the ⭐️ button or fork and I will be very happy ;) I accept help contribution... 18 | 19 | ### 🖼 Screenshots 20 | 21 | Sample with standard ASCII character table 22 | ![example](Images/Sample11-NOTBL.png?raw=true) 23 | 24 | Sample with custom character table (TBL) on SNES Final Fantasy II US 25 | ![example](Images/Sample9-TBL.png?raw=true) 26 | 27 | Sample use ByteShiftLeft and BytePerLine properties with custom TBL for edit fixed lenght table... 28 | ![example](Images/Sample12-FIXEDTBL-BYTESHIFT.png?raw=true) 29 | 30 | Sample use of find and find/replace dialog... 31 | ![example](Images/Sample15-FindReplaceDialog.png?raw=true) 32 | 33 | 34 | ⭐ Sample use of BarChart representation of the data ... 35 | ![example](Images/Sample12-BarChart.png?raw=true) 36 | 37 | ⭐ Sample use of control in AvalonDock ... 38 | 39 | ![example](Images/Sample11-AvalonDock.png?raw=true) 40 | 41 | ⭐ Sample use of CustomBackgroundBlock in the "Find difference bytes sample" ... 42 | ![example](Images/Sample15-CustomBackgroundBlock.png?raw=true) 43 | 44 | ## 🧾 What is TBL (custom character table) 45 | The TBL are small plaintext .tbl files that link every hexadecimal value with a character, which proves most useful when reading and changing text data. Wpf HexEditor support .tbl and you can define your custom character table as you want. 46 | 47 | Unicode TBL are supported. For use put value at the right of equal (=) like this (0401=塞西尔) or (42=Д) in you plaintext .tbl file. 48 | 49 | ![example](Images/TBLExplain.png?raw=true) 50 | 51 | ### 🛒 Somes features 52 | 53 | ⭐ = New features 54 | 55 | - ⭐ AvalonDock support 56 | - ⭐ Edit in hexadecimal, decimal and binary 57 | - ⭐ Edit in 8bit, 16bit and 32bit 58 | - ⭐ Edit in LoHi or HiLo 59 | - ⭐ View as BarChart (see in screenshot. will evoluate in future) 60 | - Find and Find/Replace dialog 61 | - Append byte at end of file 62 | - Include HexBox, an Hexadecimal TextBox with spinner 63 | - Fill selection (or another array) with byte. 64 | - Support of common key in window like CTRL+C, CTRL+V, CTRL+Z, CTRL+Y, CTRL+A, ESC... 65 | - Copy to clipboard as code like C#, VB.Net, C, Java, F# ... 66 | - Support custom .TBL character table file insted of default ASCII. 67 | - Unlimited Undo / Redo 68 | - Finds methods (FindFirst, FindNext, FindAll, FindLast, FindSelection) and overload for (string, byte[]) 69 | - Replace methods (ReplaceFirst, ReplaceNext, ReplaceAll) and overload for (string, byte[]) 70 | - Highlight byte with somes find methods 71 | - Bookmark 72 | - Group byte in block of 2,4,6,8 bytes... 73 | - Show data as hexadecimal or decimal 74 | - Possibility to view only a part of file/stream in editor and dont loose anychange when used it (AllowVisualByteAdress...) 75 | - Zoom / UnZoom hexeditor content (50% to 200%) 76 | - Positility to show or not the bytes are deleted. 77 | - Customize the color of bytes, TBL, background, header, and much more ... 78 | - ... 79 | 80 | ### 👏 How to use 81 | Add a reference to `WPFHexaEditor.dll` from your project, then add the following namespace to your XAML: 82 | 83 | ```xaml 84 | xmlns:control="clr-namespace:WpfHexaEditor;assembly=WPFHexaEditor" 85 | ``` 86 | 87 | Insert the control like this in your XAML...: 88 | 89 | ```xaml 90 | 91 | 92 | 93 | 94 | ``` 95 | 96 | --- 97 | ✨ Wpf HexEditor user control, by Derek Tremblay (derektremblay666@gmail.com) coded for your fun! 😊🤟 98 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /Sources/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # CS8509: L'expression switch ne prend pas en charge toutes les valeurs possibles de son type d'entrée (elle n'est pas exhaustive). 4 | dotnet_diagnostic.CS8509.severity = none 5 | -------------------------------------------------------------------------------- /Sources/MigrationBackup/74a5b0ae/Samples/WpfHexEditor.Sample.CSharp/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/App.xaml.cs: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////// 2 | // Apache 2.0 - 2016-2018 3 | // Author : Derek Tremblay (derektremblay666@gmail.com) 4 | ////////////////////////////////////////////// 5 | 6 | using System.Runtime.InteropServices; 7 | using System.Windows.Threading; 8 | 9 | namespace WPFHexaEditorExample 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App 15 | { 16 | private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 17 | { 18 | if (e.Exception is COMException comException && comException.ErrorCode == -2147221040) 19 | e.Handled = true; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Configs/NET45/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | WPF HexEditor control 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Configs/NET47/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | WPF HexEditor control 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////// 2 | // Apache 2.0 - 2016-2020 3 | // Author : Derek Tremblay (derektremblay666@gmail.com) 4 | ////////////////////////////////////////////// 5 | 6 | using System.Runtime.InteropServices; 7 | using System.Windows; 8 | 9 | // Setting ComVisible to false makes the types in this assembly not visible 10 | // to COM components. If you need to access a type in this assembly from 11 | // COM, set the ComVisible attribute to true on that type. 12 | [assembly: ComVisible(false)] 13 | 14 | [assembly: ThemeInfo( 15 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 16 | //(used if a resource is not found in the page, 17 | // or application resource dictionaries) 18 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 19 | //(used if a resource is not found in the page, 20 | // app, or any theme specific resource dictionaries) 21 | )] 22 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WPFHexaEditorExample.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WPFHexaEditorExample.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized string similar to test. 65 | /// 66 | internal static string testString { 67 | get { 68 | return ResourceManager.GetString("testString", resourceCulture); 69 | } 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | test 122 | 123 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Ce code a été généré par un outil. 4 | // Version du runtime :4.0.30319.42000 5 | // 6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si 7 | // le code est régénéré. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WpfHexEditor.Sample.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("Wpf HexEditor control c# sample")] 29 | public string ApplicationName { 30 | get { 31 | return ((string)(this["ApplicationName"])); 32 | } 33 | set { 34 | this["ApplicationName"] = value; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Wpf HexEditor control c# sample 7 | 8 | 9 | -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/0x-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/0x-Icon.ico -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Close-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Close-Icon.ico -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Logo-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Logo-Icon.ico -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Open-File-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Open-File-Icon.ico -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Save-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbaye/WpfHexEditorControl/835347edd04bda516e4e97ae748535e48eb7af69/Sources/Samples/WPFHexEditor.Sample.CSharp/Resources/Icon/Save-Icon.ico -------------------------------------------------------------------------------- /Sources/Samples/WPFHexEditor.Sample.CSharp/WpfHexEditor.Sample.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | net70-windows 6 | true 7 | 8 | 9 | 10 | TRACE; 11 | NU1605 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 | True 37 | True 38 | Settings.settings 39 | 40 | 41 | 42 | 43 | 44 | SettingsSingleFileGenerator 45 | Settings.Designer.cs 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Sources/Samples/WpfHexEditor.Sample.AvalonDock/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Sources/Samples/WpfHexEditor.Sample.AvalonDock/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | -------------------------------------------------------------------------------- /Sources/Samples/WpfHexEditor.Sample.AvalonDock/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace WpfHexEditor.Sample.AvalonDock 4 | { 5 | /// 6 | /// Logique d'interaction pour App.xaml 7 | /// 8 | public partial class App : Application 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Sources/Samples/WpfHexEditor.Sample.AvalonDock/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 | 42 | 48 | 50 | 51 |