From 08c4141a7ff2c2a100fd6a01e62c375cf7f9f1ba Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Wed, 3 Dec 2025 15:59:54 +0100 Subject: [PATCH 1/4] Starting the isuee --- .../PyramidThemeFromSpaceExtension.class.st | 2 -- .../PyramidThemeSelectorPresenter.class.st | 13 +++----- .../PyramidToploThemePlugin.class.st | 31 +++++++++++++++++++ 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st index 0be9f984..50b38224 100644 --- a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st +++ b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st @@ -32,7 +32,6 @@ PyramidThemeFromSpaceExtension >> configureBuilder: aPyramidEditorBuilder [ PyramidThemeFromSpaceExtension >> configureCloseOnSpace: aSpace [ aSpace toTheme: themeSpaceSelector currentTheme. - aSpace root skinManager postponeRequestSkinIn: aSpace root ] { #category : #'as yet unclassified' } @@ -40,7 +39,6 @@ PyramidThemeFromSpaceExtension >> configureOpenFromSpace: aSpace [ "Do something with the space" self defaultToTheme: aSpace toTheme. - aSpace root skinManager postponeRequestSkinIn: aSpace root ] { #category : #accessing } 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..2f941483 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 subclasses select: #canBeDefaul) 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 [ From 8a51e8240d5ac35cdf4a8ad1cfd5fe2f513f0f65 Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Wed, 3 Dec 2025 16:21:37 +0100 Subject: [PATCH 2/4] Add default theme when openning the editor --- src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st | 3 ++- src/Pyramid-Toplo/PyramidToploThemePlugin.class.st | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st index 50b38224..bf31dacf 100644 --- a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st +++ b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st @@ -14,7 +14,7 @@ Class { { #category : #asserting } PyramidThemeFromSpaceExtension class >> shouldInstall [ - ^ false + ^ true ] { #category : #actions } @@ -44,6 +44,7 @@ PyramidThemeFromSpaceExtension >> configureOpenFromSpace: aSpace [ { #category : #accessing } PyramidThemeFromSpaceExtension >> defaultToTheme [ + defaultToTheme ifNil: [ defaultToTheme := PyramidToploThemePlugin defaultTheme new ]. ^ defaultToTheme ] diff --git a/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st b/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st index 2f941483..b1164fa2 100644 --- a/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st +++ b/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st @@ -17,7 +17,7 @@ Class { PyramidToploThemePlugin class >> defaultTheme [ defaultTheme ifNil: [ - defaultTheme := (ToTheme subclasses select: #canBeDefaul) last ]. + defaultTheme := (ToTheme withAllSubclasses select: [ :e | e canBeDefault ]) last ]. ^ defaultTheme ] From 8d03067f9062f188fad5666a6c29ca1758c0a112 Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Wed, 3 Dec 2025 16:53:23 +0100 Subject: [PATCH 3/4] Reemove useleess method --- src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st index bf31dacf..8659c293 100644 --- a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st +++ b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st @@ -11,12 +11,6 @@ Class { #category : #'Pyramid-Toplo-plugin-theme-management' } -{ #category : #asserting } -PyramidThemeFromSpaceExtension class >> shouldInstall [ - - ^ true -] - { #category : #actions } PyramidThemeFromSpaceExtension >> configureBuilder: aPyramidEditorBuilder [ From 8340eecf41ddce7276c86e650d7c451445e2d481 Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Wed, 3 Dec 2025 17:01:56 +0100 Subject: [PATCH 4/4] Fix not passing test --- .../PyramidThemeFromSpaceExtension.class.st | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st index bf31dacf..2d2bfa7c 100644 --- a/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st +++ b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st @@ -20,12 +20,21 @@ PyramidThemeFromSpaceExtension class >> shouldInstall [ { #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' }