From 889c41c04fff9809ba3065cade3b2a1a3bf5e2a8 Mon Sep 17 00:00:00 2001
From: Olivier Lagrasse <olivier.lagrasse@gmail.com>
Date: Mon, 2 Feb 2009 11:57:43 +0000
Subject: [PATCH] interface : widget 3D + resolution probleme de chemins
 relatifs

---
 interface/Makefile                            |  10 +-
 interface/bin/info_window.ui                  |  60 ----------
 interface/bin/vite.qrc                        |   7 --
 .../{bin => src/icon}/folder_yellow_open.png  | Bin
 interface/{bin => src/icon}/help_index.png    | Bin
 interface/{bin/no.png => src/icon/quit.png}   | Bin
 interface/src/img/logo.png                    | Bin 0 -> 15225 bytes
 interface/src/info_window.ui                  | 106 ++++++++++++++++++
 interface/src/interface_graphic.cpp           |  23 ++--
 interface/src/interface_graphic.hpp           |  19 +++-
 interface/{bin => src}/main_window.ui         |  26 +----
 interface/src/render_area.cpp                 |  76 ++++++++++++-
 interface/src/render_area.hpp                 |  33 +++++-
 interface/src/resource.hpp                    |   6 +-
 interface/src/vite.qrc                        |  14 +++
 15 files changed, 270 insertions(+), 110 deletions(-)
 delete mode 100644 interface/bin/info_window.ui
 delete mode 100644 interface/bin/vite.qrc
 rename interface/{bin => src/icon}/folder_yellow_open.png (100%)
 rename interface/{bin => src/icon}/help_index.png (100%)
 rename interface/{bin/no.png => src/icon/quit.png} (100%)
 create mode 100644 interface/src/img/logo.png
 create mode 100644 interface/src/info_window.ui
 rename interface/{bin => src}/main_window.ui (87%)
 create mode 100644 interface/src/vite.qrc

diff --git a/interface/Makefile b/interface/Makefile
index cc1c662b..e53473d2 100644
--- a/interface/Makefile
+++ b/interface/Makefile
@@ -27,7 +27,7 @@ doc:
 
 
 rebuild:
-	cd ./src && qmake-qt4 -project  "TARGET=vite" "OBJECTS_DIR=../bin" "DESTDIR=../bin" "CONFIG+=uitools" "QT+=opengl" && qmake-qt4 -makefile -o Makefile  src.pro && make all 
+	cd ./src && qmake-qt4 -project "RESOURCES= vite.qrc" "OBJECTS_DIR=../bin" "DESTDIR=../bin" "CONFIG+=uitools" "QT+=opengl" && qmake-qt4 -makefile -o Makefile  src.pro && make all 
 	@echo " "
 	@echo "Rebuilt and compiled! (release)"
 	@echo " "
@@ -41,7 +41,7 @@ plugins:
 
 
 debugs:
