Skip to content Skip to footer

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

  • Begemot
    Posted September 3, 2009 at 20:04

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

  • Евгений aka SmileGobo
    Posted September 4, 2009 at 22:31

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

    • T-Rex
      Posted September 5, 2009 at 20:26

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

  • T-Rex
    Posted September 5, 2009 at 21:03

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

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

Leave a comment

0.0/5