6 this file is part of the project scolasync
8 Copyright (C) 2012 Georges Khaznadar <georgesk@ofset.org>
10 This program is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version3 of the License, or
13 (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>.
27 from Ui_choixEleves
import Ui_Dialog
48 def __init__(self, parent=None, gestionnaire=gestClasse.Sconet):
49 QDialog.__init__(self, parent=parent)
56 self.ui.listWidget.setSelectionMode(QAbstractItemView.ExtendedSelection)
57 self.ui.listWidget.setSortingEnabled(
True)
58 self.ui.checkBoxNumero.setChecked(
True)
59 self.ui.spinBoxNumero.setValue(1)
60 self.ui.spinBoxNumero.setEnabled(
True)
62 self.ui.pushButton_replierArbre.clicked.connect(self.
replie)
63 self.ui.pushButton_cocher.clicked.connect(self.
coche)
64 self.ui.pushButton_decocher.clicked.connect(self.
decoche)
65 self.ui.pushButton_addToList.clicked.connect(self.
addToList)
66 self.ui.pushButton_delInList.clicked.connect(self.
delInList)
67 self.ui.pushButton_OK.clicked.connect(self.
valid)
68 self.ui.pushButton_Esc.clicked.connect(self.
escape)
69 self.ui.checkBoxNumero.stateChanged.connect(self.
checkNum)
76 caption=
"Choisissez un nouveau fichier de gestion des élèves"
77 dirname=os.path.dirname(self.
prefs[
"schoolFile"])
78 newFile=QFileDialog.getOpenFileName (self, caption, dirname)
79 if os.path.exists(newFile):
80 self.
prefs[
"schoolFile"]=newFile
81 db.writePrefs(self.
prefs)
92 self.ui.lineEditFile.setText(self.
prefs[
"schoolFile"])
93 self.ui.treeView.connecteGestionnaire(self.
prefs[
"schoolFile"],
96 except Exception
as err:
97 QMessageBox.warning(
None,
98 QApplication.translate(
"Dialog",
"Échec à l'ouverture du fichier élèves",
None),
99 QApplication.translate(
"Dialog",
"Le fichier {schoolfile} n'a pas pu être traité : {erreur}",
None).format(schoolfile=self.
prefs[
"schoolFile"], erreur=err))
108 if state==Qt.Checked:
109 self.ui.spinBoxNumero.setEnabled(
True)
111 self.ui.spinBoxNumero.setEnabled(
False)
119 self.ui.treeView.collapseAll()
127 for e
in self.ui.treeView.expandedItems():
128 e.setCheckState(Qt.Checked)
136 for e
in self.ui.treeView.expandedItems():
137 e.setCheckState(Qt.Unchecked)
147 self.parent().setAvailableNames(self.ui.listWidget.count() > 0)
156 if not self.ui.listWidget.findItems(n,Qt.MatchExactly):
157 self.ui.listWidget.addItem(n)
167 for i
in self.ui.listWidget.selectedIndexes():
169 rows.sort(reverse=
True)
171 self.ui.listWidget.takeItem(r)
182 if self.ui.listWidget.count() == 0:
184 i=self.ui.listWidget.takeItem(0)
186 data=i.data(Qt.DisplayRole)
194 itemList=self.ui.listWidget.findItems(
"*",Qt.MatchWrap | Qt.MatchWildcard)
195 l=[i.data(Qt.DisplayRole)
for i
in itemList]
206 found=self.ui.listWidget.findItems(item,Qt.MatchExactly)
208 r=self.ui.listWidget.row(found[0])
209 i=self.ui.listWidget.takeItem(r)
211 data=i.data(Qt.DisplayRole)
230 while self.ui.listWidget.count() > 0:
231 self.ui.listWidget.takeItem(0)
242 return self.ui.treeView.checkedItems()
248 if self.ui.checkBoxNumero.isChecked():
249 n=self.ui.spinBoxNumero.value()
251 self.ui.spinBoxNumero.setValue(n+1)
252 result.append(prefixe+e.unique_name)
255 if __name__==
"__main__":
256 app=QApplication(sys.argv)
259 print (
"dialogue ok = %s" %d.ok)
262 print (
"on a dépilé %s" %i)
Une classe pour travailler avec des données Sconet.
def takeItem(self, item)
retire un item de la liste et le renvoie (pourvu qu'il y existe)
def valid(self)
Prend acte de la validation.
def checkNum(self, state)
fonction de rappel utilisée quand on coche/décoche la case pour prendre en compte le numéro ...
def updateParentIcon(self)
Met à jour l'icône du bouton d'activation dans l'application parente pour refléter la présence d'élém...
def listeUnique_Names(self)
def pop(self)
renvoie et supprime le premier élément de la liste de noms; si cette liste est vide, renvoie None
def __init__
le constructeur récupérer des données SCONET
implémente un dialogue permettant de choisir des élèves les propriétés importantes sont self...
def fichierEleves(self)
choisit et ouvre un nouveau fichiers d'élèves
def replie(self)
replie toutes les classes du dialogue
def connecteGestionnaire
met en place l'arbre des noms d'élèves
def escape(self)
Prend acte de l'abandon ; supprime les éléments de la liste et ferme le dialogue. ...
def decoche(self)
décoche toutes les cases d'élèves, visibles ou cachées
def coche(self)
coche toutes les cases d'élèves visibles
def delInList(self)
retire les élèves de la liste quand ils y sont sélectionnés
def addToList(self)
ajoute les élèves cochés dans la liste (s'ils n'y sont pas déjà)