-	cd ./src && qmake-qt4 -project && qmake-qt4 -makefile -o Makefile  "OBJECTS_DIR=../debug" "CONFIG+=uitools debug console" "QT+=opengl" "DESTDIR = ../debug" src.pro && make all
+	cd ./src && qmake-qt4 -project && qmake-qt4 -makefile -o Makefile  "RESOURCES= vite.qrc" "OBJECTS_DIR=../debug" "CONFIG+=uitools debug console" "QT+=opengl" "DESTDIR = ../debug" src.pro && make all
 	mv src/*.o bin/
 	@echo " "
 	@echo "Compilation completed! (debug)"
@@ -49,7 +49,7 @@ debugs:
 
 
 tests: rebuild
-	cd ./tests && qmake-qt4 -project && qmake-qt4 -makefile -o Makefile  "OBJECTS_DIR=../bin" "CONFIG+=uitools" "QT+= opengl" "DESTDIR = ../bin" tests.pro && make all
+	cd ./tests && qmake-qt4 -project && qmake-qt4 -makefile -o Makefile  "RESOURCES= vite.qrc" "OBJECTS_DIR=../bin" "CONFIG+=uitools" "QT+= opengl" "DESTDIR = ../bin" tests.pro && make all
 	mv tests/*.o bin/
 	@echo " "
 	@echo "Compilation completed! (test)"
@@ -64,7 +64,7 @@ clean:
 
 # Must be called with option -i, otherwise an error occured in the first instructions, the followings won't be executed.
 wash: 
-	cd ./src && rm *~ *.o *pro Makefile
-	cd ./tests && rm *~ *.o *pro Makefile
+	cd ./src && rm *~ *.o *pro Makefile qrc_vite.cpp core
+	cd ./tests && rm *~ *.o *pro Makefile core
 	cd ./bin && rm *.o
 	cd ./debug && rm *
diff --git a/interface/bin/info_window.ui b/interface/bin/info_window.ui
deleted file mode 100644
index 273264fb..00000000
--- a/interface/bin/info_window.ui
+++ /dev/null
@@ -1,60 +0,0 @@
-<ui version="4.0" >
- <class>info_window_2</class>
- <widget class="QMainWindow" name="info_window_2" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>607</width>
-    <height>187</height>
-   </rect>
-  </property>
-  <property name="windowTitle" >
-   <string>Informations</string>
-  </property>
-  <widget class="QWidget" name="centralwidget" >
-   <layout class="QHBoxLayout" name="horizontalLayout_2" >
-    <item>
-     <layout class="QHBoxLayout" name="horizontalLayout" >
-      <item>
-       <widget class="QGroupBox" name="groupBox" >
-        <property name="maximumSize" >
-         <size>
-          <width>300</width>
-          <height>16777215</height>
-         </size>
-        </property>
-        <property name="focusPolicy" >
-         <enum>Qt::StrongFocus</enum>
-        </property>
-        <property name="title" >
-         <string>Trace Resume</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QGroupBox" name="info_window" >
-        <property name="title" >
-         <string>Selection Informations</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </item>
-   </layout>
-  </widget>
-  <widget class="QMenuBar" name="menubar" >
-   <property name="geometry" >
-    <rect>
-     <x>0</x>
-     <y>0</y>
-     <width>607</width>
-     <height>26</height>
-    </rect>
-   </property>
-  </widget>
-  <widget class="QStatusBar" name="statusbar" />
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/interface/bin/vite.qrc b/interface/bin/vite.qrc
deleted file mode 100644
index 3b43f1da..00000000
--- a/interface/bin/vite.qrc
+++ /dev/null
@@ -1,7 +0,0 @@
-<RCC>
-  <qresource prefix="icon_menu" >
-    <file>folder_yellow_open.png</file>
-    <file>no.png</file>
-    <file>help_index.png</file>
-  </qresource>
-</RCC>
diff --git a/interface/bin/folder_yellow_open.png b/interface/src/icon/folder_yellow_open.png
similarity index 100%
rename from interface/bin/folder_yellow_open.png
rename to interface/src/icon/folder_yellow_open.png
diff --git a/interface/bin/help_index.png b/interface/src/icon/help_index.png
similarity index 100%
rename from interface/bin/help_index.png
rename to interface/src/icon/help_index.png
diff --git a/interface/bin/no.png b/interface/src/icon/quit.png
similarity index 100%
rename from interface/bin/no.png
rename to interface/src/icon/quit.png
diff --git a/interface/src/img/logo.png b/interface/src/img/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f98673cce751ae30c3833bea446d6fa6c5a5512b
GIT binary patch
literal 15225
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
P0|SGntDnm{r-UW|G=K(+

literal 0
HcmV?d00001

diff --git a/interface/src/info_window.ui b/interface/src/info_window.ui
new file mode 100644
index 00000000..7cef83ff
--- /dev/null
+++ b/interface/src/info_window.ui
@@ -0,0 +1,106 @@
+<ui version="4.0" >
+ <class>info_window</class>
+ <widget class="QMainWindow" name="info_window" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>607</width>
+    <height>187</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Informations</string>
+  </property>
+  <widget class="QWidget" name="centralwidget" >
+   <layout class="QHBoxLayout" name="horizontalLayout_2" >
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout" >
+      <item>
+       <widget class="QGroupBox" name="info_trace" >
+        <property name="maximumSize" >
+         <size>
+          <width>300</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="focusPolicy" >
+         <enum>Qt::StrongFocus</enum>
+        </property>
+        <property name="title" >
+         <string>Trace Resume</string>
+        </property>
+        <widget class="QTextEdit" name="info_trace_text" >
+         <property name="geometry" >
+          <rect>
+           <x>10</x>
+           <y>20</y>
+           <width>271</width>
+           <height>91</height>
+          </rect>
+         </property>
+         <property name="readOnly" >
+          <bool>true</bool>
+         </property>
+         <property name="html" >
+          <string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Trace informations&lt;/p>&lt;/body>&lt;/html></string>
+         </property>
+         <property name="textInteractionFlags" >
+          <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+         </property>
+        </widget>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="info_selection" >
+        <property name="title" >
+         <string>Selection Informations</string>
+        </property>
+        <widget class="QTextEdit" name="info_selection_text" >
+         <property name="geometry" >
+          <rect>
+           <x>10</x>
+           <y>20</y>
+           <width>271</width>
+           <height>91</height>
+          </rect>
+         </property>
+         <property name="readOnly" >
+          <bool>true</bool>
+         </property>
+         <property name="html" >
+          <string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Selection informations&lt;/p>&lt;/body>&lt;/html></string>
+         </property>
+         <property name="textInteractionFlags" >
+          <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+         </property>
+        </widget>
+       </widget>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>607</width>
+     <height>26</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QStatusBar" name="statusbar" />
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/interface/src/interface_graphic.cpp b/interface/src/interface_graphic.cpp
index bbbe9a0c..425e6a71 100644
--- a/interface/src/interface_graphic.cpp
+++ b/interface/src/interface_graphic.cpp
@@ -19,31 +19,38 @@ Interface_graphic::Interface_graphic(QWidget *parent):QWidget(parent){
     QFile file_info(UI_INFO_WINDOW_NAME);
 
 
-
+    /* Load the main window from a .ui file */
     file_main.open(QFile::ReadOnly);
     CKFP(_ui_main_window = loader.load(&file_main, this), "Cannot open the .ui file : " << UI_MAIN_WINDOW_NAME);
     file_main.close();
     
