MorphoGraphX
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TaskEditDlg.hpp
1 #ifndef TASKEDITDLG_HPP
2 #define TASKEDITDLG_HPP
3 
4 #include <Process.hpp>
5 
6 #include <QAbstractItemModel>
7 #include <QList>
8 #include <QMap>
9 
10 #include <ui_TaskEditor.h>
11 
12 class QPushButton;
13 
14 typedef QList<float> floatList;
15 
16 Q_DECLARE_METATYPE(floatList)
17 
18 struct TypedProcessDefinition : public mgx::process::BaseProcessDefinition {
19  QString type;
20  bool shared;
21 };
22 
24  Q_OBJECT
25 public:
28 
29  TasksModel(const tasks_t& ts, QObject* parent = 0);
30 
31  int rowCount(const QModelIndex& parent = QModelIndex()) const;
32  int columnCount(const QModelIndex& parent = QModelIndex()) const;
33  QVariant data(const QModelIndex& index, int role) const;
34  QMap<int, QVariant> itemData(const QModelIndex& index) const;
35  QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
36  Qt::ItemFlags flags(const QModelIndex& index) const;
37  bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
38  bool setItemData(const QModelIndex& index, const QMap<int, QVariant>& roles);
39  QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const;
40  QModelIndex taskIndex(int task_id) const {
41  return index(task_id, 0);
42  }
43  QModelIndex taskIndex(const QString& task_name) const {
44  return index(task_names.indexOf(task_name), 0);
45  }
46  QModelIndex processIndex(int task_id, int row) const {
47  return index(row, 0, taskIndex(task_id));
48  }
49 
50  QModelIndex parent(const QModelIndex& index) const;
51 
52  bool insertRows(int position, int rows, const QModelIndex& index = QModelIndex());
53  bool removeRows(int position, int rows, const QModelIndex& index = QModelIndex());
54  bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
55  QStringList mimeTypes() const;
56  Qt::DropActions supportedDropActions() const;
57  QMimeData* mimeData(const QModelIndexList& indexes) const;
58 
59  bool addTask(const QString& name);
60  bool addProcess(const QString& task_name, const TypedProcessDefinition& def);
61  bool deleteTask(const QString& name);
62  bool renameTask(const QString& old_name, const QString& new_name);
63  bool copyTask(const QString& old_name, const QString& new_name);
64 
65  void deleteItems(const QModelIndexList& lst);
66  void deleteItems(QList<QList<int> > lst);
67 
68  QStringList task_names;
69  QList<int> task_numbers;
70  tasks_t tasks;
71 
72  bool isTask(const QModelIndex& idx) const;
73 };
74 
75 class TaskEditDlg : public QDialog {
76  Q_OBJECT
77 
78 public:
79  typedef TasksModel::task_t task_t;
82 
85  QMap<QString, BaseProcessDefinition>& globalProc, QWidget* parent = 0, Qt::WindowFlags f = 0);
86 
87  tasks_t tasks() {
88  return model->tasks;
89  }
90 
91  static void readTasks(const QString& filename, QMap<QString, BaseProcessDefinition>& stackProc,
93  QMap<QString, BaseProcessDefinition>& globalProc, tasks_t& newTasks);
94  static void readTasksFromINI(const QString& filename, QMap<QString, BaseProcessDefinition>& stackProc,
96  QMap<QString, BaseProcessDefinition>& globalProc, tasks_t& newTasks);
97  static void writeTask(QTextStream& pout, const QString& name, const task_t& task);
98  static void writeTasks(QTextStream& pout, const tasks_t& tasks);
99  static void loadTasksFromSettings(tasks_t& newTasks);
100  static void saveTasksToSettings(const tasks_t& tasks);
101 
102 protected:
103  void setProcesses(const QString& type, QTreeWidget* widget);
104  int getSelectedRow(int default_row = 0);
105  QString getSelectedTaskName(const QString& op, const QString& msg);
106  QString getCurrentTaskName();
107 
108 protected slots:
109  void on_newTask_clicked();
110  void on_deleteTask_clicked();
111  void on_exportTask_clicked();
112  void on_importTask_clicked();
113  void on_renameTask_clicked();
114  void on_copyTask_clicked();
115  void on_makeSharedTask_clicked();
116  void on_copyTaskToLocal_clicked();
117  void on_tasks_deleteItems(const QModelIndexList& lst);
118  void on_tasks_activated(const QModelIndex& index);
119 
120 private:
121  Ui::TaskEditDlg ui;
122  TasksModel* model;
123 
127 };
128 
129 #endif
rowCount(const QModelIndex &parent=QModelIndex()
Definition: TaskEditDlg.hpp:18
AttribBase(const QString &name) const QString & name()
Default constructor of named attribute.
Definition: Attributes.hpp:54
Definition of a process, without the process factory.
Definition: Process.hpp:1229
File containing the definition of a Process.
Definition: TaskEditDlg.hpp:23
columnCount(const QModelIndex &parent=QModelIndex()
Definition: TaskEditDlg.hpp:75
indexOf(const QRegExp &rx, int from=0)