Maçon le l'espace

wxCppPy démonstration
## Présentation Maçon de l'espace alias [Ma](https://framagit.org/Suryavarman/ma) est un projet écrit en c++ et python. L'objectif est de créer un éditeur d'applications 3D simple qui permet d'interfacer différents moteurs 3D tel que Ogre3D et Pand3D. La version du projet en est encore au stade d'alpha. ## Feuille de route ### Premier cycle: - [x] ~~Via une interface C++, créer une communication entre wxWidgets C++ et wxPython.~~ [pybind11](https://github.com/pybind/pybind11) - [x] ~~Créer les scriptes nécessaires pour installer correctement les dépendances~~ ( [CppClay](https://sourceforge.net/projects/cppclay/), [pybind11](https://github.com/pybind/pybind11), [wxWidgets3](http://wxwidgets.org/), [wxPython4](https://github.com/wxWidgets/Phoenix), [Criterion](https://github.com/Snaipe/Criterion) ) ~~et l'environnement virtuel python.~~ - [x] ~~Créer une struture de données C++/Python.~~ [API::Item](https://framagit.org/Suryavarman/ma/-/blob/master/code/API/include/API/Item.h) /[APIPy::PyItem](https://framagit.org/Suryavarman/ma/-/blob/master/code/API_Py/src/PyItem.cpp) - [ ] Mettre en place le gestionnaire de ressources. - [ ] Mettre en place l'undo/redo. - [ ] Mettre en place le système d'interface unique de rendu 3D avec [Ogre](https://www.ogre3d.org/), [Panda](https://www.panda3d.org/) et [Cycle](https://www.cycles-renderer.org/). - [ ] Mettre en place la sauvegarde d'un projet Ma. - [ ] Générer une application à partir d'un projet Ma. - [ ] Mettre en place le Multi-langues [Application non anglaise](https://docs.wxwidgets.org/3.0/overview_nonenglish.html) / [wxConvAUto](https://docs.wxwidgets.org/3.0/classwx_conv_auto.html) [wxMBConv](https://docs.wxwidgets.org/3.0/classwx_m_b_conv.html) / [ISO/IEC 8859-15:1999](https://en.wikipedia.org/wiki/ISO/IEC_8859-15) - [ ] Ne plus utiliser CppClay - [ ] Installation pour Windows - [ ] Installation pour MacOS - [ ] Mettre en place l'écriture de scripts en C++. ### Second cycle: - [ ] Mettre en place les tests unitaires python pour le projet API_Py - [ ] Faire une belle interface - [ ] Multi-thread - [ ] Simplifier l'api python ex: root.m_Current.SetItem(item) deviendrait root.m_Current = item - [ ] … ## Prérequis - [CodeBlock](http://www.codeblocks.org/) - [python 3](https://www.python.org/) - [Ogre 3D](https://www.ogre3d.org/) - [Panda 3D](https://www.panda3d.org/) Vous trouverez la liste des dépendances en fonction de votre système (ubuntu ou mageia pour le moment) `Ma/dependencies/dependencies_*.cfg` ##### Python `pip install wget` ##### Linux: `gtk-3.0` `glib-2.0` `pango-1.0` `cairo` `gdk-pixbuf-2.0` `atk-1.0` ##### Mageia: - `su` - ``` urpmi python3-pip lib64openssl-devel lib64freeglut-devel lib64freeglut3 lib64mesaegl1-devel lib64gstreamer1.0-devel lib64gtk+3_0 lib64gtk+3.0-devel lib64jpeg-devel lib64notify-devel lib64png-devel lib64sdl2.0-devel lib64sm-devel lib64tiff-devel lib64webkit2gtk4.0_37 lib64xtst-devel ``` - `exit` - `pip3 install --user wget` ##### Ubuntu: - `sudo apt install uuid-dev` - `sudo pip3 install wget` - `sudo apt install libssl-dev` - WxPython dependencies ``` dpkg-dev build-essential python3.7-dev and libpython3.7-dev # use appropriate Python version here freeglut3-dev libgl1-mesa-dev libglu1-mesa-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libjpeg-dev libnotify-dev libpng-dev libsdl2-dev libsm-dev libtiff-dev libwebkit2gtk-4.0-dev libxtst-dev ``` ## Installation Dans le répertoire Ma/dependencies/ exécutez : - `install_dependencies.py` et suivez les instructions. Lors de la première phase, celle qui consiste à créer l'environnement python3, je recommande de choisir l'option : - Compiler les sources de python3.x (x >= 7). - Compiler wxPython depuis le dépôt github. Une fois les dépendances installées: - Editer/corriger le fichier `M`a/dependencies/dependencies.cfg`. - Copier la librairie dynamique libpython3.xx.so.x.x dans le dossier `Ma/code/GUI`. - Vous pouvez ouvrir le projet Codeblocks: `Ma/code/Maçon de l'espace` et le compiler. ## Quelques liens - [c++11/14/17](https://fr.cppreference.com/w/cpp) - [pybind11](https://github.com/pybind/pybind11) - [CppClay](https://sourceforge.net/projects/cppclay/) - [wxWidgets 3](http://wxwidgets.org/) - [python 3](https://www.python.org/) - [wxPython 4](https://github.com/wxWidgets/Phoenix) - [CodeBlock](http://www.codeblocks.org/) ## Les erreurs à l'installation des dépendences ### pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. Essayer d'installer libssl ou openssll, sinon installer un environnement virtuel au lieu de recompiler python. ### Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(161, '[SSL: LIBRARY_HAS_NO_CIPHERS] library has no ciphers (_ssl.c:3014)'))': /simple/numpy/ Le système ne possède peut-être pas le service ssl d'activé. Vous pouvez essayer d'installer la librairie manquante et le recompiler python ou de réienstaller l'environnement python mais cette fois ci au lieu de compiler python générer un environnement virtuel de python. ### [Errno 2] No such file or directory: 'sip/cpp/_core.sbf' Lors de la compilation le processus doit placer des fichiers dans le dossier sip. Si les sous dossiers de sip ne contiennent que des fichiers «lisez-moi» alors sip n'a pas été généré. Peut être cela vient de la compilation de python, où il aurait fallu le compiler avec l'option --enable-shared, si vous avez compiler python à l'aide du scipt install_py_env.py l'option est activée. Le problème n'est donc pas lié à cette option de compliation de python. ### Plus d'informations: [Mastodon](https://mamot.fr/@Suryavarman)