initial commit
authorJan Altensen <info@stricted.net>
Fri, 21 Dec 2018 03:00:56 +0000 (04:00 +0100)
committerJan Altensen <info@stricted.net>
Fri, 21 Dec 2018 03:00:56 +0000 (04:00 +0100)
Change-Id: I1133bd665f0a5458950597cf2d5e097838b7f821

19 files changed:
.gitattributes [new file with mode: 0644]
.gitignore [new file with mode: 0644]
ROM0Split.sln [new file with mode: 0644]
ROM0Split/App.config [new file with mode: 0644]
ROM0Split/App.xaml [new file with mode: 0644]
ROM0Split/App.xaml.cs [new file with mode: 0644]
ROM0Split/Implementations/DelegateCommand.cs [new file with mode: 0644]
ROM0Split/Implementations/SuperViewModel.cs [new file with mode: 0644]
ROM0Split/MainWindow.xaml [new file with mode: 0644]
ROM0Split/MainWindow.xaml.cs [new file with mode: 0644]
ROM0Split/Model/MainWindowModel.cs [new file with mode: 0644]
ROM0Split/Properties/AssemblyInfo.cs [new file with mode: 0644]
ROM0Split/Properties/Resources.Designer.cs [new file with mode: 0644]
ROM0Split/Properties/Resources.resx [new file with mode: 0644]
ROM0Split/Properties/Settings.Designer.cs [new file with mode: 0644]
ROM0Split/Properties/Settings.settings [new file with mode: 0644]
ROM0Split/ROM0Split.csproj [new file with mode: 0644]
ROM0Split/packages.config [new file with mode: 0644]
appveyor.yml [new file with mode: 0644]

