Index: gc_core/py/oxt/OptionsDialog.xcs
==================================================================
--- gc_core/py/oxt/OptionsDialog.xcs
+++ gc_core/py/oxt/OptionsDialog.xcs
@@ -19,14 +19,16 @@
The data for one leaf.
- 1
- 1
- 0
- 1
+ 1
+ 1
+ 0
+ 1
+
+
Index: gc_lang/fr/oxt/DictOptions/DictOptions.py
==================================================================
--- gc_lang/fr/oxt/DictOptions/DictOptions.py
+++ gc_lang/fr/oxt/DictOptions/DictOptions.py
@@ -109,16 +109,16 @@
self.xContainer.execute()
# XActionListener
def actionPerformed (self, xActionEvent):
try:
- xChild = self.xSettingNode.getByName("o_fr")
if xActionEvent.ActionCommand == 'Apply':
- xChild.setPropertyValue("graphspell", self.xGraphspell.State)
- xChild.setPropertyValue("graphspellsugg", self.xGraphspellSugg.State)
+ xChild = self.xSettingNode.getByName("o_fr")
+ xChild.setPropertyValue("use_graphspell", self.xGraphspell.State)
+ xChild.setPropertyValue("use_graphspell_sugg", self.xGraphspellSugg.State)
#xChild.setPropertyValue("extended_dic", self.xExtendedDic.State)
- xChild.setPropertyValue("personal_dic", self.xPersonalDic.State)
+ xChild.setPropertyValue("use_personal_dic", self.xPersonalDic.State)
self.xSettingNode.commitChanges()
elif xActionEvent.ActionCommand == "Import":
xFilePicker = self.xSvMgr.createInstanceWithContext('com.sun.star.ui.dialogs.SystemFilePicker', self.ctx)
xFilePicker.appendFilter("Supported files", "*.json; *.bdic")
#xFilePicker.setDisplayDirectory("")
@@ -143,15 +143,15 @@
traceback.print_exc()
def _loadOptions (self):
try:
xChild = self.xSettingNode.getByName("o_fr")
- self.xGraphspell.State = xChild.getPropertyValue("graphspell")
- self.xGraphspellSugg.State = xChild.getPropertyValue("graphspellsugg")
+ self.xGraphspell.State = xChild.getPropertyValue("use_graphspell")
+ self.xGraphspellSugg.State = xChild.getPropertyValue("use_graphspell_sugg")
#self.xExtendedDic.State = xChild.getPropertyValue("extended_dic")
- self.xPersonalDic.State = xChild.getPropertyValue("personal_dic")
+ self.xPersonalDic.State = xChild.getPropertyValue("use_personal_dic")
except:
traceback.print_exc()
#g_ImplementationHelper = unohelper.ImplementationHelper()
#g_ImplementationHelper.addImplementation(DictOptions, 'net.grammalecte.graphspell.DictOptions', ('com.sun.star.task.Job',))
Index: gc_lang/fr/oxt/DictOptions/LexiconEditor.py
==================================================================
--- gc_lang/fr/oxt/DictOptions/LexiconEditor.py
+++ gc_lang/fr/oxt/DictOptions/LexiconEditor.py
@@ -2,18 +2,20 @@
# by Olivier R.
# License: GPL 3
import unohelper
import uno
+import json
import re
import traceback
import helpers
import lxe_strings
import lxe_conj_data
import grammalecte.graphspell as sc
import grammalecte.graphspell.dawg as dawg
+import grammalecte.graphspell.ibdawg as ibdawg
import grammalecte.fr.conj as conj
from com.sun.star.task import XJobExecutor
from com.sun.star.awt import XActionListener
from com.sun.star.awt import XKeyListener
@@ -53,10 +55,12 @@
self.xContainer = None
self.xDialog = None
self.oSpellChecker = None
# data
self.lGeneratedFlex = []
+ # options node
+ self.xSettingNode = helpers.getConfigSetting("/org.openoffice.Lightproof_grammalecte/Other/", True)
def _addWidget (self, name, wtype, x, y, w, h, **kwargs):
xWidget = self.xDialog.createInstance('com.sun.star.awt.UnoControl%sModel' % wtype)
xWidget.Name = name
xWidget.PositionX = x
@@ -85,10 +89,11 @@
setattr(xGridModel, k, w)
self.xDialog.insertByName(name, xGridModel)
return xGridModel
def run (self, sLang):
+ # ui lang
self.dUI = lxe_strings.getUI(sLang)
# dialog
self.xDialog = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialogModel', self.ctx)
self.xDialog.Width = 620
@@ -203,34 +208,41 @@
self._addWidget("gwords_section", 'FixedLine', nXB, nY1, 200, nHeight, Label = self.dUI.get("new_section", "#err"), FontDescriptor = xFDTitle)
self.xGridModelNew = self._addGrid("list_grid_gwords", nXB, nY1+10, 200, 175, [
{"Title": self.dUI.get("lex_flex", "#err"), "ColumnWidth": 65},
{"Title": self.dUI.get("lex_lemma", "#err"), "ColumnWidth": 50},
{"Title": self.dUI.get("lex_tags", "#err"), "ColumnWidth": 65}
- ])
+ ], SelectionModel = uno.Enum("com.sun.star.view.SelectionType", "MULTI"))
self.xAdd = self._addWidget('add_button', 'Button', nXB, nY1+190, 95, 12, Label = self.dUI.get('add_button', "#err"), FontDescriptor = xFDTitle, TextColor = 0x005500, Enabled = False)
self.xDelete = self._addWidget('delete_button', 'Button', nXB+100, nY1+190, 100, 12, Label = self.dUI.get('delete_button', "#err"), FontDescriptor = xFDTitle, TextColor = 0x550000)
nY2b = nY1 + 205
# lexicon info section
self._addWidget("lexicon_info_section", 'FixedLine', nXB, nY2b, 200, nHeight, Label = self.dUI.get("lexicon_info_section", "#err"), FontDescriptor = xFDTitle)
self._addWidget("added_entries_label", 'FixedText', nXB, nY2b+10, 90, nHeight, Label = self.dUI.get("added_entries_label", "#err"))
self._addWidget("deleted_entries_label", 'FixedText', nXB, nY2b+20, 90, nHeight, Label = self.dUI.get("deleted_entries_label", "#err"))
self._addWidget("num_of_entries_label1", 'FixedText', nXB, nY2b+30, 90, nHeight, Label = self.dUI.get("num_of_entries_label", "#err"))
+ self.xNumAdded = self._addWidget("added_entries", 'FixedText', nXB+90, nY2b+10, 50, nHeight, Label = "0")
+ self.xNumDeleted = self._addWidget("deleted_entries", 'FixedText', nXB+90, nY2b+20, 50, nHeight, Label = "0")
+ self.xNumLex = self._addWidget("num_of_entries1", 'FixedText', nXB+90, nY2b+30, 50, nHeight, Label = "0")
self.xSave = self._addWidget('save_button', 'Button', nXB+150, nY2b+10, 50, 12, Label = self.dUI.get('save_button', "#err"), FontDescriptor = xFDSubTitle, TextColor = 0x005500)
# dictionary section
self._addWidget("dictionary_section", 'FixedLine', nXB, nY2b+45, 200, nHeight, Label = self.dUI.get("dictionary_section", "#err"), FontDescriptor = xFDTitle)
self._addWidget("save_date_label", 'FixedText', nXB, nY2b+55, 90, nHeight, Label = self.dUI.get("save_date_label", "#err"))
self._addWidget("num_of_entries_label2", 'FixedText', nXB, nY2b+65, 90, nHeight, Label = self.dUI.get("num_of_entries_label", "#err"))
- self.xExport = self._addWidget('export_button', 'Button', nXB+150, nY2b+55, 50, 12, Label = self.dUI.get('export_button', "#err"), FontDescriptor = xFDSubTitle, TextColor = 0x005500)
+ self.xDateDic = self._addWidget("save_date", 'FixedText', nXB+90, nY2b+55, 50, nHeight, Label = "-")
+ self.xNumDic = self._addWidget("num_of_entries2", 'FixedText', nXB+90, nY2b+65, 50, nHeight, Label = "0")
+ #self.xExport = self._addWidget('export_button', 'Button', nXB+150, nY2b+55, 50, 12, Label = self.dUI.get('export_button', "#err"), FontDescriptor = xFDSubTitle, TextColor = 0x005500)
#### Lexicon section
self._addWidget("lexicon_section", 'FixedLine', nXC, nY1, 200, nHeight, Label = self.dUI.get("lexicon_section", "#err"), FontDescriptor = xFDTitle)
self.xGridModelLex = self._addGrid("list_grid_lexicon", nXC, nY1+10, 200, 270, [
{"Title": self.dUI.get("lex_flex", "#err"), "ColumnWidth": 65},
{"Title": self.dUI.get("lex_lemma", "#err"), "ColumnWidth": 50},
{"Title": self.dUI.get("lex_tags", "#err"), "ColumnWidth": 65}
- ])
+ ], SelectionModel = uno.Enum("com.sun.star.view.SelectionType", "MULTI"))
+
+ self.loadLexicon()
# container
self.xContainer = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialog', self.ctx)
self.xContainer.setModel(self.xDialog)
self.xGridControlNew = self.xContainer.getControl('list_grid_gwords')
@@ -264,18 +276,20 @@
self.xContainer.getControl(sName).setActionCommand(sAction)
# XActionListener
def actionPerformed (self, xActionEvent):
try:
- if xActionEvent.ActionCommand == "Add":
+ if xActionEvent.ActionCommand == "Update":
+ self.updateGenWords()
+ elif xActionEvent.ActionCommand == "Add":
self.addToLexicon()
elif xActionEvent.ActionCommand == "Delete":
- pass
+ self.deleteSelectedEntries()
elif xActionEvent.ActionCommand == "Save":
self.saveLexicon()
- elif xActionEvent.ActionCommand == "Update":
- self.updateGenWords()
+ elif xActionEvent.ActionCommand == "Export":
+ self.exportDictionary()
elif xActionEvent.ActionCommand == "Close":
self.xContainer.endExecute()
except:
traceback.print_exc()
@@ -293,21 +307,42 @@
xDialog.run()
except:
traceback.print_exc()
# Code
- @_waitPointer
+ #@_waitPointer (don’t: strange behavior)
def loadLexicon (self):
- pass
+ xChild = self.xSettingNode.getByName("o_fr")
+ sJSON = xChild.getPropertyValue("personal_dic")
+ if sJSON != "":
+ oIBDAWG = ibdawg.IBDAWG(json.loads(sJSON))
+ xGridDataModel = self.xGridModelLex.GridDataModel
+ for i, sLine in enumerate(oIBDAWG.select()):
+ sFlexion, sLemma, sTag = sLine.split("\t")
+ xGridDataModel.addRow(i, (sFlexion, sLemma, sTag))
+ self.xNumAdded.Label = "0"
+ self.xNumDeleted.Label = "0"
+ self.xNumLex.Label = str(i)
+ self.xNumDic.Label = str(i)
+ self.xDateDic.Label = oIBDAWG.sDate
@_waitPointer
def saveLexicon (self):
xGridDataModel = self.xGridModelLex.GridDataModel
lEntry = []
for i in range(xGridDataModel.RowCount):
lEntry.append(xGridDataModel.getRowData(i))
oDAWG = dawg.DAWG(lEntry, "S", "fr", "Français", "Dictionnaire personnel")
+ oJSON = oDAWG.getBinaryAsJSON()
+ xChild = self.xSettingNode.getByName("o_fr")
+ xChild.setPropertyValue("personal_dic", json.dumps(oJSON, ensure_ascii=False))
+ self.xSettingNode.commitChanges()
+ self.xNumAdded.Label = "0"
+ self.xNumDeleted.Label = "0"
+ self.xNumLex.Label = str(oJSON["nEntry"])
+ self.xNumDic.Label = str(oJSON["nEntry"])
+ self.xDateDic.Label = oJSON["sDate"]
def _getRadioValue (self, *args):
for x in args:
if x.State:
return x.HelpText
@@ -492,15 +527,24 @@
nStart = xGridDataModelLex.RowCount
for i in range(xGridDataModelNew.RowCount):
sFlexion, sLemma, sTag = xGridDataModelNew.getRowData(i)
xGridDataModelLex.addRow(nStart + i, (sFlexion, sLemma, sTag))
self.xSave.Enabled = True
+ self.xNumAdded.Label = str(int(self.xNumAdded.Label) + xGridDataModelNew.RowCount)
+ self.xNumLex.Label = str(int(self.xNumLex.Label) + xGridDataModelNew.RowCount)
self._resetWidgets()
@_waitPointer
- def delete (self, xList):
- xGridDataModel = xList.GridDataModel
-
+ def deleteSelectedEntries (self):
+ xGridDataModel = self.xGridModelNew.GridDataModel
+ for i in self.xGridControlNew.getSelectedRows():
+ xGridDataModel.removeRow(i)
+ xGridDataModel = self.xGridModelLex.GridDataModel
+ nSelectedEntries = len(self.xGridControlLex.getSelectedRows())
+ for i in self.xGridControlLex.getSelectedRows():
+ xGridDataModel.removeRow(i)
+ self.xNumDeleted.Label = str(int(self.xNumDeleted.Label) + nSelectedEntries)
+ self.xNumLex.Label = str(xGridDataModel.RowCount)
#g_ImplementationHelper = unohelper.ImplementationHelper()
#g_ImplementationHelper.addImplementation(LexiconEditor, 'net.grammalecte.LexiconEditor', ('com.sun.star.task.Job',))