eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'AbstractSettingsApplication':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: AbstractSettingsApplication


Inheritance:

   Object
   |
   +--Model
      |
      +--ApplicationModel
         |
         +--AbstractSettingsApplication
            |
            +--AbstractServerSettingsApplication
            |
            +--AbstractSettingsApplication::AllSettingsAppl
            |
            +--AbstractSettingsApplication::AutoloadedPackagesSettingsAppl
            |
            +--AbstractSettingsApplication::BuildSettingsAppl
            |
            +--AbstractSettingsApplication::ByteCodeCompilerSettingsAppl
            |
            +--AbstractSettingsApplication::ChangeFileSettingsAppl
            |
            +--AbstractSettingsApplication::CodeGeneratorSettingsAppl
            |
            +--AbstractSettingsApplication::CommunicationLoggingSettingsAppl
            |
            +--AbstractSettingsApplication::DebuggerSettingsAppl
            |
            +--AbstractSettingsApplication::DisplaySettingsAppl
            |
            +--AbstractSettingsApplication::EditSettingsAppl
            |
            +--AbstractSettingsApplication::GeneralCompilerSettingsAppl
            |
            +--AbstractSettingsApplication::HTTPStartServerSettingsApplication
            |
            +--AbstractSettingsApplication::KbdMappingSettingsAppl
            |
            +--AbstractSettingsApplication::LanguageSettingsAppl
            |
            +--AbstractSettingsApplication::MemorySettingsAppl
            |
            +--AbstractSettingsApplication::MiscBridgeCommunicationSettingsAppl
            |
            +--AbstractSettingsApplication::MiscCommunicationSettingsAppl
            |
            +--AbstractSettingsApplication::MiscDisplay2SettingsAppl
            |
            +--AbstractSettingsApplication::MiscDisplaySettingsAppl
            |
            +--AbstractSettingsApplication::MiscSmalltalkCommunicationSettingsAppl
            |
            +--AbstractSettingsApplication::OsiSettingsAppl
            |
            +--AbstractSettingsApplication::PackagePathSettingsAppl
            |
            +--AbstractSettingsApplication::PrinterSettingsAppl
            |
            +--AbstractSettingsApplication::ProcessorSchedulerSettingsAppl
            |
            +--AbstractSettingsApplication::RDoItServerSettingsAppl
            |
            +--AbstractSettingsApplication::SQLServerSettingsAppl
            |
            +--AbstractSettingsApplication::STCCompilerSettingsAppl
            |
            +--AbstractSettingsApplication::SourceCodeFormatSettingsAppl
            |
            +--AbstractSettingsApplication::SourceCodeManagementSettingsAppl
            |
            +--AbstractSettingsApplication::StyleSettingsAppl
            |
            +--AbstractSettingsApplication::SyntaxColorSettingsAppl
            |
            +--AbstractSettingsApplication::SystemBrowserSettingsAppl
            |
            +--AbstractSettingsApplication::SystemMessageSettingsAppl
            |
            +--AbstractSettingsApplication::TerminalViewSettingsAppl
            |
            +--AbstractSettingsApplication::ToolboxSettingsAppl
            |
            +--AbstractSettingsApplication::ToolsSettingsAppl
            |
            +--AbstractSettingsApplication::WorkspaceSettingsAppl
            |
            +--AbstractSourceCodeManagementSettingsAppl
            |
            +--FileBrowserV2SettingsAppl
            |
            +--SettingsDialog::SettingsFilenameAppl
            |
            +--Tools::CodeView2SettingsAppl
            |
            +--Tools::FontSettingsApplication
            |
            +--Tools::LintRuleSettingsApplication

Package:
stx:libtool
Category:
Interface-Smalltalk
Version:
rev: 1.720 date: 2018/05/23 03:53:50
user: cg
file: AbstractSettingsApplication.st directory: libtool
module: stx stc-classLibrary: libtool

Description:


This is an abstract framework for settings applications.
For a real settings dialog, you need a concrete settings dialog class to hold the pages
(as an example, see SettingsDialog)
and someone who specifies the hierarchy of settings-pages in a spec.
(as an example, see SettingsDialog class>>defaultSettingsApplicationList)

