25 #ifndef SRC_HEADERS_GX_UI_BUILDER_H_ 26 #define SRC_HEADERS_GX_UI_BUILDER_H_ 44 void on_button_toggled();
45 void on_parameter_changed(T v);
52 :
uiElement(), machine(machine_), id(id_), button(b) {
73 button->set_active(v != 0.0);
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 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 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);
160 return gtk_builder_get_object(gobj(), name.c_str()) != 0;
163 template <
class T_W
idget>
inline 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 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_ void get_toplevel(const Glib::ustring &name, T_Widget *&widget)
void on_parameter_changed(T v)
void find_widget_derived(const Glib::ustring &name, T_Widget *&widget, F f)
void get_toplevel_derived(const Glib::ustring &name, T_Widget *&widget, F f)
T get_parameter_value(const std::string &id)
gx_engine::GxMachineBase & machine
uiToggle(gx_engine::GxMachineBase &machine, Gtk::ToggleButton *b, const std::string &id)
virtual bool parameter_hasId(const char *p)=0
virtual void set_parameter_value(const std::string &id, int value)=0
static Glib::RefPtr< GxBuilder > create()
static StackBoxBuilder * intf
void find_widget(const Glib::ustring &name, T_Widget *&widget)
Gxw::BigKnob * wrap(GxBigKnob *object, bool take_copy)
std::vector< PluginUI * > * pluginlist
GtkWidget * load_toplevel(GtkBuilder *builder, const char *filename, const char *windowname)
bool has_object(const Glib::ustring &name)
Gtk::ToggleButton * button
sigc::signal< void, T > & signal_parameter_value(const std::string &id)