Monthly Archives: November 2014

Pharo development’s metronome: another tick

14549 Clean Critics and RBRule related information
14544 tiny code critique cleanup of NautilusRefactoring

14543 Pharo4.0 settings do have Appearance and appearance (twice the entries that is)

14540 Add new methods for accessing traitUsers

14539 dropping a textfile opens an empty filelist
14261 Delay refactoring (part 1) – move scheduler from class-side to instance-side of its own class

14525 tiny code critic clean NautilusCommon

6320 We need a “Save As” Dialog
14524 WateryTheme broken, again

14421 Polymorph-Tools-Diff should be packaged as Tool-Diff

14526 unload GT and Glamourtests on #cleanUpForProduction

14506 Add class inst vars to hold SmallInteger class>>minVal and maxVal.
14498 Unnecessary instance creation in OrderedCollection>>#asOrderedCollection?

14516 use an explicit copy of subclass collection in RBAbstractClass>>#allSubclasses

12007 BorderMorph halo menu border colour broken

14494 PSMCChangesGrouper is missing #visitClassTraitDefinition:

14487 do:displayingProgress: in Collection should be part of the UIManager package

14458 Add BlockClosure>>memoized

14510 Wrong editing history positions after using home-key

14495 Adding dependent projects in Versionner fails (adding to array instead of collection)

14508 add class ivars to SmallInteger: subclass responsibility #extending:scope:host:

14507 DNU when accepting a class side definition for class instance vars

14502 remove unsent methods #patchworkUIThemeColor

7390 EventHander and MouseOverEventHandler Cleanup

13516 Canvas and all subclasses should not be in Morphic

14489 Clean references from System Support to Themes
14385 move growl settings to Growl class

14484 Remove debugging methods from Integer

13982 Failing test: ReleaseTest>>testMethodsWithUnboundGlobals
14490 Opal depends on System-Announcements

14469 Merge back OrderPreservingDictionary improvements

14465 Unexpected DNU when compiling a method code without selecting a class

14415 error while retrieving all icons from aThemeIcon

14486 Debugging failing primitives crash spur images

14485 InstructionStream scanner failing in spur.
14261 Delay refactoring (part 1) – move scheduler from class-side to instance-side of its own class
14473 GTools version 2.0.2 – bug fixes

Github for Pharo using SourceTree Video by Kilon Alios

Hello pharoers , at last , my video tutorial for those that are not familiar with git and github, has been uploaded to YouTube. I describe the very basics of the process and give you enough information to create a github repository, clone the online repository to your hard driver and use the hard drive copy to commit changes to your code, upload and download your commits to and from your github repo . I use sourcetree to make the interaction with git as gui based as you are used with Pharo.

The tutorial can be watched here
and these are the relevant links for whatever is used in the tutorial
if you have any issue , problem and compliant, dont be shy, share it 🙂

NetGen – Open Street Map Roassal Demo

Hi all,

We are pleased to announce a wireless sensor network animation demo in Pharo, Roassal and OpenStreetMap.

The release contains 2 packages:
1. Cirela-OSM Package consists of the visualization of geographical information using roassal with  OpenStreetMap as background.
2. Cirela-Netgen-Sim: this package allows the execution of a synchronous and concurrent Wireless Sensor Network (WSN) simulation program [1] from Pharo. Outputs of the simulation are then animated on a map visualizing the locations of the simulated sensors.

A video of the animated wireless sensor network simulation:

Another video showing Cirela-OSM:

A word about CIRELA

CIRELA (Communication and Information technology for REsiLience to disAsters) is a non profit NGO aiming at providing open source solutions to monitor and prevent natural and environmental disasters. Currently we are focusing on wireless sensor network monitoring and warning systems.

[1] This program is generated in Occam by NetGen, from B. Pottier et al. (UBO)



On Screen Keyboard


I created the first version of a virtual keyboard morph for Pharo. To
try it, evaluate:

Gofer it
     url: '';
     package: 'OnScreenKeyboard';

OnScreenKeyboard new open.

Currently it doesn't work well together with completion morphs so
please disable code completion.

- splitted int two parts
- compact look
- swipe up to write uppercase letter
- swipe left to do backspace
- swipe down to write special character
- swipe right to write numbers and other special characters
- swipe up right to press combination with ctrl (e.g. ctrl+p)
- swipe down right to press combination with alt
- press Kb button to move the keyboard up and down on the screen
- press shift/alt/ctrl keys to hold them (e.g. for selecting text with
cursor keys and shift)

Feel free to send patches and improvements directly to the project
repository :-)


OpenStreet map support for Roassal

One video to show everything

Nireas: A theme manager for Pharo

