19 #ifndef INC_C4ConsoleQtNewScenario
20 #define INC_C4ConsoleQtNewScenario
26 #include "ui_C4ConsoleQtNewScenario.h"
30 class C4ConsoleQtDefinitionFileListModel :
public QAbstractItemModel
35 C4ConsoleQtDefinitionFileListModel();
36 ~C4ConsoleQtDefinitionFileListModel()
override;
37 void AddExtraDef(
const char *def);
38 std::list<const char *> GetUserSelectedDefinitions()
const;
39 std::list<const char *> GetSelectedDefinitions()
const;
40 void SetForcedSelection(
const std::list<const char *> &defs);
47 DefFileInfo *parent{
nullptr};
49 std::vector< std::unique_ptr<DefFileInfo> > children;
51 bool was_opened{
true}, is_root{
true};
52 bool user_selected{
false}, force_selected{
false};
56 DefFileInfo(DefFileInfo *parent,
const char *filename,
const char *root_path);
58 int32_t GetChildCount();
59 DefFileInfo *GetParent()
const {
return parent; }
60 DefFileInfo *GetChild(int32_t index);
61 int32_t GetChildIndex(
const DefFileInfo *child);
62 const char *GetName()
const {
return filename.
getData(); }
63 bool IsRoot()
const {
return is_root; }
64 void SetSelected(
bool to_val,
bool forced);
65 bool IsUserSelected()
const {
return user_selected; }
66 bool IsForceSelected()
const {
return force_selected; }
67 bool IsSelected()
const {
return user_selected || force_selected; }
68 bool IsDisabled()
const {
return force_selected || (parent && parent->IsSelected()); }
69 void AddUserSelectedDefinitions(std::list<const char *> *result)
const;
70 void AddSelectedDefinitions(std::list<const char *> *result)
const;
71 void SetForcedSelection(
const char *selected_def_filepath);
72 void AddExtraDef(
const char *def);
75 mutable DefFileInfo root;
78 int rowCount(
const QModelIndex & parent = QModelIndex())
const override;
79 int columnCount(
const QModelIndex & parent = QModelIndex())
const override;
80 QVariant data(
const QModelIndex & index,
int role = Qt::DisplayRole)
const override;
81 QModelIndex index(
int row,
int column,
const QModelIndex &parent)
const override;
82 QModelIndex parent(
const QModelIndex &index)
const override;
83 Qt::ItemFlags flags(
const QModelIndex &index)
const override;
84 bool setData(
const QModelIndex& index,
const QVariant& value,
int role)
override;
87 class C4ConsoleQtNewScenarioDlg :
public QDialog
91 Ui::NewScenarioDialog ui;
93 bool has_custom_filename;
94 C4ConsoleQtDefinitionFileListModel def_file_model;
95 std::vector<C4Scenario> all_template_c4s;
98 C4ConsoleQtNewScenarioDlg(
class QMainWindow *parent_window);
100 bool IsHostAsNetwork()
const;
103 void InitScenarioTemplateList();
104 void AddScenarioTemplate(
C4Group &parent,
const char *filename,
bool is_default);
105 bool CreateScenario();
106 void DoError(
const char *msg);
109 void CreatePressed();
110 void BrowsePressed();
111 void TitleChanged(
const QString &new_title);
112 void SelectedTemplateChanged(
int new_selection);
char * GetFilename(char *szPath)
const char * getData() const