<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Folks,<br>
    <br>
    Apologies for not getting more involved in this discussion.<br>
    <br>
    I think Preferences need a good rethinking. Please feel free to
    discard all that is currently there! I'm sure the community will
    come up with a better design that the current one.<br>
    <br>
    While you are all at this, I'm pretty sure that many of the existing
    preferences are not worth keeping, and replacing them in senders
    with the default behavior is totally ok. No one wants to browse
    hundreds of useless preferences to find the few that really make
    sense. Feel free to discard anything!<br>
    <br>
    Thanks a lot!<br>
    <br>
    <br>
    <blockquote cite="mid:22630e44-3ab9-b388-dab7-5fc8d7356e75@drgeo.eu"
      type="cite">
      <p>Hi all,</p>
      <p>The Preference model in Cuis, to my current knowledge, is
        composed of two classes: Preference<b>s</b> and Preference. I
        will write down the analysis of how it is working<br>
      </p>
      <p><b>Preference.</b> Its instance defines one preference facet,
        its initial design is clearly targeted for boolean but there are
        use case for non boolean. There instances variables are:</p>
      <ul>
        <li>name helpString - symbol name and detailed description<br>
        </li>
        <li>value defaultValue - current value and a default value. Most
          value are boolean but some Preference instance comes with a
          non boolean value, without possibility to know its type, the
          method to toggle the value then breaks.<br>
        </li>
        <li>categoryList - an array of selector describing the
          categories the preference belongs to. I think one selector is
          enough. <b>Opinion?</b><br>
        </li>
        <li>changeInformee changeSelector - an object and selector to
          inform of value changed. I don't think it is good design, it
          is limited to one object and it should use triggerEvent. <b>Opinion?</b></li>
      </ul>
      <p>To overcome the limitation of Preference mode, we could have
        subclasses of Preference, each specialized in one form of
        preference model: list, free text, closure, boolean, integer,
        integer in an interval, color, etc. Each one could be then
        extended in a third party package with the appropriate widget to
        edit its content.<br>
      </p>
      <p><b>Preferences. </b>This is where the preferences are stored.
        The behavior is only in the class side, with two class
        variables. For me there is a concern with the responsibilities.
        For example there are methods to set the particular state of a
        Preference instance. For example #forTouch. I don't think it
        belongs there. In short the class is a bit a mess, 167 methods.
        <b>Opinion?</b><br>
      </p>
      <ul>
        <li>DictionaryOfPreferences - Hold the Preference instances.<br>
        </li>
        <li>Parameters - Unclear. <b>Opinion?</b><br>
        </li>
      </ul>
      <p>The way to query the preferences is what make the class method
        numerous in Preferences.  Worst, in the base system there are
        Preferences methods for packages absent in the system, for
        example. The specific preferences instances should be
        instantiated in these packages, in the ad-hoc initialize class
        method, or so. <b>Opinion?</b><br>
      </p>
      <p>Querying a Preference instance with a symbol could make
        Preferences much less cumbersome. Preferences for:
        #soundsEnabled, Preferences value: #soundsEnabled, etc. <b>Opinion?</b><br>
      </p>
      <p>The perspective is also Preferences used by third-party
        Application.</p>
      <p>There is more to write but keep it for later.</p>
      <p>Hilaire<br>
      </p>
      --
      <pre>GNU Dr. Geo
<a moz-do-not-send="true" href="http://drgeo.eu">http://drgeo.eu</a>
<a moz-do-not-send="true" href="http://blog.drgeo.eu">http://blog.drgeo.eu</a></pre>
      <pre wrap=""></pre>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a class="moz-txt-link-freetext" href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a>
<a class="moz-txt-link-freetext" href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a class="moz-txt-link-freetext" href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a class="moz-txt-link-freetext" href="https://twitter.com/JuanVuletich">https://twitter.com/JuanVuletich</a></pre>
  </body>
</html>