Changeset 1690 for trunk


Ignore:
Timestamp:
12/18/02 17:48:44 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/base/MGList.h

    r918 r1690  
    1 #ifndef MGLIST_H
    2 #define MGLIST_H
     1#ifndef MARS_MGList
     2#define MARS_MGList
    33
    4 #ifdef DBG_MGLIST
    5 #include <iostream.h>
     4#ifndef ROOT_TList
     5#include <TList.h>
    66#endif
    77
    8 #ifndef ROOT_TOrdCollection
    9 #include <TOrdCollection.h>
    10 #endif
     8class TGWidget;
     9class TGPicture;
    1110
    12 class MGList : public TOrdCollection
     11class MGList : public TList
    1312{
     13private:
     14    TGWidget *GetWidget(TObject *obj) const;
     15    Bool_t    IsExisting(TObject *obj) const;
     16
     17    void      AddPicture(const TGPicture *pic, const char *name);
     18
    1419public:
    15     ~MGList()
    16     {
    17 #ifdef DBG_MGLIST
    18         cout << "Deleting:" << flush;
    19 #endif
     20    MGList() : TList() {}
     21    virtual ~MGList();
    2022
    21         TIter Next(this);
     23    void Add(TObject *obj);
     24    void Add(TObject *obj, Option_t *opt);
    2225
    23         TObject *obj;
    24         while ((obj=Next()))
    25         {
    26 #ifdef DBG_MGLIST
    27             cout << " <" << ((TGObject*)obj)->GetName() << ">" << flush;
    28 #endif
    29             delete (TGObject*)obj;
    30         }
    31 #ifdef DBG_MGLIST
    32         cout << endl;
    33 #endif
    34     }
    35     void Add(TGObject *obj)
    36     {
    37         TOrdCollection::Add(obj);
    38     }
     26    const TGPicture *GetPicture(const char *name);
     27    const TGPicture *GetPicture(const char *name, Int_t width, Int_t height);
     28
     29    TObject *FindWidget(Int_t id) const;
     30
     31    ClassDef(MGList, 0)
    3932};
    4033
  • trunk/MagicSoft/Cosy/candrv/network.cc

    r1273 r1690  
    237237            lout << "- Setting up Node #" << dec << i << endl;
    238238            fNodes[i]->InitDevice(this);
    239             fNodeInitialized[i] = TRUE;
     239            if (!fNodes[i]->IsZombieNode())
     240                fNodeInitialized[i] = TRUE;
     241            else
     242                fNodes[i]=NULL;
    240243        }
    241244    lout << "- All Nodes setup." << endl;
  • trunk/MagicSoft/Cosy/candrv/nodedrv.cc

    r1273 r1690  
    5656// and the node name. The name is a name for debug output.
    5757//
    58 NodeDrv::NodeDrv(BYTE_t nodeid, const char *name, MLog &out) : Log(out), fNetwork(NULL), fId(32), fError(0)
     58NodeDrv::NodeDrv(BYTE_t nodeid, const char *name, MLog &out) : Log(out), fNetwork(NULL), fId(32), fError(0), fIsZombie(kFALSE)
    5959{
    6060    if (nodeid>0x1f)
     
    311311// this device has been received.
    312312// You can stop waiting by StopWaitingForSDO.
    313 //
    314 void NodeDrv::WaitForSdo(WORD_t idx, BYTE_t subidx, WORDS_t timeout)
    315 {
    316     fNetwork->WaitForSdo(fId, idx, subidx, timeout);
     313// Return false if waiting timed out.
     314//
     315bool NodeDrv::WaitForSdo(WORD_t idx, BYTE_t subidx, WORDS_t timeout)
     316{
     317    return fNetwork->WaitForSdo(fId, idx, subidx, timeout);
    317318}
    318319
  • trunk/MagicSoft/Cosy/candrv/nodedrv.h

    r1272 r1690  
    3434    void DelError()        { fError = 0; }
    3535
     36    Bool_t fIsZombie;
     37
    3638public:
    3739    NodeDrv(BYTE_t nodeid, const char *name=NULL, MLog &out=gLog);
     
    4749    int  GetError() const { return fError; }
    4850    bool HasError() const { return fError; }
     51
     52    bool IsZombieNode() const { return fIsZombie; }
    4953
    5054    virtual void HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv);
     
    8286
    8387    // void WaitForSdos();
    84     void WaitForSdo(WORD_t idx, BYTE_t subidx=0, WORDS_t timeout=500);
     88    bool WaitForSdo(WORD_t idx, BYTE_t subidx=0, WORDS_t timeout=500);
    8589
    8690    void EnableCanMsg(BYTE_t fcode);
  • trunk/MagicSoft/Cosy/devdrv/macs.cc

    r1275 r1690  
    113113        fVelRes = val;
    114114        return;
     115
     116    case 0x6501:
     117        lout << "- Encoder resolution " << GetNodeName() << ": " << dec << val << " ticks/min" << endl;
     118        fRes = val;
     119        return;
    115120    }
    116121    cout << "Macs: SDO, idx=0x"<< hex << idx << "/" << (int)subidx;
     
    211216void Macs::InitDevice(Network *net)
    212217{
     218    lout << "- MAC Init device." << endl;
    213219    NodeDrv::InitDevice(net);
     220    lout << "- MAC Init device...done." << endl;
    214221
    215222//    SendSDO(0x4003, (LWORD_t)('E'<<24 | 'X'<<16 | 'I'<<8 'T'));
     
    295302    RequestSDO(0x6004);
    296303    WaitForSdo(0x6004);
     304}
     305
     306void Macs::ReqRes()
     307{
     308    lout << "- Requesting Encoder Resolution of " << GetNodeName() << endl;
     309    RequestSDO(0x6501);
     310    WaitForSdo(0x6501);
    297311}
    298312
     
    491505    case 100:
    492506        lout << "Connection timed out." << endl;
     507        EnableTimeout(false);
    493508        return;
    494509
     
    592607void Macs::EnableTimeout(bool enable, LWORDS_t ms)
    593608{
     609    lout << "- MAC " << (enable?"En":"Dis") << "able timeout, " << dec << ms << "ms." << endl;
    594610    if (!enable)
    595611    {
     
    597613        WaitForSdo(0x4000, 1);
    598614
     615        lout << "- Stopping handshake (PC)." << endl;
     616
    599617        fTimeout->Stop(); //kTRUE);
    600618
     
    610628        fTimerOn = kTRUE;
    611629        fTimeout->Start(fGuardTime/*/3*2*/, kTRUE); //kFALSE); //TRUE);
     630
    612631        //
    613632        // Start with kFALSE would be a continous timer, but this
     
    615634        // any reason
    616635        //
    617 
    618 //        SendSDO(0x4000, 1, string('o', 'n'));
    619 //        WaitForSdo(0x4000, 1);
     636        lout << "- MAC starting handshake." << endl;
     637        SendSDO(0x4000, 1, string('o', 'n'));
     638        WaitForSdo(0x4000, 1);
    620639    }
    621640    lout << "- Timeout timer of " << GetNodeName() << " turned "
     
    666685    // --- lout << edev(MLog::eGui);
    667686
    668     if (time.Now() > fTimeoutTime+0.5)
     687    if (time.Now() > fTimeoutTime)
    669688    {
    670689        lout << ddev(MLog::eGui);
     
    703722    fGuardTime = ms/3;      // how often do we send/request the handshake
    704723
    705     SendSDO(0x4000, 2, ms); // How often do we check for the handshake
     724    SendSDO(0x4000, 2, ms*2); // How often do we check for the handshake
    706725    WaitForSdo(0x4000, 2);
    707726}
  • trunk/MagicSoft/Cosy/devdrv/macs.h

    r1140 r1690  
    1818    Timer    fPosTime;
    1919
     20    LWORD_t  fRes;      // Encoder resolution
     21
    2022    LWORDS_t fPdoPos;
    2123    Timer    fPdoTime;
     
    3638    void ResetTimeout();
    3739    Bool_t HandleTimer(TTimer *t);
     40
     41    void ReqRes();
    3842
    3943public:
     
    100104    LWORDS_t GetVel()    { return fVel; }
    101105    LWORD_t  GetVelRes() { return fVelRes; } // Velocity units (would be 100 for %)
     106    LWORD_t  GetRes()    { return fRes; }    // Encoder resolution
    102107
    103108    void HandleError();
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc

    r1531 r1690  
    200200    lout << "- Requesting Hardware Type (SDO 0x1000) of " << GetNodeName() << endl;
    201201    RequestSDO(0x1000);
    202     WaitForSdo(0x1000);
     202    if (!WaitForSdo(0x1000))
     203    {
     204        lout << "  ... failed." << endl;
     205        fIsZombie = true;
     206        return;
     207    }
    203208
    204209    //
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.h

    r1140 r1690  
    5151
    5252    LWORDS_t GetPos() { return fPos+fTurn*fTicks; }
     53    LWORD_t  GetPhysRes() { return fTicks; }
    5354
    5455    double GetTime();
  • trunk/MagicSoft/Cosy/gui/MGCosy.cc

    r1531 r1690  
    3030#include "SlaStars.h"
    3131
     32#undef DEBUG
     33
    3234ClassImp(MGCosy);
    3335
    34 #define IDM_EXIT 1
    35 #define IDM_TEXT 2
     36#define IDM_EXIT   1
     37#define IDM_TEXT   2
     38#define IDM_ASPECT 3
    3639
    3740enum
     
    6063    //
    6164    TGPopupMenu *fFileMenu = new TGPopupMenu(gClient->GetRoot());
     65    fFileMenu->AddEntry("Set Aspect", IDM_ASPECT);
    6266    fFileMenu->AddEntry("Exit", IDM_EXIT);
    6367    fFileMenu->Associate(this);
     
    477481    fList = new MGList;
    478482
     483#ifdef DEBUG
    479484    cout << "MGCosy: Creating Menu" << endl;
     485#endif
    480486    CreateMenu();
    481487
     488#ifdef DEBUG
    482489    cout << "MGCosy: Creating TGCompositeFrame" << endl;
    483     TGCompositeFrame *f = new TGCompositeFrame(this, 0, 0);
    484     f->SetLayoutManager(new TGMatrixLayout(f, 3, 2, 10));
    485     fList->Add(f);
    486 
     490#endif
     491    TGHorizontalFrame *f1 = new TGHorizontalFrame(this, 0, 0);
     492    TGHorizontalFrame *f2 = new TGHorizontalFrame(this, 0, 0);
     493    fList->Add(f1);
     494    fList->Add(f2);
     495
     496#ifdef DEBUG
    487497    cout << "MGCosy: Creating TGTab" << endl;
    488     fTab = new TGTab(f, 300, 300);
     498#endif
     499    fTab = new TGTab(f1, 300, 300);
    489500    fList->Add(fTab);
    490501
     502#ifdef DEBUG
    491503    cout << "MGCosy: Creating MGSkyPosition" << endl;
    492     fSkyPosition = new MGSkyPosition(f, 300);
     504#endif
     505    fSkyPosition = new MGSkyPosition(f1, 300);
     506#ifdef DEBUG
    493507    cout << "MGCosy: Creating MGAccuracy" << endl;
    494     fAccuracy    = new MGAccuracy   (f, 300);
     508#endif
     509    fAccuracy    = new MGAccuracy   (f1, 300);
     510#ifdef DEBUG
    495511    cout << "MGCosy: Creating MGVelocity" << endl;
    496     fVelocity    = new MGVelocity   (f, "Velocity [\"/min]", 300);
     512#endif
     513    fVelocity    = new MGVelocity   (f2, "Velocity [\"/min]", 300);
    497514//    fOffset      = new MGVelocity   (f, "Offset se-re [']", 300);
    498515
     
    502519//    fList->Add(fOffset);
    503520
     521#ifdef DEBUG
    504522    cout << "MGCosy: Creating TGGroupFrame" << endl;
    505     TGGroupFrame *frame = new TGGroupFrame(f, "Status");
     523#endif
     524    TGGroupFrame *frame = new TGGroupFrame(f2, "Status");
    506525    frame->Resize(300, 300);
    507526    fList->Add(frame);
    508527
     528#ifdef DEBUG
    509529    cout << "MGCosy: Creating TGListBox" << endl;
    510     fLog = new TGListBox(f, -1, kSunkenFrame);  //kSunkenFrame|kDoubleBorder,
     530#endif
     531    fLog = new TGListBox(f2, -1, kSunkenFrame);  //kSunkenFrame|kDoubleBorder,
    511532    fLog->Resize(300, 300);
    512533    fLog->ChangeBackground(TGFrame::GetBlackPixel());
    513534    fList->Add(fLog);
    514535
    515     //
    516     // Layout the window, tile by tile...
    517     //
    518     f->AddFrame(fTab);
    519     f->AddFrame(fSkyPosition);
    520     f->AddFrame(fAccuracy);
    521     f->AddFrame(frame);
    522     f->AddFrame(fVelocity);
    523     f->AddFrame(fLog);
    524 
    525     AddFrame(f, new TGLayoutHints(kLHintsNormal | kLHintsExpandX, 0, 0, 1, 0));
     536    TGLayoutHints *hints1  = new TGLayoutHints(kLHintsNormal  | kLHintsExpandX|kLHintsExpandY, 6, 6, 6, 3);
     537    TGLayoutHints *hints2  = new TGLayoutHints(kLHintsNormal  | kLHintsExpandX|kLHintsExpandY, 6, 6, 3, 6);
     538    TGLayoutHints *hints1a = new TGLayoutHints(kLHintsLeft    | kLHintsTop   |kLHintsExpandX|kLHintsExpandY);
     539    TGLayoutHints *hints2a = new TGLayoutHints(kLHintsCenterY | kLHintsTop   |kLHintsExpandX|kLHintsExpandY, 6, 6);
     540    TGLayoutHints *hints3a = new TGLayoutHints(kLHintsRight   | kLHintsTop   |kLHintsExpandX|kLHintsExpandY);
     541    TGLayoutHints *hints1b = new TGLayoutHints(kLHintsLeft    | kLHintsBottom|kLHintsExpandX|kLHintsExpandY);
     542    TGLayoutHints *hints2b = new TGLayoutHints(kLHintsCenterY | kLHintsBottom|kLHintsExpandX|kLHintsExpandY, 6, 6);
     543    TGLayoutHints *hints3b = new TGLayoutHints(kLHintsRight   | kLHintsBottom|kLHintsExpandX|kLHintsExpandY);
     544
     545    fList->Add(hints1);
     546    fList->Add(hints2);
     547    fList->Add(hints1a);
     548    fList->Add(hints2a);
     549    fList->Add(hints3a);
     550    fList->Add(hints1b);
     551    fList->Add(hints2b);
     552    fList->Add(hints3b);
     553
     554    // Layout upper frame
     555    f1->AddFrame(fTab,         hints1a);
     556    f1->AddFrame(fSkyPosition, hints2a);
     557    f1->AddFrame(fAccuracy,    hints3a);
     558
     559    // Layout upper frame
     560    f2->AddFrame(frame,        hints1b);
     561    f2->AddFrame(fVelocity,    hints2b);
     562    f2->AddFrame(fLog,         hints3b);
     563
     564    // Layout window
     565    AddFrame(f1, hints1);
     566    AddFrame(f2, hints2);
    526567
    527568    //
    528569    // FIXME!
    529570    //
     571#ifdef DEBUG
    530572    cout << "MGCosy: Creating Tabs" << endl;
     573#endif
    531574    CreateTabs(fTab);
     575#ifdef DEBUG
    532576    cout << "MGCosy: Creating Label" << endl;
     577#endif
    533578    CreateLabel(frame);
    534579
     
    536581    //   Map the window, set up the layout, etc.
    537582    //
     583#ifdef DEBUG
    538584    cout << "MGCosy: Setting Size" << endl;
     585#endif
    539586    const Int_t w = 940;
    540587    const Int_t h = 660;
    541     SetWMSizeHints(w, h, w, h, 10, 10);  // set the smallest and biggest size of the Main frame
     588    SetWMSizeHints(w, h, 1280, 900, 10, 10);  // set the smallest and biggest size of the Main frame
    542589
    543590    SetWindowName("Cosy Main Window");
    544591    SetIconName("Cosy");
    545592
     593#ifdef DEBUG
    546594    cout << "MGCosy: Map Window" << endl;
     595#endif
    547596    MapSubwindows();
    548     Resize(GetDefaultSize());
     597    Resize(w, h); //GetDefaultSize());
    549598    MapWindow();
    550599}
     
    930979                //CloseWindow();
    931980                return kTRUE;
     981            case IDM_ASPECT:
     982                Int_t w = GetWidth();
     983                Int_t h = GetHeight();
     984                if (w>940*h/660)
     985                    w = 940*h/660;
     986                else
     987                    h = 660*w/940;
     988                Resize(w, h);
     989                return kTRUE;
    932990            }
    933991            return kTRUE;
  • trunk/MagicSoft/Cosy/gui/MGEmbeddedCanvas.cc

    r1275 r1690  
    1212#include <TCanvas.h>
    1313
     14#undef DEBUG
     15
    1416ClassImp(MGEmbeddedCanvas);
    1517
     
    1921      fModified(kFALSE), fWidth(width), fRange(range), fPix(2.*range/width)
    2022{
     23#ifdef DEBUG
    2124    cout << "MGEmbeddedCanvas: Initializing." << endl;
     25#endif
     26
    2227    fCanvas = GetCanvas();
    2328
     29#ifdef DEBUG
    2430    cout << "MGEmbeddedCanvas: fCanvas = 0x" << fCanvas << endl;
    2531
    2632    cout << "MGEmbeddedCanvas: SetFillColor." << endl;
     33#endif
    2734    fCanvas->SetFillColor(39); // s. TAttFill
     35#ifdef DEBUG
    2836    cout << "MGEmbeddedCanvas: fRange=" << fRange << endl;
     37#endif
    2938    if (fRange>0)
    3039        fCanvas->Range(-fRange, -fRange, fRange, fRange);
     
    3342    fList->SetOwner();
    3443
     44#ifdef DEBUG
    3545    cout << "MGEmbeddedCanvas: Initializing done." << endl;
     46#endif
    3647}
    3748
  • trunk/MagicSoft/Cosy/gui/MGImage.cc

    r1343 r1690  
    1111#include <iostream.h>
    1212#include <pthread.h>
     13
     14#include <TTimer.h>
     15#include <TSystem.h>
     16#include <TVirtualX.h>
     17#include <TGX11.h>
    1318
    1419ClassImp(MGImage);
     
    97102
    98103    //
    99     // get frame id
    100     //
    101     fId = GetId();
    102 
    103     //
    104104    // Create Default Graphic Context (XCreateGC)
    105105    //
    106     fDefGC = gVirtualX->CreateGC(fId, 0); // GetBckgndGC(); //
     106    fDefGC = gVirtualX->CreateGC(fId, 0); // GetBckgndGC().GetGC(); //
    107107
    108108    //
     
    120120
    121121    Resize(w, h);
     122
     123    //fTimer=new TTimer(Form("gClient->ProcessEventsFor((TGWindow*)0x%p);", this), 250, kTRUE);
     124//    fTimer=new TTimer("printf(\"Timer!\\n\"); gSystem->ProcessEvents();", 250, kTRUE);
     125    //fTimer->Start();
    122126}
    123127
    124128void MGImage::Resize(UInt_t w, UInt_t h)
    125129{
    126     TGFrame::Resize(w+2*GetBorderWidth(), h+2*GetBorderWidth());
     130//    TGFrame::Resize(w+2*GetBorderWidth(), h+2*GetBorderWidth());
    127131    // FIXME: RESIZE THE PIXMAP
    128132}
     
    130134void MGImage::Resize(TGDimension size)
    131135{
    132     TGFrame::Resize(size.fWidth+2*GetBorderWidth(), size.fHeight+2*GetBorderWidth());
     136//    TGFrame::Resize(size.fWidth+2*GetBorderWidth(), size.fHeight+2*GetBorderWidth());
    133137    // FIXME: RESIZE THE PIXMAP
    134138}
     
    136140void MGImage::MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h)
    137141{
    138    TGFrame::MoveResize(x, y, w+2*GetBorderWidth(), h+2*GetBorderWidth());
     142//   TGFrame::MoveResize(x, y, w+2*GetBorderWidth(), h+2*GetBorderWidth());
    139143   // FIXME: RESIZE THE PIXMAP
    140144}
     
    142146MGImage::~MGImage()
    143147{
     148    //fTimer->Stop();
     149    //delete fTimer;
     150
    144151    pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap);
    145152
     
    154161
    155162    if (fPixmap!=kNone) // @@@
     163    {
     164        cout << "Delete Pixmap" << endl;
    156165        gVirtualX->DeletePixmap(fPixmap);  // XFreePixmap(fDisplay, (Pixmap) pmap);
     166    }
    157167
    158168    cout << "Deleting GC..." << endl;
    159169
     170
    160171    gVirtualX->DeleteGC(fDefGC);       // XFreeGC(fDisplay, (GC) gc);
    161172
     
    165176}
    166177
     178#include <X11/Xlib.h>
    167179/*
    168 #include <X11/Xlib.h>
    169180#include <X11/Xutil.h>
    170181#include <X11/Intrinsic.h>
     
    174185void MGImage::DoRedraw()
    175186{
    176     // Pixmap_t pm = gVirtualX->CreatePixmap(this->GetId(), buffer,
    177     //                                       768, 576, 0, 0xff, 8);
    178     TGFrame::DrawBorder();
     187//    TGFrame::DrawBorder();
    179188    pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap);
     189
     190    //===========================
     191    if (TestBit(kNeedRecreate))
     192    {
     193        Pixmap_t mask = kNone;
     194        PictureAttributes_t attr;
     195        attr.fMask = kNone;
     196
     197        if (fPixmap!=kNone)
     198            gVirtualX->DeletePixmap(fPixmap);
     199
     200        fPixmap=kNone;
     201
     202        if (!gVirtualX->CreatePictureFromData(fId, fBuffer, fPixmap,
     203                                              mask, attr))
     204        {
     205            cout << "Warning: Error in CreatePictureFromData" << endl;
     206            fPixmap=kNone;
     207        }
     208        ResetBit(kNeedRecreate);
     209    }
     210
     211    //===========================
    180212
    181213    // Copy a drawable (i.e. pixmap) to another drawable (pixmap, window).
     
    185217    //           dest_x, dest_y);
    186218    if (fPixmap!=kNone) //@@@
    187     gVirtualX->CopyArea(fPixmap, fId, fDefGC,
    188                         0, 0, fWidth, fHeight,
    189                         GetBorderWidth(), GetBorderWidth());
     219    {
     220//        gVirtualX->DrawString(fId, fDefGC, 20, 20, "HELLO WORLD!", 12);
     221//        gVirtualX->FillRectangle(fId, fDefGC, 10, 10, 50, 50);
     222
     223        //        cout << gVirtualX->IsA()->GetName() << endl;
     224        gVirtualX->CopyArea(fPixmap, fId, fDefGC,
     225                            0, 0, fWidth, fHeight,
     226                            GetBorderWidth(), GetBorderWidth());
     227
     228        /*
     229        XCopyArea((Display*)gVirtualX->GetDisplay(), pm, fId,
     230                  (GC)fDefGC, 0, 0, fWidth, fHeight,
     231                  GetBorderWidth(), GetBorderWidth());
     232                  */
     233    }
    190234/*
    191235     if (fPix)
     
    271315    cout << "Done " << (void*)fPix << endl;
    272316    */
     317
     318/*
    273319    Pixmap_t mask = kNone;
    274320    PictureAttributes_t attr;
    275321    attr.fMask = kNone;
    276322    if (fPixmap!=kNone) // @@@
    277     gVirtualX->DeletePixmap(fPixmap); // XFreePixmap(fDisplay, (Pixmap) pmap);
     323        gVirtualX->DeletePixmap(fPixmap); // XFreePixmap(fDisplay, (Pixmap) pmap);
    278324
    279325    // Create a pixture pixmap from data. The picture attributes
     
    310356        fPixmap=kNone;
    311357    }
    312 
     358*/
     359    SetBit(kNeedRecreate);
    313360    pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap);
    314     DoRedraw();
     361    //gClient->NeedRedraw(this);
     362    //fTimer->Start(10, kTRUE);
     363    //gVirtualX->UpdateWindow(1);
     364    //    ((TGX11*)gVirtualX)->Sync(1);
     365    //new TTimer(Form("gClient->ProcessEventsFor((TGWindow*)0x%p);", this), 1, kFALSE);
     366    //    DoRedraw();
    315367}
    316368
     
    339391        }
    340392    }
    341 
     393/*
    342394    Pixmap_t mask = kNone;
    343395    PictureAttributes_t attr;
     
    346398    if (fPixmap!=kNone)
    347399        gVirtualX->DeletePixmap(fPixmap);
     400
    348401    fPixmap=kNone;
    349402
     
    354407        fPixmap=kNone;
    355408    }
    356 
     409    */
     410    SetBit(kNeedRecreate);
    357411    pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap);
    358     DoRedraw();
    359 }
    360 
     412    //gClient->NeedRedraw(this);
     413    //fTimer->Start(10, kTRUE);
     414    //gVirtualX->UpdateWindow(1);
     415    //    ((TGX11*)gVirtualX)->Sync(1);
     416    //new TTimer(Form("gClient->ProcessEventsFor((TGWindow*)0x%p);", this), 1, kFALSE);
     417    //    DoRedraw();
     418}
     419
  • trunk/MagicSoft/Cosy/gui/MGImage.h

    r1111 r1690  
    1010#include <TGFrame.h>
    1111
     12class TTimer;
     13
    1214typedef unsigned char byte;
    1315
     
    2022
    2123    GContext_t fDefGC;
    22     Drawable_t fId;
    2324    Pixmap_t   fPixmap;
    2425
     
    2829    void *fMuxPixmap; //! test
    2930
    30 public:
     31    TTimer *fTimer;
     32
     33    enum { kNeedRecreate = BIT(17) };
    3134
    3235public:
  • trunk/MagicSoft/Cosy/gui/MGSkyPosition.cc

    r1275 r1690  
    172172    : MGEmbeddedCanvas("SkyPosition", p, w, 110)
    173173{
    174     cout << "MGSkyPosition: Initilizing." << endl;
    175174    DrawCoordinateSystem();
    176175    InitPlanets();
     
    178177    InitText();
    179178    InitCanvas();
    180     cout << "MGSkyPosition: Initilizing done." << endl;
    181179}
    182180
     
    278276    static int Y = ~0;
    279277
    280     int xd = (int)floor(x);
    281     int yd = (int)floor(y);
     278    int xd = (int)/*floor*/(x);
     279    int yd = (int)/*floor*/(y);
    282280    x *= 60.;
    283281    y *= 60.;
    284282
    285     int fx = (int)floor(x*10.);
    286     int fy = (int)floor(y*10.);
     283    int fx = (int)/*floor*/(x*10.);
     284    int fy = (int)/*floor*/(y*10.);
    287285
    288286    if (X==fx && Y==fy)
     
    296294
    297295    char txt[100];
    298     sprintf(txt, "Zd=%d\xb0%02.1f'\nAz=%d\xb0%02.1f'",
    299             xd, xm, yd, ym);
     296    sprintf(txt, "Zd=%s%d\xb0%02.1f'\nAz=%s%d\xb0%02.1f'",
     297            x<0?"-":"", abs(xd), xm, y<0?"-":"", abs(yd), ym);
    300298
    301299    fText->SetText(fText->GetX(), fText->GetY(), txt);
     
    305303
    306304
    307 void MGSkyPosition::Update(ZdAz &pos)
     305void MGSkyPosition::Update(ZdAz &pos, double mjd)
    308306{
    309307    //
    310308    // calculate actual time for planet positions
    311309    //
    312     fSlaPlanet->SetMjd2Now();
    313     fSlaStar->SetMjd2Now();
     310    fSlaPlanet->SetMjd(mjd);
     311    fSlaStar->SetMjd(mjd);
    314312
    315313    UpdatePlanet(kESun,     fSun);
  • trunk/MagicSoft/Cosy/gui/MGSkyPosition.h

    r1273 r1690  
    6666    ~MGSkyPosition();
    6767
    68     void Update(ZdAz &pos);
     68    void Update(ZdAz &pos, double mjd);
    6969
    7070    ClassDef(MGSkyPosition, 0)
  • trunk/MagicSoft/Cosy/gui/MGStarguider.cc

    r1531 r1690  
    33#include <fstream.h>    // ifstream
    44#include <iostream.h>   // cout
    5 #
     5
     6#include <TTimer.h>
     7
    68#include <TGMenu.h>
    79#include <TSystem.h>
     
    6163};
    6264
     65Bool_t MGStarguider::HandleTimer(TTimer *t)
     66{
     67    fImage->DoRedraw();
     68    fZoomImage->DoRedraw();
     69    return kTRUE;
     70}
     71
    6372#define kZOOM 96
    6473
     
    199208    // Create Image Display
    200209    //
     210    fZoomImage = new MGImage(this, kZOOM, kZOOM);
     211    fZoomImage->Move(768-kZOOM-2, 700-kZOOM-2);
     212    AddFrame(fZoomImage);
     213    fList->Add(fZoomImage);
     214
    201215    fImage = new MGImage(this, 768, 576);
    202216    fImage->Move(0, fMenu->GetDefaultHeight());
     
    204218    fList->Add(fImage);
    205219
    206     fZoomImage = new MGImage(this, kZOOM, kZOOM);
    207     fZoomImage->Move(768-kZOOM-2, 700-kZOOM-2);
    208     AddFrame(fZoomImage);
    209     fList->Add(fZoomImage);
    210 
    211220    //
    212221    // Make everything visible
     
    217226    MapSubwindows();
    218227    MapWindow();
     228
     229    fTimer=new TTimer(this, 100); // 100ms
     230    fTimer->TurnOn();
    219231}
    220232
    221233MGStarguider::~MGStarguider()
    222234{
     235    fTimer->TurnOff();
     236    delete fTimer;
     237
    223238    delete fSao;
    224239    delete fRaDec;
  • trunk/MagicSoft/Cosy/gui/MGStarguider.h

    r1531 r1690  
    1414class AltAz;
    1515class RaDec;
     16
     17class TTimer;
    1618
    1719class TGMenuBar;
     
    5254    RaDec *fRaDec;
    5355
     56    TTimer *fTimer;
     57
    5458    Int_t fDx;
    5559    Int_t fDy;
     
    6266    void GetCoordinates();
    6367    void CalcTrackingError(MStarList &, MStarList &);
     68
     69    Bool_t HandleTimer(TTimer *t);
    6470
    6571public:
  • trunk/MagicSoft/Cosy/gui/MGVelocity.cc

    r1111 r1690  
    279279    vy /= 60.;  //['/min]
    280280
    281     int fx = (int)floor(vx*10.);
    282     int fy = (int)floor(vy*10.);
     281    int fx = (int)/*floor*/(vx*10.);
     282    int fy = (int)/*floor*/(vy*10.);
    283283
    284284    if (X==fx && Y==fy)
     
    290290    char txt[100];
    291291    sprintf(txt, "Zd=%.1f'\nAz=%.1f'",
    292             vx, vy);
     292            vy, vx);
    293293
    294294    fTextVel->SetText(fTextVel->GetX(), fTextVel->GetY(), txt);
  • trunk/MagicSoft/Cosy/macros/rootlogon.C

    r1139 r1690  
    4040    }
    4141
     42    gInterpreter->AddIncludePath("base");
     43    gInterpreter->AddIncludePath("main");
     44
    4245    cout << endl;
    4346
Note: See TracChangeset for help on using the changeset viewer.