If nothing exists matching this description, what's the closest I can get?
-
2What would you gain by having the spreadsheet implemented in Smalltalk? – Alex Jasmin Jan 12 '11 at 21:46
-
I don't understand the question. – blueberryfields Jan 12 '11 at 21:53
-
I think Alexandre is trying to inquire as to why you want (or anyone) would such a thing. – Chuck Jan 12 '11 at 21:59
-
2I think there's some context you two share, and I don't. I still don't get the question. – blueberryfields Jan 12 '11 at 22:10
4 Answers
Option 1) In Pharo 1.4 or 2.0
I have used SGrid (a.k.a GridMorph) to display hundreds of rows without major performance problems.
Install
Menu -> Tools -> Configuration Browser -> MorphicGrid (Install)
Example
| matrix grid rows cols |
rows := 2.
cols := 3.
matrix := Matrix rows: rows columns: cols.
1 to: rows do: [ : r |
1 to: cols do: [ : c |
matrix at: r at: c put: SmallInteger maxVal atRandom ] ].
grid := (GridMorph
from: matrix
performing: {
'Heading 1' -> #asNumber .
'Heading 2' -> #asNumber .
'Heading 3' -> #asNumber })
title: 'GridMorph Example'.
grid openInWorld.
To interact with the grid (like bringing right button menu on any cell), you will have to fix issues related with the introduction of SmalltalkEditor class. The following code open a tabular picture viewer using the GridMorph and the flickr API (the flickr API usage is based on this cast):
| xmlStream xmlDoc photos |
xmlStream := 'http://api.flickr.com/services/feeds/photos_public.gne?id=14577317@N06&lang=en-us&format=rss_200' asUrl retrieveContents readStream.
xmlDoc := XMLDOMParser parseDocumentFrom: xmlStream.
photos := OrderedCollection new.
xmlDoc allElementsNamed: #item do: [ : item| | thumbUrl photoUrl |
thumbUrl := ((item findElementNamed: #media:thumbnail) attributeAt: #url) asUrl.
photoUrl := ((item findElementNamed: #media:content) attributeAt: #url) asUrl.
photos add: (photoUrl -> (Form fromBinaryStream: thumbUrl retrieveContents readStream)) ].
((GridMorph
from: photos
performing: {'URL' -> [: assoc | assoc key asString ] . 'Picture' -> [: assoc | assoc value asMorph ]})
title: 'Flickr GridMorph Example') openInWorld.
Option 2) In Pharo 1.4 or 2.0
There is a class MorphTreeMorph, which includes a comment with several example grids.
Example
SimpleGridExample new open
ClassListExample new openOn: Collection.
Option 3) In Squeak:
There is a project called Skeleton – easy simulation system which uses eToys and you can access its code from: http://source.squeak.org/etoysinbox.html
Installation
Installer squeak
project: 'etoysinbox';
install: 'Skeleton'.
Example
SkSheet example "Move the red circle around"
I have not used it, but it seems to have basic formulas support.

- 1,749
- 10
- 12
There is the start of one by Hans-Martin Mosner stored here...
http://smalltalkhub.com/#!/~StephaneDucasse/PetitsBazars/packages/Spreadsheet.
With this in Pharo you can do...
sheet := SpreadsheetGridMorph new openInWindow.
sheet cellStringAt: 1@1 put: '10'.
sheet cellStringAt: 1@2 put: '20'.
sheet cellStringAt: 1@3 put: '=A1+A2'.
sheet cellStringAt: 1@3. "-->30"

- 111
- 3
I mostly prefer not to be restricted by rows and columns, and like the visibility of object browsers and inspectors.
I'm not sure what problem you try to solve here.
- a smalltalk environment is a much more powerful modeling environment than a spreadsheet, and much easier to use for complex models. There you might want a rows-and-columns based viewer. Glamour provides solutions to easily build browsers. It is part of Moose.
- spreadsheets are fine for prototyping small models, but have serious shortcomings in production environments: testability, multi-user support, performance.
- in production environments much simpler grids are more often used.
A smalltalk environment should be learned while pair-programming a few hours with an expert. The way to use it is very different from using IDEs like Eclipse, Visual Studio, XCode or Delphi.
If you want to sift through a lot of data, and find the interesting objects, Moose offers a lot of help in visualizing your data. It is focused on software reengineering, but e.g. Mondrian is just as usable for financial data.

- 15,847
- 1
- 38
- 65
-
OK, you don't like the UI - what do you use as the rule, dependency and calculation engines? – blueberryfields Jan 12 '11 at 23:20
-
1Though I admit that I'm perplexed about your preference for looking at data through object browsers and inspectors - the ones I've used so far turn my data-sets into unintelligible mush. Which ones do you normally use? – blueberryfields Jan 12 '11 at 23:23
-
The default explore of Pharo, mostly the Seaside one-clicks. I find the most important skill is finding out which object to explore. That takes time. – Stephan Eggermont Jan 14 '11 at 10:38
-
1Spreadsheets are the standard tool for displaying and manipulating, for example, large amounts of financial or accounting data. It sounds to me like you haven't been using your smalltalk image to do that kind of work (especially your comment about finding the one object to explore - typically, when using a spreadsheet, you're not looking for one object, you're looking for several thousand objects and relationships between them) – blueberryfields Jan 27 '11 at 15:13
-
1Well, I've mostly worked with data sets that were a few hundred thousand to tens of millions of objects. There spreadsheets do not work very well. – Stephan Eggermont Feb 02 '11 at 13:43
-
I find this answer baffling. You're not sure what problem he is trying to solve? Have you ever asked that to the developers of Excel? – entonio Jun 03 '15 at 14:05
-
Yes, I don't know what problem he's trying to solve. Have you ever seriously used a smalltalk to do some modelling? Hiding code behind cells is not helpful for larger models. I know financial people do incredible things with Excel. Very impressive, and also often very risky and very uninformed. I like the work of @felienne to analyse & improve spreadsheets. – Stephan Eggermont Jun 03 '15 at 17:55