Grammalecte  Diff

Differences From Artifact [4af54009de]:

To Artifact [f2a4dbbf81]:


1
2
3
4
5
6
7

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







+







# Dictionary Options
# by Olivier R.
# License: MPL 2

import unohelper
import uno
import traceback
import time

import helpers
import do_strings

from com.sun.star.task import XJobExecutor
from com.sun.star.awt import XActionListener
from com.sun.star.beans import PropertyValue
33
34
35
36
37
38
39
40
41

42
43

44
45
46
47
48
49
50
34
35
36
37
38
39
40


41


42
43
44
45
46
47
48
49







-
-
+
-
-
+







            setattr(xWidget, k, w)
        self.xDialog.insertByName(name, xWidget)
        return xWidget

    def run (self, sLang):
        dUI = do_strings.getUI(sLang)

        # what is the current dictionary
        xSettings = helpers.getConfigSetting("/org.openoffice.Office.Linguistic/ServiceManager/Dictionaries/HunSpellDic_fr", False)
        self.xSettingNode = helpers.getConfigSetting("/org.openoffice.Lightproof_grammalecte/Other/", True)
        xLocations = xSettings.getByName("Locations")
        

        # dialog
        self.xDialog = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialogModel', self.ctx)
        self.xDialog.Width = 200
        self.xDialog.Height = 255
        self.xDialog.Title = dUI.get('title', "#title#")
        xWindowSize = helpers.getWindowSize()
        self.xDialog.PositionX = int((xWindowSize.Width / 2) - (self.xDialog.Width / 2))
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
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







-
+




-
+




-
+









+
+


















+

-
-
-
+
+
-
-
-
+
+
-
-
-
+

-





-

-
-
+
+
-
-
+
-














