Added missing patch port files

git-svn-id: http://svn.drobilla.net/lad@67 a436a847-0d15-0410-975c-d299462d15a1
This commit is contained in:
dave 2006-06-20 12:19:02 +00:00
parent 7c36abc4bf
commit 3de862bd8b
4 changed files with 264 additions and 0 deletions

View File

@ -0,0 +1,57 @@
/* This file is part of Om. Copyright (C) 2006 Dave Robillard.
*
* Om 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 (at your option) any later
* version.
*
* Om is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "OmPatchPort.h"
#include <cassert>
#include <iostream>
#include "PortModel.h"
#include "OmPortModule.h"
#include "ControlModel.h"
#include "Configuration.h"
#include "App.h"
using std::cerr; using std::endl;
using namespace LibOmClient;
namespace OmGtk {
OmPatchPort::OmPatchPort(OmPortModule* module, CountedPtr<PortModel> pm)
: Port(module, pm->name(), !pm->is_input(), App::instance().configuration()->get_port_color(pm.get())),
m_port_model(pm)
{
assert(module);
assert(m_port_model);
}
#if 0
void
OmPatchPort::set_name(const string& n)
{
cerr << "********** OmPatchPort::set_name broken **********************" << endl;
/* FIXME: move to PortController
string new_path = OmPath::parent(m_port_model->path()) +"/"+ n;
for (list<ControlPanel*>::iterator i = m_control_panels.begin(); i != m_control_panels.end(); ++i)
(*i)->rename_port(m_port_model->path(), new_path);
Port::set_name(n);
m_port_model->path(new_path);
*/
}
#endif
} // namespace OmGtk

View File

@ -0,0 +1,60 @@
/* This file is part of Om. Copyright (C) 2006 Dave Robillard.
*
* Om 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 (at your option) any later
* version.
*
* Om is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef OMPATCHPORT_H
#define OMPATCHPORT_H
#include <cassert>
#include <string>
#include <flowcanvas/Port.h>
#include "util/CountedPtr.h"
namespace LibOmClient { class PortModel; }
using namespace LibOmClient;
using namespace LibFlowCanvas;
using std::string; using std::list;
namespace OmGtk {
class FlowCanvas;
class PatchController;
class PatchWindow;
class OmPortModule;
/** A Port (on a pseudo node) in a patch canvas, to represent a port on that patch.
*
* \ingroup OmGtk
*/
class OmPatchPort : public LibFlowCanvas::Port
{
public:
OmPatchPort(OmPortModule* module, CountedPtr<PortModel> pm);
virtual ~OmPatchPort() {}
//void set_name(const string& n);
CountedPtr<PortModel> model() const { return m_port_model; }
private:
CountedPtr<PortModel> m_port_model;
};
} // namespace OmGtk
#endif // OMPATCHPORT_H

View File

@ -0,0 +1,71 @@
/* This file is part of Om. Copyright (C) 2006 Dave Robillard.
*
* Om 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 (at your option) any later
* version.
*
* Om is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "OmPortModule.h"
#include <cassert>
#include "Controller.h"
#include "OmFlowCanvas.h"
#include "PatchModel.h"
#include "NodeModel.h"
#include "OmPort.h"
#include "GladeFactory.h"
#include "RenameWindow.h"
#include "PatchController.h"
#include "PatchWindow.h"
namespace OmGtk {
OmPortModule::OmPortModule(OmFlowCanvas* canvas, PortController* port, double x, double y)
: LibFlowCanvas::Module(canvas, "", x, y),
m_port(port)
{
assert(m_port != NULL);
/*if (port_model()->polyphonic() && port_model()->parent() != NULL
&& port_model()->parent_patch()->poly() > 1) {
border_width(2.0);
}*/
}
void
OmPortModule::store_location()
{
char temp_buf[16];
//m_port->port_model()->x(property_x());
snprintf(temp_buf, 16, "%f", property_x().get_value());
//m_port->port_model()->set_metadata("module-x", temp_buf); // just in case?
Controller::instance().set_metadata(m_port->port_model()->path(), "module-x", temp_buf);
//m_port->port_model()->y(property_y());
snprintf(temp_buf, 16, "%f", property_y().get_value());
//m_port->port_model()->set_metadata("module-y", temp_buf); // just in case?
Controller::instance().set_metadata(m_port->port_model()->path(), "module-y", temp_buf);
}
void
OmPortModule::move_to(double x, double y)
{
Module::move_to(x, y);
//m_port->port_model()->x(x);
//m_port->port_model()->y(y);
//store_location();
}
} // namespace OmGtk

View File

@ -0,0 +1,76 @@
/* This file is part of Om. Copyright (C) 2006 Dave Robillard.
*
* Om 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 (at your option) any later
* version.
*
* Om is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef OMPORTMODULE_H
#define OMPORTMODULE_H
#include <string>
#include <libgnomecanvasmm.h>
#include <flowcanvas/Module.h>
#include "PortController.h"
using std::string;
namespace LibOmClient {
class PortModel;
class NodeModel;
class ControlModel;
}
using namespace LibOmClient;
namespace OmGtk {
class PatchController;
class PortController;
class OmFlowCanvas;
class OmPort;
/** A module in a patch.
*
* This base class is extended for various types of modules - SubpatchModule,
* DSSIModule, etc.
*
* \ingroup OmGtk
*/
class OmPortModule : public LibFlowCanvas::Module
{
public:
OmPortModule(OmFlowCanvas* canvas, PortController* port, double x, double y);
virtual ~OmPortModule() {}
//virtual OmPort* port(const string& port_name) {
// return (OmPort*)Module::port(port_name);
//}
virtual void store_location();
void move_to(double x, double y);
//void on_right_click(GdkEventButton* event) { m_port->show_menu(event); }
PortController* port() const { return m_port; }
protected:
//virtual void on_double_click(GdkEventButton* ev) { show_control_window(); }
//virtual void on_middle_click(GdkEventButton* ev) { show_control_window(); }
PortController* m_port;
};
} // namespace OmGtk
#endif // OMPORTMODULE_H