/* Copyright (C) 2000-2001 Stefan Westerfeld stefan@space.twc.de 2001-2003 Matthias Kretz kretz@kde.org 2002-2003 Arnold Krille arnold@arnoldarts.de This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* * DISCLAIMER: The interfaces in artsmodules.idl (and the derived .cc/.h files) * DO NOT GUARANTEE BINARY COMPATIBILITY YET. * * They are intended for developers. You shouldn't expect that applications in * binary form will be fully compatibile with further releases of these * interfaces. */ #include #include #include #include module Arts { module Environment { interface Context { void addEntry(string name, object obj); string lookupEntry(object obj); void removeEntry(object obj); }; interface Item; interface Container { attribute string dataDirectory; attribute Context context; readonly attribute sequence items; sequence saveToList(); void loadFromList(sequence strlist); void addItem(Item item); Item createItem(string name); void removeItem(Item item); }; interface Item { /** * true if item resides inside a container */ readonly attribute boolean active; /** * the container the item lives in */ readonly attribute Container parent; /** * called by the container to insert/remove item from/to the * environment */ void setContainer(Container container); /** * called by the container to save the item */ sequence saveToList(); /** * called by the container to restore the item */ void loadFromList(sequence strlist); }; interface InstrumentItem : Item { readonly attribute Arts::MidiPort port; attribute string filename; attribute string busname; }; interface InstrumentItemGuiFactory : Arts::GuiFactory { }; interface StereoEffectItem : Item { attribute Arts::SynthModule effect; attribute Arts::StereoEffectStack stack; }; interface MixerChannel : Arts::StereoEffect { attribute string name; }; interface MixerItem : Item { readonly attribute sequence channels; attribute long channelCount; attribute string name; attribute string type; }; interface EffectRackItem : Item { Arts::StereoEffect createEffect( string type, string name ); void delEffect( long pos ); void routeToMaster( long pos, boolean tomaster ); readonly attribute sequence effects; readonly attribute long effectCount; attribute string name; }; }; interface MixerItemGui { /*writeonly*/ attribute boolean active; /*writeonly*/ attribute long channelCount; /*writeonly*/ attribute string type; // builds a MixerItemGui for a specific MixerItem (call this exactly once) Widget initialize(Environment::MixerItem item); }; interface EffectRackSlot; interface EffectRackItemGui { void removeSlot( EffectRackSlot slot ); void routeToMaster( EffectRackSlot slot, boolean tomaster ); attribute boolean active; attribute string type; /*writeonly*/ attribute boolean addeffect; // builds a EffectRackItemGui for a specific EffectRackItem (call this exactly once) Widget initialize(Environment::EffectRackItem item); }; interface EffectRackSlot { void constructor( Widget parent, Widget effect, EffectRackItemGui effectrackgui ); /*writeonly*/ attribute boolean removeslot; /*writeonly*/ attribute boolean tomaster; }; // creates: Environment::MixerItem, SimpleMixerChannel interface MixerGuiFactory : GuiFactory { }; // creates: Environment::EffectRackItem interface EffectRackGuiFactory : GuiFactory { }; };