<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        <img src="cid:30f08c72-b338-4797-a57c-8efda6335b87" width="auto"></img><div><br><div><img src="cid:b4bd15a4-c09c-41a2-9bb5-082ac4900c2d" width="auto"></img></div><div class="mb_sig"></div>
                                        
                                        </div><blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 15.08.2019 12:00:51 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style="font-family:Arial,Helvetica,sans-serif">Marcel Taeumel uploaded a new version of PreferenceBrowser to project The Trunk:<br>http://source.squeak.org/trunk/PreferenceBrowser-mt.89.mcz<br><br>==================== Summary ====================<br><br>Name: PreferenceBrowser-mt.89<br>Author: mt<br>Time: 15 August 2019, 12:00:45.543945 pm<br>UUID: 8023ca53-7e04-8e46-98b7-a9e927923f26<br>Ancestors: PreferenceBrowser-ct.88<br><br>Some cosmetic improvements. Fixes "show category" button.<br><br>=============== Diff against PreferenceBrowser-ct.88 ===============<br><br>Item was changed:<br>  ----- Method: PBPreferenceButtonMorph>>addExtraControls (in category 'extra controls') -----<br>  addExtraControls<br>          | m |<br>         m := self horizontalPanel<br>             cellInset: 3;<br>                 addAllMorphs: self actionButtons;<br>             addMorphBack: self horizontalFiller;<br>                  addMorphBack: self moreButton;<br>                yourself.<br>     self <br>                 addMorphBack: (self blankSpaceOf: 2@2);<br>               addMorphBack: self preferenceHelpTextMorph;<br>+          addMorphBack: self horizontalLine;<br>+           addMorphBack: self preferenceCodeTextMorph;<br>           fullBounds; "to force a layout compute needed by the textMorphs's autoFit"<br>                  addMorphBack: m<br>  !<br><br>Item was changed:<br>  ----- Method: PBPreferenceButtonMorph>>basicButton (in category 'utility methods') -----<br>  basicButton<br>+ <br>+       ^ PluggableButtonMorph new<br>+           target: self;<br>+                layoutInset: (10@5 corner: 10@5);<br>+            yourself!<br>-    | button |<br>-   button := SimpleButtonMorph new.<br>-     button<br>-               borderWidth: 1;<br>-              borderColor: self paneColor;<br>-                 on: #mouseEnter send: #value to: [button borderWidth: 2];<br>-            on: #mouseLeave send: #value to: [button borderWidth: 1];<br>-            vResizing: #rigid;<br>-           height: (TextStyle defaultFont height + 4);<br>-          useSquareCorners;<br>-            clipSubmorphs: true;<br>-                 color: self paneColor muchLighter;<br>-           target: self.<br>-        ^button!<br><br>Item was changed:<br>  ----- Method: PBPreferenceButtonMorph>>highlightOn (in category 'highlighting') -----<br>  highlightOn<br>   <br>      self color: ((UserInterfaceTheme current get: #selectionColor for: PluggableListMorph) ifNil: [Color gray alpha: 0.1]).<br>  <br>   self label<br>            color: ((UserInterfaceTheme current get: #selectionTextColor for: PluggableListMorph) ifNil: [Color black]);<br>+                 font: (((UserInterfaceTheme current get: #font for: PluggableListMorph) ifNil: [TextStyle defaultFont])<br>+                      emphasized: TextEmphasis bold emphasisCode).<br>+         <br>-             font: ((UserInterfaceTheme current get: #font for: PluggableListMorph) ifNil: [TextStyle defaultFont]).<br>-              <br>      self addExtraControls.!<br><br>Item was added:<br>+ ----- Method: PBPreferenceButtonMorph>>horizontalLine (in category 'utility methods') -----<br>+ horizontalLine<br>+    ^self horizontalPanel<br>+                hResizing: #spaceFill;<br>+               height: 2;<br>+           color: ((UserInterfaceTheme current get: #color for: PluggableListMorph) ifNil: [Color white]);<br>+              yourself.!<br><br>Item was added:<br>+ ----- Method: PBPreferenceButtonMorph>>preferenceCode (in category 'preference accessing') -----<br>+ preferenceCode<br>+    <br>+     ^ self preference codeString withBlanksTrimmed!<br><br>Item was added:<br>+ ----- Method: PBPreferenceButtonMorph>>preferenceCodeText (in category 'preference accessing') -----<br>+ preferenceCodeText<br>+ <br>+   | text |<br>+     text := self preferenceCode asText<br>+           addAttribute: (TextFontReference toFont: Preferences standardCodeFont);<br>+              yourself.<br>+    ^ (Smalltalk classNamed: #SHTextStylerST80)<br>+          ifNil: [text]<br>+                ifNotNil: [:stylerClass | stylerClass new styledTextFor: text]!<br><br>Item was added:<br>+ ----- Method: PBPreferenceButtonMorph>>preferenceCodeTextMorph (in category 'extra controls') -----<br>+ preferenceCodeTextMorph<br>+   | text tm |<br>+  text := self preferenceCodeText.<br>+     tm := TextMorph new<br>+          contents: text;<br>+              wrapFlag: true;<br>+              autoFit: true;<br>+               hResizing: #spaceFill;<br>+               vResizing: #shrinkWrap;<br>+              margins: (5@0 corner: 5@0);<br>+          visible: text notEmpty;<br>+              yourself. "we don't want an empty textmorph showing"<br>+       ^tm!<br><br>Item was changed:<br>  ----- Method: PBPreferenceButtonMorph>>preferenceHelpTextMorph (in category 'extra controls') -----<br>  preferenceHelpTextMorph<br>     | text tm |<br>   text := self preferenceHelpText.<br>      tm := TextMorph new<br>           contents: text;<br>               wrapOnOff;<br>            hResizing: #spaceFill;<br>                vResizing: #shrinkWrap;<br>+              margins: (5@0 corner: 5@0);<br>           lock: true;<br>           visible: text notEmpty;<br>               yourself. "we don't want an empty textmorph showing"<br>        tm isAutoFit<br>                  ifFalse: [tm autoFitOnOff].<br>   ^tm.!<br><br>Item was changed:<br>  ----- Method: PBPreferenceView>>basicPanel (in category 'user interface') -----<br>  basicPanel<br>     ^BorderedMorph new<br>            beTransparent;<br>                extent: 0@0;<br>                  borderWidth: 0;<br>               layoutInset: 0;<br>+              cellInset: 5;<br>-                cellInset: 2;<br>                 layoutPolicy: TableLayout new;<br>                listCentering: #topLeft;<br>              cellPositioning: #center;<br>             hResizing: #shrinkWrap;<br>               vResizing: #shrinkWrap;<br>               yourself!<br><br>Item was changed:<br>  ----- Method: PBPreferenceView>>offerPreferenceNameMenu: (in category 'user interface') -----<br>  offerPreferenceNameMenu: aPreferenceBrowser<br>          "the user clicked on a preference name -- put up a menu"<br>  <br>+       | aMenu readableName |<br>+       readableName := self preference readableName.<br>-        | aMenu |                       <br>      aMenu := MenuMorph new <br>               defaultTarget: self preference;<br>+              addTitle: readableName.<br>-              addTitle: self preference name.<br>  <br>   (Preferences okayToChangeProjectLocalnessOf: self preference name) ifTrue:<br>            [aMenu<br>                        addUpdating: #isProjectLocalString target: self preference action: #toggleProjectLocalness;<br>                   balloonTextForLastItem: 'Some preferences are best applied uniformly to all projects, and others are best set by each individual project.  If this item is checked, then this preference will be printed in bold and will have a separate value for each project'].<br>  <br>       aMenu<br>+                addLine;<br>              add: 'browse senders' translated<br>                      target: self systemNavigation<br>                         selector: #browseAllSelect:name:autoSelect:<br>                   argumentList: {<br>                               [:m | self preference selectors anySatisfy: [:sel | m hasLiteral: sel]].<br>                              'Preference senders: {1}' translated format: {self preference name}.<br>                                  self preference selectors first };<br>            balloonTextForLastItem: 'This will open a method-list browser on all methods that the send the preference "'<br>+                    , readableName , '".'.<br>-                  , self preference name , '".'.<br>   self preference provider ifNotNil: [<br>                  aMenu<br>                         add: 'browse implementation' translated<br>+                              target: ToolSet<br>+                              selector: #browse:selector:<br>-                          target: Browser<br>-                              selector: #fullOnClass:selector:<br>                              argumentList: {<br>                                       self preference provider class.<br>                                       self preference selectors first };<br>+                   balloonTextForLastItem: 'This will open a browser on the method that stores the preference "' , readableName , '".'].<br>-                      balloonTextForLastItem: 'This will open a browser on the method that stores the preference "' , self preference name , '".'].<br>       aMenu<br>                 add: 'inspect preference' translated<br>                          target: self preference<br>                       selector: #inspect;<br>+          balloonTextForLastItem: 'This will open an Inspector on the preference "' , readableName , '".'.<br>-           balloonTextForLastItem: 'This will open an Inspector on the preference "' , self preference name , '".'.<br>    aMenu<br>+                addLine;<br>+             add: 'show category'<br>-                 add: 'show category...'<br>                       target: aPreferenceBrowser<br>                    selector: #findCategoryFromPreference:<br>+                       argument: self preference;<br>-                   argument: self preference name;<br>               balloonTextForLastItem: 'Allows you to find out which category, or categories, this preference belongs to.'.<br>  <br>      Smalltalk isMorphic ifTrue:<br>           [aMenu<br>                        add: 'hand me a button for this preference'<br>                           target: self<br>                                  selector: #tearOffButton;<br>                     balloonTextForLastItem: 'Will give you a button that governs this preference, which you may deposit wherever you wish'].<br>  <br>          aMenu<br>+                add: 'copy name to clipboard'<br>-                add: 'copy this name to clipboard'<br>                    target: self preference<br>                       selector: #copyName;<br>                  balloonTextForLastItem: 'Copy the name of the preference to the text clipboard, so that you can paste into code somewhere'.<br>+  aMenu<br>+                add: 'copy code to clipboard'<br>+                        target: self preference<br>+                      selector: #copyCode;<br>+                 balloonTextForLastItem: 'Copy the code to access the current preference value to the clipboard, so that you can paste into code somewhere'.<br>  <br>       aMenu popUpInWorld!<br><br>Item was changed:<br>  ----- Method: PreferenceBrowser>>findCategoryFromPreference: (in category 'find') -----<br>+ findCategoryFromPreference: aPreference<br>- findCategoryFromPreference: prefSymbol<br>        "Find all categories in which the preference occurs"<br>  <br>    | aMenu| <br>     aMenu := MenuMorph new defaultTarget: self.<br>+  aPreference categoryList do:<br>-         (preferences categoryListOfPreference: prefSymbol) do:<br>                [:aCategory | aMenu add: aCategory target: self selector: #selectedCategory: argument: aCategory].<br>    aMenu popUpInWorld!<br><br>Item was changed:<br>  ----- Method: PreferenceView>>morphForName (in category 'user interface') -----<br>  morphForName<br>  <br>+        ^ ((StringMorph contents: self preference readableName)<br>-      ^ ((StringMorph contents: self preference name)<br>                       color: ((UserInterfaceTheme current get: #textColor for: PluggableListMorph) ifNil: [Color black]);<br>                   font: ((UserInterfaceTheme current get: #font for: PluggableListMorph) ifNil: [TextStyle defaultFont]);<br>                       yourself)!<br><br><br></div></blockquote></div>