/*
- Copyright (C) 1998-2006 Paul Davis
-
+ Copyright (C) 2009 Paul Davis
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
#define __osc_osccontrollable_h__
#include <string>
-
+#include <boost/shared_ptr.hpp>
#include <sigc++/sigc++.h>
#include <lo/lo.h>
-#include <pbd/controllable.h>
-#include <pbd/stateful.h>
-#include <ardour/types.h>
+#include "pbd/controllable.h"
+#include "pbd/stateful.h"
+#include "ardour/types.h"
+
+namespace ARDOUR {
+ class Route;
+}
class OSCControllable : public PBD::Stateful
{
public:
- OSCControllable (lo_address addr, PBD::Controllable&);
+ OSCControllable (lo_address addr, const std::string& path, boost::shared_ptr<PBD::Controllable>);
virtual ~OSCControllable ();
+ lo_address address() const { return addr; }
+
XMLNode& get_state ();
- int set_state (const XMLNode& node);
+ int set_state (const XMLNode& node, int version);
- private:
- PBD::Controllable& controllable;
+ protected:
+ boost::shared_ptr<PBD::Controllable> controllable;
+ PBD::ScopedConnection changed_connection;
lo_address addr;
+ std::string path;
+
+ virtual void send_change_message ();
+};
+
+class OSCRouteControllable : public OSCControllable
+{
+
+ public:
+ OSCRouteControllable (lo_address addr, const std::string& path,
+ boost::shared_ptr<PBD::Controllable>,
+ boost::shared_ptr<ARDOUR::Route>);
+ ~OSCRouteControllable ();
+
+ boost::shared_ptr<ARDOUR::Route> route() const { return _route; }
+
+ private:
+ boost::shared_ptr<ARDOUR::Route> _route;
+
+ void send_change_message ();
};
#endif /* __osc_osccontrollable_h__ */