<div dir="ltr">Good point! That's one advantage of the specialized-GUI-builder strategy for making and sourcifying morphs, it gets to record all the interactions. I'm not sure how <a href="https://www.hpi.uni-potsdam.de/hirschfeld/trac/SqueakCommunityProjects/wiki/designer">Morphic Designer</a> works under the hood but they have that option. Currently I'm imaging the tool can be pointed at any existing morph on the screen (of a type it supports), so it needs to work by inspection not recording. </div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Nov 24, 2024 at 11:44 AM Ezequiel Birman via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Another strategy to address Ian's problem could be to record all the interactions. Emacs macros work like this.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 24 Nov 2024 at 16:16, Ezequiel Birman <<a href="mailto:ebirman77@gmail.com" target="_blank">ebirman77@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hm, do you have any examples? I don’t think you can build anything very 
useful by manipulation with the mouse without writing code… you can add 
submorphs to a morph, change colors and sizes, … not much more, I think…
 nothing like a browser or an inspector. Maybe you should checkout 
Fabrik, eToys, and other similar ideas.</blockquote><div><br></div><div><div>As Luciano said, there's not much you can do by direct manipulation, yet. One of the suggested ideas for <a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/wiki/Helping-Cuis" target="_blank">helping Cuis</a>, by Juan and Hilaire is</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Take the SVG package and turn it into and end user Vector Graphics designer application. Like a baby Inkscape</blockquote><br></div><div>We currently lack the means to convert an arbitrary graphic entity, for example a letter, into a LetterMorph composed of VectorMorphs, and/or StrokeDrawnMorphs, back and forth; and that also opens the door to think about morph decomposition into simpler morphs all the way down to PixelMorphs, if necessary, and translations into other representations of the same entity, for example into something that Dr. Geo and/or Arrows can handle. Unlike with languages, these translations are easier coming from one direction, and harder from the other; maybe a hint that we'd always keep a good model when we need it, and derive from it, rather than the other way around.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 24 Nov 2024 at 09:55, Luciano Notarfrancesco via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Hm, do you have any examples? I don’t think you can build anything very useful by manipulation with the mouse without writing code… you can add submorphs to a morph, change colors and sizes, … not much more, I think… nothing like a browser or an inspector. Maybe you should checkout Fabrik, eToys, and other similar ideas.</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 21, 2024 at 22:27 Ian Jeffries via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi folks,<div><br></div><div>I'm experimenting with turning morphs created via direct manipulation back into source code and am looking for some tips.</div><div><br></div><div>As an example use case: I'm making a world map and would like to put my house in it. The image will be pretty simple: just three or four rectangles for the house, a rectangle for the garage, and a few circles to represent trees. Certainly I could just write this in code, but it seems like more fun to use the direct manipulation features of Morphic to create the scene (duplicate, rotate, etc), then serialize that scene to code.</div><div><br></div><div>Here's the twist: I'm already familiar with <a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-UI/blob/a56d748ac25fadf3f1910f0666b7ea77bb3df286/tools/UI-Packager.pck.st" target="_blank">Cuis-UI-Packager</a> which is very cool, but my goal here is different. I'd like the result to be source code, not object files, ideally similar to what I would have written by hand.</div><div><br></div><div>First question: is there a term in the Smalltalk community or the academic literature for this task? Specifically for turning runtime objects back into idiomatic source code. (I realize this problem probably can't be solved in the general case since it's such a hard one-- one of the reasons I'd like to read more about it).</div><div><br></div><div>Second question: there isn't already a package for this in Cuis (or even in Pharo etc)? I wouldn't think so and can't find one by searching, but wanted to check.</div><div><br></div><div>I did find <a href="https://www.hpi.uni-potsdam.de/hirschfeld/trac/SqueakCommunityProjects/wiki/designer" target="_blank">Morphic Designer</a> in Squeak, but that's a little different since you build the morphs in a specialized app. I'm looking for something that you can target any supported runtime morph with (though I don't care how small the set of supported morphs is, any example would be helpful even if it only supported one or two).</div><div><br></div><div>I've got a little demo working for myself which has also given me some implementation questions, but I'll save those for a later thread.</div><div><br></div><div>Thanks,</div><div>Ian Jeffries</div></div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div></div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div>
</blockquote></div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div>