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 mainWindow 00131 from PyQt4.QtCore import * 00132 from PyQt4.QtGui import * 00133 import sys, os, os.path, getopt, subprocess 00134 from globaldef import logFileName 00135 00136 ## 00137 # 00138 # affiche le mode d'emploi à la console 00139 # 00140 def usage(): 00141 print """\ 00142 "%s" : une option n'est pas reconnue 00143 Options : 00144 -c ou --check : pour que la première colonne du tableau comporte 00145 des cases à cocher.""" %(" ".join(sys.argv)) 00146 return 00147 00148 ## 00149 # 00150 # C'est la fonction principale. 00151 # 00152 # Elle crée un fichier de journalisation vide, puis lance 00153 # l'application interactive elle-même. Le fichier de journalisation 00154 # est ${HOME}/.scolasync/scolasync.log sous Linux 00155 # 00156 def run(): 00157 00158 subprocess.call(": > " + logFileName ,shell=True) 00159 00160 app = QApplication(sys.argv) 00161 00162 args=sys.argv[1:] 00163 try: 00164 #opts,args= ["check"], sys.argv 00165 opts, args = getopt.getopt(args, "c", ["check"] ) 00166 except getopt.GetoptError: 00167 usage() 00168 sys.exit(2) 00169 00170 locale = "%s" %QLocale.system().name() 00171 ## qtTranslator = QTranslator() 00172 ## if qtTranslator.load("qt_" + locale): 00173 ## print "OK for qttranslator" 00174 ## app.installTranslator(qtTranslator) 00175 appTranslator = QTranslator() 00176 langdir=os.path.join(mainWindow._dir("lang"),locale+".qm") 00177 b= appTranslator.load(langdir) 00178 if b: 00179 # print "installation du fichier de traduction", langdir 00180 app.installTranslator(appTranslator) 00181 00182 00183 windows = mainWindow.mainWindow(None,opts,locale) 00184 windows.show() 00185 sys.exit(app.exec_()) 00186 00187 if __name__ == "__main__": 00188 run() 00189