-
Notifications
You must be signed in to change notification settings - Fork 47
/
EntityClassChooser.h
67 lines (52 loc) · 1.58 KB
/
EntityClassChooser.h
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
#pragma once
#include "decl/DeclarationSelectorDialog.h"
#include "ui/iwindowstate.h"
#include <sigc++/connection.h>
#include <wx/dataview.h>
namespace wxutil
{
class EntityClassSelector;
/**
* Dialog window displaying a tree of Entity Classes, allowing the selection
* of a class to create at the current location.
*/
class EntityClassChooser final :
public DeclarationSelectorDialog,
public ui::IPersistableObject
{
public:
// Enumeration of possible modes of this dialog
// Influences the dialog title and button labels
enum class Purpose
{
AddEntity,
ConvertEntity,
SelectClassname,
};
private:
EntityClassSelector* _selector;
sigc::connection _defsReloaded;
bool _restoreSelectionFromRegistry;
private:
EntityClassChooser(Purpose purpose);
~EntityClassChooser() override;
void loadEntityClasses();
EntityClassSelector* setupSelector(wxWindow * parent);
public:
void loadFromPath(const std::string& registryKey) override;
void saveToPath(const std::string& registryKey) override;
void SetSelectedDeclName(const std::string& declName) override;
/**
* \brief Construct and show the dialog to choose an entity class,
* returning the result.
*
* \param purpose
* The scenario this dialog has been requested for
*
* \param preselectEclass
* Optional initial class to locate and highlight in the tree after the
* dialog is shown.
*/
static std::string ChooseEntityClass(Purpose purpose, const std::string& preselectEclass = {});
};
} // namespace