Hi List!
I want to program a gopher client in squeak and I am a bit stuck on how to do the rendering. I got the hint that I could use a TextMorph since there links are a text attribute.
However I am a bit clueless on how this is supposed to fit together.
What I did atm was that for gopher menus I have an OrderedCollection of MenuItems. Those in turn have implemented their #asText methods. For links I am returning TextURL objects there.
This is all collected in a GopherPage's #asText method where said orderedCollection is #join'ed together.
As it turns out though, the TextMorph will render my URL as if the #printOn: message has been sent to it. TextURLs will show up in the TextMorph as 'a TextURL'. My guess is that the #join is responsible for this.
How am I supposed to add URLs into Text?
Kind regards,
Christian
On Fri, 14 Sep 2018 at 22:56, Christian Kellermann ckeen@pestilenz.org wrote:
Hi List!
I want to program a gopher client in squeak and I am a bit stuck on how to do the rendering. I got the hint that I could use a TextMorph since there links are a text attribute.
However I am a bit clueless on how this is supposed to fit together.
What I did atm was that for gopher menus I have an OrderedCollection of MenuItems. Those in turn have implemented their #asText methods. For links I am returning TextURL objects there.
This is all collected in a GopherPage's #asText method where said orderedCollection is #join'ed together.
As it turns out though, the TextMorph will render my URL as if the #printOn: message has been sent to it. TextURLs will show up in the TextMorph as 'a TextURL'. My guess is that the #join is responsible for this.
How am I supposed to add URLs into Text?
Here is something I recently did in Pharo. I expect these parts of the systems are very similar.
url := 'https://google.com'. linkText := url asText addAttribute: (TextAction new actOnClickBlock: [ExternalWebBrowser new open: url]); addAttribute: TextColor blue; addAttribute: TextEmphasis underlined. tm := TextMorph new. tm contents: linkText. tm openInWindow
You'll need to find an appropriate "ExternalWebBrowser" library for your Squeak version.
cheers -ben
* Ben Coman btc@openinworld.com [180915 02:46]:
Here is something I recently did in Pharo. I expect these parts of the systems are very similar.
Ah thanks that's been the nudge in the right direction! I am using a PluggableTextAttribute now which also allows specifying a block...
I am hitting another bunp in that it seems just adding a TextMorph to a SystemWindow -> ScrollPane -> PasteUpMorph. (-> meaning 'containing a') does not make it scrollable...
Should I compose the content of individual TextMorphs? Or am I missing something obvious?
Kind regards,
Christian
* Christian Kellermann ckeen@pestilenz.org [180915 16:59]:
- Ben Coman btc@openinworld.com [180915 02:46]:
Here is something I recently did in Pharo. I expect these parts of the systems are very similar.
Ah thanks that's been the nudge in the right direction! I am using a PluggableTextAttribute now which also allows specifying a block...
I am hitting another bunp in that it seems just adding a TextMorph to a SystemWindow -> ScrollPane -> PasteUpMorph. (-> meaning 'containing a') does not make it scrollable...
Should I compose the content of individual TextMorphs? Or am I missing something obvious?
Ah nvm, I had something like this:
scrollPane := ScrollPane new scroller addMorph: pasteUpMorph. which is sending the message to the wrong receiver it seems :)
beginners@lists.squeakfoundation.org