[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