/[svn]/linuxsampler/trunk/src/plugins/InstrumentEditor.cpp
ViewVC logotype

Contents of /linuxsampler/trunk/src/plugins/InstrumentEditor.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2687 - (show annotations) (download)
Sun Jan 4 17:16:05 2015 UTC (9 years, 3 months ago) by schoenebeck
File size: 5195 byte(s)
* Instrument editor interface: Changed instrument editor plugin interface,
providing additional informations like the EngineChannel for which the
instrument editor was spawned for. This allows the instrument editors to
interact more actively with the sampler.
* Bumped version (1.0.0.svn60).

1 /***************************************************************************
2 * *
3 * Copyright (C) 2007 - 2015 Christian Schoenebeck *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the Free Software *
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
18 * MA 02111-1307 USA *
19 ***************************************************************************/
20
21 #include "InstrumentEditor.h"
22
23 #include "../common/global_private.h"
24
25 #include <algorithm>
26 #include <functional>
27
28 namespace LinuxSampler {
29
30 InstrumentEditor::InstrumentEditor() : Thread(false, false, -1, 0) {
31 pInstrument = NULL;
32 pUserData = NULL;
33 pEngineChannel = NULL;
34 }
35
36 InstrumentEditor::~InstrumentEditor() {
37 }
38
39 void InstrumentEditor::Launch(EngineChannel* pEngineChannel, void* pInstrument, String sTypeName, String sTypeVersion, void* pUserData) {
40 dmsg(1,("InstrumentEditor::Launch(instr=%x,type=%s,version=%s)\n", pInstrument, sTypeName.c_str(), sTypeVersion.c_str()));
41 // prepare the editor's mandatory parameters
42 this->pInstrument = pInstrument;
43 this->sTypeName = sTypeName;
44 this->sTypeVersion = sTypeVersion;
45 this->pUserData = pUserData;
46 this->pEngineChannel = pEngineChannel;
47 // start the editor in its own thread
48 StartThread();
49 }
50
51 int InstrumentEditor::Main() {
52 dmsg(1,("InstrumentEditor::Main()\n"));
53 // run the editor's main loop
54 int iResult = Main(pInstrument, sTypeName, sTypeVersion, pUserData);
55 // reset editor parameters
56 this->pInstrument = NULL;
57 this->sTypeName = "";
58 this->sTypeVersion = "";
59 this->pUserData = NULL;
60 dmsg(1,("Instrument editor '%s' returned with exit status %d\n", Name().c_str(), iResult));
61 // notify all registered listeners
62 std::for_each(
63 listeners.begin(), listeners.end(),
64 std::bind2nd(std::mem_fun(&InstrumentEditorListener::OnInstrumentEditorQuit), this)
65 );
66 // done
67 return iResult;
68 }
69
70 EngineChannel* InstrumentEditor::GetEngineChannel() {
71 return pEngineChannel;
72 }
73
74 void InstrumentEditor::AddListener(InstrumentEditorListener* pListener) {
75 listeners.insert(pListener);
76 }
77
78 void InstrumentEditor::RemoveListener(InstrumentEditorListener* pListener) {
79 listeners.erase(pListener);
80 }
81
82 void InstrumentEditor::NotifySamplesToBeRemoved(std::set<void*> Samples) {
83 for ( // notify all registered listeners
84 std::set<InstrumentEditorListener*>::iterator iter = listeners.begin();
85 iter != listeners.end(); iter++
86 ) (*iter)->OnSamplesToBeRemoved(Samples, this);
87 }
88
89 void InstrumentEditor::NotifySamplesRemoved() {
90 for ( // notify all registered listeners
91 std::set<InstrumentEditorListener*>::iterator iter = listeners.begin();
92 iter != listeners.end(); iter++
93 ) (*iter)->OnSamplesRemoved(this);
94 }
95
96 void InstrumentEditor::NotifyDataStructureToBeChanged(void* pStruct, String sStructType) {
97 for ( // notify all registered listeners
98 std::set<InstrumentEditorListener*>::iterator iter = listeners.begin();
99 iter != listeners.end(); iter++
100 ) (*iter)->OnDataStructureToBeChanged(pStruct, sStructType, this);
101 }
102
103 void InstrumentEditor::NotifyDataStructureChanged(void* pStruct, String sStructType) {
104 for ( // notify all registered listeners
105 std::set<InstrumentEditorListener*>::iterator iter = listeners.begin();
106 iter != listeners.end(); iter++
107 ) (*iter)->OnDataStructureChanged(pStruct, sStructType, this);
108 }
109
110 void InstrumentEditor::NotifySampleReferenceChanged(void* pOldSample, void* pNewSample) {
111 for ( // notify all registered listeners
112 std::set<InstrumentEditorListener*>::iterator iter = listeners.begin();
113 iter != listeners.end(); iter++
114 ) (*iter)->OnSampleReferenceChanged(pOldSample, pNewSample, this);
115 }
116
117 } // namespace LinuxSampler

  ViewVC Help
Powered by ViewVC