[Cuis-dev] ThemeCustomizer: Save and Manage Personalized Themes

Juan Vuletich juan at cuis.st
Tue Dec 9 08:14:02 PST 2025


Hi Brenda,

Welcome to the Cuis community!

This is very nice. I've just pushed your code to our main GitHub repo. I 
also added your initials and name as a known Cuis contributor.

Thank you!

On 2025-12-05 12:00 AM, BRENDA BARLETTA via Cuis-dev wrote:
>
> Hello, everyone.
>
> I'm from *FIUBA,* currently taking the *Software Engineering I *course 
> under Professor Luciano Leveroni. I have been working to improve the 
> user experience within Cuis by enhancing the existing Theme Customizer.
>
> I noticed that, while users can personalize a theme, the configuration 
> is ephemeral; any work done is either lost immediately upon switching 
> back to a default theme or unintentionally overwritten upon subsequent 
> customization. This gap meant that any custom theme effort (which 
> requires the user to manually select, find the hexadecimal codes for, 
> and enter each color one-by-one) was non-reusable. I propose the 
> attached ChangeSet, which introduces a theme lifecycle management 
> system, which allows custom themes to be *named, saved, and recalled*.
>
> I thought of personalized themes as configuration data stored in a 
> class-side *Dictionary* (savedThemes is a Class-Side Instance Variable 
> of PersonalizedTheme class). This treats user themes as *globally 
> accessible configuration data* that must be singular for the entire 
> Cuis image. This approach prevents class hierarchy bloat (by avoiding 
> the creation of new Theme subclasses for every saved configuration).
>
> The decision to store user themes as *dynamic data* and integrate it 
> into the |PersonalizedTheme| class structure was driven by the desire 
> to provide a better user experience, maintaining the ThemeCustomizer's 
> non-coding path for saving configurations, in contrast to the existing 
> model of *one class per theme* (which actually forces the user to 
> write SmallTalk code to make a new theme and save it).
>
> In terms of user interface changes:
>
>     1. The Theme Customizer window now includes a set of control
>     buttons: a *"Save Theme"* button, which prompts the user to enter
>     a name for the current configuration, and the standard *"Cancel"*
>     button to close the ThemeCustomizer window.
>
>     2. A new *"Manage Themes"* button opens a comprehensive menu,
>     allowing users to view all their saved themes. From this menu,
>     users can either instantly apply a theme or *permanently delete* a
>     saved configuration.
>
>     3. All user-defined themes are dynamically added to the *World >
>     Preferences > Themes* menu, ensuring immediate accessibility after
>     saving, exactly like the default system themes.
>
> *
> Regarding the Attached ChangeSets and Installation:
>
> *I have attached *two separate ChangeSet files* which collectively 
> contain the full feature. This separation was necessary due to the 
> architectural division of the changes:
>
>  *
>
>     *File 1: *|*Theme-class-changeTheme.cs.st
>     <http://Theme-class-changeTheme.cs.st>*, c|ontains the
>     modification to the base *theme **|class >> changeTheme. |*This
>     file can be loaded independently in any Cuis image.
>
>  *
>
>     *File 2: |ThemeCustomizer-AddSavingAndManagement.cs.st
>     <http://ThemeCustomizer-AddSavingAndManagement.cs.st>,|* contains
>     the new logic added to both *PersonalizedTheme *and
>     *ThemeCustomizerWindow* classes*. *This file is intended to be
>     applied *after* the *|Theme-Themes|* package has been loaded (via
>     |World > Preferences > Load Themes|), as the new changes depend on
>     classes defined there.
>
>
> *For successful loading, please ensure the Theme-Themes package is 
> loaded before filing in *|ThemeCustomizer-AddSavingAndManagement.cs.|*st*
>
> Thank you for your time!
>
>
-- 
Juan Vuletich
www.cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20251209/004c40f5/attachment.htm>


More information about the Cuis-dev mailing list