00001 #!/usr/bin/python 00002 # -*- coding: utf-8 -*- 00003 # $Id: scolasync.py 47 2011-06-13 10:20:14Z georgesk $ 00004 00005 ## 00006 # @package scolasync 00007 # Scolasync est un programme pour gérer des transferts de fichiers entre un 00008 # ordinateur et une collection de clés USB. 00009 # 00010 # 00011 00012 ## \mainpage ScolaSync 00013 # 00014 # \section but But de l'application 00015 # 00016 # Scolasync est un programme pour gérer des transferts de fichiers 00017 # entre un ordinateur et une collection de clés USB. 00018 # 00019 # \section CahierDeCharges CAHIER DE CHARGES DE SCOLASYNC 00020 # 00021 # -# l'application doit pouvoir être utilisable par n'importe quel 00022 # enseignant, par exemple un prof de langues quelques minutes après la 00023 # prise en main. 00024 # -# une personne-essource, ou le prof lui-même, doit pouvoir très 00025 # simplement créer une association permanente entre les identifiants des 00026 # clés USB et les noms d'élèves. Cette association doit pouvoir évoluer 00027 # en fonction des classes à la demande de l'enseignant, d'une année sur 00028 # l'autre, ou d'un cycle de travail à un autre. 00029 # -# un prof doit pouvoir envoyer un ensemble de fichiers vers les clés 00030 # USB de ses élèves identiquement pour tous. L'individualisation peut se 00031 # faire en branchant/débranchant les clés. Le prof doit avoir la 00032 # possibilité de choisir, voire de créer le dossier de réception. 00033 # -# chaque élève doit pouvoir retrouver facilement ces fichiers et 00034 # surtout la consigne expliquant ce qu'il doit faire, et comment il sera 00035 # noté. Comme les lecteurs mp3 stockent souvent des fichiers dans des 00036 # répertoires de noms variés, il faut pouvoir gérer ça. 00037 # -# le prof doit pouvoir récolter les clés USB des élèves et récupérer 00038 # leur travail en quelques minutes seulement, par exemple en 00039 # sélectionnant le dossier dans lequel se trouve le fichier à récupérer. 00040 # -# l'application doit renommer les fichiers en tenant compte du nom du 00041 # baladeur, donc du nom de l'élève. 00042 # -# il faut pouvoir effacer des fichiers sur les clés, voire les 00043 # remettre à zéro. 00044 # 00045 # \section licence Licence 00046 # 00047 # <b>ScolaSync version 1.0 :</b> 00048 # 00049 # un programme pour gérer des transferts de fichiers entre un 00050 # ordinateur et une collection de clés USB. 00051 # 00052 # <b>Copyright © 2010 Georges Khaznadar <georgesk@ofset.org></b> 00053 # 00054 # Ce projet est un logiciel libre : vous pouvez le redistribuer, le 00055 # modifier selon les terme de la GPL (GNU Public License) dans les 00056 # termes de la Free Software Foundation concernant la version 3 ou 00057 # plus de la dite licence. 00058 # 00059 # Ce programme est fait avec l'espoir qu'il sera utile mais <b>SANS 00060 # AUCUNE GARANTIE</b>. Lisez la <a href="http://www.gnu.org/licenses/" 00061 # target="license">licence</a> pour plus de détails. 00062 # 00063 # \section support Support 00064 # 00065 # Si vous avez besoin d'un support pour ce programme, tel que : 00066 # <b>garantie contractuelle</b>, <b>formation</b>, <b>adaptation plus 00067 # précise</b> aux besoins de votre entreprise, etc. contactez 00068 # l'association <a href="http://www.ofset.org" 00069 # target="ofset">OFSET</a> et/ou <a 00070 # href="mailto:georgesk@ofset.org">l'auteur</a> du logiciel. 00071 # 00072 # \section architecture Architecture de ScolaSync 00073 # 00074 # Scolasync est bâti sur des composants logiciels libres, les plus 00075 # notables sont les suivants : 00076 # 00077 # - la bibliothèque Qt4 pour l'interface graphique 00078 # - la bibliothèque python-dbus pour l'interaction avec le noyau Linux 2.6 00079 # - la bibliothèque udisks pour interroger facilement le noyau sur le 00080 # statut des disques, et pour réaliser certaines actions sur les 00081 # disques et clés USB 00082 # - l'utilisation de threads pour mener en parallèle les actions qui 00083 # concernent simultanément plusieurs clés USB 00084 00085 licence={} 00086 licenceEn=""" 00087 scolasync version %s: 00088 00089 a program to manage file transfers between a computer and a collection 00090 of USB sticks. 00091 00092 Copyright (C) 2010 Georges Khaznadar <georgesk@ofset.org> 00093 00094 This program is free software: you can redistribute it and/or modify 00095 it under the terms of the GNU General Public License as published by 00096 the Free Software Foundation, either version 3 of the License, or 00097 (at your option) any later version. 00098 00099 This program is distributed in the hope that it will be useful, 00100 but WITHOUT ANY WARRANTY; without even the implied warranty of 00101 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00102 GNU General Public License for more details. 00103 00104 You should have received a copy of the GNU General Public License 00105 along with this program. If not, see <http://www.gnu.org/licenses/>. 00106 """ 00107 licence['en']=licenceEn 00108 00109 licenceFr=""" 00110 scolasync version %s : 00111 00112 un programme pour gérer des transferts de fichiers entre un 00113 ordinateur et une collection de clés USB. 00114 00115 Copyright (C) 2010 Georges Khaznadar <georgesk@ofset.org> 00116 00117 Ce projet est un logiciel libre : vous pouvez le redistribuer, le 00118 modifier selon les terme de la GPL (GNU Public License) dans les 00119 termes de la Free Software Foundation concernant la version 3 ou 00120 plus de la dite licence. 00121 00122 Ce programme est fait avec l'espoir qu'il sera utile mais SANS 00123 AUCUNE GARANTIE. Lisez la licence pour plus de détails. 00124 00125 <http://www.gnu.org/licenses/>. 00126 """ 00127 licence['fr']=licenceFr 00128 00129 00130 import getopt, os, sys 00131 from PyQt4.QtGui import * 00132 from PyQt4.QtCore import * 00133 00134 ## 00135 # 00136 # affiche le mode d'emploi à la console 00137 # 00138 def usage(): 00139 print """\ 00140 "%s" : une option n'est pas reconnue 00141 Options : 00142 -c ou --check : pour que la première colonne du tableau comporte 00143 des cases à cocher.""" %(" ".join(sys.argv)) 00144 return 00145 00146 ## 00147 # 00148 # Le lancement de l'application 00149 # 00150 def run(): 00151 from dbus.mainloop.qt import DBusQtMainLoop 00152 DBusQtMainLoop(set_as_default=True) 00153 00154 app = QApplication(sys.argv) 00155 00156 args=sys.argv[1:] 00157 try: 00158 #opts,args= ["check"], sys.argv 00159 opts, args = getopt.getopt(args, "c", ["check"] ) 00160 except getopt.GetoptError: 00161 usage() 00162 sys.exit(2) 00163 00164 locale = "%s" %QLocale.system().name() 00165 ## qtTranslator = QTranslator() 00166 ## if qtTranslator.load("qt_" + locale): 00167 ## print "OK for qttranslator" 00168 ## app.installTranslator(qtTranslator) 00169 appTranslator = QTranslator() 00170 langdir=os.path.join("lang",locale+".qm") 00171 b= appTranslator.load(langdir) 00172 if b: 00173 # print "installation du fichier de traduction", langdir 00174 app.installTranslator(appTranslator) 00175 00176 import mainWindow 00177 windows = mainWindow.mainWindow(None,opts,locale) 00178 windows.show() 00179 00180 sys.exit(app.exec_()) 00181 00182 if __name__ == '__main__': 00183 run() 00184