Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preparation for Database integration #210

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion assembly/assemblyCommon/AssemblyAssemblyActionWidget.cc
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ void AssemblyAssemblyActionWidget::disable(const int state)
return;
}

void AssemblyAssemblyActionWidget::connect_action(const QObject* qobject, const char* start_slot, const char* stop_signal)
void AssemblyAssemblyActionWidget::connect_action(const QObject* qobject, const char* start_slot, const char* stop_signal, const char* abort_signal)
{
if(qobject_){ this->reset_action(); }

Expand All @@ -106,6 +106,7 @@ void AssemblyAssemblyActionWidget::connect_action(const QObject* qobject, const
qobject_ = qobject;
start_slot_ = start_slot;
stop_signal_ = stop_signal;
abort_signal_ = abort_signal;

connect(this->button(), SIGNAL(clicked()), this, SLOT(start_action()));
}
Expand All @@ -121,6 +122,7 @@ void AssemblyAssemblyActionWidget::reset_action()
qobject_ = nullptr;
start_slot_ = nullptr;
stop_signal_ = nullptr;
abort_signal_ = nullptr;
}

void AssemblyAssemblyActionWidget::start_action()
Expand All @@ -131,6 +133,11 @@ void AssemblyAssemblyActionWidget::start_action()

connect(qobject_, stop_signal_, this, SLOT(disable_action()));

if(abort_signal_ != nullptr)
{
connect(qobject_, abort_signal_, this, SLOT(abort_action()));
}

emit action_request();
}
else
Expand All @@ -157,3 +164,22 @@ void AssemblyAssemblyActionWidget::disable_action()
<< ": invalid (NULL) pointer to QObject, no action taken";
}
}

void AssemblyAssemblyActionWidget::abort_action()
{
if(qobject_)
{
disconnect(this, SIGNAL(action_request()), qobject_, start_slot_);

disconnect(qobject_, stop_signal_, this, SLOT(disable_action()));

disconnect(qobject_, abort_signal_, this, SLOT(abort_action()));

inhibit_dialogue_ = true;
}
else
{
NQLog("AssemblyAssemblyActionWidget", NQLog::Warning) << "abort_action"
<< ": invalid (NULL) pointer to QObject, no action taken";
}
}
4 changes: 3 additions & 1 deletion assembly/assemblyCommon/AssemblyAssemblyActionWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class AssemblyAssemblyActionWidget : public QWidget
QPushButton* button() const { return button_; }
QCheckBox* checkbox() const { return checkbox_; }

void connect_action(const QObject*, const char*, const char*);
void connect_action(const QObject*, const char*, const char*, const char* = nullptr);

protected:
QHBoxLayout* layout_;
Expand All @@ -45,6 +45,7 @@ class AssemblyAssemblyActionWidget : public QWidget
const QObject* qobject_;
const char* start_slot_;
const char* stop_signal_;
const char* abort_signal_;

bool inhibit_dialogue_;

Expand All @@ -55,6 +56,7 @@ class AssemblyAssemblyActionWidget : public QWidget
void reset_action();
void start_action();
void disable_action();
void abort_action();

signals:
void action_request();
Expand Down
161 changes: 161 additions & 0 deletions assembly/assemblyCommon/AssemblyAssemblyV2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
#include <string>

#include <QMessageBox>
#include <QInputDialog>
#include <QDialogButtonBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QTextEdit>

