ScolaSync: Fichier source de src/scolasync.py

ScolaSync 5.1 |

scolasync.py
Aller à la documentation de ce fichier.
1 #!/usr/bin/python3
2 # $Id: scolasync.py 47 2011-06-13 10:20:14Z georgesk $
3
4 ##
5 # @package scolasync
6 # Scolasync est un programme pour gérer des transferts de fichiers entre un
7 # ordinateur et une collection de baladeurs, de dictaphones ou de clés USB.
8 #
9 #
10
11 ## \mainpage ScolaSync
12 #
13 # \section but But de l'application
14 #
15 # Scolasync est un programme pour gérer des transferts de fichiers
16 # entre un ordinateur et une collection de clés USB.
17 #
18 # \section CahierDeCharges CAHIER DE CHARGES DE SCOLASYNC
19 #
20 # -# l'application doit pouvoir être utilisable par n'importe quel
21 # enseignant, par exemple un prof de langues quelques minutes après la
22 # prise en main.
23 # -# une personne-essource, ou le prof lui-même, doit pouvoir très
24 # simplement créer une association permanente entre les identifiants des
25 # clés USB et les noms d'élèves. Cette association doit pouvoir évoluer
26 # en fonction des classes à la demande de l'enseignant, d'une année sur
27 # l'autre, ou d'un cycle de travail à un autre.
28 # -# un prof doit pouvoir envoyer un ensemble de fichiers vers les clés
29 # USB de ses élèves identiquement pour tous. L'individualisation peut se
30 # faire en branchant/débranchant les clés. Le prof doit avoir la
31 # possibilité de choisir, voire de créer le dossier de réception.
32 # -# chaque élève doit pouvoir retrouver facilement ces fichiers et
33 # surtout la consigne expliquant ce qu'il doit faire, et comment il sera
34 # noté. Comme les lecteurs mp3 stockent souvent des fichiers dans des
35 # répertoires de noms variés, il faut pouvoir gérer ça.
36 # -# le prof doit pouvoir récolter les clés USB des élèves et récupérer
37 # leur travail en quelques minutes seulement, par exemple en
38 # sélectionnant le dossier dans lequel se trouve le fichier à récupérer.
39 # -# l'application doit renommer les fichiers en tenant compte du nom du
40 # baladeur, donc du nom de l'élève.
41 # -# il faut pouvoir effacer des fichiers sur les clés, voire les
42 # remettre à zéro.
43 #
44 # \section licence Licence
45 #
46 # <b>ScolaSync version 4.0 :</b>
47 #
48 # un programme pour gérer des transferts de fichiers entre un
49 # ordinateur et une collection de clés USB.
50 #
51 # <b>Copyright © 2010-2012 Georges Khaznadar <georgesk@ofset.org></b>
52 #
53 # Ce projet est un logiciel libre : vous pouvez le redistribuer, le
54 # modifier selon les terme de la GPL (GNU Public License) dans les
55 # termes de la Free Software Foundation concernant la version 3 ou
56 # plus de la dite licence.
57 #
58 # Ce programme est fait avec l'espoir qu'il sera utile mais <b>SANS
59 # AUCUNE GARANTIE</b>. Lisez la <a href="http://www.gnu.org/licenses/"
60 # target="license">licence</a> pour plus de détails.
61 #
62 # \section support Support
63 #
64 # Si vous avez besoin d'un support pour ce programme, tel que :
65 # <b>garantie contractuelle</b>, <b>formation</b>, <b>adaptation plus
66 # précise</b> aux besoins de votre entreprise, etc. contactez
67 # l'association <a href="http://www.ofset.org"
68 # target="ofset">OFSET</a> et/ou <a
69 # href="mailto:georgesk@debian.org">l'auteur</a> du logiciel.
70 #
71 # \section architecture Architecture de ScolaSync
72 #
73 # Scolasync est bâti sur des composants logiciels libres, les plus
74 # notables sont les suivants :
75 #
76 # - la bibliothèque Qt4 pour l'interface graphique
77 # - la bibliothèque python-dbus pour l'interaction avec le noyau Linux 2.6 ou plus
78 # - la bibliothèque udisks pour interroger facilement le noyau sur le
79 # statut des disques, et pour réaliser certaines actions sur les
80 # disques et clés USB
81 # - l'utilisation de threads pour mener en parallèle les actions qui
82 # concernent simultanément plusieurs clés USB
83
84 licence={}
85 licenceEn="""
86 scolasync version %s:
87
88 a program to manage file transfers between a computer and a collection
89 of USB sticks.
90
91 Copyright (C) 2010-2012 Georges Khaznadar <georgesk@ofset.org>
92
93 This program is free software: you can redistribute it and/or modify
94 it under the terms of the GNU General Public License as published by
95 the Free Software Foundation, either version 3 of the License, or
96 (at your option) any later version.
97
98 This program is distributed in the hope that it will be useful,
99 but WITHOUT ANY WARRANTY; without even the implied warranty of
100 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
101 GNU General Public License for more details.
102
103 You should have received a copy of the GNU General Public License
104 along with this program. If not, see <http://www.gnu.org/licenses/>.
105 """
106 licence['en']=licenceEn
107
108 licenceFr="""
109 scolasync version %s :
110
111 un programme pour gérer des transferts de fichiers entre un
112 ordinateur et une collection de clés USB.
113
114 Copyright (C) 2010-2012 Georges Khaznadar <georgesk@ofset.org>
115
116 Ce projet est un logiciel libre : vous pouvez le redistribuer, le
117 modifier selon les terme de la GPL (GNU Public License) dans les
118 termes de la Free Software Foundation concernant la version 3 ou
119 plus de la dite licence.
120
121 Ce programme est fait avec l'espoir qu'il sera utile mais SANS
122 AUCUNE GARANTIE. Lisez la licence pour plus de détails.
123
124 <http://www.gnu.org/licenses/>.
125 """
126 licence['fr']=licenceFr
127
128
129 import getopt, os, sys
130
131 import sip
132 # pour éviter des erreurs à l'instanciation des QVariant
133 sip.setapi('QVariant', 1)
134
135 import debug
136
137 from PyQt5.QtCore import *
138 from PyQt5.QtWidgets import *
139
140 ##
141 #
142 # Le lancement de l'application
143 # @param debugger s'il est vrai, un bouton de débogage est ajouté
144 # @param callback une fonction de rappel à un paramètre (qui sera
145 # la fenêtre principale, le cas échéant)
146 #
147 def run(debugger=False, callback=lambda x: print(x)):
148
149 from dbus.mainloop.qt import DBusQtMainLoop
150 DBusQtMainLoop(set_as_default=True)
151
152 app = QApplication(sys.argv)
153
154 locale = "%s" %QLocale.system().name()
155 qtTranslator = QTranslator()
156 if qtTranslator.load("qt_" + locale, "/usr/share/qt5/translations"):
157 # print "OK for qttranslator"
158 app.installTranslator(qtTranslator)
159 appTranslator = QTranslator()
160 for path in ["/usr/share/scolasync","."]:
161 langdir=os.path.join(path,"lang",locale+".qm")
162 b= appTranslator.load(langdir)
163 if b:
164 # print "installation du fichier de traduction", langdir
165 app.installTranslator(appTranslator)
166 break
167
168 import mainWindow
169 window = mainWindow.mainWindow(None,locale)
170 if debugger:
171 debug.button(window, callback)
172 window.show()
173
174 sys.exit(app.exec_())
175
176 if __name__ == '__main__':
177 # run(debugger=True, callback=debug.listePartitionsCochees)
178 run()
src.mainWindow.mainWindow
defines the main window of the application.
Definition: mainWindow.py:66
QtCore
QtWidgets
src.scolasync.run
def run
Le lancement de l'application.
Definition: scolasync.py:147