From 48c488754683c8ecb85aedb6ad02d30c785c51ba Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Fri, 25 Apr 2025 13:03:43 +0200 Subject: [PATCH 1/9] Configuration of the line numbers in code presenters from the pharo app settings --- src/NewTools-Core/StPharoApplication.class.st | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/NewTools-Core/StPharoApplication.class.st b/src/NewTools-Core/StPharoApplication.class.st index c1b182d6..59951e9a 100644 --- a/src/NewTools-Core/StPharoApplication.class.st +++ b/src/NewTools-Core/StPharoApplication.class.st @@ -47,6 +47,12 @@ StPharoApplication class >> use: application during: aBlock [ ^ aBlock ensure: [ Current := oldCurrent ] ] +{ #category : 'settings' } +StPharoApplication >> codeShowLineNumbers [ + + ^ StPharoSettings codeShowLineNumbers +] + { #category : 'accessing - resources' } StPharoApplication >> defaultWindowExtent [ From 1cc49948c32c081645a4afae487fc14c2302cf4e Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:44:23 +0200 Subject: [PATCH 2/9] Sending announcements when StPharoSettings change. --- .../CodeShowLineNumbersChanged.class.st | 10 ++++++++ src/NewTools-Core/StPharoApplication.class.st | 24 +++++++++++++++++-- src/NewTools-Core/StPharoSettings.class.st | 5 ++-- 3 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/NewTools-Core/CodeShowLineNumbersChanged.class.st diff --git a/src/NewTools-Core/CodeShowLineNumbersChanged.class.st b/src/NewTools-Core/CodeShowLineNumbersChanged.class.st new file mode 100644 index 00000000..6f5c5a9d --- /dev/null +++ b/src/NewTools-Core/CodeShowLineNumbersChanged.class.st @@ -0,0 +1,10 @@ +" +I am announced by the system announcer when the codeShowLineNumbers setting from StPharoSettings has changed. +" +Class { + #name : 'CodeShowLineNumbersChanged', + #superclass : 'Announcement', + #category : 'NewTools-Core-Announcements', + #package : 'NewTools-Core', + #tag : 'Announcements' +} diff --git a/src/NewTools-Core/StPharoApplication.class.st b/src/NewTools-Core/StPharoApplication.class.st index 59951e9a..c2210b36 100644 --- a/src/NewTools-Core/StPharoApplication.class.st +++ b/src/NewTools-Core/StPharoApplication.class.st @@ -70,14 +70,18 @@ StPharoApplication >> defaultWindowPresenterClass [ StPharoApplication >> initialize [ super initialize. - self initializeConfiguration + self initializeConfiguration. + self subscribeToSettingsAnnouncements ] { #category : 'initialization' } StPharoApplication >> initializeConfiguration [ self resetConfiguration. - self class codeSupportAnnouncer weak when: UIThemeChanged send: #resetConfiguration to: self + self class codeSupportAnnouncer weak + when: UIThemeChanged + send: #resetConfiguration + to: self ] { #category : 'private - factory' } @@ -121,6 +125,13 @@ StPharoApplication >> run [ StPharoApplication >> shutDown: quitting [ ] +{ #category : 'settings' } +StPharoApplication >> stPharoSettingChanged: aPharoSettingChangeAnnouncement [ + + (self windows collect: #presenter) do: [ :presenter | + presenter announce: aPharoSettingChangeAnnouncement ] +] + { #category : 'system startup' } StPharoApplication >> startUp: resuming [ @@ -128,6 +139,15 @@ StPharoApplication >> startUp: resuming [ self resetBackend. ] +{ #category : 'settings' } +StPharoApplication >> subscribeToSettingsAnnouncements [ + + self class codeSupportAnnouncer weak + when: CodeShowLineNumbersChanged + send: #stPharoSettingChanged: + to: self +] + { #category : 'tool management' } StPharoApplication >> toolNamed: aName [ diff --git a/src/NewTools-Core/StPharoSettings.class.st b/src/NewTools-Core/StPharoSettings.class.st index e708d5fa..b7cee0fa 100644 --- a/src/NewTools-Core/StPharoSettings.class.st +++ b/src/NewTools-Core/StPharoSettings.class.st @@ -18,9 +18,10 @@ StPharoSettings class >> codeShowLineNumbers [ ] { #category : 'settings' } -StPharoSettings class >> codeShowLineNumbers: aBoolean [ +StPharoSettings class >> codeShowLineNumbers: aBoolean [ - CodeShowLineNumbers := aBoolean + CodeShowLineNumbers := aBoolean. + self codeSupportAnnouncer announce: CodeShowLineNumbersChanged new ] { #category : 'defaults' } From 9e4e88d1cd693ace62665071d47aa031ee534e79 Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:44:35 +0200 Subject: [PATCH 3/9] Tests --- .../StPharoApplicationTest.class.st | 21 +++++++++++ ...estSettingChangeReactivePresenter.class.st | 37 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st diff --git a/src/NewTools-Core-Tests/StPharoApplicationTest.class.st b/src/NewTools-Core-Tests/StPharoApplicationTest.class.st index 30932d83..f870fbbc 100644 --- a/src/NewTools-Core-Tests/StPharoApplicationTest.class.st +++ b/src/NewTools-Core-Tests/StPharoApplicationTest.class.st @@ -9,6 +9,27 @@ Class { #tag : 'Application' } +{ #category : 'tests' } +StPharoApplicationTest >> testSettingChangesSubscription [ + + | app presenter window oldSetting | + app := StPharoApplication basicNew. + app subscribeToSettingsAnnouncements. + presenter := StTestSettingChangeReactivePresenter new. + presenter application: app. + window := SpWindowPresenter presenter: presenter. + app registerWindow: window. + + self assert: presenter changedSetting isNil. + + oldSetting := StPharoSettings codeShowLineNumbers. + StPharoSettings codeShowLineNumbers: oldSetting. + + self + assert: presenter changedSetting class + identicalTo: CodeShowLineNumbersChanged +] + { #category : 'tests' } StPharoApplicationTest >> testToolRegistration [ diff --git a/src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st b/src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st new file mode 100644 index 00000000..57e12726 --- /dev/null +++ b/src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st @@ -0,0 +1,37 @@ +Class { + #name : 'StTestSettingChangeReactivePresenter', + #superclass : 'StPresenter', + #instVars : [ + 'changedSetting' + ], + #category : 'NewTools-Core-Tests-Application', + #package : 'NewTools-Core-Tests', + #tag : 'Application' +} + +{ #category : 'accessing' } +StTestSettingChangeReactivePresenter >> changedSetting [ + + ^ changedSetting +] + +{ #category : 'layout' } +StTestSettingChangeReactivePresenter >> defaultLayout [ + ^SpBoxLayout new +] + +{ #category : 'initialization' } +StTestSettingChangeReactivePresenter >> initialize [ + + super initialize. + self announcer + when: CodeShowLineNumbersChanged + send: #settingChanged: + to: self +] + +{ #category : 'as yet unclassified' } +StTestSettingChangeReactivePresenter >> settingChanged: aSettingChangedAnnouncement [ + + changedSetting := aSettingChangedAnnouncement +] From 5454342906d9227ca39cf91aef486cf543e0def0 Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:45:20 +0200 Subject: [PATCH 4/9] class comment --- .../StTestSettingChangeReactivePresenter.class.st | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st b/src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st index 57e12726..a987987b 100644 --- a/src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st +++ b/src/NewTools-Core-Tests/StTestSettingChangeReactivePresenter.class.st @@ -1,3 +1,6 @@ +" +I'm a test presenter for testing how the StPresenters react to settings changes announcements from their applications. +" Class { #name : 'StTestSettingChangeReactivePresenter', #superclass : 'StPresenter', From 12b62b40f5cc539a35c8ac026f0ae34e8b6c24f7 Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Fri, 25 Apr 2025 16:01:00 +0200 Subject: [PATCH 5/9] Moving the code line changed announcement to spec (not sure is a good move) --- src/NewTools-Core/CodeShowLineNumbersChanged.class.st | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 src/NewTools-Core/CodeShowLineNumbersChanged.class.st diff --git a/src/NewTools-Core/CodeShowLineNumbersChanged.class.st b/src/NewTools-Core/CodeShowLineNumbersChanged.class.st deleted file mode 100644 index 6f5c5a9d..00000000 --- a/src/NewTools-Core/CodeShowLineNumbersChanged.class.st +++ /dev/null @@ -1,10 +0,0 @@ -" -I am announced by the system announcer when the codeShowLineNumbers setting from StPharoSettings has changed. -" -Class { - #name : 'CodeShowLineNumbersChanged', - #superclass : 'Announcement', - #category : 'NewTools-Core-Announcements', - #package : 'NewTools-Core', - #tag : 'Announcements' -} From 06283b0481cd4f44049fa920577584bbc2473e94 Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Fri, 25 Apr 2025 16:41:09 +0200 Subject: [PATCH 6/9] Capturing code show line numbers changed in the debugger and forwarding to the code presenter --- src/NewTools-Debugger/StDebugger.class.st | 28 ++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/NewTools-Debugger/StDebugger.class.st b/src/NewTools-Debugger/StDebugger.class.st index 521102d7..5ba70a37 100644 --- a/src/NewTools-Debugger/StDebugger.class.st +++ b/src/NewTools-Debugger/StDebugger.class.st @@ -531,6 +531,12 @@ StDebugger >> codeLayout [ yourself ] +{ #category : 'subscription' } +StDebugger >> codeShowLineNumbersChanged: aCodeShowLineNumbersChangedAnnouncement [ + + self code announce: aCodeShowLineNumbersChangedAnnouncement +] + { #category : 'initialization' } StDebugger >> connectPresenters [ @@ -815,8 +821,9 @@ StDebugger >> initializeCode [ code := self instantiate: StDebuggerCodePresenter. code debuggerActionModel: self debuggerActionModel. - code whenSubmitDo: [ :text | - self acceptCodeChanges: text string forContext: self selectedContext ]. + code whenSubmitDo: [ :text | + self acceptCodeChanges: text string forContext: self selectedContext. + code adapter widget formatSourceCode. ]. code whenResetDo: [ self discardCodeChangesFor: self selectedContext ] ] @@ -857,7 +864,7 @@ StDebugger >> initializePresenters [ self initializeInspector. self initializeExtensionTools. self setStackAndCodeContainer. - + self subscribeToSettingsChangesAnnouncements. self layout: self defaultLayout ] @@ -1200,6 +1207,12 @@ StDebugger >> settings [ ^ self class settings ] +{ #category : 'subscription' } +StDebugger >> showLineNumbersAndUpdate [ + + self code showLineNumbersAndUpdate +] + { #category : 'stack' } StDebugger >> stack [ ^ self debuggerActionModel stack @@ -1374,6 +1387,15 @@ StDebugger >> subscribeToLayoutChangesAnnouncement [ self class codeSupportAnnouncer weak when: StDebuggerLayoutChangedAnnouncement send: #updateLayout to: self ] +{ #category : 'subscription' } +StDebugger >> subscribeToSettingsChangesAnnouncements [ + + self announcer + when: CodeShowLineNumbersChanged + send: #codeShowLineNumbersChanged: + to: self +] + { #category : 'toolbar' } StDebugger >> toolbarAdvancedCommandsGroups [ From c4ecf5313dd5e1929191116bb10c0a3bd19846a4 Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Sat, 26 Apr 2025 11:21:23 +0200 Subject: [PATCH 7/9] Moving the subcripition to initialize with other subscriptions --- src/NewTools-Debugger/StDebugger.class.st | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/NewTools-Debugger/StDebugger.class.st b/src/NewTools-Debugger/StDebugger.class.st index 5ba70a37..8b709e74 100644 --- a/src/NewTools-Debugger/StDebugger.class.st +++ b/src/NewTools-Debugger/StDebugger.class.st @@ -803,10 +803,11 @@ StDebugger >> initialize [ super initialize. self debuggerActionModel updateContextPredicate. self forceSessionUpdate. - self subscribeToExtensionToggleAnnouncement. + self subscribeToExtensionToggleAnnouncement. self subscribeToLayoutChangesAnnouncement. - - programmaticallyClosed := false. + self subscribeToSettingsChangesAnnouncements. + + programmaticallyClosed := false ] { #category : 'initialization' } @@ -864,7 +865,6 @@ StDebugger >> initializePresenters [ self initializeInspector. self initializeExtensionTools. self setStackAndCodeContainer. - self subscribeToSettingsChangesAnnouncements. self layout: self defaultLayout ] From 82f741016615c18661a0a0c2ebe045b181d77eee Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Sat, 26 Apr 2025 11:21:52 +0200 Subject: [PATCH 8/9] Removing experimental code from code pane init --- src/NewTools-Debugger/StDebugger.class.st | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/NewTools-Debugger/StDebugger.class.st b/src/NewTools-Debugger/StDebugger.class.st index 8b709e74..40ecf658 100644 --- a/src/NewTools-Debugger/StDebugger.class.st +++ b/src/NewTools-Debugger/StDebugger.class.st @@ -822,9 +822,8 @@ StDebugger >> initializeCode [ code := self instantiate: StDebuggerCodePresenter. code debuggerActionModel: self debuggerActionModel. - code whenSubmitDo: [ :text | - self acceptCodeChanges: text string forContext: self selectedContext. - code adapter widget formatSourceCode. ]. + code whenSubmitDo: [ :text | + self acceptCodeChanges: text string forContext: self selectedContext ]. code whenResetDo: [ self discardCodeChangesFor: self selectedContext ] ] From 3122109b76e43fdf09df7113c85845dda72866b1 Mon Sep 17 00:00:00 2001 From: Steven Costiou <26929529+StevenCostiou@users.noreply.github.com> Date: Wed, 30 Apr 2025 11:55:54 +0200 Subject: [PATCH 9/9] Removing default setting from pharo settings and calling the one from StPharo Application --- src/NewTools-Core/StPharoSettings.class.st | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/NewTools-Core/StPharoSettings.class.st b/src/NewTools-Core/StPharoSettings.class.st index b7cee0fa..adea4c12 100644 --- a/src/NewTools-Core/StPharoSettings.class.st +++ b/src/NewTools-Core/StPharoSettings.class.st @@ -14,7 +14,8 @@ Class { StPharoSettings class >> codeShowLineNumbers [ "Defines if code editors will display line numbers" - ^ CodeShowLineNumbers ifNil: [ CodeShowLineNumbers := self defaultCodeShowLineNumbers ] + ^ CodeShowLineNumbers ifNil: [ + CodeShowLineNumbers := StPharoApplication defaultCodeShowLineNumbers ] ] { #category : 'settings' } @@ -24,12 +25,6 @@ StPharoSettings class >> codeShowLineNumbers: aBoolean [ self codeSupportAnnouncer announce: CodeShowLineNumbersChanged new ] -{ #category : 'defaults' } -StPharoSettings class >> defaultCodeShowLineNumbers [ - - ^ true -] - { #category : 'defaults' } StPharoSettings class >> defaultToolbarDisplayMode [