OpenSkinDesigner Setup 5.1.0.8

Graphical editor for creating Enigma2 skin files (XML). Visually design TV interface layouts (screens, panels, widgets) with real‑time preview. Supports the full Enigma2 skin syntax and OpenATV extensions

logo.png


OpenSkinDesigner 4.2.4.0 – professional installer


suggest and mod by
popking159

Lululla

is based on OpenSkin Designer,

a further development of e2skinner.



Read here for Suggest and develop Software instructions


OpenSkin-Designer/README.md at master · OwnerPlugins/OpenSkin-Designer




pasted-from-clipboard.png


preview1.jpg?sanitize=true&raw=true

Preview 1
preview2.jpg?sanitize=true&raw=true

Preview 2
preview3.jpg?sanitize=true&raw=true

Preview 3
preview4.jpg?sanitize=true&raw=true

Preview 4
preview5.jpg?sanitize=true&raw=true

Preview 5
preview6.jpg?sanitize=true&raw=true

Preview 6
preview7.jpg?sanitize=true&raw=true

Preview 7
preview8.jpg?sanitize=true&raw=true

Preview 8
preview9.jpg?sanitize=true&raw=true

Preview 9
preview10.jpg?sanitize=true&raw=true

Preview 10




✨ OpenSkinDesigner – Changelog Highlights (latest first)


v4.2.4.0

Resolution rescaling – ComboBox for all common resolutions (720p, 1080p, 1440p, 2160p); automatically rescales positions, sizes, fonts, and images.

Hybrid Preferences – PropertyGrid for main settings + ListView for raw key/value properties; dynamic language switch.

Raw XML attributes – New category "0 XML attributes" in PropertyGrid to edit custom/unknown attributes directly.

cDesigner improvements – Added getAttributes() and getAttribute(XmlNode) methods; extended zoom range (0.35x–10x).

Stability – Fixed missing using for XmlNode; resolved lc.exe license compilation error (removed empty licenses.licx).


v4.2.3.9

Add OpenATV Element menu – Quick insertion of OpenATV-specific elements (Panel Reference, Stack, Rectangle, Applet, Constant Widget, Layout).

Missing panel logging – Logs each missing panel reference only once to avoid log spam.

Double‑click on colors/fonts – Opens Colors/Fonts dialogs directly.

Convert wizard – Double‑click <convert> node to edit its content with undo/redo.

Editor change tracking suppression – Prevents false "unsaved changes" flags when switching tree nodes.

Auto‑save before switching tabs – Validates editor content when switching from Code to Designer; blocks switch on error and shows message in status bar.


v4.2.3.8

Background fallback – Restored background image loading (background.jpg, background1920.jpg, etc.) by searching in skins folder.

Image path resolution – Multi‑location search for images (project folder, skin folder, skins folder, executable folder).

CornerRadius as string – Accepts values like 30;topLeft,topRight; preserves full string in XML.

Gradient tolerancebackgroundColor accepts gradient syntax (e.g., red,green,vertical) without errors.

Fallback images for widgets – Improved loading of default images for render types (picon, pig, xtraposter, etc.).

Stability fixes – Fixed NullReferenceException in sGraphicWidget.updateObject and other crashes.


v4.2.3.0

ClockToText – New time formats (%l, %I, %e, %P/%p).

ServiceName – Extended modes (ChannelNumber, ChannelNumberAndName, PiconName, ReferenceName).

eSlider – Full support for horizontal/vertical slider with Value, Min, Max, Step.

Listbox – Added selectionZoom, scrollbarBackgroundGradient, scrollbarForegroundGradient.


v4.2.1.0

Unified gradient handling for Label, Progress, Listbox.

Exposed Source, Render, Text, alignment props for widgets.

Fixed center positioning rescaling.


v4.2.0.0

Initial gradient support for backgroundColor.

Extended cornerRadius syntax (e.g., 30;topLeft,topRight).



Additional Information

OpenSkinDesigner 4.2.4.0

Developed by Lululla and the OpenSkinDesigner Team.

For support, visit the forum: https://linuxsat-support.com

Thank you for choosing this software.


Support the developer

If you like this software, please consider offering a coffee


