98 lines
2.8 KiB
C++
98 lines
2.8 KiB
C++
// This file is part of VSTGUI. It is subject to the license terms
|
|
// in the LICENSE file found in the top-level directory of this
|
|
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
|
|
|
|
#pragma once
|
|
|
|
#include "iappdelegate.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
namespace VSTGUI {
|
|
namespace Standalone {
|
|
namespace Application {
|
|
|
|
enum class ConfigKey : uint64_t;
|
|
struct ConfigValue;
|
|
|
|
//------------------------------------------------------------------------
|
|
/** Startup configuration
|
|
*
|
|
* The standalone library can be configured with a list of key-value pairs.
|
|
* See ConfigKey for a list and description of available keys.
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
using Configuration = std::vector<std::pair<ConfigKey, ConfigValue>>;
|
|
|
|
//------------------------------------------------------------------------
|
|
/** Configuration keys
|
|
*
|
|
* Enumeration of available configuration keys.
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
enum class ConfigKey : uint64_t
|
|
{
|
|
/** Instead of plain text files, use compressed ui description files.
|
|
*
|
|
* This option expects an integer ConfigValue where 0 means that plain text files are used and
|
|
* any other value means that the ui description file is compressed. In this case for
|
|
* development purposes an uncompressed text file is also written.
|
|
*/
|
|
UseCompressedUIDescriptionFiles,
|
|
/** Show application commands in a window context menu
|
|
*
|
|
* This option expects an integer ConfigValue where 0 means that the commands are not shown in
|
|
* the context menu of a window which is shown on a right mouse click, on any other value the
|
|
* commands are shown. If this option is not specified the commands are not shown.
|
|
*/
|
|
ShowCommandsInContextMenu,
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
/** Configuration Value
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
struct ConfigValue
|
|
{
|
|
ConfigValue () = delete;
|
|
#if defined(_MSC_VER) && _MSC_VER < 1910 // Can be removed when dropping VS 2015 Support
|
|
ConfigValue (int64_t v) : type (Type::Integer) { value.integer = v; }
|
|
ConfigValue (const char* s) : type (Type::String) { value.string = s; }
|
|
#else
|
|
constexpr ConfigValue (int64_t v) : type (Type::Integer) { value.integer = v; }
|
|
constexpr ConfigValue (const char* s) : type (Type::String) { value.string = s; }
|
|
#endif
|
|
|
|
enum class Type
|
|
{
|
|
Unknown,
|
|
Integer,
|
|
String
|
|
} type = Type::Unknown;
|
|
|
|
union
|
|
{
|
|
int64_t integer;
|
|
const char* string;
|
|
} value = {};
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
/** Init application
|
|
*
|
|
* @see IDelegate
|
|
*
|
|
* @ingroup standalone
|
|
*/
|
|
struct Init
|
|
{
|
|
explicit Init (DelegatePtr&& delegate, Configuration&& config = {});
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
} // Application
|
|
} // Standalone
|
|
} // VSTGUI
|