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()
defines the main window of the application.
Definition: mainWindow.py:66
def run
Le lancement de l'application.
Definition: scolasync.py:147