Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "TGo4SetScaleValues.h"
00015 #include "TGo4MdiArea.h"
00016 #include "TGo4ViewPanel.h"
00017
00018
00019 TGo4SetScaleValues::TGo4SetScaleValues( QWidget* parent, const char* name, Qt::WindowFlags fl ) :
00020 QWidget( parent, fl )
00021 {
00022 setObjectName( name ? name : "Go4SetScaleValues");
00023 setupUi(this);
00024 connect(TGo4MdiArea::Instance(), SIGNAL(panelSignal(TGo4ViewPanel*, TPad*, int)),
00025 this, SLOT(panelSlot(TGo4ViewPanel*, TPad*, int)));
00026
00027 fbDoingRefresh = false;
00028
00029 refreshView(true);
00030 }
00031
00032 void TGo4SetScaleValues::refreshView(bool force)
00033 {
00034 if (fbDoingRefresh) return;
00035
00036 fbDoingRefresh = true;
00037
00038 if (force) {
00039 XminV->setModified(false);
00040 XmaxV->setModified(false);
00041 YminV->setModified(false);
00042 YmaxV->setModified(false);
00043 ZminV->setModified(false);
00044 ZmaxV->setModified(false);
00045 }
00046
00047 TGo4ViewPanel* panel = TGo4MdiArea::Instance()->GetActivePanel();
00048
00049 setEnabled(panel!=0);
00050
00051 if (panel!=0) {
00052
00053 setWindowTitle(QString("Scale values: ") + panel->objectName());
00054
00055 int ndim = 0;
00056 double Xmin=0, Xmax=0, Ymin=0, Ymax=0, Zmin=0, Zmax=0;
00057 bool autoscale;
00058
00059 panel->GetSelectedRange(ndim, autoscale, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
00060
00061 AutoScaleButton->setChecked(autoscale);
00062
00063 if (!XminV->isModified())
00064 XminV->setText(QString::number(Xmin));
00065 if (!XmaxV->isModified())
00066 XmaxV->setText(QString::number(Xmax));
00067 if (!YminV->isModified())
00068 YminV->setText(QString::number(Ymin));
00069 if (!YmaxV->isModified())
00070 YmaxV->setText(QString::number(Ymax));
00071 if (!ZminV->isModified())
00072 ZminV->setText(QString::number(Zmin));
00073 if (!ZmaxV->isModified())
00074 ZmaxV->setText(QString::number(Zmax));
00075
00076
00077 switch(ndim) {
00078 case 1:
00079 YminV->setDisabled(autoscale);
00080 YmaxV->setDisabled(autoscale);
00081 ZminV->setDisabled(true);
00082 ZmaxV->setDisabled(true);
00083 break;
00084 case 2:
00085 YminV->setDisabled(false);
00086 YmaxV->setDisabled(false);
00087 ZminV->setDisabled(autoscale);
00088 ZmaxV->setDisabled(autoscale);
00089 break;
00090 default:
00091 YminV->setDisabled(false);
00092 YmaxV->setDisabled(false);
00093 ZminV->setDisabled(false);
00094 ZmaxV->setDisabled(false);
00095 break;
00096 }
00097
00098 } else {
00099 setWindowTitle(QString("Scale values: none"));
00100
00101 XminV->setText("");
00102 XmaxV->setText("");
00103 YminV->setText("");
00104 YmaxV->setText("");
00105 ZminV->setText("");
00106 ZmaxV->setText("");
00107 }
00108
00109 fbDoingRefresh = false;
00110 }
00111
00112
00113 void TGo4SetScaleValues::panelSlot(TGo4ViewPanel* panel, TPad* pad, int signalid)
00114 {
00115 switch (signalid) {
00116 case QGo4Widget::panel_Activated:
00117 case QGo4Widget::panel_Deleted:
00118 refreshView(true);
00119 break;
00120 case QGo4Widget::panel_ActiveUpdated:
00121 refreshView(false);
00122 break;
00123 }
00124 }
00125
00126 void TGo4SetScaleValues::ApplyValues()
00127 {
00128 if (fbDoingRefresh) return;
00129
00130 TGo4ViewPanel* panel = TGo4MdiArea::Instance()->GetActivePanel();
00131 if (panel==0) return;
00132
00133 double Xmin = XminV->text().toDouble();
00134 double Xmax = XmaxV->text().toDouble();
00135 double Ymin = YminV->text().toDouble();
00136 double Ymax = YmaxV->text().toDouble();
00137 double Zmin = ZminV->text().toDouble();
00138 double Zmax = ZmaxV->text().toDouble();
00139
00140 if ((Xmin==0.) && (Xmax==0.)) { Xmin=-1.; Xmax=-1.; }
00141 if ((Ymin==0.) && (Ymax==0.)) { Ymin=-1.; Ymax=-1.; }
00142 if ((Zmin==0.) && (Zmax==0.)) { Zmin=-1.; Zmax=-1.; }
00143
00144 fbDoingRefresh = true;
00145 panel->SetSelectedRange(Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
00146 fbDoingRefresh = false;
00147
00148 refreshView(true);
00149 }
00150
00151 void TGo4SetScaleValues::AutoscaleChanged(bool on)
00152 {
00153 if (fbDoingRefresh) return;
00154 TGo4ViewPanel* panel = TGo4MdiArea::Instance()->GetActivePanel();
00155 if (panel==0) return;
00156
00157 fbDoingRefresh = true;
00158 panel->SetAutoScale(on, 0);
00159 fbDoingRefresh = false;
00160
00161 refreshView(true);
00162 }