OpenPlane

a marqué ce sujet comme résolu.

Merci de ta réponse.
À vrai dire, je ne savais que MangoDB nécessitait un serveur pour fonctionner. :-° Donc clairement oui, pas MangoDB.

Si j'opte pour les fichier JSON, j'obtiendrais la hiérarchie suivante (noms temporaires) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
.
└── Carnets de vol
    ├── Carnet de vols 1
    │   ├── config.json
    │   ├── vol (3e copie).json
    │   ├── vol (4e copie).json
    │   ├── vol (5e copie).json
    │   ├── vol (6e copie).json
    │   ├── vol (autre copie).json
    │   ├── vol (copie).json
    │   └── vol.json
    └── Carnet de vols 2
        ├── config.json
        ├── vol (3e copie).json
        ├── vol (autre copie).json
        ├── vol (copie).json
        └── vol.json

Avec donc la possibilité d'avoir plusieurs carnets de vols. Une autre solution que je n'avais pas envisagé serais un fichier CSV par carnets de vol qui contiendrais toutes les entrées. Bien que je ne suis pas fan du CSV, ça peut se faire.

Ensuite, un vol contient 21 données (pour le moment, d'après ce que j'ai en tête). En voici la liste :

  • Date
  • Aeronef
  • Fonction à bord
  • Nature du vol
  • Membre d'équipage
    • Jour
    • Nuit
  • Pilote monomoteur
    • Jour
      • Double
      • Commandant de bord
    • Nuit
      • Double
      • Commandant de bord
  • Pilote multimoteurs
    • Jour
      • Double
      • Commandant de bord
      • Co-pilote
    • Nuit
      • Double
      • Commandant de bord
      • Co-pilote
  • Vols aux instruments
    • Double
    • Pilote
  • Simulation
  • Arrivées IFR

Ça se sont vraiment les données de base qui sont dans un vrai Carnet de vols. Après je compte rajouter quelques infos comme le terrain de départ et d'arrivée, les heures de départs et d'arrivées, commentaires sur le vol (pour garder des souvenirs, ou je ne sais quoi), la météo, etc.
Toutes ces données afin de réaliser des statistiques sympa, car c'est bien d'avoir des chiffres, mais autant les faire parler ! ;)

Les stats n'arriveront pas tout de suite dans la v0.8 je pense, mais après. Les carnets de vol devront cependant être disponible.

Il vaudrait mieux faire un CSV non ? Ouvrir un seul fichier qui possède toutes les données vaut mieux que de parcourir tout un répertoire pour lire les données dans un fichier un à un, non ?

C'est pas faux. Va pour le JSON alors.

Toutes ces copies c'est parce que j'ai fait une architecture à l'arrache pour te montrer. Autrement les vols seront nommés par la date du vol je pense, quelque chose comme 2015-09-17.opf (.opf pour Open Plane Flight).

D'ailleurs petite question, les noms de données dans les fichiers avions sont en français. Devrais-je les passer en anglais ?

+0 -0

Si mais ça ferais un fichier affreusement long, et j'ai horreur des fichiers long. Autant utiliser CSV dans ce cas.


Voilà, les fichiers d'avions d'OpenPlane utilisent désormais l'anglais pour leurs clés. C'est là que je me rend compte que mon code est relativement flexible ! :D

@Grimur, tu me dis un moment :

Pour le coup de "un fichier par vol", rien ne t'empêche de zipper tous tes fichiers JSON.

C'est possible de lire des informations dans un dossier zippé ? Imaginons que je zippe mon dossier carnet de vol 1, pour lire les fichiers JSON dedans, il faudrait que je le dézippe à chaque fois ?!

+0 -0

Je ne connaissais pas du tout, merci ! :)


EDIT : Voici la tête qu'aura un fichier de vol :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'Date': self.date,
'Plane': self.plane,
'Role': self.role,
'Type': self.type,
'Members': {
    'Day': self.members_day,
    'Night': self.members_night
},
'Single_engine': {
    'Day': {
        'Double': self.single_engine_day_double,
        'Captain': self.single_engine_day_captain
    },
    'Night': {
        'Double': self.single_engine_night_double,
        'Captain': self.single_engine_night_captain
    }
},
'Multi_engines': {
    'Day': {
        'Double': self.multiple_engines_day_double,
        'Captain': self.multiple_engines_day_captain,
        'Co-Pilot': self.multiple_engines_day_copilot
    },
    'Night': {
        'Double': self.multiple_engines_night_double,
        'Captain': self.multiple_engines_night_captain,
        'Co-Pilot': self.multiple_engines_night_copilot
    }
},
'IFR': {
    'Double': self.ifr_double,
    'Captain': self.ifr_captain
},
'Simulation': self.simulation,
'IFR_arrivals': self.ifr_arrivals
+1 -0

