Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7022d45
revert
estebanlm Nov 12, 2025
e04c41b
add application
estebanlm Nov 12, 2025
959e92e
reverted
estebanlm Nov 17, 2025
412bca9
renamed
estebanlm Nov 17, 2025
617864c
not used?
estebanlm Nov 20, 2025
1d81b57
add a remove page command to easy management of page cache
estebanlm Dec 17, 2025
c64c44f
working on the settings browser, now the POM is correctly built
estebanlm Dec 21, 2025
57d402c
no search button needed
estebanlm Dec 21, 2025
1710768
cancel action does not has sense... also I do not like icons in butto…
estebanlm Dec 21, 2025
600657b
work on settings browser (WIP)
estebanlm Jan 7, 2026
f216284
Merge branch 'Pharo14' of github.com:pharo-spec/NewTools into merge-p14
estebanlm Jan 7, 2026
c434664
update class comment
estebanlm Jan 8, 2026
d9fdb43
using node for settings header as they can have a switch (and others,…
estebanlm Jan 9, 2026
c51565c
fixed search on settings
estebanlm Jan 14, 2026
aab7ce9
fix comment
estebanlm Jan 15, 2026
9cc7f11
using correct application
estebanlm Jan 15, 2026
e734c03
fixing settings browser styles
estebanlm Jan 20, 2026
4253e70
replace fetch all button for a link because this is not clear at all
estebanlm Jan 22, 2026
917669e
fix text send (it was receiving a file reference but text requires a …
estebanlm Jan 22, 2026
94923cd
add some spacing between components (morphic way, is hard to style th…
estebanlm Jan 22, 2026
d7c9615
fixes on the look and feel (still WIP, but better)
estebanlm Jan 28, 2026
86c27e3
we need a real application, not "current"
estebanlm Jan 28, 2026
780d76f
categories do not have icons anymore
estebanlm Jan 28, 2026
9f7f51e
fixed tests, removed some that do not has sense anymore
estebanlm Jan 28, 2026
8e6d419
apply deprecations
estebanlm Feb 2, 2026
7c5e38e
make png autoscale
estebanlm Feb 2, 2026
99fc116
Merge branch 'Pharo14' into dev-2.0
estebanlm Feb 2, 2026
3b561c5
remove unused variables
estebanlm Feb 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 12 additions & 14 deletions src/NewTools-Debugger/StDebugger.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@ The StDebugger is a presenter that provides Pharo debugging functionality by usi

The debugging logic is in DebugSession and the corresponding debugging actions.

SpecDebugger only provides a graphical interface to access that functionality.
To interact with the DebugSession, the debugger uses a StDebuggerActionModel, which has responsibility to perform actions to the execution context.
StDebugger only provides a graphical interface to access that functionality.
To interact with the `DebugSession`, the debugger uses a `StDebuggerClientModel`, which has responsibility to perform actions to the execution context.


!!Structure of the Pharo debugger

!!!Sub-presenters and layouts
## Structure of the Pharo debugger
### Sub-presenters and layouts
The debugger is composed of default views and extension views.
Default views are the stack, the commands, the status line, the code pane and the inspector.
An extension view automatically appears if any debugging extension is present and if extensions are activated in the settings.
Expand All @@ -19,9 +17,9 @@ Default and extension views are available in a vertical and an horizontal layout
It is configureable in the settings under ==Tools >> Debugging >> Debugger layout==.
It is possible to fully customize the debugger layout, and therefore to add or remove any view.
The customized layout must then me selected in the aforementioned setting to be set as default.
To appear in that setting's list of possible values, the layout must be implemented in a method under the ==specs== protocol of the ==StDebugger== class side.
To appear in that setting's list of possible values, the layout must be implemented in a method under the ==specs== protocol of the `StDebugger` class side.

""""The stack.""""
### The stack
It shows the call stack of the current interrupted context.
Each element in the stack is a context representing a message send.

Expand All @@ -30,33 +28,33 @@ The context menu (through right click) provides different interactions with the
By default, only a small part of the stack is shown.
More of the stack is observable by either clicking on the bottom context (the last in the stack) or through the context menu.

""""Commands.""""
### Commands
Commands are actions applicable to the current context
After each debugging action (''e.g.'', a step), the list of commands is being updated.
New commands may appear or disappear.
It depends if they are applicable or not to the current context and debugging session.
For instance, when a ==doesNotUnderstand== exception is raised (''i.e.'', a method does not exist), the command ''createMethod'' will appear.
In that case, it gives users the possibility to create the missing method and continue the execution.

""""The status line.""""
### The status line
This view provides information about the current context.
Non-critical information, such as the current instruction being stepped, are displayed in gray.
Critical information ,such as halts or breakpoints or DNU exceptions, are displayed in red.

""""The code.""""
### The code
The code pane shows the source code of the interrupted context's method.
The source code is annotated with informations about the position of the interrupted execution.
This position corresponds to the next execution that will be executed if a step action is performed.
It is coloured in blue if that instruction is selected in the source code, or in orange and underlined if the selection is empty.

A context menu (through right click) provides inspection, exploration, and stepping actions applicable to the context.
Such actions include, ''e.g.'', browse implementors of a selected message or skip execution of selected parts of the code.
Such actions include, *e.g.*, browse implementors of a selected message or skip execution of selected parts of the code.

""""The inspector.""""
### The inspector
It provides views on the current context.
It contains tabs with different inspections or views on the current context or on the system.

The raw inspection shows three items: ''Receiver'', ''Temps'' and ''Context''.
The raw inspection shows three items: *Receiver*, *Temps* and *Context*.
The receiver item shows information about the receiver of the message, or the object executing the method from the context.
The temps item shows the temporary variables of the current context.
Finally, the context item shows lower-level details, such as the interrupted context, the debug session or the debugger itself.
Expand Down
3 changes: 2 additions & 1 deletion src/NewTools-FileBrowser/StDirectoryTreePresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ StDirectoryTreePresenter >> expandPath: aFileLocator [

directoryTreePresenter selectPath: aPathForSpec scrollToSelection: true. "The Morphic `configureScrolling` is executed **AFTER** the desired scroll was configured from the `StDirectoryTreePresenter`. Furthermore, the `configureScrolling` uses the `desiredVisibleRow` which is always set to 1. This statement updates the desired visible row to the last visible index of whatever the selection is pointing to."

directoryTreePresenter verticalAlignment lastVisibleRowIndex ifNotNil: [ :index | directoryTreePresenter verticalAlignment desiredVisibleRow: index ]
directoryTreePresenter verticalAlignment lastVisibleRowIndex ifNotNil: [ :index |
directoryTreePresenter verticalAlignment desiredVisibleRow: index ]
]

{ #category : 'initialization' }
Expand Down
2 changes: 1 addition & 1 deletion src/NewTools-Gtk/StPharoGtkConfiguration.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ StPharoGtkConfiguration >> configureGeneral: anApplication [
self addCSSProviderFromString: self commonStyle.
anApplication
propertyAt: #syntaxHighlightTheme
put: self syntaxHighlightThemeName
put: self syntaxHighlightTheme
]

{ #category : 'configuring' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ AbstractFileReference >> inspectionPng: aBuilder [
<inspectorPresentationOrder: 0 title: 'Picture'>

^ aBuilder newImage
autoScale: true;
image: (self binaryReadStreamDo: [ :stream | PNGReadWriter formFromStream: stream ]);
yourself
]
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ StInspectorInspectSelectedCommand class >> defaultName [
^ 'Inspect'
]

{ #category : 'initialization' }
StInspectorInspectSelectedCommand class >> defaultShortcutKey [

^ $i actionModifier
]

{ #category : 'documentation' }
StInspectorInspectSelectedCommand class >> documentContextRequiredSelectors [

Expand All @@ -36,7 +42,6 @@ StInspectorInspectSelectedCommand class >> documentContextRequiredSelectors [

{ #category : 'execution' }
StInspectorInspectSelectedCommand >> execute [

self context systemNavigation inspect: self interestingObject

]
Expand Down
2 changes: 2 additions & 0 deletions src/NewTools-Inspector/StRawInspectionPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Class {

{ #category : 'commands' }
StRawInspectionPresenter class >> buildCommandsGroupWith: presenter forRoot: aCmCommandsGroup [

aCmCommandsGroup
beDisplayedAsGroup;
register: (StInspectorInspectSelectedCommand forSpecContext: presenter);
Expand Down Expand Up @@ -100,6 +101,7 @@ StRawInspectionPresenter >> initializePresenters [
transfer target save: (transfer shouldCopy ifTrue: [ value copy ] ifFalse: [ value ]).
self step ];
yourself.

self addVariablesColumn.
self addValuesColumn.
self setAttributeTable
Expand Down
2 changes: 1 addition & 1 deletion src/NewTools-MethodBrowsers/StMethodBrowser.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ StMethodBrowser >> installIconStylerFor: anItem [

IconStyler withStaticStylers
styleText: textPresenter
withAst: anItem ast.
withAst: anItem ast
]

{ #category : 'private' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ StPlaygroundInteractionModel >> addBindings: aCollection [

{ #category : 'binding' }
StPlaygroundInteractionModel >> addBindingsByDictionary: aDictionary [

aDictionary keysAndValuesDo: [ :key :value | self addBinding: (WorkspaceVariable key: key value: value) ].

]
Expand Down
7 changes: 7 additions & 0 deletions src/NewTools-Playground/StPlaygroundPage.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,13 @@ StPlaygroundPage >> readStreamDo: aBlock [
ifAbsent: [ nil ]
]

{ #category : 'removing' }
StPlaygroundPage >> removeAllContents [

(self fileReference withExtension: 'ombu') ensureDelete.
self fileReference ensureDelete
]

{ #category : 'accessing' }
StPlaygroundPage >> renameTo: aFileName [
self fileReference renameTo: aFileName, '.', self class pageExtension.
Expand Down
23 changes: 22 additions & 1 deletion src/NewTools-Playground/StPlaygroundPagesPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,17 @@ StPlaygroundPagesPresenter >> doLoadPageOnNewPlayground [
playground takeKeyboardFocus
]

{ #category : 'actions' }
StPlaygroundPagesPresenter >> doRemovePage [
| index |

index := pageList selectedIndex.
self selectedPage removeAllContents.
pageList presenters: self pagesAsPresenters.
pageList presenters size >= index
ifTrue: [ pageList selectIndex: index ]
]

{ #category : 'initialization' }
StPlaygroundPagesPresenter >> initializeDialogWindow: aDialogWindowPresenter [

Expand Down Expand Up @@ -168,6 +179,10 @@ StPlaygroundPagesPresenter >> pagesActions [
^ SpActionGroup new
register: (StPlaygroundLoadPageCommand forSpecContext: self);
register: (StPlaygroundLoadPageOnNewPlaygroundCommand forSpecContext: self);
register: (SpActionGroup new
beDisplayedAsGroup;
register: (StPlaygroundRemovePageCommand forSpecContext: self);
yourself);
yourself
]

Expand All @@ -177,7 +192,7 @@ StPlaygroundPagesPresenter >> pagesAsPresenters [
^ self pages collect: [ :each |
self
instantiate: StPlaygroundPageSummaryPresenter
on: each ]
on: each ]
]

{ #category : 'private' }
Expand All @@ -199,6 +214,12 @@ StPlaygroundPagesPresenter >> setModelBeforeInitialization: aPlayground [
parent := aPlayground
]

{ #category : 'initialization' }
StPlaygroundPagesPresenter >> updatePresenter [

"nothing happens here :("
]

{ #category : 'accessing' }
StPlaygroundPagesPresenter >> windowTitle [

Expand Down
29 changes: 29 additions & 0 deletions src/NewTools-Playground/StPlaygroundRemovePageCommand.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"
Remove a page (and its versions) from the page cache.

"
Class {
#name : 'StPlaygroundRemovePageCommand',
#superclass : 'StPlaygroundCommand',
#category : 'NewTools-Playground-Command',
#package : 'NewTools-Playground',
#tag : 'Command'
}

{ #category : 'default' }
StPlaygroundRemovePageCommand class >> defaultDescription [

^ 'Remove page and all its versions'
]

{ #category : 'default' }
StPlaygroundRemovePageCommand class >> defaultName [

^ 'Remove page'
]

{ #category : 'executing' }
StPlaygroundRemovePageCommand >> execute [

self context doRemovePage
]
15 changes: 8 additions & 7 deletions src/NewTools-Pulse/StPulse.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -691,10 +691,8 @@ StPulse >> initializeButtons [

| helpButton settingsButton |

findAllButton := self newButton
addStyle: 'small';
addStyle: 'stPulseButton';
icon: (self iconNamed: #glamorousDown);
findAllButton := self newLink
label: 'Fetch all';
action: [ self findAllButtonAction ];
help: 'Gives you all the results of a search. Normal searchs only give you the first 25';
yourself.
Expand All @@ -714,9 +712,11 @@ StPulse >> initializeButtons [
self defaultKeyboardFocus takeKeyboardFocus.
self openSettingsBrowser ];
help: 'Open settings browser to configure StPulse'.
self addKeyboardBehavior: findAllButton.

"self addKeyboardBehavior: findAllButton."
self addKeyboardBehavior: helpButton.
self addKeyboardBehavior: settingsButton.

buttonsToolbar := self newPresenter
layout: (SpBoxLayout newLeftToRight
add: settingsButton expand: false;
Expand All @@ -743,9 +743,10 @@ StPulse >> initializeListLabel [

listTitleLayout := self newPresenter
layout: (SpBoxLayout newLeftToRight
add: listLabelPresenter expand: true;
add: listCounterPresenter expand: false;
spacing: 5;
add: listLabelPresenter;
add: findAllButton expand: false;
add: listCounterPresenter expand: false;
yourself);
yourself
]
Expand Down
Loading
Loading