DELETED gc_lang/fr/oxt/Dictionnaires/DictionarySwitcher.py Index: gc_lang/fr/oxt/Dictionnaires/DictionarySwitcher.py ================================================================== --- gc_lang/fr/oxt/Dictionnaires/DictionarySwitcher.py +++ gc_lang/fr/oxt/Dictionnaires/DictionarySwitcher.py @@ -1,174 +0,0 @@ -# French Dictionary Switcher -# by Olivier R. -# License: MPL 2 - -import unohelper -import uno -import re -import traceback - -import helpers -import ds_strings - -from com.sun.star.task import XJobExecutor -from com.sun.star.awt import XActionListener -from com.sun.star.beans import PropertyValue - - -class FrenchDictionarySwitcher (unohelper.Base, XActionListener, XJobExecutor): - def __init__ (self, ctx): - self.ctx = ctx - self.xSvMgr = self.ctx.ServiceManager - self.xContainer = None - self.xDialog = None - self.xRB_m = None - self.xRB_c = None - self.xRB_r = None - self.xRB_f = None - self.sCurrentDic = '' - self.sSelectedDic = '' - - 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 - xWidget.PositionY = y - xWidget.Width = w - xWidget.Height = h - for k, w in kwargs.items(): - setattr(xWidget, k, w) - self.xDialog.insertByName(name, xWidget) - return xWidget - - def run (self, sLang): - dUI = ds_strings.getUI(sLang) - - # what is the current dictionary - xSettings = helpers.getConfigSetting("/org.openoffice.Office.Linguistic/ServiceManager/Dictionaries/HunSpellDic_fr", False) - xLocations = xSettings.getByName("Locations") - m = re.search(r"fr-(\w*)\.(?:dic|aff)", xLocations[0]) - self.sCurrentDic = m.group(1) - - # dialog - self.xDialog = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialogModel', self.ctx) - self.xDialog.Width = 200 - self.xDialog.Height = 290 - self.xDialog.Title = dUI.get('title', "#title#") - xWindowSize = helpers.getWindowSize() - self.xDialog.PositionX = int((xWindowSize.Width / 2) - (self.xDialog.Width / 2)) - self.xDialog.PositionY = int((xWindowSize.Height / 2) - (self.xDialog.Height / 2)) - - # xWidgets - padding = 10 - hspace = 60 - posY1 = 20; posY2 = posY1 + hspace; posY3 = posY2 + hspace; posY4 = posY3 + hspace; posY5 = posY4 + hspace + 10; - nLblWidth = 170 - nLblHeight = 20 - nDescWidth = 170 - nDescHeight = 40 - - xFD1 = uno.createUnoStruct("com.sun.star.awt.FontDescriptor") - xFD1.Height = 12 - xFD1.Name = "Verdana" - - xFD2 = uno.createUnoStruct("com.sun.star.awt.FontDescriptor") - xFD2.Height = 11 - xFD2.Name = "Verdana" - - xFD3 = uno.createUnoStruct("com.sun.star.awt.FontDescriptor") - xFD3.Height = 10 - xFD3.Weight = uno.getConstantByName("com.sun.star.awt.FontWeight.BOLD") - xFD3.Name = "Verdana" - - gbm = self._addWidget('groupbox', 'GroupBox', 5, 5, 190, 260, Label = dUI.get('choose', "#choose#"), FontDescriptor = xFD1, FontRelief = 1, TextColor = 0xAA2200) - - # Note: the only way to group RadioButtons is to create them successively - rbm_m = self._addWidget('rb-moderne', 'RadioButton', padding, posY1, nLblWidth, nLblHeight, Label = dUI.get('moderne', "#moderne#"), FontDescriptor = xFD2, FontRelief = 1, TextColor = 0x0022AA) - self.xRB_m = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlRadioButton', self.ctx) - self.xRB_m.setModel(rbm_m) - rbm_c = self._addWidget('rb-classique', 'RadioButton', padding, posY2, nLblWidth, nLblHeight, Label = dUI.get('classique', "#classique#"), FontDescriptor = xFD2, FontRelief = 1, TextColor = 0x0022AA) - self.xRB_c = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlRadioButton', self.ctx) - self.xRB_c.setModel(rbm_c) - rbm_r = self._addWidget('rb-reforme1990', 'RadioButton', padding, posY3, nLblWidth, nLblHeight, Label = dUI.get('reforme1990', "#reforme1990#"), FontDescriptor = xFD2, FontRelief = 1, TextColor = 0x0022AA) - self.xRB_r = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlRadioButton', self.ctx) - self.xRB_r.setModel(rbm_r) - rbm_t = self._addWidget('rb-toutesvariantes', 'RadioButton', padding, posY4, nLblWidth, nLblHeight, Label = dUI.get('toutesvariantes', "#toutesvariantes#"), FontDescriptor = xFD2, FontRelief = 1, TextColor = 0x0022AA) - self.xRB_t = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlRadioButton', self.ctx) - self.xRB_t.setModel(rbm_t) - - self._addWidget('label_m', 'FixedText', 20, posY1+10, nDescWidth, nDescHeight, Label = dUI.get('descModern', "#descModern#"), MultiLine = True) - self._addWidget('label_c', 'FixedText', 20, posY2+10, nDescWidth, nDescHeight, Label = dUI.get('descClassic', "#descClassic#"), MultiLine = True) - self._addWidget('label_r', 'FixedText', 20, posY3+10, nDescWidth, nDescHeight, Label = dUI.get('descReform', "#descReform#"), MultiLine = True) - self._addWidget('label_t', 'FixedText', 20, posY4+10, nDescWidth, nDescHeight, Label = dUI.get('descAllvar', "#descAllvar#"), MultiLine = True) - - if self.sCurrentDic: - self.setRadioButton() - sMsgLabel = dUI.get('restart', "#restart#") - bButtonActive = True - else: - sMsgLabel = dUI.get('error', "#error#") - bButtonActive = False - - label_info = self._addWidget('label_info', 'FixedText', 10, posY4+50, 180, 10, Label = sMsgLabel, TextColor = 0xAA2200, MultiLine = True) - button = self._addWidget('select', 'Button', padding+40, posY5, 100, 14, Label = dUI.get('select', "#select#"), FontDescriptor = xFD3, TextColor = 0x004400, Enabled = bButtonActive) - - # container - self.xContainer = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialog', self.ctx) - self.xContainer.setModel(self.xDialog) - self.xContainer.getControl('select').addActionListener(self) - self.xContainer.setVisible(False) - toolkit = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.ExtToolkit', self.ctx) - self.xContainer.createPeer(toolkit, None) - self.xContainer.execute() - - def setRadioButton (self): - print(self.sCurrentDic) - if self.sCurrentDic == 'moderne': - self.xRB_m.State = 1 - elif self.sCurrentDic == 'classique': - self.xRB_c.State = 1 - elif self.sCurrentDic == 'reforme1990': - self.xRB_r.State = 1 - elif self.sCurrentDic == 'toutesvariantes': - self.xRB_t.State = 1 - else: - pass - - # XActionListener - def actionPerformed (self, actionEvent): - try: - if self.xRB_m.getState(): - self.sSelectedDic = 'moderne' - elif self.xRB_c.getState(): - self.sSelectedDic = 'classique' - elif self.xRB_r.getState(): - self.sSelectedDic = 'reforme1990' - elif self.xRB_t.getState(): - self.sSelectedDic = 'toutesvariantes' - else: - # no dictionary selected - pass - if self.sSelectedDic and self.sSelectedDic != self.sCurrentDic : - # Modify the registry - xSettings = helpers.getConfigSetting("/org.openoffice.Office.Linguistic/ServiceManager/Dictionaries/HunSpellDic_fr", True) - xLocations = xSettings.getByName("Locations") - v1 = xLocations[0].replace(self.sCurrentDic, self.sSelectedDic) - v2 = xLocations[1].replace(self.sCurrentDic, self.sSelectedDic) - #xSettings.replaceByName("Locations", xLocations) # doesn't work, see line below - uno.invoke(xSettings, "replaceByName", ("Locations", uno.Any("[]string", (v1, v2)))) - xSettings.commitChanges() - self.xContainer.endExecute() - except: - traceback.print_exc() - - # XJobExecutor - def trigger (self, args): - try: - dialog = FrenchDictionarySwitcher(self.ctx) - dialog.run() - except: - traceback.print_exc() - - -#g_ImplementationHelper = unohelper.ImplementationHelper() -#g_ImplementationHelper.addImplementation(FrenchDictionarySwitcher, 'dicollecte.FrenchDictionarySwitcher', ('com.sun.star.task.Job',)) DELETED gc_lang/fr/oxt/Dictionnaires/ds_strings.py Index: gc_lang/fr/oxt/Dictionnaires/ds_strings.py ================================================================== --- gc_lang/fr/oxt/Dictionnaires/ds_strings.py +++ gc_lang/fr/oxt/Dictionnaires/ds_strings.py @@ -1,47 +0,0 @@ -# -*- encoding: UTF-8 -*- - -def getUI (sLang): - if sLang in dStrings: - return dStrings[sLang] - return dStrings["fr"] - -dStrings = { - "fr": { - "title": u"Orthographe française", - "choose": u"Choisissez un dictionnaire", - "select": u"Utiliser ce dictionnaire", - - "moderne": u"“Moderne”", - "classique": u"“Classique” (recommandé)", - "reforme1990": u"“Réforme 1990”", - "toutesvariantes": u"“Toutes variantes”", - - "descModern": u"Ce dictionnaire propose l’orthographe telle qu’elle est écrite aujourd’hui le plus couramment. C’est le dictionnaire recommandé si le français n’est pas votre langue maternelle ou si vous ne désirez qu’une seule graphie correcte par mot.", - "descClassic": u"Il s’agit du dictionnaire “Moderne”, avec des graphies classiques en sus, certaines encore communément utilisées, d’autres désuètes. C’est le dictionnaire recommandé si le français est votre langue maternelle.", - "descReform": u"Avec ce dictionnaire, seule l’orthographe réformée est reconnue. Attendu que bon nombre de graphies réformées sont considérées comme erronées par beaucoup, ce dictionnaire est déconseillé. Les graphies passées dans l’usage sont déjà incluses dans le dictionnaire “Moderne”.", - "descAllvar": u"Ce dictionnaire contient les variantes graphiques, classiques, réformées, ainsi que d’autres plus rares encore. Ce dictionnaire est déconseillé à ceux qui ne connaissent pas très bien la langue française.", - - "restart": u"Le changement ne sera effectif qu’après le redémarrage du logiciel.", - "error": u"Erreur : impossible de savoir quel dictionnaire est actif." - }, - "en": { - "title": u"French spelling", - "choose": u"Choose a dictionary", - "select": u"Use this dictionary", - - "moderne": u"“Modern”", - "classique": u"“Classic” (recommended)", - "reforme1990": u"“Reform 1990”", - "toutesvariantes": u"“All variants”", - - "descModern": u"This dictionary offers the French spelling as it is written nowadays most often. This is the recommended dictionary if French is not your mother tongue or if you want only one correct spelling per word.", - "descClassic": u"This is the “Modern” dictionary plus classical spellings, some of them still widely used, others obsolete. This is the recommended dictionary if French is your native language.", - "descReform": u"With this dictionary, only the reformed spelling is recognized. As many of reformed spellings are considered erroneous for many people, this dictionary is unadvised. Reformed spellings commonly used are already included in the “Modern” dictionary.", - "descAllvar": u"This dictionary contains all spelling variants, classical and reformed, and some others even rarer. This dictionary is unadvised for those who don’t know very well the French language.", - - "restart": u"The modification will be effective only after restarting the software.", - "error": u"Error: enable to retrieve information about the current dictionary." - } -} - - DELETED gc_lang/fr/oxt/Dictionnaires/french_flag.png Index: gc_lang/fr/oxt/Dictionnaires/french_flag.png ================================================================== --- gc_lang/fr/oxt/Dictionnaires/french_flag.png +++ gc_lang/fr/oxt/Dictionnaires/french_flag.png cannot compute difference between binary files Index: gc_lang/fr/oxt/addons.xcu ================================================================== --- gc_lang/fr/oxt/addons.xcu +++ gc_lang/fr/oxt/addons.xcu @@ -3,11 +3,11 @@ xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.Office" oor:name="Addons"> - + org.dicollecte.images:Grammalecte @@ -27,11 +27,11 @@ 424D360400000000000036000000280000001000000010000000010020000000000000000000C30E0000C30E00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00640B01FF750D02FF710D02FF720E03FF720800FF734C47FF747B7CFF747272FF727274FF7C7C76FF444469FF000058FF010159FF000059FF00005BFF00004CFF981203FFB51503FFAD1503FFAD1705FFAD0D00FFAE736CFFB0BABBFFB0AEADFFADADAFFFBBBBB2FF67679FFF000087FF020289FF000087FF00008BFF000073FF9C1203FFBC1704FFB51604FFB21705FFB10E00FFB3766FFFB4BFC0FFB4B2B1FFB1B1B3FFC0C0B7FF6969A3FF000089FF02028BFF00008AFF00008EFF000075FFA31403FFC51904FFC01804FFC01905FFBB0E00FFBC7C75FFBEC9CAFFBEBCBBFFBABABDFFCACAC0FF6F6FACFF000090FF020293FF000091FF000095FF00007CFFAB1504FFCE1A05FFC81905FFCA1B07FFC91000FFC7837BFFC6D2D3FFC5C2C2FFC2C2C5FFD3D3C8FF7373B3FF000098FF02029BFF000099FF00009DFF000082FFB21604FFD61B05FFD11A05FFD21C07FFD21100FFD58C84FFD4E0E2FFD0CDCDFFCBCBCDFFDCDCD1FF7A7ABBFF00009CFF0202A0FF00009EFF0000A2FF000087FFBA1704FFE01C05FFDA1B05FFDB1D07FFDA1100FFDD9289FFDFECEDFFDEDBDAFFD7D7D9FFE6E6DAFF7E7EC3FF0000A3FF0303A7FF0000A5FF0000A9FF00008CFFC11704FFE91D05FFE31C05FFE31E07FFE31200FFE6978FFFE8F5F7FFE8E5E4FFE4E4E7FFF5F5E9FF8585CCFF0000ACFF0303AFFF0000AEFF0000B2FF000093FFC91804FFF21E05FFEC1D05FFED1F08FFEC1300FFEF9E95FFF1FFFFFFF1EEEDFFEDEDF0FFFFFFF5FF8E8EDAFF0000B6FF0303B8FF0000B4FF0000B7FF000098FFCE1B07FFF82108FFF22008FFF3220BFFF31600FFF4A197FFF4FFFFFFF4F1F0FFF0F0F3FFFFFFF7FF8F8FDFFF0000BEFF0303C1FF0000C0FF0000C3FF0000A0FFD82916FFFF321BFFFE311AFFFF331CFFFF270EFFFFAEA5FFFFFFFFFFFFFCFCFFFBFBFEFFFFFFFFFF9A9AEEFF0000D3FF0C0CD5FF0909D4FF0909DAFF0808B4FFB74F44FFDD5F52FFD75D50FFD85E51FFD85749FFD8A8A2FFD8E0E1FFD8D6D6FFD6D6D8FFE2E2DAFF9B9BCFFF3C3CC1FF4646C2FF4444C1FF4545C5FF3A3AA4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - + ~Grammalecte @@ -216,13 +216,14 @@ - - - - + + .uno:ToolsMenu\.uno:LanguageMenu\.uno:Hyphenate @@ -276,17 +277,17 @@ service:net.grammalecte.AppLauncher?DS _self - + - - - + + --> +