[MacRuby-devel] Problem with a window controller

J Silver jsilverman2 at gmail.com
Sun Dec 2 12:40:43 PST 2012


Hi David,

Try NSLog instead of puts. Also you can override puts to #NSLog.

I have some production MacRuby code up at 
https://github.com/jsilverMDX/GlobalChat2/tree/master/globalchat%202%20OSX 
that's in the App Store.

Look here for an example of a working MacRuby app that uses IB and Sockets.

Try firing an action on seperate view controller and storing your 
information there. I don't use Window object for much except showing and 
hiding views.

Domo

jsilver

On 02/12/2012 05:30, david kramf wrote:
> 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} "unlessx == 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 
>> <mailto: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 
>>> <mailto:MacRuby-devel at lists.macosforge.org>
>>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org 
>> <mailto: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/be17bb45/attachment-0001.html>


More information about the MacRuby-devel mailing list