--- a/AbstractSettingsApplication.st Sat Feb 21 17:40:29 2004 +0100
+++ b/AbstractSettingsApplication.st Sat Feb 21 17:41:56 2004 +0100
@@ -98,8 +98,10 @@
!
AbstractSettingsApplication subclass:#LanguageSettingsAppl
- instanceVariableNames:'languageHolder languageList listOfLanguages translatedLanguages
- noticeLabelHolder currentLanguageChannel currentLanguageLabel'
+ instanceVariableNames:'languageHolder languageIndexHolder languageList
+ languageListHolder listOfLanguages translatedLanguages
+ noticeLabelHolder currentFlagAndLanguageChannel
+ currentLanguageLabel'
classVariableNames:''
poolDictionaries:''
privateIn:AbstractSettingsApplication
@@ -3902,7 +3904,7 @@
label: 'Language Settings'
name: 'Language Settings'
min: (Point 10 10)
- bounds: (Rectangle 0 0 539 851)
+ bounds: (Rectangle 0 0 571 941)
)
component:
(SpecCollection
@@ -3916,9 +3918,9 @@
adjust: left
)
(LabelSpec
- label: 'Current:'
+ label: 'Current Language:'
name: 'Label1'
- layout: (LayoutFrame 134 0 0 0 -150 1 20 0)
+ layout: (LayoutFrame 51 0 0 0 -233 1 20 0)
translateLabel: true
labelChannel: currentLanguageLabel
adjust: right
@@ -3926,10 +3928,10 @@
(LabelSpec
label: 'Label'
name: 'CurrentLang'
- layout: (LayoutFrame -150 1 0 0 0 1 20 0)
- style: (FontDescription helvetica bold roman 12)
+ layout: (LayoutFrame -233 1 0 0 0 1 20 0)
+ style: (FontDescription arial bold roman 10)
translateLabel: true
- labelChannel: currentLanguageChannel
+ labelChannel: currentFlagAndLanguageChannel
adjust: left
)
(InputFieldSpec
@@ -3944,12 +3946,12 @@
(SequenceViewSpec
name: 'List1'
layout: (LayoutFrame 2 0.0 186 0 -2 1.0 -30 1.0)
- model: languageHolder
+ model: languageIndexHolder
hasHorizontalScrollBar: true
hasVerticalScrollBar: true
doubleClickSelector: doubleClick:
- useIndex: false
- sequenceList: languageList
+ useIndex: true
+ sequenceList: languageListHolder
)
(HorizontalPanelViewSpec
name: 'HorizontalPanel1'
@@ -3990,17 +3992,12 @@
!AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'actions'!
basicSaveSettings
- |fontPref fontPrefs idx language oldLanguage territory enc
- answer matchingFonts l screen newLanguage switch dialog anyWrong|
-
- newLanguage := self languageHolder value.
+ |fontPref fontPrefs language oldLanguage languageString territory enc
+ answer matchingFonts l screen switch dialog anyWrong|
+
+ language := self languageHolder value.
self withWaitCursorDo:[
- idx := translatedLanguages indexOf:newLanguage.
- idx ~~ 0 ifTrue:[
- language := listOfLanguages at:idx
- ] ifFalse:[
- language := newLanguage
- ].
+ languageString := translatedLanguages at:(self languageIndexHolder value).
(language includes:$-) ifTrue:[
l := language asCollectionOfSubstringsSeparatedBy:$-.
language := l at:1.
@@ -4044,7 +4041,7 @@
anyWrong := false.
(Array
with:MenuView defaultFont
- with:ListView defaultFont
+ "/ with:ListView defaultFont
with:EditTextView defaultFont
with:Button defaultFont)
do:[:fn |
@@ -4097,7 +4094,7 @@
].
switch ifTrue:[
- Transcript showCR:'Changing language setting to ' , newLanguage string , ' (' , language , ')...'.
+ Transcript showCR:'Changing language setting to ' , languageString string , ' (' , language , ')...'.
Smalltalk language:language asSymbol.
Smalltalk languageTerritory:territory asSymbol.
ResourcePack flushCachedResourcePacks.
@@ -4112,11 +4109,14 @@
].
DebugView newDebugger.
].
- self currentLanguageChannel value:self currentLanguage.
+ self initializeLanguages.
+ self languageListHolder value:languageList.
+ self currentFlagAndLanguageChannel value:self currentLanguage.
+ self setCurrentLanguageLabel.
+ self setNoticeLabel.
!
doubleClick:aEntry
-
self saveSettingsIfUnsavedChangesArePresent.
!
@@ -4126,7 +4126,7 @@
readSettings
self languageHolder value:self currentLanguage.
- self currentLanguageChannel value:self currentLanguage.
+ self currentFlagAndLanguageChannel value:self currentLanguage.
self modifiedChannel value:false
!
@@ -4142,24 +4142,22 @@
!AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'aspects'!
-currentLanguageChannel
-
- currentLanguageChannel isNil ifTrue:[
- currentLanguageChannel := self currentLanguage asValue.
- ].
- ^ currentLanguageChannel.
+currentFlagAndLanguageChannel
+ currentFlagAndLanguageChannel isNil ifTrue:[
+ currentFlagAndLanguageChannel := self currentLanguage asValue.
+ ].
+ ^ currentFlagAndLanguageChannel.
!
currentLanguageLabel
-
currentLanguageLabel isNil ifTrue:[
- currentLanguageLabel := (resources string:'Current Language:') asValue.
+ currentLanguageLabel := ValueHolder new.
+ self setCurrentLanguageLabel.
].
^ currentLanguageLabel.
!
languageHolder
-
languageHolder isNil ifTrue:[
languageHolder := self currentLanguage asValue.
languageHolder onChangeSend:#updateModifiedChannel to:self.
@@ -4167,38 +4165,55 @@
^ languageHolder.
!
+languageIndexChanged
+ self languageHolder value:(listOfLanguages at:self languageIndexHolder value).
+ self updateModifiedChannel.
+!
+
+languageIndexHolder
+ languageIndexHolder isNil ifTrue:[
+ languageIndexHolder := (self currentLanguageIndex) asValue.
+ languageIndexHolder onChangeSend:#languageIndexChanged to:self.
+ ].
+ ^ languageIndexHolder.
+!
+
+languageListHolder
+ languageListHolder isNil ifTrue:[
+ languageListHolder := self languageList asValue.
+ ].
+ ^ languageListHolder.
+!
+
noticeLabelHolder
-
noticeLabelHolder isNil ifTrue:[
- noticeLabelHolder := ((resources at:'LANG_MSG' default:'Select a Language') withCRs) asValue.
+ noticeLabelHolder := ValueHolder new.
+ self setNoticeLabel.
].
^ noticeLabelHolder.
+!
+
+setCurrentLanguageLabel
+ currentLanguageLabel value: (resources string:'Current Language:')
+!
+
+setNoticeLabel
+ noticeLabelHolder value: ((resources at:'LANG_MSG' default:'Select a Language') withCRs).
! !
!AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'initialization & release'!
-closeDownViews
- "This is a hook method generated by the Browser.
- It will be invoked when your app/dialog-window is really closed.
- See also #closeDownViews, which is invoked before and may suppress the close
- or ask the user for confirmation."
-
- "/ change the code below as required ...
- "/ This should cleanup any leftover resources
- "/ (for example, temporary files)
- "/ super closeRequest will initiate the closeDown
-
- "/ add your code here
-
- "/ do not remove the one below ...
- ^ super closeDownViews
-!
-
initialize
-
+ self initializeLanguages.
+ super initialize.
+!
+
+initializeLanguages
|flags|
- listOfLanguages := self class classResources at:'LIST_OF_OFFERED_LANGUAGES' default:#('default').
+ resources := self class classResources.
+
+ listOfLanguages := resources at:'LIST_OF_OFFERED_LANGUAGES' default:#('default').
listOfLanguages := listOfLanguages asOrderedCollection.
translatedLanguages := listOfLanguages
collect:[:lang | |item|
@@ -4240,25 +4255,37 @@
]
].
languageList := translatedLanguages with:flags collect:[:lang :flag | LabelAndIcon icon:flag string:lang.].
- super initialize.
! !
!AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'queries'!
currentLanguage
-
- | lang |
-
- lang := Language ~= LanguageTerritory ifTrue:[
- Language , '-' , LanguageTerritory
- ] ifFalse:[
- Language
- ].
- ^ languageList at:(listOfLanguages indexOf:lang ifAbsent:1)
+ ^ languageList at:(self currentLanguageIndex)
+!
+
+currentLanguageIndex
+ | langIdx |
+
+ (Language ~= LanguageTerritory) ifTrue:[
+ langIdx := listOfLanguages indexOf:(Language , '-' , LanguageTerritory) ifAbsent:nil.
+ ].
+ langIdx isNil ifTrue:[
+ langIdx := listOfLanguages indexOf:Language ifAbsent:nil.
+ ].
+ langIdx isNil ifTrue:[
+ langIdx := listOfLanguages indexOf:'en' ifAbsent:nil.
+ langIdx isNil ifTrue:[
+ langIdx := listOfLanguages indexOf:'en-us' ifAbsent:nil.
+
+ langIdx isNil ifTrue:[
+ langIdx := 1.
+ ]
+ ]
+ ].
+ ^ langIdx
!
hasUnsavedChanges
-
^ (self languageHolder value) ~= (self currentLanguage)
! !
@@ -11146,5 +11173,5 @@
!AbstractSettingsApplication class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.136 2004-02-20 18:47:54 cg Exp $'
-! !
+ ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.137 2004-02-21 16:41:56 cg Exp $'
+! !