Changeset 11854 for trunk/FACT++/gui


Ignore:
Timestamp:
08/09/11 10:01:29 (13 years ago)
Author:
tbretz
Message:
Added the Bias control to the GUI; consequently, updated the rate display functions -- to be unified.
Location:
trunk/FACT++/gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/gui/FactGui.h

    r11850 r11854  
    377377    vector<int> fPatchHW; // Maps the software(!) pixel id to the hardware(!) patch id
    378378
    379     bool fInChoosePatch; // FIXME. Find a better solution
     379    bool fInChoosePatchTH;   // FIXME. Find a better solution
     380    bool fInChoosePatchBias; // FIXME. Find a better solution
    380381
    381382    DimStampedInfo fDimDNS;
     
    419420    DimStampedInfo fDimFscHumidity;
    420421
     422    //DimStampedInfo fDimBiasVolt;
     423    DimStampedInfo fDimBiasCurrent;
     424
    421425    map<string, DimInfo*> fServices;
    422426
     
    22572261        SetFtuStatusLed(d.time);
    22582262
    2259 #ifdef HAVE_ROOT
    2260 //        Camera *cam = (Camera*)fRatesCanv->GetCanvas()->FindObject("Camera");
     2263
     2264
    22612265        for (int isw=0; isw<1440; isw++)
    22622266        {
     
    22642268            fRatesCanv->SetEnable(isw, sdata.IsEnabled(ihw));
    22652269        }
    2266 
    2267 //        fRatesCanv->GetCanvas()->Modified();
    2268 //        fRatesCanv->GetCanvas()->Update();
    2269 #endif
    22702270
    22712271        {
     
    24482448        SetFscValue(fHumidity3, d, 2, enable);
    24492449        SetFscValue(fHumidity4, d, 3, enable);
     2450    }
     2451
     2452    // ========================== FSC =======================================
     2453
     2454    vector<int16_t> fVecBias;
     2455
     2456    void handleBiasVolt(const DimData &d)
     2457    {
     2458        if (!CheckSize(d, 416*sizeof(int16_t)))
     2459            return;
     2460
     2461        const int16_t *ptr = d.ptr<int16_t>();
     2462
     2463        fVecBias.assign(ptr, ptr+416);
     2464        // FIXME: Update displayed value
     2465    }
     2466
     2467    void handleBiasCurrent(const DimData &d)
     2468    {
     2469        if (!CheckSize(d, 416*sizeof(int16_t)))
     2470            return;
     2471
     2472        const int16_t *ptr = d.ptr<int16_t>();
     2473
     2474        valarray<double> dat(0., 1440);
     2475
     2476        // fPatch converts from software id to software patch id
     2477        for (int i=0; i<1440; i++)
     2478        {
     2479            const int ihw = fPatchHW[i];
     2480
     2481            // FIXME: Display Overcurrent
     2482            dat[i] = abs(ptr[ihw])*5000./4096;
     2483
     2484            fBiasCam->SetEnable(i, uint16_t(ptr[ihw])!=0x8000);
     2485        }
     2486
     2487        fBiasCam->SetData(dat);
    24502488    }
    24512489
     
    28862924            return PostInfoHandler(&FactGui::handleFscHumidity);
    28872925
     2926//        if (getInfo()==&fDimBiasVolt)
     2927//            return PostInfoHandler(&FactGui::handleBiasVolt);
     2928
     2929        if (getInfo()==&fDimBiasCurrent)
     2930            return PostInfoHandler(&FactGui::handleBiasCurrent);
     2931
    28882932//        if (getInfo()==&fDimFadFiles)
    28892933//            return PostInfoHandler(&FactGui::handleFadFiles);
     
    29703014
    29713015        if (evt==11/*kMouseReleaseEvent*/)
    2972         {
    2973             if (dynamic_cast<Camera*>(obj))
    2974             {
    2975 //                const float xx = canv->AbsPixeltoX(tipped->GetEventX());
    2976 //                const float yy = canv->AbsPixeltoY(tipped->GetEventY());
    2977 //ETIENNE MESS HERE
    2978  //               Camera *cam = static_cast<Camera*>(obj);
    2979  //               const int isw = cam->GetIdx(xx, yy);
    2980 
    2981  //               fPixelIdx->setValue(isw);
    2982  //               ChoosePixel(*cam, isw);
    2983             }
    2984             return;
    2985         }
     3016            return;
    29863017
    29873018        if (evt==61/*kMouseDoubleClickEvent*/)
    2988         {
    2989             if (dynamic_cast<Camera*>(obj) && fRatesControls->isEnabled())
    2990             {
    2991 //                const float xx = canv->AbsPixeltoX(tipped->GetEventX());
    2992 //                const float yy = canv->AbsPixeltoY(tipped->GetEventY());
    2993 //ETIENNE MESS HERE
    2994 //                Camera *cam = static_cast<Camera*>(obj);
    2995 //                const int isw = cam->GetIdx(xx, yy);
    2996 
    2997  //               ChoosePixel(*cam, isw);
    2998 
    2999  //               fPixelIdx->setValue(isw);
    3000 
    3001  //               const uint16_t ihw = fPixelMapHW[isw];
    3002 
    3003  //               Dim::SendCommand("FTM_CONTROL/TOGGLE_PIXEL", ihw);
    3004             }
    3005             if (dynamic_cast<TAxis*>(obj))
    3006                 static_cast<TAxis*>(obj)->UnZoom();
    3007 
    3008             return;
    3009         }
     3019            return;
    30103020
    30113021        if (obj)
     
    30323042            tipText += objectInfo;
    30333043
    3034             if (dynamic_cast<Camera*>(obj))
    3035             {
    3036 //                const float xx = canv->AbsPixeltoX(tipped->GetEventX());
    3037 //                const float yy = canv->AbsPixeltoY(tipped->GetEventY());
    3038 
    3039 //ETIENNE MESS HERE
    3040 //                Camera *cam = static_cast<Camera*>(obj);
    3041 
    3042 //                const int isw = cam->GetIdx(xx, yy);
    3043 //                const int ihw = fPixelMapHW[isw];
    3044 
    3045 //                const int idx = fPatchHW[isw];
    3046 
    3047 //                int ii = 0;
    3048 //                for (; ii<160; ii++)
    3049 //                    if (idx==fPatchMapHW[ii])
    3050 //                        break;
    3051 
    3052 
    3053 //                const int patch =  ihw%4;
    3054 //                const int board = (ihw/4)%10;
    3055 //                const int crate = (ihw/4)/10;
    3056 
    3057 //                ostringstream str;
    3058 //                str << " (hw=" << ihw << ")  Patch=" << ii << "  (hw=" << fPatchMapHW[idx] << "; Crate=" << crate << " Board=" << board << " Patch=" << patch << ")";
    3059 
    3060 //                tipText += str.str().c_str();
    3061             }
    30623044            fStatusBar->showMessage(tipText, 3000);
    30633045        }
     
    30743056        QTimer::singleShot(10, this, SLOT(slot_RootUpdate()));
    30753057    }
    3076 
    3077     void ChoosePatch(Camera &cam, int isw)
     3058#endif
     3059
     3060    void ChoosePatchThreshold(Camera &cam, int isw)
    30783061    {
    30793062        cam.Reset();
     
    30953078        const int crate = (ihw/4)/10;
    30963079
    3097         fInChoosePatch = true;
     3080        fInChoosePatchTH = true;
    30983081
    30993082        fThresholdCrate->setValue(crate);
     
    31013084        fThresholdPatch->setValue(patch);
    31023085
    3103         fInChoosePatch = false;
     3086        fInChoosePatchTH = false;
    31043087
    31053088        fThresholdVal->setValue(fFtmStaticData.fThreshold[ihw]);
     
    31123095    }
    31133096
    3114     void ChoosePixel(Camera &cam, int isw)
    3115     {
    3116         const int  ihw = fPixelMapHW[isw];
    3117 
    3118         int ii = 0;
    3119         for (; ii<160; ii++)
    3120             if (fPatchHW[isw]==fPatchMapHW[ii])
    3121                 break;
    3122 
    3123         cam.SetWhite(isw);
    3124         ChoosePatch(cam, ii);
    3125 
    3126         const bool on  = fFtmStaticData.IsEnabled(ihw);
    3127         fPixelEnable->setChecked(on);
    3128     }
    3129     void slot_ChoosePixel(int isw)
     3097    void ChoosePatchBias(Camera &cam, int isw)
     3098    {
     3099        cam.Reset();
     3100
     3101        fBiasPixel->setValue(isw);
     3102
     3103        const int ihw = isw<0 ? 0 : fPatchMapHW[isw];
     3104
     3105        fBiasCurrent->setEnabled(isw>=0);
     3106        fBiasCrate->setEnabled(isw>=0);
     3107        fBiasBoard->setEnabled(isw>=0);
     3108        fBiasPatch->setEnabled(isw>=0);
     3109
     3110        if (isw<0)
     3111            return;
     3112
     3113        const int patch = ihw%4;
     3114        const int board = (ihw/4)%10;
     3115        const int crate = (ihw/4)/10;
     3116
     3117        fInChoosePatchBias = true;
     3118
     3119        fBiasCrate->setValue(crate);
     3120        fBiasBoard->setValue(board);
     3121        fBiasPatch->setValue(patch);
     3122
     3123        fInChoosePatchBias = false;
     3124
     3125        if (fVecBias.size()>0)
     3126        {
     3127            // FIXME: Mapping
     3128            fBiasVoltDac->setValue(fVecBias[ihw]);
     3129            fBiasVolt->setValue(fVecBias[ihw]*90/4096);
     3130        }
     3131
     3132        fBiasCurrent->setValue(cam.GetData(isw));
     3133
     3134        // Loop over the software idx of all pixels
     3135        for (unsigned int i=0; i<1440; i++)
     3136            if (fPatchHW[i]==ihw)
     3137                cam.SetBold(i);
     3138    }
     3139
     3140    void slot_ChoosePixelThreshold(int isw)
    31303141    {
    31313142        fPixelIdx->setValue(isw);
     
    31343145        fPixelEnable->setChecked(on);
    31353146    }
     3147
     3148    void slot_ChoosePixelBias(int isw)
     3149    {
     3150        fBiasPixel->setValue(isw);
     3151        //const uint16_t ihw = fPixelMapHW[isw];
     3152        //const bool on = fFtmStaticData.IsEnabled(ihw);
     3153        //fPixelEnable->setChecked(on);
     3154    }
     3155
    31363156    void slot_CameraDoubleClick(int isw)
    3137      {
    3138          fPixelIdx->setValue(isw);
    3139          const uint16_t ihw = fPixelMapHW[isw];
    3140          Dim::SendCommand("FTM_CONTROL/TOGGLE_PIXEL", ihw);
    3141      }
     3157    {
     3158        fPixelIdx->setValue(isw);
     3159        const uint16_t ihw = fPixelMapHW[isw];
     3160        Dim::SendCommand("FTM_CONTROL/TOGGLE_PIXEL", ihw);
     3161    }
     3162
    31423163    void slot_CameraMouseMove(int isw)
    31433164    {
     
    31603181    }
    31613182
    3162     void UpdatePatch(int isw)
     3183    void on_fThresholdIdx_valueChanged(int isw)
    31633184    {
    31643185//ETIENNE MESS HERE
    31653186//        Camera *cam = (Camera*)fRatesCanv->GetCanvas()->FindObject("Camera");
    3166 //        ChoosePatch(*cam, isw);
    3167     }
    3168 
    3169     void on_fThresholdIdx_valueChanged(int isw)
    3170     {
    3171         UpdatePatch(isw);
    3172 
    3173 //        fRatesCanv->GetCanvas()->Modified();
    3174  //       fRatesCanv->GetCanvas()->Update();
     3187//        ChoosePatchTH(*cam, isw);
    31753188    }
    31763189
    31773190    void UpdateThresholdIdx()
    31783191    {
    3179         if (fInChoosePatch)
     3192        if (fInChoosePatchTH)
    31803193            return;
    31813194
     
    31913204                break;
    31923205
    3193         UpdatePatch(isw);
    3194     }
    3195 
    3196     void on_fThresholdPatch_valueChanged(int)
    3197     {
    3198         UpdateThresholdIdx();
    3199     }
    3200     void on_fThresholdBoard_valueChanged(int)
    3201     {
    3202         UpdateThresholdIdx();
    3203     }
    3204     void on_fThresholdCrate_valueChanged(int)
    3205     {
    3206         UpdateThresholdIdx();
     3206        on_fThresholdIdx_valueChanged(isw);
     3207    }
     3208
     3209    void UpdateBiasIdx()
     3210    {
     3211        if (fInChoosePatchBias)
     3212            return;
     3213
     3214        const int crate = fBiasCrate->value();
     3215        const int board = fBiasBoard->value();
     3216        const int patch = fBiasPatch->value();
     3217
     3218        const int ihw = patch + board*4 + crate*40;
     3219
     3220        int isw = 0;
     3221        for (; isw<160; isw++)
     3222            if (ihw==fPatchMapHW[isw])
     3223                break;
     3224
     3225        on_fBiasPixel_valueChanged(isw);
    32073226    }
    32083227
    32093228    void on_fPixelIdx_valueChanged(int isw)
    32103229    {
    3211           ChoosePixel(*fRatesCanv, isw);
    3212     }
    3213 
    3214 #endif
     3230        const int  ihw = fPixelMapHW[isw];
     3231
     3232        int ii = 0;
     3233        for (; ii<160; ii++)
     3234            if (fPatchHW[isw]==fPatchMapHW[ii])
     3235                break;
     3236
     3237        fRatesCanv->SetWhite(isw);
     3238        ChoosePatchThreshold(*fRatesCanv, ii);
     3239
     3240        const bool on  = fFtmStaticData.IsEnabled(ihw);
     3241        fPixelEnable->setChecked(on);
     3242    }
     3243
     3244    void on_fBiasPixel_valueChanged(int isw)
     3245    {
     3246        const int  ihw = fPixelMapHW[isw];
     3247
     3248        int ii = 0;
     3249        for (; ii<160; ii++)
     3250            if (fPatchHW[isw]==fPatchMapHW[ii])
     3251                break;
     3252
     3253        fBiasCam->SetWhite(isw);
     3254        ChoosePatchBias(*fRatesCanv, ii);
     3255
     3256        const bool on  = fFtmStaticData.IsEnabled(ihw);
     3257        fPixelEnable->setChecked(on);
     3258    }
     3259
    32153260
    32163261    void on_fPixelEnable_stateChanged(int b)
     
    33013346        fFtuStatus(40),
    33023347        fPixelMapHW(1440), fPatchMapHW(160), fPatchHW(1440),
    3303         fInChoosePatch(false),
     3348        fInChoosePatchTH(false), fInChoosePatchBias(false),
    33043349        fDimDNS("DIS_DNS/VERSION_NUMBER", 1, int(0), this),
    33053350        //-
     
    33423387        fDimFscHumidity        ("FSC_CONTROL/HUMIDITY",           (void*)NULL, 0, this),
    33433388        //-
    3344         fEventData(0), fDrsCalibration(1440*1024*6),
     3389        //fDimBiasVolt           ("BIAS_CONTROL/VOLTAGE",           (void*)NULL, 0, this),
     3390        fDimBiasCurrent        ("BIAS_CONTROL/CURRENT",           (void*)NULL, 0, this),
     3391        //-
     3392        fEventData(0), fDrsCalibration(1440*1024*6),
    33453393        fTimeStamp0(0)
    33463394
     
    35603608        // --------------------------------------------------------------------------
    35613609
    3562 //ETIENNE MESS HERE
    3563 //        c = fRatesCanv->GetCanvas();
    3564         //c->SetBit(TCanvas::kNoContextMenu);
    3565 //        c->SetBorderMode(0);
    3566 //        c->SetFrameBorderMode(0);
    3567 //        c->SetFillColor(kWhite);
    3568 //        c->cd();
    3569 
    3570         Camera *cam = fRatesCanv;//new Camera;
    3571 //        cam->SetBit(kCanDelete);
    3572         cam->SetMin(fRatesMin->value());
    3573         cam->SetMax(fRatesMax->value());
    3574 //        cam->Draw();
    3575         cam->updateGL();
    3576 
    3577         ChoosePixel(*cam, 0);
     3610        fRatesCanv->SetMin(fRatesMin->value());
     3611        fRatesCanv->SetMax(fRatesMax->value());
     3612        fRatesCanv->updateGL();
     3613        on_fPixelIdx_valueChanged(0);
    35783614
    35793615        // --------------------------------------------------------------------------
     
    35883624        c->cd();
    35893625
    3590         // --------------------------------------------------------------------------
    3591 
    3592 /*        c = fEventCanv->GetCanvas();
    3593         c->SetBit(TCanvas::kNoContextMenu);
    3594         c->SetBorderMode(0);
    3595         c->SetFrameBorderMode(0);
    3596         c->SetFillColor(kWhite);
    3597         c->Divide(2,2);
    3598         c->cd(1);
    3599         gPad->SetBorderMode(0);
    3600         gPad->SetFrameBorderMode(0);
    3601         gPad->SetFillColor(kWhite);
    3602         //ETIENNE MESS HERE
    3603 //       Camera *cam1 = new Camera;
    3604 //        cam1->SetBit(kCanDelete);
    3605 //        cam1->Draw();
    3606         c->cd(2);
    3607         gPad->SetBorderMode(0);
    3608         gPad->SetFrameBorderMode(0);
    3609         gPad->SetFillColor(kWhite);
    3610 //        Camera *cam2 = new Camera;
    3611 //        cam2->SetBit(kCanDelete);
    3612 //        cam2->Draw();
    3613         c->cd(3);
    3614         gPad->SetBorderMode(0);
    3615         gPad->SetFrameBorderMode(0);
    3616         gPad->SetFillColor(kWhite);
    3617 //        Camera *cam3 = new Camera;
    3618 //        cam3->SetBit(kCanDelete);
    3619 //        cam3->Draw();
    3620         c->cd(4);
    3621         gPad->SetBorderMode(0);
    3622         gPad->SetFrameBorderMode(0);
    3623         gPad->SetFillColor(kWhite);
    3624  //       Camera *cam4 = new Camera;
    3625 //        cam4->SetBit(kCanDelete);
    3626 //        cam4->Draw();
    3627 
    3628 */
    3629 
    36303626        // Create histogram?
    36313627
     
    36443640
    36453641        fRatesCanv->setMouseTracking(true);
    3646 //ETIENNE MESS HERE
    3647 //        fRatesCanv->EnableSignalEvents(kMouseMoveEvent|kMouseReleaseEvent|kMouseDoubleClickEvent);
    3648 //        connect(fRatesCanv,   SIGNAL(     RootEventProcessed(TObject*, unsigned int, TCanvas*)),
    3649 //                this,         SLOT  (slot_RootEventProcessed(TObject*, unsigned int, TCanvas*)));
     3642
    36503643        connect(fRatesCanv, SIGNAL(signalPixelMoveOver(int)),
    36513644                this, SLOT(slot_CameraMouseMove(int)));
     
    36623655                this, SLOT(slot_CameraDoubleClick(int)));
    36633656        connect(fRatesCanv, SIGNAL(signalCurrentPixel(int)),
    3664                 this, SLOT(slot_ChoosePixel(int)));
     3657                this, SLOT(slot_ChoosePixelThreshold(int)));
     3658        connect(fBiasCam, SIGNAL(signalCurrentPixel(int)),
     3659                this, SLOT(slot_ChoosePixelBias(int)));
    36653660        connect(fFtmRateCanv, SIGNAL(     RootEventProcessed(TObject*, unsigned int, TCanvas*)),
    36663661                this,         SLOT  (slot_RootEventProcessed(TObject*, unsigned int, TCanvas*)));
  • trunk/FACT++/gui/MainWindow.h

    r11807 r11854  
    154154    void on_fFtuAllOff_clicked();
    155155
     156    // Tab: Bias
     157    virtual void UpdateBiasIdx() = 0;
     158    virtual void on_fBiasPixel_valueChanged(int) = 0;
     159    void on_fBiasCrate_valueChanged(int) { UpdateBiasIdx(); }
     160    void on_fBiasBoard_valueChanged(int) { UpdateBiasIdx(); }
     161    void on_fBiasPatch_valueChanged(int) { UpdateBiasIdx(); }
     162
    156163    // Tab: Rates
     164    virtual void UpdateThresholdIdx() = 0;
     165    virtual void on_fPixelIdx_valueChanged(int) = 0;
     166    void on_fThresholdCrate_valueChanged(int) { UpdateThresholdIdx() ; }
     167    void on_fThresholdBoard_valueChanged(int) { UpdateThresholdIdx() ; }
     168    void on_fThresholdPatch_valueChanged(int) { UpdateThresholdIdx() ; }
     169
    157170    virtual void on_fPixelEnable_stateChanged(int) = 0;
    158171    virtual void on_fThresholdVal_valueChanged(int) = 0;
    159172    virtual void on_fThresholdIdx_valueChanged(int) = 0;
    160     virtual void on_fThresholdCrate_valueChanged(int) = 0;
    161     virtual void on_fThresholdBoard_valueChanged(int) = 0;
    162     virtual void on_fThresholdPatch_valueChanged(int) = 0;
    163     virtual void on_fPixelIdx_valueChanged(int) = 0;
    164173
    165174    void on_fRatesMin_valueChanged(int); // FIXME: Could be set as slot in the designer
     
    188197    virtual void slot_RootEventProcessed(TObject *, unsigned int, TCanvas *) = 0;
    189198    virtual void slot_RootUpdate() = 0;
    190     virtual void slot_ChoosePixel(int) = 0;
     199    virtual void slot_ChoosePixelThreshold(int) = 0;
     200    virtual void slot_ChoosePixelBias(int) = 0;
    191201    virtual void slot_CameraDoubleClick(int) = 0;
    192202    virtual void slot_CameraMouseMove(int) = 0;
  • trunk/FACT++/gui/design.ui

    r11850 r11854  
    5353      </property>
    5454      <property name="currentIndex">
    55        <number>5</number>
     55       <number>3</number>
    5656      </property>
    5757      <property name="documentMode">
     
    32673267       </layout>
    32683268      </widget>
     3269      <widget class="QWidget" name="fBiasTab">
     3270       <attribute name="title">
     3271        <string>Bias</string>
     3272       </attribute>
     3273       <layout class="QGridLayout" name="gridLayout_86">
     3274        <item row="0" column="0">
     3275         <widget class="QDockWidget" name="fBiasDock">
     3276          <property name="sizePolicy">
     3277           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
     3278            <horstretch>0</horstretch>
     3279            <verstretch>0</verstretch>
     3280           </sizepolicy>
     3281          </property>
     3282          <property name="features">
     3283           <set>QDockWidget::NoDockWidgetFeatures</set>
     3284          </property>
     3285          <property name="allowedAreas">
     3286           <set>Qt::AllDockWidgetAreas</set>
     3287          </property>
     3288          <property name="windowTitle">
     3289           <string>FTU rate display</string>
     3290          </property>
     3291          <widget class="QWidget" name="fBiasWidget">
     3292           <property name="sizePolicy">
     3293            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
     3294             <horstretch>0</horstretch>
     3295             <verstretch>0</verstretch>
     3296            </sizepolicy>
     3297           </property>
     3298           <layout class="QGridLayout" name="gridLayout_81">
     3299            <item row="0" column="0" rowspan="2">
     3300             <widget class="QFrame" name="frame_5">
     3301              <property name="sizePolicy">
     3302               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
     3303                <horstretch>0</horstretch>
     3304                <verstretch>0</verstretch>
     3305               </sizepolicy>
     3306              </property>
     3307              <property name="minimumSize">
     3308               <size>
     3309                <width>500</width>
     3310                <height>500</height>
     3311               </size>
     3312              </property>
     3313              <property name="frameShape">
     3314               <enum>QFrame::StyledPanel</enum>
     3315              </property>
     3316              <property name="frameShadow">
     3317               <enum>QFrame::Sunken</enum>
     3318              </property>
     3319              <layout class="QGridLayout" name="gridLayout_82">
     3320               <property name="margin">
     3321                <number>3</number>
     3322               </property>
     3323               <item row="0" column="0">
     3324                <widget class="QCameraWidget" name="fBiasCam" native="true"/>
     3325               </item>
     3326              </layout>
     3327             </widget>
     3328            </item>
     3329            <item row="0" column="1" rowspan="2">
     3330             <widget class="QGroupBox" name="fBiasControls">
     3331              <property name="sizePolicy">
     3332               <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
     3333                <horstretch>0</horstretch>
     3334                <verstretch>0</verstretch>
     3335               </sizepolicy>
     3336              </property>
     3337              <property name="title">
     3338               <string>Controls</string>
     3339              </property>
     3340              <layout class="QGridLayout" name="gridLayout_83" columnstretch="0">
     3341               <property name="sizeConstraint">
     3342                <enum>QLayout::SetMinimumSize</enum>
     3343               </property>
     3344               <item row="1" column="0">
     3345                <layout class="QVBoxLayout" name="verticalLayout_16">
     3346                 <property name="rightMargin">
     3347                  <number>0</number>
     3348                 </property>
     3349                 <item>
     3350                  <widget class="QLabel" name="label_202">
     3351                   <property name="text">
     3352                    <string>Pixel</string>
     3353                   </property>
     3354                  </widget>
     3355                 </item>
     3356                 <item>
     3357                  <layout class="QHBoxLayout" name="horizontalLayout_43">
     3358                   <property name="topMargin">
     3359                    <number>0</number>
     3360                   </property>
     3361                   <item>
     3362                    <widget class="QSpinBox" name="fBiasPixel">
     3363                     <property name="alignment">
     3364                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3365                     </property>
     3366                     <property name="maximum">
     3367                      <number>1439</number>
     3368                     </property>
     3369                    </widget>
     3370                   </item>
     3371                   <item>
     3372                    <widget class="QCheckBox" name="fPixelEnable_2">
     3373                     <property name="enabled">
     3374                      <bool>false</bool>
     3375                     </property>
     3376                     <property name="maximumSize">
     3377                      <size>
     3378                       <width>20</width>
     3379                       <height>16777215</height>
     3380                      </size>
     3381                     </property>
     3382                     <property name="text">
     3383                      <string/>
     3384                     </property>
     3385                    </widget>
     3386                   </item>
     3387                  </layout>
     3388                 </item>
     3389                 <item>
     3390                  <layout class="QHBoxLayout" name="horizontalLayout_44">
     3391                   <property name="topMargin">
     3392                    <number>0</number>
     3393                   </property>
     3394                   <item>
     3395                    <widget class="QPushButton" name="fPixelEnableAll_2">
     3396                     <property name="enabled">
     3397                      <bool>false</bool>
     3398                     </property>
     3399                     <property name="text">
     3400                      <string>Enable all</string>
     3401                     </property>
     3402                    </widget>
     3403                   </item>
     3404                   <item>
     3405                    <widget class="QPushButton" name="fPixelDisableAll_2">
     3406                     <property name="enabled">
     3407                      <bool>false</bool>
     3408                     </property>
     3409                     <property name="text">
     3410                      <string>Disable all</string>
     3411                     </property>
     3412                    </widget>
     3413                   </item>
     3414                  </layout>
     3415                 </item>
     3416                 <item>
     3417                  <layout class="QHBoxLayout" name="horizontalLayout_45">
     3418                   <property name="topMargin">
     3419                    <number>0</number>
     3420                   </property>
     3421                   <item>
     3422                    <widget class="QPushButton" name="fPixelDisableOthers_2">
     3423                     <property name="enabled">
     3424                      <bool>false</bool>
     3425                     </property>
     3426                     <property name="text">
     3427                      <string>Disable others</string>
     3428                     </property>
     3429                    </widget>
     3430                   </item>
     3431                  </layout>
     3432                 </item>
     3433                 <item>
     3434                  <spacer name="verticalSpacer_61">
     3435                   <property name="orientation">
     3436                    <enum>Qt::Vertical</enum>
     3437                   </property>
     3438                   <property name="sizeType">
     3439                    <enum>QSizePolicy::Fixed</enum>
     3440                   </property>
     3441                   <property name="sizeHint" stdset="0">
     3442                    <size>
     3443                     <width>20</width>
     3444                     <height>20</height>
     3445                    </size>
     3446                   </property>
     3447                  </spacer>
     3448                 </item>
     3449                 <item>
     3450                  <widget class="QLabel" name="label_206">
     3451                   <property name="text">
     3452                    <string>Patch</string>
     3453                   </property>
     3454                  </widget>
     3455                 </item>
     3456                 <item>
     3457                  <widget class="QSpinBox" name="fBiasPatch">
     3458                   <property name="alignment">
     3459                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3460                   </property>
     3461                   <property name="readOnly">
     3462                    <bool>false</bool>
     3463                   </property>
     3464                   <property name="specialValueText">
     3465                    <string>all</string>
     3466                   </property>
     3467                   <property name="minimum">
     3468                    <number>-1</number>
     3469                   </property>
     3470                   <property name="maximum">
     3471                    <number>159</number>
     3472                   </property>
     3473                   <property name="value">
     3474                    <number>0</number>
     3475                   </property>
     3476                  </widget>
     3477                 </item>
     3478                 <item>
     3479                  <layout class="QHBoxLayout" name="horizontalLayout_46">
     3480                   <property name="topMargin">
     3481                    <number>0</number>
     3482                   </property>
     3483                   <item>
     3484                    <widget class="QPushButton" name="fThresholdDisableOthers_2">
     3485                     <property name="enabled">
     3486                      <bool>false</bool>
     3487                     </property>
     3488                     <property name="text">
     3489                      <string>Disable others</string>
     3490                     </property>
     3491                    </widget>
     3492                   </item>
     3493                  </layout>
     3494                 </item>
     3495                 <item>
     3496                  <spacer name="verticalSpacer_62">
     3497                   <property name="orientation">
     3498                    <enum>Qt::Vertical</enum>
     3499                   </property>
     3500                   <property name="sizeType">
     3501                    <enum>QSizePolicy::Fixed</enum>
     3502                   </property>
     3503                   <property name="sizeHint" stdset="0">
     3504                    <size>
     3505                     <width>20</width>
     3506                     <height>5</height>
     3507                    </size>
     3508                   </property>
     3509                  </spacer>
     3510                 </item>
     3511                 <item>
     3512                  <layout class="QGridLayout" name="gridLayout_84">
     3513                   <property name="topMargin">
     3514                    <number>0</number>
     3515                   </property>
     3516                   <item row="1" column="0">
     3517                    <widget class="QSpinBox" name="fBiasCrate">
     3518                     <property name="alignment">
     3519                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3520                     </property>
     3521                     <property name="maximum">
     3522                      <number>3</number>
     3523                     </property>
     3524                    </widget>
     3525                   </item>
     3526                   <item row="1" column="1">
     3527                    <widget class="QSpinBox" name="fBiasBoard">
     3528                     <property name="alignment">
     3529                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3530                     </property>
     3531                     <property name="maximum">
     3532                      <number>9</number>
     3533                     </property>
     3534                    </widget>
     3535                   </item>
     3536                   <item row="1" column="3">
     3537                    <widget class="QSpinBox" name="fBiasPatch_2">
     3538                     <property name="alignment">
     3539                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3540                     </property>
     3541                     <property name="maximum">
     3542                      <number>4</number>
     3543                     </property>
     3544                    </widget>
     3545                   </item>
     3546                   <item row="0" column="3">
     3547                    <widget class="QLabel" name="label_222">
     3548                     <property name="text">
     3549                      <string>Patch</string>
     3550                     </property>
     3551                    </widget>
     3552                   </item>
     3553                   <item row="0" column="0">
     3554                    <widget class="QLabel" name="label_223">
     3555                     <property name="text">
     3556                      <string>Crate</string>
     3557                     </property>
     3558                    </widget>
     3559                   </item>
     3560                   <item row="0" column="1">
     3561                    <widget class="QLabel" name="label_224">
     3562                     <property name="text">
     3563                      <string>Board</string>
     3564                     </property>
     3565                    </widget>
     3566                   </item>
     3567                  </layout>
     3568                 </item>
     3569                 <item>
     3570                  <spacer name="verticalSpacer_63">
     3571                   <property name="orientation">
     3572                    <enum>Qt::Vertical</enum>
     3573                   </property>
     3574                   <property name="sizeType">
     3575                    <enum>QSizePolicy::Fixed</enum>
     3576                   </property>
     3577                   <property name="sizeHint" stdset="0">
     3578                    <size>
     3579                     <width>20</width>
     3580                     <height>40</height>
     3581                    </size>
     3582                   </property>
     3583                  </spacer>
     3584                 </item>
     3585                 <item>
     3586                  <widget class="QLabel" name="label_225">
     3587                   <property name="text">
     3588                    <string>Command Voltage</string>
     3589                   </property>
     3590                  </widget>
     3591                 </item>
     3592                 <item>
     3593                  <widget class="QSpinBox" name="fBiasVoltDac">
     3594                   <property name="alignment">
     3595                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3596                   </property>
     3597                   <property name="maximum">
     3598                    <number>4095</number>
     3599                   </property>
     3600                  </widget>
     3601                 </item>
     3602                 <item>
     3603                  <widget class="QDoubleSpinBox" name="fBiasVolt">
     3604                   <property name="sizePolicy">
     3605                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
     3606                     <horstretch>0</horstretch>
     3607                     <verstretch>0</verstretch>
     3608                    </sizepolicy>
     3609                   </property>
     3610                   <property name="minimumSize">
     3611                    <size>
     3612                     <width>100</width>
     3613                     <height>0</height>
     3614                    </size>
     3615                   </property>
     3616                   <property name="alignment">
     3617                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3618                   </property>
     3619                   <property name="readOnly">
     3620                    <bool>true</bool>
     3621                   </property>
     3622                   <property name="buttonSymbols">
     3623                    <enum>QAbstractSpinBox::NoButtons</enum>
     3624                   </property>
     3625                   <property name="suffix">
     3626                    <string> V</string>
     3627                   </property>
     3628                   <property name="decimals">
     3629                    <number>2</number>
     3630                   </property>
     3631                   <property name="maximum">
     3632                    <double>90.000000000000000</double>
     3633                   </property>
     3634                   <property name="value">
     3635                    <double>0.000000000000000</double>
     3636                   </property>
     3637                  </widget>
     3638                 </item>
     3639                 <item>
     3640                  <spacer name="verticalSpacer_64">
     3641                   <property name="orientation">
     3642                    <enum>Qt::Vertical</enum>
     3643                   </property>
     3644                   <property name="sizeType">
     3645                    <enum>QSizePolicy::Fixed</enum>
     3646                   </property>
     3647                   <property name="sizeHint" stdset="0">
     3648                    <size>
     3649                     <width>20</width>
     3650                     <height>5</height>
     3651                    </size>
     3652                   </property>
     3653                  </spacer>
     3654                 </item>
     3655                 <item>
     3656                  <widget class="QLabel" name="label_226">
     3657                   <property name="text">
     3658                    <string>Current</string>
     3659                   </property>
     3660                  </widget>
     3661                 </item>
     3662                 <item>
     3663                  <widget class="QDoubleSpinBox" name="fBiasCurrent">
     3664                   <property name="alignment">
     3665                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3666                   </property>
     3667                   <property name="readOnly">
     3668                    <bool>true</bool>
     3669                   </property>
     3670                   <property name="buttonSymbols">
     3671                    <enum>QAbstractSpinBox::NoButtons</enum>
     3672                   </property>
     3673                   <property name="suffix">
     3674                    <string> mA</string>
     3675                   </property>
     3676                   <property name="maximum">
     3677                    <double>5000.000000000000000</double>
     3678                   </property>
     3679                  </widget>
     3680                 </item>
     3681                 <item>
     3682                  <spacer name="verticalSpacer_65">
     3683                   <property name="orientation">
     3684                    <enum>Qt::Vertical</enum>
     3685                   </property>
     3686                   <property name="sizeHint" stdset="0">
     3687                    <size>
     3688                     <width>20</width>
     3689                     <height>40</height>
     3690                    </size>
     3691                   </property>
     3692                  </spacer>
     3693                 </item>
     3694                </layout>
     3695               </item>
     3696               <item row="0" column="0">
     3697                <widget class="Line" name="line_39">
     3698                 <property name="orientation">
     3699                  <enum>Qt::Horizontal</enum>
     3700                 </property>
     3701                </widget>
     3702               </item>
     3703               <item row="2" column="0">
     3704                <layout class="QGridLayout" name="gridLayout_85" rowstretch="0,0" columnstretch="0,0">
     3705                 <property name="sizeConstraint">
     3706                  <enum>QLayout::SetDefaultConstraint</enum>
     3707                 </property>
     3708                 <property name="topMargin">
     3709                  <number>0</number>
     3710                 </property>
     3711                 <item row="0" column="0">
     3712                  <widget class="QLabel" name="label_227">
     3713                   <property name="sizePolicy">
     3714                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
     3715                     <horstretch>0</horstretch>
     3716                     <verstretch>0</verstretch>
     3717                    </sizepolicy>
     3718                   </property>
     3719                   <property name="text">
     3720                    <string>Min</string>
     3721                   </property>
     3722                  </widget>
     3723                 </item>
     3724                 <item row="0" column="1">
     3725                  <widget class="QSpinBox" name="fBiasMin">
     3726                   <property name="sizePolicy">
     3727                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
     3728                     <horstretch>0</horstretch>
     3729                     <verstretch>0</verstretch>
     3730                    </sizepolicy>
     3731                   </property>
     3732                   <property name="alignment">
     3733                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3734                   </property>
     3735                   <property name="specialValueText">
     3736                    <string>auto</string>
     3737                   </property>
     3738                   <property name="suffix">
     3739                    <string> Hz</string>
     3740                   </property>
     3741                   <property name="minimum">
     3742                    <number>-1</number>
     3743                   </property>
     3744                   <property name="maximum">
     3745                    <number>2147483647</number>
     3746                   </property>
     3747                  </widget>
     3748                 </item>
     3749                 <item row="1" column="0">
     3750                  <widget class="QLabel" name="label_228">
     3751                   <property name="sizePolicy">
     3752                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
     3753                     <horstretch>0</horstretch>
     3754                     <verstretch>0</verstretch>
     3755                    </sizepolicy>
     3756                   </property>
     3757                   <property name="text">
     3758                    <string>Max</string>
     3759                   </property>
     3760                  </widget>
     3761                 </item>
     3762                 <item row="1" column="1">
     3763                  <widget class="QSpinBox" name="fBiasMax">
     3764                   <property name="sizePolicy">
     3765                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
     3766                     <horstretch>0</horstretch>
     3767                     <verstretch>0</verstretch>
     3768                    </sizepolicy>
     3769                   </property>
     3770                   <property name="alignment">
     3771                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3772                   </property>
     3773                   <property name="specialValueText">
     3774                    <string>auto</string>
     3775                   </property>
     3776                   <property name="suffix">
     3777                    <string> Hz</string>
     3778                   </property>
     3779                   <property name="minimum">
     3780                    <number>-1</number>
     3781                   </property>
     3782                   <property name="maximum">
     3783                    <number>2147483647</number>
     3784                   </property>
     3785                   <property name="value">
     3786                    <number>1000</number>
     3787                   </property>
     3788                  </widget>
     3789                 </item>
     3790                </layout>
     3791               </item>
     3792              </layout>
     3793             </widget>
     3794            </item>
     3795           </layout>
     3796          </widget>
     3797         </widget>
     3798        </item>
     3799       </layout>
     3800      </widget>
    32693801      <widget class="QWidget" name="fFadTab">
    32703802       <attribute name="title">
     
    91059637           </widget>
    91069638          </item>
    9107           <item>
    9108            <spacer name="verticalSpacer_61">
    9109             <property name="orientation">
    9110              <enum>Qt::Vertical</enum>
    9111             </property>
    9112             <property name="sizeHint" stdset="0">
    9113              <size>
    9114               <width>20</width>
    9115               <height>40</height>
    9116              </size>
    9117             </property>
    9118            </spacer>
    9119           </item>
    91209639         </layout>
    91219640        </item>
     
    1077611295              <width>40</width>
    1077711296              <height>0</height>
    10778              </size>
    10779             </property>
    10780            </spacer>
    10781           </item>
    10782           <item>
    10783            <spacer name="verticalSpacer_62">
    10784             <property name="orientation">
    10785              <enum>Qt::Vertical</enum>
    10786             </property>
    10787             <property name="sizeHint" stdset="0">
    10788              <size>
    10789               <width>20</width>
    10790               <height>40</height>
    1079111297             </size>
    1079211298            </property>
Note: See TracChangeset for help on using the changeset viewer.