[MacRuby-devel] Problem with a window controller
david kramf
dakr.012 at gmail.com
Sun Dec 2 05:30:19 PST 2012
Thank you very much Andy and Jim
I followed your remarks , played with the code and I am still surprised. It turns out that awakeFromNib is called before applicationDidFinishLaunching so there MyController is already initialized and has the correct window as the his instance variable. NSWindow has both a delegate protocol and a Controller class and so I called setDelegate and setController . Everything seems OK but the methods willLoad and didLoad are not called although clearly my class is both the delegate and the controller of my window . So I am still left asking what am I doing wrong (??).
Are there MacRuby code samples I can use. I read Lim,Chueng and McAnally book. I wonder where can I find more samples. I am also not sure I am doing everything correct with the IB . My blue box that represents MyController list "showWindow: " as a "Received Action" , but I could not connect it to any element of window draw in the XIB file.
David
class AppDelegate
attr_accessor :window
def applicationDidFinishLaunching(a_notification)
puts " Insert code here to initialize your application"
wCtrl = @window.delegate
puts "no delegate" if wCtrl == nil
win = wCtrl.window
puts "win is nil" if win == nil
puts "title of window is #{win.title}"
ctrl = @window.windowController
puts "no controller" if ctrl == nil
puts "class of delegate is #{wCtrl.class}"
puts "class of controller is #{ctrl.class}"
puts "both are equal " if wCtrl == ctrl
x = ctrl.showWindow
puts "x class is #{x.class} " unless x == nil
#puts "window nil " if win == nil
#wCtrl.close
end
end
class MyController < NSWindowController
attr_accessor :window
def initialize
puts "in initialize"
initWithWindowNibName("tow")
#puts "after initialization window is #{@window.title}"
end
def routine
puts "in routine"
end
#def initWithWindow(window)
# puts "in initWithWindow"
# super(@window)
#end
def awakeFromNib
@window.setDelegate(self)
@window.setWindowController(self)
puts " at end of awake from nib. title is #{@window.title}"
end
def windowWillLoad
puts "window will be soon loaded"
end
def windowDidLoad
puts "window loaded"
end
def windowTitleForDocumentDisplayName(displayName)
"Hello World"
end
def showWindow
puts "in showWindow"
super(self)
end
def close
puts "in close window is #{@window.title}"
super
end
end
at end of awake from nib. title is two
Insert code here to initialize your application
title of window is two
class of delegate is MyController
class of controller is MyController
both are equal
in showWindow
x class is MyController
On Dec 1, 2012, at 3:00 AM, Andy Park wrote:
> Without being able to verify anything for accuracy at the moment, it looks like your window's delegate is not set to the controller at the time the events are occurring.
>
> Check if you need to set this - try tracing the window's delegate at different points of the controller's lifecycle.
>
> On 30 Nov 2012, at 00:50, david kramf <dakr.012 at gmail.com> wrote:
>
>>
>> Hi,
>> In the copied below code only the awakeFromNib is executed . Can someone explain me what do I do wrong ? Window is displayed and I expected all other methods to be called.
>> Thanks, David
>>
>>
>> class MyController < NSWindowController
>> attr_accessor :window
>>
>> def awakeFromNib
>> @window.delegate = self
>> puts " at end of awake from nib. title is #{@window.title}"
>> end
>>
>> def windowWillLoad
>> puts "window will be soon loaded"
>> end
>>
>> def windowDidLoad
>> puts "window loaded"
>> end
>> def windowTitleForDocumentDisplayName(displayName)
>> "Hello World"
>> end
>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/macruby-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20121202/8522fb27/attachment-0001.html>
More information about the MacRuby-devel
mailing list