OpenSkinDesigner Setup

There are 23 replies in this Thread which was already clicked 3,054 times. The last Post () by Lululla.

  • Lululla added a new file:

  • Lululla

    Closed the thread.
  • Lululla added a new version:

  • Lululla added a new version:

  • Lululla added a new version:

  • Lululla added a new version:

  • Lululla added a new version:

  • Lululla added a new version:

  • Lululla added a new version:

    Quote

    ### Changelog


    ### v5.0.0.3 by Lululla

    **Minor fixes**: Corrected Preference save on close.

  • Lululla added a new version:

  • Lululla added a new version:




    **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


    DonateDonate

  • Lululla added a new version:




    ### 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


    Thanks@




    GitHub release

    .NET Windows Forms C#

    Visitors



    DonateDonate

  • Lululla added a new version:




    ### 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:  Donate  Donate

  • Lululla added a new version:




    ### 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


    pasted-from-clipboard.png


    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.

    • Official Post

    for next version coming soon..



    ## 📋 Summary of Changes


    ### 1. `sAttributeLabel.cs`


    - Added properties: `ShadowColor`, `ShadowOffset`, `Ellipsis`, `Truncate`, `LineHeight`, `FontScale`, `WrapMode`

    - Added `WrapModeValue` public property exposing internal `_wrapMode`

    - Added `WrapModeConverter` for UI dropdown (noWrap / wrap / ellipsis)

    - Added `ParseWrap()` method supporting: `noWrap`, `off`, `0`, `wrap`, `on`, `1`, `ellipsis`, `2`

    - Added `ParseFontScale()` method supporting `size;N` and `width;N` formats

    - Constructor reads `fontScale`, `wrap`, `ellipsis`, `truncate`, `lineHeight`, `shadowColor`, `shadowOffset` from XML

    - Fixed `FormatException` on `wrap="ellipsis"` by using `ParseWrap()` instead of `Convert.ToUInt32()`


    ### 2. `sGraphicFont.cs`


    - Updated constructors to accept: `shadowColor`, `shadowOffset`, `ellipsis`, `truncate`, `lineHeight`, `wrapMode`, `fontScaleType`, `fontScaleValue`

    - Added private fields: `_wrapMode`, `_fontScaleType`, `_fontScaleValue`

    - Implemented `wrapMode == 2` → `StringTrimming.EllipsisWord` (RT_ELLIPSIS)

    - Implemented `fontScaleType == 1` → override `pSize` with `_fontScaleValue`

    - Implemented `fontScaleType == 2` → horizontal compression via `Graphics.ScaleTransform()`

    - Applied `lineHeight` to text rectangle

    - Added shadow rendering with `shadowColor` and `shadowOffset`

    - Added **absolute fallback**: if `pFont` is null, use `System.Drawing.Font("Arial", ...)`

    - Added **color fallback**: if `pColor` is null or transparent, use `Color.Yellow`


    ### 3. `sGraphicLabel.cs`


    - Added `ParseFontScaleFromString()` helper

    - Updated all `new sGraphicFont(...)` calls to pass: `wrapMode`, `scaleType`, `scaleValue`

    - Now reads `pAttrLabel.WrapModeValue`, `pAttrLabel.FontScale`, `pAttrLabel.ShadowColor`, `pAttrLabel.ShadowOffset`, `pAttrLabel.Ellipsis`, `pAttrLabel.Truncate`, `pAttrLabel.LineHeight`


    ### 4. `sAttributeSlider.cs`


    - Added `SliderPixmap` property (field, property, and XML constructor parsing)

    - Rendered via `sGraphicSlider`


    ### 5. `sGraphicSlider.cs`


    - Added `sliderPixmap` rendering in `paint()` using `sGraphicImage`

    - Falls back to `foregroundColor` if `sliderPixmap` is not present


    ### 6. `sAttributeListbox.cs`


    - Added properties: `SeparatorLineColor`, `SeparatorLineSize`, `SelectionZoomSize`

    - All fields marked `public` for access from `sGraphicWidget` and `sGraphicListbox`


    ### 7. `sGraphicListbox.cs`


    - Added separator line rendering (`SeparatorLineColor` + `SeparatorLineSize`) inside item loop

    - Added `SelectionZoom` support (font scaling for selected item)


    ### 8. `sAttributeWidget.cs`


    - Exposed new properties: `SeparatorLineColor`, `SeparatorLineSize`, `SelectionZoomSize` through `pListbox`

    - Already supports `FontScale`, `WrapMode` via `pLabel`


    ### 9. `sGraphicWidget.cs`


    - Fixed **background rendering**: now explicitly draws `label.pBackgroundColor` and `label.pBackgroundGradient` **before** calling `sGraphicLabel`

    - Added null checks for `pLabel`, `pPixmap`, `pProgress`, `pListbox`, `pSlider`


    ### 10. `cXMLHandler.cs`


    - Fixed nested include crash: use `Path.GetFileName(fname)` as node name to prevent malformed paths like `skin_..\skin_default.xml.xml`

    - Fixed **double `.xml.xml` extension** in `XmlToFile()`:

    ```csharp

    if (!xmlPath.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))

    xmlPath = xmlPath + ".xml";

    else if (xmlPath.EndsWith(".xml.xml", StringComparison.OrdinalIgnoreCase))

    xmlPath = xmlPath.Substring(0, xmlPath.Length - 4);

    ```

    - **Removed include saving** (the block that created `skin_*.xml` copies) to prevent file clutter


    ### 11. `fMain.cs`


    - Added `CleanBackupFiles()` method called in `FormClosing`

    - Cleans all `skinName_*.xml` files and fixes `*.xml.xml` double extensions

    - Keeps only the main skin file


    ### 12. `LicenseManager.cs`


    - Added fallback: if `license.lic` has no HMAC signature but the key is valid, regenerate it with signature


    ### 13. `cConverter.cs`


    - Added new converter classes: `MovieInfo`, `ExtraInfo`, `AudioInfo`, `VideoInfo`, `SubtitleInfo`


    ---



    ## ✅ Implemented Features (from `skin.py`)


    | Feature | Status |

    |---------|--------|

    | `shadowColor` / `shadowOffset` | ✅ |

    | `ellipsis` / `truncate` | ✅ |

    | `lineHeight` | ✅ |

    | `fontScale="size;N"` | ✅ |

    | `fontScale="width;N"` | ✅ |

    | `wrap="ellipsis"` (RT_ELLIPSIS) | ✅ |

    | `separatorLineColor` / `separatorLineSize` | ✅ |

    | `sliderPixmap` | ✅ |

    | `selectionZoom` / `selectionZoomSize` | ✅ |


    ---



    pasted-from-clipboard.png


    pasted-from-clipboard.png  pasted-from-clipboard.png


    pasted-from-clipboard.png  pasted-from-clipboard.png


    pasted-from-clipboard.png  pasted-from-clipboard.png


    pasted-from-clipboard.png  pasted-from-clipboard.png




    FIXED WINDOWSTYLE ;)
    now buttons cliccable for add/edit image :)


    pasted-from-clipboard.png



    all file "include"

    perfected the included system


    pasted-from-clipboard.png


    and other code fot atv image Captain

  • Post by Lululla ().

    This post was deleted by the author themselves ().
    • Official Post




    ...a and more


    pasted-from-clipboard.png




    pasted-from-clipboard.png  pasted-from-clipboard.png


    pasted-from-clipboard.png  pasted-from-clipboard.png


    pasted-from-clipboard.png  pasted-from-clipboard.png

    pasted-from-clipboard.png  pasted-from-clipboard.png




    ### Changelog


    ## 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.


    ---

  • Lululla added a new version:




    ### 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

    • Official Post

    :smiling face:


  • Post by Lululla ().

    This post was deleted by the author themselves ().
  • Lululla added a new version:


    ### 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.




    pasted-from-clipboard.png  pasted-from-clipboard.png


    pasted-from-clipboard.png pasted-from-clipboard.png


    pasted-from-clipboard.png pasted-from-clipboard.png




    https://github.com/OwnerPlugins/OpenSkin-Designer/raw/refs/heads/main/updates/OpenSkinDesigner.zip

Your hub for Enigma2 tools and utilities

Get downloads, support, and toolboxes for configuration and management software on Windows, Linux, and Android. Find essential Enigma2 tools for all platforms. Access downloads, support, and utilities for Windows, Linux, and Android to manage your receiver.