Ignore:
Timestamp:
Nov 9, 2009, 6:57:11 PM (15 years ago)
Author:
garnier
Message:

mise en place de Vis dans UI

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r1152 r1160  
    7979#include <qdialog.h>
    8080#include <qevent.h> //include <qcontextmenuevent.h>
    81 #include <qmainwindow.h>
    82 
    83 #ifdef G4DEBUG_VIS_OGL
    84 #include "G4UImanager.hh"
    85 #include "G4UIsession.hh"
    86 #include "G4UIQt.hh"
    87 #endif
    88 
    89 // #define G4DEBUG_VIS_OGL_QTPARENT
     81
    9082
    9183//////////////////////////////////////////////////////////////////////////////
     
    112104//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
    113105{
    114 
     106#ifdef G4DEBUG_VIS_OGL
     107  printf("G4OpenGLQtViewer::CreateMainWindow :: BEGIN \n");
     108#endif
    115109  if(fWindow) return; //Done.
    116110
     
    118112  //  fWindow->makeCurrent();
    119113
    120   fGLWindow = getParentWidget();
    121   if (fGLWindow != NULL) {
    122 #if QT_VERSION < 0x040000
    123     glWidget->reparent(fGLWindow,0,QPoint(0,0)); 
    124 #else
    125 #ifdef G4DEBUG_VIS_OGL_QTPARENT
    126     G4UImanager* UI = G4UImanager::GetUIpointer();
    127     if(UI!=NULL) {
    128       if (glWidget->thread()) {
    129         if (((G4UIQt*)UI->GetSession())->getMainWindow()) {
    130           if (((G4UIQt*)UI->GetSession())->getMainWindow()->thread()) {
    131             if (glWidget->thread() != ((G4UIQt*)UI->GetSession())->getMainWindow()->thread()) {
    132114#ifdef G4DEBUG_VIS_OGL
    133               printf("G4OpenGLQtViewer::CreateMainWindow not in te same thread ...move to\n");
    134 #endif
    135               glWidget->moveToThread(((G4UIQt*)UI->GetSession())->getMainWindow()->thread());
    136             } else {
    137               printf("G4OpenGLQtViewer::CreateMainWindow 1\n");
    138             }
    139            
    140             glWidget->setParent(fGLWindow); 
    141           } else {
    142             printf("G4OpenGLQtViewer::CreateMainWindow 2\n");
    143           }
    144         } else {
    145           printf("G4OpenGLQtViewer::CreateMainWindow 3 UI:%d session(UIQt):%d\n",UI,((G4UIQt*)UI->GetSession()));
    146         }
    147       } else {
    148         printf("G4OpenGLQtViewer::CreateMainWindow 4\n");
    149       }
    150     }
    151 #else
    152     glWidget->setParent(fGLWindow); 
    153 #endif
    154 #endif
    155   }
    156 
    157   QHBoxLayout *mainLayout = new QHBoxLayout;
    158   mainLayout->setMargin(0);
    159   mainLayout->setSpacing(0);
    160   mainLayout->addWidget(glWidget);
    161 
    162 #if QT_VERSION < 0x040000
    163   fGLWindow->setCaption(name );
    164 #else
    165   fGLWindow->setLayout(mainLayout);
    166   fGLWindow->setWindowTitle( name);
    167 #endif
     115  printf("G4OpenGLQtViewer::CreateMainWindow :: ++++++++++++++ add new TAB %s\n",name.toStdString().c_str());
     116#endif
     117  G4Qt* interactorManager = G4Qt::getInstance ();
     118
     119  // FIXME L.Garnier 9/11/09 Has to be check !!!
     120  // Qt UI with Qt Vis
     121  // Qt UI with X Vis
     122  // X UI with Qt Vis
     123  // X UI with X Vis
     124  // Ne marche pas avec un UIBatch !! (ecran blanc)
     125
     126  // return false if G4UIQt was not launch
     127  bool res = interactorManager->AddTabVisWidget(fWindow,name);
     128 
     129  if (!res) { // we have to do a dialog
     130
     131#ifdef G4DEBUG_VIS_OGL
     132    printf("G4OpenGLQtViewer::CreateMainWindow :: get Parent ? \n");
     133#endif
     134    QWidget *myParent = getParentWidget();
     135#ifdef G4DEBUG_VIS_OGL
     136    printf("G4OpenGLQtViewer::CreateMainWindow :: getParent OK \n");
     137#endif
     138    if (myParent != NULL) {
     139#if QT_VERSION < 0x040000
     140      fWindow->reparent(myParent,0,QPoint(0,0)); 
     141#else
     142      fWindow->setParent(myParent); 
     143#endif
     144    }
     145    QHBoxLayout *mainLayout = new QHBoxLayout(fGLWindow);
     146   
     147    mainLayout->setMargin(0);
     148    mainLayout->setSpacing(0);   
     149    mainLayout->addWidget(fWindow);
     150    if (fGLWindow->inherits("QMainWindow")) {
     151#if QT_VERSION < 0x040000
     152      fGLWindow->setCaption(name );
     153#else
     154      fGLWindow->setWindowTitle( name);
     155#endif
     156    }
     157#if QT_VERSION >= 0x040000
     158    fGLWindow->setLayout(mainLayout);
     159#endif
     160  } else {
     161    fGLWindow = fWindow;
     162  }
     163 
     164 
    168165  ResizeWindow(fVP.GetWindowSizeHintX(),fVP.GetWindowSizeHintY());
    169 
     166 
    170167  //useful for MACOSX, we have to compt the menuBar height
    171168  int offset = QApplication::desktop()->height()
    172                       - QApplication::desktop()->availableGeometry().height();
    173 
     169    - QApplication::desktop()->availableGeometry().height();
     170 
    174171  G4int YPos= fVP.GetWindowAbsoluteLocationHintY(QApplication::desktop()->height());
    175172  if (fVP.GetWindowAbsoluteLocationHintY(QApplication::desktop()->height())< offset) {
     
    181178 
    182179  if(!fWindow) return;
    183 
     180 
    184181  if (!fContextMenu)
    185182    createPopupMenu();
    186 
     183 
     184#ifdef G4DEBUG_VIS_OGL
     185  printf("G4OpenGLQtViewer::CreateMainWindow :: END \n");
     186#endif
    187187}
    188188
     
    241241
    242242#ifdef G4DEBUG_VIS_OGL
     243  G4UImanager* UI = G4UImanager::GetUIpointer();
     244  printf("G4OpenGLQtViewer::getParentWidget :: UImanager %d++++++++++++\n",UI);
     245#endif
     246
     247#ifdef G4DEBUG_VIS_OGL
    243248  printf("G4OpenGLQtViewer::G4OpenGLQtViewer END\n");
    244249#endif
     
    25422547
    25432548
    2544 void G4OpenGLQtViewer::drawText(
    2545 const char * str
    2546 ,int x
    2547 ,int y
    2548 ,int z
    2549 ,int size ) {
    2550  
    2551 #ifdef G4DEBUG_VIS_OGL
    2552   printf ("G4OpenGLStoredQtViewer::drawText-position %d,%d,%d-----------------------------------------\n",x,y,z);
    2553 #endif   
    2554  
    2555   QFont f1 = QFont("Courrier", size, QFont::Bold);
    2556 #if QT_VERSION > 0x040000
    2557   f1.setPointSizeF(20);
    2558 #else
    2559   f1.setPointSizeFloat(20);
    2560 #endif
    2561  
    2562   // FIXME : Interesting border effect : resizing world resize detector
    2563   // but not traces !
    2564   glColor3d (0.123456,0.1234560,0.123456);
    2565   fWindow->renderText (x,y,z,str,f1);
    2566   glColor3d (0.321,0.321,0.321);
    2567 }
    2568  
    2569  
    25702549// FIXME : does not work on Qt3
    25712550void G4OpenGLQtViewer::processEncodeStdout()
     
    26692648  // launch Qt if not
    26702649  G4Qt* interactorManager = G4Qt::getInstance ();
    2671   //  G4UImanager* UI = G4UImanager::GetUIpointer();
    2672  
    2673 
    2674 #ifdef G4DEBUG_VIS_OGL_QTPARENT
    26752650  G4UImanager* UI = G4UImanager::GetUIpointer();
    2676   if(UI!=NULL) {
    2677     if (((G4UIQt*)UI->GetSession())->getViewWidget()) {
    2678       printf("G4OpenGLQtViewer::getParentWidget ok :%d\n",((G4UIQt*)UI->GetSession())->getViewWidget());
    2679       return ((G4UIQt*)UI->GetSession())->getViewWidget();
    2680       //      fGLWindow = new QWidget(((G4UIQt*)UI->GetSession())->getViewWidget(),Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);   
    2681     } else {
    2682       return 0;
    2683     }
    2684     //    fGLWindow = new QWidget(0,Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);   
    2685   }
    2686 #else
    2687 
     2651#ifdef G4DEBUG_VIS_OGL
     2652  //  printf("G4OpenGLQtViewer::getParentWidget :: UImanager %d  G4Qt:%d et via GetUIQt:%d---------------------\n",UI,UI->GetSession(),interactorManager,interactorManager->GetUIVisWidget());
     2653#endif
     2654 
     2655  //   if (interactorManager) {
     2656  //     if (interactorManager->GetUIVisWidget()) {
     2657  //       fGLWindow = interactorManager->GetUIVisWidget();
     2658  //       return interactorManager->GetUIVisWidget();
     2659  //     }
     2660  //   }
     2661  //
    26882662
    26892663
     
    27332707    return NULL;
    27342708  }
    2735 #endif
    27362709}
    27372710
Note: See TracChangeset for help on using the changeset viewer.