<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi Brenda,</p>
<p>Welcome to the Cuis community!</p>
<p>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.</p>
<p>Thank you!</p>
<div class="moz-cite-prefix">On 2025-12-05 12:00 AM, BRENDA BARLETTA
via Cuis-dev wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAB1wbqd+80Qvuuys4BaMrMGVEMOn7=qoUx+02GvurhNH497a_w@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<p>Hello, everyone.</p>
<p>I'm from <b>FIUBA,</b> currently taking the <b>Software
Engineering I </b>course under Professor Luciano
Leveroni. I have been working to improve the user
experience within Cuis by enhancing the existing Theme
Customizer.<br>
<br>
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 <b>named, saved, and recalled</b>. <br>
<br>
I thought of personalized themes as configuration data
stored in a class-side <b>Dictionary</b> (savedThemes is
a Class-Side Instance Variable of PersonalizedTheme
class). This treats user themes as <b>globally accessible
configuration data</b> 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).<br>
<br>
The decision to store user themes as <b>dynamic data</b> and
integrate it into the <code><font
face="arial, sans-serif">PersonalizedTheme</font></code>
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 <b>one class per theme</b> (which
actually forces the user to write SmallTalk code to make a
new theme and save it).<br>
<br>
In terms of user interface changes:</p>
</div>
</div>
<blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div dir="ltr">
<div dir="ltr">
<p>1. The Theme Customizer window now includes a set of
control buttons: a <b>"Save Theme"</b> button, which
prompts the user to enter a name for the current
configuration, and the standard <b>"Cancel"</b> button
to close the ThemeCustomizer window.<br>
<br>
2. A new <b>"Manage Themes"</b> button opens a
comprehensive menu, allowing users to view all their
saved themes. From this menu, users can either instantly
apply a theme or <b>permanently delete</b> a saved
configuration.<br>
<br>
3. All user-defined themes are dynamically added to the
<b>World > Preferences > Themes</b> menu, ensuring
immediate accessibility after saving, exactly like the
default system themes.</p>
</div>
</div>
</blockquote>
<div dir="ltr">
<div dir="ltr">
<p><b><br>
Regarding the Attached ChangeSets and Installation:<br>
<br>
</b>I have attached <b>two separate ChangeSet files</b>
which collectively contain the full feature. This
separation was necessary due to the architectural division
of the changes:</p>
<ul>
<li>
<p><b>File 1: </b><code><font face="arial, sans-serif"><b><a
href="http://Theme-class-changeTheme.cs.st"
moz-do-not-send="true">Theme-class-changeTheme.cs.st</a></b>,
c</font></code>ontains the modification to the
base <b>theme </b><font face="arial, sans-serif"><b><code><font
face="arial, sans-serif">class >>
changeTheme. </font></code></b></font>This
file can be loaded independently in any Cuis image.</p>
</li>
<li>
<p><b>File 2: <code><font face="arial, sans-serif"><a
href="http://ThemeCustomizer-AddSavingAndManagement.cs.st"
moz-do-not-send="true">ThemeCustomizer-AddSavingAndManagement.cs.st</a>,</font></code></b> contains
the new logic added to both <b>PersonalizedTheme </b>and
<b>ThemeCustomizerWindow</b> classes<b>. </b>This file
is intended to be applied <b>after</b> the <b><code><font
face="arial, sans-serif">Theme-Themes</font></code></b>
package has been loaded (via <font
face="arial, sans-serif"><code><font
face="arial, sans-serif">World > Preferences
> Load Themes</font></code>)</font>, as the
new changes depend on classes defined there.</p>
</li>
</ul>
<p><br>
<b>For successful loading, please ensure the Theme-Themes
package is loaded before filing in </b><code
style="font-weight:bold"><font face="arial, sans-serif">ThemeCustomizer-AddSavingAndManagement.cs</font>.</code><b>st</b><br>
</p>
<p><span class="gmail-"></span></p>
<p>Thank you for your time!</p>
</div>
</div>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</blockquote>
<pre class="moz-signature" cols="72">--
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis.st">www.cuis.st</a>
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich</pre>
</body>
</html>