Возможно ли создание интерактивного GUI с MacRuby Macirb? - PullRequest
0 голосов
/ 30 сентября 2011

Я бы хотел жить с прототипами GUI с Macruby.Например, создать окно, разместить в нем несколько видов и т. Д. Возможно ли это?

Ответы [ 3 ]

1 голос
/ 10 марта 2012

Да! Я сам все понял, поэтому решил поделиться (хотя это старый вопрос). Я предполагаю, что у вас установлен 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

Вы должны увидеть красивое окно с какао, всплывающее с надписью «Hello». Теперь самое интересное. В HotConsole.app теперь вы можете набрать:

win << button                              
win << web_view( :layout => {:expand => [:width, :height]},
                               :url => "http://macruby.org")

HotConsole для меня довольно проблематичен, но я использую еще не выпущенную версию MacRuby для сборки / запуска, поэтому я не знаю, имеет ли это значение.

1 голос
/ 30 сентября 2011

Да, это так.

Ознакомьтесь с документацией HotCocoa: http://www.macruby.org/hotcocoa.html

0 голосов
/ 05 октября 2011

Вы можете, однако, так как весь код выполняется в основном потоке, он блокирует цикл выполнения и, таким образом, представления не будут вести себя так, как должны.

Я работал над другим проектом, который позволяет вам это делать, и единственное, что важно, это отметить, что в этом случае весь пользовательский код запускается в отдельных потоках, поэтому вы должны отправить сообщение на основной поток при взаимодействии с другими представлениями: https://github.com/alloy/interactive-macruby

...