Showing posts with label package. Show all posts
Showing posts with label package. Show all posts

Wednesday, April 10, 2013

Smalltalk config candour

What follows is my reply to an exasperated Smalltalker :
CC  rider : config issues are as old as commercial Smalltalk ; I keep an entire mail bin of these (separate from 'user' or 'tips' conversations.) At least this is not
                    eclipse+CVS+Java+open-source !
I work in a very advanced commercial OOP created by MIT Lisp gurus and THAT IDE has package circularity issues that have to be addressed by developers who push beyond the pre-tested envelope.
Does the issue exist for commercial PROLOG implementations with packages ? That would be amusing .... (there had been SOUL and QSOUL projects for Squeak as well as a Prolog and then Lisp for Squeak )
I would not be surprised to find packaging issues with functors in Mozart/Oz ! And I could check the Mercury dev mailing list ... (Mercury - which can gen Erlang code ! )
The Puppy Linux folks have a real challenge in getting tools into their light Linux ... but so far so good (mostly) - I say "mostly" as I cannot get the ObjectIcon IDE to run in their JWM X ... but Icon with objects could be used to address that very config issue in a maintainable, readable fashion !!!
Practical computing : tasks which keep our sense of irony well-honed ;-) (even without management)
Needed : Pre-Factoring browsers ! ;-)
and please do keep smiling ... but only if the crows' feet crinkle at the edges of the temples ...

Friday, December 10, 2010

hidden Curl

There are a few places where Curl code is documented as for internal use only*.  This will surely not be the case in open source Curl projects.

There are also some examples of the use of hidden as an access modifier such as this docs entry:
GenericIterator (class)

  hidden abstract GenericIterator
  Package: CURL.IO.STREAM
Another curious example is the parent of HVBox.

LengthBreadthBox (class)

  hidden abstract sealed LengthBreadthBox {inherits SequenceBox}
  Package: CURL.GUI.BASE

The documented 'hidden' is that for the hidden-package accessors in PackageNamespace and the field hiidden? in AliasedNameRef (which is itself internal-use only.)What makes this interesting is that SequenceBox is itself visible.
*example from Curl docs:
 seqnum-generator (field)
protected seqnum-generator:{proc-type {}:int}
Class: TableOptionItem
Package: CURL.GUI.BASE
... This item is unsupported and reserved for internal use.

Thursday, May 20, 2010

Cincom VisualWorks Smalltalk 7.7 and Seaside 3.0

About a week ago James Robertson began re-doing the >tutorial for Seaside 3.0 and Cincom VisualWorks Smalltalk 7.7.

An immediate problem arises if you installed an >NC image from Cincom without selecting "Preview" components for install: you will not have WriteBarriers.

Just connect Store to the Cincom repository, select Published and load WriteBarriers from down near the bottom of the list - I took the version at the top of the pile.

After that, the Package Manager loaded Seaside-All 3.0-3 with no complaint.

Now to see how often contentType is defaulting to 'text/html' ... (my interest in Seaside at the moment is for generating non-HTML content as Curl markup or 'text/vnd.curl')

PS
  Smalltalk Daily has a post on WriteBarriers.

Friday, November 7, 2008

Curl with SQLite and style skins

Last night I was setting up a Curl 6.0 desktop application and in the course of editing my DCURL file realized that some of what I had to do for styling was not obvious.

For my own stuff, it is my habit to locate projects initially in a root folder for the Curl version, so the folder for this project was in my /Curl6 (later, what I keep can move into version control on a box of mine or on the web.)

Even then I have to remind myself that by Curl6, what I mean is Curl 6.0 (in this case 6.0.4+) because in the internal surge files you will see that curl6 is Curl 5.o and Curl 6.0 is curl7 ... but you only see that if you look into the Curl Surge install directories themselves.

So when I created the new project in the Curl IDE I chose to place a new folder in my /Curl6 and I was careful to select 6.0 as my version and to choose style sheets and to use the default.

So when my project opens in the Curl IDE, the start.dcurl file contains

{install-style-sheet
{manifest-url "file", "DEFAULT-STYLE-SHEET"}
}
Now you have to think. First, I have a folder in /Curl6 which I had renamed COM.CURL.GUI.STYLED from its original (which was tagged with versioning info) and it is the PCurl "deploy" version that came in the zip file from www.curl.com

But what I need is the default stylesheet from the styles package folder. I go copy that default-style.scurl into my new folder. Oh yes, I also go get the dss-defs.scurl file as well. Now I use the IDE's Project menu to add them to my project as file resources.

But I am not there yet. My new project's manifest does not yet have an entry for a resource which actually matches "DEFAULT-STYLE-SHEET"

What my new manifest must have is

{component file DEFAULT-STYLE-SHEET,
location = "default-style.scurl"
}
So in I click on my projetc's name in the project pane and edit the project's manifest to create that identifier. Think of it as a URI. Note that it is not quoted. It could have been any useful tag of my choosing, but they need to match so as to map URI to the resource as that location. This concept of resources is part of the great flecibility of developing and deploying Curl: you are not working directly with physical file includes as in a zipped java JAR file. And you are not having to use XML.

Now to think of what more is needed: I need to delegate to my CDK and to my STYLE packages.

Up on the Project menu there is an option to add delegates, so I add two of them by selecting the manifest.mcurl file found in the folder for the CDK for SQLite and the folder for styles and skins.

Those manifest entries are now

{delegate-to COM.CURL.CDK,
location = "../COM.CURL.CDK/manifest.mcurl"
}

{delegate-to COM.CURL.GUI.STYLED,
location = "../COM.CURL.GUI.STYLED/manifest.mcurl"
}
So what more could be needed? Ah, yes, import those packages into my new DCURL text file.

The first thing I did was to add || errors next

{import * from COM.CURL.CDK}
{import * from COM.CURL.GUI.STYLED} Oops! F5 key kicks up red error messages.

If I had clicked on the "delegate" icons that were added to my prject pane, I would have seen that those manifests contain such entries as
{component package COM.CURL.CDK.SQLITE,
location = "SQLITE/load.pcurl"
}
and

{component package COM.CURL.GUI.STYLED-CONTROLS,
location = "skinned-controls/load.pcurl"
}
so what I need to decalre as my imports in my start.dcurl are
{import * from COM.CURL.GUI.STYLED-CONTROLS}
{import * from COM.CURL.CDK.SQLITE}
Now a click on F5 to run my project and all is well.

Now to open Mike Gordon's Style Designer (itself a DCURL desktop app) and away I go ...

You might also want to look over the page at Curl on style sheets - if you click the button up right to "view as PDF" ypu can also save it as a PDF if that is your preference for handy docs.

Of course, docs are always online at developers.curl.com although my preference is to use bookmarks in the the Curl Documentation Viewer that comes with the IDE (and is itself a DCURL desktop application - and so can be opened more than once on your desktop.)