summaryrefslogtreecommitdiff
path: root/src/instancemanagerdialog.h
blob: 6dbf015f02ac8a091ffd686f0c549299ee839130 (plain)
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
#ifndef MODORGANIZER_INSTANCEMANAGERDIALOG_INCLUDED
#define MODORGANIZER_INSTANCEMANAGERDIALOG_INCLUDED

#include <QDialog>

namespace Ui { class InstanceManagerDialog; };

class InstanceInfo;
class PluginContainer;

class InstanceManagerDialog : public QDialog
{
  Q_OBJECT

public:
  explicit InstanceManagerDialog(
    const PluginContainer& pc, QWidget *parent = nullptr);

  ~InstanceManagerDialog();

  void select(std::size_t i);
  void openSelectedInstance();

private:
  static const std::size_t NoSelection = -1;

  std::unique_ptr<Ui::InstanceManagerDialog> ui;
  const PluginContainer& m_pc;
  std::vector<std::unique_ptr<InstanceInfo>> m_instances;

  void onSelection();
  void createNew();

  std::size_t singleSelection() const;
  void fill(const InstanceInfo& ii);
};

#endif // MODORGANIZER_INSTANCEMANAGERDIALOG_INCLUDED