是否可以通过MacRuby的macirb进行交互式GUI创建?

时间:2011-09-30 09:02:48

标签: macruby

我想与Macruby一起使用原型GUI。就像创建一个窗口,在其中放置一些视图等。这可能吗?

3 个答案:

答案 0 :(得分:1)

是的。

查看HotCocoa文档:http://www.macruby.org/hotcocoa.html

答案 1 :(得分:1)

是的!我只是想出了自己,所以我想我会分享(尽管这是一个老问题)。我假设您安装了MacRuby(我使用的是0.11)。

安装HotConsole。 HotConsole是一个类似IRB的东西,运行MacRuby代码。好处是它是多线程的,这意味着HotCocoa应用程序不会阻止控制台。只安装:

% git clone git@github.com:altirah/hotconsole.git hotconsole
% cd hotconsole
% macrake

然后,您可以将HotConsole.app拖到/ Applications文件夹中。

在HotConsole中,您可以将HotCocoa窗口存储在变量中,然后使用它。例如,在HotConsole.app中(确保使用alt-Enter转到新行,否则您将运行到目前为止输入的内容):

win = window frame: [100, 100, 500, 500], title: 'Hello' do |w|
  w << label(text: 'Hello', layout: {start: false})
end

你应该会看到一个漂亮的Cocoa窗口弹出一个标有“Hello”的标签。现在是有趣的部分。在HotConsole.app中,您现在可以键入:

win << button                              
win << web_view( :layout => {:expand => [:width, :height]},
                               :url => "http://macruby.org")
对我来说,HotConsole非常糟糕,但是我正在使用一个尚未发布的MacRuby版本来构建/运行它,所以我不知道这是否有所作为。

答案 2 :(得分:0)

但是,您可以,因为所有代码都在主线程中运行,它会阻止runloop,因此视图将不会按预期运行。

我一直在研究另一个允许你这样做的项目,唯一重要的是要注意,在这种情况下,所有用户代码都在不同的线程中运行,所以你应该发送一条消息与其他视图交互时的主要线程:https://github.com/alloy/interactive-macruby