Index: gc_lang/fr/tb/content/file_handler.js
==================================================================
--- gc_lang/fr/tb/content/file_handler.js
+++ gc_lang/fr/tb/content/file_handler.js
@@ -42,10 +42,30 @@
catch (e) {
console.error(e);
return null;
}
},
+
+ loadAs: function (callback) {
+ let xFilePicker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
+ xFilePicker.init(window, "Charger fichier", Ci.nsIFilePicker.modeOpen);
+ xFilePicker.appendFilters(Ci.nsIFilePicker.filterAll | Ci.nsIFilePicker.filterText);
+ xFilePicker.open(async function (nReturnValue) {
+ if (nReturnValue == Ci.nsIFilePicker.returnOK || nReturnValue == Ci.nsIFilePicker.returnReplace) {
+ console.log(xFilePicker.file.path);
+ try {
+ let xDecoder = new TextDecoder();
+ let array = await OS.File.read(xFilePicker.file.path);
+ callback(xDecoder.decode(array));
+ }
+ catch (e) {
+ console.error(e);
+ callback(null);
+ }
+ }
+ });
+ },
saveFile: function (sFilename, sData) {
if (!this.xDataFolder) {
this.prepareDataFolder();
}
@@ -71,9 +91,9 @@
xFilePicker.open(function (nReturnValue) {
if (nReturnValue == Ci.nsIFilePicker.returnOK || nReturnValue == Ci.nsIFilePicker.returnReplace) {
let xEncoder = new TextEncoder();
let xEncodedRes = xEncoder.encode(sData);
OS.File.writeAtomic(xFilePicker.file.path, xEncodedRes, {tmpPath: "file.txt.tmp"});
- }
+ }
});
}
}
Index: gc_lang/fr/tb/content/lex_editor.css
==================================================================
--- gc_lang/fr/tb/content/lex_editor.css
+++ gc_lang/fr/tb/content/lex_editor.css
@@ -96,10 +96,13 @@
#search_table {
width: 600px;
height: 650px;
}
+.bold {
+ font-weight: bold;
+}
description {
width: 200px;
}
/*
Index: gc_lang/fr/tb/content/lex_editor.js
==================================================================
--- gc_lang/fr/tb/content/lex_editor.js
+++ gc_lang/fr/tb/content/lex_editor.js
@@ -419,11 +419,11 @@
oIBDAWG: null,
load: async function () {
let sJSON = await oFileHandler.loadFile("fr.personal.json");
- if (sJSON != "") {
+ if (sJSON) {
let oJSON = JSON.parse(sJSON);
this.oIBDAWG = new IBDAWG(oJSON);
let lEntry = [];
for (let aRes of this.oIBDAWG.select()) {
lEntry.push(aRes);
@@ -434,10 +434,27 @@
} else {
this.setDictData(0, "[néant]");
disableElement("export_button");
}
},
+
+ import: function () {
+ oFileHandler.loadAs(this._import.bind(this));
+ },
+
+ _import: function (sJSON) {
+ if (sJSON) {
+ let oJSON = JSON.parse(sJSON);
+ this.oIBDAWG = new IBDAWG(oJSON);
+ oFileHandler.saveFile("fr.personal.json", JSON.stringify(oJSON));
+ let lEntry = [];
+ for (let aRes of this.oIBDAWG.select()) {
+ lEntry.push(aRes);
+ }
+ oLexiconTable.fill(lEntry);
+ }
+ },
setDictData: function (nEntries, sDate) {
document.getElementById("dic_num_entries").value = nEntries;
document.getElementById("dic_save_date").value = sDate;
},
@@ -444,11 +461,11 @@
listen: function () {
document.getElementById("delete_button").addEventListener("click", () => { oLexiconTable.deleteSelection(); }, false);
document.getElementById("save_button").addEventListener("click", () => { this.build(); }, false);
document.getElementById("export_button").addEventListener("click", () => { this.export(); }, false);
- //document.getElementById("import_button").addEventListener("click", () => { this.import(); }, false);
+ document.getElementById("import_button").addEventListener("click", () => { this.import(); }, false);
},
build: function () {
let xProgressNode = document.getElementById("wait_progress");
let lEntry = oLexiconTable.getEntries();
@@ -465,14 +482,10 @@
this.setDictData(0, "[néant]");
disableElement("export_button");
}
},
- import: function () {
- console.log("import");
- },
-
export: function () {
let sJSON = JSON.stringify(this.oIBDAWG.getJSON());
oFileHandler.saveAs(sJSON);
}
}
Index: gc_lang/fr/tb/content/lex_editor.xul
==================================================================
--- gc_lang/fr/tb/content/lex_editor.xul
+++ gc_lang/fr/tb/content/lex_editor.xul
@@ -23,10 +23,11 @@
+
@@ -274,15 +275,20 @@
+
Les modifications apportées au lexique ne sont enregistrées dans le dictionnaire qu’au moment où vous cliquez sur ‹Enregistrer› dans l’onglet ‹Lexique›.
+
+
Il est inutile de purger votre lexique des doublons éventuels. Les doublons sont automatiquement supprimés lors de la création du dictionnaire.
+
+
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.
-
+
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.