diff --git a/.gitattributes b/.gitattributes
new file mode 100644 (file)
index 0000000..1ff0c42
--- /dev/null
@@ -0,0 +1,63 @@
+###############################################################################
+# Set default behavior to automatically normalize line endings.
+###############################################################################
+* text=auto
+
+###############################################################################
+# Set default behavior for command prompt diff.
+#
+# This is need for earlier builds of msysgit that does not have it on by
+# default for csharp files.
+# Note: This is only used by command line
+###############################################################################
+#*.cs     diff=csharp
+
+###############################################################################
+# Set the merge driver for project and solution files
+#
+# Merging from the command prompt will add diff markers to the files if there
+# are conflicts (Merging from VS is not affected by the settings below, in VS
+# the diff markers are never inserted). Diff markers may cause the following 
+# file extensions to fail to load in VS. An alternative would be to treat
+# these files as binary and thus will always conflict and require user
+# intervention with every merge. To do so, just uncomment the entries below
+###############################################################################
+#*.sln       merge=binary
+#*.csproj    merge=binary
+#*.vbproj    merge=binary
+#*.vcxproj   merge=binary
+#*.vcproj    merge=binary
+#*.dbproj    merge=binary
+#*.fsproj    merge=binary
+#*.lsproj    merge=binary
+#*.wixproj   merge=binary
+#*.modelproj merge=binary
+#*.sqlproj   merge=binary
+#*.wwaproj   merge=binary
+
+###############################################################################
+# behavior for image files
+#
+# image files are treated as binary by default.
+###############################################################################
+#*.jpg   binary
+#*.png   binary
+#*.gif   binary
+
+###############################################################################
+# diff behavior for common document formats
+# 
+# Convert binary document formats to text before diffing them. This feature
+# is only available from the command line. Turn it on by uncommenting the 
+# entries below.
+###############################################################################
+#*.doc   diff=astextplain
+#*.DOC   diff=astextplain
+#*.docx  diff=astextplain
+#*.DOCX  diff=astextplain
+#*.dot   diff=astextplain
+#*.DOT   diff=astextplain
+#*.pdf   diff=astextplain
+#*.PDF   diff=astextplain
+#*.rtf   diff=astextplain
+#*.RTF   diff=astextplain
diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..57a1574
--- /dev/null
@@ -0,0 +1,196 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+build/
+bld/
+[Bb]in/
+[Oo]bj/
+
+# Visual Studo 2015 cache/options directory
+.vs/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding addin-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings 
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+
+# Windows Azure Build Output
+csx/
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Others
+*.[Cc]ache
+ClientBin/
+[Ss]tyle[Cc]op.*
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
diff --git a/ROM0Split.sln b/ROM0Split.sln
new file mode 100644 (file)
index 0000000..a525d1b
--- /dev/null
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.168
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ROM0Split", "ROM0Split\ROM0Split.csproj", "{FD05E2F7-0485-4B7C-ACC1-C40CE664E2E4}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {FD05E2F7-0485-4B7C-ACC1-C40CE664E2E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FD05E2F7-0485-4B7C-ACC1-C40CE664E2E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FD05E2F7-0485-4B7C-ACC1-C40CE664E2E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FD05E2F7-0485-4B7C-ACC1-C40CE664E2E4}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {1223DEB9-6FD5-4BE5-8421-C45947DF4008}
+       EndGlobalSection
+EndGlobal
diff --git a/ROM0Split/App.config b/ROM0Split/App.config
new file mode 100644 (file)
index 0000000..731f6de
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+    </startup>
+</configuration>
\ No newline at end of file
diff --git a/ROM0Split/App.xaml b/ROM0Split/App.xaml
new file mode 100644 (file)
index 0000000..4eddc31
--- /dev/null
@@ -0,0 +1,12 @@
+<Application x:Class="ROM0Split.App"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:local="clr-namespace:ROM0Split"
+             xmlns:model="clr-namespace:ROM0Split.Model"
+             StartupUri="MainWindow.xaml">
+       <Application.Resources>
+               <ResourceDictionary>
+                       <model:MainWindowModel x:Key="MainWindowModel"></model:MainWindowModel>
+               </ResourceDictionary>
+       </Application.Resources>
+</Application>
diff --git a/ROM0Split/App.xaml.cs b/ROM0Split/App.xaml.cs
new file mode 100644 (file)
index 0000000..a894a2b
--- /dev/null
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace ROM0Split
+{
+       /// <summary>
+       /// Interaktionslogik für "App.xaml"
+       /// </summary>
+       public partial class App : Application
+       {
+       }
+}
diff --git a/ROM0Split/Implementations/DelegateCommand.cs b/ROM0Split/Implementations/DelegateCommand.cs
new file mode 100644 (file)
index 0000000..80614a7
--- /dev/null
@@ -0,0 +1,27 @@
+using System;
+using System.Windows.Input;
+
+namespace ROM0Split.Implementations
+{
+       public class DelegateCommand : ICommand
+       {
+               private Action _executeMethod;
+
+               public DelegateCommand(Action executeMethod)
+               {
+                       _executeMethod = executeMethod;
+               }
+
+               public bool CanExecute(object parameter = null)
+               {
+                       return true;
+               }
+
+               public event EventHandler CanExecuteChanged = delegate { };
+
+               public void Execute(object parameter = null)
+               {
+                       _executeMethod.Invoke();
+               }
+       }
+}
diff --git a/ROM0Split/Implementations/SuperViewModel.cs b/ROM0Split/Implementations/SuperViewModel.cs
new file mode 100644 (file)
index 0000000..c05a997
--- /dev/null
@@ -0,0 +1,29 @@
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+
+namespace ROM0Split.Implementations
+{
+       public class SuperViewModel : INotifyPropertyChanged
+       {
+
+               public event PropertyChangedEventHandler PropertyChanged;
+
+               protected void SetProperty<T>(ref T property, T value, [CallerMemberName] string propertyName = null)
+               {
+                       if (object.Equals(property, value))
+                               return;
+
+                       property = value;
+                       onPropertyChanged(propertyName);
+               }
+
+               protected void onPropertyChanged([CallerMemberName] string propertyName = null)
+               {
+                       if (object.Equals(PropertyChanged, null))
+                               return;
+
+                       PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+               }
+       }
+}
+
diff --git a/ROM0Split/MainWindow.xaml b/ROM0Split/MainWindow.xaml
new file mode 100644 (file)
index 0000000..e6c6e93
--- /dev/null
@@ -0,0 +1,29 @@
+<Window x:Class="ROM0Split.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ROM0Split"
+        mc:Ignorable="d"
+        Title="ROM0Split" Height="145" Width="405">
+       <Grid DataContext="{StaticResource MainWindowModel}">
+               <StackPanel HorizontalAlignment="Left" Width="375" Margin="10,10,0,0" VerticalAlignment="Top">
+                       <StackPanel.Resources>
+                               <Style TargetType="{x:Type Button}">
+                                       <Setter Property="Margin" Value="0,5,0,5"/>
+                               </Style>
+                       </StackPanel.Resources>
+                       <DockPanel>
+                               <Button Command="{Binding Path=scatterFileDialog}" Content="Scatter File" Width="70" />
+                               <TextBox Text="{Binding Path=scatterFile}" Width="300" Margin="0,5,0,5" IsReadOnly="True"/>
+                       </DockPanel>
+                       <DockPanel>
+                               <Button Command="{Binding Path=rom0FileDialog}" Content="ROM_0 File" Width="70" />
+                               <TextBox Text="{Binding Path=rom0File}" Width="300" Margin="0,5,0,5" IsReadOnly="True"/>
+                       </DockPanel>
+                       <DockPanel>
+                               <Button Width="185" Command="{Binding Path=split}" Content="Split"/>
+                       </DockPanel>
+               </StackPanel>
+       </Grid>
+</Window>
diff --git a/ROM0Split/MainWindow.xaml.cs b/ROM0Split/MainWindow.xaml.cs
new file mode 100644 (file)
index 0000000..40a5bdc
--- /dev/null
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace ROM0Split
+{
+       /// <summary>
+       /// Interaktionslogik für MainWindow.xaml
+       /// </summary>
+       public partial class MainWindow : Window
+       {
+               public MainWindow()
+               {
+                       InitializeComponent();
+               }
+       }
+}
diff --git a/ROM0Split/Model/MainWindowModel.cs b/ROM0Split/Model/MainWindowModel.cs
new file mode 100644 (file)
index 0000000..7871d77
--- /dev/null
@@ -0,0 +1,142 @@
+using System;
+using ROM0Split.Implementations;
+using Microsoft.Win32;
+using System.IO;
+using System.Windows;
+using YamlDotNet.RepresentationModel;
+
+namespace ROM0Split.Model
+{
+       class MainWindowModel : SuperViewModel
+       {
+               const int BUFFER_SIZE = 20 * 1024;
+               private string _scatterFile;
+               private string _rom0File;
+               private DelegateCommand _scatterFileDialog;
+               private DelegateCommand _rom0FileDialog;
+               private DelegateCommand _split;
+
+               public string scatterFile
+               {
+                       get { return _scatterFile; }
+                       set { SetProperty(ref _scatterFile, value); }
+               }
+
+               public string rom0File
+               {
+                       get { return _rom0File; }
+                       set { SetProperty(ref _rom0File, value); }
+               }
+
+               public DelegateCommand scatterFileDialog
+               {
+                       get { return _scatterFileDialog; }
+                       set { SetProperty(ref _scatterFileDialog, value); }
+               }
+
+               public DelegateCommand rom0FileDialog
+               {
+                       get { return _rom0FileDialog; }
+                       set { SetProperty(ref _rom0FileDialog, value); }
+               }
+
+               public DelegateCommand split
+               {
+                       get { return _split; }
+                       set { SetProperty(ref _split, value); }
+               }
+               
+               private void OnscatterFileDialogExecute()
+               {
+                       OpenFileDialog openFileDialog = new OpenFileDialog();
+                       openFileDialog.ShowDialog();
+                       scatterFile = openFileDialog.FileName;
+                       openFileDialog = null;
+               }
+
+               private void Onrom0FileDialogExecute()
+               {
+                       OpenFileDialog openFileDialog = new OpenFileDialog();
+                       openFileDialog.ShowDialog();
+                       rom0File = openFileDialog.FileName;
+                       openFileDialog = null;
+               }
+
+               private void OnsplitExecute()
+               {
+                       if (scatterFile == null)
+                       {
+                               MessageBox.Show("Please select a Scatter file", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+                       }
+                       else if (rom0File == null)
+                       {
+                               MessageBox.Show("Please select a ROM_0 file", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+                       }
+                       else
+                       {
+                               string basepath = System.AppDomain.CurrentDomain.BaseDirectory + "\\out";
+                               FileStream stream = File.OpenRead(rom0File);
+                               StringReader reader = new StringReader(File.ReadAllText(scatterFile));
+
+                               if (!Directory.Exists(basepath))
+                                       Directory.CreateDirectory(basepath);
+
+                               // Load the stream
+                               var yaml = new YamlStream();
+                               yaml.Load(reader);
+
+                               // Examine the stream
+                               var mapping = (YamlSequenceNode)yaml.Documents[0].RootNode;
+                               foreach (YamlMappingNode entry in mapping.Children)
+                               {
+                                       var node = entry.Children;
+                                       //Console.WriteLine(entry.Children);
+                                       if (node.ContainsKey("general") || node["partition_name"].ToString() == "PRELOADER")
+                                               continue;
+
+
+                                       string fileName = node["file_name"].ToString();
+                                       if (fileName == "NONE")
+                                               fileName = node["partition_name"].ToString();
+
+                                       byte[] buffer = new byte[BUFFER_SIZE];
+
+                                       Stream outFile = File.Create(basepath + "\\" + fileName);
+
+                                       stream.Position = 
+                                               long.Parse(node["linear_start_addr"].ToString().Replace("0x", ""), System.Globalization.NumberStyles.HexNumber);
+
+                                       UInt64 size = UInt64.Parse(node["partition_size"].ToString().Replace("0x", ""), System.Globalization.NumberStyles.HexNumber);
+                                       UInt64 remaining = size;
+                                       int bytesRead;
+                                       while (remaining > 0 && (bytesRead = stream.Read(buffer, 0,
+                                                       int.Parse(
+                                                               Math.Min(remaining, BUFFER_SIZE).ToString()
+                                                               )
+                                                               )
+                                                               ) > 0)
+                                       {
+                                               outFile.Write(buffer, 0, bytesRead);
+                                               remaining -= (uint)bytesRead;
+                                       }
+
+                                       outFile.Flush();
+                                       outFile.Close();
+                                       outFile.Dispose();
+                                       Console.WriteLine(node["partition_index"]);
+                               }
+                       }
+               }
+
+               private void OndecryptExecute()
+               {
+               }
+
+               public MainWindowModel()
+               {
+                       scatterFileDialog = new DelegateCommand(new Action(OnscatterFileDialogExecute));
+                       rom0FileDialog = new DelegateCommand(new Action(Onrom0FileDialogExecute));
+                       split = new DelegateCommand(new Action(OnsplitExecute));
+               }
+       }
+}
diff --git a/ROM0Split/Properties/AssemblyInfo.cs b/ROM0Split/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..e4cc09f
--- /dev/null
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die einer Assembly zugeordnet sind.
+[assembly: AssemblyTitle("ROM0Split")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ROM0Split")]
+[assembly: AssemblyCopyright("Copyright ©  2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
+// für COM-Komponenten unsichtbar.  Wenn Sie auf einen Typ in dieser Assembly von
+// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
+[assembly: ComVisible(false)]
+
+//Um mit dem Erstellen lokalisierbarer Anwendungen zu beginnen, legen Sie
+//<UICulture>ImCodeVerwendeteKultur</UICulture> in der .csproj-Datei
+//in einer <PropertyGroup> fest.  Wenn Sie in den Quelldateien beispielsweise Deutsch
+//(Deutschland) verwenden, legen Sie <UICulture> auf \"de-DE\" fest.  Heben Sie dann die Auskommentierung
+//des nachstehenden NeutralResourceLanguage-Attributs auf.  Aktualisieren Sie "en-US" in der nachstehenden Zeile,
+//sodass es mit der UICulture-Einstellung in der Projektdatei übereinstimmt.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+       ResourceDictionaryLocation.None, //Speicherort der designspezifischen Ressourcenwörterbücher
+                                                                        //(wird verwendet, wenn eine Ressource auf der Seite nicht gefunden wird,
+                                                                        // oder in den Anwendungsressourcen-Wörterbüchern nicht gefunden werden kann.)
+       ResourceDictionaryLocation.SourceAssembly //Speicherort des generischen Ressourcenwörterbuchs
+                                                                                         //(wird verwendet, wenn eine Ressource auf der Seite nicht gefunden wird,
+                                                                                         // designspezifischen Ressourcenwörterbuch nicht gefunden werden kann.)
+)]
+
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+//      Hauptversion
+//      Nebenversion
+//      Buildnummer
+//      Revision
+//
+// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+// übernehmen, indem Sie "*" eingeben:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ROM0Split/Properties/Resources.Designer.cs b/ROM0Split/Properties/Resources.Designer.cs
new file mode 100644 (file)
index 0000000..8ff1fa5
--- /dev/null
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Dieser Code wurde von einem Tool generiert.
+//     Laufzeitversion: 4.0.30319.42000
+//
+//     Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
+//     der Code neu generiert wird.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ROM0Split.Properties
+{
+
+
+       /// <summary>
+       ///   Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+       /// </summary>
+       // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
+       // über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+       // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+       // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+       [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+       internal class Resources
+       {
+
+               private static global::System.Resources.ResourceManager resourceMan;
+
+               private static global::System.Globalization.CultureInfo resourceCulture;
+
+               [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+               internal Resources()
+               {
+               }
+
+               /// <summary>
+               ///   Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+               /// </summary>
+               [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+               internal static global::System.Resources.ResourceManager ResourceManager
+               {
+                       get
+                       {
+                               if ((resourceMan == null))
+                               {
+                                       global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ROM0Split.Properties.Resources", typeof(Resources).Assembly);
+                                       resourceMan = temp;
+                               }
+                               return resourceMan;
+                       }
+               }
+
+               /// <summary>
+               ///   Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+               ///   Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
+               /// </summary>
+               [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+               internal static global::System.Globalization.CultureInfo Culture
+               {
+                       get
+                       {
+                               return resourceCulture;
+                       }
+                       set
+                       {
+                               resourceCulture = value;
+                       }
+               }
+       }
+}
diff --git a/ROM0Split/Properties/Resources.resx b/ROM0Split/Properties/Resources.resx
new file mode 100644 (file)
index 0000000..af7dbeb
--- /dev/null
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ROM0Split/Properties/Settings.Designer.cs b/ROM0Split/Properties/Settings.Designer.cs
new file mode 100644 (file)
index 0000000..e367386
--- /dev/null
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ROM0Split.Properties
+{
+
+
+       [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+       internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+       {
+
+               private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+               public static Settings Default
+               {
+                       get
+                       {
+                               return defaultInstance;
+                       }
+               }
+       }
+}
diff --git a/ROM0Split/Properties/Settings.settings b/ROM0Split/Properties/Settings.settings
new file mode 100644 (file)
index 0000000..033d7a5
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
\ No newline at end of file
diff --git a/ROM0Split/ROM0Split.csproj b/ROM0Split/ROM0Split.csproj
new file mode 100644 (file)
index 0000000..185d16d
--- /dev/null
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{FD05E2F7-0485-4B7C-ACC1-C40CE664E2E4}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>ROM0Split</RootNamespace>
+    <AssemblyName>ROM0Split</AssemblyName>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <WarningLevel>4</WarningLevel>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <Deterministic>true</Deterministic>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xaml">
+      <RequiredTargetFramework>4.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="WindowsBase" />
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
+    <Reference Include="YamlDotNet, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\YamlDotNet.5.3.0\lib\net45\YamlDotNet.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+    <Page Include="MainWindow.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Implementations\DelegateCommand.cs" />
+    <Compile Include="Implementations\SuperViewModel.cs" />
+    <Compile Include="MainWindow.xaml.cs">
+      <DependentUpon>MainWindow.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Model\MainWindowModel.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <None Include="packages.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git a/ROM0Split/packages.config b/ROM0Split/packages.config
new file mode 100644 (file)
index 0000000..44b136a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="YamlDotNet" version="5.3.0" targetFramework="net461" />
+</packages>
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644 (file)
index 0000000..0e02477
--- /dev/null
@@ -0,0 +1,10 @@
+image: Visual Studio 2015
+platform: Any CPU
+configuration: Release
+skip_tags: true
+
+init:
+  - git config --global core.autocrlf input
+
+before_build:
+  - nuget restore