Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
seat_box = Gtk::VBox.new seat_box.add(@coach).add(@business).add(@first) top_box = Gtk::HBox.new top_box.add(flight_box).add(seat_box) main_box = Gtk::VBox.new main_box.add(top_box).add(purchase).add(@result) add(main_box) show_all end def cmd_purchase text = @city if @first.active? text += ": first class" elsif @business.active? text += ": business class" elsif @coach.active? text += ": coach" end text += ", round trip " if @round_trip.active? @result.text = text endendGtk.initTicketWindow.newGtk.main
Рис. 12.6. Различные виджеты GTK
В этом приложении, как и в предыдущих примерах, создается главное окно с обработчиком события. Затем формируется список с двумя колонками, дизайн которого следует паттерну Модель-Вид-Контроллер (Model-View-Controller — MVC); класс
Gtk::ListStoreStringДалее создается виджет
Gtk::TReeView.Gtk::treeViewColumnGtk::CellRendererTextGtk::ListStoreGtk::CellRendererTextGtk::CellRendererPixbufGtk::CellRendererToggle"changed"@cityЗатем создается простой флажок (
Gtk::CheckButtonGtk::Buttoncmd_purchase@resultТри переключателя создаются как члены одной группы, то есть в любой момент может быть выбран лишь один из них. Когда пользователь щелкает по любому переключателю, равнее выбранный сбрасывается. Первым параметром конструктору переключателя передается первый переключатель из той же группы. Поэтому у конструктора первого переключателя в группе этого параметра нет, а остальным передается ссылка на первый переключатель.
Виджеты нужно организовать на экране так, чтобы пользователю было удобно. Мы воспользовались комбинацией контейнеров
Gtk::НВохGtk::VBoxМетод
cmd_purchaseactive?true@resultВо многих приложениях интерфейс содержит меню. В следующем примере показано, как можно организовать меню в Ruby/GTK2. Заодно демонстрируется применение всплывающих подсказок — мелкая деталь, способная украсить любую программу.
В листинге 12.8 создается главное окно с меню, содержащим пункт
FileFileExitFileExit$KCODE = "U"require "gtk2"class MenuWindow < Gtk::Window def initialize super("Ruby/GTK2 Menu Sample") signal_connect("destroy") { Gtk.main_quit } file_exit_item = Gtk::MenuItem.new("_Exit") file_exit_item.signal_connect("activate") { Gtk.main_quit } file_menu = Gtk::Menu.new file_menu.add(file_exit_item) file_menu_item = Gtk::MenuItem.new("_File") file_menu_item.submenu = file_menu menubar = Gtk::MenuBar.new menubar.append(file_menu_item) menubar.append(Gtk::MenuItem.new("_Nothing")) menubar.append(Gtk::MenuItem.new("_Useless")) tooltips = Gtk::Tooltips.new tooltips.set_tip(file_exit_item, "Exit the app", "")
