25 #ifndef SRC_HEADERS_GX_UI_BUILDER_H_
26 #define SRC_HEADERS_GX_UI_BUILDER_H_
52 :
uiElement(), machine(machine_), id(id_), button(b) {
53 if (!machine.parameter_hasId(
id)) {
56 button->set_active(machine.get_parameter_value<T>(
id));
63 machine.set_parameter_value(
id,
static_cast<float>(button->get_active()));
68 machine.set_parameter_value(
id, button->get_active());
73 button->set_active(v != 0.0);
78 button->set_active(v);
107 static Glib::RefPtr<GxBuilder> create_from_file(
const std::string& filename,
const char* object_id);
108 static Glib::RefPtr<GxBuilder> create_from_file(
const std::string& filename,
const Glib::ustring& object_id);
109 static Glib::RefPtr<GxBuilder> create_from_file(
const std::string& filename,
const Glib::StringArrayHandle& object_ids);
110 static Glib::RefPtr<GxBuilder> create_from_string(
const Glib::ustring& buffer,
const char* object_id);
111 static Glib::RefPtr<GxBuilder> create_from_string(
const Glib::ustring& buffer,
const Glib::ustring& object_id);
112 static Glib::RefPtr<GxBuilder> create_from_string(
const Glib::ustring& buffer,
const Glib::StringArrayHandle& object_ids);
113 GObject* get_cobject(
const Glib::ustring& name);
115 Gtk::Object* get_widget_checked(
const Glib::ustring& name, GType type,
bool take_ref);
117 static inline Glib::RefPtr<GxBuilder> create() {
return Glib::RefPtr<GxBuilder>(
new GxBuilder()); }
119 static Glib::RefPtr<GxBuilder> create_from_file(
122 static Glib::RefPtr<GxBuilder> create_from_file(
125 static Glib::RefPtr<GxBuilder> create_from_string(
128 static Glib::RefPtr<GxBuilder> create_from_string(
133 template <
class T_W
idget>
inline
134 void find_widget(
const Glib::ustring& name, T_Widget*& widget) {
136 widget =
dynamic_cast<T_Widget*
>(this->get_widget_checked(name, T_Widget::get_base_type(),
false));
140 template <
class T_W
idget,
class F>
inline
141 void find_widget_derived(
const Glib::ustring& name, T_Widget*& widget, F f) {
143 typedef typename T_Widget::BaseObjectType cwidget_type;
144 cwidget_type* pCWidget = (cwidget_type*)get_cobject(name);
148 Glib::ObjectBase* pObjectBase = ObjectBase::_get_current_wrapper((GObject*)pCWidget);
150 widget =
dynamic_cast<T_Widget*
>(
Glib::wrap((GtkWidget*)pCWidget) );
152 g_critical(
"GxBuilder::get_widget_derived(): dynamic_cast<> failed. An existing C++ instance, of a different type, seems to exist.");
155 widget = f(pCWidget);
159 bool has_object(
const Glib::ustring& name) {
160 return gtk_builder_get_object(gobj(), name.c_str()) != 0;
163 template <
class T_W
idget>
inline
164 void get_toplevel(
const Glib::ustring& name, T_Widget*& widget) {
166 GType type = T_Widget::get_base_type();
167 widget =
dynamic_cast<T_Widget*
>(this->get_widget_checked(name, type, !g_type_is_a(type, GTK_TYPE_WINDOW)));
169 assert(!widget->get_parent());
172 Gtk::Window *get_first_window();
174 template <
class T_W
idget,
class F>
inline
175 void get_toplevel_derived(
const Glib::ustring& name, T_Widget*& widget, F f) {
177 typedef typename T_Widget::BaseObjectType cwidget_type;
178 cwidget_type* pCWidget = (cwidget_type*)get_cobject(name);
182 if (!g_type_is_a(G_OBJECT_TYPE(pCWidget), GTK_TYPE_WINDOW)) {
183 g_object_ref(pCWidget);
185 Glib::ObjectBase* pObjectBase = ObjectBase::_get_current_wrapper((GObject*)pCWidget);
187 widget =
dynamic_cast<T_Widget*
>(
Glib::wrap((GtkWidget*)pCWidget) );
189 g_critical(
"GxBuilder::get_widget_derived(): dynamic_cast<> failed. An existing C++ instance, of a different type, seems to exist.");
192 widget = f(pCWidget);
194 assert(!widget->get_parent());
205 static void openTabBox_(
const char* label);
206 static void openVerticalBox_(
const char* label);
207 static void openVerticalBox1_(
const char* label);
208 static void openVerticalBox2_(
const char* label);
209 static void openHorizontalBox_(
const char* label);
211 static void openHorizontalhideBox_(
const char* label);
212 static void openHorizontalTableBox_(
const char* label);
213 static void openFrameBox_(
const char *label);
214 static void openFlipLabelBox_(
const char* label);
215 static void openpaintampBox_(
const char* label);
216 static void insertSpacer_();
217 static void set_next_flags_(
int flags);
218 static void create_mid_rackknob_(
const char *
id,
const char *label);
219 static void create_small_rackknob_(
const char *
id,
const char *label);
220 static void create_small_rackknobr_(
const char *
id,
const char *label);
221 static void create_big_rackknob_(
const char *
id,
const char *label);
222 static void create_master_slider_(
const char *
id,
const char *label);
223 static void create_feedback_slider_(
const char *
id,
const char *label);
224 static void create_selector_no_caption_(
const char *
id);
225 static void create_selector_(
const char *
id,
const char *label);
226 static void create_simple_meter_(
const char *
id);
227 static void create_simple_c_meter_(
const char *
id,
const char *idl,
const char *label);
228 static void create_spin_value_(
const char *
id,
const char *label);
229 static void create_switch_no_caption_(
const char *sw_type,
const char *
id);
230 static void create_feedback_switch_(
const char *sw_type,
const char *
id);
231 static void create_fload_switch_(
const char *sw_type,
const char *
id,
const char * idf);
232 static void create_switch_(
const char *sw_type,
const char *
id,
const char *label);
233 static void create_wheel_(
const char *
id,
const char *label);
234 static void create_port_display_(
const char *
id,
const char *label);
235 static void create_p_display_(
const char *
id,
const char *idl,
const char *idh);
236 static void create_simple_spin_value_(
const char *
id);
237 static void create_eq_rackslider_no_caption_(
const char *
id);
238 static void closeBox_();
239 static void load_glade_(
const char *data);
240 static void load_glade_file_(
const char *fname);
248 GtkWidget *
load_toplevel(GtkBuilder *builder,
const char* filename,
const char* windowname);
251 #endif // SRC_HEADERS_GX_UI_BUILDER_H_