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)
109 @actions.each do |action|
116 def create_element(window, parent, desc)
117 entry = Entry.new(parent)
118 window.action_list_entries[desc.opts[:name]] << entry
126 def create_element(window, parent, desc)
127 Qt::ToolBar.new(desc.opts[:text].to_s, parent).tap do |tb|
128 tb.object_name = desc.opts[:name].to_s
129 parent.add_tool_bar(Qt::TopToolBarArea, tb)
137 def create_element(window, parent, desc)
138 factory = if desc.opts[:type] == :horizontal
143 factory.new.tap do |layout|
144 layout.margin = desc.opts[:margin] if desc.opts[:margin]
145 parent.add_layout(layout)
153 def create_element(window, parent, desc)
161 def create_element(window, parent, desc)
162 Qt::Label.new(desc.opts[:text].to_s, window).tap do |label|
163 setup_widget(label, window, parent, desc)
165 window.buddies[label] = desc.opts[:buddy]
174 def create_element(window, parent, desc)
175 KDE::TabWidget.new(window).tap do |widget|
176 setup_widget(widget, window, parent, desc)
177 widget.owner = window.owner
185 def create_element(window, parent, desc)
186 factory(desc).new(window).tap do |widget|
187 setup_widget(widget, window, parent, desc)
200 def initialize(parent, text)
205 def add_widget(widget)
206 @parent.add_tab(widget, @text)
210 def build(window, parent, desc)
211 desc.children.each do |child|
212 b = builder(child.name).new
213 b.build(parent, Helper.new(parent, desc.opts[:text]), child)
218 class UrlRequester < Widget
224 class LineEdit < Widget
230 class ComboBox < Widget
242 class CheckBox < Widget
244 Factory.new do |parent|
245 Qt::CheckBox.new(parent).tap do |check|
246 check.text = desc.opts[:text].to_s
247 check.checked = desc.opts[:checked]
253 class Button < Widget
255 Factory.new do |parent|
256 KDE::PushButton.new(KDE::Icon.from_theme(desc.opts[:icon]),
257 desc.opts[:text], parent)