opensmock / pyramid Goto Github PK
View Code? Open in Web Editor NEWPyramid is a Graphical User-Interface (GUI) builder and editor for Bloc and Toplo.
License: MIT License
Pyramid is a Graphical User-Interface (GUI) builder and editor for Bloc and Toplo.
License: MIT License
I loaded in a new Pharo 11 with:
Metacello new
baseline: 'Pyramid';
repository: 'github://OpenSmock/Pyramid:main/src';
load
and the world menu on top didn't have the Pyramic entry, but it appeared when I loaded the IDE package via Iceberg.
I guess the baseline needs to include it?
BTW: Awesome project!
I just realized that when I changed the background to orange, the identifier didn't change automatically which makes totally sense, as not every color as a name, etc. But I didn't realize of that at first... so maybe (my suggestion) it's preferable create identifiers that user doesn't associate with the background color.
Consider this example of Generator
that always answers a new string:
alphabetGenerator := Generator on: [ :generator |
| index |
index := 1.
[ Character alphabet do: [ :each |
| next suffix |
next := each asUppercase asString.
suffix := index = 1
ifTrue: [ '' ]
ifFalse: [ index asString ].
generator yield: next, suffix ].
index := index + 1 ] repeat ].
The generators can be used like a read stream, via next
or with next:
to get a collection, like this:
alphabetGenerator next: 50. "an OrderedCollection('A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O'
'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' 'A2' 'B2' 'C2' 'D2'
'E2' 'F2' 'G2' 'H2' 'I2' 'J2' 'K2' 'L2' 'M2' 'N2' 'O2' 'P2'
'Q2' 'R2' 'S2' 'T2' 'U2' 'V2' 'W2' 'X2')"
reproduce:
select multiple element.
Change their background.
The color doesn't change.
In reference of #83, write a dedicated Pyramid settings section in Pharo settings browser.
Provide an access from :
When the design is save -> tittle
When a modification is made -> tittle*
When th modification is save -> tittle
1 - Create a BlTextElement
2 - Setup the foreground from Properties panel
3 - The color is not applied
To resolve you need to de-select and re-select the BlTextElement.
The BlSapce is deleted when window is minimize.
When Spec is minimize, it ask its Morph to delete them self. (SystemWindow minimizeOrRestore
)
When Morph is deleted it send a signal that it's deleted. (Morph announceDeleted
)
In BlMorphicSpaceHostMorph initializeAnnouncement
it catch MorphDeleted and send BlMorphicWindowClosedEvent
.
BlMorphicEventHandler handleWindowwClosed:
send BlSpaceCloseRequest
and destroy the morph.
Then BlSpaceEventListener cath BlSpaceCloseRequest and execute spaceCloseRequest:
wich kill the space.
The plugin guide is in french, but should be in english
https://github.com/OpenSmock/Pyramid/wiki/Ajouter-un-nouveau-plugin-a-Pyramid
I saved my project and browsed the method <pySTON>
pragma. It makes me wonder what is its utility.
When I'm adding a child into a BlElement manually (using the Playground) the Tree is not updating.
My child is on his parent but not in the tree.
More reasons to do that :
Do you plan to support them?
Also some tooltip and with "." and other without.
New rule:
All tooltip should end with "."
Add a section about rules and convention on Pyramid in the Wiki.
Missing tooltips:
CI timeout before it end testing on Pharo 12. The timeout is define in .github/workflows/Pharo11CI.yml
at the #timeout-minutes: 10
I suggest we put it at 15 min. It seem that Pharo12 CI takes between 7 to 10 min to complete.
Matecello try to download the package with SSH protocole, but doesn't have a SSH key, so it fails but then it try HTTPS.
MetacelloNotification: Loading baseline of BaselineOfPyramid...
aborting
I got an error while cloning: There was an authentication error while trying to execute the operation: .
This happens usually because you didn't provide a valid set of credentials.
You may fix this problem in different ways:
1. adding your keys to ssh-agent, executing ssh-add ~/.ssh/id_rsa in your command line.
2. adding your keys in settings (open settings browser search for "Use custom SSH keys" and
add your public and private keys).
3. using HTTPS instead SSH (Just use an url in the form [HTTPS://etc.git).](https://etc.git%29./) I will try to clone the HTTPS variant.
I think it's better if it did not fail every time it try to load something.
And parent is not in 0 @ 0
Pyramid >
> New design
(> Examples)
--
> Refresh plugins
> Browse sources
> Github
> Report a bug
Do you plan to add "Export as Pharo code"? I mean a snippet like script "space := BlSpace new. space addChild: (...)".
That's the first thing when I used this great tool. "Wow, it could help me to write examples e.g. to share on an email or Discord".
Can display and edit root BlSpace root element properties, not by default but should be an option to display it.
Create two elements and group them.
The group contents have child but not in the same order that the selection.
When changing the font size in the Properties panel, the text not change.
Setup the default title of a Pyramid Window as :
Using Tab key to chain input field and win time.
The idea is to test the current edited project.
It should be a button to switch between edition mode and test mode.
We can cover two cases:
When using the playground, the "self" value depend of the current selection.
"self" value should be more explicit on the UI.
The baseline order is incorrect, try to load Bloc and Bloc-Serialization and Pyramid.
There are some problems related to Bloc evolution (id management modification), I'm going to fix them.
PyramidElementIdSortFunctionTest
✗ #testSorting (5ms)
PyramidContextMenuPluginTest
✗ #testMenuContextOn (22ms)
PyramidElementIdCommandTest
✗ #testHistory (28ms)
Error when trying to save a BlElement with a circle.
1 - Open a new project in Pyramid
2 - Setup Project configuration (package, class and method - class side)
3 - Create an object from Add new element
button and Square with randomized color
4 - Select the BlElement and set a Ellipse geometry with the button on the right section Properties
5 - Click on save button and see the error :
My config :
1- Create a new projet
2- Configure save in a "Test-Core" where Test is a package and Core is a tag
3- Save your project
4- Add a rectangle into the project
5- Save the project : error cannot save. If I remove the -Core is can save
Add a browse button to quicly have access to the saving class / method
Remove BlElement>>openInNewSpaceWithPyramidShortcut and propose a BlSpace extensions to activate or not the shortcut.
For example:
space := element openInNewSpace.
space canEditWithPyramid: true.
"> Type the F12 Key"
EDIT : Just remove BlElement>>openInNewSpaceWithPyramidShortcut
and create a Settings section (see reflexion below)
Create a group in a group and add a text and an element.
The actions Put/Send are not clear and there is a confusions between them for a beginner.
I propose these items with icon orientation (same as actual) but with different actions as tooltip for menu button :
This is imporant to have same color for all these icons.
@Nyan11 do you confirm that these actions doesn't modify the elevation property ?
If traits = interfaces then:
PyramidInput and PyramidCommand should be traits
Creating a new text element, then right-clicking it creates the following error: "#, was sent to nil". Clicking on the left part of the interface now causes this error until a click is made on another part of the interface.
Creating a new Pyramid project, then closing the Pharo image while saving it and then relaunching the aforementioned image creates an error titled "Instance of BlMorphicEventHandler did not understand #handleTextEditionEvent:"
keep it simple
The project string :
[
BlElement {
#children : BlChildrenArray [
BlElement {
#children : BlChildrenArray [ ],
#constraints : BlLayoutCommonConstraints {
#vertical : BlLayoutCommonConstraintsAxis {
#resizer : BlLayoutMatchParentResizer { }
},
#horizontal : BlLayoutCommonConstraintsAxis {
#resizer : @8
},
#position : Point [ 0.0, 0.0 ],
#margin : BlInsets {
#top : 0.0,
#left : 0.0,
#bottom : 0.0,
#right : 0.0
},
#padding : @11,
#minHeight : 0.0,
#minWidth : 0.0,
#maxHeight : Float [ #infinity ],
#maxWidth : @12,
#ignoredByLayout : false,
#accountTransformation : false
},
#visuals : BlCustomVisuals {
#background : BlPaintBackground {
#paint : BlColorPaint {
#color : Color {
#red : 0.10752688172043011,
#green : 0.4359726295210166,
#blue : 0.22678396871945258,
#alpha : 1.0
}
}
}
},
#userData : IdentityDictionary {
#elementId : BlElementNamedId {
#identifier : #Texture
}
},
#layout : BlBasicLayout { },
#eventDispatcher : BlElementEventDispatcher {
#owner : @4,
#handlers : [
,
,
,
,
,
]
}
},
BlTextElement {
#children : BlChildrenArray [ ],
#constraints : BlLayoutCommonConstraints {
#vertical : BlLayoutCommonConstraintsAxis {
#resizer : BlLayoutFitContentResizer { }
},
#horizontal : BlLayoutCommonConstraintsAxis {
#resizer : @26
},
#position : Point [ 20.0, 20.0 ],
#margin : @11,
#padding : @11,
#minHeight : 0.0,
#minWidth : 0.0,
#maxHeight : @12,
#maxWidth : @12,
#ignoredByLayout : false,
#accountTransformation : false
},
#visuals : BlDefaultVisuals { },
#userData : IdentityDictionary {
#elementId : BlElementNamedId {
#identifier : #Text
}
},
#layout : BlBasicLayout { },
#text : BlRopedText {
#rope : BlAttributeRope {
#attributes : [
BlFontSizeAttribute {
#isOverwritableByStyler : true,
#size : 15
},
BlTextForegroundAttribute {
#isOverwritableByStyler : true,
#paint : Color [ #white ]
}
],
#rope : BlCollectionRope {
#collection : 'This is a demo'
}
}
}
}
],
#constraints : BlLayoutCommonConstraints {
#vertical : BlLayoutCommonConstraintsAxis {
#resizer : @8
},
#horizontal : BlLayoutCommonConstraintsAxis {
#resizer : @8
},
#position : Point [ 0.0, 0.0 ],
#margin : @11,
#padding : @11,
#minHeight : 0.0,
#minWidth : 0.0,
#maxHeight : @12,
#maxWidth : @12,
#ignoredByLayout : false,
#accountTransformation : false
},
#visuals : BlCustomVisuals {
#clipChildren : false
},
#userData : IdentityDictionary {
#elementId : BlElementNamedId {
#identifier : #group
}
},
#layout : @19,
#eventDispatcher : BlElementEventDispatcher {
#owner : @2,
#handlers : [
]
}
}
]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.