1 /*************************************************************************** 2 ** ** 3 ** Polyphone, a soundfont editor ** 4 ** Copyright (C) 2013-2020 Davy Triponney ** 5 ** ** 6 ** This program is free software: you can redistribute it and/or modify ** 7 ** it under the terms of the GNU General Public License as published by ** 8 ** the Free Software Foundation, either version 3 of the License, or ** 9 ** (at your option) any later version. ** 10 ** ** 11 ** This program is distributed in the hope that it will be useful, ** 12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** 13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** 14 ** GNU General Public License for more details. ** 15 ** ** 16 ** You should have received a copy of the GNU General Public License ** 17 ** along with this program. If not, see http://www.gnu.org/licenses/. ** 18 ** ** 19 **************************************************************************** 20 ** Author: Davy Triponney ** 21 ** Website/Contact: https://www.polyphone-soundfonts.com ** 22 ** Date: 01.01.2013 ** 23 ***************************************************************************/ 24 25 #ifndef TOOLLINKSAMPLE_H 26 #define TOOLLINKSAMPLE_H 27 28 #include "abstracttooliterating.h" 29 #include <QObject> 30 31 class ToolLinkSample: public AbstractToolIterating 32 { 33 Q_OBJECT 34 35 public: ToolLinkSample()36 ToolLinkSample() : AbstractToolIterating(elementSmpl) 37 { 38 _async = false; 39 } 40 41 /// Icon, label and category displayed to the user to describe the tool getIconName()42 QString getIconName() const override 43 { 44 return ":/tool/link.svg"; 45 } 46 getCategory()47 QString getCategory() const override 48 { 49 return tr("Stereo samples"); 50 } 51 52 /// Internal identifier getIdentifier()53 QString getIdentifier() const override 54 { 55 return "smpl:link"; 56 } 57 58 /// Method executed before the iterating process 59 void beforeProcess(IdList ids) override; 60 61 /// Process an element 62 void process(SoundfontManager * sm, EltID id, AbstractToolParameters * parameters) override; 63 64 protected: getLabelInternal()65 QString getLabelInternal() const override 66 { 67 return tr("Find a link"); 68 } 69 70 private: 71 void scan(SoundfontManager * sm, int indexSf2); 72 void associate(SoundfontManager * sm, EltID leftSmpl, EltID rightSmpl); 73 void disconnectTarget(SoundfontManager * sm, EltID id); 74 75 QList<int> _smplIds; 76 QStringList _names; 77 QList<bool> _leftRight; // false is left, true is right 78 QList<int> _processedIds; 79 QStringList _sampleErrors; 80 }; 81 82 #endif // TOOLLINKSAMPLE_H 83