84 lines
2.7 KiB
C++
84 lines
2.7 KiB
C++
/*
|
|
* DISTRHO Cardinal Plugin
|
|
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 3 of
|
|
* the License, or any later version.
|
|
*
|
|
* This program 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 General Public License for more details.
|
|
*
|
|
* For a full copy of the GNU General Public License see the LICENSE file.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
// check if PRIVATE is defined already before including any headers
|
|
#ifdef PRIVATE
|
|
# define PRIVATE_WAS_DEFINED
|
|
#endif
|
|
|
|
// use mingw print format
|
|
#if defined(ARCH_WIN) && !defined(SKIP_MINGW_FORMAT)
|
|
# include <regex>
|
|
# define format(f,a,b) format(__MINGW_PRINTF_FORMAT,a,b)
|
|
#endif
|
|
|
|
#include_next "common.hpp"
|
|
|
|
// Make binary resources work the same no matter the OS
|
|
#undef BINARY
|
|
#undef BINARY_START
|
|
#undef BINARY_END
|
|
#undef BINARY_SIZE
|
|
|
|
#define BINARY(sym) extern const unsigned char sym[]; extern const unsigned int sym##_len
|
|
#define BINARY_START(sym) ((const void*) sym)
|
|
#define BINARY_END(sym) ((const void*) sym + sym##_len)
|
|
#define BINARY_SIZE(sym) (sym##_len)
|
|
|
|
// undefine PRIVATE if needed
|
|
#if defined(PRIVATE) && !defined(PRIVATE_WAS_DEFINED)
|
|
# undef PRIVATE
|
|
#endif
|
|
|
|
// and also our flag
|
|
#undef PRIVATE_WAS_DEFINED
|
|
|
|
// Cardinal specific API
|
|
#include <functional>
|
|
#define USING_CARDINAL_NOT_RACK
|
|
|
|
// OS separator macros
|
|
#ifdef ARCH_WIN
|
|
# define CARDINAL_OS_SEP '\\'
|
|
# define CARDINAL_OS_SEP_STR "\\"
|
|
# define CARDINAL_OS_SPLIT ';'
|
|
# define CARDINAL_OS_SPLIT_STR ";"
|
|
#else
|
|
# define CARDINAL_OS_SEP '/'
|
|
# define CARDINAL_OS_SEP_STR "/"
|
|
# define CARDINAL_OS_SPLIT ':'
|
|
# define CARDINAL_OS_SPLIT_STR ":"
|
|
#endif
|
|
|
|
// opens a file browser, startDir and title can be null
|
|
// action is always triggered on close (path can be null), must be freed if not null
|
|
void async_dialog_filebrowser(bool saving, const char* startDir, const char* title,
|
|
std::function<void(char* path)> action);
|
|
|
|
// opens a message dialog with only an "ok" button
|
|
void async_dialog_message(const char* message);
|
|
|
|
// opens a message dialog with "ok" and "cancel" buttons
|
|
// action is triggered if user presses "ok"
|
|
void async_dialog_message(const char* message, std::function<void()> action);
|
|
|
|
// opens a text input dialog, message and text can be null
|
|
// action is always triggered on close (newText can be null), must be freed if not null
|
|
void async_dialog_text_input(const char* message, const char* text, std::function<void(char* newText)> action);
|