[Libreoffice-commits] .: Branch 'feature/gsoc2011_wizards' - wizards/com

Xisco Fauli xfauli at kemper.freedesktop.org
Sat Jun 18 06:49:34 PDT 2011


 wizards/com/sun/star/wizards/common/Helper.py          |   63 ----
 wizards/com/sun/star/wizards/common/NumberFormatter.py |  232 +++++++++++++++++
 wizards/com/sun/star/wizards/text/TextDocument.py      |   32 +-
 3 files changed, 258 insertions(+), 69 deletions(-)

New commits:
commit fcffa0809350131a254c3e05eddbf35b3d626d8d
Author: Xisco Fauli <anistenis at gmail.com>
Date:   Sat Jun 18 15:45:57 2011 +0200

    Set current data to the file

diff --git a/wizards/com/sun/star/wizards/common/Helper.py b/wizards/com/sun/star/wizards/common/Helper.py
index 5e52a0c..d1ebdfc 100644
--- a/wizards/com/sun/star/wizards/common/Helper.py
+++ b/wizards/com/sun/star/wizards/common/Helper.py
@@ -1,13 +1,13 @@
 import uno
-import locale
+import calendar
 import traceback
+from datetime import date as DateTime
 from com.sun.star.uno import Exception as UnoException
 from com.sun.star.uno import RuntimeException
+from NumberFormatter import NumberFormatter
 
 class Helper(object):
 
-    DAY_IN_MILLIS = (24 * 60 * 60 * 1000)
-
     def convertUnoDatetoInteger(self, DateValue):
         oCal = java.util.Calendar.getInstance()
         oCal.set(DateValue.Year, DateValue.Month, DateValue.Day)
@@ -165,16 +165,13 @@ class Helper(object):
 
     class DateUtils(object):
 
-        def __init__(self, xmsf, docMSF):
-            defaults = docMSF.createInstance("com.sun.star.text.Defaults")
+        def __init__(self, xmsf, document):
+            defaults = document.createInstance("com.sun.star.text.Defaults")
             l = Helper.getUnoStructValue(defaults, "CharLocale")
-            jl = locale.setlocale(l.Language, l.Country, l.Variant)
-            self.calendar = Calendar.getInstance(jl)
             self.formatSupplier = document
             formatSettings = self.formatSupplier.getNumberFormatSettings()
             date = Helper.getUnoPropertyValue(formatSettings, "NullDate")
-            self.calendar.set(date.Year, date.Month - 1, date.Day)
-            self.docNullTime = getTimeInMillis()
+            self.calendar = DateTime(date.Year, date.Month, date.Day)
             self.formatter = NumberFormatter.createNumberFormatter(xmsf,
                 self.formatSupplier)
 
@@ -187,56 +184,12 @@ class Helper(object):
             return NumberFormatter.getNumberFormatterKey(
                 self.formatSupplier, format)
 
-        def getFormatter(self):
-            return self.formatter
-
-        def getTimeInMillis(self):
-            dDate = self.calendar.getTime()
-            return dDate.getTime()
-
         '''
         @param date a VCL date in form of 20041231
         @return a document relative date
         '''
 
-        def getDocumentDateAsDouble(self, date):
-            self.calendar.clear()
-            self.calendar.set(
-                date / 10000, (date % 10000) / 100 - 1, date % 100)
-            date1 = getTimeInMillis()
-            '''
-            docNullTime and date1 are in millis, but
-            I need a day...
-            '''
-
-            daysDiff = (date1 - self.docNullTime) / DAY_IN_MILLIS + 1
-            return daysDiff
-
-        def getDocumentDateAsDouble(self, date):
-            return getDocumentDateAsDouble(
-                date.Year * 10000 + date.Month * 100 + date.Day)
-
-        def getDocumentDateAsDouble(self, javaTimeInMillis):
-            self.calendar.clear()
-            JavaTools.setTimeInMillis(self.calendar, javaTimeInMillis)
-            date1 = getTimeInMillis()
-
-            '''
-            docNullTime and date1 are in millis, but
-            I need a day...
-            '''
-
-            daysDiff = (date1 - self.docNullTime) / DAY_IN_MILLIS + 1
-            return daysDiff
-
         def format(self, formatIndex, date):
