Re: LineForm's Filters Table
Re: LineForm's Filters Table
- Subject: Re: LineForm's Filters Table
- From: "douglas a. welton" <email@hidden>
- Date: Sun, 21 Jan 2007 16:15:42 -0500
Hi Will,
I didn't mean to imply that your implementation wasn't "nice" :^)
Note: I have no inside knowledge about the Soundtrack effects panel
implementation, so much of what follows is pure speculation on my part.
From my point-of-view, the Soundtrack effects panel does a couple of
things that quite naturally fit the data model (filters) to the user
control (NSOutlineView). The panel appears to use an NSOutlineView
to display the filter list and associated attributes. I am assuming
that the OutlineView's datasource is a simpe 2-level tree storing the
filters description - filters names on level 1 and filter attributes
on level 2 - and a place to store values assoicated with each attribute.
This type of implementation is great for 2 reasons:
1) No additional code is needed to manage the visibility of a filter
or it's attributes. If you don't want to see the attributes of a
filter, just click the filter's disclosure triangle and all the
attributes gets hidden - voila! Or, if you need to remove a filter,
then all that's needed is to remove the filter description from the
OutlineView's datasource and reload the NSOutlineView.
2) Instead of having to dynamically create a view to represent each
filter, I suspect that the NSOutlineView subclass uses a cadre of
NSCell subclasses to display the various control elements. When the
NSOutlineView is displayed, the appropriate NSCell is selected for
display using the delegate method -
outlineView:willDisplayCell:forTableColumn:item:
If you use bindings and have an unnaturally keen understanding of
NSTreeController, I think that the hundreds of lines of code in Core
Image Fun House could probably be reduced to a few dozen.
later,
douglas
On Jan 18, 2007, at 9:12 AM, Will Thimbleby wrote:
Lineform works very similarly to the way Core Image Fun House
works. Although I did not use any of the code from there, it is
fairly complex. Lineform uses three main classes dealing with the
interface, FilterView FilterListView and CIController. The
individual FilterViews generate their UI similarly to CIFH based on
the parameters of the filter. FilterListView contains multiple
FilterViews and draws any of the dragging detail. The CIController
handles creating new filters and keeping them arranged. I use
bindings to link the interface components to the filter attributes.
In the end it does a similar job in a similar way to CIFH with the
filters contained in a custom view but I spent a lot of time
refining it.
Unfortunately there are no real shortcuts here, just a lot of
coding. Glad you like it. Though Douglas, I'm not sure why you
think the effects panel in Soundtrack is nicer.
Any other questions let me know.
best
--will
(Author etc. of Lineform http://freeverse.com/lineform/ )
Date: Wed, 3 Jan 2007 16:52:23 +0100 (MET)
From: Thomas Engelmeier <email@hidden>
Subject: Re: LineForm's Filters Table
To: Cocoa Web Mailing List <email@hidden>
Message-ID: <email@hidden>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
On 29.12.2006, at 02:14, douglas a. welton wrote:
I've looked at the code for ParameterView and FilterView and I
think both objects could be made "nicer" with very little coding.
I would also suggest that the best way to present this info is
illustrated by the effects panel in Soundtrack...
It really pays off here to clean up / rewrite FilterView using a
flipped coordinate system..
Regards,
Tom_E
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
40earthlink.net
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden