<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<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>By the way, further possible refactorings could include:</p>
<p><br>
</p>
<p>1. Deduplicate these menu implementations via CodeHolder (pragmas are a bequest you cannot refuse, but we could helper methods or so)</p>
<p><br>
</p>
<p>2. I added this for XmasDecorations and would consider it helpful for the Trunk as well: Add something like
<a href="https://github.com/LinqLover/XmasDecorations/blob/master/packages/XmasDecorations.package/Boolean.extension/instance/onOrOffString.st" class="x_OWAAutoLink" title="https://github.com/LinqLover/XmasDecorations/blob/master/packages/XmasDecorations.package/Boolean.extension/instance/onOrOffString.st
Strg+Klicken oder tippen Sie, um dem Link zu folgen.">
#onOrOffString</a> to Boolean, via an extension category of Tools? There are really many senders writing that mapping again and again. It might also be useful if we had a less noisy way to pass a state selector to the menu constructor ...
<span>😊</span></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><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> Dienstag, 17. März 2020 19:48:03<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] The Inbox: Tools-ct.960.mcz</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Christoph Thiede uploaded a new version of Tools to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Tools-ct.960.mcz">http://source.squeak.org/inbox/Tools-ct.960.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Tools-ct.960<br>
Author: ct<br>
Time: 17 March 2020, 7:47:55.955389 pm<br>
UUID: 2080d250-68a3-104f-82ee-cb57b534fd00<br>
Ancestors: Tools-mt.955<br>
<br>
Revise message list menus and make "toggle break on entry" an actual toggle item. Improves multilingual support.<br>
<br>
=============== Diff against Tools-mt.955 ===============<br>
<br>
Item was changed:<br>
  ----- Method: Browser>>mainMessageListMenu: (in category 'message functions') -----<br>
  mainMessageListMenu: aMenu<br>
         <messageListMenuShifted: false><br>
+ <br>
+        ^ aMenu<br>
+                addTranslatedList: #(<br>
+                        ('what to show...'                      offerWhatToShowMenu));<br>
+                add: (self isBreakOnEntry ifTrue: ['<on>'] ifFalse: ['<off>']) , 'break on entry' translated<br>
+                        action: #toggleBreakOnEntry;<br>
+                addTranslatedList: #(<br>
-        ^ aMenu addList: #(<br>
-                        ('what to show...'                      offerWhatToShowMenu)<br>
-                        ('toggle break on entry'                toggleBreakOnEntry)<br>
                         -<br>
                         ('browse full (b)'                       browseMethodFull)<br>
                         ('browse hierarchy (h)'         browseClassHierarchy)<br>
                         ('browse protocol (p)'                  browseFullProtocol)<br>
                         -<br>
                         ('fileOut'                                      fileOutMessage)<br>
                         ('printOut'                                     printOutMessage)<br>
                         ('copy selector (c)'                    copySelector)<br>
                         ('copy reference (C)'           copyReference)<br>
                         -<br>
                         ('senders of... (n)'                    browseSendersOfMessages)<br>
                         ('implementors of... (m)'               browseMessages)<br>
                         ('inheritance (i)'                      methodHierarchy)<br>
                         ('versions (v)'                         browseVersions)<br>
                         -<br>
                         ('references... (r)'                    browseVariableReferences)<br>
                         ('assignments... (a)'                   browseVariableAssignments)<br>
                         ('class refs (N)'                       browseClassRefs)<br>
                         -<br>
                         ('remove method (x)'                    removeMessage)<br>
                         ('explore method'                       exploreMethod)<br>
                         ('inspect method'                       inspectMethod));<br>
+                yourself!<br>
-                yourself<br>
- !<br>
<br>
Item was added:<br>
+ ----- Method: CodeHolder>>isBreakOnEntry (in category 'breakpoints') -----<br>
+ isBreakOnEntry<br>
+ <br>
+        | selectedMethod |<br>
+        selectedMethod := self selectedClassOrMetaClass<br>
+                compiledMethodAt: self selectedMessageName<br>
+                ifAbsent: [^ false].<br>
+        ^ selectedMethod hasBreakpoint!<br>
<br>
Item was changed:<br>
  ----- Method: Debugger>>mainContextStackMenu: (in category 'context stack menu') -----<br>
  mainContextStackMenu: aMenu<br>
         "Set up the menu appropriately for the context-stack-list, unshifted"<br>
         <contextStackMenuShifted: false><br>
