<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>