seandenigris / Living-Code

How do we make the IDE more like real life - live, direct, and fun!
MIT License
8 stars 0 forks source link
dynabook ide pharo smalltalk

LivingCode

How do we make the IDE more like real life - live, direct, and fun!

Installation

GToolkit is the reference platform, but the goal is for it to also work in the latest Pharo release

[
    EpMonitor current disable.
    [ Metacello new
        baseline: 'LivingCode';
        repository: 'github://seandenigris/Living-Code/repository';
        "onConflict: [ :ex | ex allow ];"
        load ] ensure: [ EpMonitor current enable ].
] fork.

Quick Start Tutorial

Opening a New World

From the World Menu, click "Open Self World" Things to note:

Populating the World

  1. In the Self window, in the editor bar near the top, type an expression
  2. Accept with either Cmd+s or [Enter] An object, very much like an Outliner in the Self Language, will appear in your hand. Place it in the world wherever you want

Scrolling in the World

Just use the mouse wheel, or click and drag anywhere on the World's background

Navigating a Complex World

Since grokking a complex world can be difficult, there is a RadarMorph, inspired by Self's RadarView. Try the following:

  1. Accept in the window's evaluating editor: RadarMorph new extent: (300.0@200.0); openInHand
  2. Place the RadarMorph in one of the corners of the world
  3. You now have a warp speed option for scrolling - click and drag in the RadarMorph. Compare the regular scrolling described above and you'll see that it is at a much finer level

Feature Map

Creating new types

In self, the equivalent of creating a new instance is to copy a prototype e.g. "morph copy" ~ "Morph new". One key difference is that in most of the examples, you continue to customize the behavior, which is not a built-in way to deal with Smalltalk instances. So, we start with an equivalent of "Morph subclass: #MyMorphSubclass". In the future, we may make a real prototyping facility, but this will get the ball rolling.

Classifying globals

In self, one would add a slot to globals under an appropriate category and then connect the slot to the new prototype. As a Smalltalk equivalent, we include a "package" slot in all outliners. So one can drag and drop the package slot handle onto an RPackage.