Skip to content

Commit

Permalink
Adding default values so, the setting is not stored unless it is diff…
Browse files Browse the repository at this point in the history
…erent than the default value.
  • Loading branch information
tesonep committed Jan 10, 2020
1 parent e23e445 commit 190d712
Show file tree
Hide file tree
Showing 12 changed files with 81 additions and 25 deletions.
55 changes: 39 additions & 16 deletions src/BlueInk-Core/BIConfigurableFormatter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -333,50 +333,73 @@ BIConfigurableFormatter class >> settingsOn: aBuilder [
description: 'Settings related to the formatter';
with:
[
(aBuilder setting: #formatCommentWithStatements) label: 'Format comment with statements'.
(aBuilder setting: #indentString) label: 'Indent string'.
(aBuilder setting: #indentsForKeywords) label: 'Indents for keywords'.
(aBuilder setting: #formatCommentWithStatements)
default: true; label: 'Format comment with statements'.
(aBuilder setting: #indentString)
default: Character tab asString; label: 'Indent string'.
(aBuilder setting: #indentsForKeywords)
default: 1; label: 'Indents for keywords'.
(aBuilder setting: #keepBlockInMessage)
default: true;
label: 'Keep block in message';
description: (BIFormatSettingsExample >> #keepBlockInMessageExample) sourceCode.
(aBuilder setting: #lineUpBlockBrackets)
default: false;
label: 'Line up block brackets';
description: (BIFormatSettingsExample >> #lineUpBlockBracketsExample) sourceCode.
(aBuilder setting: #methodSignatureOnMultipleLines)
default: false;
label: 'Method signature on multiple lines'.
(aBuilder setting: #oneLineMessages) label: 'One line messages'.
(aBuilder setting: #multiLineMessages) label: 'Multi line messages'.
(aBuilder setting: #oneLineMessages)
default: '#(#to: #to:do: #to:by: #to:by:do:)';
label: 'One line messages'.
(aBuilder setting: #multiLineMessages)
default: '#(#ifTrue:ifFalse: #ifFalse:ifTrue: #ifTrue: #ifFalse: #on:do: #ensure: #ifCurtailed:)';
label: 'Multi line messages'.
(aBuilder setting: #minimumNewLinesBetweenStatements)
default: 1;
label: 'Minimum new lines between statements'.
(aBuilder setting: #newLineAfterCascade)
label: 'New line after cascade';
default: true;
description: (BIFormatSettingsExample >> #newLineAfterCascadeExample) sourceCode.
(aBuilder setting: #newLineBeforeFirstCascade)
label: 'New line before first cascade';
default: true;
description: (BIFormatSettingsExample >> #newLineBeforeFirstCascadeExample) sourceCode.
(aBuilder setting: #newLineBeforeFirstKeyword)
label: 'New line before first keyword';
default: false;
description: (BIFormatSettingsExample >> #newLineBeforeFirstKeywordExample) sourceCode.
(aBuilder setting: #newLinesAfterMethodComment) label: 'New lines after method comment'.
(aBuilder setting: #newLinesAfterMethodPattern) label: 'New lines after method pattern'.
(aBuilder setting: #newLinesAfterTemporaries) label: 'New lines after temporaries'.
(aBuilder setting: #newLinesAfterMethodComment) default: 2; label: 'New lines after method comment'.
(aBuilder setting: #newLinesAfterMethodPattern) default: 1; label: 'New lines after method pattern'.
(aBuilder setting: #newLinesAfterTemporaries) default: 1; label: 'New lines after temporaries'.
(aBuilder setting: #numberOfArgumentsForMultiLine)
default: 4;
label: 'Number of arguments for multi line'.
(aBuilder setting: #periodsAsTerminators) label: 'Periods as terminators'.
(aBuilder setting: #periodsAtEndOfBlock) label: 'Periods at end of block'.
(aBuilder setting: #periodsAtEndOfMethod) label: 'Periods at end of method'.
(aBuilder setting: #periodsAsTerminators) default: false; label: 'Periods as terminators'.
(aBuilder setting: #periodsAtEndOfBlock) default: false; label: 'Periods at end of block'.
(aBuilder setting: #periodsAtEndOfMethod) default: false; label: 'Periods at end of method'.
(aBuilder setting: #retainBlankLinesBeforeComments)
default: true;
label: 'Retain blank lines before comments'.
(aBuilder setting: #retainBlankLinesBetweenStatements)
default: false;
label: 'Retain blank lines between statements'.
(aBuilder setting: #selectorAndArgumentCombinedMaxSize)
default: 40;
label: 'Selector and argument combined in method signature max size'.
(aBuilder setting: #stringFollowingReturn) label: 'String following return'.
(aBuilder setting: #stringInsideBlocks) label: 'String inside blocks'.
(aBuilder setting: #stringInsideParentheses) label: 'String inside parentheses'.
(aBuilder setting: #traditionalBinaryPrecedenceArray) label: 'Traditional binary precedence'.
(aBuilder setting: #useBasicCommentFormat) label: 'Use basic comment format'.
(aBuilder setting: #stringFollowingReturn) default: ' '; label: 'String following return'.
(aBuilder setting: #stringInsideBlocks) default: ' '; label: 'String inside blocks'.
(aBuilder setting: #stringInsideParentheses) default: ''; label: 'String inside parentheses'.
(aBuilder setting: #traditionalBinaryPrecedenceArray)
default: '#(#($| $& $?) #($= $~ $< $>) #($- $+) #($* $/ $% $\) #($@))';
label: 'Traditional binary precedence'.
(aBuilder setting: #useBasicCommentFormat)
default: true;
label: 'Use basic comment format'.
(aBuilder setting: #useTraditionalBinaryPrecedenceForParentheses)
default: true;
label: 'Use traditional binary precedence for parentheses' ]
]

Expand Down
1 change: 1 addition & 0 deletions src/EmbeddedFreeType/SourceCodeFonts.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ SourceCodeFonts class >> settingsOn: aBuilder [
iconName: #smallConfigurationIcon;
label: 'Source Code Fonts';
description: 'Use Source Code Pro Fonts';
default: SourceCodeFonts;
precondition: [ FT2Library current isAvailable not ];
dialog: [ self fontSourceCodeRow ]
]
Expand Down
10 changes: 8 additions & 2 deletions src/FileSystem-Core/SystemResolver.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ Class {
#category : #'FileSystem-Core-Base-Resolver'
}

{ #category : #accessing }
SystemResolver class >> defaultLocalDirectory [
^ (FileLocator imageDirectory / self defaultLocalDirectoryName)
resolve
]

{ #category : #accessing }
SystemResolver class >> defaultLocalDirectoryName [
^ 'pharo-local'
Expand All @@ -23,15 +29,15 @@ SystemResolver class >> settingsOn: aBuilder [
parent: #pharoSystem;
type: #Directory;
target: self;
default: self defaultLocalDirectory;
description: 'The path of a directory where Pharo will store local files' ;
label: 'Local directory'.
]

{ #category : #accessing }
SystemResolver class >> userLocalDirectory [
^ UserLocalDirectory ifNil: [
(FileLocator imageDirectory / self defaultLocalDirectoryName) resolve ]

^ UserLocalDirectory ifNil: [ self defaultLocalDirectory ]
]

{ #category : #accessing }
Expand Down
1 change: 1 addition & 0 deletions src/Formatter-Settings/RBProgramNode.extension.st
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ RBProgramNode class >> settingsOn: aBuilder [
target: RBProgramNode ;
domainValues: self formatters;
label: 'Default Formatter';
default: BIConfigurableFormatter;
description: 'To set the default code formatter.';
parent: #codeFormatters
]
1 change: 1 addition & 0 deletions src/Kernel/Delay.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ Delay class >> systemSettingOn: aBuilder [
target: self;
label: 'Delay Scheduler' ;
domainValues: DelayNullScheduler allSubclasses ;
default: DelaySemaphoreScheduler;
description: 'Choose the class to use for Delay scheduling.' ,
String crlf, 'You can observe which is running from Tools > Process Browser.'

Expand Down
1 change: 1 addition & 0 deletions src/Kernel/ProcessorScheduler.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ ProcessorScheduler class >> idleTimeSettingOn: aBuilder [
(aBuilder setting: #idleTime)
target: self;
parent: #pharoSystem ;
default: 50000;
label: 'Default idle time for the system (microseconds)' ;
description: 'Detault idle time for the Pharo process in case of inactivity. In idle mode, the system can be awakened by a signal. This value can limit the minimal delay time.'
]
Expand Down
1 change: 1 addition & 0 deletions src/Rubric/RubAbstractTextArea.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,7 @@ RubAbstractTextArea class >> rubricSettingsOn: aBuilder [
description: 'line numbers settings';
with: [ (aBuilder setting: #lineNumbersFont)
target: self;
default: (TextStyle default fontOfPointSize: 7);
description: 'Font used for line numbers';
label: 'Line numbers font'.
(aBuilder setting: #lineNumbersTextColor)
Expand Down
11 changes: 7 additions & 4 deletions src/Settings-Polymorph/PolymorphSystemSettings.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ PolymorphSystemSettings class >> appearanceSettingsOn: aBuilder [
(aBuilder pickOne: #uiThemeClass)
label: 'User interface theme';
target: self;
default: UITheme standardThemeClass;
default: PharoDarkTheme;
order: 1;
domainValues: self uiThemeClassChoices.
self morphicSettingsOn: aBuilder.
Expand Down Expand Up @@ -95,11 +95,13 @@ PolymorphSystemSettings class >> desktopColorSettingsOn: aBuilder [
description: 'If true, then more settings will be available in order to define the desktop background color gradient';
noOrdering;
with: [(aBuilder setting: #desktopGradientFillColor) label: 'Other color';
description: 'This is the second color of your gradient (the first one is given by the "Color" setting'.
default: PharoDarkTheme current desktopColor;
description: 'This is the second color of your gradient (the first one is given by the "Color" setting'.
(aBuilder pickOne: #desktopGradientDirection) label: 'Direction';
domainValues: {#Horizontal. #Vertical. #Radial}.
default: #Vertical;
domainValues: {#Horizontal. #Vertical. #Radial}.
(aBuilder pickOne: #desktopGradientOrigin) label: 'Origin';
domainValues: {
domainValues: {
'Top left' translated -> #topLeft.
'Top' translated -> #topCenter.
'Top right' translated -> #topRight.
Expand Down Expand Up @@ -218,6 +220,7 @@ PolymorphSystemSettings class >> desktopSettingsOn: aBuilder [
(aBuilder setting: #showDesktopLogo)
label: 'Show logo' ;
description: 'If true, then a logo if shown on the top left of the desktop' ;
default: true;
with: [
(aBuilder setting: #desktopLogoFileName)
type: #FilePathEncoder;
Expand Down
9 changes: 8 additions & 1 deletion src/System-Settings-Browser/SettingBrowser.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,12 @@ SettingBrowser class >> browse: aCollectionOfKeywords [

{ #category : #'private helpers' }
SettingBrowser class >> currentNodeList [
^ (SettingTree new acceptableKeywords: self settingsKeywords) nodeList
^ self currentTree nodeList
]

{ #category : #'private helpers' }
SettingBrowser class >> currentTree [
^ SettingTree new acceptableKeywords: self settingsKeywords
]

{ #category : #opening }
Expand Down Expand Up @@ -535,6 +540,7 @@ SettingBrowser >> keyStroke: anEvent from: aTreeMorph [

{ #category : #menu }
SettingBrowser >> loadSettings [
1halt.
self treeHolder updateSettingNodes.
self inform: 'Settings has been updated from the disk.'
]
Expand Down Expand Up @@ -755,6 +761,7 @@ SettingBrowser >> statusViewIn: aMorph [

{ #category : #menu }
SettingBrowser >> storeSettings [
1halt.
self treeHolder storeSettingNodes.
self inform: 'Settings has been stored on the disk.'
]
Expand Down
6 changes: 6 additions & 0 deletions src/System-Settings-Core/SettingDeclaration.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,12 @@ SettingDeclaration >> hasDefault [
^ default ~~ UniqueObject
]

{ #category : #testing }
SettingDeclaration >> hasDefaultValue [

^ self preferenceValue = self defaultValue
]

{ #category : #'user interface' }
SettingDeclaration >> hasEditableList [
^ (self realValue isKindOf: Boolean) not
Expand Down
9 changes: 7 additions & 2 deletions src/System-Settings-Core/StoredSettingsFactory.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,13 @@ StoredSettingsFactory >> from: aSettingNode [
{ #category : #building }
StoredSettingsFactory >> fromSettingNodes: aCollectionOfSettingNodes [
storedSettings := OrderedCollection new.
aCollectionOfSettingNodes do: [ :eachSettingNode |
(self from: eachSettingNode) ifNotNil: [ :aStoredNode | storedSettings add: aStoredNode ] ].

aCollectionOfSettingNodes
select: [ :eachSettingNode |
eachSettingNode item hasValue and: [ eachSettingNode item hasDefaultValue not ] ]
thenDo: [ :eachSettingNode |
(self from: eachSettingNode) ifNotNil: [ :aStoredNode | storedSettings add: aStoredNode ] ].

^ storedSettings
]

Expand Down
1 change: 1 addition & 0 deletions src/Tool-Registry/PharoCommonTools.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ PharoCommonTools class >> settingsOn: aBuilder [
targetSelector: #tools;
getSelector: #inspectorTool;
setSelector: #inspectorTool:;
default: GTInspector;
label: 'Inspector';
domainValues: Smalltalk tools recentInspectorTools ];
with: [
Expand Down

0 comments on commit 190d712

Please sign in to comment.