File: ownedUsbDisk_8py_source.html

package info (click to toggle)
scolasync 5.4-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 16,424 kB
  • sloc: javascript: 4,094; python: 3,849; xml: 3,814; makefile: 116; sh: 31
file content (454 lines) | stat: -rw-r--r-- 75,083 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ScolaSync:  Fichier source de src/ownedUsbDisk.py</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">ScolaSync
   &#160;<span id="projectnumber">5.1</span>
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Recherche" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Généré par Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Recherche');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('ownedUsbDisk_8py_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">ownedUsbDisk.py</div>  </div>
</div><!--header-->
<div class="contents">
<a href="ownedUsbDisk_8py.html">Aller à la documentation de ce fichier.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html">    1</a></span>&#160;<span class="comment">#       $Id: ownedUsbDisk.py 47 2011-06-13 10:20:14Z georgesk $</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html#aa5949b3c88fb64981b6d67bfffa970a2">    3</a></span>&#160;licence={}</div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;licence[<span class="stringliteral">&#39;en&#39;</span>]=<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="stringliteral">    file ownedUsbDisk.py</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="stringliteral">    this file is part of the project scolasync</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="stringliteral">    Copyright (C) 2010 Georges Khaznadar &lt;georgesk@ofset.org&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="stringliteral">    This program is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="stringliteral">    it under the terms of the GNU General Public License as published by</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="stringliteral">    the Free Software Foundation, either version3 of the License, or</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="stringliteral">    (at your option) any later version.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="stringliteral">    This program is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="stringliteral">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="stringliteral">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="stringliteral">    GNU General Public License for more details.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="stringliteral">    You should have received a copy of the GNU General Public License</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="stringliteral">    along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="keyword">import</span> usbDisk2, db</div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">import</span> os.path, dbus, subprocess, time, random</div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">from</span> <a class="code" href="namespacePyQt5_1_1QtCore.html">PyQt5.QtCore</a> <span class="keyword">import</span> *</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">from</span> <a class="code" href="namespacePyQt5_1_1QtWidgets.html">PyQt5.QtWidgets</a> <span class="keyword">import</span> *</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">from</span> globaldef <span class="keyword">import</span> markFileName</div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="stringliteral">liste statique pour éviter de demander chaque seconde le nom d&#39;un</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="stringliteral">propriétaire de clé si on n&#39;a pas souhaité le donner.</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160; </div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">#    Renvoie le tatouage pour un point de montage donné, quitte à le créer</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">#    si nécessaire.</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">#    @param mountPoint un point de montage de partition</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">#    @return le tatouage</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">#</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html#a37de5850519fac8c502e9e9212f6ff74">   41</a></span>&#160;<span class="keyword">def </span><a class="code" href="namespacesrc_1_1ownedUsbDisk.html#a37de5850519fac8c502e9e9212f6ff74">tattooInDir</a>(mountPoint):</div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    tattooFileName = os.path.join(mountPoint,<span class="stringliteral">&quot;.scolasync-tattoo&quot;</span>)</div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    tattoo_=<span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordflow">if</span> os.path.exists(tattooFileName):</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        tattoo_=open(tattooFileName,<span class="stringliteral">&quot;r&quot;</span>).readlines()[0].strip()</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordflow">if</span> tattoo_ != <span class="stringliteral">&quot;&quot;</span> :</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        <span class="comment"># le tatouage existe déjà, on renvoie sa valeur</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="keywordflow">return</span> tattoo_</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        tattoo_=<span class="stringliteral">&quot;%12.2f&quot;</span> %time.time()</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        time.sleep(0.05)</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="comment"># si on espace deux créations de tatouages de 50 millisecondes</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        <span class="comment"># il est impossible d&#39;avoir deux tatouages identiques générés</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        <span class="comment"># par le même ordinateur. Les chances que ça arrive avec des</span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        <span class="comment"># ordinateurs distincts sont minimes</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        outfile=open(tattooFileName,<span class="stringliteral">&quot;w&quot;</span>)</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        outfile.write(tattoo_)</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        outfile.close()</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="comment"># on renvoie le nouveau tatouage</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        <span class="keywordflow">return</span> tattoo_</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html#aeb4a87ad9154577da326f4844a97874b">   67</a></span>&#160;<span class="keyword">def </span><a class="code" href="namespacesrc_1_1ownedUsbDisk.html#aeb4a87ad9154577da326f4844a97874b">editRecord</a>(owd, hint=&quot;&quot;):</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    ud=owd.getFat()</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    title=QApplication.translate(<span class="stringliteral">&quot;Dialog&quot;</span>, <span class="stringliteral">&quot;Choix du propriétaire&quot;</span>, <span class="keywordtype">None</span>)</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    prompt=QApplication.translate(<span class="stringliteral">&quot;Dialog&quot;</span>, <span class="stringliteral">&quot;Nouveau nom du propriétaire du baladeur&quot;</span>, <span class="keywordtype">None</span>)</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    newStudent, ok = QInputDialog.getText(<span class="keywordtype">None</span>, title, prompt, text=hint)</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordflow">if</span> ok:</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        newStudent=<span class="stringliteral">&quot;%s&quot;</span> %newStudent</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <span class="keyword">assert</span> (ud.parent) <span class="comment"># ud est une partition de type vfat</span></div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        db.writeStudent(ud.stickid, ud.uuid, ud.tattoo(), newStudent)</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">#    une classe qui ajoute un nom de propriétaire aux disque USB,</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="comment">#    et qui en même temps ajoute des particularités selon le nom du</span></div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="comment">#    vendeur et le modèle.</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="comment">#</span></div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html">   82</a></span>&#160;<span class="keyword">class </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html">uDisk2</a>(<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html">usbDisk2.uDisk2</a>,<a class="code" href="classQObject.html">QObject</a>):</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    </div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a1d59c88d4bc3975a64192136a7ddbef3">  101</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a1d59c88d4bc3975a64192136a7ddbef3">__init__</a>(self, path, mp=&#39;&#39;, isUsb=False, vendor=&#39;&#39;, model=&#39;&#39;, parent=None,</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                 fstype=&#39;&#39;, serial=&#39;&#39;, uuid=&#39;&#39;,</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                 free=0, capacity=0, device=&#39;&#39;, firstFat=None, selected=True):</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        usbDisk2.uDisk2.__init__(self, path=path, mp=mp, isUsb=isUsb, vendor=vendor,</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                                 model=model, parent=parent, fstype=fstype, serial=serial,</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;                                 uuid=uuid, free=free, capacity=capacity, device=device,</div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#af2809ced8ed517b9756c396d532cd5d6">  107</a></span>&#160;                                 firstFat=firstFat, selected=selected)</div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ab04edd4759e7e522642afaaa16d800ed">  108</a></span>&#160;        QObject.__init__(self)</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#af2809ced8ed517b9756c396d532cd5d6">owner</a>=<span class="stringliteral">&quot;&quot;</span> <span class="comment"># le propriétaire est déterminé plus tard</span></div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ab04edd4759e7e522642afaaa16d800ed">visibleDirs</a>=self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a70c2ad23e3e2ef06c16897aca80d8f3c">readQuirks</a>()</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a03c90a7c08177375d0d7a1066b0c7245">  116</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a03c90a7c08177375d0d7a1066b0c7245">getOwner</a>(self):</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a4f61aecb7958064b27ea9b1eae2286f1">getFat</a>().owner</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    </div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a4f61aecb7958064b27ea9b1eae2286f1">  123</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a4f61aecb7958064b27ea9b1eae2286f1">getFat</a>(self):</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        <span class="keywordflow">if</span> self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#a270486ee9951b7884bde91dbb89ca007">parent</a>:</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;            <span class="keywordflow">return</span> self</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#ad652bd6709835104fe26cf8e289b70ff">firstFat</a></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    </div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#abca64357f81f74f572d4e0f53d9069ac">  133</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#abca64357f81f74f572d4e0f53d9069ac">valuableProperties</a>(self,indent=4):</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        prefix=<span class="stringliteral">&quot;\n&quot;</span>+<span class="stringliteral">&quot; &quot;</span>*indent</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        r=<span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        props=[<span class="stringliteral">&quot;mp&quot;</span>, <span class="stringliteral">&quot;parent&quot;</span>, <span class="stringliteral">&quot;fstype&quot;</span>, <span class="stringliteral">&quot;stickid&quot;</span>, <span class="stringliteral">&quot;uuid&quot;</span>, <span class="stringliteral">&quot;vendor&quot;</span>, <span class="stringliteral">&quot;model&quot;</span>, <span class="stringliteral">&quot;devStuff&quot;</span>, <span class="stringliteral">&quot;free&quot;</span>, <span class="stringliteral">&quot;capacity&quot;</span>, <span class="stringliteral">&quot;owner&quot;</span>]</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordflow">for</span> prop <span class="keywordflow">in</span> props:</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;            r+=prefix+<span class="stringliteral">&quot;%s = %s&quot;</span> %(prop, getattr(self,prop))</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <span class="keywordflow">return</span> r</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="comment">#        @return un identifiant unique, composé du nom du propriétaire</span></div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="comment">#        suivi du tatouage</span></div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#aedab6e01d7f2856f128df0a24029a043">  145</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#aedab6e01d7f2856f128df0a24029a043">uniqueId</a>(self):</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordflow">return</span> <span class="stringliteral">&quot;%s~%s&quot;</span> %(self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#af2809ced8ed517b9756c396d532cd5d6">owner</a>, self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a0f017995da90cd0101e2f4b3b040468c">tattoo</a>())</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    </div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a0f017995da90cd0101e2f4b3b040468c">  152</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a0f017995da90cd0101e2f4b3b040468c">tattoo</a>(self):</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        ud=self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a4f61aecb7958064b27ea9b1eae2286f1">getFat</a>()</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        <span class="keywordflow">if</span> ud <span class="keywordflow">and</span> ud.mp:</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacesrc_1_1ownedUsbDisk.html#a37de5850519fac8c502e9e9212f6ff74">tattooInDir</a>(ud.mp)</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;            <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="comment">#        Lit un dictionnaire indexé par le noms de vendeurs et les noms de modèle</span></div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="comment">#        pour associer à ces modèles particuliers un répertoire visible.</span></div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="comment">#        voir la fonction visibleDir. Ce dictionnaire est dans le fichier</span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="comment">#        /usr/share/scolasync/marques.py ou dans ${HOME}/.scolasync/marques.py,</span></div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="comment">#        (sous Linux) cette dernière place étant prépondérante.</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a70c2ad23e3e2ef06c16897aca80d8f3c">  166</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a70c2ad23e3e2ef06c16897aca80d8f3c">readQuirks</a> (self):</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        f1=<span class="stringliteral">&quot;/usr/share/scolasync/marques.py&quot;</span></div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        f2=os.path.expanduser(markFileName)</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        <span class="keywordflow">if</span> os.path.exists(f2):</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;            f=f2</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;            f=f1</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        result={}</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;            result=eval(open(f,<span class="stringliteral">&quot;r&quot;</span>, encoding=<span class="stringliteral">&quot;utf-8&quot;</span>).read())</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <span class="keywordflow">except</span>:</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            <span class="keywordflow">pass</span></div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="keywordflow">return</span> result</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="comment">#        Renvoie le répertoire particulier de la partition qui sera visible</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="comment">#        quand le baladeur est utilisé par son interface utilisateur. Ce</span></div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="comment">#        répertoire peut varier selon les vendeurs et les modèles.</span></div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a5e78741368c9c727100db803f119f126">  185</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a5e78741368c9c727100db803f119f126">visibleDir</a>(self):</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        k=self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#ac1ab3d8ed30cefcca30bc04eda5a4374">vendor</a>+<span class="stringliteral">&quot;:&quot;</span>+self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#ad903c162f9c93e93bfad0a1617f6957a">model</a></div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="keywordflow">if</span> k <span class="keywordflow">in</span> self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ab04edd4759e7e522642afaaa16d800ed">visibleDirs</a>.keys():</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ab04edd4759e7e522642afaaa16d800ed">visibleDirs</a>[k]</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;            <span class="keywordflow">return</span> <span class="stringliteral">&quot;.&quot;</span></div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160; </div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="comment">#        Méthode statique</span></div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    <span class="comment">#        renvoie des titres pour les items obtenus par __getitem__</span></div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    <span class="comment">#        la deuxième colonne sera toujours le propriétaire</span></div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <span class="comment">#        @param locale la locale, pour traduire les titres</span></div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="comment">#        @return une liste de titres de colonnes</span></div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a86fb69576603527997369c375d4711ea">  199</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ac8e0e6007f446d93f784b7c0ec0d3537">headers</a>(locale=&quot;C&quot;):</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        result=usbDisk2.uDisk2.headers(locale)</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        ownerProp=QApplication.translate(<span class="stringliteral">&quot;uDisk&quot;</span>,<span class="stringliteral">&quot;owner&quot;</span>,<span class="keywordtype">None</span>)</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        result.insert(1,ownerProp)</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        <span class="keywordflow">return</span> result</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160; </div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    </div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a13f5a9f75b5433087f03adcd40aa47eb">  208</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a13f5a9f75b5433087f03adcd40aa47eb">ownerByDb</a>(self):</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        s=db.readStudent(self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#a8316e946dcf286fba5d7ebf072297000">stickid</a>, self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#aa0b9f005eee77cba1a15a2a9eac90499">uuid</a>, self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a0f017995da90cd0101e2f4b3b040468c">tattoo</a>())</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        <span class="keywordflow">if</span> s != <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;            <span class="keywordflow">return</span> s</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;            <span class="keywordflow">return</span> QApplication.translate(<span class="stringliteral">&quot;Dialog&quot;</span>,<span class="stringliteral">&quot;inconnu&quot;</span>,<span class="keywordtype">None</span>)</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="comment">#        renvoie un élément de listage de données internes au disque</span></div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="comment">#        Fait en sorte que la deuxième colonne soit toujours le propriétaire</span></div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="comment">#        @param n un nombre</span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="comment">#        @return si n==-1, renvoie self ; renvoie un élément si n&gt;0, et le drapeau self.selected si n==0. Les noms des éléments sont dans la liste self.itemNames</span></div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a73b5455d4c295090d18f4c0b5a567675">  221</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a73b5455d4c295090d18f4c0b5a567675">__getitem__</a>(self,n):</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        propListe=usbDisk2.uDisk2.headers()</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        <span class="keywordflow">if</span> n == -1:</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;            <span class="keywordflow">return</span> self <span class="comment"># pour accéder à toutes les données d&#39;une partition</span></div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keywordflow">elif</span> n==0:</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#ad1fb31a571cf086ef0cd8e9cf8e44115">selected</a></div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        <span class="keywordflow">elif</span> n==1:</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a13f5a9f75b5433087f03adcd40aa47eb">ownerByDb</a>()</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#a41d878fd836aea74005591ad76ca3059">unNumberProp</a>(n)</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160; </div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ac8e0e6007f446d93f784b7c0ec0d3537">  233</a></span>&#160;    headers = staticmethod(headers)</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">#        Demande un nom de propriétaire si celui-ci n&#39;est pas encore défini</span></div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="comment">#        pour cette clé USB. Enregistre au passage le nom du propriétaire</span></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <span class="comment">#        dans les instances du disque et de sa partiton vfat</span></div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="comment">#        @param ownerDialog si vrai : fait dialogue interactif</span></div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <span class="comment">#        @return un nom de propriétaire</span></div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ad3eeeb0bda5d3a4f839a7706492bda6f">  242</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ad3eeeb0bda5d3a4f839a7706492bda6f">ensureOwner</a>(self, ownerDialog):</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="keywordflow">if</span> self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#a270486ee9951b7884bde91dbb89ca007">parent</a> <span class="keywordflow">and</span> <span class="keywordflow">not</span> self.<a class="code" href="classsrc_1_1usbDisk2_1_1uDisk2.html#a373d93728cebb8272ce459b39eb18ab8">mp</a> : <span class="comment"># partiton non montée</span></div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;            <span class="keywordflow">return</span></div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        ud=self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a4f61aecb7958064b27ea9b1eae2286f1">getFat</a>()</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <span class="keyword">assert</span> (ud.parent) <span class="comment"># ud désigne une partition vfat</span></div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        <span class="keywordflow">if</span> <span class="keywordflow">not</span> db.knowsId(ud.stickid, ud.uuid, ud.tattoo()) :</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;            text=self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a811157e593ead4adb609c492b2a41c2e">randomOwner</a>(6)</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;            <span class="keywordflow">if</span> ownerDialog:</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;                prompt=QApplication.translate(<span class="stringliteral">&quot;Dialog&quot;</span>,<span class="stringliteral">&quot;La cle {id}&lt;br&gt;n&#39;est pas identifiee, donnez le nom du proprietaire&quot;</span>,<span class="keywordtype">None</span>).format(id=ud.stickid)</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;                title=QApplication.translate(<span class="stringliteral">&quot;Dialog&quot;</span>,<span class="stringliteral">&quot;Entrer un nom&quot;</span>,<span class="keywordtype">None</span>)</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                text,ok = QInputDialog.getText(<span class="keywordtype">None</span>, title, prompt)</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;            db.writeStudent(ud.stickid, ud.uuid, ud.tattoo(), text)</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        o=db.readStudent(ud.stickid, ud.uuid, ud.tattoo())</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;        self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#af2809ced8ed517b9756c396d532cd5d6">owner</a>=o</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        ud.owner=o</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        <span class="keywordflow">return</span> o</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160; </div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    </div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160; </div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a811157e593ead4adb609c492b2a41c2e">  264</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a811157e593ead4adb609c492b2a41c2e">randomOwner</a>(self,length):</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        result=<span class="stringliteral">&quot;inconnu_&quot;</span></div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(length):</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;            result+=random.choice(<span class="stringliteral">&quot;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&quot;</span>)</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="keywordflow">return</span> result</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160; </div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="comment">#    Une classe qui fournit une collection de disques USB connectés,</span></div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="comment">#    avec leurs propriétaires. Les propriétaires sont recensés juste</span></div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="comment">#    avant le montage des partions FAT.</span></div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;<span class="comment">#</span></div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160; </div>
<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1Available.html">  275</a></span>&#160;<span class="keyword">class </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1Available.html">Available</a>(<a class="code" href="classsrc_1_1usbDisk2_1_1Available.html">usbDisk2.Available</a>):</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <span class="comment">#        Le constructeur est un proxy pour usbDisk.Available.__init__</span></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="comment">#        qui force la classe de disques à utiliser : en effet ici</span></div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="comment">#        uDisk désigne ownedUsbDisk.uDisk</span></div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <span class="comment">#        @param access le mode d&#39;accès : &#39;disk&#39; ou &#39;firstFat&#39;</span></div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <span class="comment">#        @param diskClass la classe d&#39;objets à créer pour chaque disque</span></div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <span class="comment">#        @param ownerDialog vrai si on veut qu&#39;il y ait un dialogue automatique</span></div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="comment">#        pour déterminer le propriétaire des disques non reconnus</span></div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160; </div>
<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1Available.html#a9723b2684397e66a329ea0f216c0fcb8">  286</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1Available.html#a9723b2684397e66a329ea0f216c0fcb8">__init__</a>(self, access=&quot;disk&quot;, diskClass=uDisk2, ownerDialog=False):</div>
<div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1Available.html#aa23e2651214e56c864c0f46739e61b4f">  287</a></span>&#160;        self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1Available.html#aa23e2651214e56c864c0f46739e61b4f">ownerDialog</a>=ownerDialog</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        usbDisk2.Available.__init__(self, access, diskClass)</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        <span class="comment"># self.finishInit() # non! cette routine est déjà appelée par usbDisk2.Available.__init__</span></div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <span class="comment">#        Fin de l&#39;initialisation : trouve les propriétaires des disques</span></div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="comment">#        puis identifie les partitions FAT et les monte</span></div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    <span class="comment">#</span></div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1Available.html#aece3fcc8006bd3ecc2ccdb4c570e26aa">  295</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1Available.html#aece3fcc8006bd3ecc2ccdb4c570e26aa">finishInit</a>(self):</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        self.<a class="code" href="classsrc_1_1usbDisk2_1_1Available.html#ae6e386eb57b5db8de77ccfa1df79d9e9">getFirstFats</a>() <span class="comment"># repère chaque partition FAT dans les instances des disques</span></div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        <span class="keywordflow">for</span> d <span class="keywordflow">in</span> self.<a class="code" href="classsrc_1_1usbDisk2_1_1Available.html#a6a3d407e0ff54b2646c0db730010fa30">disks_ud</a>():</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;            d.owner=d.ensureOwner(self.<a class="code" href="classsrc_1_1ownedUsbDisk_1_1Available.html#aa23e2651214e56c864c0f46739e61b4f">ownerDialog</a>)</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        self.<a class="code" href="classsrc_1_1usbDisk2_1_1Available.html#ac939942256255af8fff9a5e3ed280a5e">mountFirstFats</a>()</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160; </div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160; </div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="keywordflow">if</span> __name__==<span class="stringliteral">&quot;__main__&quot;</span>:</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="keyword">from</span> <a class="code" href="namespacePyQt5_1_1QtCore.html">PyQt5.QtCore</a> <span class="keyword">import</span> *</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keyword">from</span> <a class="code" href="namespacePyQt5_1_1QtWidgets.html">PyQt5.QtWidgets</a> <span class="keyword">import</span> *</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="keyword">import</span> sys</div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1MainWindow.html">  306</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1MainWindow.html">MainWindow</a>(<a class="code" href="classQMainWindow.html">QMainWindow</a>):</div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classsrc_1_1ownedUsbDisk_1_1MainWindow.html#a1497c03c3f519126981946aba4e429fd">  307</a></span>&#160;        <span class="keyword">def </span><a class="code" href="classsrc_1_1ownedUsbDisk_1_1MainWindow.html#a1497c03c3f519126981946aba4e429fd">__init__</a>(self):</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;            QMainWindow.__init__(self)</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160; </div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;            <span class="comment"># The only thing in the app is a quit button</span></div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;            quitbutton = QPushButton(<span class="stringliteral">&#39;Examinez le terminal\nbranchez et débranchez des clés USB, puis\nQuittez&#39;</span>, self)</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;            quitbutton.clicked.connect(self.close)</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;            self.setCentralWidget(quitbutton)</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160; </div>
<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html#ad047dcd57d27f543870f7003034b961b">  315</a></span>&#160;    machin=<a class="code" href="classsrc_1_1ownedUsbDisk_1_1Available.html">Available</a>()</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <span class="keywordflow">print</span> (machin)</div>
<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html#afaff14ed519b0d988d1ac64797748dfa">  317</a></span>&#160;    <span class="keyword">def </span><a class="code" href="namespacesrc_1_1ownedUsbDisk.html#afaff14ed519b0d988d1ac64797748dfa">print_targets_if_modif</a>(man, obj):</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        <span class="keywordflow">if</span> machin.modified:</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;            print([s.split(<span class="stringliteral">&quot;/&quot;</span>)[-1] <span class="keywordflow">for</span> s <span class="keywordflow">in</span> machin.targets.keys()])</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;            <span class="keywordflow">for</span> t <span class="keywordflow">in</span> machin.targets:</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;                machin.targets[t].owner=machin.targets[t].ownerByDb()</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;                <span class="keywordflow">print</span> (machin.targets[t].owner,<span class="stringliteral">&quot;:&quot;</span>, t)</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        machin.modified=<span class="keyword">False</span></div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    machin.addHook(<span class="stringliteral">&#39;object-added&#39;</span>,   print_targets_if_modif)</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    machin.addHook(<span class="stringliteral">&#39;object-removed&#39;</span>, print_targets_if_modif)</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160; </div>
<div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html#a001687eb7179eb415a457dd46e89246e">  327</a></span>&#160;    app = QApplication(sys.argv)</div>
<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="namespacesrc_1_1ownedUsbDisk.html#a6952ae302b2cdd98199228135684c240">  328</a></span>&#160;    main = <a class="code" href="classsrc_1_1ownedUsbDisk_1_1MainWindow.html">MainWindow</a>()</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    main.show()</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    sys.exit(app.exec_())</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160; </div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_a41d878fd836aea74005591ad76ca3059"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#a41d878fd836aea74005591ad76ca3059">src.usbDisk2.uDisk2.unNumberProp</a></div><div class="ttdeci">def unNumberProp(self, n)</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00523">usbDisk2.py:523</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_af2809ced8ed517b9756c396d532cd5d6"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#af2809ced8ed517b9756c396d532cd5d6">src.ownedUsbDisk.uDisk2.owner</a></div><div class="ttdeci">owner</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00107">ownedUsbDisk.py:107</a></div></div>
<div class="ttc" id="aclassQObject_html"><div class="ttname"><a href="classQObject.html">QObject</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_aa0b9f005eee77cba1a15a2a9eac90499"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#aa0b9f005eee77cba1a15a2a9eac90499">src.usbDisk2.uDisk2.uuid</a></div><div class="ttdeci">uuid</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00419">usbDisk2.py:419</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a4f61aecb7958064b27ea9b1eae2286f1"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a4f61aecb7958064b27ea9b1eae2286f1">src.ownedUsbDisk.uDisk2.getFat</a></div><div class="ttdeci">def getFat(self)</div><div class="ttdoc">Renvoie à coup sûr la partition vfat d'un disque.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00123">ownedUsbDisk.py:123</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1Available_html_ae6e386eb57b5db8de77ccfa1df79d9e9"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1Available.html#ae6e386eb57b5db8de77ccfa1df79d9e9">src.usbDisk2.Available.getFirstFats</a></div><div class="ttdeci">def getFirstFats(self)</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00734">usbDisk2.py:734</a></div></div>
<div class="ttc" id="anamespacesrc_1_1ownedUsbDisk_html_afaff14ed519b0d988d1ac64797748dfa"><div class="ttname"><a href="namespacesrc_1_1ownedUsbDisk.html#afaff14ed519b0d988d1ac64797748dfa">src.ownedUsbDisk.print_targets_if_modif</a></div><div class="ttdeci">def print_targets_if_modif(man, obj)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00317">ownedUsbDisk.py:317</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_a8316e946dcf286fba5d7ebf072297000"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#a8316e946dcf286fba5d7ebf072297000">src.usbDisk2.uDisk2.stickid</a></div><div class="ttdeci">stickid</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00418">usbDisk2.py:418</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a5e78741368c9c727100db803f119f126"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a5e78741368c9c727100db803f119f126">src.ownedUsbDisk.uDisk2.visibleDir</a></div><div class="ttdeci">def visibleDir(self)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00185">ownedUsbDisk.py:185</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1Available_html"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1Available.html">src.usbDisk2.Available</a></div><div class="ttdoc">une classe pour représenter la collection des disques USB connectés</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00583">usbDisk2.py:583</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1Available_html_a9723b2684397e66a329ea0f216c0fcb8"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1Available.html#a9723b2684397e66a329ea0f216c0fcb8">src.ownedUsbDisk.Available.__init__</a></div><div class="ttdeci">def __init__(self, access=&quot;disk&quot;, diskClass=uDisk2, ownerDialog=False)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00286">ownedUsbDisk.py:286</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1Available_html"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1Available.html">src.ownedUsbDisk.Available</a></div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00275">ownedUsbDisk.py:275</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a70c2ad23e3e2ef06c16897aca80d8f3c"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a70c2ad23e3e2ef06c16897aca80d8f3c">src.ownedUsbDisk.uDisk2.readQuirks</a></div><div class="ttdeci">def readQuirks(self)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00166">ownedUsbDisk.py:166</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a73b5455d4c295090d18f4c0b5a567675"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a73b5455d4c295090d18f4c0b5a567675">src.ownedUsbDisk.uDisk2.__getitem__</a></div><div class="ttdeci">def __getitem__(self, n)</div><div class="ttdoc">Renvoie un élément de listage de données internes au disque.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00221">ownedUsbDisk.py:221</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1Available_html_aece3fcc8006bd3ecc2ccdb4c570e26aa"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1Available.html#aece3fcc8006bd3ecc2ccdb4c570e26aa">src.ownedUsbDisk.Available.finishInit</a></div><div class="ttdeci">def finishInit(self)</div><div class="ttdoc">Fin de l'initialisation.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00295">ownedUsbDisk.py:295</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1Available_html_a6a3d407e0ff54b2646c0db730010fa30"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1Available.html#a6a3d407e0ff54b2646c0db730010fa30">src.usbDisk2.Available.disks_ud</a></div><div class="ttdeci">def disks_ud(self)</div><div class="ttdoc">Récolte les enregistrements de niveau supérieur de self.targets.</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00657">usbDisk2.py:657</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_aedab6e01d7f2856f128df0a24029a043"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#aedab6e01d7f2856f128df0a24029a043">src.ownedUsbDisk.uDisk2.uniqueId</a></div><div class="ttdeci">def uniqueId(self)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00145">ownedUsbDisk.py:145</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_a270486ee9951b7884bde91dbb89ca007"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#a270486ee9951b7884bde91dbb89ca007">src.usbDisk2.uDisk2.parent</a></div><div class="ttdeci">parent</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00416">usbDisk2.py:416</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_ad903c162f9c93e93bfad0a1617f6957a"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#ad903c162f9c93e93bfad0a1617f6957a">src.usbDisk2.uDisk2.model</a></div><div class="ttdeci">model</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00415">usbDisk2.py:415</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html">src.ownedUsbDisk.uDisk2</a></div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00082">ownedUsbDisk.py:82</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1Available_html_ac939942256255af8fff9a5e3ed280a5e"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1Available.html#ac939942256255af8fff9a5e3ed280a5e">src.usbDisk2.Available.mountFirstFats</a></div><div class="ttdeci">def mountFirstFats(self)</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00608">usbDisk2.py:608</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_abca64357f81f74f572d4e0f53d9069ac"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#abca64357f81f74f572d4e0f53d9069ac">src.ownedUsbDisk.uDisk2.valuableProperties</a></div><div class="ttdeci">def valuableProperties(self, indent=4)</div><div class="ttdoc">Facilite l'accès aux propriétés intéressantes d'une instance.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00133">ownedUsbDisk.py:133</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a13f5a9f75b5433087f03adcd40aa47eb"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a13f5a9f75b5433087f03adcd40aa47eb">src.ownedUsbDisk.uDisk2.ownerByDb</a></div><div class="ttdeci">def ownerByDb(self)</div><div class="ttdoc">renvoie un nom de propriétaire dans tous les cas.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00208">ownedUsbDisk.py:208</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a811157e593ead4adb609c492b2a41c2e"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a811157e593ead4adb609c492b2a41c2e">src.ownedUsbDisk.uDisk2.randomOwner</a></div><div class="ttdeci">def randomOwner(self, length)</div><div class="ttdoc">fabrique un texte aléatoire de longueur donnée</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00264">ownedUsbDisk.py:264</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1Available_html_aa23e2651214e56c864c0f46739e61b4f"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1Available.html#aa23e2651214e56c864c0f46739e61b4f">src.ownedUsbDisk.Available.ownerDialog</a></div><div class="ttdeci">ownerDialog</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00287">ownedUsbDisk.py:287</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a0f017995da90cd0101e2f4b3b040468c"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a0f017995da90cd0101e2f4b3b040468c">src.ownedUsbDisk.uDisk2.tattoo</a></div><div class="ttdeci">def tattoo(self)</div><div class="ttdoc">Renvoie un tatouage présent sur la clé, quitte à le créer.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00152">ownedUsbDisk.py:152</a></div></div>
<div class="ttc" id="aclassQMainWindow_html"><div class="ttname"><a href="classQMainWindow.html">QMainWindow</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_a373d93728cebb8272ce459b39eb18ab8"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#a373d93728cebb8272ce459b39eb18ab8">src.usbDisk2.uDisk2.mp</a></div><div class="ttdeci">mp</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00412">usbDisk2.py:412</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1MainWindow_html"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1MainWindow.html">src.ownedUsbDisk.MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00306">ownedUsbDisk.py:306</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_ad3eeeb0bda5d3a4f839a7706492bda6f"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ad3eeeb0bda5d3a4f839a7706492bda6f">src.ownedUsbDisk.uDisk2.ensureOwner</a></div><div class="ttdeci">def ensureOwner(self, ownerDialog)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00242">ownedUsbDisk.py:242</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_ac1ab3d8ed30cefcca30bc04eda5a4374"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#ac1ab3d8ed30cefcca30bc04eda5a4374">src.usbDisk2.uDisk2.vendor</a></div><div class="ttdeci">vendor</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00414">usbDisk2.py:414</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_ad652bd6709835104fe26cf8e289b70ff"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#ad652bd6709835104fe26cf8e289b70ff">src.usbDisk2.uDisk2.firstFat</a></div><div class="ttdeci">firstFat</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00423">usbDisk2.py:423</a></div></div>
<div class="ttc" id="anamespacesrc_1_1ownedUsbDisk_html_a37de5850519fac8c502e9e9212f6ff74"><div class="ttname"><a href="namespacesrc_1_1ownedUsbDisk.html#a37de5850519fac8c502e9e9212f6ff74">src.ownedUsbDisk.tattooInDir</a></div><div class="ttdeci">def tattooInDir(mountPoint)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00041">ownedUsbDisk.py:41</a></div></div>
<div class="ttc" id="anamespacePyQt5_1_1QtCore_html"><div class="ttname"><a href="namespacePyQt5_1_1QtCore.html">QtCore</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a1d59c88d4bc3975a64192136a7ddbef3"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a1d59c88d4bc3975a64192136a7ddbef3">src.ownedUsbDisk.uDisk2.__init__</a></div><div class="ttdeci">def __init__(self, path, mp='', isUsb=False, vendor='', model='', parent=None, fstype='', serial='', uuid='', free=0, capacity=0, device='', firstFat=None, selected=True)</div><div class="ttdoc">Le constructeur.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00101">ownedUsbDisk.py:101</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html">src.usbDisk2.uDisk2</a></div><div class="ttdoc">une classe pour représenter un disque ou une partition.</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00390">usbDisk2.py:390</a></div></div>
<div class="ttc" id="anamespacesrc_1_1ownedUsbDisk_html_aeb4a87ad9154577da326f4844a97874b"><div class="ttname"><a href="namespacesrc_1_1ownedUsbDisk.html#aeb4a87ad9154577da326f4844a97874b">src.ownedUsbDisk.editRecord</a></div><div class="ttdeci">def editRecord(owd, hint=&quot;&quot;)</div><div class="ttdoc">édition de la base de données.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00067">ownedUsbDisk.py:67</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_ab04edd4759e7e522642afaaa16d800ed"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ab04edd4759e7e522642afaaa16d800ed">src.ownedUsbDisk.uDisk2.visibleDirs</a></div><div class="ttdeci">visibleDirs</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00108">ownedUsbDisk.py:108</a></div></div>
<div class="ttc" id="aclasssrc_1_1usbDisk2_1_1uDisk2_html_ad1fb31a571cf086ef0cd8e9cf8e44115"><div class="ttname"><a href="classsrc_1_1usbDisk2_1_1uDisk2.html#ad1fb31a571cf086ef0cd8e9cf8e44115">src.usbDisk2.uDisk2.selected</a></div><div class="ttdeci">selected</div><div class="ttdef"><b>Definition:</b> <a href="usbDisk2_8py_source.html#l00424">usbDisk2.py:424</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_ac8e0e6007f446d93f784b7c0ec0d3537"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#ac8e0e6007f446d93f784b7c0ec0d3537">src.ownedUsbDisk.uDisk2.headers</a></div><div class="ttdeci">headers</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00233">ownedUsbDisk.py:233</a></div></div>
<div class="ttc" id="anamespacePyQt5_1_1QtWidgets_html"><div class="ttname"><a href="namespacePyQt5_1_1QtWidgets.html">QtWidgets</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1MainWindow_html_a1497c03c3f519126981946aba4e429fd"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1MainWindow.html#a1497c03c3f519126981946aba4e429fd">src.ownedUsbDisk.MainWindow.__init__</a></div><div class="ttdeci">def __init__(self)</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00307">ownedUsbDisk.py:307</a></div></div>
<div class="ttc" id="aclasssrc_1_1ownedUsbDisk_1_1uDisk2_html_a03c90a7c08177375d0d7a1066b0c7245"><div class="ttname"><a href="classsrc_1_1ownedUsbDisk_1_1uDisk2.html#a03c90a7c08177375d0d7a1066b0c7245">src.ownedUsbDisk.uDisk2.getOwner</a></div><div class="ttdeci">def getOwner(self)</div><div class="ttdoc">Renvoie le propriétaire.</div><div class="ttdef"><b>Definition:</b> <a href="ownedUsbDisk_8py_source.html#l00116">ownedUsbDisk.py:116</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="ownedUsbDisk_8py.html">ownedUsbDisk.py</a></li>
    <li class="footer">Généré par
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>