Merci à vous ! La fenêtre est entièrement codée, on peut maintenant créer des vols (pfiou, j'en ai bavé!). Il ne manque plus que l'importation des vols pour pouvoir les éditer depuis la même fenêtre et ce sera bon.

Je voulais faire un module pour les checklists dans l'éditeur d'avion. Je me suis donc renseigné sur leur format et en faite c'est dépendant de chaque constructeur… Donc impossible de créer un module pour les checklists si il n'y a pas de norme là dessus. Dommage. :(

EDIT : J'avais oublié ! J'ai mis en place un Trello pour pouvoir m'organiser dans toutes les choses à faire. C'est par ici : https://trello.com/b/xXszNNXK/openplane

+0 -0

Pour les checklists, y'a pas des éléments qui reviennent toujours ? Si oui, tu peux faire un petit carré quelque part qui affiche ces éléments et tu précises qu'il faut toutefois se renseigner sur l'avion en question car ce n'est pas complet. Tu ne mettrais du coup que les bases, mais ce sont elles qui sont les plus souvent oubliées de ce que je me souviens de mes cours. ;)

+1 -0

Oui c'est pas faux. Beaucoup d'éléments sont en commun. Je vais regarder ce que je peux faire. On pourrait carrément imaginer que le logiciel s'occupe de faire toute la préparation du vol et qu'il constitue le dossier lui-même qu'il suffirait d'imprimer après… Intéressant ! :D

Où alors un PDF, oui, mais les checklists sont rarement au format PDF, celles que j'ai en tout cas sont au format papier.

+0 -0

Du nouveau ! Le carnet de vol est totalement terminé. Seulement, la fenêtre des options facultatives me pose un petit problème : Image utilisateur
Je la trouve affreusement vide. :D Elle se remplira au fur et à mesure j'imagine. Je me concentre maintenant sur ce module de traduction et le découpage du code.

A mon avis pour rendre plus utile ce vide, tu pourrais réduire la largeur de "Décollages/Atterrissages" et "Aérodromes" ainsi que sauter une ligne entre le nom des entrées (par exemple "Décollages :") et le compteur/la zone de texte. Ca permet d'agrandir la zone de texte en largeur ! ;)

+2 -0

J'ai testé sur windows.

Sur le convertisseur, quel est l'utilité du bouton "A propos" dans le convertisseur alors qu'on l'a sur la fenêtre principale ?

Et concernant la fenêtre à propos, je trouve personnellement que le logo est un peu abusivement grand.

Sinon dans le hangar, je n'ai pas compris à quoi servais le bouton "Ajouter", car il provoque une erreur chez moi.

1
2
3
4
5
6
Traceback (most recent call last):
  File "D:\***\Mes documents\Programmation\Programme python\OpenPlane\openplane\gui\gui_hangar.py", line 107, in on_import_clicked
    self.add_filters(dialog)
  File "D:\***\Mes documents\Programmation\Programme python\OpenPlane\openplane\gui\gui_hangar.py", line 133, in add_filters
    filter_json.set_name(text.opf_file)
AttributeError: 'module' object has no attribute 'opf_file'

(Je précise que je n'ai pas installé tous les modules de PyGObject, est-ce que ça vient de la ?)

Sinon je n'ai rien vu d'autre m'ayant choqué. Bonne suite !

Merci Situphen ! J'ai essayé, mais rien à faire, elles sembles toujours perdues au milieu de cette immensité blanche. Du coup, j'ai supprimé les onglets et j'ai tout mis sur la même page. Ça fait beaucoup d'entrées, mais ça ne me choque pas plus que ça. Un petit rendu : Image utilisateur

Et un énorme merci à WinXaito pour avoir pris le temps de le tester !
Je suis étonné qu'OpenPlane fonctionne comme ça sous Windows ! Je m'attendais à des complications !
J'ai écouté tout tes conseils, la fenêtre about a disparu du convertisseur, le logo est passé à la machine (il me faisait rire en étant immense :D ) et j'ai corrigé le bug. Aucunement lié à ton installation, c'est juste une variable que j'avais renommé mais que j'avais oublié de changer dans le fichier gui_hangar. C'est chose faite !

Peux-tu me dire comment tu as procédé pour l'installation sous Windows ? C'est pour faire un petit guide. ;)

+0 -0

Alors j'ai python 3.4, ensuite étant donné que tu m'as fais très envie, je me suis interressé à Gtk.

Ensuite j'ai installé

De tête ce que j'ai activer:

  • Base packages
  • GTK+ 3.14.15
  • GtkGLExt 2.99.0git
  • GTKSourceView 3.14.4

Ensuite j'ai simplement clone ton git et c'est tout bon.

J'ai également essayer de le mettre en .exe avec py2exe, car je me suis dit que pour le partage ça sera surement plus simple mais quand je lance l'exe, la fenêtre se referme instantanément. Aucune idéee du pourquoi.

(Une fois que tu as fais ton petit guide, tu peux le partager et je resterai, je vais tantôt ajouter des images et tu me diras si tu en auras besoin d'autres)

[edit]
Voici quelques images pour procédé à l'installation de PyGObject:

Première fenêtre de l'installation

Si l'installateur ne détecte pas python

Indiquer le chemin de python

Faire attention à bien cocher ceci

Et ici activer la liste des packages indiqué précédement

Edit2:
J'ai remarqué un autre bug, si on a supprimer tous les carnets de vols (Donc aucun existant) on ne peux plus ouvrir la fenêtre du carnet de vol ..

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Traceback (most recent call last):
  File "D:\***\Mes documents\Programmation\Programme python\OpenPlane\openplane\gui\gui_app.py", line 48, in on_flightslog_clicked
    flightslog = FlightsLogWindow()
  File "D:\***\Mes documents\Programmation\Programme python\OpenPlane\openplane\gui\gui_flightslog.py", line 31, in __init__
    self.update_flights_list()
  File "D:\***\Mes documents\Programmation\Programme python\OpenPlane\openplane\gui\gui_flightslog.py", line 65, in update_flights_list
    plane.import_plane(flight.plane)
  File "D:\***\Mes documents\Programmation\Programme python\OpenPlane\openplane\core\Plane.py", line 215, in import_plane
    with open(filepath, 'r') as reader:
FileNotFoundError: [Errno 2] No such file or directory: 'openplane\\planes\\F-BTBB.opp'

Edit3:
Est-ce voulu que quand on est sur le convertisseur on puisse revenir sur la fenêtre principale et en ouvrir une autre, mais que une fois la fenêtre du hangar ouverte on ne peux plus accédé à aucune autre fenêtre… C'est embêtant si on souhaite réaller sur le convertisseur par exemple.

Voici également ce à quoi ça ressemble sur Windows 10:

Résultat

En grand

On peu voir que les icône des fenêtres ne sont pas bonnes partout ainsi que les titres.

+2 -0

Content de t'avoir donné envie ! La seule chose que je peux repprocher à PyGi c'est le fait que l'on soit obligé de jongler entre les quelques documentations pour trouver l'info qu'on veut. Le plus souvent on les trouves en tâtonnant ! ;)

Merci pour toutes ces images, c'est génial ! Le guide d'installation à été déplacer sur mon blog : http://boopr.github.io/2015/openplane_install/ , pour évité de surcharger le dépôt avec des images. La partie sous Windows est entièrement rédigée et publiée. Par contre je ne savais pas comment tu as lancé le programme, donc j'ai mis qu'il suffisait de double cliquer sur le fichier app.py.

Il est bizarre ce bug. Pour deux raisons :

  • Je ne l'ai pas en supprimant le contenu du dossier flightslog
  • Si le dossier flightslog est vide, il n'est pas sensé appeler la classe Plane pour créer un avion.

J'ai donc trois question :

  • Peux-tu ouvrir un avion avec l'éditeur d'avion ?
  • Peux-tu me dire le lien que tu vois dans le hangar (en fin de ligne de chaque avion) ?
  • Es-tu sûr que le dossier flightslog est vide ?

Les fenêtres possèdent désormais toutes une icônes et si tu la regarde bien elle devrait être plus belle maintenant.

Merci d'avoir remonté le bug et pour le reste ! :)

Je testerai plus tard pour le bug, je n'ai pas trop le temps la.

Pour lancer le programme, soit si python est configurer au lancement d'un fichier .py c'est bon. (Comme moi par exemple ça lance mon editeur), donc je le fait depuis le cmd (Avantage on voit en cas de bug la fenêtre de python …)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte