├── .gitignore ├── src ├── .properties ├── Spec2-Code │ ├── package.st │ ├── SpTPresenterBuilder.extension.st │ ├── ManifestSpec2Code.class.st │ ├── SpCodeEvaluationSucceedAnnouncement.class.st │ ├── SpCodeWillBeEvaluatedAnnouncement.class.st │ ├── SpCodeShowLineNumbersChanged.class.st │ ├── SpApplication.extension.st │ ├── SpCodeNullInteractionModel.class.st │ └── SequenceableCollection.extension.st ├── Spec2-Core │ ├── package.st │ ├── Model.extension.st │ ├── CmUICommand.extension.st │ ├── OSPlatform.extension.st │ ├── CmVisitor.extension.st │ ├── SpColumnAlignmentCenter.class.st │ ├── SpColumnAlignmentLeft.class.st │ ├── SpColumnAlignmentRight.class.st │ ├── MacOSPlatform.extension.st │ ├── UnixPlatform.extension.st │ ├── WinPlatform.extension.st │ ├── ObservableValueHolder.extension.st │ ├── SpAbstractTreeFilter.class.st │ ├── KMCategory.extension.st │ ├── Character.extension.st │ ├── OrderedDictionary.extension.st │ ├── SpPopoverTopPosition.class.st │ ├── SpPopoverLeftPosition.class.st │ ├── SpPopoverRightPosition.class.st │ ├── SpPopoverBottomPosition.class.st │ ├── SpKeyUpEventDefinition.class.st │ ├── SpKeyDownEventDefinition.class.st │ ├── SpMouseUpEventDefinition.class.st │ ├── Object.extension.st │ ├── SpMouseDownEventDefinition.class.st │ ├── SpMouseLeaveEventDefinition.class.st │ ├── SpMouseMoveEventDefinition.class.st │ ├── SpMillerPresenter.class.st │ ├── SpMouseEnterEventDefinition.class.st │ ├── SpPopoverContentPresenter.class.st │ ├── SpSearchInputFieldPresenter.class.st │ ├── SpWindowAnnouncement.class.st │ ├── Symbol.extension.st │ ├── SpMouseDoubleClickDefinition.class.st │ ├── KMKeyCombination.extension.st │ ├── SpFocusLostEventDefinition.class.st │ ├── SpFocusReceivedEventDefinition.class.st │ ├── SpSpinnerPresenter.class.st │ ├── SpDiffUnifiedPresenter.class.st │ ├── SpNullPresenter.class.st │ ├── SpToolbarItemLeftPosition.class.st │ ├── SpToolbarItemRightPosition.class.st │ ├── SpBindings.class.st │ ├── SpNullApplication.class.st │ └── SpTAlignableColumn.trait.st ├── Spec2-Help │ └── package.st ├── Spec2-Dialogs │ └── package.st ├── Spec2-Dynamic │ ├── package.st │ └── SpExecutableLayoutWithDynamicPresenterTest.class.st ├── Spec2-Layout │ ├── package.st │ ├── SpTabSelected.class.st │ ├── SpTabUnselected.class.st │ ├── SpFrameConstraints.class.st │ ├── SpLayoutWidgetAlignmentEnd.class.st │ ├── SpLayoutWidgetAlignmentCenter.class.st │ ├── SpLayoutWidgetAlignmentStart.class.st │ ├── Rectangle.extension.st │ ├── SpTabConstraints.class.st │ ├── SpVerticalLayoutDirection.class.st │ ├── SpHorizontalLayoutDirection.class.st │ ├── SpOverlayConstraints.class.st │ ├── SpChildrenAdded.class.st │ ├── SpChildrenRemoved.class.st │ └── SpLayoutConstraints.class.st ├── Spec2-Morphic │ ├── package.st │ ├── SpPresenter.extension.st │ ├── SpColumnAlignment.extension.st │ ├── SpColumnAlignmentLeft.extension.st │ ├── SpTPresenterBuilder.extension.st │ ├── Morph.extension.st │ ├── SpColumnAlignmentCenter.extension.st │ ├── SpColumnAlignmentRight.extension.st │ ├── SpLayoutWidgetAlignmentEnd.extension.st │ ├── SpLayoutWidgetAlignmentStart.extension.st │ ├── ManifestSpec2Morphic.class.st │ ├── SpLayoutWidgetAlignment.extension.st │ ├── SpLayoutWidgetAlignmentCenter.extension.st │ ├── Form.extension.st │ ├── PluggableButtonMorph.extension.st │ └── MouseEvent.extension.st ├── Spec2-Pillar │ ├── package.st │ ├── PRList.extension.st │ ├── PRRaw.extension.st │ ├── PRSlide.extension.st │ ├── PRTable.extension.st │ ├── PRFigure.extension.st │ ├── PRToc.extension.st │ ├── PRDocument.extension.st │ ├── PRListItem.extension.st │ ├── PRSection.extension.st │ ├── PRBoldFormat.extension.st │ ├── PRCitation.extension.st │ ├── PRFootnote.extension.st │ ├── PREmptyParagraph.extension.st │ ├── PRItalicFormat.extension.st │ ├── PROrderedList.extension.st │ ├── PRDocumentGroup.extension.st │ ├── PRExternalLink.extension.st │ ├── PRInternalLink.extension.st │ ├── PRPreformatted.extension.st │ ├── PRCommentedLine.extension.st │ ├── PRHorizontalRule.extension.st │ ├── PRMonospaceFormat.extension.st │ ├── PRSubscriptFormat.extension.st │ ├── PRUnderlineFormat.extension.st │ ├── PRAbstractAnnotation.extension.st │ ├── PRSuperscriptFormat.extension.st │ ├── PRStrikethroughFormat.extension.st │ ├── PRAnnotatedParagraph.extension.st │ ├── PRText.extension.st │ ├── PRAnchor.extension.st │ ├── PRCodeblock.extension.st │ ├── PRLineBreak.extension.st │ ├── PRParagraph.extension.st │ ├── PRHeader.extension.st │ ├── SpStyleProvider.class.st │ ├── PRDocumentItem.extension.st │ ├── SpTextRenderObject.class.st │ └── SpRichTextStyler.class.st ├── Spec2-Tests │ ├── package.st │ ├── SpMockConfiguration.class.st │ ├── SpSpecTest.class.st │ ├── SpEmptyPresenter.class.st │ ├── SpCheckBoxExampleTest.class.st │ ├── SpMockApplication.class.st │ ├── SpTextFieldExampleTest.class.st │ ├── SpClassMethodBrowserTest.class.st │ ├── SpRadioButtonExampleTest.class.st │ ├── SpDynamicWidgetChangeTest.class.st │ ├── SpOpenOnIntExampleTest.class.st │ ├── SpOpenOnNilExampleTest.class.st │ ├── SpApplicationWithToolbarTest.class.st │ ├── SpListSelectionPresenterTest.class.st │ ├── SpSliderInputPresenterTest.class.st │ ├── SpOpenOnStringExampleTest.class.st │ ├── SpActionModifierTest.class.st │ ├── SpVerticalPanedLayoutTest.class.st │ ├── SpHorizontalPanedLayoutTest.class.st │ ├── SpCodeCommandContextMock.class.st │ ├── SpMockMillerPresenter.class.st │ ├── SpGridLayoutTest.class.st │ ├── SpMockBackend.class.st │ ├── SpNotificationTest.class.st │ ├── SpValidationReportTest.class.st │ └── SpMockPesenterWithoutGetter.class.st ├── BaselineOfSpec2 │ └── package.st ├── Spec2-Code-Diff │ ├── package.st │ ├── SpPatchSideBySidePresenter.class.st │ ├── DiffDelete.class.st │ ├── DiffMatch.class.st │ ├── SequenceableCollection.extension.st │ └── DiffVisitor.class.st ├── Spec2-Commands │ ├── package.st │ ├── SpToolCurrentApplication.class.st │ ├── SpSystemDiscoveryCommand.class.st │ ├── SpTextSearchCommand.class.st │ └── SpTextSelectAndPasteCommand.class.st ├── Spec2-Examples │ ├── package.st │ ├── SpSpinnerPresenter.extension.st │ ├── SpPopoverPresenter.extension.st │ ├── SpRadioButtonPresenter.extension.st │ ├── SpPresenterSelectorPresenter.extension.st │ ├── SpCheckBoxPresenter.extension.st │ ├── SpSliderPresenter.extension.st │ ├── SpNumberInputFieldPresenter.extension.st │ ├── SpMillerColumnPresenter.extension.st │ ├── SpListSelectionModel.class.st │ ├── SpNotebookPresenter.extension.st │ ├── SpComponentListPresenter.extension.st │ ├── SpSliderInputPresenter.extension.st │ ├── SpMenuGroupPresenter.extension.st │ ├── SpPopoverContentExample.class.st │ └── SpDemoFormPage.class.st ├── Spec2-ListView │ ├── package.st │ ├── SpPresenterBuilder.extension.st │ ├── SpEasySearchBoxAccepted.class.st │ ├── SpEasySearchBoxDismissed.class.st │ ├── SpLinkTableColumn.extension.st │ └── SpEasyAbstractRowPresenter.class.st ├── Spec2-Microdown │ ├── package.st │ ├── SpToolCommand.extension.st │ ├── SpStyleEnvironmentVariable.extension.st │ ├── SpExecutableLayout.extension.st │ ├── SpTableColumn.extension.st │ ├── SpNotebookPage.extension.st │ └── SpAbstractSelectionMode.extension.st ├── BaselineOfSpecCore │ └── package.st ├── Spec2-Alexandrie │ ├── package.st │ └── SpTPresenterBuilder.extension.st ├── Spec2-Code-Morphic │ └── package.st ├── Spec2-Code-Tests │ ├── package.st │ ├── ManifestSpec2CodeTests.class.st │ └── SpNavigationMockClassPool.class.st ├── Spec2-CommandLine │ └── package.st ├── Spec2-Commander2 │ ├── package.st │ ├── SpMenuPresenter.extension.st │ ├── CmCommandAborted.extension.st │ ├── SpMenuBarPresenter.extension.st │ ├── SpButtonPresenter.extension.st │ ├── SpAbstractTextPresenter.extension.st │ ├── SpAbstractTreePresenter.extension.st │ ├── SpAbstractListPresenter.extension.st │ ├── SpInteractionError.extension.st │ ├── SpToolbarPresenter.extension.st │ ├── SpCancelledInteractionError.extension.st │ ├── CmUICommandDisplayStrategy.extension.st │ ├── SpInvalidUserInputError.extension.st │ ├── CmUIDisplayAsGroup.extension.st │ ├── CmUIPositionStrategy.extension.st │ ├── CmUIHideWhenCantBeRun.extension.st │ ├── CmUILeftPositionStrategy.extension.st │ ├── SpMenuBarPresenterBuilder.class.st │ ├── CmUIRightPositionStrategy.extension.st │ ├── CmUICommand.extension.st │ ├── CmUICommandGroupDisplayStrategy.extension.st │ └── SpActionBarPresenter.extension.st ├── Spec2-Contributor │ ├── package.st │ ├── ScPagePresenter.class.st │ └── ScSpecWizardPresenter.class.st ├── Spec2-Deprecated │ ├── package.st │ ├── MenuMorph.extension.st │ ├── Array.extension.st │ ├── ManifestSpec2Deprecated.extension.st │ ├── SpInputTextDropListTest.extension.st │ ├── SpMorphicIconListAdapter.extension.st │ ├── MorphTreeMorph.extension.st │ ├── SpCurrentSpecDefaultBindings.extension.st │ ├── SpFastTableTest.class.st │ ├── SpLabelledInputTextDropListTest.class.st │ ├── SpMorphicMultiColumnListTest.class.st │ ├── SpAbstractMorphicAdapter.extension.st │ ├── SpTreeTablePresenter.extension.st │ ├── SpDropListItem.extension.st │ ├── SpMorphicListAdapter.extension.st │ ├── SpMorphicCodeAdapter.extension.st │ ├── SpMenuPresenter.extension.st │ ├── SpSearchableTreeTest.class.st │ ├── SpSpacerPresenter.extension.st │ ├── SpTestingAbstractTwoButtons.extension.st │ ├── SpLabelledDropList.extension.st │ ├── SpCodePresenter.extension.st │ ├── SpMorphicSpacerAdapter.extension.st │ ├── SpMultiColumnListPresenter.extension.st │ ├── SpDropListButtonTest.extension.st │ ├── SpInputTextDropListTest.class.st │ ├── SpPickListPresenterTest.extension.st │ ├── SpLinkPresenter.extension.st │ ├── SpIconListPresenter.extension.st │ ├── SpLabelledDropListButtonTest.extension.st │ ├── SpDeprecatedSpecToolbarHelper.class.st │ ├── SpCurrentSpecDefaultBindings.class.st │ ├── ManifestSpec2Deprecated.class.st │ ├── SpMorphicIconListAdapter.class.st │ ├── SpDynamicPresenter.extension.st │ └── SpSearchableListTest.extension.st ├── Spec2-Interactions │ ├── package.st │ ├── SpCancelledInteractionError.class.st │ ├── SpInvalidUserInputError.class.st │ └── SpInteractionError.class.st ├── Spec2-Transmission │ ├── package.st │ ├── SpActivatedSelection.extension.st │ ├── SpSingleSelectionMode.extension.st │ ├── SpMultipleSelectionMode.extension.st │ ├── SpAbstractSelectionMode.extension.st │ ├── SpTreeSingleSelectionMode.extension.st │ ├── SpAbstractTreeSelectionMode.extension.st │ ├── SpTreeMultipleSelectionMode.extension.st │ ├── SpSliderPresenter.extension.st │ ├── SpTModel.extension.st │ ├── SpImagePresenter.extension.st │ ├── SpLabelPresenter.extension.st │ ├── SpRootsPort.class.st │ └── SpPresenterSelectorPresenter.extension.st ├── Spec2-Adapters-Stub │ ├── package.st │ ├── SpStubBoxView.class.st │ ├── SpStubCodeView.class.st │ ├── SpStubGridView.class.st │ ├── SpStubPanedView.class.st │ ├── SpStubToolbarView.class.st │ ├── SpStubModalWindowView.class.st │ ├── SpStubSpacerView.class.st │ ├── SpStubModalWindowAdapter.class.st │ ├── SpStubDiffView.class.st │ ├── SpStubListView.class.st │ ├── SpStubMenuView.class.st │ ├── SpStubTabView.class.st │ ├── SpStubTextView.class.st │ ├── SpStubTreeView.class.st │ ├── SpStubButtonView.class.st │ ├── SpStubImageView.class.st │ ├── SpStubSliderView.class.st │ ├── SpStubWindowView.class.st │ ├── SpStubCheckBoxView.class.st │ ├── SpStubContainerView.class.st │ ├── SpStubDropListView.class.st │ ├── SpStubFastTableView.class.st │ ├── SpStubIconListView.class.st │ ├── SpStubMenuGroupView.class.st │ ├── SpStubMenuItemView.class.st │ ├── SpStubTransferView.class.st │ ├── SpStubTreeNodeView.class.st │ ├── SpStubDialogWindowView.class.st │ ├── SpStubRadioButtonView.class.st │ ├── SpStubTabManagerView.class.st │ ├── SpStubTreeColumnView.class.st │ ├── SpStubTableContainerView.class.st │ ├── SpStubTextInputFieldView.class.st │ ├── SpStubTickingWindowView.class.st │ ├── SpStubMultiColumnListView.class.st │ ├── SpStubNumberInputFieldView.class.st │ ├── SpStubGridAdapter.class.st │ ├── SpStubPanedAdapter.class.st │ ├── SpStubCodeAdapter.class.st │ ├── SpStubLayoutAdapter.class.st │ ├── SpStubSpacerAdapter.class.st │ ├── SpStubView.class.st │ ├── SpStubTabAdapter.class.st │ ├── SpStubDiffAdapter.class.st │ ├── SpStubMenuAdapter.class.st │ ├── SpStubTextAdapter.class.st │ ├── SpStubTreeAdapter.class.st │ ├── SpStubImageAdapter.class.st │ ├── SpStubLabelAdapter.class.st │ ├── SpStubButtonAdapter.class.st │ ├── SpStubSliderAdapter.class.st │ ├── SpStubToolbarAdapter.class.st │ ├── SpStubCheckBoxAdapter.class.st │ ├── SpStubDropListAdapter.class.st │ ├── SpStubIconListAdapter.class.st │ ├── SpStubMenuItemAdapter.class.st │ ├── SpStubTransferAdapter.class.st │ ├── SpStubTreeNodeAdapter.class.st │ ├── SpStubContainerAdapter.class.st │ ├── SpStubFastTableAdapter.class.st │ ├── SpStubMenuGroupAdapter.class.st │ ├── SpStubBoxAdapter.class.st │ ├── SpStubTabManagerAdapter.class.st │ ├── SpStubTreeColumnAdapter.class.st │ ├── SpStubDialogWindowAdapter.class.st │ ├── SpStubRadioButtonAdapter.class.st │ ├── SpStubTickingWindowAdapter.class.st │ ├── SpStubNumberInputFieldAdapter.class.st │ ├── SpStubTableContainerAdapter.class.st │ ├── SpStubTextInputFieldAdapter.class.st │ └── SpStubMultiColumnListAdapter.class.st ├── Spec2-Backend-Tests │ ├── package.st │ ├── SpTreeTableAdapterSingleColumnTest.class.st │ ├── SpAbstractMorphicAdapter.extension.st │ ├── SpListSearchTest.class.st │ ├── SpTableSearchTest.class.st │ ├── SpToggleButtonAdapterTest.class.st │ ├── SpListAdapterSingleSelectionTest.class.st │ ├── SpVerticalPanedLayoutAdapterTest.class.st │ ├── SpHorizontalPanedLayoutAdapterTest.class.st │ ├── SpListAdapterMultipleSelectionTest.class.st │ └── SpBeforeTestInitializationStrategy.class.st ├── Spec2-Code-Commands │ ├── package.st │ └── SystemNavigation.extension.st ├── Spec2-CommonWidgets │ ├── package.st │ └── SpTPresenterBuilder.extension.st ├── Spec2-Dialogs-Tests │ └── package.st ├── Spec2-ListView-Tests │ ├── package.st │ └── SpEasyTreeListViewPresenterTest.class.st ├── Spec2-Morphic-Tests │ ├── package.st │ ├── ManifestSpec2MorphicTests.class.st │ ├── SpRGBWidgetTest.class.st │ ├── SpDropListExampleTest.class.st │ └── SpScrollSyncExampleTest.class.st ├── Spec2-ObservableSlot │ └── package.st ├── Spec2-Adapters-Morphic │ ├── package.st │ ├── Object.extension.st │ ├── SpAbstractAdapter.extension.st │ ├── SpMorphicSwitchAdapter.class.st │ ├── SpMorphicBoxChildLayout.class.st │ ├── SpAbstractListPresenter.extension.st │ ├── SpProgressBarState.extension.st │ ├── SpMorphicAllItemsStrategy.class.st │ ├── SpMorphicRootItemsStrategy.class.st │ ├── SpMorphicSpinnerAdapter.class.st │ ├── SpMorphicVisibleItemsStrategy.class.st │ ├── String.extension.st │ ├── SpMorphicAdapterBindings.class.st │ ├── SpFixedProgressBarState.extension.st │ ├── SpToggleMenuItemMorph.class.st │ ├── SpNotebookPageChanged.class.st │ ├── SpLayoutFrame.extension.st │ ├── SpDragAndDropTransferToList.class.st │ ├── SpDragAndDropTransferToTree.class.st │ ├── SpNullHistoryIterator.class.st │ ├── Text.extension.st │ └── Morph.extension.st ├── Spec2-Code-Diff-Morphic │ └── package.st ├── Spec2-Code-Diff-Tests │ └── package.st ├── Spec2-Commander2-Tests │ ├── package.st │ └── SpMenuBarPresenterBuilderTest.class.st ├── Spec2-Deprecated-Tools │ ├── package.st │ ├── ChangeSorterApplication.class.st │ ├── DualChangeSorterApplication.class.st │ └── ManifestSpec2DeprecatedTools.class.st ├── Spec2-Layout-Deprecated │ └── package.st ├── Spec2-Morphic-Examples │ ├── package.st │ ├── SpPaginatorPresenter.extension.st │ ├── SpImagePresenter.extension.st │ ├── SpMorphPresenter.extension.st │ ├── SpDatePresenter.extension.st │ ├── SpRGBWidget.extension.st │ ├── SpRGBSlidersPresenter.extension.st │ ├── SpSelectEntity.extension.st │ └── SpLinkPresenter.extension.st ├── Spec2-Transformations │ └── package.st ├── Spec2-Code-Backend-Tests │ └── package.st ├── Spec2-CommonWidgets-Tests │ └── package.st ├── Spec2-Deprecated-Labelled │ ├── package.st │ ├── SpLabelledListTest.class.st │ ├── SpLabelledDropListTest.class.st │ ├── SpLabelledSliderInputTest.class.st │ └── SpLabelledTextInputTest.class.st ├── Spec2-Transmission-Tests │ └── package.st ├── Spec2-Adapters-Morphic-Tests │ ├── package.st │ ├── SpMorphicScrollableAdapterTest.class.st │ ├── SpApplicationTest.extension.st │ └── SpDrawStyleTest.class.st ├── Spec2-Commander2-ContactBook │ └── package.st ├── Spec2-Morphic-Backend-Tests │ ├── package.st │ ├── SpMorphicBaseTextAdapter.extension.st │ ├── SpMorphicImageAdapter.extension.st │ ├── SpMorphicTextInputFieldAdapter.extension.st │ ├── SpWindowPresenter.extension.st │ ├── SpMorphicWindowAdapter.extension.st │ ├── SpAbstractWidgetPresenter.extension.st │ └── SpPopoverPresenter.extension.st ├── Spec2-Pharo7To8Compatibility │ ├── package.st │ ├── OSPlatform.extension.st │ ├── RubGhostTextDisplayer.extension.st │ ├── UnixPlatform.extension.st │ ├── WinPlatform.extension.st │ ├── MacOSPlatform.extension.st │ ├── MacOSXPlatform.extension.st │ ├── Unix32Platform.extension.st │ ├── Unix64Platform.extension.st │ ├── Win32Platform.extension.st │ ├── Win64Platform.extension.st │ ├── FTStrongSelectionChanged.extension.st │ ├── RubTextFieldArea.extension.st │ ├── SpTextFieldExampleTest.extension.st │ ├── KMKeyCombination.extension.st │ ├── KMSingleKeyCombination.extension.st │ ├── FTScrollingChanged.class.st │ ├── FTSelectionChanged.extension.st │ ├── KMModifiedKeyCombination.extension.st │ ├── FTBasicItem.extension.st │ ├── NewValueHolder.extension.st │ ├── TAssertable.extension.st │ ├── TestAsserter.extension.st │ └── KMKeyCombinationChoice.extension.st ├── Spec2-Adapters-Morphic-Alexandrie │ └── package.st ├── Spec2-Adapters-Morphic-ListView │ └── package.st ├── Spec2-Examples-SimpleApplication │ └── package.st └── Spec2-Commander2-ContactBook-Extensions │ └── package.st ├── .project ├── CHANGELOG.md ├── .github └── scripts │ ├── preLoading.st │ └── preTesting.st ├── .smalltalk.ston └── .smalltalk.release.ston /.gitignore: -------------------------------------------------------------------------------- 1 | **/.DS_Store 2 | .DS_STORE -------------------------------------------------------------------------------- /src/.properties: -------------------------------------------------------------------------------- 1 | { 2 | #format : #tonel 3 | } -------------------------------------------------------------------------------- /src/Spec2-Code/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Core/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Core' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Help/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Help' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Dialogs/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Dialogs' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Dynamic/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Dynamic' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Layout/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Layout' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Morphic' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Pillar' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Tests' } 2 | -------------------------------------------------------------------------------- /src/BaselineOfSpec2/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'BaselineOfSpec2' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code-Diff' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Commands/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Commands' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Examples/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Examples' } 2 | -------------------------------------------------------------------------------- /src/Spec2-ListView/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-ListView' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Microdown/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Microdown' } 2 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | { 2 | 'srcDirectory' : 'src', 3 | 'tags' : [ #system ] 4 | } 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pharo-spec/Spec/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /src/BaselineOfSpecCore/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'BaselineOfSpecCore' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Alexandrie/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : #'Spec2-Alexandrie' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Code-Morphic/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code-Morphic' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Code-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-CommandLine/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-CommandLine' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Commander2' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Contributor/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Contributor' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Deprecated' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Interactions/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Interactions' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Transmission' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Adapters-Stub' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Backend-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Code-Commands/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code-Commands' } 2 | -------------------------------------------------------------------------------- /src/Spec2-CommonWidgets/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-CommonWidgets' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Dialogs-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Dialogs-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-ListView-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-ListView-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Morphic-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-ObservableSlot/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-ObservableSlot' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Adapters-Morphic' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff-Morphic/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code-Diff-Morphic' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code-Diff-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Commander2-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Commander2-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Tools/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Deprecated-Tools' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Layout-Deprecated/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Layout-Deprecated' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Morphic-Examples' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Transformations/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Transformations' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Code-Backend-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Code-Backend-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-CommonWidgets-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-CommonWidgets-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Labelled/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Deprecated-Labelled' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Transmission-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Transmission-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Adapters-Morphic-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Commander2-ContactBook/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Commander2-ContactBook' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Morphic-Backend-Tests' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Pharo7To8Compatibility' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic-Alexandrie/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Adapters-Morphic-Alexandrie' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic-ListView/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Adapters-Morphic-ListView' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Examples-SimpleApplication/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Examples-SimpleApplication' } 2 | -------------------------------------------------------------------------------- /src/Spec2-Commander2-ContactBook-Extensions/package.st: -------------------------------------------------------------------------------- 1 | Package { #name : 'Spec2-Commander2-ContactBook-Extensions' } 2 | -------------------------------------------------------------------------------- /.github/scripts/preLoading.st: -------------------------------------------------------------------------------- 1 | #( 'BaselineOfSpec2' 'BaselineOfSpecCore' ) 2 | do: [ :packageName | self packageOrganizer removePackage: packageName ] 3 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRList.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRList' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRList >> styleName [ 5 | ^ #list 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRRaw.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRRaw' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRRaw >> styleName [ 5 | ^ #raw 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRSlide.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRSlide' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRSlide >> styleName [ 5 | ^ #slide 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRTable.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRTable' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRTable >> styleName [ 5 | ^ #table 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Core/Model.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Model' } 2 | 3 | { #category : '*Spec2-Core' } 4 | Model >> isSpAnnouncingObject [ 5 | 6 | ^ true 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRFigure.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRFigure' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRFigure >> styleName [ 5 | ^ #figure 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRToc.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRToc' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRToc >> styleName [ 5 | ^ #tableOfContents 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Core/CmUICommand.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUICommand' } 2 | 3 | { #category : '*Spec2-Core' } 4 | CmUICommand >> isVisible [ 5 | 6 | ^ true 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRDocument.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRDocument' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRDocument >> styleName [ 5 | ^ nil 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRListItem.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRListItem' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRListItem >> styleName [ 5 | ^ #listItem 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRSection.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRSection' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRSection >> styleName [ 5 | ^ #section 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/MenuMorph.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'MenuMorph' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | MenuMorph >> buildWithSpec [ 5 | ^ self 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRBoldFormat.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRBoldFormat' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRBoldFormat >> styleName [ 5 | ^ #bold 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRCitation.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRCitation' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRCitation >> styleName [ 5 | ^ #citation 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRFootnote.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRFootnote' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRFootnote >> styleName [ 5 | ^ #footNote 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PREmptyParagraph.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PREmptyParagraph' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PREmptyParagraph >> styleName [ 5 | ^ nil 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRItalicFormat.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRItalicFormat' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRItalicFormat >> styleName [ 5 | ^ #italic 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PROrderedList.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PROrderedList' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PROrderedList >> styleName [ 5 | ^ #orderedList 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRDocumentGroup.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRDocumentGroup' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRDocumentGroup >> plaintextAppendix [ 5 | ^ nil 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRExternalLink.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRExternalLink' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRExternalLink >> styleName [ 5 | ^ #externalLink 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRInternalLink.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRInternalLink' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRInternalLink >> styleName [ 5 | ^ #internalLink 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRPreformatted.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRPreformatted' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRPreformatted >> styleName [ 5 | ^ #preFormatted 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRCommentedLine.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRCommentedLine' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRCommentedLine >> styleName [ 5 | ^ #commentedLine 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRHorizontalRule.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRHorizontalRule' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRHorizontalRule >> styleName [ 5 | ^ #horizontalRule 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRMonospaceFormat.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRMonospaceFormat' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRMonospaceFormat >> styleName [ 5 | ^ #monospace 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRSubscriptFormat.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRSubscriptFormat' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRSubscriptFormat >> styleName [ 5 | ^ #subScript 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRUnderlineFormat.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRUnderlineFormat' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRUnderlineFormat >> styleName [ 5 | ^ #underline 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRAbstractAnnotation.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRAbstractAnnotation' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRAbstractAnnotation >> styleName [ 5 | ^ #annotation 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRSuperscriptFormat.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRSuperscriptFormat' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRSuperscriptFormat >> styleName [ 5 | ^ #superScript 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/Object.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Object' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic' } 4 | Object >> asStyleVariable [ 5 | 6 | ^ SpStyleVariable newValue: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/OSPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'OSPlatform' } 2 | 3 | { #category : '*Spec2-Core' } 4 | OSPlatform >> configureApplication: anApplication configuration: aConfiguration [ 5 | 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPresenter' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpPresenter >> asWorldWindow [ 5 | 6 | ^ SpWorldPresenter presenter: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRStrikethroughFormat.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRStrikethroughFormat' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRStrikethroughFormat >> styleName [ 5 | ^ #strikeThrough 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/Array.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Array' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | Array >> asSpLayout [ 5 | ^ SpLegacyArrayLayout new 6 | array: self; 7 | yourself 8 | ] 9 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpTabSelected.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpTabSelected', 3 | #superclass : 'SpTabAnnouncement', 4 | #category : 'Spec2-Layout-Tab', 5 | #package : 'Spec2-Layout', 6 | #tag : 'Tab' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpTabUnselected.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpTabUnselected', 3 | #superclass : 'SpTabAnnouncement', 4 | #category : 'Spec2-Layout-Tab', 5 | #package : 'Spec2-Layout', 6 | #tag : 'Tab' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRAnnotatedParagraph.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRAnnotatedParagraph' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRAnnotatedParagraph >> styleName [ 5 | ^ #annotatedParagraph 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpAbstractAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractAdapter' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic' } 4 | SpAbstractAdapter >> isMorphicAdapter [ 5 | 6 | ^ false 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Code/SpTPresenterBuilder.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTPresenterBuilder' } 2 | 3 | { #category : '*Spec2-Code' } 4 | SpTPresenterBuilder >> newCode [ 5 | 6 | ^ self instantiate: SpCodePresenter 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpSpinnerPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpSpinnerPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpSpinnerPresenter class >> example [ 5 | 6 | ^ self new 7 | open 8 | ] 9 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpColumnAlignment.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpColumnAlignment' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpColumnAlignment >> asTextAlignment [ 5 | 6 | self subclassResponsibility 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Code/ManifestSpec2Code.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'ManifestSpec2Code', 3 | #superclass : 'PackageManifest', 4 | #category : 'Spec2-Code-Manifest', 5 | #package : 'Spec2-Code', 6 | #tag : 'Manifest' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/ManifestSpec2Deprecated.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'ManifestSpec2Deprecated' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | ManifestSpec2Deprecated classSide >> isDeprecated [ 5 | ^ true 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpPopoverPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPopoverPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpPopoverPresenter class >> example [ 5 | 6 | ^ SpPopoverExample new open 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpActivatedSelection.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpActivatedSelection' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpActivatedSelection >> transmission [ 5 | 6 | ^ self value 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubBoxView.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubBoxView', 3 | #superclass : 'SpStubView', 4 | #category : 'Spec2-Adapters-Stub-Views', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Views' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpMenuPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMenuPresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpMenuPresenter >> presenterBuilderClass [ 5 | 6 | ^ SpActionMenuPresenterBuilder 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/CmVisitor.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmVisitor' } 2 | 3 | { #category : '*Spec2-Core' } 4 | CmVisitor >> visitCommandDynamicGroup: aDynamicGroup [ 5 | 6 | ^ self visitCommandGroup: aDynamicGroup 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpInputTextDropListTest.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpInputTextDropListTest' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpInputTextDropListTest >> classToTest [ 5 | ^ SpInputTextDropList 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMorphicIconListAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicIconListAdapter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpMorphicIconListAdapter classSide >> isDeprecated [ 5 | ^ true 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpColumnAlignmentLeft.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpColumnAlignmentLeft' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpColumnAlignmentLeft >> asTextAlignment [ 5 | 6 | ^ TextAlignment leftFlush 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpTPresenterBuilder.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTPresenterBuilder' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpTPresenterBuilder >> newMorph [ 5 | 6 | ^ self instantiate: SpMorphPresenter 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubCodeView.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubCodeView', 3 | #superclass : 'SpStubView', 4 | #category : 'Spec2-Adapters-Stub-Views', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Views' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubGridView.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubGridView', 3 | #superclass : 'SpStubView', 4 | #category : 'Spec2-Adapters-Stub-Views', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Views' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubPanedView.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubPanedView', 3 | #superclass : 'SpStubView', 4 | #category : 'Spec2-Adapters-Stub-Views', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Views' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmCommandAborted.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmCommandAborted' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmCommandAborted >> application: anApplication [ 5 | 6 | application := anApplication 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpMenuBarPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMenuBarPresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpMenuBarPresenter >> presenterBuilderClass [ 5 | 6 | ^ SpMenuBarPresenterBuilder 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/MorphTreeMorph.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'MorphTreeMorph' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | MorphTreeMorph >> spInitializeColumsFrom: aModel [ 5 | 6 | self columns: aModel columns 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/Morph.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Morph' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | Morph >> asPresenterOn: aPresenter [ 5 | 6 | ^ aPresenter newMorph 7 | morph: self; 8 | yourself 9 | ] 10 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpColumnAlignmentCenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpColumnAlignmentCenter' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpColumnAlignmentCenter >> asTextAlignment [ 5 | 6 | ^ TextAlignment centered 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpColumnAlignmentRight.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpColumnAlignmentRight' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpColumnAlignmentRight >> asTextAlignment [ 5 | 6 | ^ TextAlignment rightFlush 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpLayoutWidgetAlignmentEnd.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLayoutWidgetAlignmentEnd' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpLayoutWidgetAlignmentEnd >> asMorphicAlign [ 5 | 6 | ^ #bottomRight 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpLayoutWidgetAlignmentStart.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLayoutWidgetAlignmentStart' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpLayoutWidgetAlignmentStart >> asMorphicAlign [ 5 | 6 | ^ #topLeft 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/OSPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'OSPlatform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | OSPlatform >> accept: aVisitor [ 5 | 6 | self subclassResponsibility 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/RubGhostTextDisplayer.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'RubGhostTextDisplayer' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | RubGhostTextDisplayer >> ghostText [ 5 | ^ ghostText 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/UnixPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'UnixPlatform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | UnixPlatform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitUnix: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/WinPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'WinPlatform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | WinPlatform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitWindows: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpSingleSelectionMode.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpSingleSelectionMode' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpSingleSelectionMode >> transmission [ 5 | 6 | ^ self selectedItem 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubToolbarView.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubToolbarView', 3 | #superclass : 'SpStubView', 4 | #category : 'Spec2-Adapters-Stub-Views', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Views' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpCurrentSpecDefaultBindings.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpCurrentSpecDefaultBindings' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpCurrentSpecDefaultBindings classSide >> isDeprecated [ 5 | ^ true 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpFastTableTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpFastTableTest', 3 | #superclass : 'SpMorphicAdapterTestCase', 4 | #category : 'Spec2-Deprecated-Tests', 5 | #package : 'Spec2-Deprecated', 6 | #tag : 'Tests' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpRadioButtonPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpRadioButtonPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpRadioButtonPresenter class >> example [ 5 | 6 | ^ SpRadioButtonExample new open 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/ManifestSpec2Morphic.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'ManifestSpec2Morphic', 3 | #superclass : 'PackageManifest', 4 | #category : 'Spec2-Morphic-Manifest', 5 | #package : 'Spec2-Morphic', 6 | #tag : 'Manifest' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpLayoutWidgetAlignment.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLayoutWidgetAlignment' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpLayoutWidgetAlignment >> asMorphicAlign [ 5 | 6 | ^ self subclassResponsibility 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/SpLayoutWidgetAlignmentCenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLayoutWidgetAlignmentCenter' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | SpLayoutWidgetAlignmentCenter >> asMorphicAlign [ 5 | 6 | ^ #center 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/MacOSPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'MacOSPlatform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | MacOSPlatform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitMacOS: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpMultipleSelectionMode.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMultipleSelectionMode' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpMultipleSelectionMode >> transmission [ 5 | 6 | ^ self selectedItems 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubModalWindowView.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubModalWindowView', 3 | #superclass : 'SpStubView', 4 | #category : 'Spec2-Adapters-Stub-Views', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Views' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Alexandrie/SpTPresenterBuilder.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : #SpTPresenterBuilder } 2 | 3 | { #category : #'*Spec2-Alexandrie' } 4 | SpTPresenterBuilder >> newAlexandrie [ 5 | 6 | ^ self instantiate: SpAlexandriePresenter 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpColumnAlignmentCenter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpColumnAlignmentCenter', 3 | #superclass : 'SpColumnAlignment', 4 | #category : 'Spec2-Core-Widgets-Table', 5 | #package : 'Spec2-Core', 6 | #tag : 'Widgets-Table' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpColumnAlignmentLeft.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpColumnAlignmentLeft', 3 | #superclass : 'SpColumnAlignment', 4 | #category : 'Spec2-Core-Widgets-Table', 5 | #package : 'Spec2-Core', 6 | #tag : 'Widgets-Table' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpColumnAlignmentRight.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpColumnAlignmentRight', 3 | #superclass : 'SpColumnAlignment', 4 | #category : 'Spec2-Core-Widgets-Table', 5 | #package : 'Spec2-Core', 6 | #tag : 'Widgets-Table' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-ListView/SpPresenterBuilder.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPresenterBuilder' } 2 | 3 | { #category : '*Spec2-ListView' } 4 | SpPresenterBuilder >> newEasyDropDown [ 5 | 6 | ^ self instantiate: SpEasyDropDownPresenter 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/MacOSXPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'MacOSXPlatform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | MacOSXPlatform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitMacOSX: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/Unix32Platform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Unix32Platform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | Unix32Platform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitUnix32: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/Unix64Platform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Unix64Platform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | Unix64Platform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitUnix64: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/Win32Platform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Win32Platform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | Win32Platform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitWindows32: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/Win64Platform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Win64Platform' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | Win64Platform >> accept: aVisitor [ 5 | 6 | ^ aVisitor visitWindows64: self 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpMockConfiguration.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMockConfiguration', 3 | #superclass : 'SpApplicationConfiguration', 4 | #category : 'Spec2-Tests-Core-Base', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Core-Base' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpAbstractSelectionMode.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractSelectionMode' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpAbstractSelectionMode >> transmission [ 5 | self subclassResponsibility 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpTreeSingleSelectionMode.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTreeSingleSelectionMode' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpTreeSingleSelectionMode >> transmission [ 5 | 6 | ^ self selectedItem 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Code-Tests/ManifestSpec2CodeTests.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'ManifestSpec2CodeTests', 3 | #superclass : 'PackageManifest', 4 | #category : 'Spec2-Code-Tests-Manifest', 5 | #package : 'Spec2-Code-Tests', 6 | #tag : 'Manifest' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpPaginatorPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPaginatorPresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpPaginatorPresenter class >> example [ 5 | 6 | ^ SpPaginatorExample new open 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpButtonPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpButtonPresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpButtonPresenter >> contextMenuFromCommandsGroup: aValuable [ 5 | 6 | self actions: aValuable value 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpLabelledInputTextDropListTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpLabelledInputTextDropListTest', 3 | #superclass : 'SpTest', 4 | #category : 'Spec2-Deprecated-Tests', 5 | #package : 'Spec2-Deprecated', 6 | #tag : 'Tests' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpAbstractTreeSelectionMode.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractTreeSelectionMode' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpAbstractTreeSelectionMode >> transmission [ 5 | self subclassResponsibility 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpTreeMultipleSelectionMode.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTreeMultipleSelectionMode' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpTreeMultipleSelectionMode >> transmission [ 5 | 6 | ^ self selectedItems 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-CommonWidgets/SpTPresenterBuilder.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTPresenterBuilder' } 2 | 3 | { #category : '*Spec2-CommonWidgets' } 4 | SpTPresenterBuilder >> newFilteringList [ 5 | 6 | ^ self instantiate: SpFilteringListPresenter 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRText.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRText' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRText >> plaintextAppendix [ 5 | ^ nil 6 | ] 7 | 8 | { #category : '*Spec2-Pillar' } 9 | PRText >> styleName [ 10 | ^ nil 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic-Tests/SpMorphicScrollableAdapterTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMorphicScrollableAdapterTest', 3 | #superclass : 'TestCase', 4 | #category : 'Spec2-Adapters-Morphic-Tests', 5 | #package : 'Spec2-Adapters-Morphic-Tests' 6 | } 7 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMorphicMultiColumnListTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMorphicMultiColumnListTest', 3 | #superclass : 'SpMorphicAdapterTestCase', 4 | #category : 'Spec2-Deprecated-Tests', 5 | #package : 'Spec2-Deprecated', 6 | #tag : 'Tests' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpPresenterSelectorPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPresenterSelectorPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpPresenterSelectorPresenter class >> example [ 5 | 6 | SpPresenterSelectorExample new open 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/SpMorphicBaseTextAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicBaseTextAdapter' } 2 | 3 | { #category : '*Spec2-Morphic-Backend-Tests' } 4 | SpMorphicBaseTextAdapter >> placeHolderText [ 5 | ^ widget ghostText asString 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Tests/ManifestSpec2MorphicTests.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'ManifestSpec2MorphicTests', 3 | #superclass : 'PackageManifest', 4 | #category : 'Spec2-Morphic-Tests-Manifest', 5 | #package : 'Spec2-Morphic-Tests', 6 | #tag : 'Manifest' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpMorphicSwitchAdapter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMorphicSwitchAdapter', 3 | #superclass : 'SpMorphicCheckBoxAdapter', 4 | #category : 'Spec2-Adapters-Morphic-Base', 5 | #package : 'Spec2-Adapters-Morphic', 6 | #tag : 'Base' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubSpacerView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Stub 3 | " 4 | Class { 5 | #name : 'SpStubSpacerView', 6 | #superclass : 'SpStubView', 7 | #category : 'Spec2-Adapters-Stub-Views', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Views' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-Code/SpCodeEvaluationSucceedAnnouncement.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpCodeEvaluationSucceedAnnouncement', 3 | #superclass : 'SpCodeAnnouncement', 4 | #category : 'Spec2-Code-Announcements', 5 | #package : 'Spec2-Code', 6 | #tag : 'Announcements' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Code/SpCodeWillBeEvaluatedAnnouncement.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpCodeWillBeEvaluatedAnnouncement', 3 | #superclass : 'SpCodeAnnouncement', 4 | #category : 'Spec2-Code-Announcements', 5 | #package : 'Spec2-Code', 6 | #tag : 'Announcements' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpAbstractTextPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractTextPresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpAbstractTextPresenter >> contextMenuFromCommandsGroup: aValuable [ 5 | 6 | self actions: aValuable value 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpAbstractTreePresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractTreePresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpAbstractTreePresenter >> contextMenuFromCommandsGroup: aValuable [ 5 | 6 | self actions: aValuable value 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/MacOSPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'MacOSPlatform' } 2 | 3 | { #category : '*Spec2-Core' } 4 | MacOSPlatform >> configureApplication: anApplication configuration: aConfiguration [ 5 | 6 | aConfiguration configureOSX: anApplication 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/UnixPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'UnixPlatform' } 2 | 3 | { #category : '*Spec2-Core' } 4 | UnixPlatform >> configureApplication: anApplication configuration: aConfiguration [ 5 | 6 | aConfiguration configureUnix: anApplication 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/WinPlatform.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'WinPlatform' } 2 | 3 | { #category : '*Spec2-Core' } 4 | WinPlatform >> configureApplication: anApplication configuration: aConfiguration [ 5 | 6 | aConfiguration configureWindows: anApplication 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpAbstractMorphicAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractMorphicAdapter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpAbstractMorphicAdapter >> setModal: aWindow [ 5 | 6 | self widgetDo: [ :w | w spSetModal: aWindow ] 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/SpMorphicImageAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicImageAdapter' } 2 | 3 | { #category : '*Spec2-Morphic-Backend-Tests' } 4 | SpMorphicImageAdapter >> hasImageAutoscaled [ 5 | ^ self widget layout = #scaledAspect 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/FTStrongSelectionChanged.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'FTStrongSelectionChanged' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | FTStrongSelectionChanged >> selectedIndex [ 5 | 6 | ^ self selectedRowIndex 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpMorphicBoxChildLayout.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMorphicBoxChildLayout', 3 | #superclass : 'SpMorphicBaseBoxLayout', 4 | #category : 'Spec2-Adapters-Morphic-Layout', 5 | #package : 'Spec2-Adapters-Morphic', 6 | #tag : 'Layout' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubModalWindowAdapter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubModalWindowAdapter', 3 | #superclass : 'SpStubDialogWindowAdapter', 4 | #category : 'Spec2-Adapters-Stub-Adapters', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Adapters' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpAbstractListPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractListPresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpAbstractListPresenter >> contextMenuFromCommandsGroup: aValuable [ 5 | 6 | self actions: aValuable value 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRAnchor.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRAnchor' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRAnchor >> plaintextAppendix [ 5 | ^ nil 6 | ] 7 | 8 | { #category : '*Spec2-Pillar' } 9 | PRAnchor >> styleName [ 10 | ^ #anchor 11 | ] 12 | -------------------------------------------------------------------------------- /.github/scripts/preTesting.st: -------------------------------------------------------------------------------- 1 | "Adding this to pass a release test that does not has sense to run here" 2 | (FileLocator imageDirectory / 'pharo.version') writeStreamDo: [ :stream | 3 | stream << (SystemVersion current major asString, SystemVersion current minor asString) ] 4 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/SpMorphicTextInputFieldAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicTextInputFieldAdapter' } 2 | 3 | { #category : '*Spec2-Morphic-Backend-Tests' } 4 | SpMorphicTextInputFieldAdapter >> widgetHeight [ 5 | 6 | ^ self widget height 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Core/ObservableValueHolder.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'ObservableValueHolder' } 2 | 3 | { #category : '*Spec2-Core' } 4 | ObservableValueHolder >> unsubscribe: anObject [ 5 | 6 | subscriptions := subscriptions reject: [ :each | each receiver = anObject ]. 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpTreeTableAdapterSingleColumnTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpTreeTableAdapterSingleColumnTest', 3 | #superclass : 'SpAbstractTreeTableAdapterTest', 4 | #category : 'Spec2-Backend-Tests-Base', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Base' 7 | } 8 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpTreeTablePresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTreeTablePresenter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpTreeTablePresenter >> doubleClickAction: aBlockClosure [ 5 | self deprecated: 'Use #whenActivatedDo: and #activateOnDoubleClick instead.' 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/RubTextFieldArea.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'RubTextFieldArea' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | RubTextFieldArea >> wrapped: aBoolean [ 5 | self deprecated: 'Obsolete' transformWith: '`@receiver wrapped: `@statements' -> '' 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRCodeblock.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRCodeblock' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRCodeblock >> plaintextAppendix [ 5 | ^ self plaintextNewline 6 | ] 7 | 8 | { #category : '*Spec2-Pillar' } 9 | PRCodeblock >> styleName [ 10 | ^ #code 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRLineBreak.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRLineBreak' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRLineBreak >> plaintextAppendix [ 5 | ^ self plaintextNewline 6 | ] 7 | 8 | { #category : '*Spec2-Pillar' } 9 | PRLineBreak >> styleName [ 10 | ^ nil 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRParagraph.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRParagraph' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRParagraph >> plaintextAppendix [ 5 | ^ self plaintextNewline 6 | ] 7 | 8 | { #category : '*Spec2-Pillar' } 9 | PRParagraph >> styleName [ 10 | ^ nil 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpSliderPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpSliderPresenter' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpSliderPresenter >> absoluteValueOutputPort [ 5 | 6 | ^ SpPropertyChangedPort 7 | newPresenter: self 8 | property: #absoluteValue 9 | ] 10 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpAbstractMorphicAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractMorphicAdapter' } 2 | 3 | { #category : '*Spec2-Backend-Tests' } 4 | SpAbstractMorphicAdapter >> typeForSearch: aString [ 5 | "emulate we are typing to perform a search" 6 | 7 | self type: aString 8 | ] 9 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpFrameConstraints.class.st: -------------------------------------------------------------------------------- 1 | " 2 | supporting constraints class for the frame layout 3 | " 4 | Class { 5 | #name : 'SpFrameConstraints', 6 | #superclass : 'SpLayoutConstraints', 7 | #category : 'Spec2-Layout-Frame', 8 | #package : 'Spec2-Layout', 9 | #tag : 'Frame' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubDiffView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubDiffView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubListView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubListView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMenuView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubMenuView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTabView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTabView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTextView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTextView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTreeView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTreeView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpInteractionError.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpInteractionError' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpInteractionError >> actForSpec [ 5 | "Override this method to define the behaviour of when an interaction error occurs." 6 | self subclassResponsibility 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Contributor/ScPagePresenter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'ScPagePresenter', 3 | #superclass : 'SpPresenter', 4 | #category : 'Spec2-Contributor', 5 | #package : 'Spec2-Contributor' 6 | } 7 | 8 | { #category : 'testing' } 9 | ScPagePresenter >> isVisible [ 10 | 11 | ^ true 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpImagePresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpImagePresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpImagePresenter class >> example [ 5 | 6 | 7 | ^ self new 8 | image: (self iconNamed: #pharoBig); 9 | open 10 | ] 11 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpMorphPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphPresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpMorphPresenter class >> example [ 5 | 6 | ^ self new 7 | morph: (Morph new 8 | color: Color random; 9 | yourself); 10 | open 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRHeader.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRHeader' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRHeader >> plaintextAppendix [ 5 | ^ self plaintextNewline 6 | ] 7 | 8 | { #category : '*Spec2-Pillar' } 9 | PRHeader >> styleName [ 10 | ^ #header, level asString 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubButtonView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubButtonView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubImageView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubImageView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubSliderView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubSliderView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubWindowView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubWindowView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubCheckBoxView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubCheckBoxView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubContainerView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubContainerView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubDropListView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubDropListView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubFastTableView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubFastTableView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubIconListView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubIconListView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMenuGroupView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubMenuGroupView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMenuItemView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubMenuItemView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTransferView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTransferView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTreeNodeView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTreeNodeView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpDropListItem.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpDropListItem' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpDropListItem >> actionHolder [ 5 | self deprecated: 'Nobody should access directly to internals of Spec. Now the action not a value holder anymore because it was not used.' 6 | ] 7 | -------------------------------------------------------------------------------- /src/Spec2-Interactions/SpCancelledInteractionError.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am the error raised when the user cancelled a request. 3 | " 4 | Class { 5 | #name : 'SpCancelledInteractionError', 6 | #superclass : 'SpInteractionError', 7 | #category : 'Spec2-Interactions', 8 | #package : 'Spec2-Interactions' 9 | } 10 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Tests/SpRGBWidgetTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpRGBWidgetTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Morphic-Tests', 5 | #package : 'Spec2-Morphic-Tests' 6 | } 7 | 8 | { #category : 'accessing' } 9 | SpRGBWidgetTest >> classToTest [ 10 | ^ SpRGBWidget 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubDialogWindowView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubDialogWindowView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubRadioButtonView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubRadioButtonView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTabManagerView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTabManagerView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTreeColumnView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTreeColumnView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Interactions/SpInvalidUserInputError.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am the error raised when a user entered bad input during interaction. 3 | " 4 | Class { 5 | #name : 'SpInvalidUserInputError', 6 | #superclass : 'SpInteractionError', 7 | #category : 'Spec2-Interactions', 8 | #package : 'Spec2-Interactions' 9 | } 10 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/SpStyleProvider.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStyleProvider', 3 | #superclass : 'Object', 4 | #category : 'Spec2-Pillar', 5 | #package : 'Spec2-Pillar' 6 | } 7 | 8 | { #category : 'styling' } 9 | SpStyleProvider >> computedStylesFor: aPRDocument [ 10 | self subclassResponsibility 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpSpecTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpSpecTest', 3 | #superclass : 'SpBasePresenterTest', 4 | #category : 'Spec2-Tests-Utils', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Utils' 7 | } 8 | 9 | { #category : 'testing' } 10 | SpSpecTest class >> isAbstract [ 11 | ^ self = SpSpecTest 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTableContainerView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTableContainerView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTextInputFieldView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTextInputFieldView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTickingWindowView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubTickingWindowView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMorphicListAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicListAdapter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpMorphicListAdapter >> getSelectionStateFor: anIndex [ 5 | self deprecated: 'This method from the old API will be removed.'. 6 | ^ self model getSelectionStateFor: anIndex 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-ListView/SpEasySearchBoxAccepted.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Announces that a search has been accepted (usually hitting enter) 3 | " 4 | Class { 5 | #name : 'SpEasySearchBoxAccepted', 6 | #superclass : 'Announcement', 7 | #category : 'Spec2-ListView-Easy', 8 | #package : 'Spec2-ListView', 9 | #tag : 'Easy' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/SpTextFieldExampleTest.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTextFieldExampleTest' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | SpTextFieldExampleTest class >> isAbstract [ 5 | "This is broken in P7. We don't have time to lose to make this part work on P7..." 6 | ^ true 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMultiColumnListView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubMultiColumnListView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubNumberInputFieldView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Only stub object, no real view is displayed. 3 | 4 | " 5 | Class { 6 | #name : 'SpStubNumberInputFieldView', 7 | #superclass : 'SpStubView', 8 | #category : 'Spec2-Adapters-Stub-Views', 9 | #package : 'Spec2-Adapters-Stub', 10 | #tag : 'Views' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpToolbarPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpToolbarPresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpToolbarPresenter >> fillWith: aCommandGroup [ 5 | 6 | self removeAllItems. 7 | SpToolbarPresenterBuilder new 8 | toolbarPresenter: self; 9 | visit: aCommandGroup 10 | ] 11 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMorphicCodeAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicCodeAdapter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpMorphicCodeAdapter >> isAboutToStyle [ 5 | self deprecated: 'Use #okToStle instead' transformWith: '`@receiver isAboutToStyle' -> '`@receiver okToStyle'. 6 | ^ self okToStyle 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpLayoutWidgetAlignmentEnd.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I will place the widget at the end in relation to the layout. 3 | " 4 | Class { 5 | #name : 'SpLayoutWidgetAlignmentEnd', 6 | #superclass : 'SpLayoutWidgetAlignment', 7 | #category : 'Spec2-Layout-Base', 8 | #package : 'Spec2-Layout', 9 | #tag : 'Base' 10 | } 11 | -------------------------------------------------------------------------------- /.smalltalk.ston: -------------------------------------------------------------------------------- 1 | SmalltalkCISpec { 2 | #preLoading : '.github/scripts/preLoading.st', 3 | #loading : [ 4 | SCIMetacelloLoadSpec { 5 | #baseline : 'Spec2', 6 | #directory : 'src', 7 | #onConflict : #useIncoming, 8 | #onUpgrade : #useIncoming, 9 | #ignoreImage : true 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMenuPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMenuPresenter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpMenuPresenter >> addTitle: aString [ 5 | self deprecated: 'Use #title: instead.' transformWith: '`@receiver addTitle: `@argument' -> '`@receiver title: `@argument'. 6 | self title: aString 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpLayoutWidgetAlignmentCenter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I will place the widget centered in relation to the layout. 3 | " 4 | Class { 5 | #name : 'SpLayoutWidgetAlignmentCenter', 6 | #superclass : 'SpLayoutWidgetAlignment', 7 | #category : 'Spec2-Layout-Base', 8 | #package : 'Spec2-Layout', 9 | #tag : 'Base' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpLayoutWidgetAlignmentStart.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I will place the widget at the start in relation to the layout. 3 | " 4 | Class { 5 | #name : 'SpLayoutWidgetAlignmentStart', 6 | #superclass : 'SpLayoutWidgetAlignment', 7 | #category : 'Spec2-Layout-Base', 8 | #package : 'Spec2-Layout', 9 | #tag : 'Base' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-Microdown/SpToolCommand.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpToolCommand' } 2 | 3 | { #category : '*Spec2-Microdown' } 4 | SpToolCommand class >> buildMicroDownUsing: aBuilder withComment: aString [ 5 | 6 | super buildMicroDownUsing: aBuilder withComment: aString. 7 | self addDocumentContextRequiredSelectors: aBuilder 8 | ] 9 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpAbstractTreeFilter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am an abstract class for tree filters. 3 | My children should propose a filter for tree nodes. 4 | " 5 | Class { 6 | #name : 'SpAbstractTreeFilter', 7 | #superclass : 'Object', 8 | #category : 'Spec2-Core-Support', 9 | #package : 'Spec2-Core', 10 | #tag : 'Support' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-ListView/SpEasySearchBoxDismissed.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Announces that a search box has been dismissed (by pressing a button or escaping) 3 | " 4 | Class { 5 | #name : 'SpEasySearchBoxDismissed', 6 | #superclass : 'Announcement', 7 | #category : 'Spec2-ListView-Easy', 8 | #package : 'Spec2-ListView', 9 | #tag : 'Easy' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/Form.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Form' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | Form >> asPresenter [ 5 | 6 | ^ SpImagePresenter new 7 | image: self; 8 | yourself 9 | ] 10 | 11 | { #category : '*Spec2-Morphic' } 12 | Form >> asPresenterOn: aSpPresenter [ 13 | 14 | ^ self asPresenter 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpTModel.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTModel' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpTModel >> defaultInputPort [ 5 | 6 | ^ self inputModelPort 7 | ] 8 | 9 | { #category : '*Spec2-Transmission' } 10 | SpTModel >> inputModelPort [ 11 | 12 | ^ SpModelPort newPresenter: self 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpEmptyPresenter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpEmptyPresenter', 3 | #superclass : 'SpPresenter', 4 | #category : 'Spec2-Tests-Layout', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Layout' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpEmptyPresenter >> layout: aSpLayout [ 11 | 12 | layout := aSpLayout 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpSearchableTreeTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpSearchableTreeTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Deprecated-Tests', 5 | #package : 'Spec2-Deprecated', 6 | #tag : 'Tests' 7 | } 8 | 9 | { #category : 'running' } 10 | SpSearchableTreeTest >> classToTest [ 11 | ^ SpSearchableTree 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Interactions/SpInteractionError.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I model an abstract interaction error. 3 | 4 | These errors are raised when an interaction with a user did not end well. 5 | " 6 | Class { 7 | #name : 'SpInteractionError', 8 | #superclass : 'Error', 9 | #category : 'Spec2-Interactions', 10 | #package : 'Spec2-Interactions' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpCheckBoxExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpCheckBoxExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpCheckBoxExampleTest >> classToTest [ 11 | ^ SpCheckBoxExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpMockApplication.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMockApplication', 3 | #superclass : 'SpApplication', 4 | #category : 'Spec2-Tests-Core-Base', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Core-Base' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpMockApplication class >> defaultBackendName [ 11 | 12 | ^ #Mock 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpTextFieldExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpTextFieldExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpTextFieldExampleTest >> classToTest [ 11 | ^ SpTextFieldExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff/SpPatchSideBySidePresenter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpPatchSideBySidePresenter', 3 | #superclass : 'SpPatchPresenter', 4 | #category : 'Spec2-Code-Diff', 5 | #package : 'Spec2-Code-Diff' 6 | } 7 | 8 | { #category : 'specs' } 9 | SpPatchSideBySidePresenter class >> adapterName [ 10 | 11 | ^ #PatchSideBySideAdapter 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/KMKeyCombination.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'KMKeyCombination' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | KMKeyCombination >> platformCharacter [ 5 | 6 | ^ '' 7 | ] 8 | 9 | { #category : '*Spec2-Pharo7To8Compatibility' } 10 | KMKeyCombination >> platformModifier [ 11 | 12 | ^ nil 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpClassMethodBrowserTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpClassMethodBrowserTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpClassMethodBrowserTest >> classToTest [ 11 | ^ SpClassMethodBrowser 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpRadioButtonExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpRadioButtonExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpRadioButtonExampleTest >> classToTest [ 11 | ^ SpRadioButtonExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpListSearchTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpListSearchTest', 3 | #superclass : 'SpAbstractSearchTest', 4 | #category : 'Spec2-Backend-Tests-Base', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpListSearchTest >> classToTest [ 11 | 12 | ^ SpListPresenter 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpTableSearchTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpTableSearchTest', 3 | #superclass : 'SpAbstractSearchTest', 4 | #category : 'Spec2-Backend-Tests-Base', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpTableSearchTest >> classToTest [ 11 | 12 | ^ SpTablePresenter 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpDynamicWidgetChangeTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpDynamicWidgetChangeTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpDynamicWidgetChangeTest >> classToTest [ 11 | ^ SpDynamicWidgetChange 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubGridAdapter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubGridAdapter', 3 | #superclass : 'SpStubLayoutAdapter', 4 | #category : 'Spec2-Adapters-Stub-Adapters', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Adapters' 7 | } 8 | 9 | { #category : 'factory' } 10 | SpStubGridAdapter >> buildWidget [ 11 | ^ SpStubGridView new 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubPanedAdapter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubPanedAdapter', 3 | #superclass : 'SpStubLayoutAdapter', 4 | #category : 'Spec2-Adapters-Stub-Adapters', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Adapters' 7 | } 8 | 9 | { #category : 'factory' } 10 | SpStubPanedAdapter >> buildWidget [ 11 | ^ SpStubPanedView new 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpCancelledInteractionError.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpCancelledInteractionError' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpCancelledInteractionError >> actForSpec [ 5 | "Does nothing on purpose." 6 | self flag: #TODO. "In the best world, we should delegate the behaviour to the Spec presenter which originated the error." 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/SpWindowPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpWindowPresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Backend-Tests' } 4 | SpWindowPresenter class >> isWindow [ 5 | 6 | ^ true 7 | ] 8 | 9 | { #category : '*Spec2-Morphic-Backend-Tests' } 10 | SpWindowPresenter class >> sampleInstanceForTest [ 11 | 12 | ^ nil 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpOpenOnIntExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpOpenOnIntExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples-Wrapper', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples-Wrapper' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpOpenOnIntExampleTest >> classToTest [ 11 | ^ SpOpenOnIntExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpOpenOnNilExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpOpenOnNilExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples-Wrapper', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples-Wrapper' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpOpenOnNilExampleTest >> classToTest [ 11 | ^ SpOpenOnNilExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpImagePresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpImagePresenter' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpImagePresenter >> defaultInputPort [ 5 | 6 | ^ self inputImagePort 7 | ] 8 | 9 | { #category : '*Spec2-Transmission' } 10 | SpImagePresenter >> inputImagePort [ 11 | 12 | ^ SpImagePort newPresenter: self 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpLabelPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLabelPresenter' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpLabelPresenter >> defaultInputPort [ 5 | 6 | ^ self inputLabelPort 7 | ] 8 | 9 | { #category : '*Spec2-Transmission' } 10 | SpLabelPresenter >> inputLabelPort [ 11 | 12 | ^ SpLabelPort newPresenter: self 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubCodeAdapter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubCodeAdapter', 3 | #superclass : 'SpStubAbstractAdapter', 4 | #category : 'Spec2-Adapters-Stub-Adapters', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Adapters' 7 | } 8 | 9 | { #category : 'factory' } 10 | SpStubCodeAdapter >> buildWidget [ 11 | 12 | ^ SpStubCodeView new 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpCheckBoxPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpCheckBoxPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpCheckBoxPresenter class >> example [ 5 | 6 | self new 7 | label: 'Example'; 8 | state: false; 9 | whenActivatedDo: [ 'Activated' crTrace ]; 10 | whenDeactivatedDo: [ 'Deactivated' crTrace ]; 11 | open 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Tests/SpDropListExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpDropListExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Morphic-Tests-Examples', 5 | #package : 'Spec2-Morphic-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpDropListExampleTest >> classToTest [ 11 | ^ SpDropListExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpApplicationWithToolbarTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpApplicationWithToolbarTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpApplicationWithToolbarTest >> classToTest [ 11 | ^ SpDemoTopLevelPresenter 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpListSelectionPresenterTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpListSelectionPresenterTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpListSelectionPresenterTest >> classToTest [ 11 | ^ SpListSelectionPresenter 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpSliderInputPresenterTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpSliderInputPresenterTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Core-Widgets', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Core-Widgets' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpSliderInputPresenterTest >> classToTest [ 11 | ^ SpSliderInputPresenter 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubLayoutAdapter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubLayoutAdapter', 3 | #superclass : 'SpStubAbstractAdapter', 4 | #category : 'Spec2-Adapters-Stub-Adapters', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Adapters' 7 | } 8 | 9 | { #category : 'factory' } 10 | SpStubLayoutAdapter >> add: aPresenter constraints: constraints [ 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpSliderPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpSliderPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpSliderPresenter class >> example [ 5 | 6 | 7 | | slider | 8 | ^ (slider := self new) 9 | min: 0; 10 | max: 100; 11 | whenValueChangedDo: [ :value | slider label: value asString ]; 12 | open 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Tests/SpScrollSyncExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpScrollSyncExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Morphic-Tests-Examples', 5 | #package : 'Spec2-Morphic-Tests', 6 | #tag : 'Examples' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpScrollSyncExampleTest >> classToTest [ 11 | ^ SpScrollSyncExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/PluggableButtonMorph.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PluggableButtonMorph' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | PluggableButtonMorph >> getStateSelector [ 5 | 6 | ^ getStateSelector 7 | ] 8 | 9 | { #category : '*Spec2-Morphic' } 10 | PluggableButtonMorph >> getStateSelector: aSelector [ 11 | 12 | getStateSelector := aSelector 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpOpenOnStringExampleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpOpenOnStringExampleTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Tests-Examples-Wrapper', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Examples-Wrapper' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpOpenOnStringExampleTest >> classToTest [ 11 | ^ SpOpenOnStringExample 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Code/SpCodeShowLineNumbersChanged.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am announced by the system announcer when the codeShowLineNumbers setting from StPharoSettings has changed. 3 | " 4 | Class { 5 | #name : 'SpCodeShowLineNumbersChanged', 6 | #superclass : 'Announcement', 7 | #category : 'Spec2-Code-Announcements', 8 | #package : 'Spec2-Code', 9 | #tag : 'Announcements' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-ListView/SpLinkTableColumn.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLinkTableColumn' } 2 | 3 | { #category : '*Spec2-ListView' } 4 | SpLinkTableColumn >> fillPresenter: aPresenter with: item [ 5 | 6 | item ifNil: [ 7 | aPresenter label: ''. 8 | ^ self ]. 9 | 10 | aPresenter 11 | label: (self readObject: item) asString; 12 | action: self action 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpAbstractListPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractListPresenter' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic' } 4 | SpAbstractListPresenter >> iconFor: anItem [ 5 | "This is needed for the Morphic backend because all of them share the same datasource asking for this method. For lists without icons it will return nil." 6 | 7 | ^ nil 8 | ] 9 | -------------------------------------------------------------------------------- /src/Spec2-Code-Commands/SystemNavigation.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SystemNavigation' } 2 | 3 | { #category : '*Spec2-Code-Commands' } 4 | SystemNavigation >> browse: anObject [ 5 | 6 | anObject browse 7 | ] 8 | 9 | { #category : '*Spec2-Code-Commands' } 10 | SystemNavigation >> inspect: anObject [ 11 | 12 | (self tools toolNamed: #inspector) inspect: anObject 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Core/KMCategory.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'KMCategory' } 2 | 3 | { #category : '*Spec2-Core' } 4 | KMCategory >> , aKMCategory [ 5 | | newCategory | 6 | 7 | newCategory := self class new. 8 | self keymaps do: [ :each | newCategory addKeymapEntry: each ]. 9 | aKMCategory keymaps do: [ :each | newCategory addKeymapEntry: each ]. 10 | ^ newCategory 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpSpacerPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpSpacerPresenter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpSpacerPresenter classSide >> adapterName [ 5 | 6 | ^ #SpacerAdapter 7 | ] 8 | 9 | { #category : '*Spec2-Deprecated' } 10 | SpSpacerPresenter classSide >> isDeprecated [ 11 | "Was needed only for old layouts." 12 | 13 | ^ true 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpProgressBarState.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpProgressBarState' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic' } 4 | SpProgressBarState >> customizeMorphicBar: aProgressBarMorph [ 5 | self subclassResponsibility 6 | ] 7 | 8 | { #category : '*Spec2-Adapters-Morphic' } 9 | SpProgressBarState >> progressBarMorph [ 10 | ^ ProgressBarMorph 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/KMSingleKeyCombination.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'KMSingleKeyCombination' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | KMSingleKeyCombination >> platformCharacter [ 5 | 6 | ^ key 7 | ] 8 | 9 | { #category : '*Spec2-Pharo7To8Compatibility' } 10 | KMSingleKeyCombination >> platformModifier [ 11 | 12 | ^ self modifier 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubSpacerAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Stub 3 | " 4 | Class { 5 | #name : 'SpStubSpacerAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubSpacerAdapter >> buildWidget [ 14 | ^ SpStubSpacerView new 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpToggleButtonAdapterTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpToggleButtonAdapterTest', 3 | #superclass : 'SpCheckboxAdapterTest', 4 | #category : 'Spec2-Backend-Tests-Base', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpToggleButtonAdapterTest >> classToTest [ 11 | 12 | ^ SpToggleButtonPresenter 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Labelled/SpLabelledListTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpLabelledListTest', 3 | #superclass : 'SpAbstractListPresenterTest', 4 | #category : 'Spec2-Deprecated-Labelled-Core-Widgets', 5 | #package : 'Spec2-Deprecated-Labelled', 6 | #tag : 'Core-Widgets' 7 | } 8 | 9 | { #category : 'running' } 10 | SpLabelledListTest >> classToTest [ 11 | ^ SpLabelledList 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpTestingAbstractTwoButtons.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTestingAbstractTwoButtons' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpTestingAbstractTwoButtons classSide >> example [ 5 | 6 | ^ self abstractExample openWithSpec 7 | ] 8 | 9 | { #category : '*Spec2-Deprecated' } 10 | SpTestingAbstractTwoButtons >> initializeButtons [ 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/SpMorphicWindowAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicWindowAdapter' } 2 | 3 | { #category : '*Spec2-Morphic-Backend-Tests' } 4 | SpMorphicWindowAdapter >> windowIsResizable [ 5 | 6 | ^ widget isResizeable 7 | ] 8 | 9 | { #category : '*Spec2-Morphic-Backend-Tests' } 10 | SpMorphicWindowAdapter >> windowSize [ 11 | 12 | ^ widget extent 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/FTScrollingChanged.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am a stub class for an unimplemented feature. 3 | " 4 | Class { 5 | #name : 'FTScrollingChanged', 6 | #superclass : 'FTAnnouncement', 7 | #instVars : [ 8 | 'newScrollingIndex', 9 | 'oldScrollingIndex' 10 | ], 11 | #category : 'Spec2-Pharo7To8Compatibility', 12 | #package : 'Spec2-Pharo7To8Compatibility' 13 | } 14 | -------------------------------------------------------------------------------- /src/Spec2-Core/Character.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Character' } 2 | 3 | { #category : '*Spec2-Core' } 4 | Character >> actionModifier [ 5 | "Define the action action modifier depending in which platform we are running. 6 | e.g. $x actionModifier will resolve in $x ctrl in unix and windows systems and $x command 7 | in mac" 8 | 9 | ^ self asKeyCombination actionModifier 10 | ] 11 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Tools/ChangeSorterApplication.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'ChangeSorterApplication', 3 | #superclass : 'ChangeSorterPresenter', 4 | #category : 'Spec2-Deprecated-Tools', 5 | #package : 'Spec2-Deprecated-Tools' 6 | } 7 | 8 | { #category : 'Spec2-Deprecated' } 9 | ChangeSorterApplication class >> isDeprecated [ 10 | "This class was renamed." 11 | 12 | ^ true 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff/DiffDelete.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'DiffDelete', 3 | #superclass : 'DiffPatchElement', 4 | #category : 'Spec2-Code-Diff', 5 | #package : 'Spec2-Code-Diff' 6 | } 7 | 8 | { #category : 'visiting' } 9 | DiffDelete >> accept: aVisitor [ 10 | 11 | aVisitor visitDelete: self 12 | ] 13 | 14 | { #category : 'testing' } 15 | DiffDelete >> isDelete [ 16 | 17 | ^ true 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUICommandDisplayStrategy.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUICommandDisplayStrategy' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUICommandDisplayStrategy >> display: aCmSpecCommand in: aMenuOrGroupPresenter do: aBlock [ 5 | aMenuOrGroupPresenter 6 | addItem: [ :item | 7 | aBlock value: item. 8 | item enabled: aCmSpecCommand canBeExecuted. 9 | item ] 10 | ] 11 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpLabelledDropList.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLabelledDropList' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpLabelledDropList >> displayBlock: aBlock [ 5 | 6 | self 7 | deprecated: 'Please use #display: instead' 8 | transformWith: '`@receiver displayBlock: `@arg' 9 | -> '`@receiver display: `@arg'. 10 | 11 | ^self dropList display: aBlock 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpNumberInputFieldPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpNumberInputFieldPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpNumberInputFieldPresenter class >> example [ 5 | 6 | 7 | ^ self new 8 | extent: 300 @ 20; 9 | placeholder: 'Enter a number'; 10 | minimum: 10; 11 | maximum: 30; 12 | climbRate: 2; 13 | open 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/SpAbstractWidgetPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractWidgetPresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Backend-Tests' } 4 | SpAbstractWidgetPresenter class >> isWindow [ 5 | 6 | ^ false 7 | ] 8 | 9 | { #category : '*Spec2-Morphic-Backend-Tests' } 10 | SpAbstractWidgetPresenter class >> sampleInstanceForTest [ 11 | 12 | ^ self new 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpDatePresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpDatePresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpDatePresenter class >> example [ 5 | 6 | 7 | ^ self new open 8 | ] 9 | 10 | { #category : '*Spec2-Morphic-Examples' } 11 | SpDatePresenter class >> exampleModal [ 12 | 13 | 14 | ^ self new openModal 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpRootsPort.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpRootsPort', 3 | #superclass : 'SpInputPort', 4 | #category : 'Spec2-Transmission-Base', 5 | #package : 'Spec2-Transmission', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'handling transmission' } 10 | SpRootsPort >> applyIncomingTransmission: anObject from: outPort to: aPresenter [ 11 | 12 | aPresenter roots: anObject 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Code-Tests/SpNavigationMockClassPool.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpNavigationMockClassPool', 3 | #superclass : 'SharedPool', 4 | #classVars : [ 5 | 'SomeClassPoolVariable' 6 | ], 7 | #category : 'Spec2-Code-Tests', 8 | #package : 'Spec2-Code-Tests' 9 | } 10 | 11 | { #category : 'mock' } 12 | SpNavigationMockClassPool >> referenceToYourself [ 13 | 14 | ^ SpNavigationMockClass 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Labelled/SpLabelledDropListTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpLabelledDropListTest', 3 | #superclass : 'SpDropListPresenterTest', 4 | #category : 'Spec2-Deprecated-Labelled-Core-Widgets', 5 | #package : 'Spec2-Deprecated-Labelled', 6 | #tag : 'Core-Widgets' 7 | } 8 | 9 | { #category : 'running' } 10 | SpLabelledDropListTest >> classToTest [ 11 | ^ SpLabelledDropList 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpMillerColumnPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMillerColumnPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpMillerColumnPresenter class >> example [ 5 | 6 | ^ SpMillerColumnPresenter new 7 | presenterBlock: [ :model | 8 | SpEasyListViewPresenter new 9 | items: (1 to: model); 10 | yourself ]; 11 | setRootModel: 10; 12 | open 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Backend-Tests/SpPopoverPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPopoverPresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Backend-Tests' } 4 | SpPopoverPresenter class >> sampleInstanceForTest [ 5 | 6 | ^ super sampleInstanceForTest 7 | relativeTo: (SpButtonPresenter new 8 | build; 9 | yourself); 10 | presenter: SpLabelPresenter new; 11 | yourself 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Code/SpApplication.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpApplication' } 2 | 3 | { #category : '*Spec2-Code' } 4 | SpApplication >> codeShowLineNumbers [ 5 | 6 | ^ self 7 | propertyAt: #codeShowLineNumbers 8 | ifAbsentPut: [ self class defaultCodeShowLineNumbers ] 9 | ] 10 | 11 | { #category : '*Spec2-Code' } 12 | SpApplication class >> defaultCodeShowLineNumbers [ 13 | 14 | ^ true 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpInvalidUserInputError.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpInvalidUserInputError' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpInvalidUserInputError >> actForSpec [ 5 | "Does nothing on purpose." 6 | UIManager default 7 | inform: self messageText. 8 | self flag: #TODO "In the best world, we should delegate the behaviour to the Spec presenter which originated the error." 9 | ] 10 | -------------------------------------------------------------------------------- /src/Spec2-Core/OrderedDictionary.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'OrderedDictionary' } 2 | 3 | { #category : '*Spec2-Core' } 4 | OrderedDictionary >> replaceKey: aKey with: otherKey [ 5 | | value index | 6 | 7 | value := self at: aKey. 8 | index := orderedKeys indexOf: aKey. 9 | dictionary removeKey: aKey. 10 | dictionary at: otherKey put: value. 11 | orderedKeys at: index put: otherKey 12 | 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Labelled/SpLabelledSliderInputTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpLabelledSliderInputTest', 3 | #superclass : 'SpSliderInputTest', 4 | #category : 'Spec2-Deprecated-Labelled-Core-Widgets', 5 | #package : 'Spec2-Deprecated-Labelled', 6 | #tag : 'Core-Widgets' 7 | } 8 | 9 | { #category : 'running' } 10 | SpLabelledSliderInputTest >> classToTest [ 11 | ^ SpLabelledSliderInput 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Microdown/SpStyleEnvironmentVariable.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpStyleEnvironmentVariable' } 2 | 3 | { #category : '*Spec2-Microdown' } 4 | SpStyleEnvironmentVariable class >> buildMicroDownUsing: aBuilder withComment: aString [ 5 | 6 | super buildMicroDownUsing: aBuilder withComment: aString. 7 | self addDocumentExample: aBuilder. 8 | self addDocumentValidValues: aBuilder 9 | 10 | ] 11 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/FTSelectionChanged.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'FTSelectionChanged' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | FTSelectionChanged >> newSelectedIndexes [ 5 | 6 | ^ self newSelectedRowIndexes 7 | ] 8 | 9 | { #category : '*Spec2-Pharo7To8Compatibility' } 10 | FTSelectionChanged >> oldSelectedIndexes [ 11 | 12 | ^ self oldSelectedRowIndexes 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/KMModifiedKeyCombination.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'KMModifiedKeyCombination' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | KMModifiedKeyCombination >> platformCharacter [ 5 | 6 | ^ self character key 7 | ] 8 | 9 | { #category : '*Spec2-Pharo7To8Compatibility' } 10 | KMModifiedKeyCombination >> platformModifier [ 11 | 12 | ^ self modifier 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Transmission/SpPresenterSelectorPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPresenterSelectorPresenter' } 2 | 3 | { #category : '*Spec2-Transmission' } 4 | SpPresenterSelectorPresenter >> defaultInputPort [ 5 | 6 | ^ self inputModelPort 7 | ] 8 | 9 | { #category : '*Spec2-Transmission' } 10 | SpPresenterSelectorPresenter >> inputModelPort [ 11 | 12 | ^ SpModelPort newPresenter: self 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpListAdapterSingleSelectionTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpListAdapterSingleSelectionTest', 3 | #superclass : 'SpAbstractListAdapterSingleSelectionTest', 4 | #category : 'Spec2-Backend-Tests-Base', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpListAdapterSingleSelectionTest >> classToTest [ 11 | ^ SpListPresenter 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Commander2-Tests/SpMenuBarPresenterBuilderTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMenuBarPresenterBuilderTest', 3 | #superclass : 'SpMenuPresenterBuilderTest', 4 | #category : 'Spec2-Commander2-Tests', 5 | #package : 'Spec2-Commander2-Tests' 6 | } 7 | 8 | { #category : 'running' } 9 | SpMenuBarPresenterBuilderTest >> setUp [ 10 | super setUp. 11 | menuBuilder := SpMenuBarPresenterBuilder new. 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Tools/DualChangeSorterApplication.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'DualChangeSorterApplication', 3 | #superclass : 'DualChangeSorterPresenter', 4 | #category : 'Spec2-Deprecated-Tools', 5 | #package : 'Spec2-Deprecated-Tools' 6 | } 7 | 8 | { #category : 'Spec2-Deprecated' } 9 | DualChangeSorterApplication class >> isDeprecated [ 10 | "This class has a new name now." 11 | 12 | ^ true 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpCodePresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpCodePresenter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpCodePresenter >> aboutToStyle: aBoolean [ 5 | self deprecated: 'Use #withSyntaxHighlight, #withoutSyntaxHighlight or #syntaxHighlight: instead.' transformWith: '`@receiver aboutToStyle: `@argument' -> '`@receiver syntaxHighlight: `@argument'. 6 | self syntaxHighlight: aBoolean 7 | ] 8 | -------------------------------------------------------------------------------- /src/Spec2-Layout/Rectangle.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Rectangle' } 2 | 3 | { #category : '*Spec2-Layout' } 4 | Rectangle >> asSpLayoutFrame [ 5 | "Answer an instance of LayoutFrame which uses fractions from receiver " 6 | 7 | ^ SpLayoutFrame new 8 | leftFraction: self left; 9 | rightFraction: self right; 10 | topFraction: self top; 11 | bottomFraction: self bottom; 12 | yourself 13 | 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpActionModifierTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpActionModifierTest', 3 | #superclass : 'TestCase', 4 | #category : 'Spec2-Tests-Core', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Core' 7 | } 8 | 9 | { #category : 'tests' } 10 | SpActionModifierTest >> testActionModifier [ 11 | 12 | self 13 | assert: $x actionModifier 14 | equals: ($x ctrl unix | $x ctrl win | $x command mac) 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpVerticalPanedLayoutAdapterTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpVerticalPanedLayoutAdapterTest', 3 | #superclass : 'SpPanedLayoutAdapterTest', 4 | #category : 'Spec2-Backend-Tests-Layout', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Layout' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpVerticalPanedLayoutAdapterTest >> newLayout [ 11 | 12 | ^ SpPanedLayout newTopToBottom 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpHorizontalPanedLayoutAdapterTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpHorizontalPanedLayoutAdapterTest', 3 | #superclass : 'SpPanedLayoutAdapterTest', 4 | #category : 'Spec2-Backend-Tests-Layout', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Layout' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpHorizontalPanedLayoutAdapterTest >> newLayout [ 11 | 12 | ^ SpPanedLayout newLeftToRight 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpListAdapterMultipleSelectionTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpListAdapterMultipleSelectionTest', 3 | #superclass : 'SpAbstractListAdapterMultipleSelectionTest', 4 | #category : 'Spec2-Backend-Tests-Base', 5 | #package : 'Spec2-Backend-Tests', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpListAdapterMultipleSelectionTest >> classToTest [ 11 | ^ SpListPresenter 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUIDisplayAsGroup.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUIDisplayAsGroup' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUIDisplayAsGroup >> display: aCmSpecCommandGroup in: aMenuPresenter do: aBlock [ 5 | 6 | aMenuPresenter addGroup: [ :menuGroup | 7 | aBlock value: menuGroup ] 8 | ] 9 | 10 | { #category : '*Spec2-Commander2' } 11 | CmUIDisplayAsGroup >> isGroup [ 12 | 13 | ^ true 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic-Tests/SpApplicationTest.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpApplicationTest' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic-Tests' } 4 | SpApplicationTest >> testAdapterBindings [ 5 | 6 | self assert: application adapterBindings class equals: SpStubAdapterBindings. 7 | application useBackend: #Morphic. 8 | self assert: application adapterBindings class equals: SpMorphicAdapterBindings 9 | 10 | ] 11 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpPopoverTopPosition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a popover needs to be shown at the top of its owner. 3 | " 4 | Class { 5 | #name : 'SpPopoverTopPosition', 6 | #superclass : 'SpPopoverPosition', 7 | #category : 'Spec2-Core-Support', 8 | #package : 'Spec2-Core', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'operations' } 13 | SpPopoverTopPosition >> applyTo: aWidget [ 14 | 15 | aWidget bePositionTop 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpRGBWidget.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpRGBWidget' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpRGBWidget class >> example [ 5 | 6 | 7 | | example | 8 | example := self new 9 | extent: 300 @ 250; 10 | open; 11 | yourself. 12 | example withWindowDo: [ :window | window title: 'RGBWidget example' ]. 13 | ^ example 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpVerticalPanedLayoutTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpVerticalPanedLayoutTest', 3 | #superclass : 'SpPanedLayoutTest', 4 | #category : 'Spec2-Tests-Layout', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Layout' 7 | } 8 | 9 | { #category : 'initialization' } 10 | SpVerticalPanedLayoutTest >> initializeTestedInstance [ 11 | 12 | layout := SpPanedLayout newTopToBottom. 13 | presenter layout: layout 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpPopoverLeftPosition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a popover needs to be shown at the left of its owner. 3 | " 4 | Class { 5 | #name : 'SpPopoverLeftPosition', 6 | #superclass : 'SpPopoverPosition', 7 | #category : 'Spec2-Core-Support', 8 | #package : 'Spec2-Core', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'operations' } 13 | SpPopoverLeftPosition >> applyTo: aWidget [ 14 | 15 | aWidget bePositionLeft 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpHorizontalPanedLayoutTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpHorizontalPanedLayoutTest', 3 | #superclass : 'SpPanedLayoutTest', 4 | #category : 'Spec2-Tests-Layout', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Layout' 7 | } 8 | 9 | { #category : 'initialization' } 10 | SpHorizontalPanedLayoutTest >> initializeTestedInstance [ 11 | 12 | layout := SpPanedLayout newLeftToRight. 13 | presenter layout: layout 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpPopoverRightPosition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a popover needs to be shown at the right of its owner. 3 | " 4 | Class { 5 | #name : 'SpPopoverRightPosition', 6 | #superclass : 'SpPopoverPosition', 7 | #category : 'Spec2-Core-Support', 8 | #package : 'Spec2-Core', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'operations' } 13 | SpPopoverRightPosition >> applyTo: aWidget [ 14 | 15 | aWidget bePositionRight 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMorphicSpacerAdapter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMorphicSpacerAdapter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpMorphicSpacerAdapter >> buildWidget [ 5 | ^ Morph new 6 | color: Color transparent; 7 | hResizing: #spaceFill; 8 | vResizing: #spaceFill; 9 | yourself 10 | ] 11 | 12 | { #category : '*Spec2-Deprecated' } 13 | SpMorphicSpacerAdapter classSide >> isDeprecated [ 14 | ^ true 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubView.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am an abstract stub view. My subclasses do not display any real UI component 3 | " 4 | Class { 5 | #name : 'SpStubView', 6 | #superclass : 'Object', 7 | #category : 'Spec2-Adapters-Stub-Views', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Views' 10 | } 11 | 12 | { #category : 'compatibility' } 13 | SpStubView >> bindKeyCombination: aShortcut toAction: aBlock [ 14 | 15 | 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUIPositionStrategy.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUIPositionStrategy' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUIPositionStrategy >> addButton: aButtonPresenter toActionBar: anActionBarPresenter [ 5 | self subclassResponsibility 6 | ] 7 | 8 | { #category : '*Spec2-Commander2' } 9 | CmUIPositionStrategy >> addButton: aButtonPresenter toToolbar: aToolbarPresenter [ 10 | self subclassResponsibility 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpPopoverBottomPosition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a popover needs to be shown at the bottom of its owner. 3 | " 4 | Class { 5 | #name : 'SpPopoverBottomPosition', 6 | #superclass : 'SpPopoverPosition', 7 | #category : 'Spec2-Core-Support', 8 | #package : 'Spec2-Core', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'operations' } 13 | SpPopoverBottomPosition >> applyTo: aWidget [ 14 | 15 | aWidget bePositionBottom 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Morphic/MouseEvent.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'MouseEvent' } 2 | 3 | { #category : '*Spec2-Morphic' } 4 | MouseEvent >> isMiddleButton [ 5 | 6 | ^ self blueButtonPressed 7 | ] 8 | 9 | { #category : '*Spec2-Morphic' } 10 | MouseEvent >> isPrimaryButton [ 11 | 12 | ^ self redButtonPressed 13 | ] 14 | 15 | { #category : '*Spec2-Morphic' } 16 | MouseEvent >> isSecondaryButton [ 17 | 18 | ^ self yellowButtonPressed 19 | ] 20 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTabAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTabAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTabAdapter >> buildWidget [ 14 | 15 | ^ SpStubTabView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/FTBasicItem.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'FTBasicItem' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | FTBasicItem >> expandedChildren [ 5 | self isExpanded ifFalse: [ ^ { self } ]. 6 | ^ {self} , (self children flatCollect: [ :e | e expandedChildren ]) 7 | ] 8 | 9 | { #category : '*Spec2-Pharo7To8Compatibility' } 10 | FTBasicItem >> withExpandedChildren [ 11 | ^ self expandedChildren 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubDiffAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubDiffAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubDiffAdapter >> buildWidget [ 14 | 15 | ^ SpStubDiffView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMenuAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubMenuAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubMenuAdapter >> buildWidget [ 14 | 15 | ^ SpStubMenuView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTextAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTextAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTextAdapter >> buildWidget [ 14 | 15 | ^ SpStubTextView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTreeAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTreeAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTreeAdapter >> buildWidget [ 14 | 15 | ^ SpStubTreeView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpKeyUpEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a key up event 3 | " 4 | Class { 5 | #name : 'SpKeyUpEventDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpKeyUpEventDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installKeyUpEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMultiColumnListPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMultiColumnListPresenter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpMultiColumnListPresenter classSide >> isDeprecated [ 5 | ^ true 6 | ] 7 | 8 | { #category : '*Spec2-Deprecated' } 9 | SpMultiColumnListPresenter >> items: items [ 10 | 11 | items ifNotEmpty: [ self numberOfColumns: (displayBlock value: items first) size ]. 12 | super items: items 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpMorphicAllItemsStrategy.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMorphicAllItemsStrategy', 3 | #superclass : 'FTAllItemsStrategy', 4 | #category : 'Spec2-Adapters-Morphic-Table', 5 | #package : 'Spec2-Adapters-Morphic', 6 | #tag : 'Table' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpMorphicAllItemsStrategy >> isMatching: anItem [ 11 | 12 | ^ dataSource model 13 | performSearch: anItem data 14 | matching: pattern 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpMorphicRootItemsStrategy.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMorphicRootItemsStrategy', 3 | #superclass : 'FTRootItemsStrategy', 4 | #category : 'Spec2-Adapters-Morphic-Table', 5 | #package : 'Spec2-Adapters-Morphic', 6 | #tag : 'Table' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpMorphicRootItemsStrategy >> isMatching: anItem [ 11 | 12 | ^ dataSource model 13 | performSearch: anItem data 14 | matching: pattern 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubImageAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubImageAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubImageAdapter >> buildWidget [ 14 | 15 | ^ SpStubImageView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubLabelAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubLabelAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubLabelAdapter >> buildWidget [ 14 | 15 | ^ SpStubLabelAdapter new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Code/SpCodeNullInteractionModel.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpCodeNullInteractionModel', 3 | #superclass : 'SpCodeInteractionModel', 4 | #category : 'Spec2-Code-Base', 5 | #package : 'Spec2-Code', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'binding' } 10 | SpCodeNullInteractionModel >> bindingOf: aString [ 11 | ^ nil 12 | ] 13 | 14 | { #category : 'binding' } 15 | SpCodeNullInteractionModel >> hasBindingOf: aString [ 16 | ^ false 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUIHideWhenCantBeRun.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUIHideWhenCantBeRun' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUIHideWhenCantBeRun >> display: aCmSpecCommand in: aMenuOrGroupPresenter do: aBlock [ 5 | aCmSpecCommand canBeExecuted "If can not be run, stop because we want to hide the command." 6 | ifFalse: [ ^ self ]. 7 | aMenuOrGroupPresenter 8 | addItem: [ :item | 9 | aBlock value: item. 10 | item ] 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpListSelectionModel.class.st: -------------------------------------------------------------------------------- 1 | " 2 | This is deprecated class because the original class ListSelectionModel was renamed to ListSelectionPresenter. You should stop to use this class and modify your code to use ListSelectionPresenter. 3 | " 4 | Class { 5 | #name : 'SpListSelectionModel', 6 | #superclass : 'SpListSelectionPresenter', 7 | #category : 'Spec2-Examples-Deprecated', 8 | #package : 'Spec2-Examples', 9 | #tag : 'Deprecated' 10 | } 11 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpRGBSlidersPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpRGBSlidersPresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpRGBSlidersPresenter class >> example [ 5 | 6 | 7 | | example | 8 | example := self new 9 | extent: 300 @ 200; 10 | open; 11 | yourself. 12 | example withWindowDo: [ :window | window title: 'RGBSliders example' ]. 13 | ^ example 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubButtonAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubButtonAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubButtonAdapter >> buildWidget [ 14 | 15 | ^ SpStubButtonView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubSliderAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubSliderAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubSliderAdapter >> buildWidget [ 14 | 15 | ^ SpStubSliderView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubToolbarAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubToolbarAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubToolbarAdapter >> buildWidget [ 14 | 15 | ^ SpStubToolbarView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpKeyDownEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a key down event 3 | " 4 | Class { 5 | #name : 'SpKeyDownEventDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpKeyDownEventDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installKeyDownEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpMouseUpEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a mouse up event 3 | " 4 | Class { 5 | #name : 'SpMouseUpEventDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpMouseUpEventDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installMouseUpEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubCheckBoxAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubCheckBoxAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubCheckBoxAdapter >> buildWidget [ 14 | 15 | ^ SpStubCheckBoxView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubDropListAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubDropListAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubDropListAdapter >> buildWidget [ 14 | 15 | ^ SpStubDropListView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubIconListAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubIconListAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubIconListAdapter >> buildWidget [ 14 | 15 | ^ SpStubIconListView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMenuItemAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubMenuItemAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubMenuItemAdapter >> buildWidget [ 14 | 15 | ^ SpStubMenuItemView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTransferAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTransferAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTransferAdapter >> buildWidget [ 14 | 15 | ^ SpStubTransferView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTreeNodeAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTreeNodeAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTreeNodeAdapter >> buildWidget [ 14 | 15 | ^ SpStubTreeNodeView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/Object.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Object' } 2 | 3 | { #category : '*Spec2-Core' } 4 | Object >> asPresenter [ 5 | 6 | ^ self asString asPresenter 7 | ] 8 | 9 | { #category : '*Spec2-Core' } 10 | Object >> isPresenter [ 11 | 12 | ^ false 13 | ] 14 | 15 | { #category : '*Spec2-Core' } 16 | Object >> isSpAnnouncingObject [ 17 | 18 | ^ false 19 | ] 20 | 21 | { #category : '*Spec2-Core' } 22 | Object >> isSpLayout [ 23 | 24 | ^ false 25 | ] 26 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpNotebookPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpNotebookPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpNotebookPresenter class >> example [ 5 | 6 | ^ self new 7 | addPageTitle: 'Test 1' provider: [ SpLabelPresenter new label: 'Content 1' ]; 8 | addPageTitle: 'Test 2' provider: [ SpLabelPresenter new label: 'Content 2' ]; 9 | addPageTitle: 'Test 3' provider: [ SpLabelPresenter new label: 'Content 3' ]; 10 | open 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpSelectEntity.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpSelectEntity' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpSelectEntity class >> example [ 5 | self new 6 | selectDialog: [ SpListPresenter new 7 | items: #(Henrik Peter); 8 | yourself ]; 9 | displaySymbol: #asString; 10 | placeholder: 'Names'; 11 | possibleEntities: [ #(Diego Stephan Norbert Stephane Marcus Torsten Sven Sean) sorted ]; 12 | openDialog 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpMorphicSpinnerAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I'm the adapter used to bridge a Spinner and its morphic representation. 3 | " 4 | Class { 5 | #name : 'SpMorphicSpinnerAdapter', 6 | #superclass : 'SpAbstractMorphicAdapter', 7 | #category : 'Spec2-Adapters-Morphic-Base', 8 | #package : 'Spec2-Adapters-Morphic', 9 | #tag : 'Base' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpMorphicSpinnerAdapter >> buildWidget [ 14 | ^ SpSpinnerMorph new 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpMorphicVisibleItemsStrategy.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMorphicVisibleItemsStrategy', 3 | #superclass : 'FTVisibleItemsStrategy', 4 | #category : 'Spec2-Adapters-Morphic-Table', 5 | #package : 'Spec2-Adapters-Morphic', 6 | #tag : 'Table' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpMorphicVisibleItemsStrategy >> isMatching: anItem [ 11 | 12 | ^ dataSource model 13 | performSearch: anItem data 14 | matching: pattern 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/String.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'String' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic' } 4 | String >> withAccentuatedCharacter: aKey [ 5 | 6 | | text index | 7 | text := self asText. 8 | aKey ifNil: [ ^ text ]. 9 | index := self asLowercase indexOf: aKey name asLowercase. 10 | index isZero 11 | ifTrue: [ ^ text ]. 12 | 13 | ^ text 14 | addAttribute: TextEmphasis underlined from: index to: index; 15 | yourself 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubContainerAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubContainerAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubContainerAdapter >> buildWidget [ 14 | 15 | ^ SpStubContainerView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubFastTableAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubFastTableAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubFastTableAdapter >> buildWidget [ 14 | 15 | ^ SpStubFastTableView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMenuGroupAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubMenuGroupAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubMenuGroupAdapter >> buildWidget [ 14 | 15 | ^ SpStubMenuGroupView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpMouseDownEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a mouse down event 3 | " 4 | Class { 5 | #name : 'SpMouseDownEventDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpMouseDownEventDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installMouseDownEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpMouseLeaveEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a key down event 3 | " 4 | Class { 5 | #name : 'SpMouseLeaveEventDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpMouseLeaveEventDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installMouseLeaveEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpMouseMoveEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a mouse move event 3 | " 4 | Class { 5 | #name : 'SpMouseMoveEventDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpMouseMoveEventDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installMouseMoveEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpTabConstraints.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpTabConstraints', 3 | #superclass : 'SpLayoutConstraints', 4 | #instVars : [ 5 | 'label' 6 | ], 7 | #category : 'Spec2-Layout-Tab', 8 | #package : 'Spec2-Layout', 9 | #tag : 'Tab' 10 | } 11 | 12 | { #category : 'accessing' } 13 | SpTabConstraints >> label [ 14 | 15 | ^ label 16 | ] 17 | 18 | { #category : 'accessing' } 19 | SpTabConstraints >> label: anObject [ 20 | 21 | label := anObject 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/NewValueHolder.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'NewValueHolder' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | NewValueHolder >> valueChanged [ 5 | 6 | self announcer announce: (ValueChanged newValue: self value) 7 | ] 8 | 9 | { #category : '*Spec2-Pharo7To8Compatibility' } 10 | NewValueHolder >> valueChanged: oldValue [ 11 | 12 | self announcer announce: (ValueChanged oldValue: oldValue newValue: self value) 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubBoxAdapter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpStubBoxAdapter', 3 | #superclass : 'SpStubLayoutAdapter', 4 | #category : 'Spec2-Adapters-Stub-Adapters', 5 | #package : 'Spec2-Adapters-Stub', 6 | #tag : 'Adapters' 7 | } 8 | 9 | { #category : 'factory' } 10 | SpStubBoxAdapter >> basicAdd: aPresenter constraints: constraints to: aPanel [ 11 | ] 12 | 13 | { #category : 'factory' } 14 | SpStubBoxAdapter >> buildWidget [ 15 | ^ SpStubBoxView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTabManagerAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTabManagerAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTabManagerAdapter >> buildWidget [ 14 | 15 | ^ SpStubTabManagerView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTreeColumnAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTreeColumnAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTreeColumnAdapter >> buildWidget [ 14 | 15 | ^ SpStubTreeColumnView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Commands/SpToolCurrentApplication.class.st: -------------------------------------------------------------------------------- 1 | " 2 | A dynamic variable to keep current executing application while executing a tool command. 3 | It helps to transmit the ongoing application (taken from the tool command context) to deeper in the system navigation. 4 | " 5 | Class { 6 | #name : 'SpToolCurrentApplication', 7 | #superclass : 'DynamicVariable', 8 | #category : 'Spec2-Commands-Presenters', 9 | #package : 'Spec2-Commands', 10 | #tag : 'Presenters' 11 | } 12 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpMillerPresenter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I'm a kind of API that a `SpMillerPresenter` should implement: basically one single method `whenActivedDo:`. 3 | " 4 | Class { 5 | #name : 'SpMillerPresenter', 6 | #superclass : 'SpPresenter', 7 | #category : 'Spec2-Core-Miller', 8 | #package : 'Spec2-Core', 9 | #tag : 'Miller' 10 | } 11 | 12 | { #category : 'initialization' } 13 | SpMillerPresenter >> whenActivatedDo: aBlock [ 14 | 15 | self subclassResponsibility 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpMouseEnterEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a mouse enter event 3 | " 4 | Class { 5 | #name : 'SpMouseEnterEventDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpMouseEnterEventDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installMouseEnterEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpPopoverContentPresenter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | A popover content presenter. 3 | All popovers contents need to extent this presenter (to get some functionalies). 4 | " 5 | Class { 6 | #name : 'SpPopoverContentPresenter', 7 | #superclass : 'SpPresenter', 8 | #category : 'Spec2-Core-Widgets', 9 | #package : 'Spec2-Core', 10 | #tag : 'Widgets' 11 | } 12 | 13 | { #category : 'api' } 14 | SpPopoverContentPresenter >> dismiss [ 15 | 16 | ^ self owner dismiss 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpSearchInputFieldPresenter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | A text field used to search. 3 | It displays an additional ""clear"" icon. 4 | 5 | " 6 | Class { 7 | #name : 'SpSearchInputFieldPresenter', 8 | #superclass : 'SpTextInputFieldPresenter', 9 | #category : 'Spec2-Core-Widgets', 10 | #package : 'Spec2-Core', 11 | #tag : 'Widgets' 12 | } 13 | 14 | { #category : 'specs' } 15 | SpSearchInputFieldPresenter class >> adapterName [ 16 | 17 | ^ #SearchInputFieldAdapter 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpWindowAnnouncement.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpWindowAnnouncement', 3 | #superclass : 'Announcement', 4 | #instVars : [ 5 | 'window' 6 | ], 7 | #category : 'Spec2-Core-Windows', 8 | #package : 'Spec2-Core', 9 | #tag : 'Windows' 10 | } 11 | 12 | { #category : 'accessing' } 13 | SpWindowAnnouncement >> window [ 14 | ^ window 15 | ] 16 | 17 | { #category : 'accessing' } 18 | SpWindowAnnouncement >> window: anObject [ 19 | window := anObject 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpDropListButtonTest.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpDropListButtonTest' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpDropListButtonTest >> classToTest [ 5 | ^ SpDropListButton 6 | ] 7 | 8 | { #category : '*Spec2-Deprecated' } 9 | SpDropListButtonTest classSide >> isDeprecated [ 10 | "This presenter does not add enough value to Spec to be kept in it. If you are using it, please copy the code in your own application." 11 | 12 | ^ true 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpVerticalLayoutDirection.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpVerticalLayoutDirection', 3 | #superclass : 'SpLayoutDirection', 4 | #category : 'Spec2-Layout-Base', 5 | #package : 'Spec2-Layout', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'testing' } 10 | SpVerticalLayoutDirection >> isVertical [ 11 | 12 | ^ true 13 | ] 14 | 15 | { #category : 'factory' } 16 | SpVerticalLayoutDirection >> newWidgetOn: anAdapter [ 17 | 18 | ^ anAdapter newVertical 19 | ] 20 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpMorphicAdapterBindings.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am used to link the spec-adapter names to the morphic adapters 3 | " 4 | Class { 5 | #name : 'SpMorphicAdapterBindings', 6 | #superclass : 'SpAdapterBindings', 7 | #category : 'Spec2-Adapters-Morphic-Support', 8 | #package : 'Spec2-Adapters-Morphic', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'initialize' } 13 | SpMorphicAdapterBindings >> abstractAdapterClass [ 14 | ^ SpAbstractMorphicAdapter 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubDialogWindowAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubDialogWindowAdapter', 6 | #superclass : 'SpStubWindowAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubDialogWindowAdapter >> buildWidget [ 14 | 15 | ^ SpStubDialogWindowView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubRadioButtonAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubRadioButtonAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubRadioButtonAdapter >> buildWidget [ 14 | 15 | ^ SpStubRadioButtonView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Commands/SpSystemDiscoveryCommand.class.st: -------------------------------------------------------------------------------- 1 | " 2 | My subclasses implement commands related to the live system discovery and exploration. 3 | " 4 | Class { 5 | #name : 'SpSystemDiscoveryCommand', 6 | #superclass : 'SpSystemNavigationCommand', 7 | #category : 'Spec2-Commands-Navigation', 8 | #package : 'Spec2-Commands', 9 | #tag : 'Navigation' 10 | } 11 | 12 | { #category : 'default' } 13 | SpSystemDiscoveryCommand class >> defaultIconName [ 14 | ^ #smallObjects 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Core/Symbol.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'Symbol' } 2 | 3 | { #category : '*Spec2-Core' } 4 | Symbol >> asPresenterOn: aPresenter [ 5 | 6 | self flag: #TODO. "The additionalSubpresentersMap is a functionality that needs to 7 | be removed, but for now we need to take it into account" 8 | ^ [ aPresenter presenterAt: self ] 9 | on: SlotNotFound 10 | do: [ :e | 11 | aPresenter additionalSubpresentersMap 12 | at: self 13 | ifAbsent: [ e pass ] ] 14 | ] 15 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpComponentListPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpComponentListPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpComponentListPresenter class >> example [ 5 | | list | 6 | 7 | list := { 8 | SpLabelPresenter new label: 'Test 1'; yourself. 9 | SpImagePresenter new image: (self iconNamed: #smallOk); yourself. 10 | SpButtonPresenter new label: 'A button'; yourself }. 11 | 12 | ^ self new 13 | presenters: list; 14 | open 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTickingWindowAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTickingWindowAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTickingWindowAdapter >> buildWidget [ 14 | 15 | ^ SpStubTickingWindowView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpMouseDoubleClickDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a double click event 3 | " 4 | Class { 5 | #name : 'SpMouseDoubleClickDefinition', 6 | #superclass : 'SpBaseEventDefinition', 7 | #category : 'Spec2-Core-Base-Event', 8 | #package : 'Spec2-Core', 9 | #tag : 'Base-Event' 10 | } 11 | 12 | { #category : 'installing' } 13 | SpMouseDoubleClickDefinition >> installOn: anAdapter target: aWidget [ 14 | 15 | anAdapter installMouseDoubleClickEvent: self to: aWidget 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpInputTextDropListTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpInputTextDropListTest', 3 | #superclass : 'SpSmokeTest', 4 | #category : 'Spec2-Deprecated-Tests', 5 | #package : 'Spec2-Deprecated', 6 | #tag : 'Tests' 7 | } 8 | 9 | { #category : '*Spec2-Deprecated' } 10 | SpInputTextDropListTest >> classToTest [ 11 | ^ SpInputTextDropList 12 | ] 13 | 14 | { #category : '*Spec2-Deprecated' } 15 | SpInputTextDropListTest >> classToTest [ 16 | ^ SpInputTextDropList 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubNumberInputFieldAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubNumberInputFieldAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubNumberInputFieldAdapter >> buildWidget [ 14 | ^ SpStubNumberInputFieldView new 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTableContainerAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTableContainerAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTableContainerAdapter >> buildWidget [ 14 | 15 | ^ SpStubTableContainerView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubTextInputFieldAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubTextInputFieldAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubTextInputFieldAdapter >> buildWidget [ 14 | 15 | ^ SpStubTextInputFieldView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUILeftPositionStrategy.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUILeftPositionStrategy' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUILeftPositionStrategy >> addButton: aButtonPresenter toActionBar: anActionBarPresenter [ 5 | anActionBarPresenter add: aButtonPresenter 6 | ] 7 | 8 | { #category : '*Spec2-Commander2' } 9 | CmUILeftPositionStrategy >> addButton: aButtonPresenter toToolbar: aToolbarPresenter [ 10 | aToolbarPresenter addItemLeft: aButtonPresenter 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpMenuBarPresenterBuilder.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am a visitor that builds a Spec MenuBarPresenter from a commands and commands group. 3 | " 4 | Class { 5 | #name : 'SpMenuBarPresenterBuilder', 6 | #superclass : 'SpMenuPresenterBuilder', 7 | #category : 'Spec2-Commander2-Visitors', 8 | #package : 'Spec2-Commander2', 9 | #tag : 'Visitors' 10 | } 11 | 12 | { #category : 'accessing' } 13 | SpMenuBarPresenterBuilder class >> menuPresenterClass [ 14 | ^ SpMenuBarPresenter 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Core/KMKeyCombination.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'KMKeyCombination' } 2 | 3 | { #category : '*Spec2-Core' } 4 | KMKeyCombination >> actionModifier [ 5 | "Define the action action modifier depending in which platform we are running. 6 | e.g. $x actionModifier will resolve in $x ctrl in unix and windows systems and $x command 7 | in mac" 8 | 9 | ^ (KMModifier command + self) mac 10 | | (KMModifier control + self) unix 11 | | (KMModifier control + self) win 12 | ] 13 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpPickListPresenterTest.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpPickListPresenterTest' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpPickListPresenterTest >> classToTest [ 5 | ^ SpPickListPresenter 6 | ] 7 | 8 | { #category : '*Spec2-Deprecated' } 9 | SpPickListPresenterTest classSide >> isDeprecated [ 10 | "This presenter does not add enough value to Spec to be kept in it. If you are using it, please copy the code in your own application." 11 | 12 | ^ true 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpHorizontalLayoutDirection.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpHorizontalLayoutDirection', 3 | #superclass : 'SpLayoutDirection', 4 | #category : 'Spec2-Layout-Base', 5 | #package : 'Spec2-Layout', 6 | #tag : 'Base' 7 | } 8 | 9 | { #category : 'testing' } 10 | SpHorizontalLayoutDirection >> isHorizontal [ 11 | 12 | ^ true 13 | ] 14 | 15 | { #category : 'factory' } 16 | SpHorizontalLayoutDirection >> newWidgetOn: anAdapter [ 17 | 18 | ^ anAdapter newHorizontal 19 | ] 20 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/PRDocumentItem.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'PRDocumentItem' } 2 | 3 | { #category : '*Spec2-Pillar' } 4 | PRDocumentItem >> plaintextNewline [ 5 | ^ String cr 6 | ] 7 | 8 | { #category : '*Spec2-Pillar' } 9 | PRDocumentItem >> plaintextOffset [ 10 | ^ self plaintextAppendix 11 | ifNotNil: [ :appendix | appendix size ] 12 | ifNil: [ 0 ] 13 | ] 14 | 15 | { #category : '*Spec2-Pillar' } 16 | PRDocumentItem >> styleName [ 17 | self subclassResponsibility 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpFixedProgressBarState.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpFixedProgressBarState' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic' } 4 | SpFixedProgressBarState >> customizeMorphicBar: aProgressBarMorph [ 5 | 6 | aProgressBarMorph value: self value 7 | ] 8 | 9 | { #category : '*Spec2-Adapters-Morphic' } 10 | SpFixedProgressBarState >> customizeMorphicLabel: aLabelMorph [ 11 | 12 | aLabelMorph contents: ((self value * 100) asInteger min: 100) asString, '%' 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Stub/SpStubMultiColumnListAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Adapt the presenter on a stub view that displays no real UI elements. 3 | " 4 | Class { 5 | #name : 'SpStubMultiColumnListAdapter', 6 | #superclass : 'SpStubAbstractAdapter', 7 | #category : 'Spec2-Adapters-Stub-Adapters', 8 | #package : 'Spec2-Adapters-Stub', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : 'factory' } 13 | SpStubMultiColumnListAdapter >> buildWidget [ 14 | 15 | ^ SpStubMultiColumnListView new 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Tools/ManifestSpec2DeprecatedTools.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I contains deprecated classes/methods of Spec Tools that will be removed in Pharo 9. 3 | " 4 | Class { 5 | #name : 'ManifestSpec2DeprecatedTools', 6 | #superclass : 'PackageManifest', 7 | #category : 'Spec2-Deprecated-Tools-Manifest', 8 | #package : 'Spec2-Deprecated-Tools', 9 | #tag : 'Manifest' 10 | } 11 | 12 | { #category : 'Spec2-Deprecated' } 13 | ManifestSpec2DeprecatedTools class >> isDeprecated [ 14 | ^ true 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUIRightPositionStrategy.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUIRightPositionStrategy' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUIRightPositionStrategy >> addButton: aButtonPresenter toActionBar: anActionBarPresenter [ 5 | anActionBarPresenter addLast: aButtonPresenter 6 | ] 7 | 8 | { #category : '*Spec2-Commander2' } 9 | CmUIRightPositionStrategy >> addButton: aButtonPresenter toToolbar: aToolbarPresenter [ 10 | aToolbarPresenter addItemRight: aButtonPresenter 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpFocusLostEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a ""lost focus"" (focus leaved the widget) event. 3 | 4 | " 5 | Class { 6 | #name : 'SpFocusLostEventDefinition', 7 | #superclass : 'SpBaseEventDefinition', 8 | #category : 'Spec2-Core-Base-Event', 9 | #package : 'Spec2-Core', 10 | #tag : 'Base-Event' 11 | } 12 | 13 | { #category : 'installing' } 14 | SpFocusLostEventDefinition >> installOn: anAdapter target: aWidget [ 15 | 16 | anAdapter installFocusLostEvent: self to: aWidget 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpSliderInputPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpSliderInputPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpSliderInputPresenter class >> example [ 5 | 6 | 7 | | example | 8 | example := self new 9 | min: 0; 10 | max: 250; 11 | value: 120; 12 | extent: 400 @ 50; 13 | open. 14 | example withWindowDo: [ :window | 15 | window title: 'SliderInput example' ]. 16 | ^ example 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpFocusReceivedEventDefinition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I define a ""got focus"" (focus received) event. 3 | 4 | " 5 | Class { 6 | #name : 'SpFocusReceivedEventDefinition', 7 | #superclass : 'SpBaseEventDefinition', 8 | #category : 'Spec2-Core-Base-Event', 9 | #package : 'Spec2-Core', 10 | #tag : 'Base-Event' 11 | } 12 | 13 | { #category : 'installing' } 14 | SpFocusReceivedEventDefinition >> installOn: anAdapter target: aWidget [ 15 | 16 | anAdapter installFocusReceivedEvent: self to: aWidget 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpLinkPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLinkPresenter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpLinkPresenter >> labelHolder [ 5 | self deprecated: 'Nobody should access directly to internals of Spec. Now this variable is not a value holder anymore.' 6 | ] 7 | 8 | { #category : '*Spec2-Deprecated' } 9 | SpLinkPresenter >> urlHolder [ 10 | self deprecated: 'Nobody should access directly to internals of Spec. Now this variable is not a value holder anymore.' 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpIconListPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpIconListPresenter' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpIconListPresenter classSide >> example [ 5 | 6 | | example | 7 | example := self new. 8 | example 9 | icons: [ :e | example iconNamed: #forwardIcon ]; 10 | items: (1 to: 10) asArray; 11 | openWithSpec. 12 | ^ example 13 | ] 14 | 15 | { #category : '*Spec2-Deprecated' } 16 | SpIconListPresenter classSide >> isDeprecated [ 17 | ^ true 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpLabelledDropListButtonTest.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLabelledDropListButtonTest' } 2 | 3 | { #category : '*Spec2-Deprecated' } 4 | SpLabelledDropListButtonTest >> classToTest [ 5 | ^ SpLabelledDropListButton 6 | ] 7 | 8 | { #category : '*Spec2-Deprecated' } 9 | SpLabelledDropListButtonTest classSide >> isDeprecated [ 10 | "This presenter does not add enough value to Spec to be kept in it. If you are using it, please copy the code in your own application." 11 | 12 | ^ true 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/TAssertable.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'TAssertable' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | TAssertable >> assertEmpty: aCollection [ 5 | ^ self assert: aCollection isEmpty description: aCollection asString , ' should have been empty' 6 | ] 7 | 8 | { #category : '*Spec2-Pharo7To8Compatibility' } 9 | TAssertable >> denyEmpty: aCollection [ 10 | ^ self assert: aCollection isNotEmpty description: aCollection asString , ' should not have been empty' 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpCodeCommandContextMock.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpCodeCommandContextMock', 3 | #superclass : 'Object', 4 | #instVars : [ 5 | 'selection' 6 | ], 7 | #category : 'Spec2-Tests-Commands', 8 | #package : 'Spec2-Tests', 9 | #tag : 'Commands' 10 | } 11 | 12 | { #category : 'accessing' } 13 | SpCodeCommandContextMock >> selection [ 14 | 15 | ^ selection 16 | ] 17 | 18 | { #category : 'accessing' } 19 | SpCodeCommandContextMock >> selection: anObject [ 20 | 21 | selection := anObject 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpSpinnerPresenter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | A simple spinner. 3 | " 4 | Class { 5 | #name : 'SpSpinnerPresenter', 6 | #superclass : 'SpAbstractWidgetPresenter', 7 | #category : 'Spec2-Core-Widgets', 8 | #package : 'Spec2-Core', 9 | #tag : 'Widgets' 10 | } 11 | 12 | { #category : 'specs' } 13 | SpSpinnerPresenter class >> adapterName [ 14 | 15 | ^ #SpinnerAdapter 16 | ] 17 | 18 | { #category : 'documentation' } 19 | SpSpinnerPresenter class >> documentFactoryMethodSelector [ 20 | 21 | ^ #newSpinner 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Microdown/SpExecutableLayout.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpExecutableLayout' } 2 | 3 | { #category : '*Spec2-Microdown' } 4 | SpExecutableLayout class >> buildMicroDownUsing: aBuilder withComment: aString [ 5 | 6 | super buildMicroDownUsing: aBuilder withComment: aString. 7 | "Sections" 8 | self documentSections keysAndValuesDo: [ :label :methods | 9 | self addDocumentSection: aBuilder label: label methods: methods ]. 10 | "Hierarchy" 11 | self addDocumentSectionHierarchy: aBuilder. 12 | 13 | ] 14 | -------------------------------------------------------------------------------- /src/Spec2-Morphic-Examples/SpLinkPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLinkPresenter' } 2 | 3 | { #category : '*Spec2-Morphic-Examples' } 4 | SpLinkPresenter class >> example [ 5 | 6 | 7 | | example | 8 | example := self new 9 | url: 'https://pharo.org'; 10 | label: 'Pharo website'; 11 | extent: 200 @ 20; 12 | open; 13 | yourself. 14 | 15 | example withWindowDo: [ :w | w title: 'Link presenter' ]. 16 | 17 | ^ example 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/TestAsserter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'TestAsserter' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | TestAsserter >> assertEmpty: aCollection [ 5 | ^ self assert: aCollection isEmpty description: aCollection asString , ' should have been empty' 6 | ] 7 | 8 | { #category : '*Spec2-Pharo7To8Compatibility' } 9 | TestAsserter >> denyEmpty: aCollection [ 10 | ^ self assert: aCollection isNotEmpty description: aCollection asString , ' should not have been empty' 11 | ] 12 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpToggleMenuItemMorph.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpToggleMenuItemMorph', 3 | #superclass : 'ToggleMenuItemMorph', 4 | #category : 'Spec2-Adapters-Morphic-Support', 5 | #package : 'Spec2-Adapters-Morphic', 6 | #tag : 'Support' 7 | } 8 | 9 | { #category : 'private - drawing' } 10 | SpToggleMenuItemMorph >> itemShortcut [ 11 | 12 | "In Spec, this is always already normalised" 13 | ^ (ToggleMenuItemShortcut owner: self keyText: '') 14 | normalizedKeyText: self keyText; 15 | yourself 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpNotebookPageChanged.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpNotebookPageChanged', 3 | #superclass : 'SpNotebookPageAnnouncement', 4 | #instVars : [ 5 | 'oldPage' 6 | ], 7 | #category : 'Spec2-Adapters-Morphic-Notebook', 8 | #package : 'Spec2-Adapters-Morphic', 9 | #tag : 'Notebook' 10 | } 11 | 12 | { #category : 'accessing' } 13 | SpNotebookPageChanged >> oldPage [ 14 | ^ oldPage 15 | ] 16 | 17 | { #category : 'accessing' } 18 | SpNotebookPageChanged >> oldPage: anObject [ 19 | oldPage := anObject 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Code/SequenceableCollection.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SequenceableCollection' } 2 | 3 | { #category : '*Spec2-Code' } 4 | SequenceableCollection >> groupsOf: n [ 5 | | groups pos | 6 | 7 | pos := 0. 8 | groups := OrderedCollection new. 9 | (n to: self size by: n) do: [ :index | 10 | | args | 11 | args := self copyFrom: index - n + 1 to: index. 12 | groups add: args. 13 | pos := pos + n ]. 14 | pos < self size ifTrue: [ 15 | groups add: (self copyFrom: pos + 1 to: self size) ]. 16 | ^ groups 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpOverlayConstraints.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpOverlayConstraints', 3 | #superclass : 'SpLayoutConstraints', 4 | #traits : 'SpTAlignable', 5 | #instVars : [ 6 | 'overlay' 7 | ], 8 | #category : 'Spec2-Layout-Overlay', 9 | #package : 'Spec2-Layout', 10 | #tag : 'Overlay' 11 | } 12 | 13 | { #category : 'accessing' } 14 | SpOverlayConstraints >> beOverlay [ 15 | 16 | ^ overlay := true 17 | ] 18 | 19 | { #category : 'testing' } 20 | SpOverlayConstraints >> isOverlay [ 21 | 22 | ^ overlay = true 23 | ] 24 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpLayoutFrame.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpLayoutFrame' } 2 | 3 | { #category : '*Spec2-Adapters-Morphic' } 4 | SpLayoutFrame >> asMorphicLayout [ 5 | 6 | ^ LayoutFrame identity 7 | topFraction: self topFraction; 8 | topOffset: self topOffset; 9 | bottomFraction: self bottomFraction; 10 | bottomOffset: self bottomOffset; 11 | rightFraction: self rightFraction; 12 | rightOffset: self rightOffset; 13 | leftFraction: self leftFraction; 14 | leftOffset: self leftOffset; 15 | yourself 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated-Labelled/SpLabelledTextInputTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpLabelledTextInputTest', 3 | #superclass : 'SpTextInputFieldPresenterTest', 4 | #category : 'Spec2-Deprecated-Labelled-Core-Widgets', 5 | #package : 'Spec2-Deprecated-Labelled', 6 | #tag : 'Core-Widgets' 7 | } 8 | 9 | { #category : 'running' } 10 | SpLabelledTextInputTest >> classToTest [ 11 | ^ SpLabelledTextInput 12 | ] 13 | 14 | { #category : 'private' } 15 | SpLabelledTextInputTest >> textInputAdapter [ 16 | 17 | ^ presenter input adapter 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpDeprecatedSpecToolbarHelper.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Description 3 | -------------------- 4 | 5 | I am a class only here to help to migrate from Spec-Pharo70 to Spec-Pharo80. 6 | 7 | I will catch methods from the old dialog toolbar implementation and use the new API. 8 | " 9 | Class { 10 | #name : 'SpDeprecatedSpecToolbarHelper', 11 | #superclass : 'Object', 12 | #instVars : [ 13 | 'windowPresenter' 14 | ], 15 | #category : 'Spec2-Deprecated-Obsolete', 16 | #package : 'Spec2-Deprecated', 17 | #tag : 'Obsolete' 18 | } 19 | -------------------------------------------------------------------------------- /.smalltalk.release.ston: -------------------------------------------------------------------------------- 1 | SmalltalkCISpec { 2 | #preLoading : '.github/scripts/preLoading.st', 3 | #loading : [ 4 | SCIMetacelloLoadSpec { 5 | #baseline : 'Spec2', 6 | #directory : 'src', 7 | #onConflict : #useIncoming, 8 | #onUpgrade : #useIncoming, 9 | #ignoreImage : true 10 | } 11 | ], 12 | #preTesting : [ '.github/scripts/preTesting.st' ], 13 | #testing : { 14 | #packages : [ 15 | 'System-Settings-Tests.*', 16 | 'System-Dependencies-Tests', 17 | 'ReleaseTests.*' ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic-Tests/SpDrawStyleTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpDrawStyleTest', 3 | #superclass : 'TestCase', 4 | #category : 'Spec2-Adapters-Morphic-Tests', 5 | #package : 'Spec2-Adapters-Morphic-Tests' 6 | } 7 | 8 | { #category : 'tests' } 9 | SpDrawStyleTest >> testToColor [ 10 | | style | 11 | 12 | style := SpDrawStyle new. 13 | self assert: (style toColor: #FF0000) equals: Color red. 14 | self assert: (style toColor: #'00FF00FF') equals: Color green. 15 | self assert: (style toColor: #blue) equals: Color blue 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpDiffUnifiedPresenter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I display an unified view 3 | " 4 | Class { 5 | #name : 'SpDiffUnifiedPresenter', 6 | #superclass : 'SpDiffPresenter', 7 | #category : 'Spec2-Core-Widgets', 8 | #package : 'Spec2-Core', 9 | #tag : 'Widgets' 10 | } 11 | 12 | { #category : 'specs' } 13 | SpDiffUnifiedPresenter class >> adapterName [ 14 | 15 | ^ #DiffUnifiedAdapter 16 | ] 17 | 18 | { #category : 'initialization' } 19 | SpDiffUnifiedPresenter >> initialize [ 20 | 21 | super initialize. 22 | showOnlyDestination := true 23 | ] 24 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpNullPresenter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | A null presenter that contains nothing. 3 | Used by DynamicPresentersListBuilder to fill empty space when required for the layout. 4 | " 5 | Class { 6 | #name : 'SpNullPresenter', 7 | #superclass : 'SpPresenter', 8 | #category : 'Spec2-Core-Widgets', 9 | #package : 'Spec2-Core', 10 | #tag : 'Widgets' 11 | } 12 | 13 | { #category : 'layout' } 14 | SpNullPresenter class >> defaultLayout [ 15 | "Returns empty layout. That's the point of null presenter." 16 | 17 | ^ SpBoxLayout newTopToBottom 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpCurrentSpecDefaultBindings.class.st: -------------------------------------------------------------------------------- 1 | " 2 | Use my superclass. I am deprecated. 3 | " 4 | Class { 5 | #name : 'SpCurrentSpecDefaultBindings', 6 | #superclass : 'SpBindings', 7 | #category : 'Spec2-Deprecated-Obsolete', 8 | #package : 'Spec2-Deprecated', 9 | #tag : 'Obsolete' 10 | } 11 | 12 | { #category : '*Spec2-Deprecated' } 13 | SpCurrentSpecDefaultBindings class >> isDeprecated [ 14 | ^ true 15 | ] 16 | 17 | { #category : '*Spec2-Deprecated' } 18 | SpCurrentSpecDefaultBindings class >> isDeprecated [ 19 | ^ true 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Microdown/SpTableColumn.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpTableColumn' } 2 | 3 | { #category : '*Spec2-Microdown' } 4 | SpTableColumn class >> buildMicroDownUsing: aBuilder withComment: aString [ 5 | 6 | super buildMicroDownUsing: aBuilder withComment: aString. 7 | "Sections" 8 | self documentSections keysAndValuesDo: [ :label :methods | 9 | SpAbstractWidgetPresenter 10 | addDocumentSection: aBuilder 11 | label: label 12 | methods: methods ]. 13 | "Hierarchy" 14 | self addDocumentSectionHierarchy: aBuilder. 15 | 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Pharo7To8Compatibility/KMKeyCombinationChoice.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'KMKeyCombinationChoice' } 2 | 3 | { #category : '*Spec2-Pharo7To8Compatibility' } 4 | KMKeyCombinationChoice >> platformCharacter [ 5 | 6 | shortcuts do: [ :each | 7 | each platformCharacter ifNotNil: [ :char | ^ char ] ]. 8 | ^ nil 9 | ] 10 | 11 | { #category : '*Spec2-Pharo7To8Compatibility' } 12 | KMKeyCombinationChoice >> platformModifier [ 13 | 14 | shortcuts do: [ :each | 15 | each platformModifier ifNotNil: [ :mod | ^ mod ] ]. 16 | ^ nil 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpDragAndDropTransferToList.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpDragAndDropTransferToList', 3 | #superclass : 'SpDragAndDropTransfer', 4 | #instVars : [ 5 | 'index' 6 | ], 7 | #category : 'Spec2-Adapters-Morphic-Support', 8 | #package : 'Spec2-Adapters-Morphic', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'accessing' } 13 | SpDragAndDropTransferToList >> index [ 14 | 15 | ^ index 16 | ] 17 | 18 | { #category : 'accessing' } 19 | SpDragAndDropTransferToList >> index: anInteger [ 20 | 21 | index := anInteger 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUICommand.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUICommand' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUICommand >> id [ 5 | 6 | ^ String streamContents: [ :stream | 7 | | parts name | 8 | 9 | name := self name 10 | ifNil: [ 11 | self shortcutKey 12 | ifNotNil: [ 'shortcut ', (KMShortcutPrinter toString: self shortcutKey) ] 13 | ifNil: [ 'unknown' ] ]. 14 | parts := name substrings. 15 | stream << parts first asLowercase. 16 | parts allButFirstDo: [ :each | stream << each capitalized ] ] 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpToolbarItemLeftPosition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | This class has a single instance representing a left item position. 3 | 4 | Do not use the class directly, instead use: 5 | 6 | ITItemPosition left 7 | " 8 | Class { 9 | #name : 'SpToolbarItemLeftPosition', 10 | #superclass : 'SpToolbarItemPosition', 11 | #category : 'Spec2-Core-Widgets', 12 | #package : 'Spec2-Core', 13 | #tag : 'Widgets' 14 | } 15 | 16 | { #category : 'accessing' } 17 | SpToolbarItemLeftPosition >> addItem: anObject into: aToolbar [ 18 | aToolbar addItemLeft: anObject 19 | ] 20 | -------------------------------------------------------------------------------- /src/Spec2-Microdown/SpNotebookPage.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpNotebookPage' } 2 | 3 | { #category : '*Spec2-Microdown' } 4 | SpNotebookPage class >> buildMicroDownUsing: aBuilder withComment: aString [ 5 | 6 | super buildMicroDownUsing: aBuilder withComment: aString. 7 | "Factory method" 8 | self addDocumentSectionFactoryMethod: aBuilder. 9 | "Sections" 10 | self documentSections keysAndValuesDo: [ :label :methods | 11 | SpAbstractWidgetPresenter 12 | addDocumentSection: aBuilder 13 | label: label 14 | methods: methods ] 15 | ] 16 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpDragAndDropTransferToTree.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpDragAndDropTransferToTree', 3 | #superclass : 'SpDragAndDropTransferToTable', 4 | #instVars : [ 5 | 'target' 6 | ], 7 | #category : 'Spec2-Adapters-Morphic-Support', 8 | #package : 'Spec2-Adapters-Morphic', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'accessing' } 13 | SpDragAndDropTransferToTree >> target [ 14 | 15 | ^ target 16 | ] 17 | 18 | { #category : 'accessing' } 19 | SpDragAndDropTransferToTree >> target: anObject [ 20 | 21 | target := anObject 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Adapters-Morphic/SpNullHistoryIterator.class.st: -------------------------------------------------------------------------------- 1 | " 2 | A history iterator to be used when disabling undo/redo 3 | " 4 | Class { 5 | #name : 'SpNullHistoryIterator', 6 | #superclass : 'HistoryIterator', 7 | #category : 'Spec2-Adapters-Morphic-Support', 8 | #package : 'Spec2-Adapters-Morphic', 9 | #tag : 'Support' 10 | } 11 | 12 | { #category : 'adding' } 13 | SpNullHistoryIterator >> addItem: aHistoryItem [ 14 | "do nothing" 15 | ] 16 | 17 | { #category : 'adding' } 18 | SpNullHistoryIterator >> at: anInteger put: anItem [ 19 | "do nothing" 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpToolbarItemRightPosition.class.st: -------------------------------------------------------------------------------- 1 | " 2 | This class has a single instance representing a right item position. 3 | 4 | Do not use the class directly, instead use: 5 | 6 | ITItemPosition right 7 | " 8 | Class { 9 | #name : 'SpToolbarItemRightPosition', 10 | #superclass : 'SpToolbarItemPosition', 11 | #category : 'Spec2-Core-Widgets', 12 | #package : 'Spec2-Core', 13 | #tag : 'Widgets' 14 | } 15 | 16 | { #category : 'accessing' } 17 | SpToolbarItemRightPosition >> addItem: anObject into: aToolbar [ 18 | aToolbar addItemRight: anObject 19 | ] 20 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/SpTextRenderObject.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpTextRenderObject', 3 | #superclass : 'SpRenderObject', 4 | #category : 'Spec2-Pillar', 5 | #package : 'Spec2-Pillar' 6 | } 7 | 8 | { #category : 'visiting' } 9 | SpTextRenderObject >> acceptRenderObjectVisitor: aVisitor [ 10 | ^ aVisitor visitText: self 11 | ] 12 | 13 | { #category : 'accessing' } 14 | SpTextRenderObject >> contents [ 15 | ^ item text 16 | ] 17 | 18 | { #category : 'printing' } 19 | SpTextRenderObject >> printOn: aStream [ 20 | aStream << 'text object: ' << self contents 21 | ] 22 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpMockMillerPresenter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMockMillerPresenter', 3 | #superclass : 'SpMillerPresenter', 4 | #instVars : [ 5 | 'activationBlock' 6 | ], 7 | #category : 'Spec2-Tests-Miller', 8 | #package : 'Spec2-Tests', 9 | #tag : 'Miller' 10 | } 11 | 12 | { #category : 'simulating' } 13 | SpMockMillerPresenter >> activate [ 14 | 15 | activationBlock value: (SpMillerActivation on: 1) 16 | ] 17 | 18 | { #category : 'initialization' } 19 | SpMockMillerPresenter >> whenActivatedDo: aBlock [ 20 | 21 | activationBlock := aBlock 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/CmUICommandGroupDisplayStrategy.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'CmUICommandGroupDisplayStrategy' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | CmUICommandGroupDisplayStrategy >> display: aCmSpecCommandGroup in: aMenuPresenter do: aBlock [ 5 | self subclassResponsibility 6 | ] 7 | 8 | { #category : '*Spec2-Commander2' } 9 | CmUICommandGroupDisplayStrategy >> isGroup [ 10 | 11 | self subclassResponsibility 12 | ] 13 | 14 | { #category : '*Spec2-Commander2' } 15 | CmUICommandGroupDisplayStrategy >> isSubMenu [ 16 | 17 | ^ self isGroup not 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-ListView-Tests/SpEasyTreeListViewPresenterTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpEasyTreeListViewPresenterTest', 3 | #superclass : 'SpEasyTreeColumnViewPresenterTest', 4 | #category : 'Spec2-ListView-Tests', 5 | #package : 'Spec2-ListView-Tests' 6 | } 7 | 8 | { #category : 'accessing' } 9 | SpEasyTreeListViewPresenterTest >> classToTest [ 10 | 11 | ^ SpEasyTreeListViewPresenter 12 | ] 13 | 14 | { #category : 'initialization' } 15 | SpEasyTreeListViewPresenterTest >> initializeTestedInstance [ 16 | 17 | presenter display: [ :aClass | aClass asString ] 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Contributor/ScSpecWizardPresenter.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'ScSpecWizardPresenter', 3 | #superclass : 'ScWizardPresenter', 4 | #category : 'Spec2-Contributor', 5 | #package : 'Spec2-Contributor' 6 | } 7 | 8 | { #category : 'accessing' } 9 | ScSpecWizardPresenter class >> title [ 10 | 11 | ^ 'Spec Contributor' 12 | ] 13 | 14 | { #category : 'private factory' } 15 | ScSpecWizardPresenter >> newPages [ 16 | 17 | ^ { 18 | ScSpec01IntroductionPagePresenter new. 19 | ScSpec02LocateProjectPresenter new. 20 | ScSpec03ChooseRemotesPresenter new 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/ManifestSpec2Deprecated.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I contains deprecated classes/methods of Spec that will be removed in Pharo 9. 3 | " 4 | Class { 5 | #name : 'ManifestSpec2Deprecated', 6 | #superclass : 'PackageManifest', 7 | #category : 'Spec2-Deprecated-Manifest', 8 | #package : 'Spec2-Deprecated', 9 | #tag : 'Manifest' 10 | } 11 | 12 | { #category : '*Spec2-Deprecated' } 13 | ManifestSpec2Deprecated class >> isDeprecated [ 14 | ^ true 15 | ] 16 | 17 | { #category : '*Spec2-Deprecated' } 18 | ManifestSpec2Deprecated class >> isDeprecated [ 19 | ^ true 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Microdown/SpAbstractSelectionMode.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpAbstractSelectionMode' } 2 | 3 | { #category : '*Spec2-Microdown' } 4 | SpAbstractSelectionMode class >> buildMicroDownUsing: aBuilder withComment: aString [ 5 | 6 | super buildMicroDownUsing: aBuilder withComment: aString. 7 | "Sections" 8 | self documentSections keysAndValuesDo: [ :label :methods | 9 | SpAbstractWidgetPresenter 10 | addDocumentSection: aBuilder 11 | label: label 12 | methods: methods ]. 13 | "Hierarchy" 14 | self addDocumentSectionHierarchy: aBuilder. 15 | 16 | ] 17 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpMenuGroupPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpMenuGroupPresenter' } 2 | 3 | { #category : '*Spec2-Examples' } 4 | SpMenuGroupPresenter class >> exampleMenuGroup [ 5 | | menu | 6 | 7 | menu := SpMenuPresenter new 8 | addGroup: [ :aGroup | 9 | aGroup addItem: [ :anItem | 10 | anItem name: 'Item Group 1'; action: [ "action here" ] ] ]; 11 | addGroup: [ :aGroup | 12 | aGroup addItem: [ :anItem | 13 | anItem name: 'Item Group 2'; action: [ "action here" ] ] ]. 14 | 15 | SpMenuButtonPresenter new 16 | menu: menu; 17 | open 18 | ] 19 | -------------------------------------------------------------------------------- /src/Spec2-Backend-Tests/SpBeforeTestInitializationStrategy.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I open the spec instances before the stimuli has run on it. 3 | Then, all stimuli is run on an open presenter that should been correctly configured. 4 | " 5 | Class { 6 | #name : 'SpBeforeTestInitializationStrategy', 7 | #superclass : 'SpInitializationStrategy', 8 | #category : 'Spec2-Backend-Tests-Base', 9 | #package : 'Spec2-Backend-Tests', 10 | #tag : 'Base' 11 | } 12 | 13 | { #category : 'running' } 14 | SpBeforeTestInitializationStrategy >> beforeTest: aSpecTest [ 15 | 16 | aSpecTest openInstance 17 | ] 18 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff/DiffMatch.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'DiffMatch', 3 | #superclass : 'DiffPatchElement', 4 | #category : 'Spec2-Code-Diff', 5 | #package : 'Spec2-Code-Diff' 6 | } 7 | 8 | { #category : 'instance creation' } 9 | DiffMatch class >> newOldPosition: index element: element [ 10 | 11 | ^ (self newOldPosition: index) 12 | element: element; 13 | yourself 14 | ] 15 | 16 | { #category : 'visiting' } 17 | DiffMatch >> accept: aVisitor [ 18 | 19 | aVisitor visitMatch: self 20 | ] 21 | 22 | { #category : 'testing' } 23 | DiffMatch >> isMatch [ 24 | 25 | ^ true 26 | ] 27 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff/SequenceableCollection.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SequenceableCollection' } 2 | 3 | { #category : '*Spec2-Code-Diff' } 4 | SequenceableCollection >> zAt: index [ 5 | 6 | ^ self at: index + 1 7 | ] 8 | 9 | { #category : '*Spec2-Code-Diff' } 10 | SequenceableCollection >> zAt: index put: anObject [ 11 | 12 | ^ self at: index + 1 put: anObject 13 | ] 14 | 15 | { #category : '*Spec2-Code-Diff' } 16 | SequenceableCollection >> zCopyFrom: start to: stop [ 17 | 18 | start >= stop ifTrue: [ ^ self species new: 0 ]. 19 | ^ self copyFrom: start + 1 to: stop 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Deprecated/SpMorphicIconListAdapter.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am the adapter used to bridge an IconListPresenter and a PluggableIconListMorph 3 | " 4 | Class { 5 | #name : 'SpMorphicIconListAdapter', 6 | #superclass : 'SpMorphicListAdapter', 7 | #category : 'Spec2-Deprecated-Adapters', 8 | #package : 'Spec2-Deprecated', 9 | #tag : 'Adapters' 10 | } 11 | 12 | { #category : '*Spec2-Deprecated' } 13 | SpMorphicIconListAdapter class >> isDeprecated [ 14 | ^ true 15 | ] 16 | 17 | { #category : '*Spec2-Deprecated' } 18 | SpMorphicIconListAdapter class >> isDeprecated [ 19 | ^ true 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Examples/SpPopoverContentExample.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I am an example of a popover content. 3 | I will show a simple text. 4 | " 5 | Class { 6 | #name : 'SpPopoverContentExample', 7 | #superclass : 'SpPopoverContentPresenter', 8 | #category : 'Spec2-Examples-Standalone', 9 | #package : 'Spec2-Examples', 10 | #tag : 'Standalone' 11 | } 12 | 13 | { #category : 'initialization' } 14 | SpPopoverContentExample >> initializePresenters [ 15 | 16 | self layout: (SpBoxLayout newTopToBottom 17 | borderWidth: 10; 18 | add: (self newLabel label: 'A cool popup!'); 19 | yourself) 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Layout/SpChildrenAdded.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpChildrenAdded', 3 | #superclass : 'Announcement', 4 | #instVars : [ 5 | 'parent', 6 | 'child' 7 | ], 8 | #category : 'Spec2-Layout-Base', 9 | #package : 'Spec2-Layout', 10 | #tag : 'Base' 11 | } 12 | 13 | { #category : 'accessing' } 14 | SpChildrenAdded >> child [ 15 | ^ child 16 | ] 17 | 18 | { #category : 'accessing' } 19 | SpChildrenAdded >> child: aPresenter [ 20 | child := aPresenter 21 | ] 22 | 23 | { #category : 'accessing' } 24 | SpChildrenAdded >> parent: aPresenter [ 25 | parent := aPresenter 26 | ] 27 | -------------------------------------------------------------------------------- /src/Spec2-Pillar/SpRichTextStyler.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpRichTextStyler', 3 | #superclass : 'SpTextStyler', 4 | #category : 'Spec2-Pillar', 5 | #package : 'Spec2-Pillar' 6 | } 7 | 8 | { #category : 'parsing' } 9 | SpRichTextStyler >> parseFormatString: formatString [ 10 | self subclassResponsibility 11 | ] 12 | 13 | { #category : 'writing' } 14 | SpRichTextStyler >> writeFormatString: aDocument [ 15 | self subclassResponsibility 16 | ] 17 | 18 | { #category : 'writing' } 19 | SpRichTextStyler >> writePlaintextString: aDocument [ 20 | self subclassResponsibility 21 | ] 22 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpGridLayoutTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpGridLayoutTest', 3 | #superclass : 'TestCase', 4 | #category : 'Spec2-Tests-Layout', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Layout' 7 | } 8 | 9 | { #category : 'tests' } 10 | SpGridLayoutTest >> testInitialStatus [ 11 | | layout | 12 | 13 | layout := SpGridLayout new. 14 | 15 | self assert: layout isColumnHomogeneous. 16 | self deny: layout isRowHomogeneous. 17 | self assert: layout columnSpacing equals: 10. 18 | self assert: layout rowSpacing equals: 5. 19 | self assert: layout borderWidth equals: 20 20 | ] 21 | -------------------------------------------------------------------------------- /src/Spec2-Code-Diff/DiffVisitor.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'DiffVisitor', 3 | #superclass : 'Object', 4 | #category : 'Spec2-Code-Diff', 5 | #package : 'Spec2-Code-Diff' 6 | } 7 | 8 | { #category : 'visiting' } 9 | DiffVisitor >> visitDelete: anElement [ 10 | ] 11 | 12 | { #category : 'visiting' } 13 | DiffVisitor >> visitInsert: anElement [ 14 | ] 15 | 16 | { #category : 'visiting' } 17 | DiffVisitor >> visitMatch: anElement [ 18 | ] 19 | 20 | { #category : 'visiting' } 21 | DiffVisitor >> visitPatch: aPatch [ 22 | 23 | aPatch elements 24 | do: [ :each | each accept: self ] 25 | ] 26 | -------------------------------------------------------------------------------- /src/Spec2-Commander2/SpActionBarPresenter.extension.st: -------------------------------------------------------------------------------- 1 | Extension { #name : 'SpActionBarPresenter' } 2 | 3 | { #category : '*Spec2-Commander2' } 4 | SpActionBarPresenter >> addItemLeft: anItem [ 5 | 6 | self add: anItem 7 | ] 8 | 9 | { #category : '*Spec2-Commander2' } 10 | SpActionBarPresenter >> addItemRight: anItem [ 11 | 12 | self addLast: anItem 13 | ] 14 | 15 | { #category : '*Spec2-Commander2' } 16 | SpActionBarPresenter >> fillWith: aCommandGroup [ 17 | 18 | items removeAll. 19 | SpActionBarPresenterBuilder new 20 | actionBarPresenter: self; 21 | visit: aCommandGroup 22 | ] 23 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpBindings.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I'm a dynamic variable for presenters on which a bindings (Morphic or other) should be used as default. 3 | 4 | Example: 5 | 6 | ``` 7 | SpecBindings value: #MorphicAdapterBindings during: [ myPresenter openWithSpec ]. 8 | ``` 9 | " 10 | Class { 11 | #name : 'SpBindings', 12 | #superclass : 'DynamicVariable', 13 | #category : 'Spec2-Core-Support', 14 | #package : 'Spec2-Core', 15 | #tag : 'Support' 16 | } 17 | 18 | { #category : 'accessing' } 19 | SpBindings >> default [ 20 | ^ (self class environment at: #SpMorphicAdapterBindings) new 21 | ] 22 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpMockBackend.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpMockBackend', 3 | #superclass : 'SpApplicationBackend', 4 | #category : 'Spec2-Tests-Core-Base', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Core-Base' 7 | } 8 | 9 | { #category : 'accessing' } 10 | SpMockBackend class >> backendName [ 11 | 12 | ^ #Mock 13 | ] 14 | 15 | { #category : 'private' } 16 | SpMockBackend >> adapterBindingsClass [ 17 | 18 | ^ SpStubAdapterBindings 19 | ] 20 | 21 | { #category : 'accessing' } 22 | SpMockBackend >> defaultConfigurationFor: anApplication [ 23 | 24 | ^ SpMockConfiguration new 25 | ] 26 | -------------------------------------------------------------------------------- /src/Spec2-Tests/SpNotificationTest.class.st: -------------------------------------------------------------------------------- 1 | Class { 2 | #name : 'SpNotificationTest', 3 | #superclass : 'TestCase', 4 | #category : 'Spec2-Tests-Notifications', 5 | #package : 'Spec2-Tests', 6 | #tag : 'Notifications' 7 | } 8 | 9 | { #category : 'tests' } 10 | SpNotificationTest >> testNotificationIsKeptAround [ 11 | 12 | | pres app | 13 | app := SpApplication new. 14 | pres := SpPresenter newApplication: app. 15 | pres notify: 'You should see this notification'. 16 | self 17 | assert: app notificationCenter items first text 18 | equals: 'You should see this notification' 19 | ] 20 | -------------------------------------------------------------------------------- /src/Spec2-Core/SpNullApplication.class.st: -------------------------------------------------------------------------------- 1 | " 2 | I'm a default application for the case where no application is defined. 3 | I'm meant to provide backwards compatibility and I SHOULD NOT BE USED REGULARLY. 4 | " 5 | Class { 6 | #name : 'SpNullApplication', 7 | #superclass : 'SpApplication', 8 | #category : 'Spec2-Core-Base', 9 | #package : 'Spec2-Core', 10 | #tag : 'Base' 11 | } 12 | 13 | { #category : 'class initialization' } 14 | SpNullApplication class >> reset [ 15 |