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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2687 - (hide 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 schoenebeck 1374 /***************************************************************************
2     * *
3 schoenebeck 2687 * Copyright (C) 2007 - 2015 Christian Schoenebeck *
4 schoenebeck 1374 * *
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 schoenebeck 1425 #include "../common/global_private.h"
24    
25 schoenebeck 1374 #include <algorithm>
26     #include <functional>
27    
28     namespace LinuxSampler {
29    
30     InstrumentEditor::InstrumentEditor() : Thread(false, false, -1, 0) {
31     pInstrument = NULL;
32 schoenebeck 1876 pUserData = NULL;
33 schoenebeck 2687 pEngineChannel = NULL;
34 schoenebeck 1374 }
35    
36 schoenebeck 1653 InstrumentEditor::~InstrumentEditor() {
37     }
38    
39 schoenebeck 2687 void InstrumentEditor::Launch(EngineChannel* pEngineChannel, void* pInstrument, String sTypeName, String sTypeVersion, void* pUserData) {
40 schoenebeck 1374 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 schoenebeck 1876 this->pUserData = pUserData;
46 schoenebeck 2687 this->pEngineChannel = pEngineChannel;
47 schoenebeck 1374 // 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 schoenebeck 1876 int iResult = Main(pInstrument, sTypeName, sTypeVersion, pUserData);
55 schoenebeck 1374 // reset editor parameters
56     this->pInstrument = NULL;
57     this->sTypeName = "";
58     this->sTypeVersion = "";
59 schoenebeck 1876 this->pUserData = NULL;
60 schoenebeck 1374 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 schoenebeck 2687 EngineChannel* InstrumentEditor::GetEngineChannel() {
71     return pEngineChannel;
72     }
73    
74 schoenebeck 1374 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