[MacRuby-devel] Close Current window and Pass Data

Mario Steele mario at ruby-im.net
Sun Feb 6 22:21:34 PST 2011


Hello Buddy,

On Sun, Feb 6, 2011 at 10:23 PM, Buddy Lindsey, Jr. <percent20 at gmail.com>wrote:

> Okay, i think that makes sense. I guess need to figure out some way to get
> the reference to the current window that is open, so I can call the close
> method on it.
>
> Is that a correct approach?
>
> Also any ideas on passing data from one window to the other?
>

Passing data between windows, is usually a mute point, as usually you
wouldn't associate the data with the window, but with an class instance.
 The usual method I go about in setting up data storage, is to create a
class, be it specific, or just a simple Struct class, that will store the
data that I want referenced throughout the app, then create an instance
stored as a constant, which would make it available no matter what class
your dealing with.  An example of this would be:

# ProgInfo.rb
require 'struct'

ProgInfo = Struct.new(:info_a, :info_b, :info_c)

GlobalProgInfo = ProgInfo.new

# WindowControllerA.rb

class MyWindowControllerA
  def some_event()
    GlobalProgInfo[:info_a] = "This is a dummy string"
    GlobalProgInfo[:info_b] = 32
    GlobalProgInfo[:info_c] = "Yet another dummy string"
    -- Open Window code to open up your next xib instance.
    do_window_b_open()
    self.close()
  end
end

# WindowControllerB.rb

class MyWindowControllerB
  def some_other_event()
    some_text_edit.setStringValue(GlobalProgInfo[:info_a])
  end
end

This of course is some mock code, but it gives you the general idea of what
you should follow, to make it work.  And I am sure, this is but one of many
different ways in which you can pass data between instances.

hth,

Mario


> ---
> Buddy Lindsey
> http://www.buddylindsey.com
> http://www.twitter.com/buddylindsey
>
>
> On Sun, Feb 6, 2011 at 8:49 PM, Charles Steinman <acharlieblue at gmail.com>wrote:
>
>> On Sun, Feb 6, 2011 at 3:01 PM, Buddy Lindsey, Jr. <percent20 at gmail.com>
>> wrote:
>> > I have had some good success in getting large chunks of my app done, but
>> > there are a few things that I can't seem to figure out, or at least get
>> to
>> > working.
>> > I was able to figure out how to open up a new window that was based on a
>> xib
>> > file, but what I really want to do is open the new window and close the
>> > current one which opened the new one.
>> > Also in the process of opening the new window I want to pass some data,
>> at
>> > this point a single string. What is the best way to go about this? My
>> lack
>> > of experience with cocoa, and by extension objective-c, is really
>> killing me
>> > on figuring this out. Unfortuneatly there isn't just a simple close()
>> method
>> > to call.
>>
>> There actually is a simple close method, both on NSWindow[1] and
>> NSWindowController[2]. Unless I'm misunderstanding, you should be able
>> to proceed pretty much as you described.
>>
>> — Chuck
>>
>> [1]:
>> http://developer.apple.com/library/mac/documentation/cocoa/reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWindow/close
>> [2]:
>> http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindowController_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWindowController/close
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
>


-- 
Mario Steele
Lieutenant Commander 3
XO - Geo 99
XO - STO IFT Fleet
http://www.trekfederation.com
http://geo99.ruby-im.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20110207/5551bb06/attachment-0001.html>


More information about the MacRuby-devel mailing list