[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