-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add a case study with an elaborate scripter #3777
- Loading branch information
Showing
6 changed files
with
349 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,304 @@ | ||
{ | ||
"__schema" : "4.1", | ||
"__type" : "page", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ | ||
{ | ||
"__type" : "textSnippet", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ ] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T20:12:40.188599+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T20:13:04.149933+02:00" | ||
} | ||
}, | ||
"uid" : { | ||
"__type" : "uid", | ||
"uidString" : "ReSi/dnUDQCQG9+HC/c4Og==" | ||
}, | ||
"paragraphStyle" : { | ||
"__type" : "textStyle" | ||
}, | ||
"string" : "We often show screenshots of Glamorous Toolkit in our communication. For example, consider this one:" | ||
}, | ||
{ | ||
"__type" : "exampleSnippet", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ ] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T20:13:06.368297+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T20:13:06.368297+02:00" | ||
} | ||
}, | ||
"uid" : { | ||
"__type" : "uid", | ||
"uidString" : "uQyezuPUDQCl5dBMC/c4Og==" | ||
}, | ||
"exampleSelector" : "scripterWithElaborateScenario", | ||
"previewHeight" : 500, | ||
"previewShowSelector" : "gtScreenshotFor:", | ||
"exampleBehaviorName" : "GtTour", | ||
"codeExpanded" : true, | ||
"previewExpanded" : false, | ||
"noCode" : true | ||
}, | ||
{ | ||
"__type" : "textSnippet", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ ] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:00:49.75622+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:00:50.156256+02:00" | ||
} | ||
}, | ||
"uid" : { | ||
"__type" : "uid", | ||
"uidString" : "OH7dT+XUDQCnxzmxC/c4Og==" | ||
}, | ||
"paragraphStyle" : { | ||
"__type" : "textStyle" | ||
}, | ||
"string" : "This screenshot contains an elaborate scene with three panes. In the first pane, we have a Coder on the {{gtClass:GtLudoGame}} class, in which we have expanded {{gtMethod:GtLudoGame>>moveTokenNamed:}} method and in that method we expanded a message. Then we looked for references by pressing a shortcut and this produced a second pane with a filter tool. In that filter tool we scrolled down to {{gtMethod:GtLudoRecordingGameExamples>>#gameShowingAllMoves2}}, a method that happens to be an example (which is like a test that returns an object). We expanded the method and we executed the example by clicking on the button from the contextual toolbar of the method coder. This then produced the third pane containing an inspector with the result. And a little detail: as the mouse hovered over the button there is also a tooltip associated with that button." | ||
}, | ||
{ | ||
"__type" : "textSnippet", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ ] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:04:05.319958+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:04:05.319958+02:00" | ||
} | ||
}, | ||
"uid" : { | ||
"__type" : "uid", | ||
"uidString" : "+ZGFW+XUDQCqvbBwC/c4Og==" | ||
}, | ||
"paragraphStyle" : { | ||
"__type" : "textStyle" | ||
}, | ||
"string" : "These actions can be produced manually. But a proper graphical stack should allow us to simulate manual interactions programmatically, too. In Glamorous Toolkit we can. " | ||
}, | ||
{ | ||
"__type" : "textSnippet", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ ] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:00:58.632266+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:04:07.095802+02:00" | ||
} | ||
}, | ||
"uid" : { | ||
"__type" : "uid", | ||
"uidString" : "ufJkUOXUDQCn0koEC/c4Og==" | ||
}, | ||
"paragraphStyle" : { | ||
"__type" : "textStyle" | ||
}, | ||
"string" : "For example, the script that produces a scene like in the picture from above is found in {{gtMethod:GtTour >> #scripterWithElaborateScenario|expanded=false}}. The script makes use of {{gtClass:BlScripter}}, a scripting engine for the graphical stack. Scripter offers an an API that provides default abilities for searching for elements and for simulating actions (such as `click` or `shortcut`). The API is also extensible with higher level queries, such as `methodCoder` which gives us more concise abilities to work with a tool like Coder. For example, we can ask quite concisely a `methodCoder` to `clickOnPlayAndInspectExampleButton`." | ||
}, | ||
{ | ||
"__type" : "textSnippet", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ ] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:03:28.128798+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:03:28.373027+02:00" | ||
} | ||
}, | ||
"uid" : { | ||
"__type" : "uid", | ||
"uidString" : "SRFOWeXUDQCqEQXzC/c4Og==" | ||
}, | ||
"paragraphStyle" : { | ||
"__type" : "textStyle" | ||
}, | ||
"string" : "The above script is quite elaborate. But the good news is that you can build it iteratively. Here is how it looks like in the editor that we used to write this very article. Executing the code from the snippet simply shows an inspector on the {{gtClass:BlScripter}} instance. And this inspector shows multiple dedicated views, one of which is the preview of the resulting scene." | ||
}, | ||
{ | ||
"__type" : "exampleSnippet", | ||
"children" : { | ||
"__type" : "snippets", | ||
"items" : [ ] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:04:15.562191+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T22:04:15.562191+02:00" | ||
} | ||
}, | ||
"uid" : { | ||
"__type" : "uid", | ||
"uidString" : "wtshXOXUDQCq02TFC/c4Og==" | ||
}, | ||
"exampleSelector" : "scripterWithElaborateScenario", | ||
"previewHeight" : 500, | ||
"previewShowSelector" : "gtStepsFor:", | ||
"exampleBehaviorName" : "GtTour", | ||
"codeExpanded" : true, | ||
"previewExpanded" : false, | ||
"noCode" : true | ||
} | ||
] | ||
}, | ||
"createEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"createTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T08:30:25.4933+02:00" | ||
} | ||
}, | ||
"editEmail" : { | ||
"__type" : "email", | ||
"emailString" : "<unknown>" | ||
}, | ||
"editTime" : { | ||
"__type" : "time", | ||
"time" : { | ||
"__type" : "dateAndTime", | ||
"dateAndTimeString" : "2024-05-15T08:30:25.4933+02:00" | ||
} | ||
}, | ||
"pageType" : { | ||
"__type" : "namedPage", | ||
"title" : "Scripting an elaborate user interface scenario" | ||
}, | ||
"uid" : { | ||
"__type" : "uuid", | ||
"uuid" : "9328a2fd-d9d4-0d00-901a-2cbf0bf7383a" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.