diff --git a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st index 0be9f984..08429543 100644 --- a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st +++ b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st @@ -11,28 +11,30 @@ Class { #category : #'Pyramid-Toplo-plugin-theme-management' } -{ #category : #asserting } -PyramidThemeFromSpaceExtension class >> shouldInstall [ - - ^ false -] - { #category : #actions } PyramidThemeFromSpaceExtension >> configureBuilder: aPyramidEditorBuilder [ - (aPyramidEditorBuilder findPlugin: PyramidOpenFromSpacePlugin) - addExtension: self. - (aPyramidEditorBuilder findPlugin: PyramidSpacePlugin) builder - addExtension: self. - self themeSpaceSelector: (aPyramidEditorBuilder findPlugin: PyramidToploThemePlugin) - themePresenter themeSpaceSelector + | pyramidOpenFromSpacePlugin pyramidSpacePlugin pyramidToploThemePlugin | + [ + pyramidOpenFromSpacePlugin := aPyramidEditorBuilder findPlugin: + PyramidOpenFromSpacePlugin. + pyramidSpacePlugin := aPyramidEditorBuilder findPlugin: + PyramidSpacePlugin. + pyramidToploThemePlugin := aPyramidEditorBuilder findPlugin: + PyramidToploThemePlugin ] + on: PyramidNoPluginFoundError + do: [ ^ self ]. + + pyramidOpenFromSpacePlugin addExtension: self. + pyramidSpacePlugin builder addExtension: self. + self themeSpaceSelector: + pyramidToploThemePlugin themePresenter themeSpaceSelector ] { #category : #'as yet unclassified' } PyramidThemeFromSpaceExtension >> configureCloseOnSpace: aSpace [ aSpace toTheme: themeSpaceSelector currentTheme. - aSpace root skinManager postponeRequestSkinIn: aSpace root ] { #category : #'as yet unclassified' } @@ -40,12 +42,12 @@ PyramidThemeFromSpaceExtension >> configureOpenFromSpace: aSpace [ "Do something with the space" self defaultToTheme: aSpace toTheme. - aSpace root skinManager postponeRequestSkinIn: aSpace root ] { #category : #accessing } PyramidThemeFromSpaceExtension >> defaultToTheme [ + defaultToTheme ifNil: [ defaultToTheme := PyramidToploThemePlugin defaultTheme new ]. ^ defaultToTheme ] diff --git a/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st index 61c6a357..3f819aee 100644 --- a/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st @@ -24,7 +24,7 @@ PyramidThemeSelectorPresenter >> buttonRefreshTheme [ { #category : #'as yet unclassified' } PyramidThemeSelectorPresenter >> currentTheme [ - ^ self themeSelector selectedItem + ^ self themeSelector selectedItem new ] { #category : #layout } @@ -58,16 +58,14 @@ PyramidThemeSelectorPresenter >> initializeAllPossibleThemes [ allThemes := ToTheme allSubclasses select: [ :theme | theme canBeDefault ]. - - allThemes := allThemes collect: [ :each | each new ]. self triggerThemeChangement: false. self themeSelector items: allThemes. (previousTheme isNotNil and: [ allThemes includes: previousTheme ]) ifTrue: [ self themeSelector selectItem: previousTheme ] - ifFalse: [ self themeSelector selectItem: allThemes first ]. - self triggerThemeChangement: true. + ifFalse: [ self themeSelector selectItem: PyramidToploThemePlugin defaultTheme ]. + self triggerThemeChangement: true ] { #category : #initialization } @@ -96,9 +94,8 @@ PyramidThemeSelectorPresenter >> labelPresenter [ PyramidThemeSelectorPresenter >> selectTheme: aToTheme [ self triggerThemeChangement: false. - self themeSelector items do: [:theme | (theme class) = (aToTheme class) ifTrue: [ self themeSelector selectItem: (theme) ]]. - self triggerThemeChangement: true. - + self themeSelector selectItem: aToTheme class. + self triggerThemeChangement: true ] { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st b/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st index a36f36d5..b1164fa2 100644 --- a/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st +++ b/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st @@ -7,9 +7,40 @@ Class { 'themePresenter', 'themePropertyManager' ], + #classInstVars : [ + 'defaultTheme' + ], #category : #'Pyramid-Toplo-plugin-theme-management' } +{ #category : #'as yet unclassified' } +PyramidToploThemePlugin class >> defaultTheme [ + + defaultTheme ifNil: [ + defaultTheme := (ToTheme withAllSubclasses select: [ :e | e canBeDefault ]) last ]. + ^ defaultTheme +] + +{ #category : #'as yet unclassified' } +PyramidToploThemePlugin class >> defaultTheme: anObject [ + + defaultTheme := anObject +] + +{ #category : #'as yet unclassified' } +PyramidToploThemePlugin class >> defaultThemeSettingOn: aBuilder [ + + + (aBuilder pickOne: #defaultTheme) + parent: #pyramid; + label: 'Choose the default theme.'; + target: self; + domainValues: + (ToTheme withAllSubclasses select: #canBeDefault); + description: + 'Define the theme that will be used by default when a new editor is opened.' +] + { #category : #adding } PyramidToploThemePlugin class >> toploAntIconCategory [