Вход/Регистрация
Программирование на языке Ruby
вернуться

Фултон Хэл

Шрифт:

end

accept_btn = FXButton.new(layout, "&Accept", nil,

self, 0, options)

accept_btn.connect(SEL_COMMAND) do

app.stopModal(self, 1)

hide

end

 end

 def text

@text_field.text

 end

end

class DialogTestWindow < FXMainWindow

 def initialize(app)

# Сначала инициализировать базовый класс.

super(app, "Dialog Test", nil, nil,

DECOR_ALL, 0, 0, 400, 200)

layout_options = LAYOUT_SIDE_TOP | FRAME_NONE |

LAYOUT_FILL_X | LAYOUT_FILL_Y |

PACK_UNIFORM_WIDTH

layout = FXHorizontalFrame.new(self, layout_options)

button_options = FRAME_RAISED | FRAME_THICK |

LAYOUT_CENTER_X | LAYOUT_CENTER_Y

nonmodal_btn = FXButton.new(layout, "&Non-Modal Dialog...", nil,

nil, 0, button_options)

nonmodal_btn.connect(SEL_COMMAND) do

@non_modal_dialоg.show(PLACEMENT_OWNER)

end

modal_btn = FXButton.new(layout, "&Modal Dialog...", nil,

nil, 0, button_options)

modal_btn.connect(SEL_COMMAND) do

dialog = ModalDialogBox.new(self)

if dialog.execute(PLACEMENT_OWNER) == 1

puts dialog.text

end

end

getApp.addTimeout(1000, method(:onTimer))

@non_modal_dialog = NonModalDialogBox.new(self)

 end

 def onTimer(sender, sel, ptr)

text = @non_modal_dialog.text

unless text == @previous

@previous = text

puts @previous

end

getApp.addTimeout(1000, method(:onTimer))

 end

 def create

super

show(PLACEMENT_SСREEN)

 end

end

application = FXApp.new

DialogTestWindow.new(application)

application.create

application.run

Перед началом длинного вычисления в FXRuby следует заменить текущий курсор курсором ожидания, а по завершении восстановить исходный. В классе

FXApp
есть два удобных метода, позволяющих изменить курсор без явного запоминания предыдущего:
beginWaitCursor
и
endWaitCursor
. Если метод
beginWaitCursor
вызывается в блоке, то по выходе из блока будет автоматически вызван метод
endWaitCursor
:

getApp.beginWaitCursor do

# Выполнить длительную операцию...

end

12.3.6. Дополнительные замечания

Библиотека FOX располагает еще многими виджетами и возможностями, например: деревья, стыкуемые панели инструментов, всплывающие подсказки, строки состояния и страницы с вкладками. К числу более сложных средств следует отнести перетаскивание между приложениями и получатели данных, упрощающие связывание данных с виджетами. В библиотеке имеются также неграфические средства для поддержки кросс-платформенного программирования, в том числе класс

FXRegistry
.

Для связи между приложением и его окружением можно использовать сигналы, а также различные каналы ввода и вывода, которые транслируются в сообщения, посылаемые объектам FOX.

Имеются виджеты, поддерживающие наиболее распространенные графические форматы, а также API для работы с библиотекой OpenGL. Это не просто дань вежливости трехмерной графике: на базе библиотеки FOX C++ было реализовано немало инженерных приложений.

Учитывая все вышесказанное, библиотеку FXRuby можно считать мощным и гибким инструментом. В последние несколько лет она приобрела популярность в сообществе пользователей Ruby; ожидается, что число поклонников будет расти и дальше. Возможности библиотеки быстро изменяются и расширяются, самую актуальную информацию о привязках к Ruby можно найти на сайте http://fxruby.org.

  • Читать дальше
  • 1
  • ...
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: