From 17c15b53801152b4900c48904ba73f42b7baa5c5 Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Wed, 28 Jun 2023 14:57:40 +0200 Subject: [PATCH 1/4] Remove inspector on start --- src/Pyramid-Bloc/PyramidSpacePresenter.class.st | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Pyramid-Bloc/PyramidSpacePresenter.class.st b/src/Pyramid-Bloc/PyramidSpacePresenter.class.st index 48cf75d8..62b683d8 100644 --- a/src/Pyramid-Bloc/PyramidSpacePresenter.class.st +++ b/src/Pyramid-Bloc/PyramidSpacePresenter.class.st @@ -18,8 +18,7 @@ PyramidSpacePresenter >> defaultLayout [ PyramidSpacePresenter >> initializePresenters [ overlaysManager := PyramidOverlaysManagerFactory editManager. - presenter := self makeSpacePresenter. - presenter inspect. + presenter := self makeSpacePresenter ] { #category : #initialization } From 9a659e7ea4c9d7004d40847c3646e40b956ea50a Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Wed, 28 Jun 2023 15:10:51 +0200 Subject: [PATCH 2/4] Open editor in a maximized window --- src/Pyramid/PyramidEditor.class.st | 8 +------- src/Pyramid/PyramidWindow.class.st | 29 +++++++++++++++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/Pyramid/PyramidEditor.class.st b/src/Pyramid/PyramidEditor.class.st index 4e7f1fa1..4c2f1a28 100644 --- a/src/Pyramid/PyramidEditor.class.st +++ b/src/Pyramid/PyramidEditor.class.st @@ -23,7 +23,7 @@ PyramidEditor >> commandPipeline [ ^ commandPipeline ] -{ #category : #'as yet unclassified' } +{ #category : #initialization } PyramidEditor >> initialize [ activeProject := PyramidProjectModel new. @@ -53,12 +53,6 @@ PyramidEditor >> properties [ ^ properties ] -{ #category : #'as yet unclassified' } -PyramidEditor >> test [ - - ^ self iconNamed: #pharoBig -] - { #category : #accessing } PyramidEditor >> view [ diff --git a/src/Pyramid/PyramidWindow.class.st b/src/Pyramid/PyramidWindow.class.st index 8c8eeffa..fc963669 100644 --- a/src/Pyramid/PyramidWindow.class.st +++ b/src/Pyramid/PyramidWindow.class.st @@ -22,24 +22,37 @@ PyramidWindow >> initialize [ PyramidPanelModel toolbarHorizontal installOn: self at: #topRight. PyramidPanelModel presenter installOn: self at: #space. - PyramidPanelModel toolbarVertical - installOn: self - at: #spaceToolbarTop. - PyramidPanelModel toolbarVertical - installOn: self - at: #spaceToolbarBottom. + + PyramidPanelModel toolbarVertical installOn: self at: #spaceToolbarTop. + PyramidPanelModel toolbarVertical installOn: self at: #spaceToolbarBottom. PyramidPanelModel tab installOn: self at: #tabLeft. PyramidPanelModel tab installOn: self at: #tabRight ] +{ #category : #initialization } +PyramidWindow >> initializePresenter [ + "a Spec presenter using the services as an entry" + + presenter := SpPresenter new layout: self layout; yourself. + ^ presenter +] + { #category : #accessing } PyramidWindow >> layout [ ^ self shouldBeImplemented ] -{ #category : #'as yet unclassified' } +{ #category : #'api - showing' } +PyramidWindow >> open [ + + | spec | + spec := self presenter asWindow open. + spec maximize +] + +{ #category : #private } PyramidWindow >> panelUpdated [ self presenter layout: self layout @@ -49,7 +62,7 @@ PyramidWindow >> panelUpdated [ PyramidWindow >> presenter [ "a Spec presenter using the services as an entry" - presenter ifNil: [ presenter := SpPresenter new layout: self layout; yourself ]. + presenter ifNil: [ presenter := self initializePresenter ]. ^ presenter ] From c9a793921aaffc60bd0d811f608cf0b8a8b42697 Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Wed, 28 Jun 2023 15:42:51 +0200 Subject: [PATCH 3/4] Add pyramid entry menu --- src/Pyramid-IDE/PyramidWorld.class.st | 107 ++++++++++++++++++++++++++ src/Pyramid-IDE/package.st | 1 + 2 files changed, 108 insertions(+) create mode 100644 src/Pyramid-IDE/PyramidWorld.class.st create mode 100644 src/Pyramid-IDE/package.st diff --git a/src/Pyramid-IDE/PyramidWorld.class.st b/src/Pyramid-IDE/PyramidWorld.class.st new file mode 100644 index 00000000..b08b1ef5 --- /dev/null +++ b/src/Pyramid-IDE/PyramidWorld.class.st @@ -0,0 +1,107 @@ +Class { + #name : #PyramidWorld, + #superclass : #Object, + #category : #'Pyramid-IDE-Menus' +} + +{ #category : #menu } +PyramidWorld class >> menuBrowseSourcesOn: aBuilder [ + + + (aBuilder item: #New) + parent: #PyramidDev; + order: 2.0; + action: [ self startBrowseSources ]; + icon: (self iconNamed: #nautilus); + help: 'Open Pyramid sources packages in a browser'; + label: 'Browse sources' +] + +{ #category : #menu } +PyramidWorld class >> menuGithubOn: aBuilder [ + + + (aBuilder item: #Github) + parent: #PyramidDev; + order: 3.0; + label: 'Github'; + help: 'Open Pyramid Github page'; + icon: (self iconNamed: #github); + action: [ WebBrowser openOn: 'https://github.com/OpenSmock/Pyramid' ] +] + +{ #category : #menu } +PyramidWorld class >> menuNewOn: aBuilder [ + + + (aBuilder item: #New) + parent: #PyramidUser; + order: 1.0; + action: [ self startNewDesign ]; + icon: (self iconNamed: #page); + help: 'Create a new User-Interface'; + label: 'New UI' +] + +{ #category : #'menu - root' } +PyramidWorld class >> menuPyramidOn: aBuilder [ + + + (aBuilder item: #Pyramid) + parent: #Tools; + label: 'Pyramid'; + help: 'A UI editor'; + order: 777; + + with:[ + (aBuilder group: #PyramidUser) + order: 1; + withSeparatorAfter. + (aBuilder group: #PyramidDev) + order: 2. + ] +] + +{ #category : #menu } +PyramidWorld class >> menuRefreshPluginOn: aBuilder [ + + + (aBuilder item: #New) + parent: #PyramidDev; + order: 1.0; + action: [ self startRefreshPlugins ]; + icon: (self iconNamed: #refresh); + help: 'Reload all Pyramid plugins, use this to install a new plugin'; + label: 'Refresh plugins' +] + +{ #category : #menu } +PyramidWorld class >> menuReportABugOn: aBuilder [ + + + (aBuilder item: #Github) + parent: #PyramidDev; + order: 4.0; + label: 'Report a Bug'; + icon: (self iconNamed: #smallDebug); + help: 'Will open the github page to report an issue'; + action: [ WebBrowser openOn: 'https://github.com/OpenSmock/Pyramid/issues/new' ] +] + +{ #category : #actions } +PyramidWorld class >> startBrowseSources [ + + Smalltalk tools browser open packageView filterField setText: 'Pyramid' +] + +{ #category : #actions } +PyramidWorld class >> startNewDesign [ + + PyramidPluginManager uniqueInstance makeEditor window open +] + +{ #category : #actions } +PyramidWorld class >> startRefreshPlugins [ + + PyramidPluginManager reset +] diff --git a/src/Pyramid-IDE/package.st b/src/Pyramid-IDE/package.st new file mode 100644 index 00000000..778cc07f --- /dev/null +++ b/src/Pyramid-IDE/package.st @@ -0,0 +1 @@ +Package { #name : #'Pyramid-IDE' } From e0f146f4a4146de6940c86e31ff87e93ee718ccd Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Wed, 28 Jun 2023 16:03:48 +0200 Subject: [PATCH 4/4] Extent window API with basics functions, add test with open/close a new project --- src/Pyramid-IDE/PyramidWorld.class.st | 2 +- src/Pyramid-Tests/PyramidEditorTest.class.st | 17 +++++++++++++++++ src/Pyramid/PyramidWindow.class.st | 19 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/Pyramid-Tests/PyramidEditorTest.class.st diff --git a/src/Pyramid-IDE/PyramidWorld.class.st b/src/Pyramid-IDE/PyramidWorld.class.st index b08b1ef5..ef1398f9 100644 --- a/src/Pyramid-IDE/PyramidWorld.class.st +++ b/src/Pyramid-IDE/PyramidWorld.class.st @@ -40,7 +40,7 @@ PyramidWorld class >> menuNewOn: aBuilder [ action: [ self startNewDesign ]; icon: (self iconNamed: #page); help: 'Create a new User-Interface'; - label: 'New UI' + label: 'New project' ] { #category : #'menu - root' } diff --git a/src/Pyramid-Tests/PyramidEditorTest.class.st b/src/Pyramid-Tests/PyramidEditorTest.class.st new file mode 100644 index 00000000..18ebd288 --- /dev/null +++ b/src/Pyramid-Tests/PyramidEditorTest.class.st @@ -0,0 +1,17 @@ +Class { + #name : #PyramidEditorTest, + #superclass : #TestCase, + #category : #'Pyramid-Tests-Cases' +} + +{ #category : #tests } +PyramidEditorTest >> testOpenNewEditor [ + + | editor | + editor := PyramidPluginManager uniqueInstance makeEditor. + editor window open. + self assert: editor window isOpen. + + editor window close. + self assert: editor window isClosed. +] diff --git a/src/Pyramid/PyramidWindow.class.st b/src/Pyramid/PyramidWindow.class.st index fc963669..1f9cb5da 100644 --- a/src/Pyramid/PyramidWindow.class.st +++ b/src/Pyramid/PyramidWindow.class.st @@ -14,6 +14,13 @@ PyramidWindow >> at: aSymbol addItem: aBlock [ (self services at: aSymbol) addItem: aBlock ] +{ #category : #'api - showing' } +PyramidWindow >> close [ + + self isOpen ifFalse:[ ^ self ]. + self presenter owner close +] + { #category : #initialization } PyramidWindow >> initialize [ @@ -38,6 +45,18 @@ PyramidWindow >> initializePresenter [ ^ presenter ] +{ #category : #'api - showing' } +PyramidWindow >> isClosed [ + + ^ self presenter owner ifNotNil: [ :w | w isClosed ] ifNil: [ true ] +] + +{ #category : #'api - showing' } +PyramidWindow >> isOpen [ + + ^ self isClosed not +] + { #category : #accessing } PyramidWindow >> layout [