Hello pharoers , I would like to present to you my latest project and a good excuse to learn Spec. First I would like to thank Nicolai for his help and all other people who helped me out understand Spec. Of course I am still learning 🙂

So , Nireas is a theme manager for Pharo 4. What this means is that Nireas takes the dark theme and by presenting you with an easy to use gui allows you to change the colors on the fly to adjust the theme to your own preferences and habits.
This is an example
you can see the Nireas GUI on the bottom, the Nautilus on the left has the default dark theme colors, the one on the right has the color selected by Nireas.
You can find instructions on how to install Nireas and how to use here
Unfortunately the last one the scroll bar color seems to have no effect, I will have to look into it, but the other options work fine. Please note also that you will have refresh issues so its advisable to close existing windows and reopen them so they update properly to the new colors.
Please try this tool inside a new fresh pharo 4 image, this code is very experimental and has been known to crash Morphic. So use with caution.
Nireas implements its own theme subclassing the dark theme, the big diffirence here is that it defines color to be independent and dynamic so the theme can be , well, …. themable 😀
Nireas does not change anything inside Pharo so it can be installed safely.
I would like to take this tool further to allow of course deeper customisations that goes beyond just customising colors, meaning change the look and feel of Pharo. But this means unfortunately/fortunately that some things will have to change inside Pharo and Pharo will have to become much more dynamic GUI wise to make dynamic themes much easier to implement.
Nireas is part of my Ephestos project, so this is why it appears inside an Ephestos menu and hopefully I will keep working it as customising Pharo GUI is something that I find really interesting and fun,
As always comments, insults, worship and rage is more than welcomed. 8LDSy22nPnkalQ2rem9vqgvQIrfc4pjPFa6cAPkC-fQ

SciSmalltalk v0.16

Dear all,

we are to happy to announce SciSmalltalk v0.16

SciSmalltalk is a Smalltalk project, similar to existing
scientific libraries like NumPy, SciPy for Python or SciRuby for Ruby.
SciSmalltalk already provide the following basic functionalities:

- complex and quaternions extensions,
- random number generators,
- fuzzy algorithms,
- Didier Besset's numerical methods,
- Ordinary Differential Equation (ODE) Solver.

Version 0.16 includes updates from Werner Kassens to several packages,
the work Nicolas Cellier about arbitrary precision floats.

SciSmalltalk project web page is here:
All the code is available under the MIT licence.

We have more than 563 green unit tests and we run a CI job here:

This version should work on Pharo 3.0/4.0 and also Squeak 4.5 (to
be confirmed).

We are looking for more code contributions and also tests, documentation !
Join the mailing-list :!forum/scismalltalk

[ANN] Hubcap – a SmalltalkHub API and browser for Pharo


as I wanted to browse the SmalltalkHub contents directly from within Pharo image
I wrote a simple browser:

  Gofer it
     url: '';
     configurationOf: 'Hubcap';

Attached is a screenshot. Works on Pharo 4.0. Still not finished but maybe it is 
already useful to others as well.

One can access the tool from the world menu, implementation lives in 
"Hubcap-Tools" package. The UI shows and allows to filter users, shows
their projects and packages. Special icons display the state (loaded, 
modified, public writable, ...). One can load from the UI or open Monticello tools.

The "Hubcap-Core" package includes an API to query STHub and write
expressions like:

   HubClient new allProjectsForUserNamed: 'TorstenBergmann' 

   HubClient new hasUserNamed: 'TorstenBergmann'

So "Hubcap-Core" may be usefull to people who want to build other tools
that depend on STHub infos. Basic documentation lives on!/~TorstenBergmann/Hubcap

and as class comment on ConfigurationOfHubcap.

Beware: the tool is sill not optimized, any clicking involves a query 
to STHub (hope STHub will not crash when many people use it). API
may still undergo changes in the future.

Also teams are not yet supported as STHub still returns an MNU error 
in the REST interface:
Anyone able to fix that?

Thanks to Stephan Eggermonts who gave me the initial idea with some code
I've found in "Deprecation finder" and to Sven for the easy to use NeoJSON

Contributors can just commit, the project is public.

Another stream of changes…

14429 DebuggerTests package should be Debugger-Tests

14431 FontInfrastructureTests package should be FontInfrastructure-Tests

14430 EmbeddedFreeTypeTests package should be EmbeddedFreeType-Tests
14425 FileList should not be used as Widget for opening Folders

14436 NautilusTests package should be Nautilus-Tests

14435 NECompletionTests package should be NECompletion-Tests

14417 remove #theme from GraphicsFontSettings class

14260 Add gt inspector views to Ordered[Identity]Dictionary

