1 # Copyright (c) 2009 Paolo Capriotti <p.capriotti@gmail.com>
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
10 def self.build(window, gui)
11 Gui.new.build(window, nil, gui)
14 def build(window, parent, desc)
15 element = create_element(window, parent, desc)
16 desc.children.each do |child|
17 b = builder(child.name).new
18 b.build(window, element, child)
23 def setup_widget(widget, parent, layout, desc)
24 layout.add_widget(widget)
26 parent.add_accessor(desc.opts[:name], widget)
28 if desc.opts[:properties]
29 desc.opts[:properties].each do |k, v|
30 widget.send("#{k}=", v)
36 GuiBuilder.const_get(name.to_s.capitalize.camelize)
41 def create_element(window, parent, desc)
49 def create_element(window, parent, desc)
57 def create_element(window, parent, desc)
58 Qt::Menu.new(desc.opts[:text].to_s, window).tap do |menu|
67 def create_element(window, parent, desc)
68 action = window.action_collection[desc.opts[:name]]
70 parent.add_action(action)
79 def create_element(window, parent, desc)
87 def create_element(window, parent, desc)
98 def initialize(parent)
103 def add_action(action)
104 @parent.add_action(action)
112 def create_element(window, parent, desc)
113 entry = Entry.new(parent)
114 window.action_list_entries[desc.opts[:name]] << entry
122 def create_element(window, parent, desc)
123 Qt::ToolBar.new(desc.opts[:text].to_s, parent).tap do |tb|
124 tb.object_name = desc.opts[:name].to_s
125 parent.add_tool_bar(Qt::TopToolBarArea, tb)
133 def create_element(window, parent, desc)
134 factory = if desc.opts[:type] == :horizontal
139 factory.new.tap do |layout|
140 layout.margin = desc.opts[:margin] if desc.opts[:margin]
141 parent.add_layout(layout)
149 def create_element(window, parent, desc)
157 def create_element(window, parent, desc)
158 Qt::Label.new(desc.opts[:text].to_s, window).tap do |label|
159 setup_widget(label, window, parent, desc)
161 window.buddies[label] = desc.opts[:buddy]
170 def create_element(window, parent, desc)
171 KDE::TabWidget.new(window).tap do |widget|
172 setup_widget(widget, window, parent, desc)
173 widget.owner = window.owner
181 def create_element(window, parent, desc)
182 factory(desc).new(window).tap do |widget|
183 setup_widget(widget, window, parent, desc)
196 def initialize(parent, text)
201 def add_widget(widget)
202 @parent.add_tab(widget, @text)
206 def build(window, parent, desc)
207 desc.children.each do |child|
208 b = builder(child.name).new
209 b.build(parent, Helper.new(parent, desc.opts[:text]), child)
214 class UrlRequester < Widget
220 class LineEdit < Widget
226 class ComboBox < Widget
238 class CheckBox < Widget
240 Factory.new do |parent|
241 Qt::CheckBox.new(parent).tap do |check|
242 check.text = desc.opts[:text].to_s
243 check.checked = desc.opts[:checked]
249 class Button < Widget
251 Factory.new do |parent|
252 KDE::PushButton.new(KDE::Icon.from_theme(desc.opts[:icon]),
253 desc.opts[:text], parent)