Ignore:
Timestamp:
11/01/01 10:19:46 (23 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/meventdisp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/meventdisp/MGEvtDisplay.cc

    r991 r1023  
    2828
    2929#include <TGTab.h>                // TGTab
     30#include <TGMenu.h>               // TGPopupMenu
     31#include <TCanvas.h>              // TCanvas::Print
    3032#include <TGLabel.h>              // TGLabel
    3133#include <TGButton.h>             // TGPictureButton
    3234#include <TGMsgBox.h>             // TGMsgBox
    3335#include <TGTextEntry.h>          // TGTextEntry
     36#include <TGFileDialog.h>         // TGFileDialog
    3437#include <TRootEmbeddedCanvas.h>  // TRootEmbeddedCanvas
    3538
     
    4649enum MGCamDisplayCommand
    4750{
    48     M_PREVEVT,
    49     M_NEXTEVT,
    50     M_EVTNUMBER,
    51 
    52     M_PRINT,
    53     M_CLOSE
     51    kEvtPrev,
     52    kEvtNext,
     53    kEvtNumber,
     54
     55    kFileSaveAs,
     56    kFileSaveAsRoot,
     57    kFileSaveAsC,
     58    kFileSaveAsPS,
     59    kFileSaveAsEPS,
     60    kFileSaveAsGIF,
     61    kFilePrint,
     62    kClose
    5463};
    5564
     
    155164    // Create the gui elements
    156165    //
    157     TGTextButton *prevevt = new TGTextButton(top2, "<< Previous Event", M_PREVEVT);
     166    TGTextButton *prevevt = new TGTextButton(top2, "<< Previous Event", kEvtPrev);
    158167    prevevt->Associate(this);
    159168
    160169    TGLabel *evtnr = new TGLabel(top2, new TGString("Event: "));
    161170
    162     fTxtEvtNr = new TGTextEntry(top2, new TGTextBuffer(100), M_EVTNUMBER);
     171    fTxtEvtNr = new TGTextEntry(top2, new TGTextBuffer(100), kEvtNumber);
    163172    fTxtEvtNr->Resize(60, fTxtEvtNr->GetDefaultHeight());
    164173    fTxtEvtNr->Associate(this);
     
    166175    fNumOfEvts = new TGLabel(top2, "out of           Events.");
    167176
    168     TGTextButton *nextevt = new TGTextButton (top2, "Next Event >>", M_NEXTEVT);
     177    TGTextButton *nextevt = new TGTextButton (top2, "Next Event >>", kEvtNext);
    169178    nextevt->Associate(this);
    170179
     
    252261void MGEvtDisplay::AddLowFrame(TGHorizontalFrame *frame)
    253262{
    254     TGTextButton *but1 = new TGTextButton(frame, "Print", M_PRINT);
    255     TGTextButton *but2 = new TGTextButton(frame, "Close", M_CLOSE);
    256 
    257     but1->Associate(this);
    258     but2->Associate(this);
    259 
    260     fList->Add(but1);
    261     fList->Add(but2);
     263    TGTextButton *but = new TGTextButton(frame, "Close", kClose);
     264
     265    but->Associate(this);
     266
     267    fList->Add(but);
    262268
    263269    TGLayoutHints *laybut = new TGLayoutHints(kLHintsLeft, 10, 10, 10, 10);
    264270    fList->Add(laybut);
    265271
    266     frame->AddFrame(but1, laybut);
    267     frame->AddFrame(but2, laybut);
     272    frame->AddFrame(but, laybut);
    268273}
    269274
     
    330335//  Constructor
    331336//
     337void MGEvtDisplay::AddMenuBar()
     338{
     339    //
     340    // Add all GUI elements and update the event counter
     341    //
     342    TGLayoutHints *laymenubar  = new TGLayoutHints(kLHintsTop|kLHintsLeft|kLHintsExpandX, 2, 2, 2, 2);
     343    TGLayoutHints *laymenuitem = new TGLayoutHints(kLHintsTop|kLHintsLeft, 0, 4, 0, 0);
     344    TGLayoutHints *laylinesep  = new TGLayoutHints(kLHintsTop|kLHintsExpandX);
     345
     346    fList->Add(laymenubar);
     347    fList->Add(laymenuitem);
     348    fList->Add(laylinesep);
     349
     350    TGPopupMenu *filemenu = new TGPopupMenu(gClient->GetRoot());
     351    filemenu->AddEntry("Save &As...",           kFileSaveAs);
     352    filemenu->AddEntry("Save As display.&ps",   kFileSaveAsPS);
     353    filemenu->AddEntry("Save As display.&eps",  kFileSaveAsEPS);
     354    filemenu->AddEntry("Save As display.&gif",  kFileSaveAsGIF);
     355    filemenu->AddEntry("Save As display.&C",    kFileSaveAsC);
     356    filemenu->AddEntry("Save As display.&root", kFileSaveAsRoot);
     357    filemenu->AddSeparator();
     358    filemenu->AddEntry("&Print...", kFilePrint);
     359    filemenu->AddSeparator();
     360    filemenu->AddEntry("E&xit", kClose);
     361    filemenu->Associate(this);
     362
     363    TGMenuBar *menubar = new TGMenuBar(this, 1, 1, kHorizontalFrame);
     364    menubar->AddPopup("File", filemenu, laymenuitem);
     365    AddFrame(menubar, laymenubar);
     366
     367    TGHorizontal3DLine *linesep = new TGHorizontal3DLine(this);
     368    AddFrame(linesep, laylinesep);
     369
     370    fList->Add(filemenu);
     371    fList->Add(menubar);
     372    fList->Add(linesep);
     373}
     374
    332375MGEvtDisplay::MGEvtDisplay(const char *fname, const char *tname,
    333376                           const TGWindow *p, const TGWindow *main,
     
    346389    // (via SetOwner())
    347390    //
    348 
    349391    MTaskList *tlist = new MTaskList;
    350392    tlist->SetOwner();
     
    353395    tlist->AddToList(read);
    354396
    355     MParList *plist = new MParList();
     397    MParList *plist = new MParList;
    356398    plist->SetOwner();
    357399    plist->AddToList(tlist);
     
    361403    fEvtLoop->SetParList(plist);
    362404
    363     //
    364     // Add all GUI elements and update the event counter
    365     //
     405    AddMenuBar();
    366406    AddFrames(fname, tname);
    367407    UpdateEventCounter();
    368408}
    369409
    370 
    371410// --------------------------------------------------------------------------
    372411//
     
    375414MGEvtDisplay::~MGEvtDisplay()
    376415{
    377     delete fList;
    378 
    379416    fEvtLoop->PostProcess();
    380417    delete fEvtLoop;
     418
     419    delete fList;
    381420}
    382421
     
    404443    Int_t retval  = 0;
    405444
     445    //
    406446    //  first check if the new event is in the range of possible events
    407  
     447    //
    408448    if (iEvt >= GetReader()->GetEntries())
    409449    {
    410         new TGMsgBox(gClient->GetRoot(), this,
    411                      "WARNING!",
     450        new TGMsgBox(gClient->GetRoot(), this, "WARNING!",
    412451                     "The event number is out of range!!!",
    413452                     kMBIconExclamation, buttons, &retval);
     
    435474
    436475    fTxtEvtNr->SetText(txt);
     476}
     477
     478// --------------------------------------------------------------------------
     479//
     480//  Opens a save as dialog, and tries to store the canvas
     481//  in the given output format
     482//
     483void MGEvtDisplay::SaveAsDialog() const
     484{
     485    static const char *gSaveAsTypes[] =
     486    {
     487        "PostScript",   "*.ps",
     488        "Encapsulated PostScript", "*.eps",
     489        "Gif files",    "*.gif",
     490        "Macro files",  "*.C",
     491        "ROOT files",   "*.root",
     492        "All files",    "*",
     493        NULL,           NULL
     494    };
     495
     496    static TString dir(".");
     497
     498    TGFileInfo fi;
     499
     500    fi.fFileTypes = gSaveAsTypes;
     501    fi.fIniDir    = StrDup(dir);
     502
     503    new TGFileDialog(fClient->GetRoot(), this, kFDSave, &fi);
     504
     505    if (!fi.fFilename)
     506        return;
     507
     508    dir = fi.fIniDir;
     509
     510    if (strstr(fi.fFilename, ".root") ||
     511        strstr(fi.fFilename, ".ps")   ||
     512        strstr(fi.fFilename, ".eps")  ||
     513        strstr(fi.fFilename, ".gif"))
     514    {
     515        fCanvas->SaveAs(fi.fFilename);
     516        return;
     517    }
     518    if (strstr(fi.fFilename, ".C"))
     519    {
     520        fCanvas->SaveSource(fi.fFilename);
     521        return;
     522    }
     523    Warning("SaveAsDialog", "Unknown Extension: %s", fi.fFilename);
    437524}
    438525
     
    456543            switch (parm1)
    457544            {
    458             case M_PREVEVT:
     545            case kEvtPrev:
    459546                //
    460547                // '-2' is because MReadTree::Process increases the
     
    465552                return kTRUE;
    466553
    467             case M_NEXTEVT:
     554            case kEvtNext:
    468555                //
    469556                // '+0' is because MReadTree::Process increases the
     
    474561                return kTRUE;
    475562
    476             case M_CLOSE:
     563            case kClose:
     564                CloseWindow();
     565                return kTRUE;
     566            }
     567            return kTRUE;
     568
     569        case kCM_MENU:
     570            switch (parm1)
     571            {
     572            case kFileSaveAs:
     573                SaveAsDialog();
     574                return kTRUE;
     575            case kFileSaveAsRoot:
     576                fCanvas->SaveAs("display.root");
     577                return kTRUE;
     578            case kFileSaveAsC:
     579                fCanvas->SaveSource("display.C");
     580                return kTRUE;
     581            case kFileSaveAsPS:
     582                fCanvas->SaveAs("display.ps");
     583                return kTRUE;
     584            case kFileSaveAsEPS:
     585                fCanvas->SaveAs("display.eps");
     586                return kTRUE;
     587            case kFileSaveAsGIF:
     588                fCanvas->SaveAs("display.gif");
     589                return kTRUE;
     590            case kFilePrint:
     591                fCanvas->Print();
     592                return kTRUE;
     593            case kClose:
    477594                CloseWindow();
    478595                return kTRUE;
  • trunk/MagicSoft/Mars/meventdisp/MGEvtDisplay.h

    r1015 r1023  
    2929    TGTextEntry *fTxtEvtNr;
    3030
     31    void AddMenuBar();
    3132    void AddTopFramePart1(TGVerticalFrame *frame,
    3233                          const char *filename,
     
    3738
    3839    void AddFrames(const char *filename, const char *treename);
     40
     41    void SaveAsDialog() const;
    3942
    4043    void ReadinEvent(UInt_t iEvt);
Note: See TracChangeset for help on using the changeset viewer.