+            difference =  date - self.calendar
             return self.formatter.convertNumberToString(formatIndex,
-                getDocumentDateAsDouble(date))
-
-        def format(self, formatIndex, date):
-            return self.formatter.convertNumberToString(formatIndex,
-                getDocumentDateAsDouble(date))
-
-        def format(self, formatIndex, javaTimeInMillis):
-            return self.formatter.convertNumberToString(formatIndex,
-                getDocumentDateAsDouble(javaTimeInMillis))
+                difference.days)
diff --git a/wizards/com/sun/star/wizards/common/NumberFormatter.py b/wizards/com/sun/star/wizards/common/NumberFormatter.py
new file mode 100644
index 0000000..eff9f16
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/NumberFormatter.py
@@ -0,0 +1,232 @@
+import traceback
+from com.sun.star.lang import Locale
+from com.sun.star.util.NumberFormat import DATE, LOGICAL, DATETIME, TEXT, NUMBER
+
+class NumberFormatter(object):
+
+    def __init__(self, _xNumberFormatsSupplier, _aLocale, _xMSF=None):
+        self.iDateFormatKey = -1
+        self.iDateTimeFormatKey = -1
+        self.iNumberFormatKey = -1
+        self.iTextFormatKey = -1
+        self.iTimeFormatKey = -1
+        self.iLogicalFormatKey = -1
+        self.bNullDateCorrectionIsDefined = False
+        self.aLocale = _aLocale
+        if _xMSF is not None:
+            self.xNumberFormatter = _xMSF.createInstance(
+                "com.sun.star.util.NumberFormatter")
+        self.xNumberFormats = _xNumberFormatsSupplier.NumberFormats
+        self.xNumberFormatSettings = \
+            _xNumberFormatsSupplier.NumberFormatSettings
+        self.xNumberFormatter.attachNumberFormatsSupplier(
+            _xNumberFormatsSupplier)
+
+    '''
+    @param _xMSF
+    @param _xNumberFormatsSupplier
+    @return
+    @throws Exception
+    @deprecated
+    '''
+
+    @classmethod
+    def createNumberFormatter(self, _xMSF, _xNumberFormatsSupplier):
+        oNumberFormatter = _xMSF.createInstance(
+            "com.sun.star.util.NumberFormatter")
+        oNumberFormatter.attachNumberFormatsSupplier(_xNumberFormatsSupplier)
+        return oNumberFormatter
+
+    '''
+    gives a key to pass to a NumberFormat object. <br/>
+    example: <br/>
+    <pre>
+    XNumberFormatsSupplier nsf =
+        (XNumberFormatsSupplier)UnoRuntime.queryInterface(...,document)
+    int key = Desktop.getNumberFormatterKey(
+        nsf, ...star.i18n.NumberFormatIndex.DATE...)
+    XNumberFormatter nf = Desktop.createNumberFormatter(xmsf, nsf);
+    nf.convertNumberToString( key, 1972 );
+    </pre>
+    @param numberFormatsSupplier
+    @param type - a constant out of i18n.NumberFormatIndex enumeration.
+    @return a key to use with a util.NumberFormat instance.
+    '''
+
+    @classmethod
+    def getNumberFormatterKey(self, numberFormatsSupplier, Type):
+        return numberFormatsSupplier.NumberFormats.getFormatIndex(
+            Type, Locale())
+
+    def convertNumberToString(self, _nkey, _dblValue, _xNumberFormatter=None):
+        print "yepa"
+        if _xNumberFormatter is None:
+            return self.xNumberFormatter.convertNumberToString(
+                _nkey, _dblValue)
+        else:
+            return _xNumberFormatter.convertNumberToString(_nkey, _dblValue)
+
+    def convertStringToNumber(self, _nkey, _sString):
+        return self.xNumberFormatter.convertStringToNumber(_nkey, _sString)
+
+    '''
+    @param dateCorrection The lDateCorrection to set.
+    '''
+
+    def setNullDateCorrection(self, dateCorrection):
+        self.lDateCorrection = dateCorrection
+
+    def defineNumberFormat(self, _FormatString):
+        try:
+            NewFormatKey = self.xNumberFormats.queryKey(
+                _FormatString, self.aLocale, True)
+            if NewFormatKey is -1:
+                NewFormatKey = self.xNumberFormats.addNew(
+                    _FormatString, self.aLocale)
+
+            return NewFormatKey
+        except Exception, e:
+            traceback.print_exc()
+            return -1
+
+    '''
+    returns a numberformat for a FormatString.
+    @param _FormatString
+    @param _aLocale
+    @return
+    '''
+
+    def defineNumberFormat(self, _FormatString, _aLocale):
+        try:
+            NewFormatKey = self.xNumberFormats.queryKey(
+                _FormatString, _aLocale, True)
+            if NewFormatKey == -1:
+                NewFormatKey = self.xNumberFormats.addNew(
+                    _FormatString, _aLocale)
+
+            return NewFormatKey
+        except Exception, e:
+            traceback.print_exc()
+            return -1
+
+    def setNumberFormat(self, _xFormatObject, _FormatKey, _oNumberFormatter):
+        try:
+            xNumberFormat = _oNumberFormatter.xNumberFormats.getByKey(
+                _FormatKey)
+            FormatString = str(Helper.getUnoPropertyValue(
+                xNumberFormat, "FormatString"))
+            oLocale = Helper.getUnoPropertyValue(xNumberFormat, "Locale")
+            NewFormatKey = defineNumberFormat(FormatString, oLocale)
+            _xFormatObject.setPropertyValue(
+                "FormatsSupplier",
+                _oNumberFormatter.xNumberFormatter.getNumberFormatsSupplier())
+            if _xFormatObject.getPropertySetInfo().hasPropertyByName(
+                    "NumberFormat"):
+                _xFormatObject.setPropertyValue("NumberFormat", NewFormatKey)
+            elif _xFormatObject.getPropertySetInfo().hasPropertyByName(
+                    "FormatKey"):
+                _xFormatObject.setPropertyValue("FormatKey", NewFormatKey)
+            else:
+                # TODO: throws a exception in a try catch environment, very helpful?
+                raise Exception
+
+        except Exception, exception:
+            traceback.print_exc()
+
+    def getNullDateCorrection(self):
+        if not self.bNullDateCorrectionIsDefined:
+            dNullDate = Helper.getUnoStructValue(
+                self.xNumberFormatSettings, "NullDate")
+            lNullDate = Helper.convertUnoDatetoInteger(dNullDate)
+            oCal = java.util.Calendar.getInstance()
+            oCal.set(1900, 1, 1)
+            dTime = oCal.getTime()
+            lTime = dTime.getTime()
+            lDBNullDate = lTime / (3600 * 24000)
+            self.lDateCorrection = lDBNullDate - lNullDate
+            return self.lDateCorrection
+        else:
+            return self.lDateCorrection
+
+    def setBooleanReportDisplayNumberFormat(self):
+        FormatString = "[=1]" + str(9745) + ";[=0]" + str(58480) + ";0"
+        self.iLogicalFormatKey = self.xNumberFormats.queryKey(
+            FormatString, self.aLocale, True)
+        try:
+            if self.iLogicalFormatKey == -1:
+                self.iLogicalFormatKey = self.xNumberFormats.addNew(
+                    FormatString, self.aLocale)
+
+        except Exception, e:
+            #MalformedNumberFormat
+            traceback.print_exc()
+            self.iLogicalFormatKey = self.xNumberFormats.getStandardFormat(
+                NumberFormat.LOGICAL, self.aLocale)
+
+        return self.iLogicalFormatKey
+
+    '''
+    @return Returns the iDateFormatKey.
+    '''
+
+    def getDateFormatKey(self):
+        if self.iDateFormatKey == -1:
+            self.iDateFormatKey = self.xNumberFormats.getStandardFormat(
+                NumberFormat.DATE, self.aLocale)
+
+        return self.iDateFormatKey
+
+    '''
+    @return Returns the iDateTimeFormatKey.
+    '''
+
+    def getDateTimeFormatKey(self):
+        if self.iDateTimeFormatKey == -1:
+            self.iDateTimeFormatKey = self.xNumberFormats.getStandardFormat(
+                NumberFormat.DATETIME, self.aLocale)
+
+        return self.iDateTimeFormatKey
+
+    '''
+    @return Returns the iLogicalFormatKey.
+    '''
+
+    def getLogicalFormatKey(self):
+        if self.iLogicalFormatKey == -1:
+            self.iLogicalFormatKey = self.xNumberFormats.getStandardFormat(
+                NumberFormat.LOGICAL, self.aLocale)
+
+        return self.iLogicalFormatKey
+
+    '''
+    @return Returns the iNumberFormatKey.
+    '''
+
+    def getNumberFormatKey(self):
+        if self.iNumberFormatKey == -1:
+            self.iNumberFormatKey = self.xNumberFormats.getStandardFormat(
+                NumberFormat.NUMBER, self.aLocale)
+
+        return self.iNumberFormatKey
+
+    '''
+    @return Returns the iTextFormatKey.
+    '''
+
+    def getTextFormatKey(self):
+        if self.iTextFormatKey == -1:
+            self.iTextFormatKey = self.xNumberFormats.getStandardFormat(
+                NumberFormat.TEXT, self.aLocale)
+
+        return self.iTextFormatKey
+
+    '''
+    @return Returns the iTimeFormatKey.
+    '''
+
+    def getTimeFormatKey(self):
+        if self.iTimeFormatKey == -1:
+            self.iTimeFormatKey = self.xNumberFormats.getStandardFormat(
+                NumberFormat.TIME, self.aLocale)
+
+        return self.iTimeFormatKey
diff --git a/wizards/com/sun/star/wizards/text/TextDocument.py b/wizards/com/sun/star/wizards/text/TextDocument.py
index c6ff211..c432ee7 100644
--- a/wizards/com/sun/star/wizards/text/TextDocument.py
+++ b/wizards/com/sun/star/wizards/text/TextDocument.py
@@ -11,7 +11,9 @@ from com.sun.star.container import NoSuchElementException
 from com.sun.star.lang import WrappedTargetException
 from common.Configuration import Configuration
 import time