+        ^ aMenu<br>
+                addTranslatedList: #(<br>
-        ^ aMenu addList: #(<br>
                         ('fullStack (f)'                                 fullStack)
<br>
                         ('restart (r)'                           restart) <br>
                         ('proceed (p)'                           proceed) <br>
                         ('step (t)'                                      doStep)
<br>
                         ('step through (T)'               stepIntoBlock) <br>
                         ('send (e)'                                      send) <br>
                         ('where (w)'                             where) <br>
                         ('peel to first like this'               peelToFirst) <br>
                         - <br>
                         ('return entered value'          returnValue) <br>
+                        - );<br>
+                add: (self isBreakOnEntry ifTrue: ['<on>'] ifFalse: ['<off>']) , 'break on entry' translated<br>
+                        action: #toggleBreakOnEntry;<br>
+                addTranslatedList: #(<br>
-                        - <br>
-                        ('toggle break on entry'        toggleBreakOnEntry) <br>
                         ('senders of    (n)'                     browseSendersOfMessages)
<br>
                         ('implementors of    (m)'        browseMessages) <br>
                         ('inheritance (i)'                       methodHierarchy)
<br>
-                        - <br>
                         ('versions (v)'                          browseVersions)
<br>
                         - <br>
                         ('references    (r)'                     browseVariableReferences)
<br>
                         ('assignments    (a)'            browseVariableAssignments)
<br>
                         - <br>
                         ('class refs (N)'                                browseClassRefs)
<br>
                         ('browse full (b)'                       browseMethodFull)
<br>
                         ('file out '                               fileOutMessage)
<br>
                         ('remove method (x) '            removeMessage) <br>
                         - <br>
                         ('copy bug report to clipboard' copyBugReportToClipboard));<br>
+                yourself!<br>
-                yourself<br>
- !<br>
<br>
Item was changed:<br>
  ----- Method: MessageSet>>mainMessageListMenu: (in category 'message list') -----<br>
  mainMessageListMenu: aMenu<br>
-        "Answer the message-list menu"<br>
         <messageListMenuShifted: false><br>
+ <br>
+        ^ aMenu<br>
+                addTranslatedList: #(<br>
+                        ('what to show...'                      offerWhatToShowMenu));<br>
+                add: (self isBreakOnEntry ifTrue: ['<on>'] ifFalse: ['<off>']) , 'break on entry' translated<br>
+                        action: #toggleBreakOnEntry;<br>
+                addTranslatedList: #(<br>
-        aMenu addList: #(<br>
-                        ('what to show...'                      offerWhatToShowMenu)<br>
-                        ('toggle break on entry'                toggleBreakOnEntry)<br>
                         -<br>
                         ('browse full (b)'                       browseMethodFull)<br>
                         ('browse hierarchy (h)'                 browseClassHierarchy)<br>
                         ('browse protocol (p)'                  browseFullProtocol)<br>
                         -<br>
                         ('fileOut'                              fileOutMessage)<br>
                         ('printOut'                             printOutMessage)<br>
                         ('copy selector (c)'            copySelector)<br>
                         ('copy reference (C)'   copyReference)<br>
                         -<br>
                         ('senders of... (n)'                    browseSendersOfMessages)<br>
                         ('implementors of... (m)'               browseMessages)<br>
                         ('inheritance (i)'                      methodHierarchy)<br>
                         ('versions (v)'                         browseVersions)<br>
                         -<br>
                         ('references... (r)'                    browseVariableReferences)<br>
                         ('assignments... (a)'                   browseVariableAssignments)<br>
                         ('class refs (N)'                       browseClassRefs)<br>
                         -<br>
                         ('remove method (x)'                    removeMessage)<br>
                         ('explore method'                       exploreMethod)<br>
+                        ('inspect method'                       inspectMethod));<br>
+                yourself!<br>
-                        ('inspect method'                       inspectMethod)).<br>
-        ^ aMenu!<br>
<br>
<br>
</div>
</span></font>
</body>
</html>