Catalyst Library [message #42314] |
Wed, 02 February 2005 16:55  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
Folks,
A number of people have written me asking about the Catalyst Library
that I keep going on about on this newsgroup. It's been damn
embarrassing not having anything to show you. :-(
So this afternoon I put together a short blurb about the
Library and have made available an IDL save file of
a Catalyst Library Sample Application. This is actually
the test program I wrote to test Library features, but
it will give you some idea of what you can do with the
Library itself.
The Library will require IDL 6.1 to run, or you can download
the freely available IDL Virtual Machine from the RSI web page
and run it on that. The program is about 1 MB in size, so
those of you on government computers, go get some coffee while
it downloads. You will need a little caffeine to believe what
you are seeing, especially with the annotation tab functionality. :-)
Everything you see in the application window is an object.
In fact, *everything* in the Catalyst Library is an object.
The application program itself is an object. On the left is
an assortment of widget objects. These should look familiar to
you. They work (more or less) like IDL widgets (or maybe how
IDL widgets would work if we were to write them now). Notice
the special StatusBar widget object at the bottom of the
application.
In the middle of the application are six tab windows. Each
shows a different aspect of the library. Some are not very
interesting (Histogram) because they were written early in
Library development. Others are more interesting (Medical Image
and Annotation) because they have been written more recently
and take advantage of new features of the Library.
On the right of the application are control panels, buttons, etc.
that allow user interaction of various kinds. Most of the
graphics windows also allow some kind of user interaction.
I prefer not to tell you about that and see if you can figure
it out for yourself. It is suppose to be (cross my fingers)
intuitive, after all.
The library has been tested on Windows XP systems, for the
most part. I'm *very* curious to know if it will run elsewhere.
It's suppose to, but... well, you pay attention to the newsgroup,
don't you. :-)
We are working on a User's Guide and when that is finished,
we will have to make our minds up what we are going to do
with this software. In the meantime, you can look at it, make
suggestions, etc. But unless you make some special arrangements
with me, you can't get your hands on it. :-)
As you know, I always appreciate you folks serving as guinea
pigs for my experiments. :-)
Catalyst Library Blurb:
http://www.dfanning.com/tips/catlib.html
Sample Application:
http://www.dfanning.com/programs/catalyst.sav
IDL VM:
http://www.rsinc.com/download/chooseplatform.asp?urlProductC ode=13
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
|
|
|
Re: Catalyst Library [message #42699 is a reply to message #42314] |
Tue, 22 February 2005 11:50   |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
David Fanning writes:
> So this afternoon I put together a short blurb about the
> Library and have made available an IDL save file of
> a Catalyst Library Sample Application. This is actually
> the test program I wrote to test Library features, but
> it will give you some idea of what you can do with the
> Library itself.
Thanks, everyone, for your feedback. It has been invaluable.
I've put out a new version today that addresses a number of
problems that have arisen. Some my fault, some just, uh,
differences in the way things behave on different machines.
Several people have asked for a more natural way of
handling the properties of objects on the Annotation tab.
These have been modified extensively to meet user expectations.
There are still a few things to do, and I appreciate hearing
from everyone who has offered comments and suggestions.
http://www.dfanning.com//tips/catlib.html
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
|
|
|
Re: Catalyst Library [message #63798 is a reply to message #42314] |
Wed, 19 November 2008 14:45   |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
Giorgio writes:
> I am trying to implement a 1D plotting object to the catalyst
> library. The idea is to have a main object that sets up the
> coordinates for the plotting (x and y-ranges, fonts, background color
> and axis colors) and then different objects with the data that will do
> the plotting it self. Each one can have its own definition of a
> symbol, color, line, symbol size, line thickness and if the symbol is
> full or not. I know that it is ambitious and we'll see up to where I
> get since I am not doing this in a regular basis.
I have had a student working on this several hours a
week for the past couple of weeks. She just sent me
some code, but I haven't had time to review it yet.
But perhaps we can compare notes soon.
> Up to now, I've just
> defined the main class based on the catdataatom class. In doing this,
> I was surprised by the following: the new classes can only be
> inherited from classes with catatom as a superclass. I wonder myself
> why is so and which was the spirit behind this?
One of the problems with object programming is
cleaning up your objects properly. It is easy (too easy!)
to leak memory. Because we were using the notion of
a Catalyst program as an object container we thought to
take advantage of this for proper object cleanup. But,
it was not this simple. When you destroy a container, all
the objects in that container are destroyed. But sometimes
data objects were in *several* containers. If we destroy
a graphics window object that contains an image object,
we don't necessarily want that image object to be destroyed;
it might still be in use by some other part of the program.
So we decided we would reference count. When you add a data
object to a container, the container is added as a "parent"
the the data object's parent list. When you take an object
out of the container (or you destroy the container), we remove
that parent from the list. It is not until ALL the parents
are removed that the image object is actually destroyed.
This reference counting occurs at the CatAtom level.
Internal documentation occurs at the CatAtom level.
Message passing occurs at the CatAtom level. As well
as several other things that I am probably forgetting.
But, the bottom line is that every object has to inherit
the CatAtom object because much of what it means to be
a "catalyst" object is built into that single object.
On occasion, even I have thought maybe the restriction
is too strict. But I've always found (so far) a way to
accommodate it.
Cheers,
David
P.S. Thanks for the question. I have in mind to have
a separate section, eventually, on my web page with answers
to these kinds of questions. A kind of documentation that writes
itself as the need arises. :-)
--
David Fanning, Ph.D.
Coyote's Guide to IDL Programming (www.dfanning.com)
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|
Re: Catalyst Library [message #63800 is a reply to message #42314] |
Wed, 19 November 2008 13:09   |
Giorgio
Messages: 31 Registered: March 2008
|
Member |
|
|
Hi everyone,
I am trying to implement a 1D plotting object to the catalyst
library. The idea is to have a main object that sets up the
coordinates for the plotting (x and y-ranges, fonts, background color
and axis colors) and then different objects with the data that will do
the plotting it self. Each one can have its own definition of a
symbol, color, line, symbol size, line thickness and if the symbol is
full or not. I know that it is ambitious and we'll see up to where I
get since I am not doing this in a regular basis. Up to now, I've just
defined the main class based on the catdataatom class. In doing this,
I was surprised by the following: the new classes can only be
inherited from classes with catatom as a superclass. I wonder myself
why is so and which was the spirit behind this?
Thanks and best wishes,
Giorgio
|
|
|
Re: Catalyst Library [message #63805 is a reply to message #42314] |
Wed, 19 November 2008 09:59   |
Vince Hradil
Messages: 574 Registered: December 1999
|
Senior Member |
|
|
On Nov 19, 11:56 am, David Fanning <n...@dfanning.com> wrote:
> Folks,
>
> I still haven't heard from Vince about the details of his woes
> with the Catalyst Library, but since we are talking about clear
> instructions this morning, I thought I might pass along this
> note that I got last night. Here, the clear instructions are
> NO instructions!
>
> I thought that I would just write a note to say how much I
> appreciate you making the Catalyst library open-source!
>
> I have been an IDL programmer since about 1993 (version 3.something,
> I think!). I use IDL mainly for what it is good at, namely rapid
> development of scientific data analyses. For the past 10 years
> or so, I have been mainly using it as a glorified scripting
> language, although I did write a very large application a
> number of years ago.
>
> I have just had the need to create a fairly large new GUI
> application and I thought that, with the benefit of knowledge
> of other application development in Java, I would try to create
> something coded to 2008 standards. Just by chance, I logged
> onto your site last week and I haven't looked back. The whole
> user interface - some 80 active elements - went up with great
> ease in a couple of evenings.
>
> This is more in line with my experience with Catalyst, but I'm
> still wondering what it was Vince was running into. I'm interested
> in your experience. It is *almost* ready for its official release. :-)
>
> Cheers,
>
> David
>
> --
> David Fanning, Ph.D.
> Fanning Software Consulting, Inc.
> Coyote's Guide to IDL Programming:http://www.dfanning.com/
> Sepore ma de ni thui. ("Perhaps thou speakest truth.")
Sorry David, things have been pretty hectic. In fact, I wasn't able
to recreate my crashes the other day. Maybe I'll have a little time
to get to this in the next couple of days.
Thanks,
Vince
|
|
|
|