[SCM] calf/master: One table_edit_iface per table; start implementing a bridge class.
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:40:26 UTC 2013
The following commit has been merged in the master branch:
commit 2019ae2d8f9636b7d5cdb0c1fdd5f0d6f2b47e3d
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Sun Sep 26 22:50:30 2010 +0100
One table_edit_iface per table; start implementing a bridge class.
diff --git a/src/calf/giface.h b/src/calf/giface.h
index 55e8323..4bb5df9 100644
--- a/src/calf/giface.h
+++ b/src/calf/giface.h
@@ -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
diff --git a/src/calf/gui_controls.h b/src/calf/gui_controls.h
index 24a5f00..f087ea2 100644
--- a/src/calf/gui_controls.h
+++ b/src/calf/gui_controls.h
@@ -275,7 +275,7 @@ struct listview_param_control: public param_control, public send_configure_iface
{
GtkTreeView *tree;
GtkListStore *lstore;
- const calf_plugins::table_edit_iface *teif;
+ calf_plugins::table_edit_iface *teif;
int cols;
std::vector<GtkTreeIter> positions;
diff --git a/src/calf/jackhost.h b/src/calf/jackhost.h
index 2831e97..83913e3 100644
--- a/src/calf/jackhost.h
+++ b/src/calf/jackhost.h
@@ -128,7 +128,7 @@ public:
virtual int send_status_updates(send_updates_iface *sui, int last_serial) { return module->send_status_updates(sui, last_serial); }
virtual const plugin_metadata_iface *get_metadata_iface() const { return module->get_metadata_iface(); }
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); }
};
extern jack_host *create_jack_host(const char *name, const std::string &instance_name, calf_plugins::progress_report_iface *priface);
diff --git a/src/calf/ladspa_wrap.h b/src/calf/ladspa_wrap.h
index 8859b98..7908ab1 100644
--- a/src/calf/ladspa_wrap.h
+++ b/src/calf/ladspa_wrap.h
@@ -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);
diff --git a/src/calf/lv2wrap.h b/src/calf/lv2wrap.h
index c43237f..638eead 100644
--- a/src/calf/lv2wrap.h
+++ b/src/calf/lv2wrap.h
@@ -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); }
};
diff --git a/src/calf/modmatrix.h b/src/calf/modmatrix.h
index 5db95fc..17ebfd6 100644
--- a/src/calf/modmatrix.h
+++ b/src/calf/modmatrix.h
@@ -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)
diff --git a/src/dssigui.cpp b/src/dssigui.cpp
index b1daf98..81c6736 100644
--- a/src/dssigui.cpp
+++ b/src/dssigui.cpp
@@ -205,7 +205,7 @@ struct plugin_proxy: public plugin_ctl_iface, public line_graph_iface
}
}
virtual const line_graph_iface *get_line_graph_iface() const { return this; }
- virtual const table_edit_iface *get_table_edit_iface() const { return NULL; } // not supported in external UIs yet
+ virtual table_edit_iface *get_table_edit_iface(const char *key) { return NULL; } // not supported in external UIs yet
virtual bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context) const;
virtual bool get_dot(int index, int subindex, float &x, float &y, int &size, cairo_iface *context) const;
virtual bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const;
diff --git a/src/giface.cpp b/src/giface.cpp
index d661588..977ce06 100644
--- a/src/giface.cpp
+++ b/src/giface.cpp
@@ -319,7 +319,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);
}
@@ -428,4 +428,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
diff --git a/src/gui_controls.cpp b/src/gui_controls.cpp
index 93b8d18..627d451 100644
--- a/src/gui_controls.cpp
+++ b/src/gui_controls.cpp
@@ -938,8 +938,8 @@ GtkWidget *listview_param_control::create(plugin_gui *_gui, int _param_no)
gui = _gui;
param_no = _param_no;
- teif = gui->plugin->get_table_edit_iface();
- const table_column_info *tci = teif->get_table_columns(param_no);
+ teif = gui->plugin->get_table_edit_iface(param_variable.c_str());
+ const table_column_info *tci = teif->get_table_columns();
assert(tci);
cols = 0;
while (tci[cols].name != NULL)
@@ -986,14 +986,14 @@ GtkWidget *listview_param_control::create(plugin_gui *_gui, int _param_no)
void listview_param_control::update_store()
{
gtk_list_store_clear(lstore);
- uint32_t rows = teif->get_table_rows(param_no);
+ uint32_t rows = teif->get_table_rows();
for (uint32_t i = 0; i < rows; i++)
{
GtkTreeIter iter;
gtk_list_store_insert(lstore, &iter, i);
for (int j = 0; j < cols; j++)
{
- gtk_list_store_set(lstore, &iter, j, teif->get_cell(param_no, i, j).c_str(), -1);
+ gtk_list_store_set(lstore, &iter, j, teif->get_cell(i, j).c_str(), -1);
}
positions.push_back(iter);
}
@@ -1009,14 +1009,14 @@ void listview_param_control::send_configure(const char *key, const char *value)
void listview_param_control::on_edited(GtkCellRenderer *renderer, gchar *path, gchar *new_text, listview_param_control *pThis)
{
- const table_column_info *tci = pThis->teif->get_table_columns(pThis->param_no);
+ const table_column_info *tci = pThis->teif->get_table_columns();
int column = ((table_column_info *)g_object_get_data(G_OBJECT(renderer), "column")) - tci;
string error;
- pThis->teif->set_cell(pThis->param_no, atoi(path), column, new_text, error);
+ pThis->teif->set_cell(atoi(path), column, new_text, error);
if (error.empty()) {
pThis->update_store();
gtk_widget_grab_focus(pThis->widget);
- if (atoi(path) < (int)pThis->teif->get_table_rows(pThis->param_no))
+ if (atoi(path) < (int)pThis->teif->get_table_rows())
{
GtkTreePath *gpath = gtk_tree_path_new_from_string (path);
gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (pThis->widget), gpath, NULL, NULL, FALSE);
diff --git a/src/lv2gui.cpp b/src/lv2gui.cpp
index a8cac50..f75fa68 100644
--- a/src/lv2gui.cpp
+++ b/src/lv2gui.cpp
@@ -93,7 +93,7 @@ struct plugin_proxy_base
const line_graph_iface *get_line_graph_iface() const;
/// Obtain line graph interface if available
- const table_edit_iface *get_table_edit_iface() const;
+ const table_edit_iface *get_table_edit_iface(const char *key) const;
/// Map an URI to an integer value using a given URI map
uint32_t map_uri(const char *mapURI, const char *keyURI);
@@ -177,10 +177,10 @@ const line_graph_iface *plugin_proxy_base::get_line_graph_iface() const
return NULL;
}
-const table_edit_iface *plugin_proxy_base::get_table_edit_iface() const
+const table_edit_iface *plugin_proxy_base::get_table_edit_iface(const char *key) const
{
if (instance)
- return instance->get_table_edit_iface();
+ return instance->get_table_edit_iface(key);
return NULL;
}
@@ -250,7 +250,7 @@ struct lv2_plugin_proxy: public plugin_ctl_iface, public plugin_proxy_base, publ
/// Override for a method in plugin_ctl_iface - trivial delegation to base class
virtual const line_graph_iface *get_line_graph_iface() const { return plugin_proxy_base::get_line_graph_iface(); }
/// Override for a method in plugin_ctl_iface - trivial delegation to base class
- virtual const table_edit_iface *get_table_edit_iface() const { return plugin_proxy_base::get_table_edit_iface(); }
+ virtual const table_edit_iface *get_table_edit_iface(const char *key) const { return plugin_proxy_base::get_table_edit_iface(key); }
};
static gboolean plugin_on_idle(void *data)
diff --git a/src/modmatrix.cpp b/src/modmatrix.cpp
index 2ef798a..64ef330 100644
--- a/src/modmatrix.cpp
+++ b/src/modmatrix.cpp
@@ -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];
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list