VA Smalltalk 7.5.2 (Windows) running under WINE

As I posted in the Instantiation forum VA Smalltalk can be pretty good used under WINE and therefore under Unix/Linux. Perhaps one may ask, why one should do that. At least two reasons can be named:

– some features are only supported under Windows: Report feature, UML Designer
– the GUI of VASmaltalk under Windows (WINE) looks much smarter than the native Linux one – my opinion

I’ve checked several versions of WINE and the results are the following ones.

First I started with my old machine and Ubuntu 7.10 (i386) and I checked

  • 0.9.58 – ok
  • 0.9.59 – not suitable due to error with multi line widget

Then I switched to Ubuntu 8.04 (amd64):

  • 0.9.61 – ok (06.05.2008)
  • 1.0rc1 – ok (18.05.2008)
  • 1.0rc2 – ok (27.05.2008)
  • 1.0rc3 – ok (04.06.2008)
  • 1.0rc4 – ok (08.06.2008)

But despite the fact, that it works pretty well there are still some problems. Scrolling up and down in the EwLinearList widget hierarchy brings problems. These can be solved by removing some optimizing code:

    EwLinearList>>shiftTopUpFrom: oldTopPosition to: newTopPosition
       "Adjust the window to reflect a change in the top item position from oldTopPosition
       to newTopPosition - in essence a SCROLL DOWN action.  Shift the position of items
       that will remain visible and redraw the rest.

       Return a redrawRectangle indicating whether any additional areas need to
       be redrawn, or nil if no redrawing is required.

       Assumptions:
          the item associated to newTopPosition is visible.
          ewTopItemPosition has a value of oldTopPosition.

       The value of ewTopItemPosition upon returning from this method is not specified."

       | shiftFromY  window workWidth workHeight numberOfNewItems|

       window := self window.
       workWidth := self workWidth.
       workHeight := self workHeight.
       shiftFromY := self topYAt: newTopPosition.
       numberOfNewItems := newTopPosition - oldTopPosition.

       self
          eraseCursoredEmphasis;
          basicTopItemPosition: newTopPosition;
          recreateVisibleItemNodes.

       self redraw

and

   EwLinearList>>shiftTopDownFrom: oldTopPosition to: newTopPosition
       "Adjust the window to reflect a change in the top item position from oldTopPosition
       to newTopPosition - in essence a SCROLL UP action.  Shift the position of any items
       that will remain visible and redraw the rest.

       Assumptions:
          ewTopItemPosition has a value of oldTopPosition.

       The value of ewTopItemPosition upon returning from this method is not specified."

       | shiftFromY newlyDrawnBottomY numberOfNewItems window workWidth workHeight  |

       window := self window.
       workWidth := self workWidth.
       workHeight := self workHeight.
       shiftFromY := self topYAt: oldTopPosition.
       numberOfNewItems := oldTopPosition - newTopPosition.

       self
          eraseCursoredEmphasis;
          basicTopItemPosition: newTopPosition;
          recreateVisibleItemNodes.

       "Shift the old items downward if necessary.  Otherwise we have to redraw
       everything."

       numberOfNewItems < self partiallyVisibleItemCount
          ifTrue: [
             newlyDrawnBottomY := (self visibleItemNodes at: numberOfNewItems) bottom + 1.
             self
                copyAreaWithin: window
                gc: self gc
                srcX: 0
                srcY: shiftFromY
                width: workWidth
                height: workHeight
                destX: 0
                destY: newlyDrawnBottomY.
             self exposeCursoredItem]
             ifFalse: [self redraw ]

Another problem are bad redraw problems using the tree icon views. As an example “EwxIconTreeExample”.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s