5 this file is part of the project scolasync
7 Copyright (C) 2010 Georges Khaznadar <georgesk@ofset.org>
9 This program is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
28 import Ui_chooseInSticks
44 def __init__(self,parent = None, title1="", title2="", okPrompt="OK"):
45 QDialog.__init__(self,parent)
47 self.
_ui=Ui_chooseInSticks.Ui_Dialog()
48 self._ui.setupUi(self)
50 self.setWindowTitle(title1)
51 self._ui.groupBox.setTitle(title2)
53 okButton=self._ui.buttonBox.button(QDialogButtonBox.Ok)
54 self._ui.buttonBox.removeButton(okButton)
56 self._ui.buttonBox.addButton(self.
okButton,
57 QDialogButtonBox.AcceptRole)
63 self._fileListProxyModel.setDynamicSortFilter(
True)
69 self._storListProxyModel.setDynamicSortFilter(
True)
74 self._ui.minusButton.setEnabled(
False)
75 self._ui.travailEdit.setText(self.mainWindow.workdir)
76 self._ui.plusButton.clicked.connect(self.
plus)
77 self._ui.chooseButton.clicked.connect(self.
choose)
78 self._ui.chooseButton_dir.clicked.connect(self.
choose_dir)
80 self._ui.minusButton.clicked.connect(self.
minus)
81 self._ui.listView.clicked.connect(self.
activate)
82 self._ui.travailEdit.editingFinished.connect(self.
changeWd)
91 self.
ok=self._ui.listView.model().rowCount()>0
100 sel=self.mainWindow.ui.tableView.selectedIndexes()
101 for d
in qApp.available:
103 mountPath=d.ensureMounted()
104 item=QStandardItem(o)
106 for modelIndex
in sel:
107 if o ==
"%s" %modelIndex.data(Qt.DisplayRole):
109 self._storListModel.appendRow(item)
111 self._storListProxyModel.sort(0)
124 selection=self._ui.listChoixCle.selectionModel().selection()
125 selection = self._storListProxyModel.mapSelectionToSource(selection)
126 selectedRows=map(
lambda x: x.row(), self._ui.listChoixCle.selectedIndexes())
127 itemList=self._storListModel.findItems (
"*",Qt.MatchWildcard)
128 itemList.sort(key=
lambda i: i.data(Qt.DisplayRole))
131 for item
in itemList:
132 index=self._storListModel.indexFromItem(item)
133 o=
"%s" %item.data(Qt.DisplayRole)
135 if os.path.isdir(testDir):
138 item.setSelectable(
True)
139 item.setEnabled(
True)
141 if firstSelectable ==
None:
142 firstSelectable=index
144 if index.row()
in selectedRows:
147 item.setSelectable(
False)
148 item.setEnabled(
False)
149 if okSelected ==
None and firstSelectable !=
None:
150 selection=QItemSelection(firstSelectable,firstSelectable)
151 selection=self._storListProxyModel.mapSelectionFromSource(selection)
152 self._ui.listChoixCle.selectionModel().select(selection, QItemSelectionModel.Select);
164 return os.path.join(mp,self.mainWindow.workdir)
185 selection=self._ui.listChoixCle.selectionModel().selection()
186 if len(selection)==0:
188 selection = self._storListProxyModel.mapSelectionToSource(selection)
189 return "%s" %selection.indexes()[0].data(Qt.DisplayRole)
196 newDir=self._ui.travailEdit.text()
197 self.mainWindow.changeWd(newDir)
210 func=QFileDialog.getOpenFileNames
211 msg=QApplication.translate(
"Dialog",
212 "Choissez un fichier (ou plus)")
214 func=QFileDialog.getExistingDirectory
215 msg=QApplication.translate(
"Dialog",
216 "Choissez un répertoire")
219 f = func (
None, msg, cd)
221 if isinstance(f, str):
227 self._ui.lineEdit.setText(path)
230 titre=QApplication.translate(
"Dialog",
231 "Aucune clé modèle sélectionnée")
232 msg=QApplication.translate(
"Dialog",
233 "Veuillez choisir une clé modèle<br>parmi les clés connectées en cliquant<br>sur une ligne du tableau, pour<br>bénéficier de l'aide au choix de fichiers.<br><br>Cette clé doit contenir au moins<br>un répertoire « {workdir} ».".format(workdir=self.mainWindow.workdir))
234 msgBox=QMessageBox.warning(
None, titre, msg)
251 self._ui.minusButton.setEnabled(
True)
259 text=self._ui.lineEdit.text()
269 sel=self._ui.listView.selectedIndexes()
270 sel1=map(self._fileListProxyModel.mapToSource,sel)
271 rows=map(
lambda x: x.row(), sel1)
272 rows.sort(
"descending")
274 self._fileListModel.removeRow(r)
275 sel=self._ui.listView.selectedIndexes()
277 self._ui.minusButton.setEnabled(
False)
285 f=self._fileListModel.findItems(path)
287 item=QStandardItem(path)
288 self._fileListModel.appendRow(item)
289 self._fileListProxyModel.sort(0)
291 print (
"%s est déjà sélectionné" %path)
301 itemList=self._fileListModel.findItems(
"*",Qt.MatchWildcard)
302 result=[x.text()
for x
in itemList]
303 otherText=self._ui.lineEdit.text()
304 if len(otherText) > 0
and otherText
not in result :
305 result.append(otherText)
def changeWd(self)
changement du répertoire de travail
def plus(self)
Permet de choisir et d'ajouter un nouveau fichier ou répertoire à supprimer.
def listStorages(self)
Met en place la liste des noms de baladeurs connectés en tenant compte du nom de répertoire de travai...
def choose_dir(self)
Facilite le choix de motifs de répertoires en recherchant dans les clés USB, modifie l'éditeur de lig...
def checkWorkDirs(self)
met à jour la possibilité de sélectionner les baladeurs dans la liste selon qu'ils ont ou pas un répe...
def pathList(self)
renvoie la liste des chemins sélectionnés; dans le cas de chemins sans jokers (caractères * ou ...
def activate(self, item)
Fonction de rappel quand un item de la liste est activé
_fileListModel
création de la structure de liste pour les fichiers
ownedUsbDictionary
peuplement de la zone des noms de baladeurs
def selectedDiskMountPoint(self)
def checkValues(self)
fonction de rappel liée au bouton de validation, vérifie s'il y a bien au moins un fichier ou un répe...
def choose
Facilite le choix de motifs de fichiers en recherchant dans les clés USB, modifie l'éditeur de ligne ...
def append(self, path)
Ajoute un chemin avec ou sans jokers à la liste des chemins à supprimer.
def __init__
Le constructeur.
_storListModel
création de la structure de liste pour les noms de baladeurs
def selectedDiskOwner(self)
def minus(self)
Permet de retirer de la liste des fichiers à supprimer ceux qu'on a sélectionnés. ...
okButton
mise en place des titres personnalisés
Un dialogue pour choisir un ensemble de fichiers à copier depuis une clé USB.