1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*!********************************************************************
Audacity: A Digital Audio Editor
AudioComDialogBase.h
Dmitry Vedenko
**********************************************************************/
#pragma once
#include <functional>
#include <string>
#include <vector>
#include "Identifier.h"
#include "TranslatableString.h"
#include "wxPanelWrapper.h"
class AudacityProject;
class wxBoxSizer;
namespace audacity::cloud::audiocom::sync
{
struct DialogIdentifierTag
{
};
using DialogIdentifier = TaggedIdentifier<DialogIdentifierTag>;
struct DialogButtonIdentifierTag
{
};
using DialogButtonIdentifier = TaggedIdentifier<DialogButtonIdentifierTag>;
class AudioComDialogBase : wxDialogWrapper
{
public:
DialogButtonIdentifier
ShowDialog(std::function<DialogButtonIdentifier()> poller = {});
static DialogButtonIdentifier CancelButtonIdentifier();
protected:
enum class DialogMode
{
Opening,
Saving,
};
AudioComDialogBase(
const AudacityProject* project,
const DialogIdentifier& optionalPrefsIdentifier = {},
DialogMode dialogMode = DialogMode::Saving);
virtual ~AudioComDialogBase() = default;
void AddTitle(const TranslatableString& title);
void AddParagraph(const TranslatableString& paragraph);
enum ButtonType
{
None = 0,
DefaultButton = 1,
EscButton = 2,
};
void AddButton(
DialogButtonIdentifier identifier, const TranslatableString& text,
int type = None);
void SetDialogTitle(const TranslatableString& dialog);
virtual bool HasSeparator() const;
void EndDialog(DialogButtonIdentifier identifier);
private:
const AudacityProject* mProject;
DialogIdentifier mOptionalPrefsIdentifier;
wxBoxSizer* mDialogSizer;
wxBoxSizer* mButtonSizer;
DialogButtonIdentifier mEscButtonIdentifier { CancelButtonIdentifier() };
DialogButtonIdentifier mResultButtonIdentifier;
}; // class AudioComDialogBase
void ShowDialogOn(
std::function<bool()> condition, std::function<void()> dialogFactory);
} // namespace audacity::cloud::audiocom::sync
|