+
+
+
+
+
+
+
+
+
+
+



        nY3 = nY2 + 70

        nWidth = self.xDialog.Width - 20
        nHeight = 10

        # Spell checker section
        self._addWidget("spelling_section", 'FixedLine', nX, nY1, nWidth, nHeight, Label = dUI.get("spelling_section", "#err"), FontDescriptor = xFDTitle)
        self.xActivateMain = self._addWidget('activate_main', 'CheckBox', nX, nY1+15, nWidth, nHeight, Label = dUI.get('activate_main', "#err"), State = True)
        self.xGraphspell = self._addWidget('activate_main', 'CheckBox', nX, nY1+15, nWidth, nHeight, Label = dUI.get('activate_main', "#err"))
        self._addWidget('activate_main_descr', 'FixedText', nX, nY1+25, nWidth, nHeight*2, Label = dUI.get('activate_main_descr', "#err"), MultiLine = True)

        # Spell suggestion engine section
        self._addWidget("suggestion_section", 'FixedLine', nX, nY2, nWidth, nHeight, Label = dUI.get("suggestion_section", "#err"), FontDescriptor = xFDTitle)
        self.xActivateSugg = self._addWidget('activate_spell_sugg', 'CheckBox', nX, nY2+15, nWidth, nHeight, Label = dUI.get('activate_spell_sugg', "#err"), State = True)
        self.xGraphspellSugg = self._addWidget('activate_spell_sugg', 'CheckBox', nX, nY2+15, nWidth, nHeight, Label = dUI.get('activate_spell_sugg', "#err"))
        self._addWidget('activate_spell_sugg_descr', 'FixedText', nX, nY2+25, nWidth, nHeight*4, Label = dUI.get('activate_spell_sugg_descr', "#err"), MultiLine = True)

        # Personal dictionary section
        self._addWidget("personal_section", 'FixedLine', nX, nY3, nWidth, nHeight, Label = dUI.get("personal_section", "#err"), FontDescriptor = xFDTitle)
        self.xActivatePersonnal = self._addWidget('activate_personal', 'CheckBox', nX, nY3+15, nWidth, nHeight, Label = dUI.get('activate_personal', "#err"), State = True)
        self.xPersonalDic = self._addWidget('activate_personal', 'CheckBox', nX, nY3+15, nWidth, nHeight, Label = dUI.get('activate_personal', "#err"))
        self._addWidget('activate_personnal_descr', 'FixedText', nX, nY3+25, nWidth, nHeight*3, Label = dUI.get('activate_personal_descr', "#err"), MultiLine = True)
        self._addWidget('import_personal', 'FixedText', nX, nY3+55, nWidth-60, nHeight, Label = dUI.get('import_personal', "#err"), FontDescriptor = xFDSubTitle)
        self.xMsg = self._addWidget('msg', 'FixedText', nX, nY3+65, nWidth-50, nHeight, Label = "[néant]")
        self._addWidget('import_button', 'Button', self.xDialog.Width-50, nY3+65, 40, 10, Label = dUI.get('import_button', "#err"), TextColor = 0x005500)
        self._addWidget('create_dictionary', 'FixedText', nX, nY3+75, nWidth, nHeight*2, Label = dUI.get('create_dictionary', "#err"), MultiLine = True)

        # Button
        self._addWidget('apply_button', 'Button', self.xDialog.Width-120, self.xDialog.Height-25, 50, 14, Label = dUI.get('apply_button', "#err"), FontDescriptor = xFDTitle, TextColor = 0x005500)
        self._addWidget('cancel_button', 'Button', self.xDialog.Width-60, self.xDialog.Height-25, 50, 14, Label = dUI.get('cancel_button', "#err"), FontDescriptor = xFDTitle, TextColor = 0x550000)

        self._loadOptions()

        # container
        self.xContainer = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialog', self.ctx)
        self.xContainer.setModel(self.xDialog)
        self.xContainer.getControl('apply_button').addActionListener(self)
        self.xContainer.getControl('apply_button').setActionCommand('Apply')
        self.xContainer.getControl('import_button').addActionListener(self)
        self.xContainer.getControl('import_button').setActionCommand('Import')
        self.xContainer.getControl('cancel_button').addActionListener(self)
        self.xContainer.getControl('cancel_button').setActionCommand('Cancel')
        self.xContainer.setVisible(False)
        toolkit = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.ExtToolkit', self.ctx)
        self.xContainer.createPeer(toolkit, None)
        self.xContainer.execute()

    # XActionListener
    def actionPerformed (self, xActionEvent):
        try:
            xChild = self.xSettingNode.getByName("o_fr")
            if xActionEvent.ActionCommand == 'Apply':
                if False:
                    # Modify the registry
                    xSettings = helpers.getConfigSetting("/org.openoffice.Office.Linguistic/ServiceManager/Dictionaries/HunSpellDic_fr", True)
                xChild.setPropertyValue("graphspell", self.xGraphspell.State)
                xChild.setPropertyValue("graphspellsugg", self.xGraphspellSugg.State)
                    xLocations = xSettings.getByName("Locations")
                    v1 = xLocations[0].replace(self.sCurrentDic, self.sSelectedDic)
                    v2 = xLocations[1].replace(self.sCurrentDic, self.sSelectedDic)
                #xChild.setPropertyValue("extended_dic", self.xExtendedDic.State)
                xChild.setPropertyValue("personal_dic", self.xPersonalDic.State)
                    #xSettings.replaceByName("Locations", xLocations)  # doesn't work, see line below
                    uno.invoke(xSettings, "replaceByName", ("Locations", uno.Any("[]string", (v1, v2))))
                    xSettings.commitChanges()
                self.xSettingNode.commitChanges()
            elif xActionEvent.ActionCommand == "Import":
                #xFilePicker = uno.createUnoService("com.sun.star.ui.dialogs.FilePicker")
                xFilePicker = self.xSvMgr.createInstanceWithContext('com.sun.star.ui.dialogs.SystemFilePicker', self.ctx)
                xFilePicker.appendFilter("Supported files", "*.json; *.bdic")
                #xFilePicker.setDisplayDirectory("")
                #xFilePicker.setMultiSelectionMode(True)
                nResult = xFilePicker.execute()
                print(nResult)
                if nResult == 1:
                    print("two")
                    lFile = xFilePicker.getSelectedFiles()
                    pass
                    #lFile = xFilePicker.getSelectedFiles()
                    print("one")
                    lFile = xFilePicker.getFiles()
                    #lFile = xFilePicker.getFiles()
                    print(lFile)
            else:
                pass
            self.xContainer.endExecute()
        except:
            traceback.print_exc()
    
    # XJobExecutor
    def trigger (self, args):
        try:
            dialog = DictOptions(self.ctx)
            dialog.run()
        except:
            traceback.print_exc()

    def _loadOptions (self):
        print("load options")
        try:
            xChild = self.xSettingNode.getByName("o_fr")
            self.xGraphspell.State = xChild.getPropertyValue("graphspell")
            self.xGraphspellSugg.State = xChild.getPropertyValue("graphspellsugg")
            #self.xExtendedDic.State = xChild.getPropertyValue("extended_dic")
            self.xPersonalDic.State = xChild.getPropertyValue("personal_dic")
        except:
            traceback.print_exc()


#g_ImplementationHelper = unohelper.ImplementationHelper()
#g_ImplementationHelper.addImplementation(DictOptions, 'net.grammalecte.graphspell.DictOptions', ('com.sun.star.task.Job',))