29 #if QT_VERSION >= 0x050000
30 # include <QtWidgets/QBoxLayout>
31 # include <QtWidgets/QGroupBox>
32 # include <QtWidgets/QLabel>
33 # include <QtWidgets/QLineEdit>
34 # include <QtWidgets/QMessageBox>
35 # include <QtWidgets/QPushButton>
37 # include <QtGui/QBoxLayout>
38 # include <QtGui/QGroupBox>
39 # include <QtGui/QLabel>
40 # include <QtGui/QLineEdit>
41 # include <QtGui/QMessageBox>
42 # include <QtGui/QPushButton>
45 #include <QtGui/QFontMetrics>
99 int column=treeWidget()->sortColumn();
102 dL = text(column).toDouble(&isOk);
105 dR = other.text(column).toDouble(&isOk);
122 QMap<QString, SgVlbiSourceInfo*>* map,
QWidget* parent, Qt::WindowFlags f)
124 ownerName_(ownerName)
132 QBoxLayout *layout=
new QVBoxLayout(
this);
133 QStringList headerLabels;
179 QMap<QString, SgVlbiSourceInfo*>::const_iterator i =
sourcesByName_->constBegin();
187 item->setData(
SCI_NUMBER, Qt::TextAlignmentRole, Qt::AlignRight);
189 item->setData(
SCI_NAME, Qt::TextAlignmentRole, Qt::AlignLeft);
191 item->setData(
SCI_TOT_SCANS, Qt::TextAlignmentRole, Qt::AlignRight);
193 item->setData(
SCI_TOT_OBS, Qt::TextAlignmentRole, Qt::AlignRight);
195 item->setData(
SCI_USB_OBS, Qt::TextAlignmentRole, Qt::AlignRight);
197 item->setData(
SCI_PRC_OBS, Qt::TextAlignmentRole, Qt::AlignRight);
202 item->setData(
SCI_B_DISP_DEL, Qt::TextAlignmentRole, Qt::AlignRight);
204 item->setData(
SCI_B_DISP_RAT, Qt::TextAlignmentRole, Qt::AlignRight);
206 item->setData(
SCI_B_SIG0_DEL, Qt::TextAlignmentRole, Qt::AlignRight);
208 item->setData(
SCI_B_SIG0_RAT, Qt::TextAlignmentRole, Qt::AlignRight);
210 item->setData(
SCI_B_WRMS_DEL, Qt::TextAlignmentRole, Qt::AlignRight);
212 item->setData(
SCI_B_WRMS_RAT, Qt::TextAlignmentRole, Qt::AlignRight);
217 item->setData(
SCI_S_WRMS_DEL, Qt::TextAlignmentRole, Qt::AlignRight);
221 item->setData(
SCI_S_IGNORE, Qt::TextAlignmentRole, Qt::AlignCenter);
223 item->setData(
SCI_S_COO_EST, Qt::TextAlignmentRole, Qt::AlignCenter);
225 item->setData(
SCI_S_COO_CON, Qt::TextAlignmentRole, Qt::AlignCenter);
227 item->setData(
SCI_S_AP_EXIST, Qt::TextAlignmentRole, Qt::AlignCenter);
231 item->setData(
SCI_S_AL_2EXT, Qt::TextAlignmentRole, Qt::AlignRight);
233 item->setData(
SCI_S_AL_2EST, Qt::TextAlignmentRole, Qt::AlignRight);
242 item->setData(
SCI_S_USE_SSM, Qt::TextAlignmentRole, Qt::AlignCenter);
244 item->setData(
SCI_S_SSM_PTS, Qt::TextAlignmentRole, Qt::AlignRight);
248 tweSources_->header()->resizeSections(QHeaderView::ResizeToContents);
249 #if QT_VERSION >= 0x050000
250 tweSources_->header()->setSectionResizeMode(QHeaderView::Interactive);
252 tweSources_->header()->setResizeMode(QHeaderView::Interactive);
254 tweSources_->header()->setStretchLastSection(
false);
267 SIGNAL(moveUponItem(
QTreeWidgetItem*,
int, Qt::MouseButton, Qt::KeyboardModifiers)),
281 Qt::MouseButton , Qt::KeyboardModifiers )
332 connect(siEditor, SIGNAL(contentModified(
bool)), SLOT(
modifySourceInfo(
bool)));
413 QWidget* parent, Qt::WindowFlags flags)
416 static const QString attrNames[] =
418 QString(
"Ignore the source"),
419 QString(
"Estimate source positions"),
420 QString(
"Constrain source position in estimation"),
421 QString(
"Apply the multi point source structure model"),
424 const int numOfAttr=5;
430 setWindowTitle(
"The source " +
sourceInfo_->
getKey() +
" at " + ownerName +
" session");
433 QVBoxLayout *mainLayout=
new QVBoxLayout(
this);
436 QGroupBox *gBox=
new QGroupBox(
"Components of the multi point source structure model",
438 QBoxLayout *layout=
new QVBoxLayout(gBox);
439 QStringList headerLabels;
464 item->setText(
MCI_IDX, QString(
"").sprintf(
"%d", i));
465 item->setData(
MCI_IDX, Qt::TextAlignmentRole, Qt::AlignRight);
468 item->setData(
MCI_X, Qt::TextAlignmentRole, Qt::AlignRight);
471 item->setData(
MCI_Y, Qt::TextAlignmentRole, Qt::AlignRight);
474 item->setData(
MCI_ER, Qt::TextAlignmentRole, Qt::AlignCenter);
476 item->setText(
MCI_K, QString(
"").sprintf(
"%.4f", ss->
getK()));
477 item->setData(
MCI_K, Qt::TextAlignmentRole, Qt::AlignRight);
480 item->setData(
MCI_EK, Qt::TextAlignmentRole, Qt::AlignCenter);
482 item->setText(
MCI_B, QString(
"").sprintf(
"%.4f", ss->
getB()));
483 item->setData(
MCI_B, Qt::TextAlignmentRole, Qt::AlignRight);
486 item->setData(
MCI_EB, Qt::TextAlignmentRole, Qt::AlignCenter);
497 twSrcStModels_->header()->resizeSections(QHeaderView::ResizeToContents);
498 #if QT_VERSION >= 0x050000
499 twSrcStModels_->header()->setSectionResizeMode(QHeaderView::Interactive);
501 twSrcStModels_->header()->setResizeMode(QHeaderView::Interactive);
514 QPushButton *bAdd =
new QPushButton(
"Add",
this);
515 QPushButton *bEdit =
new QPushButton(
"Edit",
this);
516 QPushButton *bDelete=
new QPushButton(
"Delete",
this);
518 bDelete->setMinimumSize((btnSize=bDelete->sizeHint()));
519 bAdd->setMinimumSize(btnSize);
520 bEdit->setMinimumSize(btnSize);
522 QBoxLayout *subLayout=
new QHBoxLayout();
523 layout->addLayout(subLayout);
524 subLayout->addStretch(1);
525 subLayout->addSpacing(3*btnSize.width());
526 subLayout->addWidget(bAdd);
527 subLayout->addWidget(bEdit);
528 subLayout->addWidget(bDelete);
530 mainLayout->addWidget(gBox);
533 QGroupBox *gboxAttr=
new QGroupBox(
"Attributes of Source",
this);
534 layout =
new QVBoxLayout(gboxAttr);
535 for (
int i=0; i<numOfAttr; i++)
548 mainLayout->addSpacing(15);
549 mainLayout->addWidget(gboxAttr, 10);
553 subLayout =
new QHBoxLayout();
554 mainLayout->addSpacing(15);
555 mainLayout->addStretch(1);
556 mainLayout->addLayout(subLayout);
558 QPushButton *bOk=
new QPushButton(
"OK",
this);
559 QPushButton *bCancel=
new QPushButton(
"Cancel",
this);
560 bOk->setDefault(
true);
562 bCancel->setMinimumSize((btnSize=bCancel->sizeHint()));
563 bOk->setMinimumSize(btnSize);
565 subLayout->addStretch(1);
566 subLayout->addWidget(bOk);
567 subLayout->addWidget(bCancel);
571 SIGNAL(moveUponItem(
QTreeWidgetItem*,
int, Qt::MouseButton, Qt::KeyboardModifiers)),
577 connect(bOk, SIGNAL(clicked()), SLOT(
accept()));
579 connect(bEdit, SIGNAL(clicked()), SLOT(
editSsmPoint()));
581 connect(bCancel, SIGNAL(clicked()), SLOT(
reject()));
583 mainLayout->activate();
599 Qt::MouseButton , Qt::KeyboardModifiers )
679 if (item && column>-1)
722 if (QMessageBox::warning(
this,
"Delete?",
723 "Are you sure to delete a component #" + QString(
"").setNum(idx) +
724 " of a source structure model at " +
726 QMessageBox::No | QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes)
777 item->setText(
MCI_IDX, QString(
"").sprintf(
"%d", idx));
778 item->setData(
MCI_IDX, Qt::TextAlignmentRole, Qt::AlignRight);
780 item->setData(
MCI_X, Qt::TextAlignmentRole, Qt::AlignRight);
782 item->setData(
MCI_Y, Qt::TextAlignmentRole, Qt::AlignRight);
784 item->setData(
MCI_ER, Qt::TextAlignmentRole, Qt::AlignCenter);
785 item->setText(
MCI_K, QString(
"").sprintf(
"%.4f", ss->
getK()));
786 item->setData(
MCI_K, Qt::TextAlignmentRole, Qt::AlignRight);
788 item->setData(
MCI_EK, Qt::TextAlignmentRole, Qt::AlignCenter);
789 item->setText(
MCI_B, QString(
"").sprintf(
"%.4f", ss->
getB()));
790 item->setData(
MCI_B, Qt::TextAlignmentRole, Qt::AlignRight);
792 item->setData(
MCI_EB, Qt::TextAlignmentRole, Qt::AlignCenter);
827 setWindowTitle(
"SS Model Editor");
831 QBoxLayout *layout, *subLayout;
843 gbox =
new QGroupBox(
"SS Model",
this);
844 grid =
new QGridLayout(gbox);
846 label=
new QLabel(
"x (mas):", gbox);
847 label->setMinimumSize(label->sizeHint());
848 grid ->addWidget(label, 0, 0, Qt::AlignLeft | Qt::AlignVCenter);
849 label=
new QLabel(
"y (mas):", gbox);
850 label->setMinimumSize(label->sizeHint());
851 grid ->addWidget(label, 1, 0, Qt::AlignLeft | Qt::AlignVCenter);
852 label=
new QLabel(
"k: ", gbox);
853 label->setMinimumSize(label->sizeHint());
854 grid ->addWidget(label, 2, 0, Qt::AlignLeft | Qt::AlignVCenter);
855 label=
new QLabel(
"b: ", gbox);
856 label->setMinimumSize(label->sizeHint());
857 grid ->addWidget(label, 3, 0, Qt::AlignLeft | Qt::AlignVCenter);
862 leX_->setFixedWidth(
leX_->fontMetrics().width(
"YYYYYYYY") + 10);
863 grid ->addWidget(
leX_, 0, 1);
866 leY_->setFixedWidth(
leY_->fontMetrics().width(
"YYYYYYYY") + 10);
867 grid ->addWidget(
leY_, 1, 1);
870 leK_->setFixedWidth(
leK_->fontMetrics().width(
"YYYYYYYY") + 10);
871 grid ->addWidget(
leK_, 2, 1);
874 leB_->setFixedWidth(
leB_->fontMetrics().width(
"YYYYYYYY") + 10);
875 grid ->addWidget(
leB_, 3, 1);
878 grid->addItem(
new QSpacerItem(15, 0), 0, 6);
882 layout =
new QVBoxLayout(
this);
883 layout -> addWidget(gbox);
885 cbEstPosition_ =
new QCheckBox(
"Estimate position of the component",
this);
890 cbEstK_ =
new QCheckBox(
"Estimate brightness ratio",
this);
895 cbEstB_ =
new QCheckBox(
"Estimate a difference of spectral indices",
this);
900 layout->addSpacing(15);
902 subLayout =
new QHBoxLayout();
903 layout->addLayout(subLayout);
904 subLayout->addStretch(1);
906 QPushButton *bOk=
new QPushButton(
"OK",
this);
907 QPushButton *bCancel=
new QPushButton(
"Cancel",
this);
908 bOk->setDefault(
true);
911 bCancel->setMinimumSize((btnSize=bCancel->sizeHint()));
912 bOk->setMinimumSize(btnSize);
913 subLayout->addWidget(bOk);
914 subLayout->addWidget(bCancel);
915 connect(bOk, SIGNAL(clicked()), SLOT(
accept()));
916 connect(bCancel, SIGNAL(clicked()), SLOT(
reject()));
966 d =
leX_->text().toDouble(&isOK);
973 d =
leY_->text().toDouble(&isOK);
981 d =
leK_->text().toDouble(&isOK);
988 d =
leB_->text().toDouble(&isOK);
bool operator<(const SgMJD &T1, const SgMJD &T2)
#define RAD2MAS
radians to ms:
bool isAttr(uint a) const
SgVlbiSourceInfo * getSrInfo()
void setSrInfo(SgVlbiSourceInfo *info)
virtual bool operator<(const QTreeWidgetItem &other) const
void entryDoubleClicked(QTreeWidgetItem *, int)
void toggleEntryMoveEnable(QTreeWidgetItem *, int, Qt::MouseButton, Qt::KeyboardModifiers)
void modifySourceInfo(bool)
SgObjectBrowseMode browseMode_
SgGuiQTreeWidgetExt * tweSources_
SgGuiVlbiSourceList(SgObjectBrowseMode, const QString &, QMap< QString, SgVlbiSourceInfo * > *, QWidget *=0, Qt::WindowFlags=0)
QMap< QString, SgVlbiSourceInfo * > * sourcesByName_
void addNewSsmPoint(SgVlbiSourceInfo::StructModelMp *)
QCheckBox * cbAttributes_[7]
SgGuiVlbiSrcInfoEditor(SgVlbiSourceInfo *, const QString &, QWidget *=0, Qt::WindowFlags=0)
void editSrcStModel(QTreeWidgetItem *, int)
void toggleEntryMoveEnable(QTreeWidgetItem *, int, Qt::MouseButton, Qt::KeyboardModifiers)
SgVlbiSourceInfo * sourceInfo_
void updateModifyStatus(bool)
~SgGuiVlbiSrcInfoEditor()
SgGuiQTreeWidgetExt * twSrcStModels_
void contentModified(bool)
SgGuiVlbiSrcStrModelEditor(SgVlbiSourceInfo *, SgGuiVlbiSrcStrModelItem *, QWidget *=0, Qt::WindowFlags=0)
SgVlbiSourceInfo::StructModelMp * ssmPoint_
QCheckBox * cbEstPosition_
void ssmPointModified(bool)
void ssmPointCreated(SgVlbiSourceInfo::StructModelMp *)
SgGuiVlbiSrcStrModelItem * twItem_
SgVlbiSourceInfo::StructModelMp * getPoint()
void setPoint(SgVlbiSourceInfo::StructModelMp *p)
void setModelIdx(int idx)
double dispersion(DataType, bool=false) const
double getSigma2add(DataType) const
const QString & getKey() const
int numProcessed(DataType dType) const
int numUsable(DataType) const
double wrms(DataType) const
int numTotal(DataType dType) const
void setEstimatePosition(bool b)
bool getEstimateRatio() const
void setEstimateSpIdx(bool b)
bool getEstimatePosition() const
bool getEstimateSpIdx() const
void setEstimateRatio(bool b)
const QString & getAprioriComments() const
double getAl2Estd() const
double getAl2ExtA() const
int getTotalScanNum() const
QList< StructModelMp > & sModel()
int calcNumOfEstimatedSsmParameters() const
@ Attr_TEST
for testing purposes.
@ Attr_APPLY_SSM
apply the source structure model;
@ Attr_HAS_A_PRIORI_POS
indicates that the source has a priori position;
@ Attr_CONSTRAIN_COO
constrain source position in estimation;
@ Attr_NOT_VALID
omit the source;
@ Attr_ESTIMATE_COO
estimate source position;