+    /* Load the informative window from a .ui file */
     file_info.open(QFile::ReadOnly);
     CKFP(_ui_info_window = loader.load(&file_info, _ui_main_window), "Cannot open the .ui file : " << UI_MAIN_WINDOW_NAME);
     file_info.close();
 
 
-
+    /* Set some windows properties */
     _ui_info_window->setWindowOpacity(0.7);/* Change alpha value of the informative window */
-    _ui_info_window->setWindowFlags(_ui_info_window->windowFlags() | Qt::CustomizeWindowHint);/* Always display info_window on top */
+    _ui_info_window->setWindowFlags(_ui_info_window->windowFlags() | Qt::WindowStaysOnTopHint);/* Always display info_window on top */
   
-    CKFP(_ui_render_area = qFindChild<QWidget*>(this, "render_area"), "Cannot find the render_area QWidget in the .ui file");
+    /* Load widget from the .ui file */
+    CKFP(_ui_render_area_layout = qFindChild<QVBoxLayout*>(this, "render_area_layout"), "Cannot find the render_area layout in the .ui file");   
     CKFP(_ui_fullscreen_menu = qFindChild<QAction*>(this, "fullscreen"), "Cannot find the fullscreen menu in the .ui file");
-           
+    CKFP(_ui_info_trace_text = qFindChild<QTextEdit*>(this, "info_trace_text"), "Cannot find the info_trace_text QTextEdit widget in the .ui file");
+
+    /* Create the render area and bind it to a layout (_ui_render_area_layout) */
+    _ui_render_area = new Render_area();
+    _ui_render_area_layout->addWidget(_ui_render_area);
 
     /* 
        Special function of Qt which allows methods declared as slots and which name are 'on_[widget]_[action]()' to be called when the 'widget' triggered the signal corresponding to 'action'.
      */
     QMetaObject::connectSlotsByName(this);
   
-    _ui_main_window->show();/* Display the main window */
-    _ui_info_window->show();/* Display the info window */
+    /* Display both the main and informative windows */
+    _ui_main_window->show();
+    _ui_info_window->show();
 }
 
 
