One table_edit_iface per table; start implementing a bridge class.
(cherry picked from commit 2019ae2d8f9636b7d5cdb0c1fdd5f0d6f2b47e3d)
This commit is contained in:
committed by
Tobias Doerffel
parent
16f24125fd
commit
a572acb35f
@@ -225,22 +225,22 @@ struct table_column_info
|
||||
struct table_edit_iface
|
||||
{
|
||||
/// retrieve the table layout for specific parameter
|
||||
virtual const table_column_info *get_table_columns(int param) const = 0;
|
||||
virtual const table_column_info *get_table_columns() const = 0;
|
||||
|
||||
/// return the current number of rows
|
||||
virtual uint32_t get_table_rows(int param) const = 0;
|
||||
virtual uint32_t get_table_rows() const = 0;
|
||||
|
||||
/// retrieve data item from the plugin
|
||||
virtual std::string get_cell(int param, int row, int column) const;
|
||||
virtual std::string get_cell(int row, int column) const;
|
||||
|
||||
/// set data item to the plugin
|
||||
virtual void set_cell(int param, int row, int column, const std::string &src, std::string &error) const { error.clear(); }
|
||||
virtual void set_cell(int row, int column, const std::string &src, std::string &error) { error.clear(); }
|
||||
|
||||
/// return a line graph interface for a specific parameter/column (unused for now)
|
||||
virtual const line_graph_iface *get_graph_iface(int param, int column) const { return NULL; }
|
||||
virtual const line_graph_iface *get_graph_iface(int column) const { return NULL; }
|
||||
|
||||
/// return an editor name for a specific grid cell (unused for now - I don't even know how editors be implemented)
|
||||
virtual const char *get_cell_editor(int param, int column) const { return NULL; }
|
||||
virtual const char *get_cell_editor(int column) const { return NULL; }
|
||||
|
||||
virtual ~table_edit_iface() {}
|
||||
};
|
||||
@@ -366,7 +366,7 @@ struct plugin_ctl_iface
|
||||
/// @return line_graph_iface if any
|
||||
virtual const line_graph_iface *get_line_graph_iface() const = 0;
|
||||
/// @return table_edit_iface if any
|
||||
virtual const table_edit_iface *get_table_edit_iface() const = 0;
|
||||
virtual table_edit_iface *get_table_edit_iface(const char *key) = 0;
|
||||
/// Do-nothing destructor to silence compiler warning
|
||||
virtual ~plugin_ctl_iface() {}
|
||||
};
|
||||
@@ -447,8 +447,8 @@ struct audio_module_iface
|
||||
virtual uint32_t message_run(const void *valid_ports, void *output_ports) = 0;
|
||||
/// @return line_graph_iface if any
|
||||
virtual const line_graph_iface *get_line_graph_iface() const = 0;
|
||||
/// @return table_edit_iface if any
|
||||
virtual const table_edit_iface *get_table_edit_iface() const = 0;
|
||||
/// @return table_edit_iface if any for given parameter
|
||||
virtual table_edit_iface *get_table_edit_iface(const char *key) = 0;
|
||||
virtual ~audio_module_iface() {}
|
||||
};
|
||||
|
||||
@@ -548,7 +548,8 @@ public:
|
||||
}
|
||||
/// @return line_graph_iface if any
|
||||
virtual const line_graph_iface *get_line_graph_iface() const { return dynamic_cast<const line_graph_iface *>(this); }
|
||||
virtual const table_edit_iface *get_table_edit_iface() const { return dynamic_cast<const table_edit_iface *>(this); }
|
||||
virtual table_edit_iface *get_table_edit_iface(const char *key) { const char *key_us = get_table_edit_iface_key(); return (key_us && !strcmp(key, key_us)) ? dynamic_cast<table_edit_iface *>(this) : NULL; }
|
||||
virtual const char *get_table_edit_iface_key() const { return NULL; }
|
||||
};
|
||||
|
||||
#if USE_EXEC_GUI || USE_DSSI
|
||||
@@ -677,6 +678,28 @@ struct preset_access_iface
|
||||
virtual ~preset_access_iface() {}
|
||||
};
|
||||
|
||||
#if USE_EXEC_GUI
|
||||
class table_via_configure: public table_edit_iface
|
||||
{
|
||||
protected:
|
||||
typedef std::pair<int, int> coord;
|
||||
std::vector<table_column_info> columns;
|
||||
std::map<coord, std::string> values;
|
||||
int rows;
|
||||
public:
|
||||
table_via_configure();
|
||||
void configure(const char *key, const char *value);
|
||||
|
||||
virtual const table_column_info *get_table_columns() const;
|
||||
virtual uint32_t get_table_rows() const;
|
||||
virtual std::string get_cell(int row, int column) const;
|
||||
virtual void set_cell(int row, int column, const std::string &src, std::string &error);
|
||||
virtual const line_graph_iface *get_graph_iface(int column) const;
|
||||
virtual const char *get_cell_editor(int column) const;
|
||||
virtual ~table_via_configure();
|
||||
};
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -48,7 +48,7 @@ struct ladspa_instance: public plugin_ctl_iface
|
||||
|
||||
ladspa_instance(audio_module_iface *_module, ladspa_plugin_metadata_set *_ladspa, int sample_rate);
|
||||
virtual const line_graph_iface *get_line_graph_iface() const { return module->get_line_graph_iface(); }
|
||||
virtual const table_edit_iface *get_table_edit_iface() const { return module->get_table_edit_iface(); }
|
||||
virtual table_edit_iface *get_table_edit_iface(const char *key) { return module->get_table_edit_iface(key); }
|
||||
virtual float get_param_value(int param_no);
|
||||
virtual void set_param_value(int param_no, float value);
|
||||
virtual bool activate_preset(int bank, int program);
|
||||
|
||||
@@ -160,7 +160,7 @@ struct lv2_instance: public plugin_ctl_iface, public progress_report_iface
|
||||
}
|
||||
virtual const plugin_metadata_iface *get_metadata_iface() const { return metadata; }
|
||||
virtual const line_graph_iface *get_line_graph_iface() const { return module->get_line_graph_iface(); }
|
||||
virtual const table_edit_iface *get_table_edit_iface() const { return module->get_table_edit_iface(); }
|
||||
virtual table_edit_iface *get_table_edit_iface(const char *key) { return module->get_table_edit_iface(key); }
|
||||
virtual int send_status_updates(send_updates_iface *sui, int last_serial) { return module->send_status_updates(sui, last_serial); }
|
||||
};
|
||||
|
||||
|
||||
@@ -84,10 +84,10 @@ protected:
|
||||
|
||||
mod_matrix(dsp::modulation_entry *_matrix, unsigned int _rows, const char **_src_names, const char **_dest_names);
|
||||
public:
|
||||
virtual const table_column_info *get_table_columns(int param) const;
|
||||
virtual uint32_t get_table_rows(int param) const;
|
||||
virtual std::string get_cell(int param, int row, int column) const;
|
||||
virtual void set_cell(int param, int row, int column, const std::string &src, std::string &error) const;
|
||||
virtual const table_column_info *get_table_columns() const;
|
||||
virtual uint32_t get_table_rows() const;
|
||||
virtual std::string get_cell(int row, int column) const;
|
||||
virtual void set_cell(int row, int column, const std::string &src, std::string &error);
|
||||
|
||||
/// Process modulation matrix, calculate outputs from inputs
|
||||
inline void calculate_modmatrix(float *moddest, int moddest_count, float *modsrc)
|
||||
|
||||
@@ -194,8 +194,11 @@ void calf_plugins::plugin_ctl_iface::clear_preset() {
|
||||
set_param_value(i, pp.def_value);
|
||||
}
|
||||
const char *const *vars = get_metadata_iface()->get_configure_vars();
|
||||
for (int i = 0; vars[i]; i++)
|
||||
configure(vars[i], NULL);
|
||||
if (vars)
|
||||
{
|
||||
for (int i = 0; vars[i]; i++)
|
||||
configure(vars[i], NULL);
|
||||
}
|
||||
}
|
||||
|
||||
const char *calf_plugins::load_gui_xml(const std::string &plugin_id)
|
||||
@@ -205,10 +208,10 @@ const char *calf_plugins::load_gui_xml(const std::string &plugin_id)
|
||||
return strdup(calf_utils::load_file((std::string(PKGLIBDIR) + "/gui-" + plugin_id + ".xml").c_str()).c_str());
|
||||
}
|
||||
catch(file_exception e)
|
||||
#endif
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool calf_plugins::get_freq_gridline(int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context, bool use_frequencies)
|
||||
@@ -318,7 +321,7 @@ const plugin_metadata_iface *calf_plugins::plugin_registry::get_by_id(const char
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
std::string table_edit_iface::get_cell(int param, int row, int column) const
|
||||
std::string table_edit_iface::get_cell(int row, int column) const
|
||||
{
|
||||
return calf_utils::i2s(row)+":"+calf_utils::i2s(column);
|
||||
}
|
||||
@@ -427,4 +430,52 @@ calf_plugins::dssi_feedback_sender::~dssi_feedback_sender()
|
||||
delete client;
|
||||
}
|
||||
|
||||
table_via_configure::table_via_configure()
|
||||
{
|
||||
rows = 0;
|
||||
}
|
||||
|
||||
const table_column_info *table_via_configure::get_table_columns() const
|
||||
{
|
||||
return &columns[0];
|
||||
}
|
||||
|
||||
uint32_t table_via_configure::get_table_rows() const
|
||||
{
|
||||
return rows;
|
||||
}
|
||||
|
||||
string table_via_configure::get_cell(int row, int column) const
|
||||
{
|
||||
if (row >= rows)
|
||||
return string();
|
||||
coord c = make_pair(row, column);
|
||||
std::map<coord, std::string>::const_iterator i = values.find(c);
|
||||
if (i == values.end())
|
||||
return std::string();
|
||||
else
|
||||
return i->second;
|
||||
}
|
||||
|
||||
void table_via_configure::set_cell(int row, int column, const std::string &src, std::string &error)
|
||||
{
|
||||
coord c = make_pair(row, column);
|
||||
values[c] = src;
|
||||
error = "";
|
||||
}
|
||||
|
||||
const line_graph_iface *table_via_configure::get_graph_iface(int column) const
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *table_via_configure::get_cell_editor(int column) const
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
table_via_configure::~table_via_configure()
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -60,17 +60,17 @@ mod_matrix::mod_matrix(modulation_entry *_matrix, unsigned int _rows, const char
|
||||
matrix[i].reset();
|
||||
}
|
||||
|
||||
const table_column_info *mod_matrix::get_table_columns(int param) const
|
||||
const table_column_info *mod_matrix::get_table_columns() const
|
||||
{
|
||||
return table_columns;
|
||||
}
|
||||
|
||||
uint32_t mod_matrix::get_table_rows(int param) const
|
||||
uint32_t mod_matrix::get_table_rows() const
|
||||
{
|
||||
return matrix_rows;
|
||||
}
|
||||
|
||||
std::string mod_matrix::get_cell(int param, int row, int column) const
|
||||
std::string mod_matrix::get_cell(int row, int column) const
|
||||
{
|
||||
assert(row >= 0 && row < (int)matrix_rows);
|
||||
modulation_entry &slot = matrix[row];
|
||||
@@ -91,7 +91,7 @@ std::string mod_matrix::get_cell(int param, int row, int column) const
|
||||
}
|
||||
}
|
||||
|
||||
void mod_matrix::set_cell(int param, int row, int column, const std::string &src, std::string &error) const
|
||||
void mod_matrix::set_cell(int row, int column, const std::string &src, std::string &error)
|
||||
{
|
||||
assert(row >= 0 && row < (int)matrix_rows);
|
||||
modulation_entry &slot = matrix[row];
|
||||
|
||||
Reference in New Issue
Block a user