Changeset 4104 for trunk/MagicSoft/Cosy


Ignore:
Timestamp:
05/20/04 04:42:48 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/catalog/CatalogLinkDef.h

    r1109 r4104  
    99#pragma link C++ class SlaPlanets+;
    1010
    11 #pragma link C++ class SaoFile+;
    1211#pragma link C++ class StarCatalog+;
    1312
  • trunk/MagicSoft/Cosy/catalog/Makefile

    r1109 r4104  
    3131.SUFFIXES: .c .cc .cxx .h .hxx .o
    3232
    33 SRCFILES = SaoFile.cc \
    34            Slalib.cc \
     33SRCFILES = Slalib.cc \
    3534           SlaStars.cc \
    3635           SlaPlanets.cc \
  • trunk/MagicSoft/Cosy/catalog/Slalib.cc

    r3897 r4104  
    6161    return ZdAz(kPiDiv2-alt, az);
    6262}
    63 /*
    64 Double_t Slalib::Hms2Sec(Int_t deg, UInt_t min, Double_t sec, Char_t sgn)
    65 {
    66     const Double_t rc = TMath::Sign((60.0 * (60.0 * (Double_t)TMath::Abs(deg) + (Double_t)min) + sec), (Double_t)deg);
    67     return sgn=='-' ? -rc : rc;
    68 }
    69 
    70 Double_t Slalib::Dms2Rad(Int_t deg, UInt_t min, Double_t sec, Char_t sgn)
    71 {
    72     // pi/(180*3600):  arcseconds to radians
    73 #define DAS2R 4.8481368110953599358991410235794797595635330237270e-6
    74     return Hms2Sec(deg, min, sec, sgn)*DAS2R;
    75 }
    76 
    77 Double_t Slalib::Hms2Rad(Int_t hor, UInt_t min, Double_t sec, Char_t sgn)
    78 {
    79     // pi/(12*3600):  seconds of time to radians
    80 #define DS2R 7.2722052166430399038487115353692196393452995355905e-5
    81     return Hms2Sec(hor, min, sec, sgn)*DS2R;
    82 }
    83 
    84 Double_t Slalib::Dms2Deg(Int_t deg, UInt_t min, Double_t sec, Char_t sgn)
    85 {
    86     return Hms2Sec(deg, min, sec, sgn)/3600.;
    87 }
    88 
    89 Double_t Slalib::Hms2Deg(Int_t hor, UInt_t min, Double_t sec, Char_t sgn)
    90 {
    91     return Hms2Sec(hor, min, sec, sgn)/240.;
    92 }
    93 
    94 Double_t Slalib::Dms2Hor(Int_t deg, UInt_t min, Double_t sec, Char_t sgn)
    95 {
    96     return Hms2Sec(deg, min, sec, sgn)/15.;
    97 }
    98 
    99 Double_t Slalib::Hms2Hor(Int_t hor, UInt_t min, Double_t sec, Char_t sgn)
    100 {
    101     return Hms2Sec(hor, min, sec, sgn)/3600.;
    102 }
    103 
    104 void Slalib::Day2Hms(Double_t day, Char_t &sgn, UShort_t &hor, UShort_t &min, UShort_t &sec)
    105 {
    106     // Handle sign
    107     sgn = day<0?'-':'+';
    108 
    109     // Round interval and express in smallest units required
    110     Double_t a = Round(86400. * TMath::Abs(day)); // Days to seconds
    111 
    112     // Separate into fields
    113     const Double_t ah = Trunc(a/3600.);
    114     a -= ah * 3600.;
    115     const Double_t am = Trunc(a/60.);
    116     a -= am * 60.;
    117     const Double_t as = Trunc(a);
    118 
    119     // Return results
    120     hor = (UShort_t)ah;
    121     min = (UShort_t)am;
    122     sec = (UShort_t)as;
    123 }
    124 
    125 void Slalib::Rad2Hms(Double_t rad, Char_t &sgn, UShort_t &deg, UShort_t &min, UShort_t &sec)
    126 {
    127     Day2Hms(rad/(TMath::Pi()*2), sgn, deg, min, sec);
    128 }
    129 
    130 void Slalib::Rad2Dms(Double_t rad, Char_t &sgn, UShort_t &deg, UShort_t &min, UShort_t &sec)
    131 {
    132     Rad2Hms(rad*15, sgn, deg, min, sec);
    133 }
    134 
    135 void Slalib::Deg2Dms(Double_t d, Char_t &sgn, UShort_t &deg, UShort_t &min, UShort_t &sec)
    136 {
    137     Day2Hms(d/24, sgn, deg, min, sec);
    138 }
    139 
    140 void Slalib::Deg2Hms(Double_t d, Char_t &sgn, UShort_t &deg, UShort_t &min, UShort_t &sec)
    141 {
    142     Rad2Hms(d/360, sgn, deg, min, sec);
    143 }
    144 
    145 void Slalib::Hor2Dms(Double_t h, Char_t &sgn, UShort_t &deg, UShort_t &min, UShort_t &sec)
    146 {
    147     Day2Hms(h*15/24, sgn, deg, min, sec);
    148 }
    149 
    150 void Slalib::Hor2Hms(Double_t h, Char_t &sgn, UShort_t &deg, UShort_t &min, UShort_t &sec)
    151 {
    152     Day2Hms(h/24, sgn, deg, min, sec);
    153 }
    154 
    155 void Slalib::Day2Hm(Double_t day, Char_t &sgn, UShort_t &hor, Double_t &min)
    156 {
    157     // Handle sign
    158     sgn = day<0?'-':'+';
    159 
    160     // Round interval and express in smallest units required
    161     Double_t a = Round(86400. * TMath::Abs(day)); // Days to seconds
    162 
    163     // Separate into fields
    164     const Double_t ah = Trunc(a/3600.);
    165     a -= ah * 3600.;
    166 
    167     // Return results
    168     hor = (UShort_t)ah;
    169     min = a/60.;
    170 }
    171 
    172 void Slalib::Rad2Hm(Double_t rad, Char_t &sgn, UShort_t &deg, Double_t &min)
    173 {
    174     Day2Hm(rad/(TMath::Pi()*2), sgn, deg, min);
    175 }
    176 
    177 void Slalib::Rad2Dm(Double_t rad, Char_t &sgn, UShort_t &deg, Double_t &min)
    178 {
    179     Rad2Hm(rad*15, sgn, deg, min);
    180 }
    181 
    182 void Slalib::Deg2Dm(Double_t d, Char_t &sgn, UShort_t &deg, Double_t &min)
    183 {
    184     Day2Hm(d/24, sgn, deg, min);
    185 }
    186 
    187 void Slalib::Deg2Hm(Double_t d, Char_t &sgn, UShort_t &deg, Double_t &min)
    188 {
    189     Rad2Hm(d/360, sgn, deg, min);
    190 }
    191 
    192 void Slalib::Hor2Dm(Double_t h, Char_t &sgn, UShort_t &deg, Double_t &min)
    193 {
    194     Day2Hm(h*15/24, sgn, deg, min);
    195 }
    196 
    197 void Slalib::Hor2Hm(Double_t h, Char_t &sgn, UShort_t &deg, Double_t &min)
    198 {
    199     Day2Hm(h/24, sgn, deg, min);
    200 }
    201 
    202 */
  • trunk/MagicSoft/Cosy/catalog/StarCatalog.cc

    r4076 r4104  
    196196        Float_t yy = loc.X()*fSinAngle + loc.Y()*fCosAngle;
    197197
     198        if (xx<0 || xx >=768 || yy<0 || yy>=576)
     199            continue;
     200
    198201        // Store pixel coordinates of star in list
    199202        list.Add(xx+768/2, yy+576/2, -2.5*log10(mag));
  • trunk/MagicSoft/Cosy/devdrv/macs.cc

    r2615 r4104  
    382382    //SetNoWait(TRUE);
    383383
    384     StartGuarding(400, 1, kFALSE); // Using PDO1 @ 100ms
     384    //StartGuarding(400, 1, kFALSE); // Using PDO1 @ 100ms
    385385    //StartGuarding(250, 4);
    386386    //StartHostGuarding();
  • trunk/MagicSoft/Cosy/devdrv/macs.h

    r4076 r4104  
    1 #ifndef MACS_H
    2 #define MACS_H
     1#ifndef COSY_Macs
     2#define COSY_Macs
    33
     4#ifndef COSY_NodeDrv
    45#include "nodedrv.h"
     6#endif
     7
     8#ifndef MARS_MTime
    59#include "MTime.h"
     10#endif
    611
    712class Macs : public NodeDrv
     
    119124
    120125    Double_t GetPosTime() const { return fPosTime; }
     126    Double_t GetMjd() const { return fPosTime.GetMjd(); }
     127    Double_t GetPdoMjd() const { return fPdoTime.GetMjd(); }
    121128
    122129    ClassDef(Macs, 0)
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc

    r4076 r4104  
    88#include <TGLabel.h>       // TGLabel->SetText
    99
     10#include "macs.h"
     11
    1012ClassImp(ShaftEncoder);
    1113
     
    1416ShaftEncoder::ShaftEncoder(const BYTE_t nodeid, const char *name, MLog &out)
    1517    : NodeDrv(nodeid, name, out), fPos(0), fVel(0), fAcc(0),
    16     fTurn(0), fLabel(NULL), fPosHasChanged(false), fReport(NULL)
    17 {
    18 }
    19 
     18    fTurn(0), fLabel(NULL), fPosHasChanged(false), fReport(NULL),/*fTwin(0),
     19    fIsUpdated(kFALSE),*/ fMotor(0), fOffset(0)
     20{
     21}
     22/*
     23void ShaftEncoder::CheckTwin(Int_t diff) const
     24{
     25    if (!fTwin)
     26        return;
     27
     28    if (fTwin->fIsUpdated)
     29        fTwin->fIsUpdated = kFALSE;
     30    else
     31        fTwin->fOffset += diff;
     32}
     33*/
    2034void ShaftEncoder::HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv)
    2135{
     
    7993        fPos  = val;
    8094        fTurn = 0;
     95        fOffset = fMotor ? fMotor->GetPdoPos() : 0;
     96        //fIsUpdated=kTRUE;
     97        //fOffset = 0;
    8198        return;
    8299
     
    154171void ShaftEncoder::DisplayVal()
    155172{
     173    const LWORDS_t pos = GetPos();
    156174    if (IsZombieNode())
    157175    {
    158176        fLabel->SetText(new TGString(""));
    159         fUpdPos = ~fPos;
     177        fUpdPos = ~pos;
    160178        return;
    161179    }
    162180
    163181    char text[21];
    164 
    165     if (fPos!=fUpdPos && fLabel)
    166     {
    167         sprintf(text, "%ld", fPos);
     182    if (pos!=fUpdPos && fLabel)
     183    {
     184        sprintf(text, "%ld", pos);
    168185        fLabel->SetText(new TGString(text));
    169         fUpdPos = fPos;
     186        fUpdPos = pos;
    170187    }
    171188}
     
    177194    //
    178195    LWORDS_t pos = data[0] | (data[1]<<8) | (data[2]<<16); // | (data[3]<<24);
    179     if (pos==fPos)
    180         return;
     196
     197    //if (pos==fPos)
     198    //    return;
    181199
    182200    fPos = pos;
     201    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    183202    fTime.Set(*tv);
    184203    fPosHasChanged = true;
    185204
     205    //CheckTwin(fPos-pos);
     206    //fIsUpdated=kTRUE;
     207
    186208    if (fReport)
    187209    {
    188         fReport->Lock();
     210        fReport->Lock("ShaftEncoder::HandlePDOType0");
    189211        *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO0 " << pos << " " << GetNodeName() << endl;
    190         fReport->UnLock();
     212        fReport->UnLock("ShaftEncoder::HandlePDOType0");
    191213    }
    192214}
     
    200222    BYTE_t   flag = data[4];
    201223
    202     if (fPos==pos)
    203         return;
    204 
     224    //if (fPos==pos)
     225    //    return;
     226
     227    //CheckTwin(fPos-pos);
    205228    fPos=pos;
     229    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    206230    fTime.Set(*tv);
    207231    fPosHasChanged=true;
     232    //fIsUpdated=kTRUE;
     233    //fOffset = 0;
    208234
    209235    flag=flag;
     
    211237    if (fReport)
    212238    {
    213         fReport->Lock();
     239        fReport->Lock("ShaftEncoder::HandlePDOType1");
    214240        *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO1 " << pos << " " << (int)flag << " " << GetNodeName() << endl;
    215         fReport->UnLock();
     241        fReport->UnLock("ShaftEncoder::HandlePDOType1");
    216242    }
    217243}
     
    241267        turn--;
    242268
    243     if (fPos==pos && fTurn==fTurn)
    244         return;
     269    //if (fPos==pos && fTurn==fTurn)
     270    //    return;
     271
     272    //CheckTwin(fPos-pos);
    245273
    246274    fPos  = pos;
    247275    fTurn = turn;
    248276
     277    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    249278    fTime.Set(*tv);
    250279    fPosHasChanged=true;
     280    //fIsUpdated=kTRUE;
     281    //fOffset = 0;
     282
    251283
    252284    if (fReport)
    253285    {
    254         fReport->Lock();
     286        fReport->Lock("ShaftEncoder::HandlePDOType2");
    255287        *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO2 " << pos << " " << fVel << " " << fAcc << " " << GetNodeName() << endl;
    256         fReport->UnLock();
     288        fReport->UnLock("ShaftEncoder::HandlePDOType2");
    257289    }
    258290}
     
    383415    fPos  = pre%16384;
    384416    fTurn = pre/16384;
     417
     418    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    385419}
    386420
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.h

    r4076 r4104  
    1 #ifndef SHAFTENCODER_H
    2 #define SHAFTENCODER_H
     1#ifndef COSY_ShafTEncoder
     2#define COSY_ShafTEncoder
    33
     4#ifndef COSY_NodeDrv
    45#include "nodedrv.h"
     6#endif
     7
     8#ifndef MARS_MTime
    59#include "MTime.h"
     10#endif
    611
     12class Macs;
    713class TGLabel;
    814
     
    1925    TGLabel  *fLabel;     //
    2026    LWORDS_t  fUpdPos;    // ticks
    21     //    WORDS_t   fUpdVel;    // ticks per 5ms
    22     //    WORDS_t   fUpdAcc;    // ticks per 25ms^2
    2327
    2428    bool fPosHasChanged;  //!
     
    2630    MTime fTime;
    2731    MLog *fReport;
     32
     33    Macs *fMotor;
     34    Int_t fOffset;
    2835
    2936    void HandlePDOType0(BYTE_t *data, timeval_t *tv);
     
    3542    void Init();
    3643    void CheckConnection();
     44    // void CheckTwin(Int_t diff) const;
    3745
    3846public:
     
    4250
    4351    void SetDisplay(TGLabel *label) { fLabel = label; }
     52    void SetMotor(Macs *m) { fMotor = m; }
     53    //void SetTwin(ShaftEncoder *se) { fTwin = se; }
    4454
    4555    void HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv);
     
    5262    void HandlePDO2(BYTE_t *data, timeval_t *tv) { HandlePDOType2(data, tv); }
    5363
    54     LWORDS_t GetPos() { return IsZombieNode() ? 0 : fPos+fTurn*fTicks; } // FIXME? 0?
    55     LWORD_t  GetPhysRes() { return fTicks; }
     64    LWORDS_t GetPos() const { return IsZombieNode() ? 0 : fPos+fTurn*fTicks; } // FIXME? 0?
     65    LWORD_t  GetPhysRes() const { return fTicks; }
     66    Int_t    GetOffset() const { return fOffset; }
     67    void     SetOffset(Int_t off) { fOffset = off; }
    5668
    5769    double GetMjd();
  • trunk/MagicSoft/Cosy/gui/GuiLinkDef.h

    r2278 r4104  
    44#pragma link off all classes;
    55#pragma link off all functions;
    6 
    7 #pragma link C++ class MGAccuracy+;
    86
    97#pragma link C++ class MGCoordinate+;
     
    1412#pragma link C++ class MGImage+;
    1513
     14#pragma link C++ class MGAccuracy+;
    1615#pragma link C++ class MGSkyPosition+;
    17 #pragma link C++ class MGVelocity+;
    1816
    1917#pragma link C++ class MGCosy+;
  • trunk/MagicSoft/Cosy/gui/MGCosy.cc

    r2615 r4104  
    2424#include "MCosy.h"
    2525#include "MTime.h"
     26#include "MString.h"
    2627#include "MAstro.h"
    2728#include "MGList.h"
    2829#include "MDriveCom.h"
     30#include "MGImage.h"
    2931#include "MGAccuracy.h"
     32//#include "MGAccuracyTime.h"
    3033#include "MGCoordinates.h"
    3134#include "MGSkyPosition.h"
     
    161164    fList->Add(l);
    162165
     166    fWeather = new TGLabel(f, "");
     167    fWeather->MoveResize(10, y+280, 280, 16);
     168    fList->Add(fWeather);
     169
    163170    fLabel1 = new TGLabel(f, "00000"); // Max: 16384
    164171    fLabel2 = new TGLabel(f, "00000");
     
    733740    cout << "MGCosy: Creating MGVelocity" << endl;
    734741#endif
    735     fVelocity = new MGVelocity(f2, "Velocity [\"/min]", 300);
    736 //    fOffset      = new MGVelocity   (f, "Offset se-re [']", 300);
     742
     743    fImage = new MGImage(f2, 768/2-1, 576/2-1, kRaisedFrame);
     744    //fVelocity = new MGVelocity(f2, "Velocity [U_{mot}/min]", 300);
     745    //    fOffset      = new MGVelocity   (f, "Offset se-re [']", 300);
     746#ifdef DEBUG
     747    cout << "MGCosy: Creating MGVelocityTime" << endl;
     748#endif
     749//  fAccuracyTime = new MGAccuracyTime(f2, 300);
    737750
    738751    fList->Add(fSkyPosition);
    739752    fList->Add(fAccuracy);
    740     fList->Add(fVelocity);
    741 //    fList->Add(fOffset);
     753    //  fList->Add(fAccuracyTime);
     754    //  fList->Add(fVelocity);
     755    //  fList->Add(fOffset);
     756    fList->Add(fImage);
    742757
    743758#ifdef DEBUG
     
    757772    TGLayoutHints *hints1  = new TGLayoutHints(kLHintsNormal  | kLHintsExpandX|kLHintsExpandY, 6, 6, 6, 3);
    758773    TGLayoutHints *hints2  = new TGLayoutHints(kLHintsNormal  | kLHintsExpandX|kLHintsExpandY, 6, 6, 3, 6);
    759     TGLayoutHints *hints1a = new TGLayoutHints(kLHintsLeft    | kLHintsTop   |kLHintsExpandX|kLHintsExpandY);
    760     TGLayoutHints *hints2a = new TGLayoutHints(kLHintsCenterY | kLHintsTop   |kLHintsExpandX|kLHintsExpandY, 6, 6);
    761     TGLayoutHints *hints3a = new TGLayoutHints(kLHintsRight   | kLHintsTop   |kLHintsExpandX|kLHintsExpandY);
    762     TGLayoutHints *hints1b = new TGLayoutHints(kLHintsLeft    | kLHintsBottom|kLHintsExpandX|kLHintsExpandY);
    763     TGLayoutHints *hints2b = new TGLayoutHints(kLHintsCenterY | kLHintsBottom|kLHintsExpandX|kLHintsExpandY, 6, 6);
    764     TGLayoutHints *hints3b = new TGLayoutHints(kLHintsRight   | kLHintsBottom|kLHintsExpandX|kLHintsExpandY);
     774
     775    TGLayoutHints *hints1a = new TGLayoutHints(kLHintsLeft    | kLHintsCenterY|kLHintsExpandX|kLHintsExpandY);
     776    TGLayoutHints *hints2a = new TGLayoutHints(kLHintsCenterX | kLHintsCenterY|kLHintsExpandX|kLHintsExpandY, 6, 6);
     777    TGLayoutHints *hints3a = new TGLayoutHints(kLHintsRight   | kLHintsCenterY|kLHintsExpandX|kLHintsExpandY);
     778    TGLayoutHints *hints1b = new TGLayoutHints(kLHintsLeft    | kLHintsCenterY|kLHintsExpandX|kLHintsExpandY);
     779    TGLayoutHints *hints2b = new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 6, 6);
     780    TGLayoutHints *hints3b = new TGLayoutHints(kLHintsRight   | kLHintsCenterY|kLHintsExpandX|kLHintsExpandY);
    765781
    766782    fList->Add(hints1);
     
    779795
    780796    // Layout upper frame
    781     f2->AddFrame(frame,        hints1b);
    782     f2->AddFrame(fVelocity,    hints2b);
    783     f2->AddFrame(fLog,         hints3b);
     797    f2->AddFrame(frame,         hints1b);
     798    f2->AddFrame(fImage,        hints2b);
     799    //f2->AddFrame(fVelocity,    hints2b);
     800    //f2->AddFrame(fAccuracyTime, hints2b);
     801    f2->AddFrame(fLog,          hints3b);
    784802
    785803    // Layout window
     
    802820    cout << "MGCosy: Setting Size" << endl;
    803821#endif
    804     const Int_t w = 940;
    805     const Int_t h = 660;
     822    const Int_t w = 1010;
     823    const Int_t h =  700;
    806824    SetWMSizeHints(w, h, 1280, 900, 10, 10);  // set the smallest and biggest size of the Main frame
    807825
     
    10131031    if (oldmjd != (ULong_t)(1000000*mjd))
    10141032    {
    1015         fMjd->SetText(new TGString(Form("%12.6f", mjd)));
     1033        MString str;
     1034        str.Print("%12.6f", mjd);
     1035        fMjd->SetText(new TGString(str));
    10161036        oldmjd = (ULong_t)(1000000*mjd);
    10171037    }
     
    10521072    {
    10531073        fAccuracy->Update(pos, acc);
    1054         fVelocity->Update(vel);
     1074        // fAccuracyTime->Update(pos, acc);
     1075        // fVelocity->Update(vel);
    10551076        fAccuracy->MapWindow();
    1056         fVelocity->MapWindow();
     1077        // fAccuracyTime->MapWindow();
     1078        // fVelocity->MapWindow();
    10571079    }
    10581080    else
    10591081    {
    10601082        fAccuracy->UnmapWindow();
    1061         fVelocity->UnmapWindow();
     1083        // fAccuracyTime->UnmapWindow();
     1084        // fVelocity->UnmapWindow();
    10621085    }
    10631086    //    stat&kTracking ? fOffset->MapWindow()   : fOffset->UnmapWindow();
    10641087
    1065 /*
    1066     if (fLog->TestBit(kHasChanged))
    1067     {
    1068         fLog->MapSubwindows();
    1069         fLog->Layout();
    1070         fLog->ResetBit(kHasChanged);
    1071     }*/
    1072 }
    1073 // ======================================================================
     1088    //unsigned char empty[(768/2-1)*(576/2-1)];
     1089    //fImage->DrawImg(empty);
     1090    //fImage->DoRedraw();
     1091
     1092   // if (IsMapped())
     1093   //     fImage->DoRedraw();
     1094}
     1095
     1096void MGCosy::UpdateWeather(const MCeCoCom &com)
     1097{
     1098    ULong_t color;
     1099    switch (com.GetWeatherStatus())
     1100    {
     1101    case 0:
     1102        color=TGFrame::GetDefaultFrameBackground();
     1103        break;
     1104    case 1:
     1105        gClient->GetColorByName("Yellow", color);
     1106        break;
     1107    case 2:
     1108        gClient->GetColorByName("Orange", color);
     1109        break;
     1110    default:
     1111        gClient->GetColorByName("Red", color);
     1112        break;
     1113    }
     1114
     1115    if (com.HasAlarm())
     1116    {
     1117        static int i=0;
     1118        if ((i++/4)%2==0)
     1119            color = TGFrame::GetDefaultFrameBackground();
     1120    }
     1121
     1122    const TString old(fWeather->GetText()->GetString());
     1123    const TString txt(com.GetWeather());
     1124
     1125    // Color is only updated if the text has changed
     1126    if (old!=txt || color!=fWeather->GetBackground())
     1127        fWeather->SetText(txt);
     1128
     1129    if (color!=fWeather->GetBackground())
     1130        fWeather->SetBackgroundColor(color);
     1131}
    10741132
    10751133void MGCosy::CloseWindow()
  • trunk/MagicSoft/Cosy/gui/MGCosy.h

    r2280 r4104  
    2828class RaDec;
    2929class MsgQueue;
     30class MCeCoCom;
    3031
    3132class MGList;
    3233class MGImage;
    3334class MGAccuracy;
     35class MGAccuracyTime;
    3436class MGVelocity;
    3537class MGCoordinates;
     
    6567    TGLabel       *fMjd;
    6668
     69    TGLabel       *fWeather;
     70
    6771    MStarList     fPreDefList;
    6872    MStarList     fStarList;
     
    7276    MGCoordinates *fCCalib;
    7377
    74     MGSkyPosition *fSkyPosition;
    75     MGAccuracy    *fAccuracy;
    76     MGVelocity    *fVelocity;
    77     MGVelocity    *fOffset;
     78    MGSkyPosition  *fSkyPosition;
     79    MGAccuracy     *fAccuracy;
     80    //MGAccuracyTime *fAccuracyTime;
     81    MGVelocity     *fVelocity;
     82    MGVelocity     *fOffset;
     83
     84    MGImage *fImage;
    7885
    7986    MsgQueue      *fQueue;
     
    128135
    129136    TGTextView *GetLog() const { return fLog; }
     137    MGImage    *GetImage()     { return fImage; }
    130138
    131139    void Update(ZdAz pos, ZdAz acc, ZdAz vel, /*ZdAz off,*/ RaDec radec, ZdAz soll, UInt_t stat, UInt_t stat2);
     140    void UpdateWeather(const MCeCoCom &com);
    132141
    133142    Bool_t ProcessMessage(Long_t msg, Long_t mp1, Long_t mp2);
  • trunk/MagicSoft/Cosy/gui/Makefile

    r2384 r4104  
    3838           MGEmbeddedCanvas.cc \
    3939           MGAccuracy.cc \
    40            MGVelocity.cc \
    41            MGSkyPosition.cc \
    42            MGMenu.cc
     40           MGSkyPosition.cc
    4341           
    4442SRCS        = $(SRCFILES)
Note: See TracChangeset for help on using the changeset viewer.