typical use:

    |settingsList settingsApp|

    settingsList := NewLauncher settingsList.

    settingsApp := SettingsDialog new.
    'settingsApp requestor:requestingApplication'.
    settingsApp installSettingsEntries:settingsList.
    settingsApp allButOpen.
    settingsApp window label:('ST/X Settings').
    settingsApp openWindow.


Class protocol:

defaults
o  classResources

o  resourcePackName
return the name which is used as the fileNameBase of my resource file.
Here, use the same resources as the Launcher

o  subEntryRawSettingsList
redefine if I have sub-settings entries

interface specs
o  windowSpec

o  windowSpecForDialog
This resource specification was automatically generated
by the UIPainter of ST/X.
usage example(s):
     UIPainter new openOnClass:AbstractSettingsApplication andSelector:#windowSpecForDialog
     AbstractSettingsApplication new openInterface:#windowSpecForDialog

queries
o  isAbstract

o  quickSearchStrings
returns a set of words to match in the quickSearch.
Here, as a fallback, the keys from the help spec,
the widget names and label aspects are returned
Notice that both all words and its current language translation are included
in the set and will be matched against the word in the quick search field
usage example(s):
     AbstractSettingsApplication::BuildSettingsAppl quickSearchStrings


Instance protocol:

accessing
o  clearDidModifySettings
clear the flag that any settings was changed.
Not to confuse with the modified flag, which means that a settings app's
changes must be stored into the UserPreferences.
This one tells if any UserPreferences has been changed, and the userPrefs
should be saved back to the settings.rc file

o  didModifySettings
true, if any settings was changed.
Not to confuse with the modified flag, which means that a settings app's
changes must be stored into the UserPreferences.
This one tells if any UserPreferences has been changed, and the userPrefs
should be saved back to the settings.rc file

o  requestor: anotherApplication

o  settingsDialog

o  settingsDialog: aSettingsDialog

o  settingsString

actions
o  accept

o  discardChangesAndReadSettings

o  evaluateModified

o  readSettings

o  reopenToolsAfterChangedViewStyleSetting

o  saveRequest

o  saveRequestAsking: askForChangeOnRelease
sr: bugfix: sorry but #confirmWithCancel:
does not support #noButton like #confirm: does.
Problem #noButton is always nil.
Seams like copy&paste code from #closeRequest but #confirm replaced by #confirmWithCancel.
I did a quick look, about how to support #noButton also for #confirmWithCancel:
but the effort and stability risks are too high for me for such a gimmick

o  saveSettings

o  saveSettingsIfUnsavedChangesArePresent

o  updateModifiedChannel

aspects
o  aspects
if redefined to return a non-nil list of preference-key aspects,
you can then use the basicSaveSettings/basicReadSettings/hasUnsavedChanges
as inherited from here.
Otherwise, if you do not want the aspect-list-keys to be read/saved in the settings,
you MUST redefine all of the 3 above mentioned methods.

o  modifiedChannel

helpers
o  hasChangedAspectIn: aListOfAspects asComparedTo: anAspectProvider
this code-sharing helper compares a bunch of aspect value against some object.
The object is typically the current userPreferences object, or a flag-holder, such
as ParserFlags.
Using this, and a list of aspect selectors replaces code like:
someone aspect1 ~= (self aspect1 value) ifTrue:[^ true].
someone aspect2 ~= (self aspect2 value) ifTrue:[^ true].
...
someone aspectN ~= (self aspectN value) ifTrue:[^ true].
^ false
Prerequisite:
local aspects must be named like corresponding aspect methods in the flag-provider.

o  myAspectHolderFor: aspectSymbol
used to be (self perform:aspectSymbol),

o  readAspects: aListOfAspects from: anAspectProvider
this code-sharing helper reads a bunch of aspect values from some object.
The object is typically the current userPreferences object, or a flag-holder, such
as ParserFlags.
Using this, and a list of aspect selectors replaces code like:
self aspect1 value:(someone aspect1).
self aspect2 value:(someone aspect2).
...
self aspectN value:(someone aspectN).
Prerequisite:
local aspects must be named like corresponding aspect methods in the flag-provider.

