Re: LineForm's Filters Table
Re: LineForm's Filters Table
- Subject: Re: LineForm's Filters Table
- From: Will Thimbleby <email@hidden>
- Date: Mon, 22 Jan 2007 10:43:17 +0000
Douglas,
You are completely right about a NSOutlineView fitting the data. The
reason I did not use an outline view is mostly because you can't
support different row sizes easily. Although in the end I did not use
rows of different sizes as much as I thought I might. So having said
that, if I was starting from scratch I would probably take your
suggestion. It would save a lot of coding.
--will
On 21 Jan 2007, at 21:15, douglas a. welton wrote:
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:
This email sent to email@hidden