MorphoGraphX  2.0-1-227
TaskEditDlg.hpp
Go to the documentation of this file.
1 //
2 // This file is part of MorphoGraphX - http://www.MorphoGraphX.org
3 // Copyright (C) 2012-2015 Richard S. Smith and collaborators.
4 //
5 // If you use MorphoGraphX in your work, please cite:
6 // http://dx.doi.org/10.7554/eLife.05864
7 //
8 // MorphoGraphX is free software, and is licensed under under the terms of the
9 // GNU General (GPL) Public License version 2.0, http://www.gnu.org/licenses.
10 //
11 #ifndef TASKEDITDLG_HPP
12 #define TASKEDITDLG_HPP
13 
14 #include <Process.hpp>
15 
16 #include <QAbstractItemModel>
17 #include <QList>
18 #include <QMap>
19 
20 #include <ui_TaskEditor.h>
21 
22 class QPushButton;
23 
24 typedef QList<float> floatList;
25 
26 Q_DECLARE_METATYPE(floatList)
27 
28 class TasksModel : public QAbstractItemModel
29 {
30  Q_OBJECT
31 public:
32  typedef QList<mgx::ProcessDefinition> task_t;
33  typedef QMap<QString, task_t> tasks_t;
34 
35  TasksModel(const tasks_t& ts, QObject* parent = 0);
36 
37  int rowCount(const QModelIndex& parent = QModelIndex()) const;
38  int columnCount(const QModelIndex& parent = QModelIndex()) const;
39  QVariant data(const QModelIndex& index, int role) const;
40  QMap<int, QVariant> itemData(const QModelIndex& index) const;
41  QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
42  Qt::ItemFlags flags(const QModelIndex& index) const;
43  bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
44  bool setItemData(const QModelIndex& index, const QMap<int, QVariant>& roles);
45  QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const;
46  QModelIndex taskIndex(int task_id) const {
47  return index(task_id, 0);
48  }
49  QModelIndex taskIndex(const QString& task_name) const {
50  return index(task_names.indexOf(task_name), 0);
51  }
52  QModelIndex processIndex(int task_id, int row) const {
53  return index(row, 0, taskIndex(task_id));
54  }
55 
56  QModelIndex parent(const QModelIndex& index) const;
57 
58  bool insertRows(int position, int rows, const QModelIndex& index = QModelIndex());
59  bool removeRows(int position, int rows, const QModelIndex& index = QModelIndex());
60  bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
61  QStringList mimeTypes() const;
62  Qt::DropActions supportedDropActions() const;
63  Qt::DropActions supportedDragActions() const { return Qt::MoveAction; }
64  QMimeData* mimeData(const QModelIndexList& indexes) const;
65 
66  bool addTask(const QString& name);
67  bool addProcess(const QString& task_name, const mgx::ProcessDefinition& def);
68  bool deleteTask(const QString& name);
69  bool renameTask(const QString& old_name, const QString& new_name);
70  bool copyTask(const QString& old_name, const QString& new_name);
71 
72  void deleteItems(const QModelIndexList& lst);
73  void deleteItems(QList<QList<int> > lst);
74 
75  QStringList task_names;
76  QList<int> task_numbers;
78 
79  bool isTask(const QModelIndex& idx) const;
80 };
81 
82 class TaskEditDlg : public QDialog
83 {
84  Q_OBJECT
85 
86 public:
90 
91  TaskEditDlg(const tasks_t& ts, QMap<QString, ProcessDefinition>& procs,
92  QWidget* parent = 0, Qt::WindowFlags f = 0);
93 
95  return model->tasks;
96  }
97 
98  static void readTasks(const QString& filename, QMap<QString, ProcessDefinition>& procs,
99  tasks_t& newTasks);
100  static void writeTask(QTextStream& pout, const QString& name, const task_t& task);
101  static void writeTasks(QTextStream& pout, const tasks_t& tasks);
102 
103 protected:
104  void setProcesses(QTreeWidget* widget);
105  int getSelectedRow(int default_row = 0);
106  QString getSelectedTaskName(const QString& op, const QString& msg);
107  QString getCurrentTaskName();
108 
109 protected slots:
110  void on_newTask_clicked();
111  void on_deleteTask_clicked();
112  void on_exportTask_clicked();
113  void on_importTask_clicked();
114  void on_renameTask_clicked();
115  void on_copyTask_clicked();
118  void on_tasks_deleteItems(const QModelIndexList& lst);
119  void on_tasks_activated(const QModelIndex& index);
120 
121 private:
122  Ui::TaskEditDlg ui;
123  TasksModel* model;
124 
125  QMap<QString, ProcessDefinition>& procs;
126 };
127 
128 #endif
TaskEditDlg::on_copyTaskToLocal_clicked
void on_copyTaskToLocal_clicked()
TasksModel::taskIndex
QModelIndex taskIndex(const QString &task_name) const
Definition: TaskEditDlg.hpp:49
Process.hpp
TaskEditDlg::TaskEditDlg
TaskEditDlg(const tasks_t &ts, QMap< QString, ProcessDefinition > &procs, QWidget *parent=0, Qt::WindowFlags f=0)
TaskEditDlg::tasks
tasks_t tasks()
Definition: TaskEditDlg.hpp:94
TasksModel::task_t
QList< mgx::ProcessDefinition > task_t
Definition: TaskEditDlg.hpp:32
TasksModel::processIndex
QModelIndex processIndex(int task_id, int row) const
Definition: TaskEditDlg.hpp:52
TaskEditDlg::on_copyTask_clicked
void on_copyTask_clicked()
TasksModel::supportedDragActions
Qt::DropActions supportedDragActions() const
Definition: TaskEditDlg.hpp:63
TaskEditDlg
Definition: TaskEditDlg.hpp:82
TaskEditDlg::getSelectedRow
int getSelectedRow(int default_row=0)
TaskEditDlg::getSelectedTaskName
QString getSelectedTaskName(const QString &op, const QString &msg)
TaskEditDlg::writeTask
static void writeTask(QTextStream &pout, const QString &name, const task_t &task)
TaskEditDlg::on_importTask_clicked
void on_importTask_clicked()
TaskEditDlg::on_tasks_activated
void on_tasks_activated(const QModelIndex &index)
TaskEditDlg::on_newTask_clicked
void on_newTask_clicked()
TasksModel::tasks_t
QMap< QString, task_t > tasks_t
Definition: TaskEditDlg.hpp:33
TaskEditDlg::on_tasks_deleteItems
void on_tasks_deleteItems(const QModelIndexList &lst)
TaskEditDlg::readTasks
static void readTasks(const QString &filename, QMap< QString, ProcessDefinition > &procs, tasks_t &newTasks)
TaskEditDlg::setProcesses
void setProcesses(QTreeWidget *widget)
TasksModel::task_names
QStringList task_names
Definition: TaskEditDlg.hpp:75
TaskEditDlg::on_makeSharedTask_clicked
void on_makeSharedTask_clicked()
TaskEditDlg::on_renameTask_clicked
void on_renameTask_clicked()
TaskEditDlg::ProcessDefinition
mgx::ProcessDefinition ProcessDefinition
Definition: TaskEditDlg.hpp:89
TaskEditDlg::writeTasks
static void writeTasks(QTextStream &pout, const tasks_t &tasks)
TaskEditDlg::on_deleteTask_clicked
void on_deleteTask_clicked()
TasksModel::task_numbers
QList< int > task_numbers
Definition: TaskEditDlg.hpp:76
TasksModel
Definition: TaskEditDlg.hpp:28
TasksModel::taskIndex
QModelIndex taskIndex(int task_id) const
Definition: TaskEditDlg.hpp:46
TaskEditDlg::task_t
TasksModel::task_t task_t
Definition: TaskEditDlg.hpp:87
TaskEditDlg::on_exportTask_clicked
void on_exportTask_clicked()
TaskEditDlg::getCurrentTaskName
QString getCurrentTaskName()
TasksModel::tasks
tasks_t tasks
Definition: TaskEditDlg.hpp:77
mgx::ProcessDefinition
Definition: Process.hpp:873
TaskEditDlg::tasks_t
TasksModel::tasks_t tasks_t
Definition: TaskEditDlg.hpp:88
floatList
QList< float > floatList
Definition: TaskEditDlg.hpp:22