Click here to donate via PayPal

Click here to donate via Ko-fi



DISCUSSIONS HERE

OpenSkin Designer (OSD) - Enigma2 Skins - Linux Satellite Support Community



:smiling face with hearts:

  • Version 5.1.0.8

    ## CHANGELOG – OpenSkinDesigner (v5.1.0.8)


    ### FIXED: Font Manager – Duplicate Display & Saving Issues


    **Problem:**

    - Fonts appeared duplicated in the Font Manager UI (both real fonts and file-name aliases)

    - Removing a font from the list did NOT remove it from the database

    - `Reload` button reset unsaved changes instead of refreshing the UI

    - Modifications to `<fonts>` node in the Code tab were not reflected in Font Manager

    - Paths were saved with double slashes (`fonts//Roboto-Regular.ttf`)

    - Fonts from `<include>` files were not loaded when main `<fonts/>` node was empty


    **Solution:**


    **1. Added `IsAutoAlias` property to `sFont`**

    - `IsAutoAlias` distinguishes file-name aliases (created by `AddFileAlias()`) from real fonts and user-defined aliases

    - Used for filtering in UI and during save operations


    **2. Added `Show Aliases` checkbox to Font Manager**

    - Default OFF → hides file-name aliases (shows only real fonts)

    - ON → shows all fonts + aliases (debug mode)


    **3. Fixed `Remove` button**

    - Now removes the font from **both** the ListView and the database

    - Prevents removed fonts from reappearing after refresh


    **4. Fixed `Reload` button**

    - Now refreshes the UI from database (does NOT reload from disk)

    - Preserves pending changes


    **5. Fixed `initFonts()` in `cDataBase`**

    - Merges `<fonts>` nodes from main skin AND all included files

    - Fixes issue where fonts from includes were not loaded when main `<fonts/>` was empty


    **6. Fixed `syncFonts()` in `cDataBase`**

    - Uses `OriginalPath` for saving (preserves relative paths)

    - Skips `IsAutoAlias` fonts during save (prevents duplicate re-writing)

    - Normalizes paths (removes double slashes)


    **7. Fixed `RefreshFontList()` in `fFonts`**

    - Filters out `IsAutoAlias` fonts when checkbox is OFF

    - Shows all fonts when checkbox is ON


    **8. Fixed `RemoveDuplicateFonts()` in `fFonts`**

    - Now acts on the database, not just the ListView

    - Removes duplicate font entries before saving


    ---



    ### What Works Now:


    1. **Font Manager UI** shows only real fonts (clean, no duplicates)

    2. **Checkbox "Show Aliases"** toggles display of auto-aliases for debugging

    3. **Remove** permanently deletes font from database (not just UI)

    4. **Reload** refreshes UI without losing pending changes

    5. **Saving** writes clean, duplicate-free XML with normalized paths

    6. **Includes** are properly merged with main `<fonts>` node

    7. **Code tab → Designer tab** changes are applied automatically


    ---


    ## Summary for Users:


    - Open Font Manager → see only your defined fonts (no duplicates)

    - Use **Show Aliases** checkbox to see debug info

    - Add/Remove/Change fonts → works as expected

    - Close window → changes are saved automatically


    :sleeping face:

  • Version 5.1.0.6

    ### Changelog


    ## Version 5.1.0.6 by Lululla – 2026-07-12


    ### Fixed

    - **Font path fix** – normalized font paths to remove duplicate "fonts" folder and double slashes.

    - **Path normalization** – added check in MapFontPath() and getPath() to clean malformed paths.

    - **Skin Converter** – disabled non-physical attributes by default: zPosition, index, scrollbarMode, scrollbarScroll, animationMode, animationPaused, split.

    - **User experience** – users can still enable them manually if needed, but they won't be applied unintentionally during conversion.


    ## 🔐 Premium License

    Some features require a premium license:

    - **Telnet Commands** – Execute commands on Enigma2 receiver

    - **Import/Export Skin** – Copy skin from/to Enigma2 (UNC)

    - **Skin Diagnostics** – Advanced analysis (premium only)

    - **Skin Converter** – Convert HD/FHD/WQHD/UHD

    - **Automatic Updates** – Check and download new versions


    Activate via `Tools → License`.

    Contact **Lululla** for activation.

  • Version 5.1.0.5

    ### Changelog


    ## Version 5.1.0.5 by Lululla – 2026-07-12


    ### Added

    - **Skin naming on creation** – user can now choose the skin name when creating a new skin via `File → New`, instead of using a temporary folder

    - **Skin naming on conversion** – user can now choose the destination name when converting a skin via `Tools → Convert Skin...`, instead of automatic naming

    - **New document button** – added "New" button in fOpen dialog to create a new skin directly from the open dialog.

    - **Root toggle fix** – removed duplicate btnToggleRoot_Click method, kept version with "Show Root"/"Hide Root" labels.

    - **Rulers toggle fix** – added missing btnToggleRulers_Click event handler.

    --- ON TEST ----

    - **UHD zoom fix** – extended zoom range from 0.4x–2.0x to 0.1x–5.0x for proper UHD display.

    - **Ruler update** – rulers now properly refresh after zoom and resolution changes.

    - **Root toggle button** – added btnToggleRoot toolbar button with show/hide functionality for the skin tree panel.


    ### Fixed

    - **Save path** – removed `Path.IsPathRooted` check, always uses `Path.Combine(folder, fileName)` to prevent double path duplication (`D:\temp\Temp\D:\temp\Temp\...`)

    - **Converter directory** – added `Directory.CreateDirectory(newSkinFolder)` before copy operations to prevent `DirectoryNotFoundException`

    - **New skin persistence** – new skins are now saved permanently in `./skins/{user_choice}/skin.xml` instead of `%TEMP%\OpenSkinDesigner\`

    - **Converter source path** – removed automatic fallback to `originalSkinPath` to prevent attempts to read from non-existent directories

    - **New screen recursion** – fixed infinite screen creation when "new screen" is clicked on a screen node (screen is now added as sibling, not child)

    - **Include handling** – when an include node is selected, new screen is correctly added as a child inside the include file

    - **Crosshair fix** – reset transform after designer paint to draw grid and crosshair in correct client coordinates.

    - **Grid fix** – grid now aligns with crosshair and scales properly with zoom.

    - **Zoom fit calculation** – added CalculateFitZoom() to compute correct "fit to view" zoom for any resolution (HD, FHD, WQHD, UHD)

    Zoom calculation refactor – fixed variable conflicts by using unique names (openRes, fromFileRes, screenRes) across all methods.

    - **Scrollbar fix** – zoom now properly fits the screen in the panel, eliminating unnecessary scrollbars at zoom 0 for FHD/WQHD/UHD.

    - **Delete screen** – fixed deletion of screens (including empty screens) that caused freezes and recursion; manual node removal from ElementList without rebuilding tree, preventing path exceptions

    - **New screen recursion** – blocked creation of screen inside another screen with error message and button disable when on a screen node


    ## Premium License

    Some features require a premium license:

    - **Telnet Commands** – Execute commands on Enigma2 receiver

    - **Import/Export Skin** – Copy skin from/to Enigma2 (UNC)

    - **Skin Diagnostics** – Advanced analysis (premium only)

    - **Skin Converter** – Convert HD/FHD/WQHD/UHD

    - **Automatic Updates** – Check and download new versions


    Activate via `Tools → License`.

    Contact **Lululla** for activation.

  • Version 5.1.0.4

    ### Changelog


    ## Version 5.1.0.4 by Lululla – 2026-07-11


    ### Added


    - **Skin Converter** – New dialog accessible from `Tools → Convert Skin...`(ON TEST BETA VERSION)

    - Convert skin between HD (1280x720), FHD (1920x1080), WQHD (2560x1440), UHD (3840x2160)

    - **Categories system** – attributes organized in categories (Fonts, Borders, Corner Radius, Gradients, etc.)

    - **Category checkbox** – check/uncheck a category to enable/disable ALL rules inside it

    - **Add/Edit/Remove Category** – create custom categories to organize your own rules

    - **Add/Edit/Remove Rule** – add custom rules to any category (Name, XML Attribute, Scale Mode)

    - **Double-click** – edit any rule by double-clicking it

    - **File list preview** – shows ALL XML files with checkboxes to select which ones to convert

    - **Async conversion** – UI no longer blocks during conversion

    - **Progress display** – shows current step, file name, and progress count

    - **Cancellation support** – click "Cancel" to stop conversion at any time

    - **Image rescaling** – with HighQualityBicubic interpolation

    - **Automatic backup** – original skin preserved, new skin saved in `SkinName_Resolution` folder

    - **Duplicate folder protection** – auto-increments folder name if already exists

    - **Full translations** – all dialogs and messages fully translatable


    - **Open other XML from same folder** – New `File → Open other XML from same folder...` command

    - Open any XML skin file located in the same directory as the currently open skin

    - Useful for switching between multiple skins in the same folder (e.g., `MetrixHD/skin_alt.xml`)


    - **Grid size setting** – Added to `Settings → Preferences`

    - Grid size is now persistent across sessions (saved in `settings.json`)

    - Press `G` key to cycle through grid sizes: `0, 5, 10, 20, 50` pixels

    - Grid status shown in the status bar (e.g., `Grid: 10 px` or `Grid: Off`)


    ### Fixed


    - **Skin Converter**

    - Infinite folder recursion during skin copy (`_HD/_HD/_HD` nesting) – fixed

    - Include files not being converted – all XML files with convertible attributes are now processed

    - Colors corruption – using `XmlDocument` instead of raw Regex; only specific attributes are modified

    - UI freeze – conversion runs asynchronously with progress updates

    - Default skin opening after conversion – now opens the converted skin correctly

    - `ElementList` null error – proper file path resolution before conversion

    - License check – now only shows warning without closing the application

    - Tools menu items – disabled until a skin is opened


    - **File counting during import/export**

    - `CountFiles` function now correctly counts each file only once (no more double counting)

    - Progress bar shows the correct total file count

    - Added exception handling for unauthorized access and missing directories


    - **Skin Information**

    - Now shows all XML files in the skin folder, not just referenced includes


    - **UI**

    - Crosshair button disabled by default until a skin is opened

    - Convert Skin menu item disabled until a skin is opened

    - Tools menu items (Telnet, Import, Export, Skin Information) disabled until a skin is opened


    ## 🔐 Premium License


    Some features require a premium license:

    - **Telnet Commands** – Execute commands on Enigma2 receiver

    - **Import/Export Skin** – Copy skin from/to Enigma2 (UNC)

    - **Skin Diagnostics** – Advanced analysis (premium only)

    - **Skin Converter** – Convert HD/FHD/WQHD/UHD

    - **Automatic Updates** – Check and download new versions


    Activate via `Tools → License`.

    Contact **Lululla** for activation.

  • Version 5.1.0.1 -> 5.1.0.3

    ### Changelog


    ### v5.1.0.3 by Lululla


    **Font loading & path resolution improvements**


    - **Font loading revamped**

    Fonts are now mapped automatically by filename, eliminating "Font not found" popups and fallback errors. Aliases are created on the fly so any reference to a font file (e.g. `lcd.ttf`) resolves correctly, even if the skin uses the filename instead of the logical name.


    - **Path normalization fixed**

    `getPath()` now checks the skin folder first, preventing double path concatenation and duplicate directory segments. This ensures all resources (images, fonts, includes) are found reliably, reducing spurious `FileNotFoundException` noise in logs.


    - **Cleaner debug logs**

    All font and path lookups now log detailed search steps, making it easier to diagnose missing resources without intrusive message boxes.




    ## Version 5.1.0.2 by Lululla – 2026-07-06


    ### Added


    - **New Skin:**

    - New `File → New` command with resolution selection dialog to create a new skin from scratch

    - Includes default colors, fonts, windowstyle, and a blank screen

    - Available in menu and toolbar (New button)


    - **Label enhancements:**

    - `shadowColor` and `shadowOffset` attributes for text shadow rendering with full HEX color support (`#AARRGGBB`)

    - `ellipsis`, `truncate`, and `lineHeight` attributes for advanced text control

    - `wrap="ellipsis"` support for RT_ELLIPSIS behavior (text truncated with `...`)

    - `fontScale` attribute with `size;N` (font size override) and `width;N` (horizontal compression) support, aligning with OpenATV `skin.py`

    - `setFontScale()` method for dynamic font scaling on labels

    - `pointWidth` parameter for additional horizontal compression of text characters


    - **Listbox enhancements:**

    - `separatorLineColor` and `separatorLineSize` attributes for drawing lines between list items

    - `selectionZoom` and `selectionZoomSize` attributes for item scaling and zoom behavior

    - `entryFontScale` attribute with `size;N` (font size override) and `width;N` (horizontal compression) support for Listbox font scaling

    - `rtScroll` flag (value 1024) for multi-content scrolling support with mouse wheel interaction and scrollbar


    - **Slider enhancements:**

    - `sliderPixmap` attribute for custom slider thumb images


    - **WindowStyle designer:**

    - Fixed border image buttons (TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight) with proper file selection dialogs

    - Added `...` text to border buttons to indicate they are clickable

    - `entryFontScale` support for configList in windowstyle, aligning with OpenATV `skin.py`


    - **Include file management:**

    - View and edit include file content directly from the treeview (tab Code now shows include file content)

    - Save changes directly to the include file when using the Sync button

    - Context menu with **Create Include from selected screens** to move selected screens to a separate include file

    - **Expand all includes** context menu option and automatic expansion of include nodes

    - **Create New Include File** in Element menu and toolbar with `addInclude` icon


    - **Toolbar:**

    - Added **Add Include** button for quick creation of include files

    - Added **New** button for quick creation of new skins (File → New)

    - Added **Exit** button at the start of the toolbar for quick application exit


    - **Font & Color enhancements:**

    - User-selectable **fallback font** via Preferences (Settings → Preferences → Fallback font)

    - System font fallback (Arial) when skin fonts fail to load, ensuring text is always visible

    - Fixed HEX color parser to correctly handle 6-digit `#RRGGBB` colors (now properly sets alpha to 255)

    - Fixed alpha channel inversion bug in `sColor` constructor that caused colors with alpha 255 to become transparent

    - Added fallback for named colors (`yellow`, `red`, `green`, etc.) when not defined in skin colors table


    - **Preferences redesign:**

    - Completely redesigned Preferences form with **Visual Studio designer support** (`fPreferences.Designer.cs`)

    - Added **fallback font** combo box populated from the `fonts/` folder

    - Reorganized checkboxes into a **2-column layout** for a more compact form

    - Added **AutoScroll** to ensure all controls are accessible on smaller screens

    - Reduced form height by 30% while maintaining full functionality


    - **Menu improvements:**

    - Template menu items are now disabled until a skin is opened (enabled on open, disabled on close)

    - Sort and Units menu items are now disabled until a skin is opened (enabled on open, disabled on close)


    - **Premium Features:**

    - **Automatic Updates** – checks for new versions and downloads updates automatically


    ### Improved


    - **Save & Cleanup:**

    - Fixed double `.xml.xml` extension bug

    - Removed automatic saving of duplicate `skin_*.xml` include files

    - Added automatic cleanup of backup files (`skin_*.xml`) on application close to keep skin folders clean

    - Fixed save path double path issue (absolute paths now handled correctly)


    - **Font loading:**

    - Fixed double path bug causing `fonts\\D:\\...` errors when loading fonts from absolute paths

    - `MapFontPath` now extracts file names from absolute paths (`/usr/share/fonts/...`) and searches locally in the `fonts/` folder

    - Added support for font file name variations (case, underscores, dashes) for better compatibility with different skin sources


    - **Import Screen:**

    - Now imports **ALL screens** from the selected file, not just the first one

    - Handles both single-screen files and files with multiple screens


    - **Include handling:**

    - Parser now continues processing even when an included file is not found (skips missing includes instead of stopping)

    - This prevents screen loss when a referenced include file is missing


    - **Resolution handling:**

    - Automatically creates `output`/`resolution` nodes when changing skin resolution if they don't exist in the XML


    - **Code organization:**

    - Centralized menu/toolbar enable/disable logic into `EnableAllMenusAndToolbars()` and `DisableAllMenusAndToolbars()`

    - Eliminated code duplication across `open()`, `close()`, and `CreateNewSkin()`

    - `MyGlobaleVariables` moved to `OpenSkinDesigner.Structures` namespace for better organization


    - **Include resolver:**

    - Now handles nested `<include>` files with support for `filename`, `file`, `src`, `source`, and `href` attributes

    - Resolves absolute paths `/usr/share/enigma2/...` to relative paths


    - **Full compatibility with OpenATV `skin.py` features:**

    - `shadowColor`, `shadowOffset`

    - `ellipsis`, `truncate`, `lineHeight`

    - `fontScale` (`size;N` / `width;N`)

    - `wrap='ellipsis'`

    - `separatorLineColor`, `separatorLineSize`

    - `sliderPixmap`

    - `entryFontScale`

    - `RT_SCROLL`


    ### Fixed


    - `NullReferenceException` in `sGraphicScreen` when opening WindowStyle designer

    - `DirectoryNotFoundException` when skins folder is missing (added directory creation fallback)

    - Color parser now correctly handles 6-digit `#RRGGBB` colors

    - Alpha channel inversion bug in `sColor` constructor

    - Double `.xml.xml` extension bug in save system

    - Duplicate `skin_*.xml` include files no longer created

    - `foregroundColor="yellow"` and other named colors now work without explicit definition in skin

    - `NullReferenceException` in `cDataBaseResolution.setResolution()` when resolution node was missing

    - Save path now correctly handles absolute file paths (no more double path concatenation)

    - `ArgumentOutOfRangeException` in Preferences by ensuring comboboxes are populated before setting `SelectedIndex`

    - Designer errors in `fPreferences` (missing `using`, `for` loops, uninitialized event handlers)

    - `cmbFallbackFont_SelectedIndexChanged` event handler error (removed unused event)


    ### Translation Files (.lng)


    - Translation files use the format `Key:: Value` where:

    - `Key` is the English text (case-sensitive)

    - `Value` is the translated text

    - Separator is `::` (double colon)


    ### Notes


    - **Preferences designer:** The Preferences form now has full Visual Studio designer support (`fPreferences.Designer.cs`). Do not modify the UI code in `fPreferences.cs`.

    - **Fallback font:** If you experience font loading issues, go to `Settings → Preferences` and select a fallback font from the list. The combo box is automatically populated from the `fonts/` folder.

    - **Exit button:** The toolbar now includes an **Exit** button at the beginning (before "New") for quick application exit.

    - **Font paths:** Absolute font paths (`/usr/share/fonts/...`) are now normalized to file names and searched in the local `fonts/` folder. If the font is not found, the fallback font is used.


    ---


    ## 🔐 Premium License


    Some features require a premium license:

    - **Telnet Commands**

    - **Import/Export Skin** from/to Enigma2

    - **Skin Diagnostics** (advanced analysis)

    - **Automatic Updates** (check and download new versions)


    Activate via `Tools → License`.

    Contact **Lululla** for activation.


    ---



    Preview.png

  • Version 5.1.0.0

    ### Changelog


    ### Version 5.1.0.0 by Lululla – 2026-06-22


    **Added:**

    - New **Skin Information** module:

    - Detailed skin analysis with two tabs: **Info** and **Diagnostics**

    - Displays skin metadata: Name, Version, Author, Path, Resolution

    - Structural analysis: Screens, Panels, Widgets, Colors, Fonts, Attributes, Includes

    - Resolves `<include>` files to count all elements correctly

    - Preview image support: loads `prev.png` from skin folder

    - Diagnostics panel shows:

    - Found and missing Renderers, Converters, Pixmaps, Images

    - Unused images detection

    - Export all data to a `.txt` file on desktop with version and support links

    - Fully translatable via existing language system


    - **Preferences** module completely redesigned:

    - Full manual UI (no PropertyGrid, no designer issues)

    - All settings are now visible and editable

    - Fallback color picker with live preview

    - Premium license now hides/disables "Project" settings (network paths, folders)


    - **Premium License System**:

    - Activation via key (HMAC-SHA256 based)

    - Premium features: Telnet, Import/Export from Enigma2, Skin Diagnostics, Network paths

    - License status displayed in Tools → License

    - Click on status label to show license details


    - **License status**

    -displayed in `About` window (Premium/Free with color indicator).


    - **Automatic backup**

    - of `settings.json` and `license.lic` during update, preserving user preferences and license activation.


    - **Complete Help section**

    -(`fHelp`) with all keyboard shortcuts, premium features, and support links – now includes application logo.



    **Improved:**

    - Skin parser now resolves nested includes (supports `filename`, `file`, `src`, `source`, `href`)

    - Better error handling for missing include files

    - Update system now safely backs up user data before launching the installer.

    - UI layout optimized for skin information display

    - `fOpen` now hides network controls when not premium

    - `fTelnet` and `fTelnetConfig` are now protected by premium license


    **Fixed:**

    - `NullReferenceException` when loading skin info

    - `lblResolution` missing control

    - Empty Resources panel in Skin Information form

    - MessageBox translations for export confirmation

    - `fPreferences` visibility issues (completely rebuilt)

    - Fallback color not persisting between sessions

    - Premium menu items not updating after activation

    - License menu items now update correctly after activation.

    - Language selection and UI translations are more reliable.


    ## 🔐 Premium License


    Some features require a premium license:

    - **Telnet Commands**

    - **Import/Export Skin** from/to Enigma2

    - **Skin Diagnostics** (advanced analysis)


    Activate via `Tools → License`.

    Contact **Lululla** at ekekaz@gmail.com for activation.




    pasted-from-clipboard.png

  • Version 5.0.0.7

    ### MOD v5.0.0.7



    **Network skin management**


    - **Auto-copy to local**

    Opening a network skin automatically copies it to the local `./skins` folder with a progress bar showing file count and current file.


    - **Local backup on overwrite**

    If a local skin with the same name exists, it is backed up with `_backup_` timestamp before being overwritten.


    - **Clear work status**

    Status bar shows whether you are working on a local skin or a network skin.


    - **Open confirmation**

    When opening a skin, a dialog shows the full path and warns about the working location.


    - **Borderset parsing fix**

    Safe handling of missing pixmap files and attributes, preventing NullReferenceException when loading skins with incomplete borderset definitions.


    - **Color parsing fix**

    Added robust hex conversion with fallback to magenta, preventing FormatException on invalid color values.


    - **Indexer usage fix**

    Replaced incorrect indexer syntax with `get()` method calls in color lookups.




    **Open dialog enhancements**


    - **Refresh button**

    Reload the skin list without closing the form.


    - **Delete button**

    Remove skins (local and network) with confirmation, full path display, and security check to prevent deletion outside the configured network folder. Handles locked files with automatic retry.


    - **Backup visibility**

    Network skin backups appear in the Open dialog with the `(backup)` label and can be opened directly as normal skins.


    - **Currently opened tag**

    The skin currently opened in the designer is tagged with `(currently opened)` in the Open dialog.




    **Import/Export improvements**


    - **Progress bars**

    Both import and export now show file count and current file being copied/uploaded.


    - **FTP root path**

    Configurable in Telnet settings for Export Skin to Enigma2.


    **Help & documentation**


    - **Full user guide**

    Complete About from init version 1.0.0 by schischu65 (Nov 23, 2009)

    The Help dialog now includes a comprehensive guide covering all features: Open dialog, network management, import/export, keyboard shortcuts, designer tools, code editor, Telnet/FTP, preferences, templates, and troubleshooting.

    :sandwich:

  • Version 5.0.0.6

    ### MOD v5.0.0.6 by Lululla


    **Rulers positioning & stability**


    - **Rulers placed correctly**

    Horizontal and vertical rulers are now positioned outside the skin preview area – the horizontal ruler sits just below the designer toolbar, and the vertical ruler is to the left of the preview. No more overlapping with the skin or toolbar buttons.


    - **Rulers stay put during zoom/scroll**

    Rulers are now fixed during zoom and scroll operations. They only reposition when the main window or designer panel is resized, ensuring consistent alignment.


    - **Rulers button state fixed**

    The "Rulers" toggle button now correctly reflects whether rulers are visible. Rulers are automatically hidden when a skin is closed.


    - **Event handler cleanup**

    Removed duplicate event subscriptions to prevent double execution and improve performance.


    - **General code improvements**

    Targeted refactoring for better maintainability and stability.



    pasted-from-clipboard.png



    pasted-from-clipboard.png




    GitHub release

    .NET Windows Forms C#


    Visitors



    DonateDonate

  • Version 5.0.0.5

    **Bug fixes & improvements**


    - **Rulers positioning**

    The horizontal ruler is now correctly placed below the designer toolbar, no longer overlapping the "Marker", "Show all" and other toolbar buttons.


    - **Rulers translation**

    The "Rulers" button in the designer toolbar is now fully translatable using `GetTranslation`. Added the `Rulers` key to all language files.


    - **Marker label translation**

    The "Marker" label now uses `AutoSize = true` so that translated text (e.g. Italian "Marcatore") is no longer cut off.


    - **Event handler cleanup**

    Removed duplicate event subscriptions for `Shown`, `ResizeEnd`, `panelDesigner.Resize` and `panelDesignerInner.Scroll`. Only named methods are used, preventing double execution.


    - **Template names**

    Template file names in the "Template" menu are not translated – they remain as physical file names to avoid confusion.


    - **General code cleanup**

    Redundant lambda expressions removed, event handlers consolidated for better maintainability.


    - **Fixed NullReferenceException on skin load**

    The application no longer crashes when opening skins that are missing the `<colors>` or `<fonts>` nodes (e.g., skins that rely on `<include>` references). Fallback colors are automatically used when the skin XML is incomplete.


    - **Improved XML parsing robustness**

    Added null checks for critical XML nodes (`colors`, `fonts`, `output`) in `cDataBase`. The parser now logs warnings and continues with default values instead of throwing exceptions.


    - **Better include file handling**

    Missing `<include>` files are now skipped gracefully, with a warning logged to the console, preventing unexpected crashes when a skin references external files that are not present.


    - **Display skin resolution in window title**

    The main window title now includes the current skin resolution in parentheses (e.g., `Aglare-FHD (1920x1080)`). The resolution is also shown next to the skin name in the toolbar. A fallback resolution of `1280x720` is used when the skin XML does not specify one.


    - **General stability**

    The application is now more resilient to malformed or incomplete skin files, ensuring a smoother user experience even with custom or legacy skins.


    360408-pasted-from-clipboard-png



    360409-pasted-from-clipboard-png



    And now this very, very important change:

    NOW YOU CAN EDIT THE DEFAULT SKIN!

    :lolz:



    360414-pasted-from-clipboard-png



    Donate Donate

  • Version 5.0.0.4

    ### Changelog


    ### v5.0.0.4 by Lululla


    ### Complete migration to `AppSettings`


    - Replaced `Properties.Settings` with `AppSettings` (JSON stored in `%LocalAppData%\OpenSkinDesigner\settings.json`)

    - Fixed settings persistence on Windows 11 (file system virtualization was causing values to reset)

    - Settings are now saved in the application folder for debugging


    ### Bug fixes


    - Fixed settings loading on startup: `ApplySettingsToUi()` is now called **after** all menus are created, preventing `NullReferenceException`

    - Fixed `UseCustomLanguage()` crash when menus were not yet initialized

    - Added null checks in `StopAutoSaveTimer()` and `StartAutoSaveTimer()`

    - Fixed language selection persistence in the menu on restart

    - Debug MessageBoxes in `AppSettings` are now translated and only visible in DEBUG mode


    ### Code cleanup


    - Removed `RemoteConfig.cs` (obsolete)

    - Cleaned `app.config` – removed `<userSettings>` and `<configSections>` sections

    - Removed duplicate `Content` and `None` entries from `.csproj`; folders are now included using `**\*.*`

    - Unified Telnet and FTP settings into `AppSettings` (removed `telnet_config.json`)


    ### Translations


    - Language menu now loads correctly on startup


    ### Persistence


    - `settings.json` is now created in the same folder as the executable during debug

    - All values (language, paths, checkboxes, fallback color, Telnet/FTP credentials) are now properly saved and restored