wxRuby. Оно даже работает!

Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job решил покорять новые горизонты. Наткнулся несколько дней назад на вводную статью о wxRuby и сегодня решил попробовать. Оказывается это не так страшно.

Что понравилось:

  • Под Windows ставится просто. После инсталляции не требует никаких настроек. Кодишь, запускаешь – работает.
  • Документация, как всегда у wxWidgets, позволяет решить все вопросы.
  • Синтаксис… на вид – вменяемо (учитывая что для меня это новый язык программирования, минимальное приложение получилось создать минут за 15).
  • Есть бесплатные средства разработки.

Что не понравилось:

  • Бесплатные средства разработки немного…. унылые. Скорее напоминают просто текстовый редактор с подсветкой синтаксиса и возможностью запуска скриптов.
  • Без интеллисенса тяжело :)
  • Хочу документацию в CHM, а есть только в HTML что не очень удобно

FreeRIDE wxRuby IDE
И вот… минимальное приложение. Как оно получилось:

# -*- 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

  1. Begemot   •  

    Почему руби, почему не питон? так просто что попалось, или все-таки есть причины?

  2. Евгений aka SmileGobo   •  

    А не подскажите где про wxJavaScript почитать?

  3. T-Rex   •  

    http://www.wxjavascript.net/
    Больше так особо ресурсов не видел по нему специализированных. Вобще довольно интересная штука.

  4. T-Rex   •  

    Почему руби, почему не питон? так просто что попалось, или все-таки есть причины?

    Просто решил попробовать что-то новое. А тут как раз на днях прочитал о wxRuby, вот, так сказать, решил сделать тест-драйв. :)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Please leave these two fields as-is: