EnigmaSettings is open source library for Enigma1 & Enigma2 settings management.
It does all heavy work with settings loading, manipulation and saving so you don’t have to.
If you’ve ever thought about writing your own settings editor (like DreamboxEdit, Dreamset…)
but didn’t know anything about Enigma settings – this library is for you.
It’s written in C# and compatible with Mono 2.8 and higher.
If you’re not software developer you can probably skip this 🙂
- It’s FREE
- It’s open source library licensed under permissive MIT license. Anyone can use it.
- It’s easy to use, has excellent logging support, and commented code.
- It works on Windows XP SP2 and newer (.NET framework 3.5), Linux and MacOS X (Mono 2.8 and higher). I suppose it will work on iOS and Android too when compiled as Portable Library, but I didn’t have time to test it.
- It’s fast. It will load up huge motor settings in under 500 ms.
- It supports Enigma1, Enigma2 ver3 and Enigma2 ver4 settings and automatic conversion between them.
- Implemented background threading for settings loading and saving (Async methods)
- Full interface based objective model
- Every part of library can be replaced by custom code via custom instance factory (Inversion of Concerns)
- Fully prepared for GUI data binding (IEditable and IPropertyChanged interfaces implemented)
- It’s used in our open source project Simple Enigma Settings Editor
Source code on GitHub: https://github.com/shaxxx/EnigmaSettings
Too see library used in a real application check out SESE aplication available on https://github.com/shaxxx/SESE
// C# //list location (lamedb or services file) string fileName = "C:\\Settings\\lamedb"; //initialize default list load / save handler Krkadoni.EnigmaSettings.SettingsIO settingsIO = new Krkadoni.EnigmaSettings.SettingsIO(); //load list Krkadoni.EnigmaSettings.Settings settings = settingsIO.Load(""); //change satellite position for Thor satellite from 1.0 W to 0.8 W //Changes satellite position to new position for satellite and belonging transponders var satelliteThor = settings.Satellites.Single(x => Int32.Parse(x.Position) == -10); settings.ChangeSatellitePosition(satelliteThor, -8); //remove all stream services settings.RemoveStreams(); //remove empty bouquets settings.RemoveEmptyBouquets(); //remove satellite on position 23.0 E settings.RemoveSatellite(230); //update service parameters var service = settings.Services.First(); //take first service as an example service.Name = "Service name"; service.ProgNumber = "0"; service.ServiceSecurity = Enums.ServiceSecurity.BlackListed; service.SID = "24"; //etc... //save settings to current folder settingsIO.Save(new DirectoryInfo(AppSettings.CurrentDir), settings );
'VB.net 'list location (lamedb or services file) Dim fileName As String = "C:\Settings\lamedb" 'initialize default list load / save handler Dim settingsIO As New Krkadoni.EnigmaSettings.SettingsIO() 'load list Dim settings As Krkadoni.EnigmaSettings.Settings = settingsIO.Load("") 'change satellite position for Thor satellite from 1.0 W to 0.8 W 'Changes satellite position to new position for satellite and belonging transponders Dim satelliteThor = settings.Satellites.[Single](Function(x) Int32.Parse(x.Position) = -10) settings.ChangeSatellitePosition(satelliteThor, -8) 'remove all stream services settings.RemoveStreams() 'remove empty bouquets settings.RemoveEmptyBouquets() 'remove satellite on position 23.0 E settings.RemoveSatellite(230) 'update service parameters Dim service = settings.Services.First() 'take first service as an example service.Name = "Service name" service.ProgNumber = "0" service.ServiceSecurity = Enums.ServiceSecurity.BlackListed service.SID = "24" 'etc... 'save settings to current folder settingsIO.Save(New DirectoryInfo(AppSettings.CurrentDir), settings)