Hi,
1)
NSOutlineViewDelegate Protocol provides you its method.
Please refer to:
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOutlineViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSOutlineViewDelegate
2)
If you use NSButton, its size might change like as:
frame = button.frame
frame.size.width = 20
button.setFrame(frame)
If make the badge too, it might easily using the
https://github.com/Perspx/PXSourceList :)
Thanks,
2011/12/13 François Boone <[email protected]>:
> Hi,
>
> Thank-you very much Watson for your SourceListViewBased example.
> As usual, I have few questions:
> 1) Where did you find "isGroupItem:item" for OutlineView? I search in
> NSOutlineView Class Reference but I didn't find it!
> 2) I start from your example and I add a column to show a badge for each
> child. It's work, but there is still a small problem I do not understand:
> Even if I set the size with interface inspector, the inline button is always
> the same width of the width of the column when I run the program.
> For instance, the column's width is 70 and I set the button's width to 25.
>
> Thanks for reply
> François
>
> Some explanation and code:
>
> I use the following method found on internet:
> ----
> "First subclass NSTableCellView and add an IBOutlet for an NSButton and a
> @synthesize/@property statement for it. Then open the NSTableCellView which
> should have a badge in Interface Builder. Set it's class to your newly
> created subclass and add a button to it. Set the button style to "inline" and
> it's type to "switch".
>
> Now select the TableCellView againa and connect the NSButton IBOutlet to your
> added button. That's it. You can now call e.g. [cellView button]
> setTitle@"123"]] to set the rows badge label to 123 or any arbitrary string."
> ----
>
> So I append to your AppDelegate file the following new class, translated from
> the previous explanation in ruby:
> class MaCellule < NSTableCellView
> attr_accessor :iden
> def initialize
> @iden = NSButton.new
> end
> end
>
> and I change one of your method as follow:
> def outlineView(outlineView,
> viewForTableColumn:tableColumn,
> item:item)
> if (tableColumn.nil?|(tableColumn == outlineView.outlineTableColumn))
> if item[:type] == "group"
> # group
> view = outlineView.makeViewWithIdentifier("HeaderCell",
> owner:self)
> #puts item['name']
> view.textField.stringValue = item['name']
> else
> # child
> # puts item["name"]
> view = outlineView.makeViewWithIdentifier("DataCell",
> owner:self)
> view.imageView.image = item['icon']
> view.textField.stringValue = item['name']
> end
> return view
> else
> if item[:group] == "group"
> else
> #puts item["name"] + " 2 " + item["badgeValue"].to_s
> view = outlineView.makeViewWithIdentifier("ButtonCell",
> owner:self)
> #puts view.iden.class
> if item["badgeValue"].empty?
> view.iden.setTransparent(true)
> else
> view.iden.setTitle(item["badgeValue"])
> end
> end
> end
> end
>
>
>
>
> Le 2011-12-10 à 02:53, Watson a écrit :
>
>> Hi,
>>
>> If you want to display images in NSOutlineView, I think you would use
>> the NSOutlineView as View-Based.
>> You might use the outlineView:viewForTableColumn:item instead of
>> outlineView:objectValueForTableColumn:byItem.
>>
>> Look at my sample, you would think it isn't difficult :)
>> -
>> https://github.com/Watson1978/MacRuby-Samples/tree/master/SourceListViewBased
>>
>>
>> 2011/12/9 François Boone <[email protected]>:
>>> Hi,
>>>
>>> With help of Matt and Watson, I have made a tree using Outline View object
>>> and it works fine.
>>> Now I would like to go one step further.
>>>
>>> I would like to use the Source List object available in Object Library.
>>> This Source List looks like Outline View with TableColumn Object. In this
>>> Table Object there is two Table Cell objects, the first one for the header
>>> and the second one, divided in two objects, for an image and a text.
>>>
>>> My question is: how to build the data to fill the Source List object: I try
>>> something like this:
>>> @data = [ [ {:group => 'Title'}], [:cell => {:image => image1, :name =>
>>> 'Test'} ] ] where image1 is a NSImage object.
>>> But this doesn't work.
>>>
>>> I don't now why it doesn't work:
>>> 1) a bad structure for @data
>>> 2) a bad binding in xib file
>>> 3) a bad definition of outlineView (I kept the same definition than the
>>> previous Outline View project)
>>>
>>> Thanks for reply
>>> François
>>>
>>>
>>>
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> [email protected]
>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>> _______________________________________________
>> MacRuby-devel mailing list
>> [email protected]
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>
> _______________________________________________
> MacRuby-devel mailing list
> [email protected]
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel