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