14441 SmartSuggestionsTests package should be SmartSuggestions-Tests

14440 SlotTests package should be Slot-Tests

14407 GTools version 2.0.0
14403 never use EventHandler but MorphicEventHandler (and migrate all existing instances)

14348 Package Keys got lost

14388 Can not inspect IRMethod
14391 GTIRBrowser modifies cached IRMethod on browse

14402 GTIRBrowser can not select the IRMethod node (MNU)

14409 remove RBTranslateLiteralsInMenusRule

14401 GTIRBrowser shows only decompiled source

14406 Replace Announcer>>#on:do:s senders in SUnit-Tests

14408 Replace Announcer>>#on:do:s senders in Versionner-Tests-Core-Model

14394 RBConfigurableFormatter>>newLinesBeforeStartingAt: fails if originalSource is nil

14399 UIManager>>#theme got lost
14396 Merge Polymorph-EventEnhancements into the event mechanism that it extends

14398 remove Spec-Tools-Editor
13260 inspecting variables in the debugger fails in some cases

14393 CollectionValueHolder>>remove: does not annnounce change

14397 reduce polymorph extension methods

14254 AST method replaceWith: does not change source interval

14380 Replace Announcer>>#on:send:to:s senders in Tests

14371 Traits should not be allowed to have nil as their category
14246 CompiledMethod>>hash can produce clashes

14379 Code critique pass Spec-Tools

14375 Random #obsoleteClasses test failures

14373 Replace Announcer>>#on:send:to:s senders in System-Support

14372 Replace Announcer>>#on:send:to:s senders in System-Changes

14377 FileOut creates invalid comment entries for classes with class side methods

14368 tiny code critic pass Collection-Unordered

14369 tiny code critic font infrastructure

14341 NonInteractiveManager should provide a default value on #nonInteractiveWarning:
13113 remove generateSpecFormat

14366 HDTestReport>>#initializeOn: bad initialisation of suiteTime

14365 missing #callPrimitive: method in OCDecompiler

14364 tiny code critique cleanup in Ring

14358 PseudoClass DNU printHierarchy in FileContentsBrowser

14254 AST method replaceWith: does not change source interval

14336 monkey fails with Methods equivalently defined in superclass

14363 move StartupLoader to Deprecated40

14335 renaming addUpdating:action: into addUpdating:selector:

14360 ThemeIcons should be cleared on #cleanUp

14330 rename KeyChainTest –> KeyChainTests so it gets unloaded by #cleanUpForProduction

14362 Iconset is wrong

14326 ThemeIcons should use LRUCache

14357 add Current class var to ThemeIcons

14356 Replace Announcer>>#on:send:to:s senders in System-Announcements

14355 Replace Announcer>>#on:send:to:s senders in SlotTests

14352 Cleaning, fixing and documenting NautilusPugin

14351 cleanup ClassModification: remove unused ivars

14350 Replace Announcer>>#on:send:to:s senders in SUnit-UI

14345 Replace Announcer>>#on:send:to:s senders in Refactoring-Changes

10520 Right clicking on the source pane in Nautilus and clicking extended search itself produces a walkback
14343 MorphicUIBugTest failing with GTPlayground active
14349 announcement subscription in TestCase class>>#initialize should be weak
14337 Removing a trait usage raises an exception (2nd attempt)
14334 Replace Announcer>>#on:send:to:s senders in RecentSubmissions

14332 use #ast, not #parseTree so we benefit from the ASTCache

14333 clean translated in add:subMenu: and add:icon:subMenu:
14331 cleaning more menu

14327 Simplification of the popScope logic in IRTranslator

14329 Playground “print it” does not work anymore since 40 #330

14328 Typo: optionIlineNone => optionInlineNone

14324 ThemeIcons has a class instance var “icons” that is not used

14316 Float zero and negative zero should not be #literalEqual:

14322 fixed WorldSate>>#runLocalStepMethodsIn:

14323 Replace Announcer>>#on:send:to:s senders in RPackage-Tests

14274 Socket timeTestUDP fails

14320 Small clean in Polymorph

5139 Monticello uses the wrong compiler for class and trait definitions

13115 unnecessary concatenation

13158 Adding class-side #initialize should not template with /super initialize/

14313 Replace Announcer>>#on:send:to:s senders in RPackage-SystemIntegration

14303 RemotesManager: Make more generally useful

11065 Blocks should have some suggestions (at least the same as expressions so far)
14309 add #selectItems: and #selectedItems protocols to TickDialogWindow

14256 wrong number of tempvars for optimized loops

10839 VirtualMachine>>#maxExternalSemaphores: has bogus implementation (sort of)

14308 EyeInspector should not register as #basicInspector