@@ -59,6 +66,8 @@ void Interface_graphic::error(const string s) const{
 
 
 void Interface_graphic::warning(const string s) const{
+    QString buf = s.c_str();
+    _ui_info_trace_text->insertHtml(buf+"<br />");
 }
 
 
diff --git a/interface/src/interface_graphic.hpp b/interface/src/interface_graphic.hpp
index 85e232a2..3302c72e 100644
--- a/interface/src/interface_graphic.hpp
+++ b/interface/src/interface_graphic.hpp
@@ -8,6 +8,7 @@
 
 #include "interface.hpp"
 
+#include "render_area.hpp"
 
 
 /*!
@@ -38,7 +39,23 @@ class Interface_graphic : public QWidget, public Interface{
     /*!
      * \brief This variable contains the OpenGL render area.
      */
-    QWidget* _ui_render_area;
+    Render_area* _ui_render_area;
+
+    /*!
+     * \brief Layout which will contain the render area.
+     */
+    QVBoxLayout* _ui_render_area_layout;
+
+    /*!
+     * \brief Text area which informs the user about the trace resume.
+     */
+    QTextEdit* _ui_info_trace_text;
+
+    /*!
+     * \brief The parser attribute.
+     */
+    // Parser* _parser;
+
 
 
 public:
diff --git a/interface/bin/main_window.ui b/interface/src/main_window.ui
similarity index 87%
rename from interface/bin/main_window.ui
rename to interface/src/main_window.ui
index 4b3871bf..ff631407 100644
--- a/interface/bin/main_window.ui
+++ b/interface/src/main_window.ui
@@ -132,18 +132,7 @@
      </layout>
     </item>
     <item>
-     <layout class="QVBoxLayout" name="verticalLayout" >
-      <item>
-       <widget class="Render_area" name="render_area" >
-        <property name="toolTip" >
-         <string>Render area</string>
-        </property>
-        <property name="whatsThis" >
-         <string>An OpenGL render area for ViTE.</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
+     <layout class="QVBoxLayout" name="render_area_layout" />
     </item>
    </layout>
   </widget>
@@ -188,7 +177,7 @@
   <action name="open" >
    <property name="icon" >
     <iconset resource="vite.qrc" >
-     <normaloff>:/icon_menu/folder_yellow_open.png</normaloff>:/icon_menu/folder_yellow_open.png</iconset>
+     <normaloff>:/icon/icon/folder_yellow_open.png</normaloff>:/icon/icon/folder_yellow_open.png</iconset>
    </property>
    <property name="text" >
     <string>&amp;Open</string>
@@ -202,7 +191,7 @@
   <action name="quit" >
    <property name="icon" >
     <iconset resource="vite.qrc" >
-     <normaloff>:/icon_menu/no.png</normaloff>:/icon_menu/no.png</iconset>
+     <normaloff>:/icon/icon/quit.png</normaloff>:/icon/icon/quit.png</iconset>
    </property>
    <property name="text" >
     <string>&amp;Quit</string>
@@ -214,7 +203,7 @@
    </property>
    <property name="icon" >
     <iconset resource="vite.qrc" >
-     <normaloff>:/icon_menu/help_index.png</normaloff>:/icon_menu/help_index.png</iconset>
+     <normaloff>:/icon/icon/help_index.png</normaloff>:/icon/icon/help_index.png</iconset>
    </property>
    <property name="text" >
     <string>&amp;Help</string>
@@ -237,13 +226,6 @@
    </property>
   </action>
  </widget>
- <customwidgets>
-  <customwidget>
-   <class>Render_area</class>
-   <extends></extends>
-   <header>analogclock.h</header>
-  </customwidget>
- </customwidgets>
  <resources>
   <include location="vite.qrc" />
  </resources>
diff --git a/interface/src/render_area.cpp b/interface/src/render_area.cpp
index a3736b81..2cf34625 100644
--- a/interface/src/render_area.cpp
+++ b/interface/src/render_area.cpp
@@ -10,8 +10,80 @@
 
 Render_area::Render_area(QWidget *parent)
  : QGLWidget(parent)
-{}
+{
+ 
+    rot=0.0f;
+  
+    QTimer *timer = new QTimer(this);
+    connect(timer, SIGNAL(timeout()), this, SLOT(updateGL()));
+    timer->start(10);
+
+  
+
+}
 
  Render_area::~Render_area()
- {}
+ {
+     glDeleteLists(object, 1);
+ }
+
+
+void  Render_area::initializeGL()
+{
+    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
+  
+    object = glGenLists(1);
+    glNewList(object, GL_COMPILE);
+    {   
+        glBegin(GL_QUADS);
+        {
+            
+            glColor3ub(255,0,0); //red face
+            glVertex3d(1,1,1);
+            glVertex3d(1,1,-1);
+            glVertex3d(-1,1,-1);
+            glVertex3d(-1,1,1);
+        }
+        glEnd();
+    }
+    glEndList();
+
+    glEnable(GL_DEPTH_TEST);
+
+}
+
+void  Render_area::resizeGL(int width, int height)
+{
+     int side = qMin(width, height);
+    glViewport((width - side) / 2, (height - side) / 2, side, side);
+    
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrtho(-15, +15, +15, -15, -10, 15.0);
+    glMatrixMode(GL_MODELVIEW);
+}
 
+
+void  Render_area::paintGL()
+{
+  
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ 
+    glLoadIdentity();
+    gluLookAt(0,0,2,0,0,0,0,1,0);
+  
+    glRotatef(rot, 0.0f, 1.0f, 0.0f);
+
+    rot+=1.0f;
+    if (rot>1000.0f) rot=0.0f;
+  
+    
+ 
+    glCallList(object);
+
+    
+
+    
+    glFlush();
+ 
+}
diff --git a/interface/src/render_area.hpp b/interface/src/render_area.hpp
index 7f5b6bfc..1f04f4aa 100644
--- a/interface/src/render_area.hpp
+++ b/interface/src/render_area.hpp
@@ -5,15 +5,42 @@
 #ifndef RENDER_AREA_HPP
 #define RENDER_AREA_HPP
 
-#include <QGLWidget>
-// #include <QWidget>
- #include <QtDesigner/QDesignerExportWidget>
+#include "resource.hpp"
+
+
+
+#include <QtDesigner/QDesignerExportWidget>
 
 class QDESIGNER_WIDGET_EXPORT Render_area : public QGLWidget
  {
      Q_OBJECT
 
+ protected:
+
+     GLuint object;
+     float rot;
+     GLuint texture;
+ 
+
+     /*!
+     * \brief Call by the system to initialize the OpenGL render area.
+     */
+     void initializeGL();
+
+     /*!
+     * \brief Call by the system when the render area was resized (occurs during a window resizement).
+     * \arg width : the new width of the render area.
+     *      height : the new height of the render area. 
+     */
+     void resizeGL(int width, int height);
+
+     /*!
+     * \brief Call by the system each time the render area need to be updated.
+     */
+     void paintGL();
+
  public:
+
      /*!
      * \brief The default constructor
      */
diff --git a/interface/src/resource.hpp b/interface/src/resource.hpp
index 17497daa..1bcd3768 100644
--- a/interface/src/resource.hpp
+++ b/interface/src/resource.hpp
@@ -20,9 +20,9 @@
 using namespace std;
 
 
-
-#define UI_MAIN_WINDOW_NAME "main_window.ui"/* name of the main window ui file. This file must be included in the same folder than the compiled program. */
-#define UI_INFO_WINDOW_NAME "info_window.ui"/* name of the info window ui file. This file must be included in the same folder than the compiled program. */
+/* These paths corresponding to the path in the resource file ('vite.qrc' in the 'bin' folder) */
+#define UI_MAIN_WINDOW_NAME ":/window/main_window.ui"/* The main window ui file. */
+#define UI_INFO_WINDOW_NAME ":/window/info_window.ui"/* The info window ui file. */
 
 
 
diff --git a/interface/src/vite.qrc b/interface/src/vite.qrc
new file mode 100644
index 00000000..8a536493
--- /dev/null
+++ b/interface/src/vite.qrc
@@ -0,0 +1,14 @@
+<RCC>
+  <qresource prefix="icon" >
+    <file>icon/folder_yellow_open.png</file>
+    <file>icon/help_index.png</file>
+    <file>icon/quit.png</file>
+  </qresource>
+  <qresource prefix="img" >
+    <file>img/logo.png</file>
+  </qresource>
+  <qresource prefix="window" >
+    <file>info_window.ui</file>
+    <file>main_window.ui</file>
+  </qresource>
+</RCC>
-- 
GitLab