AssemblyAssemblyV2::AssemblyAssemblyV2(const LStepExpressMotionManager* const motion, const RelayCardManager* const vacuum, const AssemblySmartMotionManager* const smart_motion, QObject* parent)
: QObject(parent)
Expand Down Expand Up @@ -46,6 +52,12 @@ AssemblyAssemblyV2::AssemblyAssemblyV2(const LStepExpressMotionManager* const mo
, PSSPlusSpacersToMaPSAPosition_Y_(0.)
, PSSPlusSpacersToMaPSAPosition_Z_(0.)
, PSSPlusSpacersToMaPSAPosition_A_(0.)

, Baseplate_ID_()
, MaPSA_ID_()
, PSS_ID_()
, Glue_ID_()
, Module_ID_()
{
// validate pointers to controllers
this->motion();
Expand Down Expand Up @@ -144,6 +156,155 @@ void AssemblyAssemblyV2::use_smartMove(const int state)
}
// ----------------------------------------------------------------------------------------------------

void AssemblyAssemblyV2::ScanMaPSAID_start()
{
bool ok = false;
QString MaPSA_ID = QInputDialog::getText(nullptr, tr("Scan MaPSA ID"),
tr("Scan MaPSA ID:"), QLineEdit::Normal,
tr(""), &ok);
if (!ok || MaPSA_ID.isEmpty()){
emit ScanMaPSAID_aborted();
return;
} else {
MaPSA_ID_ = MaPSA_ID;
emit MaPSA_ID_updated(MaPSA_ID);
emit ScanMaPSAID_finished();
}
}

void AssemblyAssemblyV2::ScanPSSID_start()
{
bool ok = false;
QString PSS_ID = QInputDialog::getText(nullptr, tr("Scan PS-s ID"),
tr("Scan PS-s ID:"), QLineEdit::Normal,
tr(""), &ok);
if (!ok || PSS_ID.isEmpty()){
emit ScanPSSID_aborted();
return;
} else {
PSS_ID_ = PSS_ID;
emit PSS_ID_updated(PSS_ID);
emit ScanPSSID_finished();
}
}

void AssemblyAssemblyV2::ScanBaseplateID_start()
{
bool ok = false;
QString Baseplate_ID = QInputDialog::getText(nullptr, tr("Scan Baseplate ID"),
tr("Scan Baseplate ID:"), QLineEdit::Normal,
tr(""), &ok);
if (!ok || Baseplate_ID.isEmpty()){
emit ScanBaseplateID_aborted();
return;
} else {
Baseplate_ID_ = Baseplate_ID;
emit Baseplate_ID_updated(Baseplate_ID);
emit ScanBaseplateID_finished();
}
}

void AssemblyAssemblyV2::ScanGlueID_start()
{
bool ok = false;
QString Glue_ID = QInputDialog::getText(nullptr, tr("Scan Slow Glue ID"),
tr("Scan Slow Glue ID:"), QLineEdit::Normal,
tr(""), &ok);
if (!ok || Glue_ID.isEmpty()){
emit ScanGlueID_aborted();
return;
} else {
Glue_ID_ = Glue_ID;
emit Glue_ID_updated(Glue_ID);
emit ScanGlueID_finished();
}
}

void AssemblyAssemblyV2::ScanModuleID_start()
{
bool ok = false;
QString Module_ID = QInputDialog::getText(nullptr, tr("Scan Module ID"),
tr("Scan Module ID:"), QLineEdit::Normal,
tr(""), &ok);
if (!ok || Module_ID.isEmpty()){
emit ScanModuleID_aborted();
return;
} else {
Module_ID_ = Module_ID;
emit Module_ID_updated(Module_ID);
emit ScanModuleID_finished();
}
}

void AssemblyAssemblyV2::PushToDB_start()
{
if(Baseplate_ID_.isEmpty() || MaPSA_ID_.isEmpty() || PSS_ID_.isEmpty() || Module_ID_.isEmpty() || Glue_ID_.isEmpty())
{
QMessageBox msgBox;
msgBox.setWindowTitle(tr("Information for Database Upload missing"));
QString msg = QString("The following IDs are missing:") + (Baseplate_ID_.isEmpty() ? "\n\tBaseplate ID" : "") + (MaPSA_ID_.isEmpty() ? "\n\tMaPSA ID" : "") + (PSS_ID_.isEmpty() ? "\n\tPSS ID" : "") + (Glue_ID_.isEmpty() ? "\n\tGlue ID" : "") + (Module_ID_.isEmpty() ? "\n\tModule ID" : "");
msgBox.setText(msg);
msgBox.setInformativeText("Please add this information via the toolbar.");
msgBox.setStandardButtons(QMessageBox::Ok);
int ret = msgBox.exec();

emit PushToDB_aborted();
return;
}

QDialog* msgBox = new QDialog();
msgBox->setWindowTitle(tr("Push Module Information to Database"));

QVBoxLayout* vlay = new QVBoxLayout();
msgBox->setLayout(vlay);

QLabel* main_txt = new QLabel(QString("Push the following information to database:\n\tBP:\t%1\n\tMaPSA:\t%2\n\tPS-s:\t%3\n\tGlue:\t%4\n\tModule:\t%5").arg(Baseplate_ID_).arg(MaPSA_ID_).arg(PSS_ID_).arg(Glue_ID_).arg(Module_ID_));
vlay->addWidget(main_txt);

QHBoxLayout* comment_lay = new QHBoxLayout();

QLabel* comment_lab = new QLabel("Comments:");
QTextEdit* comment_lin = new QTextEdit("");
comment_lin->setTabChangesFocus(true);
comment_lin->setFixedHeight(60);

comment_lay->addWidget(comment_lab);
comment_lay->addWidget(comment_lin);

vlay->addLayout(comment_lay);

QLabel* info_txt = new QLabel("Do you want to push this information to the Database?");
vlay->addWidget(info_txt);

QDialogButtonBox* button_box = new QDialogButtonBox(Qt::Horizontal);
button_box->addButton(QDialogButtonBox::Yes);
button_box->addButton(QDialogButtonBox::No);
button_box->setCenterButtons(true);

vlay->addWidget(button_box);

connect(button_box, SIGNAL(accepted()), msgBox, SLOT(accept()));
connect(button_box, SIGNAL(rejected()), msgBox, SLOT(reject()));

int ret = msgBox->exec();

switch(msgBox->result())
{
case QDialog::Rejected:
emit PushToDB_aborted();
return;
case QDialog::Accepted:
// <--- Insert function to push to database here. --->
NQLog("AssemblyAssemblyV2", NQLog::Spam) << "PushToDB_start: "
<< QString("Push the following information to database:\n\tBaseplate:\t%1\n\tMaPSA:\t\t%2\n\tPS-s:\t\t%3\n\tPS-s:\t\t%4\n\tModule:\t\t%5\n\tComment:\t\t%6").arg(Baseplate_ID_).arg(MaPSA_ID_).arg(PSS_ID_).arg(Glue_ID_).arg(Module_ID_).arg(comment_lin->toPlainText()).toStdString();
emit PushToDB_finished();
break;
default:
emit PushToDB_aborted();
return;
}
}

// ----------------------------------------------------------------------------------------------------
// GoToSensorMarkerPreAlignment -----------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------
Expand Down
35 changes: 35 additions & 0 deletions assembly/assemblyCommon/AssemblyAssemblyV2.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ class AssemblyAssemblyV2 : public QObject
double PSSPlusSpacersToMaPSAPosition_Z_;
double PSSPlusSpacersToMaPSAPosition_A_;

QString Baseplate_ID_, MaPSA_ID_, PSS_ID_, Glue_ID_, Module_ID_;

bool alreadyClicked_LowerPickupToolOntoMaPSA, alreadyClicked_LowerPickupToolOntoPSS, alreadyClicked_LowerMaPSAOntoBaseplate, alreadyClicked_LowerPSSOntoSpacers, alreadyClicked_LowerPSSPlusSpacersOntoGluingStage, alreadyClicked_LowerPSSPlusSpacersOntoMaPSA;

bool skip_dipping_;
Expand Down Expand Up @@ -158,6 +160,19 @@ class AssemblyAssemblyV2 : public QObject

// others

void ScanMaPSAID_start();
void ScanPSSID_start();
void ScanBaseplateID_start();
void ScanGlueID_start();
void ScanModuleID_start();
void PushToDB_start();

void Update_Baseplate_ID(QString ID) {Baseplate_ID_ = ID;};
void Update_MaPSA_ID(QString ID) {MaPSA_ID_ = ID;};
void Update_PSS_ID(QString ID) {PSS_ID_ = ID;};
void Update_Glue_ID(QString ID) {Glue_ID_ = ID;};
void Update_Module_ID(QString ID) {Module_ID_ = ID;};

void RegisterPSSPlusSpacersToMaPSAPosition_start();
void RegisterPSSPlusSpacersToMaPSAPosition_finish();

Expand All @@ -171,6 +186,20 @@ class AssemblyAssemblyV2 : public QObject
void move_absolute_request(const double, const double, const double, const double);
void move_relative_request(const double, const double, const double, const double);

void ScanMaPSAID_finished();
void ScanPSSID_finished();
void ScanBaseplateID_finished();
void ScanGlueID_finished();
void ScanModuleID_finished();
void PushToDB_finished();

void ScanMaPSAID_aborted();
void ScanBaseplateID_aborted();
void ScanPSSID_aborted();
void ScanGlueID_aborted();
void ScanModuleID_aborted();
void PushToDB_aborted();

void GoToSensorMarkerPreAlignment_finished();

void GoFromSensorMarkerToPickupXY_finished();
Expand Down Expand Up @@ -223,6 +252,12 @@ class AssemblyAssemblyV2 : public QObject
void RegisterPSSPlusSpacersToMaPSAPosition_finished();
void switchToAlignmentTab_PSP_request();
void switchToAlignmentTab_PSS_request();

void MaPSA_ID_updated(const QString);
void PSS_ID_updated(const QString);
void Baseplate_ID_updated(const QString);
void Glue_ID_updated(const QString);
void Module_ID_updated(const QString);
// ------


Expand Down
Loading