o  writeAspects: aListOfAspects to: anAspectProvider
this code-sharing helper writes a bunch of aspect values into some object.
The object is typically the current userPreferences object, or a flag-holder, such
as ParserFlags.
Using this, and a list of aspect selectors replaces code like:
someone aspect1:(self aspect1 value).
someone aspect2:(self aspect2 value).
...
someone aspectN:(self aspectN value).
Prerequisite:
local aspects must be named like corresponding aspect methods in the flag-provider.

hooks
o  preOpenWith: anUIBuilder
(comment from inherited method)
this is sent before the applications main window is opened.
Can be redefined in subclasses for actions right before opening the view.

initialization
o  initialize
must be called if redefined

o  initializeCurrentUserPreferences

menu
o  settingsDialogPopUpMenu

opening
o  open
open a standard interface.
Sorry, but for visualworks compatibility, the builder is returned

protocol
o  askForChangeOnRelease
shall we ask if changed settings should be saved, when closing?

o  basicReadSettings
utility to read aspects as listed in the aspects method.
If that has not been redefined, an error will be reported,
as you should then redefine this method in a subclass

** This method raises an error - it must be redefined in concrete classes **

o  basicSaveSettings
utility to save aspects as listed in the aspects method.
If that has not been redefined, an error will be reported,
as you should then redefine this method in a subclass

** This method raises an error - it must be redefined in concrete classes **

o  editorHelpRelativeWikiURL
the relative URL of the dialog-description in the Wiki

o  hasUnsavedChanges
utility to check for changed aspects as listed in the aspects method.
If that has not been redefined, an error will be reported,
as you should then redefine this method in a subclass

** This method raises an error - it must be redefined in concrete classes **

o  help

o  helpFilename
subclasses must return either the relative path of a helpFile
in the doc/online/<language>/help directory,
or an absolute path (typically in its packageDirectory).
If an absolute filename is returned, the %(lang) sequence is replaced
by the current user's language.
Or nil, if no help is available.

** This method raises an error - it must be redefined in concrete classes **

o  widgetsWithChangedSettingsDo: aBlock
to be redefined in subclasses...

queries
o  hasValuesDifferentFromDefault

o  isEnabledInSettingsDialog: aSettingsDialog

o  itemPathName

o  quickSearchStrings
returns a set of keywords to match in the quickSearch.
Notice that both the word and its current language translation is matched against
the text in the quick search field


Private classes:

    AllSettingsAppl
    AutoloadedPackagesSettingsAppl
    BuildSettingsAppl
    ByteCodeCompilerSettingsAppl
    ChangeFileSettingsAppl
    CodeGeneratorSettingsAppl
    CommunicationLoggingSettingsAppl
    DebuggerSettingsAppl
    DisplaySettingsAppl
    EditSettingsAppl
    GeneralCompilerSettingsAppl
    HTTPStartServerSettingsApplication
    KbdMappingSettingsAppl
    LanguageSettingsAppl
    MemorySettingsAppl
    MiscBridgeCommunicationSettingsAppl
    MiscCommunicationSettingsAppl
    MiscDisplay2SettingsAppl
    MiscDisplaySettingsAppl
    MiscSmalltalkCommunicationSettingsAppl
    OsiSettingsAppl
    PackagePathSettingsAppl
    PrinterSettingsAppl
    ProcessorSchedulerSettingsAppl
    RDoItServerSettingsAppl
    SQLServerSettingsAppl
    STCCompilerSettingsAppl
    SourceCodeFormatSettingsAppl
    SourceCodeManagementSettingsAppl
    StyleSettingsAppl
    SyntaxColorSettingsAppl
    SystemBrowserSettingsAppl
    SystemMessageSettingsAppl
    TerminalViewSettingsAppl
    ToolboxSettingsAppl
    ToolsSettingsAppl
    WorkspaceSettingsAppl


ST/X 7.1.0.0; WebServer 1.663 at exept.de:8081; Thu, 23 May 2019 19:13:38 GMT