Grammalecte  Check-in [5a024fca97]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[tb] update ui
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tb | tbme
Files: files | file ages | folders
SHA3-256:5a024fca9785a839a30890e9ee2c516e40aab1dde983a998bcb69cc907716e7a
User & Date: olr 2019-09-03 09:02:54
Context
2019-09-03
15:40
[tb] remove useless Hunspell dictionaries check-in: 8b2726d0c3 user: olr tags: tb, tbme
09:02
[tb] update ui check-in: 5a024fca97 user: olr tags: tb, tbme
2019-09-02
13:13
[tb] adaptation to new API (draft) check-in: a9234a6ef3 user: olr tags: tb, tbme
Changes

Changes to gc_lang/fr/mailext/content/file_handler.js.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// JavaScript

"use strict";

// Assuming that Cc, Ci and Cu are already loaded

//const {OS} = ChromeUtils.import("resource://gre/modules/osfile.jsm", {});

ChromeUtils.import("resource://gre/modules/osfile.jsm")

const oFileHandler = {
    // https://developer.mozilla.org/fr/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_the_main_thread

    xDataFolder: null,

    prepareDataFolder: function () {






|

|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// JavaScript

"use strict";

// Assuming that Cc, Ci and Cu are already loaded

const { OS } = ChromeUtils.import("resource://gre/modules/osfile.jsm", {});

//ChromeUtils.import("resource://gre/modules/osfile.jsm")

const oFileHandler = {
    // https://developer.mozilla.org/fr/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_the_main_thread

    xDataFolder: null,

    prepareDataFolder: function () {

Changes to gc_lang/fr/mailext/content/lex_editor.js.

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
...
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
        this.iEntryIndex = 0;
        this.lEntry = [];
        this.nEntry = 0
        this._createHeader();
    }

    _createHeader () {
        let xListheadNode = createNode("listhead");
        for (let sColumn of this.lColumn) {
            xListheadNode.appendChild(createNode("listheader", { label: sColumn }));
        }
        this.xTable.appendChild(xListheadNode);
        let xListcolsNode = createNode("listcols");
        for (let cColumn of this.lColumnWidth) {
            xListcolsNode.appendChild(createNode("listcol", { flex: cColumn }));
        }
        this.xTable.appendChild(xListcolsNode);
    }

    clear () {
        while (this.xTable.firstChild) {
            this.xTable.removeChild(this.xTable.firstChild);
................................................................................
    showEntryNumber () {
        if (this.xNumEntry) {
            this.xNumEntry.value = this.nEntry;
        }
    }

    _addRow (lData) {
        let xRowNode = createNode("listitem", { id: this.sNodeId + "_item_" + this.iEntryIndex, value: this.iEntryIndex });
        for (let data of lData) {
            xRowNode.appendChild(createNode("listcell", { label: data }));
        }
        this.xTable.appendChild(xRowNode);
        this.iEntryIndex += 1;
    }

    deleteSelection () {
        for (let xItem of this.xTable.selectedItems) {







|

|


|

|







 







|

|







61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
...
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
        this.iEntryIndex = 0;
        this.lEntry = [];
        this.nEntry = 0
        this._createHeader();
    }

    _createHeader () {
        let xListheadNode = createNode("richlistitem");
        for (let sColumn of this.lColumn) {
            xListheadNode.appendChild(createNode("div", { class: "listheader", label: sColumn }));
        }
        this.xTable.appendChild(xListheadNode);
        let xListcolsNode = createNode("richlistitem");
        for (let cColumn of this.lColumnWidth) {
            xListcolsNode.appendChild(createNode("div", { class: "listcol", flex: cColumn }));
        }
        this.xTable.appendChild(xListcolsNode);
    }

    clear () {
        while (this.xTable.firstChild) {
            this.xTable.removeChild(this.xTable.firstChild);
................................................................................
    showEntryNumber () {
        if (this.xNumEntry) {
            this.xNumEntry.value = this.nEntry;
        }
    }

    _addRow (lData) {
        let xRowNode = createNode("richlistitem", { id: this.sNodeId + "_item_" + this.iEntryIndex, value: this.iEntryIndex });
        for (let data of lData) {
            xRowNode.appendChild(createNode("div", { class:"listcell", label: data }));
        }
        this.xTable.appendChild(xRowNode);
        this.iEntryIndex += 1;
    }

    deleteSelection () {
        for (let xItem of this.xTable.selectedItems) {

Changes to gc_lang/fr/mailext/content/lex_editor.xul.

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
...
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
...
154
155
156
157
158
159
160
161
162

163
164
165
166
167
168
169
...
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
...
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
...
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
...
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
...
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
...
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
      <tab label="&tab.info.label;"/>
    </tabs>

    <tabpanels>

      <!-- NEW WORD -->
      <tabpanel orient="vertical">
        
        <hbox>
          
          <vbox>
            <dialogheader title="Nouveau mot (lemme)" description="Générateur" />
            <textbox id="lemma" value="" />

            <checkbox id="tag_N" class="subsection" label="Nom et adjectif" />
            <hbox class="m_left">
              <radiogroup id="pos_nom_commun" orient="vertical">
................................................................................
                <radio id="MP" class="option" label="Autre" value=":MP" />
              </radiogroup>
              <radiogroup id="genre_nom_propre" orient="vertical">
                <radio id="M_epi" class="option" label="épicène" value=":e" />
                <radio id="M_mas" class="option" label="masculin" value=":m" />
                <radio id="M_fem" class="option" label="féminin" value=":f" />
              </radiogroup>
            </hbox>              

            <checkbox id="tag_V" class="subsection" label="Verbe" />
            <hbox class="m_left">
              <vbox>
                <checkbox id="v_i" class="v_usage" label="intransitif" />
                <checkbox id="v_t" class="v_usage" label="transitif" />
                <checkbox id="v_n" class="v_usage" label="transitif indirect" />
................................................................................
                <textbox id="tags" class="other_textbox" value="" />
              </hbox>
            </vbox>
          </vbox>

          <vbox>
            <dialogheader title="Mots générés" description="" />
            <listbox id="generated_words_table" seltype="multiple">
              <!--
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Étiquettes"/>
              </listhead>

              <listcols>
................................................................................
              </listcols>

              <listitem>
                <listcell label="George"/>
                <listcell label="House"/>
              </listitem>
              -->
            </listbox>
            <progressmeter id="progress_new_words" value="0"/>

            <hbox>
              <button id="delete_selection" label="Effacer la sélection" />
              <spacer flex="1" />
              <button id="add_to_lexicon" label="Ajouter au lexique" />
            </hbox>
          </vbox>
        </hbox>
................................................................................
            <hbox>
              <label class="info_label" value="Nombre d’entrées : " />
              <label id="num_entries" class="data" value="0" />
            </hbox>
            <spacer flex="1" />
            <button id="delete_button" label="Supprimer la sélection" />
            <spacer flex="20" />
            <progressmeter id="progress_lexicon" value="0"/>

            <button id="save_button" label="Enregistrer" />
          </vbox>

          <vbox>
            <listbox id="lexicon_table" seltype="multiple">
              <!--
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Lemmes"/>
                <listheader label="Étiquettes"/>
              </listhead>

................................................................................

              <listitem>
                <listcell label="George"/>
                <listcell label="House Painter"/>
                <listcell label="House"/>
              </listitem>
              -->
            </listbox>
          </vbox>
        </hbox>
      </tabpanel>

      <tabpanel orient="vertical">
        <hbox>
          <vbox>
................................................................................
              <textbox id="search_tags_pattern" value="" />
            </hbox>
            <button id="search_regex_button" label="Chercher" />
            <label value="" />
            <description>La recherche par expressions régulières peut générer un nombre gigantesque de résultats. Seules les 2000 premières occurrences trouvées seront affichées. La recherche peut être longue, parce tout le graphe de mots, qui contient 500 000 flexions, sera parcouru si besoin.</description>

            <spacer flex="1" />
            
            <progressmeter id="progress_search" value="0"/>

            <hbox>
              <spacer flex="1" />
              <label id="search_num_entries" class="align_right" value="0" />
              <label value="entrées" />
            </hbox>
          </vbox>
          <vbox>
            <dialogheader title="Résultat" description="" />
            <listbox id="search_table">
              <!--
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Lemmes"/>
                <listheader label="Étiquettes"/>
              </listhead>

................................................................................

              <listitem>
                <listcell label="George"/>
                <listcell label="House Painter"/>
                <listcell label="House"/>
              </listitem>
              -->
            </listbox>
          </vbox>
        </hbox>
      </tabpanel>

      <tabpanel orient="vertical">
        <hbox>
          <vbox>
................................................................................
            <description>Le dictionnaire est compilé comme un graphe de mots sous la forme d’une chaîne binaire dans un fichier JSON. Cette opération peut prendre du temps et consommer beaucoup de mémoire si votre lexique contient plusieurs dizaines de milliers d’entrées.</description>
            <spacer flex="1" />
            <label class="bold" value="Avertissement" />
            <description>Il est déconseillé d’utiliser la catégorie ‹Autre› pour générer autre chose que des noms, des adjectifs, des noms propres, des verbes et des adverbes. Il n’y a aucune garantie que les étiquettes pour les autres catégories, notamment les mots grammaticaux, ne changeront pas.</description>
          </vbox>
          <vbox>
            <dialogheader title="Signification des étiquettes" description="" />
            <listbox id="tags_table">
              <!--
              <listhead>
                <listheader label="Étiquettes"/>
                <listheader label="Signification"/>
              </listhead>

              <listcols>
................................................................................
              </listcols>

              <listitem>
                <listcell label="House Painter"/>
                <listcell label="House"/>
              </listitem>
              -->
            </listbox>
          </vbox>
        </hbox>
      </tabpanel>

    </tabpanels>

  </tabbox>







|

|







 







|







 







|







 







|
|
>







 







|
>




|







 







|







 







|
|
>








|







 







|







 







|







 







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
...
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
...
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
...
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
...
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
...
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
...
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
...
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
      <tab label="&tab.info.label;"/>
    </tabs>

    <tabpanels>

      <!-- NEW WORD -->
      <tabpanel orient="vertical">

        <hbox>

          <vbox>
            <dialogheader title="Nouveau mot (lemme)" description="Générateur" />
            <textbox id="lemma" value="" />

            <checkbox id="tag_N" class="subsection" label="Nom et adjectif" />
            <hbox class="m_left">
              <radiogroup id="pos_nom_commun" orient="vertical">
................................................................................
                <radio id="MP" class="option" label="Autre" value=":MP" />
              </radiogroup>
              <radiogroup id="genre_nom_propre" orient="vertical">
                <radio id="M_epi" class="option" label="épicène" value=":e" />
                <radio id="M_mas" class="option" label="masculin" value=":m" />
                <radio id="M_fem" class="option" label="féminin" value=":f" />
              </radiogroup>
            </hbox>

            <checkbox id="tag_V" class="subsection" label="Verbe" />
            <hbox class="m_left">
              <vbox>
                <checkbox id="v_i" class="v_usage" label="intransitif" />
                <checkbox id="v_t" class="v_usage" label="transitif" />
                <checkbox id="v_n" class="v_usage" label="transitif indirect" />
................................................................................
                <textbox id="tags" class="other_textbox" value="" />
              </hbox>
            </vbox>
          </vbox>

          <vbox>
            <dialogheader title="Mots générés" description="" />
            <richlistbox id="generated_words_table" seltype="multiple">
              <!--
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Étiquettes"/>
              </listhead>

              <listcols>
................................................................................
              </listcols>

              <listitem>
                <listcell label="George"/>
                <listcell label="House"/>
              </listitem>
              -->
            </richlistbox>
            <!--<progressmeter id="progress_new_words" value="0"/>-->
            <html:progress id="progress_new_words" max="100" value="0">
            <hbox>
              <button id="delete_selection" label="Effacer la sélection" />
              <spacer flex="1" />
              <button id="add_to_lexicon" label="Ajouter au lexique" />
            </hbox>
          </vbox>
        </hbox>
................................................................................
            <hbox>
              <label class="info_label" value="Nombre d’entrées : " />
              <label id="num_entries" class="data" value="0" />
            </hbox>
            <spacer flex="1" />
            <button id="delete_button" label="Supprimer la sélection" />
            <spacer flex="20" />
            <!--<progressmeter id="progress_lexicon" value="0"/>-->
            <html:progress id="progress_lexicon" max="100" value="0">
            <button id="save_button" label="Enregistrer" />
          </vbox>

          <vbox>
            <richlistbox id="lexicon_table" seltype="multiple">
              <!--
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Lemmes"/>
                <listheader label="Étiquettes"/>
              </listhead>

................................................................................

              <listitem>
                <listcell label="George"/>
                <listcell label="House Painter"/>
                <listcell label="House"/>
              </listitem>
              -->
            </richlistbox>
          </vbox>
        </hbox>
      </tabpanel>

      <tabpanel orient="vertical">
        <hbox>
          <vbox>
................................................................................
              <textbox id="search_tags_pattern" value="" />
            </hbox>
            <button id="search_regex_button" label="Chercher" />
            <label value="" />
            <description>La recherche par expressions régulières peut générer un nombre gigantesque de résultats. Seules les 2000 premières occurrences trouvées seront affichées. La recherche peut être longue, parce tout le graphe de mots, qui contient 500 000 flexions, sera parcouru si besoin.</description>

            <spacer flex="1" />

            <!--<progressmeter id="progress_search" value="0"/>-->
            <html:progress id="progress_search" max="100" value="0">
            <hbox>
              <spacer flex="1" />
              <label id="search_num_entries" class="align_right" value="0" />
              <label value="entrées" />
            </hbox>
          </vbox>
          <vbox>
            <dialogheader title="Résultat" description="" />
            <richlistbox id="search_table">
              <!--
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Lemmes"/>
                <listheader label="Étiquettes"/>
              </listhead>

................................................................................

              <listitem>
                <listcell label="George"/>
                <listcell label="House Painter"/>
                <listcell label="House"/>
              </listitem>
              -->
            </richlistbox>
          </vbox>
        </hbox>
      </tabpanel>

      <tabpanel orient="vertical">
        <hbox>
          <vbox>
................................................................................
            <description>Le dictionnaire est compilé comme un graphe de mots sous la forme d’une chaîne binaire dans un fichier JSON. Cette opération peut prendre du temps et consommer beaucoup de mémoire si votre lexique contient plusieurs dizaines de milliers d’entrées.</description>
            <spacer flex="1" />
            <label class="bold" value="Avertissement" />
            <description>Il est déconseillé d’utiliser la catégorie ‹Autre› pour générer autre chose que des noms, des adjectifs, des noms propres, des verbes et des adverbes. Il n’y a aucune garantie que les étiquettes pour les autres catégories, notamment les mots grammaticaux, ne changeront pas.</description>
          </vbox>
          <vbox>
            <dialogheader title="Signification des étiquettes" description="" />
            <richlistbox id="tags_table">
              <!--
              <listhead>
                <listheader label="Étiquettes"/>
                <listheader label="Signification"/>
              </listhead>

              <listcols>
................................................................................
              </listcols>

              <listitem>
                <listcell label="House Painter"/>
                <listcell label="House"/>
              </listitem>
              -->
            </richlistbox>
          </vbox>
        </hbox>
      </tabpanel>

    </tabpanels>

  </tabbox>