Exemple #1
0
void ViewCameraGL::init()
{
  
  ViewerSettings settings;
  settings.beginGroup("Camera");
  bool autofit = settings.value("AutoFit",!__lockdim).toBool();
  __geomsys = settings.value("PglRefSystem",__geomsys).toBool();
  lockDim(!autofit);
  __resizePolicy = (eCameraResizePolicy)settings.value("ResizePolicy",(int)__resizePolicy).toInt();
  settings.endGroup();
}
Exemple #2
0
ViewHelpMenu::ViewHelpMenu(QWidget * parent, QGLWidget * glwidget, const char * name) :
  QMenu(parent),
  __glwidget(glwidget)
{
	if(name) setObjectName(name);
	__about = new ViewAboutDialog(this,false);
	QObject::connect(__about,SIGNAL(licenseView()),this,SLOT(showLicense()));
	addAction( tr("What's &This?"), parent->parent() , SLOT(whatsThis()), Qt::Key_F1);
    addAction(QPixmap(ViewSysInfo::tools_logo),tr("&Help"),this,SLOT(showHelp()),Qt::SHIFT+Qt::Key_F1);
    addSeparator();
    addAction(QPixmap(ViewerIcon::getPixmap(ViewerIcon::flower)),tr("&About Viewer"),this,SLOT(showAbout()), Qt::CTRL+Qt::Key_F1);
    addAction(tr("&License"),this,SLOT(showLicense()));
    addAction(QPixmap(ViewSysInfo::qt_logo),tr("About &Qt"),this,SLOT(aboutQt()));
    // addAction(QPixmap(ViewSysInfo::qt_logo),tr("About &QGLViewer"),glwidget,SLOT(aboutQGLViewer()));
    addSeparator();
    addAction(QPixmap(ViewSysInfo::info_logo),tr("Technical Characteristics"),this,SLOT(generalInfo()));
    // addAction(QPixmap(ViewSysInfo::qt_logo),tr("Qt Hierarchy"),this,SLOT(qtbrowse()));
    addSeparator();
    __style = new QMenu(this);
	__style->setTitle(tr("Style"));
	addMenu(__style);
	QStringList styles = QStyleFactory::keys();
	QActionGroup * actiongroup = new QActionGroup(__style);
	actiongroup->setExclusive(true);
    QAction * action = NULL;
	for(uint k = 0 ; k < styles.size(); k++){
	  action = __style->addAction(styles[k]);
	  action->setCheckable(true);
	  actiongroup->addAction(action);
	  __ids.push_back( action );
	}
    __style->addSeparator();
    action = __style->addAction("Default");
	action->setCheckable(true);
	actiongroup->addAction(action);
	__ids.push_back( action );
	default_style_name = QApplication::style()->metaObject()->className();
    checkItem(__ids.size()-1);

    ViewerSettings settings;
    settings.beginGroup("WinStyle");
    QString stylename = settings.value("StyleName","Default").toString();
    settings.endGroup();
    setStyle(stylename);
	QObject::connect(__style,SIGNAL(triggered(QAction *)),this,SLOT(setStyleCorrespondingTo(QAction*)));
}
Exemple #3
0
void Viewer::initialize()
{
  // qt_set_sequence_auto_mnemonic (true);

  setWindowIcon(QPixmap(ViewerIcon::getPixmap(ViewerIcon::flower)));

  setWhatsThis(tr("<b>The PlantGL 3D Viewer</b><br><br>"
    "A Viewer for 3D scene.<br><br>"));

  setGeometry(50,50,780,675);
  __isFullScreen = false;
  __focusAtRefresh = true;

  __GLFrame->setGeometry(0,58,724,574);
  __GLFrame->setWhatsThis(tr("<b>The 3D Display</b><br><br>"
    "This frame displays the 3D scenes.<br><br>"
    "Pressing button of the mouse and moving allows you to move around the scene :<br>"
    "Press <i>Left Button</i> to rotate.<br>"
    "Press <i>Middle Button</i> to zoom.<br>"
    "Press <i>Rigth Button</i> to translate.<br><br>"
    "The same manipulation and pressing the Ctrl Key allows you to control the light source.<br><br>"
    "The same manipulation and pressing the Shift Key allows you to select shapes from the scene.<br>"
    ));

  setCentralWidget(__GLFrame);
  __GLFrame->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  __GLFrame->sizePolicy().setHorizontalStretch(3);

  // Control Group Box.
  __controlPanel = new ViewControlPanel(__GLFrame,"Control Panel",this);
  __controlPanel->setWhatsThis(tr("<b>The Control Panel</b><br><br>"
    "This panel shows you parameters from the <i>ligth source</i>, its position and its material.<br><br>"
    "It shows also parameters from the position of the <i>camera</i> "
    "and the size of an <i>unitary move</i> and of the <i>unit of the grid</i>"));
    addDockWidget(Qt::RightDockWidgetArea,__controlPanel);


  //menubar
  __MainMenu = new QMenuBar( this);
  setMenuBar(__MainMenu);

  __HelpMenu = new ViewHelpMenu(__MainMenu,__GLFrame,"Help Menu");
  QObject::connect(__GLFrame,SIGNAL(initMessage(const QString&)),
           __HelpMenu,SLOT(setInitText(const QString&)) );
  __GLFrame->rendererStatus();


  __FileMenu = new ViewFileManager(this,
                   "File Operation",
                   __GLFrame,
                   __HelpMenu,
                   __controlPanel);
  QToolBar * locatToolBar = __FileMenu->getLocationBar();
  addToolBar(Qt::TopToolBarArea,locatToolBar);
  addToolBarBreak();

  __GLFrame->addOtherToolBar(this);
  addToolBarBreak();

  /// ToolBar
  __ViewToolBar = new ViewToolBar("View ToolBar",this,"ViewToolBar");
  __ViewToolBar->setIconSize(QSize(32,32));
  addToolBar(__ViewToolBar);



  /// ToolBar
  __FileToolBar = new ViewToolBar("File ToolBar",this,"FileToolBar");
  __FileToolBar->setIconSize(QSize(32,32));
  addToolBar(__FileToolBar);



  __GLFrame->connectTo(__ErrorDialog);
  __FileMenu->connectTo(__ErrorDialog);


  // Preparation de la boite de dialog Object Browser
  __Browser= new ViewBrowser(this, "Object Browser");
  __Browser->setWhatsThis(tr("<b>Viewer Object Browser</b><br><br>"
    "This frame displays the structure and the parameters of the 3D scenes.<br><br>"
    "Double clicking on one of the shape will select it"
    ));
    setCorner(Qt::BottomRightCorner,Qt::RightDockWidgetArea);
    addDockWidget(Qt::RightDockWidgetArea,__Browser);
    // __Browser->setFloating(true);
    __Browser->hide();


  // * View Menu
  // - Camera

  __ViewMenu = new QMenu( this );
  // - ToolBar
  QAction * _ViewMenuAction = __ViewMenu->addAction(tr("&Menu Bar"),this,SLOT(displayMenuBar()),Qt::Key_F6);
  _ViewMenuAction->setCheckable(true);
  _ViewMenuAction->setChecked(true);


  _ViewMenuAction = __controlPanel->toggleViewAction();
  __ViewMenu->addAction(_ViewMenuAction);
  _ViewMenuAction->setShortcut(Qt::Key_F7);

  _ViewMenuAction = __FileToolBar->toggleViewAction();
  __ViewMenu->addAction(_ViewMenuAction);
  _ViewMenuAction->setShortcut(Qt::Key_F8);

  _ViewMenuAction = __ViewToolBar->toggleViewAction();
  __ViewMenu->addAction(_ViewMenuAction);
  // _ViewMenuAction->setShortcut(Qt::Key_F9);


  if(__FileMenu->getLocationBar()){
    _ViewMenuAction = __FileMenu->getLocationBar()->toggleViewAction();
    __ViewMenu->addAction(_ViewMenuAction);
    _ViewMenuAction->setShortcut(Qt::Key_F10);
  }

  __ViewMenu->addSeparator();

  // - Browser
  _ViewMenuAction = __Browser->toggleViewAction();
  __ViewMenu->addAction(_ViewMenuAction);
  _ViewMenuAction->setShortcut(Qt::Key_F2);

  _ViewMenuAction = __ErrorDialog->toggleViewAction();
  __ViewMenu->addAction(_ViewMenuAction);
  _ViewMenuAction->setShortcut(Qt::Key_F3);


  __ViewMenu->addSeparator();
#ifdef _WIN32
  __ViewMenu->addAction(tr("&Debug Log"),this,SLOT(debugLog()));
  __ViewMenu->addSeparator();
#endif
  QMenu * FrameGLSize = new QMenu(tr("GL Frame Size"),__ViewMenu);
  __ViewMenu->addMenu(FrameGLSize);
  FrameGLSize->addAction(tr("800x600"),this,SLOT(set800x600FrameGL()));
  FrameGLSize->addAction(tr("640x480"),this,SLOT(set640x480FrameGL()));
  FrameGLSize->addAction(tr("512x384"),this,SLOT(set512x384FrameGL()));
  FrameGLSize->addAction(tr("320x240"),this,SLOT(set320x240FrameGL()));
  FrameGLSize->addSeparator();
  FrameGLSize->addAction(tr("Customize"),this,SLOT(setCustomFrameGLSize()),Qt::Key_F4);


  __ViewMenu->addSeparator();


  _ViewMenuAction = __ViewMenu->addAction(tr("GL Frame only"),this,SLOT(displayGLWidgetOnly()), Qt::Key_F10);
  QPixmap _fulls(ViewerIcon::getPixmap(ViewerIcon::fullscreen));
  __actFullScreen = __ViewMenu->addAction(_fulls,tr("Full Screen"),this,SLOT(displayFullScreen()), Qt::Key_F11);

  // The Status Bar.
  __statusBar= new ViewStatusBar(this);
  __statusBar->showMessage(tr("Ready"));
  __statusBar->setWhatsThis(tr("<b>The Status Bar</b>"));
  setStatusBar(__statusBar);

  __GLFrame->connectTo(__statusBar);
  __FileMenu->connectTo(__statusBar);
  //Title
  setWindowTitle(tr("PlantGL 3D Viewer"));

  __trayIcon = new QSystemTrayIcon(QPixmap(ViewerIcon::getPixmap(ViewerIcon::flower)),this);
  __trayIcon->setToolTip("PlantGL Viewer");
  QMenu * trayMenu = new QMenu(this);
  trayMenu->addAction(tr("About PlantGL Viewer ..."),__HelpMenu,SLOT(showAbout()));
  trayMenu->addSeparator();
  trayMenu->addAction(tr("GL Frame only"),this,SLOT(displayGLWidgetOnly()));
  trayMenu->addAction(tr("Full Screen"),this,SLOT(displayFullScreen()));
  trayMenu->addSeparator();
  trayMenu->addAction(tr("Unique PGL Windows"),this,SLOT(startDaemon()));
  trayMenu->addAction(tr("Multiple PGL Windows"),this,SLOT(stopDaemon()));
  trayMenu->addSeparator();
  trayMenu->addAction(tr("Exit"),this,SLOT(bye()));
  __trayIcon->setContextMenu(trayMenu);
  // __trayIcon->show();
  __trayIcon->showMessage("PlantGL","PlantGL Viewer ... Ready",QSystemTrayIcon::Information,2000);
  QObject::connect(__trayIcon,SIGNAL(messageClicked()),this,SLOT(appear()));
  QObject::connect(__trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(appear()));

  initializeRenderer();
  QObject::connect(__GLFrame,SIGNAL(rendererChanged()),
           this,SLOT(initializeRenderer()) );

  ViewerSettings settings;
  settings.beginGroup("Viewer");
  qDebug("Try to retrieve %s Application Data.", ViewerSettings::getAppliName().toAscii().data());
  int version = settings.value("StateVersion",-1).toInt();
  if(version != -1)
  {
    QRect rect = settings.value("Geometry",geometry()).toRect();
    QRect maxrect = QApplication::desktop()->geometry();
    if( maxrect.contains(rect) && rect.width() > 100 && rect.height() > 100){
        setGeometry(rect);
        qDebug("MainWindow.setGeometry(%i,%i,%i,%i)", rect.x(),rect.y(),rect.width(),rect.height());
    }

    QByteArray b = settings.value("State").toByteArray();
    restoreState(b,version);
    qDebug("Restore State");
  }
  else qDebug("Cannot restore State");
  __focusAtRefresh = settings.value("FocusAtRefresh",__focusAtRefresh).toBool();
  settings.endGroup();
}