ScolaSync  1.0
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
scolasync.py
Aller à la documentation de ce fichier.
1 #!/usr/bin/python
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 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 1.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 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@ofset.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
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 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 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 from PyQt4.QtGui import *
132 from PyQt4.QtCore import *
133 
134 ##
135 #
136 # affiche le mode d'emploi à la console
137 #
138 def usage():
139  print """\
140 "%s" : une option n'est pas reconnue
141 Options :
142  -c ou --check : pour que la première colonne du tableau comporte
143  des cases à cocher.""" %(" ".join(sys.argv))
144  return
145 
146 ##
147 #
148 # Le lancement de l'application
149 #
150 def run():
151  from dbus.mainloop.qt import DBusQtMainLoop
152  DBusQtMainLoop(set_as_default=True)
153 
154  app = QApplication(sys.argv)
155 
156  args=sys.argv[1:]
157  try:
158  #opts,args= ["check"], sys.argv
159  opts, args = getopt.getopt(args, "c", ["check"] )
160  except getopt.GetoptError:
161  usage()
162  sys.exit(2)
163 
164  locale = "%s" %QLocale.system().name()
165  qtTranslator = QTranslator()
166  if qtTranslator.load("qt_" + locale, "/usr/share/qt4/translations"):
167  # print "OK for qttranslator"
168  app.installTranslator(qtTranslator)
169  appTranslator = QTranslator()
170  langdir=os.path.join("lang",locale+".qm")
171  b= appTranslator.load(langdir)
172  if b:
173  # print "installation du fichier de traduction", langdir
174  app.installTranslator(appTranslator)
175 
176  import mainWindow
177  windows = mainWindow.mainWindow(None,opts,locale)
178  windows.show()
179 
180  sys.exit(app.exec_())
181 
182 if __name__ == '__main__':
183  run()
184