PluginDisplay::PluginDisplay(gx_engine::GxMachineBase& machine_, Glib::RefPtr<Gdk::Pixbuf> icon, sigc::slot<void, bool, bool> finished_callback_) : machine(machine_), pluginlist(), current_plugin(0), old_state(0), bld(), change_count(0), actiongroup(Gtk::ActionGroup::create("ladspa_window")), uimanager(), enum_liststore(new EnumListStore), port_liststore(new PortListStore), plugin_liststore(new PluginListStore), masteridx_liststore(new MasterIdxListStore), on_reordered_conn(), display_type_list(), display_type_list_sr(), output_type_list(), finished_callback(finished_callback_) { std::vector<std::string> old_not_found; machine.load_ladspalist(old_not_found, pluginlist); bld = gx_gui::GxBuilder::create_from_file(machine.get_options().get_builder_filepath("ladspaliste.glade")); bld->get_toplevel("window1", window); bld->find_widget("treeview1", treeview1); bld->find_widget("treeview2", treeview2); bld->find_widget("treeview3", treeview3); bld->find_widget("ladspa_category", ladspa_category); bld->find_widget("ladspa_maker", ladspa_maker); bld->find_widget("ladspa_uniqueid", ladspa_uniqueid); bld->find_widget("search_entry", search_entry); bld->find_widget("combobox_mono_stereo", combobox_mono_stereo); bld->find_widget("selected_only", selected_only); bld->find_widget("changed_only", changed_only); bld->find_widget("ladspa_only", ladspa_only); bld->find_widget("lv2_only", lv2_only); bld->find_widget("show_all", show_all); bld->find_widget("details_box", details_box); bld->find_widget("plugin_name", plugin_name); bld->find_widget("plugin_category", plugin_category); bld->find_widget("plugin_quirks", plugin_quirks); bld->find_widget("master_slider_idx", master_slider_idx); bld->find_widget("master_slider_name", master_slider_name); bld->find_widget("cellrenderer_master", cellrenderer_master); bld->find_widget("cellrenderer_newrow", cellrenderer_newrow); bld->find_widget("cellrenderer_caption", cellrenderer_caption); bld->find_widget("cellrenderer_active", cellrenderer_active); bld->find_widget("cellrenderer_category", cellrenderer_category); bld->find_widget("cellrenderer_quirks", cellrenderer_quirks); set_title(); actiongroup->add(Gtk::Action::create("FileMenuAction",_("_File"))); save_action = Gtk::Action::create("SaveAction", _("_Ok")); actiongroup->add(save_action, sigc::mem_fun(this, &PluginDisplay::on_save)); apply_action = Gtk::Action::create("ApplyAction", _("_Apply")); actiongroup->add(apply_action, sigc::mem_fun(this, &PluginDisplay::on_apply)); quit_action = Gtk::Action::create("QuitAction", _("_Quit")); actiongroup->add(quit_action, sigc::mem_fun(this, &PluginDisplay::on_quit)); select_all_action = Gtk::Action::create("SelectAllAction", _("_Select All")); actiongroup->add(select_all_action, sigc::bind(sigc::mem_fun(this, &PluginDisplay::on_select_all), true)); select_none_action = Gtk::Action::create("SelectNoneAction", _("Select _None")); actiongroup->add(select_none_action, sigc::bind(sigc::mem_fun(this, &PluginDisplay::on_select_all), false)); actiongroup->add(Gtk::Action::create("ViewMenuAction", _("_View"))); Glib::RefPtr<Gtk::Action> act = Gtk::Action::create("FindAction", _("_Find")); actiongroup->add(act, sigc::mem_fun(this, &PluginDisplay::on_find)); uimanager = Gtk::UIManager::create(); uimanager->insert_action_group(actiongroup, 0); uimanager->add_ui_from_string(menudef); //uimanager->get_widget("/ladspalist"); //Gtk::HBox *ww; bld->find_widget("menubox", ww); ww->pack_start(*uimanager->get_widget("/ladspalist")); window->add_accel_group(uimanager->get_accel_group()); window->signal_delete_event().connect(sigc::mem_fun(this, &PluginDisplay::on_delete_event)); bld->find_widget("show_details", show_details); show_details->signal_clicked().connect(sigc::mem_fun(this, &PluginDisplay::on_show_details)); treeview3->get_selection()->set_mode(Gtk::SELECTION_BROWSE); treeview3->set_model(enum_liststore); Gtk::CellRendererText *r; bld->find_widget("cellrenderer_label", r); r->signal_edited().connect(sigc::mem_fun(this, &PluginDisplay::on_label_edited)); Gtk::TreeViewColumn *c; bld->find_widget("treeviewcolumn_label", c); c->set_cell_data_func(*r, sigc::mem_fun(this, &PluginDisplay::display_label)); bld->find_widget("dry_wet_button", dry_wet_button); dry_wet_button->signal_clicked().connect(sigc::mem_fun(this, &PluginDisplay::on_add_dry_wet_controller)); // dry_wet_button->set_active(current_plugin->add_wet_dry); Glib::RefPtr<Gtk::TreeSelection> sel = treeview2->get_selection(); sel->set_mode(Gtk::SELECTION_BROWSE); sel->signal_changed().connect(sigc::mem_fun(this, &PluginDisplay::on_parameter_selection_changed)); on_reordered_conn = port_liststore->signal_row_deleted().connect(sigc::mem_fun(this, &PluginDisplay::on_reordered)); treeview2->set_model(port_liststore); CellRendererComboDerived *rd; bld->find_widget_derived("cellrenderer_type", rd, sigc::ptr_fun(CellRendererComboDerived::create_from_builder)); rd->signal_edited().connect(sigc::mem_fun(this, &PluginDisplay::on_type_edited)); bld->find_widget("treeviewcolumn_type", c); c->set_cell_data_func(*rd, sigc::mem_fun(this, &PluginDisplay::display_type)); bld->find_widget_derived("cellrenderer_step", rd, sigc::ptr_fun(CellRendererComboDerived::create_from_builder)); rd->signal_edited().connect(sigc::mem_fun(this, &PluginDisplay::on_step_edited)); bld->find_widget("treeviewcolumn_step", c); c->set_cell_data_func(*rd, sigc::mem_fun(this, &PluginDisplay::display_step)); cellrenderer_newrow->signal_toggled().connect(sigc::mem_fun(this, &PluginDisplay::on_newrow_toggled)); Gtk::Label *label = new Gtk::Label("N"); label->set_tooltip_text(_("start a new row of controls in the rackbox unit")); label->show(); bld->find_widget("treeviewcolumn_newrow", c); c->set_widget(*manage(label)); c->set_cell_data_func(*cellrenderer_newrow, sigc::mem_fun(this, &PluginDisplay::display_newrow)); cellrenderer_caption->signal_toggled().connect(sigc::mem_fun(this, &PluginDisplay::on_caption_toggled)); label = new Gtk::Label("C"); label->set_tooltip_text(_("display the name as caption above the control")); label->show(); bld->find_widget("treeviewcolumn_caption", c); c->set_widget(*manage(label)); c->set_cell_data_func(*cellrenderer_caption, sigc::mem_fun(this, &PluginDisplay::display_caption)); bld->find_widget("cellrenderer_name", r); r->signal_edited().connect(sigc::mem_fun(this, &PluginDisplay::on_name_edited)); bld->find_widget("treeviewcolumn_name", c); c->set_cell_data_func(*r, sigc::mem_fun(this, &PluginDisplay::display_name)); bld->find_widget("cellrenderer_dflt", r); r->signal_edited().connect(sigc::mem_fun(this, &PluginDisplay::on_dflt_edited)); bld->find_widget("treeviewcolumn_dflt", c); c->set_cell_data_func(*r, sigc::mem_fun(this, &PluginDisplay::display_default)); bld->find_widget("cellrenderer_low", r); r->signal_edited().connect(sigc::mem_fun(this, &PluginDisplay::on_low_edited)); bld->find_widget("treeviewcolumn_low", c); c->set_cell_data_func(*r, sigc::mem_fun(this, &PluginDisplay::display_lower)); bld->find_widget("cellrenderer_up", r); r->signal_edited().connect(sigc::mem_fun(this, &PluginDisplay::on_up_edited)); bld->find_widget("treeviewcolumn_up", c); c->set_cell_data_func(*r, sigc::mem_fun(this, &PluginDisplay::display_upper)); bld->find_widget("cellrenderer_idx", r); bld->find_widget("treeviewcolumn_idx", c); c->set_cell_data_func(*r, sigc::mem_fun(this, &PluginDisplay::display_idx)); bld->find_widget("treeviewcolumn_SR", c); label = new Gtk::Label("SR"); label->set_tooltip_text(_("marked rows: range depends on samplerate; using 44100 as fixed value")); label->show(); c->set_widget(*manage(label)); Gtk::CellRendererToggle *t; bld->find_widget("cellrenderer_SR", t); c->set_cell_data_func(*t, sigc::mem_fun(this, &PluginDisplay::display_SR)); Gtk::TreeModelColumnRecord recdef; Gtk::TreeModelColumn<Glib::ustring> strcol; Gtk::TreeModelColumn<DisplayType> intcol; recdef.add(strcol); recdef.add(intcol); display_type_list = Gtk::ListStore::create(recdef); append_displaytype(display_type_list, tp_scale); append_displaytype(display_type_list, tp_scale_log); append_displaytype(display_type_list, tp_toggle); append_displaytype(display_type_list, tp_int); append_displaytype(display_type_list, tp_enum); append_displaytype(display_type_list, tp_none); display_type_list_sr = Gtk::ListStore::create(recdef); append_displaytype(display_type_list_sr, tp_scale); append_displaytype(display_type_list_sr, tp_scale_log); append_displaytype(display_type_list_sr, tp_none); output_type_list = Gtk::ListStore::create(recdef); append_displaytype(output_type_list, tp_display); append_displaytype(output_type_list, tp_display_toggle); append_displaytype(output_type_list, tp_none); treeview1->signal_row_activated().connect(sigc::mem_fun(this, &PluginDisplay::on_row_activated)); treeview1->set_search_equal_func(sigc::mem_fun(this,&PluginDisplay::search_equal)); Gtk::Entry *e; bld->find_widget("search_entry", e); e->signal_activate().connect(sigc::mem_fun(this, &PluginDisplay::on_search_entry_activate)); treeview1->set_search_entry(*e); sel = treeview1->get_selection(); sel->set_mode(Gtk::SELECTION_BROWSE); sel->signal_changed().connect(sigc::mem_fun(this, &PluginDisplay::selection_changed)); treeview1->set_model(plugin_liststore); cellrenderer_active->signal_toggled().connect(sigc::mem_fun(this, &PluginDisplay::on_active_toggled)); bld->find_widget("cellrenderer_ladspa", r); bld->find_widget("treeviewcolumn_ladspa", c); c->set_cell_data_func(*r, sigc::mem_fun(this, &PluginDisplay::display_ladspa)); Gtk::ComboBox *cb; bld->find_widget("plugin_category", cb); cb->set_cell_data_func(*cellrenderer_category, sigc::mem_fun(this, &PluginDisplay::display_category)); bld->find_widget("plugin_quirks", cb); cb->set_cell_data_func(*cellrenderer_quirks, sigc::mem_fun(this, &PluginDisplay::display_quirks)); master_slider_idx->set_cell_data_func(*cellrenderer_master, sigc::mem_fun(this, &PluginDisplay::display_master_idx)); master_slider_idx->signal_changed().connect(sigc::mem_fun(this, &PluginDisplay::set_master_text)); selected_only->signal_toggled().connect(sigc::bind(sigc::mem_fun(this, &PluginDisplay::on_view_changed), selected_only)); changed_only->signal_toggled().connect(sigc::bind(sigc::mem_fun(this, &PluginDisplay::on_view_changed), changed_only)); ladspa_only->signal_toggled().connect(sigc::bind(sigc::mem_fun(this, &PluginDisplay::on_view_changed), ladspa_only)); lv2_only->signal_toggled().connect(sigc::bind(sigc::mem_fun(this, &PluginDisplay::on_view_changed), lv2_only)); show_all->signal_toggled().connect(sigc::bind(sigc::mem_fun(this, &PluginDisplay::on_view_changed), show_all)); bld->find_widget("combobox_mono_stereo", cb); cb->signal_changed().connect(sigc::mem_fun(this, &PluginDisplay::on_mono_stereo_changed)); cb->set_active(0); Gtk::Button *b; bld->find_widget("reset_changes", b); b->signal_clicked().connect(sigc::mem_fun(this, &PluginDisplay::on_delete_changes)); bld->find_widget("master_slider_idx", cb); cb->set_model(masteridx_liststore); bld->find_widget("button_cancel", b); gtk_activatable_set_related_action(GTK_ACTIVATABLE(b->gobj()), actiongroup->get_action("QuitAction")->gobj()); bld->find_widget("button_apply", b); gtk_activatable_set_related_action(GTK_ACTIVATABLE(b->gobj()), actiongroup->get_action("ApplyAction")->gobj()); bld->find_widget("button_save", b); gtk_activatable_set_related_action(GTK_ACTIVATABLE(b->gobj()), actiongroup->get_action("SaveAction")->gobj()); bld->find_widget("select_all", b); gtk_activatable_set_related_action(GTK_ACTIVATABLE(b->gobj()), actiongroup->get_action("SelectAllAction")->gobj()); bld->find_widget("select_none", b); gtk_activatable_set_related_action(GTK_ACTIVATABLE(b->gobj()), actiongroup->get_action("SelectNoneAction")->gobj()); window->set_icon(icon); window->show(); }
void shrink_wrap_button(Gtk::Button &button) { button.set_border_width(0); button.unset_flags(Gtk::CAN_FOCUS | Gtk::CAN_DEFAULT); g_signal_connect_after(G_OBJECT(button.gobj()), "size_request", G_CALLBACK(minimum_size), NULL); }
void setButtonCallback(string b, void (* fkt)(GtkButton*, gpointer), gpointer data) { Gtk::Button* bu; VRGuiBuilder()->get_widget(b, bu); g_signal_connect (bu->gobj(), "clicked", G_CALLBACK(fkt), data); }