[beast: 18/49] BSE: bseapi.idl: introduce SNet
- From: Tim Janik <timj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [beast: 18/49] BSE: bseapi.idl: introduce SNet
- Date: Wed, 1 Jul 2015 11:30:37 +0000 (UTC)
commit 6ac2e3fe034d36226ad221db186f2cad2ebc25db
Author: Tim Janik <timj gnu org>
Date: Mon Jun 22 15:54:54 2015 +0200
BSE: bseapi.idl: introduce SNet
beast-gtk/bstsupershell.cc | 15 ++++++++-------
bse/bseapi.idl | 5 +++++
bse/bseobject.cc | 3 +++
bse/bsesnet.cc | 18 ++++++++++++++++++
bse/bsesnet.hh | 13 ++++++++++++-
bse/bsesnet.proc | 23 -----------------------
6 files changed, 46 insertions(+), 31 deletions(-)
---
diff --git a/beast-gtk/bstsupershell.cc b/beast-gtk/bstsupershell.cc
index 5f06742..58842bb 100644
--- a/beast-gtk/bstsupershell.cc
+++ b/beast-gtk/bstsupershell.cc
@@ -189,21 +189,22 @@ static void
super_shell_build_snet (BstSuperShell *self,
GtkNotebook *notebook)
{
- SfiProxy snet = self->super;
+ Bse::SNetH snet = Bse::SNetH::down_cast (bse_server.from_proxy (self->super));
GtkWidget *param_view;
- if (BST_DBG_EXT && bse_snet_supports_user_synths (snet))
+ if (BST_DBG_EXT && snet.supports_user_synths())
gtk_notebook_append_page (notebook,
- gtk_widget_get_toplevel (bst_rack_view_new (snet)),
+ gtk_widget_get_toplevel (bst_rack_view_new (snet.proxy_id())),
gxk_notebook_create_tabulator (_("Rack"), NULL, NULL));
- if (bse_snet_supports_user_synths (snet) || BST_DBG_EXT)
+ if (snet.supports_user_synths() || BST_DBG_EXT)
gtk_notebook_append_page (notebook,
- gtk_widget_get_toplevel (GTK_WIDGET (bst_snet_router_build_page (snet))),
+ gtk_widget_get_toplevel (GTK_WIDGET (bst_snet_router_build_page
(snet.proxy_id()))),
gxk_notebook_create_tabulator (_("Routing"), BST_STOCK_MESH, _("Add, edit and
connect synthesizer mesh components")));
- param_view = bst_param_view_new (snet);
+ param_view = bst_param_view_new (snet.proxy_id());
gtk_notebook_append_page (notebook,
- bst_param_view_new (snet),
+ bst_param_view_new (snet.proxy_id()),
gxk_notebook_create_tabulator (_("Properties"), BST_STOCK_PROPERTIES, _("Adjust
overall synthesizer behaviour")));
+ (void) param_view;
}
static void
diff --git a/bse/bseapi.idl b/bse/bseapi.idl
index 624b234..3837f41 100644
--- a/bse/bseapi.idl
+++ b/bse/bseapi.idl
@@ -133,6 +133,11 @@ interface Container : Source {
interface Super : Container {
};
+/// Base type for all kinds of synthesis networks.
+interface SNet : Super {
+ bool supports_user_synths (); ///< Check whether users may edit synthesis modules of this network.
+};
+
/// Projects support loading, saving, playback and act as containers for all other sound objects.
interface Project : Container {
void change_name (String name); ///< Change a project name without recording undo steps.
diff --git a/bse/bseobject.cc b/bse/bseobject.cc
index 6353ca3..ab14625 100644
--- a/bse/bseobject.cc
+++ b/bse/bseobject.cc
@@ -917,6 +917,7 @@ bse_object_new (GType object_type, const gchar *first_property_name, ...)
#include "bseserver.hh"
#include "bseproject.hh"
+#include "bsesnet.hh"
GObject*
bse_object_new_valist (GType object_type, const gchar *first_property_name, va_list var_args)
@@ -934,6 +935,8 @@ bse_object_new_valist (GType object_type, const gchar *first_property_name, va_l
cxxo = new Bse::ServerImpl (object);
else if (g_type_is_a (object_type, BSE_TYPE_PROJECT))
cxxo = new Bse::ProjectImpl (object);
+ else if (g_type_is_a (object_type, BSE_TYPE_SNET))
+ cxxo = new Bse::SNetImpl (object);
else if (g_type_is_a (object_type, BSE_TYPE_SUPER))
cxxo = new Bse::SuperImpl (object);
else if (g_type_is_a (object_type, BSE_TYPE_CONTAINER))
diff --git a/bse/bsesnet.cc b/bse/bsesnet.cc
index f866ff4..539a2d7 100644
--- a/bse/bsesnet.cc
+++ b/bse/bsesnet.cc
@@ -949,3 +949,21 @@ BSE_BUILTIN_TYPE (BseSNet)
g_assert (BSE_SNET_FLAGS_USHIFT < BSE_OBJECT_FLAGS_MAX_SHIFT);
return bse_type_register_abstract (BSE_TYPE_SUPER, "BseSNet", "BSE Synthesis (Filter) Network", __FILE__,
__LINE__, &type_info);
}
+
+namespace Bse {
+
+SNetImpl::SNetImpl (BseObject *bobj) :
+ SuperImpl (bobj)
+{}
+
+SNetImpl::~SNetImpl ()
+{}
+
+bool
+SNetImpl::supports_user_synths ()
+{
+ BseSNet *self = as<BseSNet*>();
+ return BSE_SNET_USER_SYNTH (self);
+}
+
+} // Bse
diff --git a/bse/bsesnet.hh b/bse/bsesnet.hh
index 4feb348..c1abe94 100644
--- a/bse/bsesnet.hh
+++ b/bse/bsesnet.hh
@@ -102,7 +102,18 @@ void bse_snet_set_oport_dest (BseSNet *snet,
guint istream,
BseTrans *trans);
-
G_END_DECLS
+namespace Bse {
+
+class SNetImpl : public SuperImpl, public virtual SNetIface {
+protected:
+ virtual ~SNetImpl ();
+public:
+ explicit SNetImpl (BseObject*);
+ virtual bool supports_user_synths () override;
+};
+
+} // Bse
+
#endif /* __BSE_SNET_H__ */
diff --git a/bse/bsesnet.proc b/bse/bsesnet.proc
index 7f8ef88..ee9824b 100644
--- a/bse/bsesnet.proc
+++ b/bse/bsesnet.proc
@@ -9,29 +9,6 @@ AUTHORS = "Tim Janik <timj gtk org>";
LICENSE = "GNU Lesser General Public License";
-METHOD (BseSNet, supports-user-synths) {
- HELP = "Check whether users may edit synthesis modules of this network";
- IN = bse_param_spec_object ("snet", "Synth Net", NULL,
- BSE_TYPE_SNET, SFI_PARAM_STANDARD);
- OUT = sfi_pspec_bool ("user_synth", "User Synth", NULL,
- FALSE, SFI_PARAM_STANDARD);
-} BODY (BseProcedureClass *proc,
- const GValue *in_values,
- GValue *out_values)
-{
- /* extract parameter values */
- BseSNet *snet = (BseSNet*) bse_value_get_object (in_values++);
-
- /* check parameters */
- if (!BSE_IS_SNET (snet))
- return BSE_ERROR_PROC_PARAM_INVAL;
-
- /* set output parameters */
- sfi_value_set_bool (out_values++, BSE_SNET_USER_SYNTH (snet));
-
- return BSE_ERROR_NONE;
-}
-
METHOD (BseSNet, can-create-source) {
HELP = "Check whether inserting a new module into a synthesis network is possible";
IN = bse_param_spec_object ("snet", "Synth Net", NULL,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]