Categories: wxWidgets

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

Вдохновленнный читаемой нынче книгой 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.

T-Rex

View Comments

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

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

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

Share
Published by
T-Rex

Recent Posts

Разработка кроссплатформенных модульных приложений на C++ с библиотекой wxWidgets

Введение Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень…

11 years ago

wxWidgets App With Plugins (Windows/Linux/Mac) – Sample Source Code

I can see that there is still a lot of topics at wxWidgets forums related…

11 years ago

wxToolBox is Now Open-Source!

I've just published the source code of wxToolBox component and a couple of sample apps at…

11 years ago

Microsoft Kinect Helper Library and Sample for wxWidgets

Microsoft released their Kinect SDK several days ago. So, for those wxWidgets developers who are…

13 years ago

wxJSON 1.1.0 Released

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to…

15 years ago

Дааа! Ribbon Bar для wxWidgets не за горами!

Надо же,в wxBlog такое рассказывают. Оказывается Google Summer of Code для wxWidgets принес много полезного…

15 years ago