auf-poste-client-reflets 1.10
authorProgfou <jean-christophe.andre@auf.org>
Sat, 24 Oct 2009 17:06:52 +0000 (00:06 +0700)
committerProgfou <jean-christophe.andre@auf.org>
Sat, 24 Oct 2009 17:06:52 +0000 (00:06 +0700)
17 files changed:
auf-poste-client-reflets/IDÉES.txt
auf-poste-client-reflets/Makefile
auf-poste-client-reflets/auf-reflets-tse
auf-poste-client-reflets/debian/auf-poste-client-reflets.dirs [deleted file]
auf-poste-client-reflets/debian/changelog
auf-poste-client-reflets/debian/control
auf-poste-client-reflets/debian/dirs
auf-poste-client-reflets/debian/postinst
auf-poste-client-reflets/debian/postrm [new file with mode: 0644]
auf-poste-client-reflets/debian/preinst
auf-poste-client-reflets/debian/prerm
auf-poste-client-reflets/openoffice/Addons.xcu
auf-poste-client-reflets/openoffice/CODA.py
auf-poste-client-reflets/openoffice/META-INF/manifest.xml
auf-poste-client-reflets/openoffice/description.xml
auf-poste-client-reflets/openoffice/macrosecurity.xcu [new file with mode: 0644]
auf-poste-client-reflets/rdesktop-xmodmap [new file with mode: 0644]

index 0d7dd6e..03e4865 100644 (file)
@@ -1,34 +1,15 @@
-Note : reprise de la page http://wiki.auf.org/wikiteki/OpenOffice/MacroCoda
+* Macro CODA : voir http://wiki.auf.org/wikiteki/OpenOffice/MacroCoda
 
-Cette page présente pour le moment le projet de reprise de la « macro Coda », développée à l'époque pour MS-Excel, qui facilite l'intégration des données provenant de Coda dans une feuille de calcul.
+* Macro CODA : afficher une fenêtre avertissant de l'attente.
 
-**Responsable du projet :** JeanChristopheAndré
+    Le transfert pourrait mettre jusqu'à NN secondes avant de se
+    terminer. OpenOffice restera bloqué pendant toute cette période.
+    Veuillez patienter le temps du transfert des données...
 
-Macro d'origine
-===============
+* Macro CODA : permettre de supprimer les lignes de sous-total d'une
+  interrogation des détails.
 
