Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job решил покорять новые горизонты. Наткнулся несколько дней назад на вводную статью о wxRuby и сегодня решил попробовать. Оказывается это не так страшно.
Что понравилось:
- Под Windows ставится просто. После инсталляции не требует никаких настроек. Кодишь, запускаешь – работает.
- Документация, как всегда у wxWidgets, позволяет решить все вопросы.
- Синтаксис… на вид – вменяемо (учитывая что для меня это новый язык программирования, минимальное приложение получилось создать минут за 15).
- Есть бесплатные средства разработки.
Что не понравилось:
- Бесплатные средства разработки немного…. унылые. Скорее напоминают просто текстовый редактор с подсветкой синтаксиса и возможностью запуска скриптов.
- Без интеллисенса тяжело 🙂
- Хочу документацию в CHM, а есть только в HTML что не очень удобно

И вот… минимальное приложение. Как оно получилось:
# -*- encoding: utf-8 -*-
require 'wx'
class HelloFrame < Wx::Frame
def initialize
super(nil, :title => 'Hello World!')
panel = Wx::Panel.new(self)
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
panel.set_sizer(sizer)
button = Wx::Button.new(panel, :label => 'Press me')
text = Wx::TextCtrl.new(panel, :value => 'Sample', :style => Wx::TE_MULTILINE)
sizer.add(button, 0, Wx::EXPAND | Wx::ALL, 5)
sizer.add(text, 1, Wx::EXPAND | Wx::LEFT | Wx::RIGHT | Wx::BOTTOM, 5)
evt_button(button.get_id, :on_button_click)
end
def on_button_click
Wx::MessageDialog.new(self, "Hello world!", "Test", Wx::OK).show_modal
end
end
class HelloApp < Wx::App
def on_init
frame = HelloFrame.new
frame.centre
frame.show
end
end
app = HelloApp.new
app.main_loop()
Немного странно называются классы, без префикса “wx”, зато с неймспейсом. Немного странным кажется способ привязки обработчиков событий. Очень понравилась возможность указывать значения только необходимых параметров. По сравнению с wxJavaScript мне wxRuby кажется более приятным т.к. все работает без дополнительной настройки. Сравнения по скорости работы пока не проводил. Есть поддержка wxAUI, wxGCDC/GdiPlus, Document/View, GLCanvas, что очень приятно.
Вместе с wxRuby поставляется довольно большое количество примеров, которые могут помочь разобраться как в синтаксисе так и в особенностях использования API.
4 Comments
Begemot
Почему руби, почему не питон? так просто что попалось, или все-таки есть причины?
Евгений aka SmileGobo
А не подскажите где про wxJavaScript почитать?
T-Rex
http://www.wxjavascript.net/
Больше так особо ресурсов не видел по нему специализированных. Вобще довольно интересная штука.
T-Rex
Просто решил попробовать что-то новое. А тут как раз на днях прочитал о wxRuby, вот, так сказать, решил сделать тест-драйв. 🙂