+from datetime import date as dateTimeObject
 from com.sun.star.util import DateTime
+from com.sun.star.i18n.NumberFormatIndex import DATE_SYS_DDMMYY
 
 class TextDocument(object):
 
@@ -208,22 +210,24 @@ class TextDocument(object):
             fullname = str(gn) + " " + str(sn)
             currentDate = DateTime()
             now = time.localtime(time.time())
-            currentDate.Day = time.strftime("%d", now)
-            currentDate.Year = time.strftime("%Y", now)
-            currentDate.Month = time.strftime("%m", now)
+            year = time.strftime("%Y", now)
+            month = time.strftime("%m", now)
+            day = time.strftime("%d", now)
+            currentDate.Day = day
+            currentDate.Year = year
+            currentDate.Month = month
+            dateObject = dateTimeObject(int(year), int(month), int(day))
             du = Helper.DateUtils(self.xMSF, self.xTextDocument)
-            ff = du.getFormat(NumberFormatIndex.DATE_SYS_DDMMYY)
-            myDate = du.format(ff, currentDate)
-            xDocProps2 = self.xTextDocument.getDocumentProperties()
-            xDocProps2.setAuthor(fullname)
-            xDocProps2.setModifiedBy(fullname)
-            description = xDocProps2.getDescription()
+            ff = du.getFormat(DATE_SYS_DDMMYY)
+            myDate = du.format(ff, dateObject)
+            xDocProps2 = self.xTextDocument.DocumentProperties
+            xDocProps2.Author = fullname
+            xDocProps2.ModifiedBy = fullname
+            description = xDocProps2.Description
             description = description + " " + TemplateDescription
-            description = JavaTools.replaceSubString(
-                description, WizardName, "<wizard_name>")
-            description = JavaTools.replaceSubString(
-                description, myDate, "<current_date>")
-            xDocProps2.setDescription(description)
+            description = description.replace("<wizard_name>", WizardName)
+            description = description.replace("<current_date>", myDate)
+            xDocProps2.Description = description
         except NoSuchElementException, e:
             # TODO Auto-generated catch block
             traceback.print_exc()


More information about the Libreoffice-commits mailing list