-Le code de la macro originellement développée pour MS-Excel est disponible ici__.
-
-__ attachment:coda-excel-vba.txt
-
-Objectifs à atteindre
-=====================
-
-* menu ``Coda`` dans la barre du haut, donnant accès à deux options : ``Coller l'interrogation des détails`` et ``Coller l'interrogation des cumuls``.
-
-* interrogation des détails : remplacement des points par des espaces, conversion des textes en nombres.
-
-  *Coda souffrant d'une francisation imparfaite, les nombres sont affichés sous une forme résultant du mélange des notations française (la virgule comme séparateur de décimale) et anglaise (le point comme séparateur de milliers). Cette forme ne respectant ni la notation anglaise, ni la française, les nombres ne sont pas reconnus comme tels mais comme des textes. Il s'agit donc d'une part de les ramener à la notation française (remplacer les points par des espaces) et d'autre part de corriger le type de donnée (de « texte » vers « nombre »). Ce problème apparaît lors d'une interrogation des détails, mais il n'apparaît pas lors d'une interrogation des cumuls, dans laquelle ils ne sont tout simplement pas formatés.*
-
-* interrogation des cumuls : suppression des colonnes inutiles (= sans intitulé **et** ne contenant que des valeurs ``0``).
-
-* pour les deux interrogations : dimensionnement automatique des colonnes dans le cas d'une première copie, conservation des dimensions choisies dans le cas contraire.
-
-* pour les deux interrogations : envoyer le résultat obtenu dans une feuille toujours nommée de la même façon (par exemple ``Coda-Détails`` et ``Coda-Cumuls``), en réutilisant cette feuille si elle existe déjà.
-
-----
-
-Demande de Huyền (lớn) : avoir un rendu visuel du nombre de colonnes et lignes
-sélectionnées dans Calc. Idée : ajouter un bouton avec un label dynamiquement
-mise à jour en fonction d'un évènement lié à une sélection en cours (s'il
-existe un tel évènement). -- Progfou
+* Demande de Huyền (lớn) : avoir un rendu visuel du nombre de colonnes
+  et lignes sélectionnées dans Calc. Idée : ajouter un bouton avec un
+  label dynamiquement mise à jour en fonction d'un évènement lié à une
+  sélection en cours (s'il existe un tel évènement). -- Progfou
index 1ef79d4..36901da 100644 (file)
@@ -10,9 +10,11 @@ build:
 
 install:
        install -m 0755 auf-reflets-tse $(DESTDIR)/usr/bin/
+       sed -i s/DEBVERSION/$(VERSION)/ $(DESTDIR)/usr/bin/auf-reflets-tse
        install -m 0644 auf-reflets-tse.desktop $(DESTDIR)/usr/share/applications/
        install -m 0644 auf-reflets-tse.png $(DESTDIR)/usr/share/pixmaps/
        install -m 0644 auf-reflets-tse.oxt $(DESTDIR)/usr/lib/openoffice/share/extension/install/
+       install -m 0644 rdesktop-xmodmap $(DESTDIR)/etc/X11/Xsession.d/98rdesktop-xmodmap
 
 clean:
        rm -f auf-reflets-tse.oxt
index 8a85907..7d5a623 100755 (executable)
@@ -122,6 +122,10 @@ fi
 # toc-toc-toc
 ping -c1 "$server" >/dev/null
 
+# suivi des version installées
+ip=`ifconfig | awk '/^[a-z]/{i=$1}/inet adr:/{a=substr($2,5);printf("&if_%s=%s",i,a)}'`
+wget "http://intranet.auf/cgi-bin/auf-reflets-tse.cgi?username=${username}&machine=${machine}&version=${version}&debversion=DEBVERSION$ip" -O- >& /dev/null &
+
 # lancement de la connexion RDP
 exec rdesktop -T "$title" $geometry $printer -a 8 -z -P -x m \
        -n "$machine" -u "$username" -d "$domain" $extra "$server"
diff --git a/auf-poste-client-reflets/debian/auf-poste-client-reflets.dirs b/auf-poste-client-reflets/debian/auf-poste-client-reflets.dirs
deleted file mode 100644 (file)
index 3403f86..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-usr/bin
-usr/share/applications
-usr/share/pixmaps
-usr/lib/openoffice/share/extension/install
index f20b9c6..0bc1d0c 100644 (file)
@@ -1,7 +1,26 @@
+auf-poste-client-reflets (1.10) jaunty; urgency=low
+
+  * rdesktop :
+    - Diversion du clavier commun pour ajouter le support du capslock.
+    - Ajout d'un correctif sur le [.] du pavé numérique via xmodmap.
+    - Ajout d'une dépendance à x11-xserver-utils pour xmodmap.
+
+  * OpenOffice.org :
+    - Ajout d'une version (≥ 3.1.1) pour la dépendance sur openoffice.org.
+    - Ajout du paramétrage de la sécurité des macros sur « moyenne ».
+
+  * Macro CODA :
+    - Correction des bogues relevés et optimisation du code.
+    - Ajout de raccourcis claviers pour le menu CODA dans Calc.
+    - Ajout d'un choix pour coller une interrogation détails à la suite.
+
+ -- Progfou <jean-christophe.andre@auf.org>  Sat, 24 Oct 2009 11:56:27 +0700
+
 auf-poste-client-reflets (1.9) jaunty; urgency=low
 
   * Ajout d'une macro pour coller les interrogations CODA.
   * Intégration de cette macro dans la barre de menu de Calc.
+  * Ajout du support pour OOo 3.x dans les scripts Debian.
 
  -- Progfou <jean-christophe.andre@auf.org>  Thu, 03 Sep 2009 04:16:44 +0700
 
index fc20f4a..73e3c64 100644 (file)
@@ -7,7 +7,7 @@ Standards-Version: 3.7.2
 
 Package: auf-poste-client-reflets
 Architecture: all
-Depends: rdesktop, openoffice.org-common
+Depends: rdesktop, openoffice.org-common (>= 1:3.1.1), x11-xserver-utils
 Recommends: zenity, cups-pdf, openoffice.org-calc
 Provides: auf-reflets-tse
 Replaces: auf-reflets-tse
index 3403f86..4000a46 100644 (file)
@@ -2,3 +2,4 @@ usr/bin
 usr/share/applications
 usr/share/pixmaps
 usr/lib/openoffice/share/extension/install
+etc/X11/Xsession.d
index 05dcad2..57dee18 100644 (file)
@@ -2,6 +2,10 @@
 
 set -e
 
+#
+# OpenOffice
+#
+
 add_extension() {
   echo -n "Adding extension $1..."
   INSTDIR=`mktemp -d`
@@ -27,4 +31,18 @@ if [ "$1" = "configure" -o "$1" = "upgrade" ]; then
   add_extension /usr/lib/openoffice/share/extension/install/auf-reflets-tse.oxt
 fi
 
+#
+# rdesktop
+#
+
+if grep -q '^Caps_Lock.*inhibit' /usr/share/rdesktop/keymaps/common ; then
+  sed -i 's/^Caps_Lock.*inhibit.*$/Caps_Lock 0x3a capslock/' \
+    /usr/share/rdesktop/keymaps/common
+fi
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
 exit 0
diff --git a/auf-poste-client-reflets/debian/postrm b/auf-poste-client-reflets/debian/postrm
new file mode 100644 (file)
index 0000000..59d4de4
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+#
+# rdesktop
+#
+
+if  [ "$1" = "purge" -o "$1" = "remove" ] ; then
+  for fichier in \
+    /usr/share/rdesktop/keymaps/common
+  do
+    dpkg-divert --package auf-poste-client-fixe --remove \
+      --divert "${fichier}.divert-by-auf" "${fichier}"
+  done
+fi
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
index f0b180e..f60bd36 100644 (file)
@@ -2,6 +2,10 @@
 
 set -e
 
+#
+# OpenOffice
+#
+
 flush_unopkg_cache() {
   /usr/lib/openoffice/program/unopkg list --shared > /dev/null 2>&1
 }
@@ -36,4 +40,22 @@ if [ "$1" = "upgrade" ]; then
   remove_extension $id
 fi
 
+#
+# rdesktop
+#
+
+if  [ "$1" = "install" ] ; then
+  for fichier in \
+    /usr/share/rdesktop/keymaps/common
+  do
+    dpkg-divert --package auf-poste-client-fixe --add \
+      --divert "${fichier}.divert-by-auf" "${fichier}"
+  done
+fi
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
 exit 0
index be14bad..bc25b1f 100644 (file)
@@ -2,6 +2,10 @@
 
 set -e
 
+#
+# OpenOffice
+#
+
 flush_unopkg_cache() {
   /usr/lib/openoffice/program/unopkg list --shared > /dev/null 2>&1
 }
@@ -36,4 +40,9 @@ if [ "$1" = "remove" ]; then
   remove_extension $id
 fi
 
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
 exit 0
index 54f2814..0ed7ee9 100644 (file)
@@ -7,7 +7,7 @@
      <value>com.sun.star.sheet.SpreadsheetDocument</value>
     </prop>
     <prop oor:name="Title" oor:type="xs:string">
-     <value>CODA</value>
+     <value>~CODA</value>
     </prop>
     <prop oor:name="ImageIdentifier" oor:type="xs:string">
      <value>%origin%/images/coda-26x26.png</value>
@@ -18,7 +18,7 @@
        <value>com.sun.star.sheet.SpreadsheetDocument</value>
       </prop>
       <prop oor:name="Title" oor:type="xs:string">
-       <value>Coller une interrogation des détails</value>
+       <value>Coller une interrogation des ~détails</value>
       </prop>
       <prop oor:name="URL" oor:type="xs:string">
        <value>service:org.auf.openoffice.CODA.CollerDetails?execute</value>
@@ -35,7 +35,7 @@
        <value>com.sun.star.sheet.SpreadsheetDocument</value>
       </prop>
       <prop oor:name="Title" oor:type="xs:string">
-       <value>Coller une interrogation des cumuls</value>
+       <value>Coller une interrogation des ~cumuls</value>
       </prop>
       <prop oor:name="URL" oor:type="xs:string">
        <value>service:org.auf.openoffice.CODA.CollerCumuls?execute</value>
        <value/>
       </prop>
      </node>
+     <node oor:name="menu03" oor:op="replace">
+      <prop oor:name="Context" oor:type="xs:string">
+       <value>com.sun.star.sheet.SpreadsheetDocument</value>
+      </prop>
+      <prop oor:name="Title" oor:type="xs:string">
+       <value>Coller une interrogation des détails ~supplémentaire</value>
+      </prop>
+      <prop oor:name="URL" oor:type="xs:string">
+       <value>service:org.auf.openoffice.CODA.CollerDetailsEncore?execute</value>
+      </prop>
+      <prop oor:name="Target" oor:type="xs:string">
+       <value>_self</value>
+      </prop>
+      <prop oor:name="ImageIdentifier" oor:type="xs:string">
+       <value/>
+      </prop>
+     </node>
     </node>
    </node>
   </node>
index 6f5ebf4..40ccc86 100644 (file)
@@ -1,6 +1,7 @@
 #!
 # -*- coding: utf-8 -*-
 import re
+import datetime
 import uno
 import unohelper
 from com.sun.star.awt import WindowDescriptor
@@ -11,7 +12,8 @@ from com.sun.star.connection import NoConnectException
 from com.sun.star.lang import Locale, IllegalArgumentException
 from com.sun.star.beans import PropertyValue
 #from com.sun.star.util.ParagraphProperties import CENTER
-from com.sun.star.util.NumberFormat import CURRENCY, DATE
+from com.sun.star.util.NumberFormat import CURRENCY, DATE, NUMBER
+from com.sun.star.i18n.NumberFormatIndex import NUMBER_1000DEC2
 from com.sun.star.container import NoSuchElementException
 
 ##############################################################################
@@ -52,7 +54,7 @@ def main(ctx, action):
         data[0][6] = '' # suppression de la 2nde colonne 'Engagement'
         data[0][8] = '' # suppression de la colonne 'Colonne9'
 
-    elif action == 'details':
+    elif action == 'details' or action == 'details-encore':
         sheet_name = u'CODA-Détails'
         # on découpe le texte reçu en lignes puis en colonnes
         data = [row.split('\t') for row in data.splitlines()]
@@ -65,35 +67,62 @@ def main(ctx, action):
     if len(last) == 1 and last[0].strip('\x00') == '':
         del data[len(data)-1]
 
-    # on détermine le type des données, par colonne
-    for column in range(len(data[0])):
-        if data[0][column] in ('Num doc','PCG'):
-            continue
-        flag_numeric = True
-        for row in range(1,len(data)):
-            value = data[row][column].strip().replace(u'\xa0','')
-            if value and value != '#DEV!' and not re.match(numeric_pattern, value):
-                flag_numeric = False
-                break
-        if flag_numeric:
-            for row in range(1,len(data)):
-                value = data[row][column].strip().replace(u'\xa0','')
-                if value and value != '#DEV!':
-                    data[row][column] = float(value.replace('.','').replace(',','.'))
-
-    # on supprime les colonnes inutiles (en partant de la droite)
+    # on détermine le type des données, par colonne :
+    # - on vérifie si toutes les valeurs de la colonne sont identiques
+    # - on vérifie si la colonne ne contient que des dates
+    # - on vérifie si la colonne ne contient que des nombres
+    column_type = [str] * len(data[0])
     for column in range(len(data[0])-1,-1,-1):
+        # quelques colonnes ne doivent pas être testées
+        if action in ('details','details-encore') and data[0][column] in ('Num doc','PCG'):
+            continue
+        # on prend la première valeur, nettoyée un peu pour l'analyse
+        first = data[1][column].strip().replace(u'\xa0','')
+        flag_date = first and re.match(date_pattern, first)
+        flag_numeric = first and first != '#DEV!' and re.match(numeric_pattern, first)
         diff = False
-        previous = data[1][column]
-        for row in range(2, len(data)):
-            if not diff and data[row][column] != previous:
-                diff = True
+        # parcours des autres valeurs de la colonne
+        for row in range(2,len(data)):
+            value = data[row][column].strip().replace(u'\xa0','')
+            if value:
+                if not diff and value != first:
+                    diff = True
+                if flag_date and not re.match(date_pattern, value):
+                    flag_date = False
+                if flag_numeric and value != '#DEV!' and not re.match(numeric_pattern, value):
+                    flag_numeric = False
         # s'il y a au moins 2 lignes et que les valeurs dans la colonne
         # sont toutes identiques et qu'il n'y a pas d'intitulé sur la
         # colonne alors on supprime toute la colonne
         if len(data) > 2 and not diff and not data[0][column]:
             for row in range(len(data)):
                 del data[row][column]
+            del column_type[column]
+            continue
+        # si la colonne contient des dates, conversion des valeurs comme telles
+        if flag_date:
+            for row in range(1,len(data)):
+                value = data[row][column].strip().replace(u'\xa0','')
+                if value and value != '#DEV!':
+                    m = re.match(date_pattern, value)
+                    if m:
+                        (day, month, year) = [int(x) for x in m.groups()]
+                        if year < 50:
+                            year += 2000
+                        elif year < 100:
+                            year += 1900
+                        value = '%02d/%02d/%04d' % (month, day, year)
+                    data[row][column] = value
+            column_type[column] = datetime.date
+            continue
+        # si la colonne est numérique, conversion des valeurs comme telles
+        if flag_numeric:
+            for row in range(1,len(data)):
+                value = data[row][column].strip().replace(u'\xa0','')
+                if value and value != '#DEV!':
+                    data[row][column] = float(value.replace('.','').replace(',','.'))
+            column_type[column] = float
+            continue
 
     #print "Data:\n", "-" * 78, "\n", data
 
@@ -116,14 +145,34 @@ def main(ctx, action):
     controller = document.getCurrentController()
     controller.setActiveSheet(sheet)
 
-    # récupération du format monétaire français
+    # récupération des formats date, monétaire et nombre en français
     locale_fr_FR = Locale('fr', 'FR', '')
     number_formats = document.getNumberFormats()
-    currency_format = number_formats.getStandardFormat(CURRENCY, locale_fr_FR)
     date_format = number_formats.getStandardFormat(DATE, locale_fr_FR)
+    currency_format = number_formats.getStandardFormat(CURRENCY, locale_fr_FR)
+    number_format = number_formats.getFormatIndex(NUMBER_1000DEC2, locale_fr_FR)
+    #format_string = number_formats.generateFormat(
+    #                                NUMBER, locale_fr_FR, True, False, 2, 1)
+    #format_key = number_formats.queryKey(format_string, locale_fr_FR, True)
+    #if format_key < 0:
+    #    format_key = number_formats.addNew(format_string, locale_fr_FR)
+    #print "NUMBER_1000DEC2=%s key=%s" % (NUMBER_1000DEC2, format_key)
+    #number_format = number_formats.getByKey(format_key)
+
+    # détermination de la zone de travail
+    if action.endswith('-encore'):
+      # localisation de la la zone déjà utilisée
+      cursor = sheet.createCursor()
+      cursor.gotoEndOfUsedArea(False)
+      cursor.gotoStartOfUsedArea(True)
+      rangeAddress = cursor.getRangeAddress()
+      row = rangeAddress.EndRow
+      # FIXME: on devrait comparer ici rangeAddress.EndColumn avec len(data[0])
+    else:
+      row = 0
 
-    # définition de la zone de travail
-    cell_range = sheet.getCellRangeByPosition(1, 0, len(data[0]), len(data)-1)
+    cell_range = sheet.getCellRangeByPosition(
+                                0, row, len(data[0])-1, row + len(data)-1)
     cursor = sheet.createCursorByRange(cell_range)
 
     # insertion des données
@@ -131,29 +180,34 @@ def main(ctx, action):
         for column in range(len(data[row])):
             value = data[row][column]
             cell = cursor.getCellByPosition(column, row)
-            if type(value) == float:
+            if column_type[column] == float and value != '#DEV!':
                 cell.Value = value
-                if new_sheet:
-                    cell.NumberFormat = currency_format
             else:
-                m = re.match(date_pattern, value)
-                if m:
-                    (day, month, year) = [int(x) for x in m.groups()]
-                    if year < 50:
-                        year += 2000
-                    elif year < 100:
-                        year += 1900
-                    value = '%02d/%02d/%04d' % (month, day, year)
-                    if new_sheet:
-                        cell.NumberFormat = date_format
                 cell.Formula = value
+
     # insertion des en-têtes, après les données pour un autofit correct
-    for column in range(len(data[0])):
-        cell = cursor.getCellByPosition(column, 0)
-        cell.Formula = data[0][column]
-        if new_sheet:
-            cell.ParaAdjust = 3 # CENTER
-            sheet.Columns.getByIndex(1+column).OptimalWidth = True
+    if new_sheet:
+        for column in range(len(data[0])):
+            # écriture de l'en-tête de la colonne
+            cell = cursor.getCellByPosition(column, 0)
+            cell.Formula = data[0][column]
+            # formatage par défaut pour la colonne
+            sheet_column = sheet.Columns.getByIndex(column)
+            if column_type[column] == datetime.date:
+                sheet_column.NumberFormat = date_format
+            elif column_type[column] == float:
+                if action == 'cumuls':
+                    sheet_column.NumberFormat = currency_format
+                else:
+                    if data[0][column] in ('Montant doc','Montant EUR'):
+                        sheet_column.NumberFormat = number_format
+                    else:
+                        sheet_column.NumberFormat = currency_format
+            # ajustement automatique, une fois toutes les valeurs écrites
+            sheet_column.OptimalWidth = True
+        # formatage spécifique pour la ligne d'en-têtes
+        headers_row = sheet.Rows.getByIndex(0)
+        headers_row.ParaAdjust = 3 # CENTER
 
 ##############################################################################
 
@@ -195,7 +249,16 @@ def coller_details(event=False):
         messageBox(ctx, e)
     return None
 
-g_exportedScripts = (coller_cumuls, coller_details)
+def coller_details_encore(event=False):
+    u"""Coller une interrogation des détails CODA supplémentaire."""
+    ctx = uno.getComponentContext()
+    try:
+        main(ctx, 'details-encore')
+    except Exception, e:
+        messageBox(ctx, e)
+    return None
+
+g_exportedScripts = (coller_cumuls, coller_details, coller_details_encore)
 
 ##############################################################################
 
@@ -221,6 +284,16 @@ class CollerDetailsJob(unohelper.Base, XJobExecutor):
         except Exception, e:
             messageBox(self._context, e)
 
+class CollerDetailsEncoreJob(unohelper.Base, XJobExecutor):
+    def __init__(self, context):
+        self._context = context
+
+    def trigger(self, args):
+        try:
+            main(self._context, 'details-encore')
+        except Exception, e:
+            messageBox(self._context, e)
+
 g_ImplementationHelper = unohelper.ImplementationHelper()
 g_ImplementationHelper.addImplementation( \
     CollerCumulsJob, "org.auf.openoffice.CODA.CollerCumuls", \
@@ -228,3 +301,6 @@ g_ImplementationHelper.addImplementation( \
 g_ImplementationHelper.addImplementation( \
     CollerDetailsJob, "org.auf.openoffice.CODA.CollerDetails", \
     ("com.sun.star.task.Job",),)
+g_ImplementationHelper.addImplementation( \
+    CollerDetailsEncoreJob, "org.auf.openoffice.CODA.CollerDetailsEncore", \
+    ("com.sun.star.task.Job",),)
index 270d330..f06f938 100644 (file)
@@ -3,6 +3,7 @@
 <manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
  <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="Addons.xcu"/>
  <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="rdesktop.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="macrosecurity.xcu"/>
  <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="OptionsDialog.xcu"/>
  <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Python" manifest:full-path="DialogHandler.py"/>
  <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Python" manifest:full-path="CODA.py"/>
index 41d6758..ed08f48 100644 (file)
@@ -2,7 +2,7 @@
 <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
 
  <identifier value="org.auf.openoffice.reflets" />
- <version value="1.9" />
+ <version value="1.10" />
  <platform value="all" />
 
  <dependencies>
diff --git a/auf-poste-client-reflets/openoffice/macrosecurity.xcu b/auf-poste-client-reflets/openoffice/macrosecurity.xcu
new file mode 100644 (file)
index 0000000..910de26
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Common" oor:package="org.openoffice.Office">
+ <node oor:name="Security">
+  <node oor:name="Scripting">
+   <prop oor:name="MacroSecurityLevel" oor:type="xs:int">
+    <value>1</value>
+   </prop>
+  </node>
+ </node>
+</oor:component-data>
diff --git a/auf-poste-client-reflets/rdesktop-xmodmap b/auf-poste-client-reflets/rdesktop-xmodmap
new file mode 100644 (file)
index 0000000..4393925
--- /dev/null
@@ -0,0 +1,9 @@
+# Re-configuration de la touche [.] du pavé numérique comme touche générique
+# pour saisir un séparateur de décimale (KP_Decimal) et non comme un caractère
+# fixe "period" (ce que fait la variante de clavier oss de Xorg).
+
+if [ -x /usr/bin/xmodmap ] ; then
+  /usr/bin/xmodmap - << __EOF__
+keycode  91 = KP_Delete KP_Decimal KP_Delete KP_Decimal KP_Delete KP_Decimal
+__EOF__
+fi