Isis 3.0 Programmer Reference
Back | Home
RenameProjectWorkOrder.cpp
Go to the documentation of this file.
1 
23 #include "RenameProjectWorkOrder.h"
24 
25 #include <QtDebug>
26 
27 #include <QFileDialog>
28 #include <QInputDialog>
29 #include <QMessageBox>
30 
31 #include "Directory.h"
32 #include "MosaicSceneItem.h"
33 #include "MosaicSceneWidget.h"
34 #include "Project.h"
35 
36 namespace Isis {
37  RenameProjectWorkOrder::RenameProjectWorkOrder(QString newName, Project *project) :
38  WorkOrder(project) {
39  QAction::setText(tr("&Rename Project..."));
40  QUndoCommand::setText(tr("Rename Project"));
41 
43  internalData.append(project->name());
44  internalData.append(newName);
45  setInternalData(internalData);
46  }
47 
48 
49  RenameProjectWorkOrder::RenameProjectWorkOrder(Project *project) :
50  WorkOrder(project) {
51  QAction::setText(tr("&Rename Project..."));
52  QUndoCommand::setText(tr("Rename Project"));
53  }
54 
55 
56  RenameProjectWorkOrder::RenameProjectWorkOrder(const RenameProjectWorkOrder &other) :
57  WorkOrder(other) {
58  }
59 
60 
61  RenameProjectWorkOrder::~RenameProjectWorkOrder() {
62  }
63 
64 
65  RenameProjectWorkOrder *RenameProjectWorkOrder::clone() const {
66  return new RenameProjectWorkOrder(*this);
67  }
68 
69 
71  return (context == ProjectContext);
72  }
73 
74 
76  bool success = WorkOrder::execute();
77 
78  if (success && internalData().count() == 0) {
79  QString newName;
80 
81  do {
82  newName = QInputDialog::getText(NULL, tr("Enter Project Name"),
83  tr("Please enter the new project name"), QLineEdit::Normal,
84  project()->name(), &success);
85 
86  if (success && !isNameValid(newName)) {
87  QMessageBox::critical(NULL, tr("Invalid Project Name"),
88  tr("Project name [%1] is not valid").arg(newName));
89  }
90  }
91  while (success && !isNameValid(newName));
92 
94  internalData.append(project()->name());
95  internalData.append(newName);
96  setInternalData(internalData);
97  }
98 
99  QUndoCommand::setText(tr("Rename Project To [%1]").arg(internalData()[1]));
100 
101  return success && (internalData()[1] != project()->name());
102  }
103 
104 
109  bool RenameProjectWorkOrder::isNameValid(QString nameToCheck) {
110  return !nameToCheck.isEmpty();
111  }
112 
113 
115  // depend on types of ourselves only.
116  return dynamic_cast<RenameProjectWorkOrder *>(other);
117  }
118 
119 
121  project()->setName(internalData()[1]);
122  }
123 
124 
126  project()->setName(internalData()[0]);
127  }
128 }
129 
QString name() const
Get the project&#39;s GUI name.
Definition: Project.cpp:1050
void syncUndo()
This method is designed to be implemented by children work orders.
Project * project() const
Returns the Project this WorkOrder is attached to.
Definition: WorkOrder.cpp:1116
static bool isNameValid(QString nameToCheck)
Check the validity of the given (proposed) project name.
QStringList internalData() const
Gets the internal data for this WorkOrder.
Definition: WorkOrder.cpp:1186
Parent class for anything that performs an action in Project.
Definition: WorkOrder.h:104
Change the project&#39;s GUI name.
bool isExecutable(Context context)
Re-implement this method if your work order utilizes controls for data in order to operate...
bool execute()
The (child) implementation of this method should prompt the user/gather state by any means necessary...
void syncRedo()
This method is designed to be implemented by children work orders.
void setName(QString newName)
Change the project&#39;s name (GUI only, doesn&#39;t affect location on disk).
Definition: Project.cpp:1095
Context
This enumeration is for recording the context of the current Workorder (whether it is part of a proje...
Definition: WorkOrder.h:132
bool dependsOn(WorkOrder *other) const
This is a virtual function whose role in child classes is to determine if this WorkOrder deppends on ...
virtual bool execute()
The (child) implementation of this method should prompt the user/gather state by any means necessary...
Definition: WorkOrder.cpp:1078
void setInternalData(QStringList data)
Sets the internal data for this WorkOrder.
Definition: WorkOrder.cpp:1130

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:28:16