<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Nice idea! :-)</p>
<p><br>
</p>
<p>Hmm ... in my Trunk image, the text is not added to the embedded transcript, but it gets an orange triangle. When I debug the test, it works again. Any ideas why?</p>
<p><br>
</p>
<p>And should we maybe make this preference available for individual workspaces through the window menu, analogously to the shout setting?</p>
<p><br>
</p>
<p>And one more thought: Do we still want the Transcript to be global? If Transcript was properly scoped, e.g. using an exception or a dynamic variable, we could also make transcript messages triggered from a workspace exclusive for the embedded transcript.
 What do you think? :-)</p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
<div id="x_Signature">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="x_divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div>
<div class="x__rp_T4" id="x_Item.MessagePartBody">
<div class="x__rp_U4 x_ms-font-weight-regular x_ms-font-color-neutralDark x_rpHighlightAllClass x_rpHighlightBodyClass" id="x_Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr">
<div id="x_divtagdefaultwrapper"><font face="Calibri,Helvetica,sans-serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols">
<div id="x_Signature">
<div style="margin:0px"><font style="font-family:Calibri,Arial,Helvetica,sans-serif,serif,EmojiFont">
<div><font size="3" color="black"><span style="font-size:12pt"><a href="http://www.hpi.de/" target="_blank" rel="noopener noreferrer" id="LPNoLP"><font size="2"><span id="LPlnk909538"><font color="#757B80"></font></span></font></a></span></font></div>
</font></div>
</div>
</font></div>
</div>
</div>
</div>
</div>
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von commits@source.squeak.org <commits@source.squeak.org><br>
<b>Gesendet:</b> Samstag, 1. Mai 2021 12:06:10<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org; packages@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] The Trunk: Tools-mt.1054.mcz</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Marcel Taeumel uploaded a new version of Tools to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Tools-mt.1054.mcz">http://source.squeak.org/trunk/Tools-mt.1054.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Tools-mt.1054<br>
Author: mt<br>
Time: 1 May 2021, 12:06:08.609299 pm<br>
UUID: 9da21c77-f717-ab4c-b024-42dfbe629f2e<br>
Ancestors: Tools-mt.1053<br>
<br>
Adds preference and means to embed a transcript in workspaces. Thanks to Jaromir (jar) for the idea!<br>
<br>
The preference is disabled by default.<br>
<br>
=============== Diff against Tools-mt.1053 ===============<br>
<br>
Item was changed:<br>
  StringHolder subclass: #Workspace<br>
         instanceVariableNames: 'bindings acceptDroppedMorphs acceptAction mustDeclareVariables shouldStyle environment'<br>
+        classVariableNames: 'DeclareVariablesAutomatically EmbedTranscript LookupPools ShouldStyle'<br>
-        classVariableNames: 'DeclareVariablesAutomatically LookupPools ShouldStyle'<br>
         poolDictionaries: ''<br>
         category: 'Tools-Base'!<br>
  <br>
  !Workspace commentStamp: 'fbs 6/2/2012 20:46' prior: 0!<br>
  A Workspace is a text area plus a lot of support for executable code.  It is a great place to execute top-level commands to compute something useful, and it is a great place to develop bits of a program before those bits get put into class methods.<br>
  <br>
  To open a new workspace, execute:<br>
  <br>
         Workspace open<br>
  <br>
  <br>
  A workspace can have its own variables, called "workspace variables", to hold intermediate results.  For example, if you type into a workspace "x := 5" and do-it, then later you could type in "y := x * 2" and y would become 10.<br>
  <br>
  Additionally, in Morphic, a workspace can gain access to morphs that are on the screen.  If acceptDroppedMorphs is turned on, then whenever a morph is dropped on the workspace, a variable will be created which references that morph.  This functionality is
 toggled with the window-wide menu of a workspace.<br>
  <br>
  <br>
  The instance variables of this class are:<br>
  <br>
         bindings  -  holds the workspace variables for this workspace<br>
  <br>
         acceptDroppedMorphs - whether dropped morphs should create new variables!<br>
<br>
Item was added:<br>
+ ----- Method: Workspace class>>embedTranscript (in category 'preferences') -----<br>
+ embedTranscript<br>
+        <preference: 'Embed a Transcript in Workspace' <br>
+                category: 'browsing' <br>
+                description: 'If true, new workspaces will open with an embedded Transcript.'
<br>
+                type: #Boolean><br>
+        ^ EmbedTranscript ifNil: [ false ]!<br>
<br>
Item was added:<br>
+ ----- Method: Workspace class>>embedTranscript: (in category 'preferences') -----<br>
+ embedTranscript: aBoolean<br>
+ <br>
+        EmbedTranscript := aBoolean.!<br>
<br>
Item was added:<br>
+ ----- Method: Workspace>>buildTranscriptWith: (in category 'toolbuilder') -----<br>
+ buildTranscriptWith: builder<br>
+ <br>
+        | textSpec |<br>
+        textSpec := builder pluggableTextSpec new.<br>
+        textSpec <br>
+                model: Transcript;<br>
+                menu: #codePaneMenu:shifted:.<br>
+        ^ textSpec!<br>
<br>
Item was added:<br>
+ ----- Method: Workspace>>buildWith: (in category 'toolbuilder') -----<br>
+ buildWith: builder<br>
+ <br>
+        ^ self class embedTranscript<br>
+                ifTrue: [self buildWorkspaceTranscriptWith: builder]<br>
+                ifFalse: [super buildWith: builder]!<br>
<br>
Item was added:<br>
+ ----- Method: Workspace>>buildWorkspaceTranscriptWith: (in category 'toolbuilder') -----<br>
+ buildWorkspaceTranscriptWith: builder<br>
+ <br>
+        | windowSpec |<br>
+        windowSpec := self buildWindowWith: builder specs: {<br>
+                (0.0 @ 0.0 corner: 1.0 @ 0.6) -> [self buildCodePaneWith: builder].<br>
+                (0.0 @ 0.6 corner: 1.0 @ 1.0) -> [self buildTranscriptWith: builder].<br>
+        }.<br>
+        ^builder build: windowSpec!<br>
<br>
<br>
</div>
</span></font>
</body>
</html>