[Libreoffice-commits] core.git: Branch 'feature/pyweb-wizard' - 1124 commits - accessibility/inc accessibility/Library_acc.mk accessibility/source android/experimental android/qa apple_remote/inc apple_remote/source autogen.sh avmedia/inc avmedia/Library_avmedia.mk avmedia/source basctl/Library_basctl.mk basctl/Module_basctl.mk basctl/Package_uiconfig.mk basctl/source basctl/UI_basicide.mk basctl/uiconfig basctl/UIConfig_basicide.mk basegfx/inc basegfx/source basegfx/test basic/CppunitTest_basic_coverage.mk basic/CppunitTest_basic_scanner.mk basic/CppunitTest_basic_vba.mk basic/inc basic/Library_sb.mk basic/qa basic/source bean/Library_officebean.mk binaryurp/Library_binaryurp.mk binaryurp/source bin/distro-install-sdk bin/get-bugzilla-attachments-by-mimetype boost/boost.6139.clang.patch boost/boost.6142.warnings.patch.1 boost/boost.wundef.patch.1 boost/UnpackedTarball_boost.mk bridges/inc bridges/Library_cpp_uno.mk bridges/source bridges/test canvas/inc canvas/Library_cairocanvas.mk canv as/Library_directx9canvas.mk canvas/Library_gdipluscanvas.mk canvas/Library_vclcanvas.mk canvas/source chart2/CppunitTest_chart2_importtest.mk chart2/Library_chartcontroller.mk chart2/Library_chartcore.mk chart2/Module_chart2.mk chart2/Package_uiconfig.mk chart2/qa chart2/source chart2/uiconfig chart2/UIConfig_chart2.mk chart2/workbench cli_ure/source clucene/patches clucene/UnpackedTarball_clucene.mk codemaker/Executable_cppumaker.mk codemaker/Executable_javamaker.mk codemaker/inc codemaker/Package_inc.mk codemaker/README codemaker/source codemaker/StaticLibrary_codemaker_cpp.mk codemaker/StaticLibrary_codemaker_java.mk codemaker/StaticLibrary_codemaker.mk comphelper/inc comphelper/Library_comphelper.mk comphelper/Package_inc.mk comphelper/qa comphelper/README comphelper/source compilerplugins/clang compilerplugins/Makefile-clang.mk config_host/config_features.h.in config_host/config_global.h.in config_host/config_oox.h.in config_host.mk.in configmgr/Library_configmgr.mk co nfigmgr/qa configmgr/source configure.ac connectivity/CppunitTest_connectivity_ado.mk connectivity/CppunitTest_connectivity_commontools.mk connectivity/CppunitTest_connectivity_mork.mk connectivity/inc connectivity/Library_dbtools.mk connectivity/Library_flat.mk connectivity/Library_hsqldb.mk connectivity/Module_connectivity.mk connectivity/source connectivity/workben cppcanvas/inc cppcanvas/Library_cppcanvas.mk cppcanvas/source cppuhelper/source cppunit/Module_cppunit.mk cppu/qa cpputools/source crashrep/source cui/AllLangResTarget_cui.mk cui/Library_cui.mk cui/Module_cui.mk cui/source cui/uiconfig cui/UIConfig_cui.mk cui/UI_cui.mk dbaccess/CppunitTest_dbaccess_macros_test.mk dbaccess/inc dbaccess/Library_dba.mk dbaccess/Library_dbu.mk dbaccess/Module_dbaccess.mk dbaccess/Package_uiconfig.mk dbaccess/qa dbaccess/source dbaccess/uiconfig dbaccess/UIConfig_dbaccess.mk dbaccess/UIConfig_dbapp.mk dbaccess/UIConfig_dbbrowser.mk dbaccess/UIConfig_dbquery.mk dbaccess/UIConfig_dbre lation.mk dbaccess/UIConfig_dbtable.mk dbaccess/UIConfig_dbtdata.mk dbaccess/UI_dbaccess.mk desktop/Executable_unopkg.com.mk desktop/Executable_unopkg.mk desktop/inc desktop/Library_deploymentgui.mk desktop/Library_deploymentmisc.mk desktop/Library_deployment.mk desktop/Library_migrationoo2.mk desktop/Library_sofficeapp.mk desktop/Library_unopkgapp.mk desktop/Module_desktop.mk desktop/Pagein_common.mk desktop/qa desktop/source desktop/StaticLibrary_winextendloaderenv.mk desktop/test desktop/UIConfig_deployment.mk desktop/UI_deployment.mk desktop/unx desktop/win32 distro-configs/LibreOfficeLinux.conf download.lst drawinglayer/inc drawinglayer/Library_drawinglayer.mk drawinglayer/source dtrans/source dtrans/StaticLibrary_dtobj.mk dtrans/test editeng/CppunitTest_editeng_borderline.mk editeng/CppunitTest_editeng_core.mk editeng/CppunitTest_editeng_lookuptree.mk editeng/inc editeng/Library_editeng.mk editeng/qa editeng/source embeddedobj/source embeddedobj/test embedserv/Library_ inprocserv.mk embedserv/source eventattacher/source expat/StaticLibrary_expat.mk extensions/Library_abp.mk extensions/Library_bib.mk extensions/Library_dbp.mk extensions/Library_pcr.mk extensions/Library_res.mk extensions/Library_scn.mk extensions/Library_updatecheckui.mk extensions/Module_extensions.mk extensions/Package_uiconfig.mk extensions/qa extensions/source extensions/StaticLibrary_plugcon.mk extensions/test extensions/UIConfig_sbibliography.mk extensions/workben external/Module_external.mk external/Package_mingw_dlls.mk external/Package_mingw_gccdlls.mk extras/Module_extras.mk extras/Package_autocorr.mk extras/Package_databasebiblio.mk extras/Package_database.mk extras/Package_palettes.mk extras/source extras/Zip_autocorr.mk extras/Zip_databasebiblio.mk extras/Zip_database.mk extras/Zip_palettes.mk fileaccess/source filter/inc filter/Library_eps.mk filter/Library_filterconfig.mk filter/Library_flash.mk filter/Library_graphicfilter.mk filter/Library_pdffilter.mk filt er/Library_svgfilter.mk filter/Library_t602filter.mk filter/Library_xsltdlg.mk filter/Module_filter.mk filter/qa filter/source filter/UIConfig_xsltdlg.mk filter/UI_xsltdlg.mk forms/Library_frm.mk forms/source formula/inc formula/Library_for.mk formula/Library_forui.mk formula/source fpicker/Library_fps_aqua.mk fpicker/Library_fps.mk fpicker/Library_fps_office.mk fpicker/source fpicker/test framework/inc framework/Library_fwe.mk framework/Library_fwi.mk framework/Library_fwk.mk framework/Library_fwl.mk framework/Module_framework.mk framework/Package_uiconfig.mk framework/source framework/uiconfig framework/UIConfig_startmodule.mk .gitignore helpcompiler/Executable_helpindexer.mk helpcompiler/Executable_helplinker.mk helpcompiler/inc helpcompiler/Library_helplinker.mk helpcompiler/source helpcontent2 hunspell/hunspell-wundef.patch.1 hunspell/UnpackedTarball_hunspell.mk hwpfilter/qa hwpfilter/source i18nlangtag/CppunitTest_i18nlangtag_test_languagetag.mk i18nlangtag/inc i18nlan gtag/Library_i18nlangtag.mk i18nlangtag/Makefile i18nlangtag/Module_i18nlangtag.mk i18nlangtag/Package_inc.mk i18nlangtag/qa i18nlangtag/README i18nlangtag/source i18npool/CppunitTest_i18npool_test_languagetag.mk i18npool/CustomTarget_localedata.mk i18npool/inc i18npool/Library_i18nisolang1.mk i18npool/Library_i18npool.mk i18npool/Library_i18nsearch.mk i18npool/Module_i18npool.mk i18npool/Package_inc.mk i18npool/qa i18npool/source i18nutil/inc i18nutil/source icon-themes/crystal icon-themes/galaxy icon-themes/hicontrast icon-themes/human icon-themes/industrial icon-themes/oxygen icon-themes/tango icu/ExternalPackage_icu.mk icu/ExternalProject_icu.mk icu/icu4c.9313.cygwin.patch icu/icu4c.9737.CVE-2013-0900_changesets_32865_32908.patch icu/icu4c-aix.patch icu/icu4c-android.patch icu/icu4c-bsd.patch icu/icu4c-build.patch icu/icu4c-CVE-2013-0900_umutex.patch icu/icu4c-solarisgcc.patch icu/UnpackedTarball_icu.mk idlc/CustomTarget_parser_test.mk idlc/Executable_idlc.mk idlc/inc id lc/source idlc/test idl/inc idl/source instsetoo_native/util ios/CustomTarget_LibreOffice_app.mk ios/CustomTarget_Viewer_app.mk ios/Executable_LibreOffice.mk ios/Executable_Viewer.mk ios/experimental ios/Module_ios.mk io/source ios/qa javaunohelper/source jfreereport/Module_jfreereport.mk jfreereport/Package_jfreereport_version.mk jpeg/patches jpeg/UnpackedTarball_jpeg.mk jurt/com jurt/CustomTarget_test_urp.mk jvmaccess/inc jvmaccess/Module_jvmaccess.mk jvmaccess/source jvmaccess/workbench jvmfwk/distributions jvmfwk/inc jvmfwk/Module_jvmfwk.mk jvmfwk/plugins jvmfwk/source l10ntools/Executable_cfgex.mk l10ntools/Executable_helpex.mk l10ntools/Executable_localize.mk l10ntools/Executable_propex.mk l10ntools/Executable_stringex.mk l10ntools/Executable_transex3.mk l10ntools/Executable_treex.mk l10ntools/Executable_uiex.mk l10ntools/Executable_ulfex.mk l10ntools/inc l10ntools/source l10ntools/StaticLibrary_transex.mk libcdr/ExternalProject_libcdr.mk libcdr/libcdr-0.0.11-encoding. patch libcdr/UnpackedTarball_cdr.mk liblangtag/UnpackedTarball_langtag.mk libmspub/ExternalProject_libmspub.mk Library_merged.mk Library_urelibs.mk libxml2/libxml2-configure.patch libxmlsec/ExternalProject_xmlsec.mk libxmlsec/UnpackedTarball_xmlsec.mk libxmlsec/xmlsec1-1.2.14_old_automake.patch libxslt/ExternalProject_xslt.mk libxslt/libxslt-configure.patch lingucomponent/Library_hyphen.mk lingucomponent/Library_lnth.mk lingucomponent/Library_MacOSXSpell.mk lingucomponent/Library_spell.mk lingucomponent/source lingucomponent/StaticLibrary_ulingu.mk linguistic/inc linguistic/Library_lng.mk linguistic/source linguistic/workben logerrit lotuswordpro/Library_lwpft.mk lotuswordpro/qa lotuswordpro/source m4/mingw.m4 Makefile.in mdds/UnpackedTarball_mdds.mk mysqlc/source np_sdk/inc nss/ExternalProject_nss.mk nss/nsinstall.py odk/config odk/CustomTarget_doxygen.mk odk/CustomTarget_lib.mk odk/CustomTarget_odkcommon.mk odk/docs odk/examples odk/settings odk/util odk/Zip_odkcommon.mk o dk/Zip_odkexamples.mk offapi/com offapi/type_reference offapi/UnoApi_offapi.mk officecfg/registry oovbaapi/ooo oox/inc oox/Library_oox.mk oox/Package_inc.mk oox/source openssl/ExternalProject_openssl.mk package/inc package/source padmin/Library_spa.mk padmin/Module_padmin.mk padmin/source padmin/UIConfig_spa.mk padmin/UI_spa.mk postprocess/CustomTarget_config.mk postprocess/CustomTarget_images.mk postprocess/Module_postprocess.mk postprocess/Package_config.mk postprocess/packconfig postprocess/packimages postprocess/Rdb_services.mk python3/ExternalPackage_python3.mk python3/python-3.3.0-aix.patch.1 pyuno/source README.Code README.cross redland/ExternalPackage_raptor.mk redland/ExternalPackage_rasqal.mk redland/ExternalPackage_redland.mk redland/ExternalProject_raptor.mk redland/ExternalProject_rasqal.mk redland/ExternalProject_redland.mk redland/Library_raptor.mk redland/Library_rasqal.mk redland/Library_rdf.mk redland/LICENSE.txt redland/Module_redland.mk redland/raptor red land/rasqal redland/README redland/redland redland/UnpackedTarball_raptor.mk redland/UnpackedTarball_rasqal.mk redland/UnpackedTarball_redland.mk registry/inc registry/Library_reg.mk registry/Module_registry.mk registry/Package_inc.mk registry/source registry/test registry/tools registry/workben registry/ZipPackage_registry_odk_headers.mk remotebridges/source reportbuilder/java reportdesign/inc reportdesign/Library_rpt.mk reportdesign/Library_rptui.mk reportdesign/Module_reportdesign.mk reportdesign/Package_uiconfig.mk reportdesign/source reportdesign/uiconfig reportdesign/UIConfig_dbreport.mk RepositoryExternal.mk RepositoryFixes.mk Repository.mk RepositoryModule_build.mk RepositoryModule_host.mk ridljar/com ridljar/CustomTarget_javamaker.mk rsc/Executable_rsc.mk rsc/inc rsc/source sal/inc sal/Library_uwinapi.mk sal/osl sal/qa sal/rtl sal/ZipPackage_sal_odk_headers.mk sax/inc sax/Library_expwrap.mk sax/Library_fastsax.mk sax/qa sax/source sax/StaticLibrary_sax_shared.mk sca ddins/Library_analysis.mk scaddins/Library_date.mk scaddins/Library_pricing.mk scaddins/source sc/AllLangResTarget_sc.mk sccomp/Library_solver.mk sccomp/source sc/CppunitTest_sc_annotationobj.mk sc/CppunitTest_sc_annotationshapeobj.mk sc/CppunitTest_sc_annotationsobj.mk sc/CppunitTest_sc_cellrangeobj.mk sc/CppunitTest_sc_chart_regression_test.mk sc/CppunitTest_sc_databaserangeobj.mk sc/CppunitTest_sc_datapilotfieldobj.mk sc/CppunitTest_sc_datapilottableobj.mk sc/CppunitTest_sc_editfieldobj_cell.mk sc/CppunitTest_sc_editfieldobj_header.mk sc/CppunitTest_sc_filters_test.mk sc/CppunitTest_sc_macros_test.mk sc/CppunitTest_sc_modelobj.mk sc/CppunitTest_sc_namedrangeobj.mk sc/CppunitTest_sc_namedrangesobj.mk sc/CppunitTest_sc_outlineobj.mk sc/CppunitTest_sc_rangelst_test.mk sc/CppunitTest_sc_subsequent_export_test.mk sc/CppunitTest_sc_subsequent_filters_test.mk sc/CppunitTest_sc_tableautoformatfield.mk sc/CppunitTest_sc_tablesheetobj.mk sc/CppunitTest_sc_tablesheetsobj.mk sc/Cppun itTest_sc_ucalc.mk sc/CustomTarget_uiconfig.mk sc/inc sc/Library_scfilt.mk sc/Library_sc.mk sc/Library_scui.mk sc/Module_sc.mk scp2/inc scp2/InstallModule_ooo.mk scp2/InstallModule_ure.mk scp2/source sc/Package_uiconfig.mk sc/qa scripting/Library_dlgprov.mk scripting/source sc/source sc/uiconfig sc/UIConfig_scalc.mk sc/UI_scalc.mk sc/util sc/workben sd/CppunitTest_sd_filters_test.mk sd/CppunitTest_sd_regression_test.mk sd/CppunitTest_sd_uimpress.mk sdext/source sdext/StaticLibrary_pdfimport_s.mk sd/inc sd/Library_sdfilt.mk sd/Library_sd.mk sd/Library_sdui.mk sd/Module_sd.mk sd/Package_uiconfig.mk sd/qa sd/README_REMOTE sd/sdi sd/source sd/uiconfig sd/UIConfig_sdraw.mk sd/UIConfig_simpress.mk sd/UI_sdraw.mk sd/UI_simpress.mk sd/workben setup_native/scripts sfx2/inc sfx2/Library_qstart.mk sfx2/Library_sfx.mk sfx2/Module_sfx2.mk sfx2/qa sfx2/sdi sfx2/source sfx2/uiconfig sfx2/UIConfig_sfx.mk sfx2/UI_sfx.mk sfx2/workben shell/Executable_lngconvex.mk shell/Library_ooofilt.mk shel l/Library_ooofilt_x64.mk shell/Library_propertyhdl.mk shell/Library_propertyhdl_x64.mk shell/Library_recentfile.mk shell/Library_shlxthdl.mk shell/Library_shlxthdl_x64.mk shell/source shell/StaticLibrary_shlxthandler_common.mk shell/StaticLibrary_shlxthandler_common_x64.mk shell/StaticLibrary_xmlparser.mk shell/StaticLibrary_xmlparser_x64.mk slideshow/source slideshow/test smoketest/smoketest.cxx solenv/bin solenv/gbuild solenv/gdb solenv/inc soltools/Executable_cpp.mk soltools/Executable_makedepend.mk sot/inc sot/Library_sot.mk sot/qa sot/source starmath/CppunitTest_starmath_qa_cppunit.mk starmath/inc starmath/Library_sm.mk starmath/Module_starmath.mk starmath/Package_uiconfig.mk starmath/qa starmath/source starmath/uiconfig starmath/UIConfig_smath.mk starmath/UI_smath.mk stoc/inc stoc/source stoc/test store/inc store/Library_store.mk store/Module_store.mk store/Package_inc.mk store/source store/workben store/ZipPackage_store_odk_headers.mk svgio/inc svgio/source svl/Cppuni tTest_svl_qa_cppunit.mk svl/CppunitTest_svl_urihelper.mk svl/inc svl/Library_svl.mk svl/qa svl/source svl/unx svtools/AllLangResTarget_svt.mk svtools/Executable_langsupport.mk svtools/inc svtools/langsupport svtools/Library_svt.mk svtools/Module_svtools.mk svtools/Package_inc.mk svtools/source svtools/uiconfig svtools/UIConfig_svt.mk svtools/UI_svt.mk svx/inc svx/Library_svxcore.mk svx/Library_svx.mk svx/Library_textconversiondlgs.mk svx/Module_svx.mk svx/source svx/UIConfig_svx.mk svx/UI_svx.mk svx/workben sw/AllLangResTarget_sw.mk sw/CppunitTest_sw_filters_test.mk sw/CppunitTest_sw_layout_test.mk sw/CppunitTest_sw_macros_test.mk sw/CppunitTest_sw_rtfimport.mk sw/CppunitTest_sw_uwriter.mk sw/inc sw/Library_msword.mk sw/Library_sw.mk sw/Library_swui.mk sw/Library_vbaswobj.mk sw/Module_sw.mk sw/Package_uiconfig.mk sw/PythonTest_sw_unoapi.mk sw/qa sw/README sw/source sw/uiconfig sw/UIConfig_sglobal.mk sw/UIConfig_sweb.mk sw/UIConfig_swform.mk sw/UIConfig_swreport.mk sw/UIConfi g_swriter.mk sw/UIConfig_swxform.mk sw/UI_swriter.mk sysui/CustomTarget_share.mk sysui/desktop sysui/Zip_osxicons.mk test/inc test/Library_subsequenttest.mk test/Library_test.mk test/Module_test.mk test/source testtools/CustomTarget_bridgetest_javamaker.mk testtools/CustomTarget_uno_test.mk testtools/Module_testtools.mk testtools/source toolkit/inc toolkit/Library_tk.mk toolkit/README toolkit/source tools/inc tools/Library_tl.mk tools/Package_inc.mk tools/qa tools/README tools/source tools/StaticLibrary_ooopathutils.mk touch/CustomTarget_touch_javamaker.mk touch/README touch/source tubes/inc tubes/Module_tubes.mk tubes/qa tubes/source tubes/UIConfig_tubes.mk tubes/UI_tubes.mk ucbhelper/inc ucbhelper/source ucb/source ucb/workben udkapi/com udkapi/UnoApi_udkapi.mk UnoControls/source unodevtools/Executable_skeletonmaker.mk unodevtools/inc unodevtools/source unoidl/inc unoidl/source unoil/CustomTarget_javamaker.mk unotest/inc unotest/Module_unotest.mk unotest/source unotools/in c unotools/Library_utl.mk unotools/Package_inc.mk unotools/source unoxml/qa unoxml/source unoxml/test ure/source uui/Library_uui.mk uui/Module_uui.mk uui/source uui/UIConfig_uui.mk uui/UI_uui.mk vbahelper/inc vbahelper/Library_msforms.mk vbahelper/source vcl/AllLangResTarget_vcl.mk vcl/android vcl/aqua vcl/coretext vcl/generic vcl/headless vcl/inc vcl/ios vcl/Library_desktop_detector.mk vcl/Library_vcl.mk vcl/Library_vclplug_gen.mk vcl/Library_vclplug_gtk3.mk vcl/Library_vclplug_gtk.mk vcl/Library_vclplug_kde4.mk vcl/Library_vclplug_kde.mk vcl/Library_vclplug_svp.mk vcl/Library_vclplug_tde.mk vcl/Module_vcl.mk vcl/null vcl/Package_inc.mk vcl/qa vcl/quartz vcl/README vcl/source vcl/StaticLibrary_headless.mk vcl/StaticLibrary_vclmain.mk vcl/test vcl/UIConfig_vcl.mk vcl/UI_vcl.mk vcl/unx vcl/win vcl/workben vigra/UnpackedTarball_vigra.mk wizards/com wizards/Module_wizards.mk wizards/Pyuno_commonwizards.mk wizards/Pyuno_web.mk writerfilter/inc writerfilter/Library_writerfilter.m k writerfilter/qa writerfilter/source writerperfect/StaticLibrary_writerperfect.mk xmlhelp/Library_tvhlp1.mk xmlhelp/Library_ucpchelp1.mk xmlhelp/source xmloff/CppunitTest_xmloff_uxmloff.mk xmloff/inc xmloff/Library_xo.mk xmloff/source xmlreader/inc xmlreader/source xmlscript/source xmlsecurity/inc xmlsecurity/Library_xmlsecurity.mk xmlsecurity/Module_xmlsecurity.mk xmlsecurity/qa xmlsecurity/source xmlsecurity/UIConfig_xmlsec.mk xmlsecurity/UI_xmlsec.mk xmlsecurity/workben xpdf/ExternalProject_xpdf.mk

Javier Fernandez jfernandez at igalia.com
Thu Apr 11 08:22:51 PDT 2013


Rebased ref, commits from common ancestor:
commit 7c1f85825fa377172646122d5465f36497e1eaaf
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Thu Apr 11 09:50:50 2013 +0000

    Replace static methods by instance methods.
    
    Change-Id: I840598bf58ffac9cc596e7f1fe995908699f1819

diff --git a/wizards/com/sun/star/wizards/common/ConfigGroup.py b/wizards/com/sun/star/wizards/common/ConfigGroup.py
index bda4f96..8a55218 100644
--- a/wizards/com/sun/star/wizards/common/ConfigGroup.py
+++ b/wizards/com/sun/star/wizards/common/ConfigGroup.py
@@ -20,6 +20,9 @@ from .Configuration import Configuration
 
 class ConfigGroup(object):
 
+    def __init__(self):
+        self.root = None
+
     def writeConfiguration(self, configurationView, param):
         for name,data in inspect.getmembers(self):
             if name.startswith(param):
@@ -43,9 +46,13 @@ class ConfigGroup(object):
         propertyName = field[len(prefix):]
         child = getattr(self, field)
         if isinstance(child, ConfigGroup):
+            child.setRoot(self.root);
             child.readConfiguration(configView.getByName(propertyName),
                 prefix)
         else:
             value = configView.getByName(propertyName)
             if value is not None:
                 setattr(self,field, value)
+
+    def setRoot(self, newRoot):
+        self.root = newRoot
diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.py b/wizards/com/sun/star/wizards/web/WWD_Events.py
index 8c86802..a465a80 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Events.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Events.py
@@ -151,7 +151,7 @@ class WWD_Events(WWD_Startup):
                 view = Configuration.getNode(sessionToLoad, view)
 
             session = CGSession()
-            session.root = self.settings
+            session.setRoot(self.settings)
             print ("DEBUG !!! loadSession -- reading configuration ...")
             session.readConfiguration(view, CONFIG_READ_PARAM)
             numDocs = session.cp_Content.cp_Documents.getSize()
@@ -986,7 +986,7 @@ class WWD_Events(WWD_Startup):
 
             for i in range(start, len(self.files)):
                 doc = CGDocument()
-                doc.root = self.parent.settings
+                doc.setRoot(self.parent.settings)
 
                 if start == 0:
                     doc.cp_URL = self.files[i]
diff --git a/wizards/com/sun/star/wizards/web/WebConfigSet.py b/wizards/com/sun/star/wizards/web/WebConfigSet.py
index 73b16fb..2845b8e 100644
--- a/wizards/com/sun/star/wizards/web/WebConfigSet.py
+++ b/wizards/com/sun/star/wizards/web/WebConfigSet.py
@@ -108,7 +108,7 @@ class WebConfigSet(ConfigGroup):
                 print ("DEBUG !!! readConfiguration -- name: ", i)
                 try:
                     child = self.childClass()
-                    child.root = self.root
+                    child.setRoot(self.root)
                     child.readConfiguration(
                         configurationView.getByName(i), param)
                     self.add(i, child)
diff --git a/wizards/com/sun/star/wizards/web/data/CGArgument.py b/wizards/com/sun/star/wizards/web/data/CGArgument.py
index ee532de..9a66144 100644
--- a/wizards/com/sun/star/wizards/web/data/CGArgument.py
+++ b/wizards/com/sun/star/wizards/web/data/CGArgument.py
@@ -18,4 +18,6 @@
 from ...common.ConfigGroup import ConfigGroup
 
 class CGArgument(ConfigGroup):
-    cp_Value = str()
+
+    def __init__(self):
+        self.cp_Value = str()
diff --git a/wizards/com/sun/star/wizards/web/data/CGContent.py b/wizards/com/sun/star/wizards/web/data/CGContent.py
index ec89af1..94a668a 100644
--- a/wizards/com/sun/star/wizards/web/data/CGContent.py
+++ b/wizards/com/sun/star/wizards/web/data/CGContent.py
@@ -22,14 +22,12 @@ from .CGDocument import CGDocument
 
 class CGContent(ConfigGroup):
 
-    cp_Index = -1
-    dirName = str()
-    cp_Name = str()
-    cp_Description = str()
-    cp_Contents = None
-    cp_Documents = WebConfigSet(CGDocument)
-
     def __init__(self):
+        self.cp_Index = -1
+        self.dirName = str()
+        self.cp_Name = str()
+        self.cp_Description = str()
+        self.cp_Documents = WebConfigSet(CGDocument)
         self.cp_Contents = WebConfigSet(CGContent)
 
     def createDOM(self, parent):
diff --git a/wizards/com/sun/star/wizards/web/data/CGDesign.py b/wizards/com/sun/star/wizards/web/data/CGDesign.py
index 4887bf7..7e0dff0 100644
--- a/wizards/com/sun/star/wizards/web/data/CGDesign.py
+++ b/wizards/com/sun/star/wizards/web/data/CGDesign.py
@@ -19,21 +19,22 @@ from ...common.ConfigGroup import ConfigGroup
 
 class CGDesign(ConfigGroup):
 
-    cp_Layout = str()
-    cp_Style = str()
-    cp_BackgroundImage = str()
-    cp_IconSet = str()
-    cp_DisplayTitle = bool()
-    cp_DisplayDescription = bool()
-    cp_DisplayAuthor = bool()
-    cp_DisplayCreateDate = bool()
-    cp_DisplayUpdateDate = bool()
-    cp_DisplayFilename = bool()
-    cp_DisplayFileFormat = bool()
-    cp_DisplayFormatIcon = bool()
-    cp_DisplayPages = bool()
-    cp_DisplaySize = bool()
-    cp_OptimizeDisplaySize = int()
+    def __init__(self):
+        self.cp_Layout = str()
+        self.cp_Style = str()
+        self.cp_BackgroundImage = str()
+        self.cp_IconSet = str()
+        self.cp_DisplayTitle = bool()
+        self.cp_DisplayDescription = bool()
+        self.cp_DisplayAuthor = bool()
+        self.cp_DisplayCreateDate = bool()
+        self.cp_DisplayUpdateDate = bool()
+        self.cp_DisplayFilename = bool()
+        self.cp_DisplayFileFormat = bool()
+        self.cp_DisplayFormatIcon = bool()
+        self.cp_DisplayPages = bool()
+        self.cp_DisplaySize = bool()
+        self.cp_OptimizeDisplaySize = int()
 
     def createDOM(self, parent):
         return XMLHelper.addElement(parent, "design", (0,), (0,))
diff --git a/wizards/com/sun/star/wizards/web/data/CGDocument.py b/wizards/com/sun/star/wizards/web/data/CGDocument.py
index 4defd5f..f2cf753 100644
--- a/wizards/com/sun/star/wizards/web/data/CGDocument.py
+++ b/wizards/com/sun/star/wizards/web/data/CGDocument.py
@@ -77,7 +77,7 @@ class CGDocument(ConfigGroup):
         self.validate(xmsf, task)
 
     def getSettings(self):
-        return ConfigGroup.root
+        return self.root
 
     '''
     the task will advance 5 times during validate.
@@ -88,11 +88,11 @@ class CGDocument(ConfigGroup):
 
     def validate(self, xmsf, task):
         print ("WARNING !!! VALIDATING DOCUMENT ....")
-        if not self.root.getFileAccess(xmsf).exists(self.cp_URL, False):
+        if not self.getSettings().getFileAccess(xmsf).exists(self.cp_URL, False):
             raise FileNotFoundException (
                 "The given URL does not point to a file")
 
-        if self.root.getFileAccess(xmsf).isDirectory(self.cp_URL):
+        if self.getSettings().getFileAccess(xmsf).isDirectory(self.cp_URL):
             raise IllegalArgumentException ("The given URL points to a directory") #create a TypeDetection service
 
         self.mediaDescriptor = OfficeDocument.getFileMediaDecriptor(
@@ -102,7 +102,7 @@ class CGDocument(ConfigGroup):
         self.analyzeFileType(self.mediaDescriptor)
         task.advance(True)
         #2
-        path = self.root.getFileAccess(xmsf).getPath(self.cp_URL, "")
+        path = self.getSettings().getFileAccess(xmsf).getPath(self.cp_URL, "")
         self.localFilename = FileAccess.getFilename(path, separator)
         '''
         if the type is a star office convertable document
@@ -159,11 +159,11 @@ class CGDocument(ConfigGroup):
 
         if self.cp_Exporter is None or self.cp_Exporter == "":
             print ("WARNING !!! settign exporter for key:", self.appType)
-            exp = self.root.getExporters(self.appType)
+            exp = self.getSettings().getExporters(self.appType)
             print ("WARNING !!! got N exporters:", len(exp))
             print ("WARNING !!! got exporter:", exp[0])
             self.cp_Exporter = \
-                self.root.cp_Exporters.getKey(exp[0])
+                self.getSettings().cp_Exporters.getKey(exp[0])
             print ("WARNING !!! exporter: ", self.cp_Exporter)
 
     '''
diff --git a/wizards/com/sun/star/wizards/web/data/CGGeneralInfo.py b/wizards/com/sun/star/wizards/web/data/CGGeneralInfo.py
index bdfdae6..4fcbd60 100644
--- a/wizards/com/sun/star/wizards/web/data/CGGeneralInfo.py
+++ b/wizards/com/sun/star/wizards/web/data/CGGeneralInfo.py
@@ -20,13 +20,14 @@ from ...common.XMLHelper import XMLHelper
 
 class CGGeneralInfo(ConfigGroup):
 
-    cp_Title = str()
-    cp_Description = str()
-    cp_Author = str()
-    cp_CreationDate = int()
-    cp_UpdateDate = int()
-    cp_Email = str()
-    cp_Copyright = str()
+    def __init__(self):
+        self.cp_Title = str()
+        self.cp_Description = str()
+        self.cp_Author = str()
+        self.cp_CreationDate = int()
+        self.cp_UpdateDate = int()
+        self.cp_Email = str()
+        self.cp_Copyright = str()
 
     def createDOM(self, parent):
         return XMLHelper.addElement(
diff --git a/wizards/com/sun/star/wizards/web/data/CGIconSet.py b/wizards/com/sun/star/wizards/web/data/CGIconSet.py
index 6f8c88f..c63f427 100644
--- a/wizards/com/sun/star/wizards/web/data/CGIconSet.py
+++ b/wizards/com/sun/star/wizards/web/data/CGIconSet.py
@@ -18,7 +18,9 @@
 from ...common.ConfigGroup import ConfigGroup
 
 class CGIconSet(ConfigGroup):
-    cp_Index = -1
-    cp_FNPrefix = str()
-    cp_FNPostfix = str()
-    cp_Name = str()
+
+    def __init__(self):
+        self.cp_Index = -1
+        self.cp_FNPrefix = str()
+        self.cp_FNPostfix = str()
+        self.cp_Name = str()
diff --git a/wizards/com/sun/star/wizards/web/data/CGLayout.py b/wizards/com/sun/star/wizards/web/data/CGLayout.py
index a5f65cb..c59d6e5 100644
--- a/wizards/com/sun/star/wizards/web/data/CGLayout.py
+++ b/wizards/com/sun/star/wizards/web/data/CGLayout.py
@@ -23,12 +23,13 @@ from ...ui.UIConsts import UIConsts
 
 class CGLayout(ConfigGroup):
 
-    cp_Index = -1
-    cp_Name = str()
-    cp_FSName = str()
+    def __init__(self):
+        self.cp_Index = -1
+        self.cp_Name = str()
+        self.cp_FSName = str()
 
     def getSettings(self):
-        return ConfigGroup.root
+        return self.root
 
     def createTemplates(self, xmsf):
         self.templates = {}
diff --git a/wizards/com/sun/star/wizards/web/data/CGPublish.py b/wizards/com/sun/star/wizards/web/data/CGPublish.py
index e9db325..47bd6e5 100644
--- a/wizards/com/sun/star/wizards/web/data/CGPublish.py
+++ b/wizards/com/sun/star/wizards/web/data/CGPublish.py
@@ -26,23 +26,24 @@ through such a CGPublish object.
 
 class CGPublish(ConfigGroup):
 
-    cp_Publish = bool()
-    cp_URL = str()
-    cp_Username = str()
-    password = str()
-    overwriteApproved = bool()
-    url = str()
+    def __init__(self):
+        self.cp_Publish = bool()
+        self.cp_URL = str()
+        self.cp_Username = str()
+        self.password = str()
+        self.overwriteApproved = bool()
+        self.url = str()
 
     def setURL(self, path):
         try:
-            self.cp_URL = (self.root).getFileAccess().getURL(path)
+            self.cp_URL = self.root.getFileAccess().getURL(path)
             self.overwriteApproved = False
         except Exception as ex:
             ex.printStackTrace()
 
     def getURL(self):
         try:
-            return (self.root).getFileAccess().getPath(self.cp_URL, None)
+            return self.root.getFileAccess().getPath(self.cp_URL, None)
         except Exception as e:
             e.printStackTrace()
             return ""
diff --git a/wizards/com/sun/star/wizards/web/data/CGSession.py b/wizards/com/sun/star/wizards/web/data/CGSession.py
index a727ff6..33da2e8 100644
--- a/wizards/com/sun/star/wizards/web/data/CGSession.py
+++ b/wizards/com/sun/star/wizards/web/data/CGSession.py
@@ -29,15 +29,16 @@ from com.sun.star.beans import StringPair
 
 class CGSession(ConfigGroup):
 
-    cp_Index = -1
-    cp_InDirectory = str()
-    cp_OutDirectory = str()
-    cp_Name = str()
-    cp_Content = CGContent()
-    cp_Design = CGDesign()
-    cp_GeneralInfo = CGGeneralInfo()
-    cp_Publishing = WebConfigSet(CGPublish)
-    valid = False
+    def __init__(self):
+        self.cp_Index = -1
+        self.cp_InDirectory = str()
+        self.cp_OutDirectory = str()
+        self.cp_Name = str()
+        self.cp_Content = CGContent()
+        self.cp_Design = CGDesign()
+        self.cp_GeneralInfo = CGGeneralInfo()
+        self.cp_Publishing = WebConfigSet(CGPublish)
+        self.valid = False
 
     def createDOM(self, doc):
         root = XMLHelper.addElement(doc, "session",
diff --git a/wizards/com/sun/star/wizards/web/data/CGSessionName.py b/wizards/com/sun/star/wizards/web/data/CGSessionName.py
index c8bdca1..13a5267 100644
--- a/wizards/com/sun/star/wizards/web/data/CGSessionName.py
+++ b/wizards/com/sun/star/wizards/web/data/CGSessionName.py
@@ -18,8 +18,10 @@
 from ...common.ConfigGroup import ConfigGroup
 
 class CGSessionName(ConfigGroup):
-    cp_Index = -1
-    cp_Name = str()
+
+    def __init__(self):
+        self.cp_Index = -1
+        self.cp_Name = str()
 
     def toString(self):
         return self.cp_Name
diff --git a/wizards/com/sun/star/wizards/web/data/CGSettings.py b/wizards/com/sun/star/wizards/web/data/CGSettings.py
index 78b4b18..53fb587 100644
--- a/wizards/com/sun/star/wizards/web/data/CGSettings.py
+++ b/wizards/com/sun/star/wizards/web/data/CGSettings.py
@@ -45,53 +45,50 @@ class CGSettings(ConfigGroup):
     RESOURCE_UPDATED_TEMPLATE = 3
     RESOURCE_SIZE_TEMPLATE = 4
 
-    cp_WorkDir = str()
-    cp_Exporters = WebConfigSet(CGExporter)
-    cp_Layouts = WebConfigSet(CGLayout)
-    cp_Styles = WebConfigSet(CGStyle)
-    cp_IconSets = WebConfigSet(CGIconSet)
-    cp_BackgroundImages = WebConfigSet(CGImage)
-    cp_SavedSessions = WebConfigSet(CGSessionName)
-    cp_Filters = WebConfigSet(CGFilter)
-    savedSessions = WebConfigSet(CGSessionName)
-    cp_DefaultSession = CGSession()
-    cp_LastSavedSession = str()
-    fileAccess = None
-    xmsf = None
-
     def __init__(self, xmsf_, resources_, document):
+        self.cp_WorkDir = str()
+        self.cp_Exporters = WebConfigSet(CGExporter)
+        self.cp_Layouts = WebConfigSet(CGLayout)
+        self.cp_Styles = WebConfigSet(CGStyle)
+        self.cp_IconSets = WebConfigSet(CGIconSet)
+        self.cp_BackgroundImages = WebConfigSet(CGImage)
+        self.cp_SavedSessions = WebConfigSet(CGSessionName)
+        self.cp_Filters = WebConfigSet(CGFilter)
+        self.savedSessions = WebConfigSet(CGSessionName)
+        self.cp_DefaultSession = CGSession()
+        self.cp_LastSavedSession = str()
+        self.fileAccess = None
+        self.workPath = None
         self.xmsf = xmsf_
         try:
             self.soTemplateDir = FileAccess.getOfficePath2(self.xmsf, "Config", "", "");
             self.soGalleryDir = FileAccess.getOfficePath2(self.xmsf, "Gallery", "share", "");
-            ConfigGroup.root = self
+            self.setRoot(self)
             self.formatter = self.Formatter(self.xmsf, document, resources_)
             self.resources = resources_
-            self.workPath = None
             self.exportersMap = {}
         except Exception:
             traceback.print_exc()
 
     def getExporters(self, mime):
+        print ("DEBUG !!! CGSettings.getExporters -- mime: ", mime)
         exps = self.exportersMap.get(mime)
         if exps is None:
             exps = self.createExporters(mime)
             self.exportersMap[mime] = exps
-
+        print ("DEBUG !!! CGSettings.getExporters -- exps: ", len(exps))
         return exps
 
     def createExporters(self, mime):
+        print ("DEBUG !!! CGSettings.createExporters -- mime: ", mime)
         exporters = self.cp_Exporters.childrenList
         v = []
         for i in exporters:
-            if i is not None:
-                if i.supports(mime):
-                    try:
-                        v.append(i)
-                    except Exception:
-                        traceback.print_exc()
-            else:
-                print ("DEBUG !!! Exporter is None")
+            if i.supports(mime):
+                try:
+                    v.append(i)
+                except Exception:
+                    traceback.print_exc()
         return v
 
     '''
@@ -101,37 +98,31 @@ class CGSettings(ConfigGroup):
     '''
 
     def configure(self, xmsf):
-        self.workPath = FileAccess.connectURLs(
-            self.soTemplateDir, self.cp_WorkDir)
-        #COMMENTED
+        self.workPath = FileAccess.connectURLs(self.soTemplateDir, self.cp_WorkDir)
         self.calcExportersTargetTypeNames(xmsf)
 
     def calcExportersTargetTypeNames(self, xmsf):
-        typeDetect = xmsf.createInstance(
-            "com.sun.star.document.TypeDetection")
+        typeDetect = xmsf.createInstance("com.sun.star.document.TypeDetection")
         for i in range(self.cp_Exporters.getSize()):
-            self.calcExporterTargetTypeName(
-                typeDetect, self.cp_Exporters.getElementAt(i))
+            self.calcExporterTargetTypeName(typeDetect, self.cp_Exporters.getElementAt(i))
 
     def calcExporterTargetTypeName(self, typeDetect, exporter):
         if (exporter is None):
-            print ("WARNING !!!! calcExporterTargetTypeName - received None as exporter argument.")
+            print ("DEBUG !!!! calcExporterTargetTypeName - received None as exporter argument.")
             return
-        print ("WARNING !!!! calcExporterTargetTypeName - targetType: ", exporter.cp_TargetType)
+        print ("DEBUG !!!! calcExporterTargetTypeName - targetType: ", exporter.cp_TargetType)
         if not (exporter.cp_TargetType == "" or exporter.cp_TargetType is None):
             targetTypeName = Properties.getPropertyValue(
                 typeDetect.getByName(exporter.cp_TargetType), "UIName")
-            print ("WARNING !!!! calcExporterTargetTypeName - targetTypeName: ", targetTypeName)
+            print ("DEBUG !!!! calcExporterTargetTypeName - targetTypeName: ", targetTypeName)
             exporter.cp_targetTypeName = targetTypeName
 
-    @classmethod
     def getFileAccess(self, xmsf = None):
         if xmsf is None:
             xmsf = self.xmsf
-        if CGSettings.fileAccess is None:
-            CGSettings.fileAccess = FileAccess(xmsf)
-
-        return CGSettings.fileAccess
+        if self.fileAccess is None:
+            self.fileAccess = FileAccess(xmsf)
+        return self.fileAccess
 
     class Formatter(object):
         class DateUtils(object):
commit 937e881e47a4b0cbe3c5041d6764e44838cbeb28
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Thu Apr 11 08:12:33 2013 +0000

    Fixed bug related to the duplicated items in the exporters list.
    
    Attributes must be defined as instance kind, instead of static.
    
    Change-Id: I6e7daa15ce501dd227d039ddd1320ee685258b3c

diff --git a/wizards/com/sun/star/wizards/web/data/CGDocument.py b/wizards/com/sun/star/wizards/web/data/CGDocument.py
index 92d3e7a..4defd5f 100644
--- a/wizards/com/sun/star/wizards/web/data/CGDocument.py
+++ b/wizards/com/sun/star/wizards/web/data/CGDocument.py
@@ -68,13 +68,13 @@ class CGDocument(ConfigGroup):
         self.sizeBytes = -1
         self.pages = -1
         self.valid = False
-        self.appType = None
+        self.appType = ""
         if (xmsf is None):
             return
-        self.cp_URL = self.getSettings().getFileAccess(xmsf).getURL(url);
+        self.cp_URL = self.getSettings().getFileAccess(xmsf).getURL(url)
         if (task is None):
             task = Task("", "", 5)
-        self.validate(xmsf, task);
+        self.validate(xmsf, task)
 
     def getSettings(self):
         return ConfigGroup.root
@@ -90,12 +90,10 @@ class CGDocument(ConfigGroup):
         print ("WARNING !!! VALIDATING DOCUMENT ....")
         if not self.root.getFileAccess(xmsf).exists(self.cp_URL, False):
             raise FileNotFoundException (
-                "The given URL does not point to a file");
+                "The given URL does not point to a file")
 
         if self.root.getFileAccess(xmsf).isDirectory(self.cp_URL):
-            raise IllegalArgumentException (
-                "The given URL points to a directory");
-            #create a TypeDetection service
+            raise IllegalArgumentException ("The given URL points to a directory") #create a TypeDetection service
 
         self.mediaDescriptor = OfficeDocument.getFileMediaDecriptor(
             xmsf, self.cp_URL)
@@ -160,8 +158,8 @@ class CGDocument(ConfigGroup):
             self.cp_Author = self.author
 
         if self.cp_Exporter is None or self.cp_Exporter == "":
-            print ("WARNING !!! settign exporter for key:", CGDocument.appType)
-            exp = self.root.getExporters(CGDocument.appType)
+            print ("WARNING !!! settign exporter for key:", self.appType)
+            exp = self.root.getExporters(self.appType)
             print ("WARNING !!! got N exporters:", len(exp))
             print ("WARNING !!! got exporter:", exp[0])
             self.cp_Exporter = \
@@ -180,9 +178,9 @@ class CGDocument(ConfigGroup):
         else:
             media = Properties.getPropertyValue(
                 self.mediaDescriptor, PropertyNames.PROPERTY_NAME)
-        CGDocument.appType = self.getDocType(media)
-        print ("DEBUG !!! analyzeFileType --  appType: ", CGDocument.appType)
-        self.isSOOpenable = (CGDocument.appType == WRITER_DOC or CGDocument.appType == CALC_DOC or CGDocument.appType == IMPRESS_DOC or CGDocument.appType == DRAW_DOC) or CGDocument.appType == HTML_DOC
+        self.appType = self.getDocType(media)
+        print ("DEBUG !!! analyzeFileType --  appType: ", self.appType)
+        self.isSOOpenable = (self.appType == WRITER_DOC or self.appType == CALC_DOC or self.appType == IMPRESS_DOC or self.appType == DRAW_DOC) or self.appType == HTML_DOC
         if (self.isSOOpenable):
             print ("DEBUG !!! analyzeFileType -- isSOOpenable .")
         else:
@@ -289,7 +287,7 @@ class CGDocument(ConfigGroup):
 
     def getIcon(self, exporter):
         if exporter.cp_Icon == "":
-            return self.getIcon1(CGDocument.appType)
+            return self.getIcon1(self.appType)
         else:
             return exporter.cp_Icon
 
@@ -312,7 +310,7 @@ class CGDocument(ConfigGroup):
     '''
 
     def setExporter(self, exporter_):
-        exp = self.getSettings().getExporters(CGDocument.appType)[exporter_[0]]
+        exp = self.getSettings().getExporters(self.appType)[exporter_[0]]
         self.cp_Exporter = self.getSettings().cp_Exporters.getKey(exp)
 
     '''
@@ -325,7 +323,7 @@ class CGDocument(ConfigGroup):
             return 0
 
         exporter = self.getSettings().cp_Exporters.getElement(self.cp_Exporter)
-        exporters = self.getSettings().getExporters(CGDocument.appType)
+        exporters = self.getSettings().getExporters(self.appType)
         i = 0
         while i < len(exporters):
             if exporters[i] == exporter:
diff --git a/wizards/com/sun/star/wizards/web/data/CGExporter.py b/wizards/com/sun/star/wizards/web/data/CGExporter.py
index 6a88f15..daddbcb 100644
--- a/wizards/com/sun/star/wizards/web/data/CGExporter.py
+++ b/wizards/com/sun/star/wizards/web/data/CGExporter.py
@@ -20,24 +20,26 @@ from ...common.ConfigGroup import ConfigGroup
 from .CGArgument import CGArgument
 
 class CGExporter(ConfigGroup):
-    cp_Index = -1
-    cp_Name = str()
-    cp_ExporterClass = str()
-    cp_OwnDirectory = bool()
-    cp_SupportsFilename = bool()
-    cp_DefaultFilename = str()
-    cp_Extension = str()
-    cp_SupportedMimeTypes = str()
-    cp_Icon = str()
-    cp_TargetType = str()
-    cp_Binary = bool()
-    cp_PageType = int()
-    targetTypeName = ""
-    cp_Arguments = WebConfigSet(CGArgument)
+
+    def __init__(self):
+        self.cp_Index = -1
+        self.cp_Name = str()
+        self.cp_ExporterClass = str()
+        self.cp_OwnDirectory = bool()
+        self.cp_SupportsFilename = bool()
+        self.cp_DefaultFilename = str()
+        self.cp_Extension = str()
+        self.cp_SupportedMimeTypes = str()
+        self.cp_Icon = str()
+        self.cp_TargetType = str()
+        self.cp_Binary = bool()
+        self.cp_PageType = int()
+        self.targetTypeName = ""
+        self.cp_Arguments = WebConfigSet(CGArgument)
 
     def toString(self):
         return self.cp_Name
 
     def supports(self, mime):
-        return CGExporter.cp_SupportedMimeTypes == "" or \
-            CGExporter.cp_SupportedMimeTypes.find(mime) > -1
+        return self.cp_SupportedMimeTypes == "" or \
+            self.cp_SupportedMimeTypes.find(mime) > -1
commit 288c59dea0a39ff0ae4416e405d9e03f18986fe6
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Wed Apr 10 16:56:23 2013 +0000

    Adding keyListenners for testing purposes.
    
    Change-Id: I2593ef02be9ebd940a5865bfbdf305b5b958e9c0

diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.py b/wizards/com/sun/star/wizards/web/WWD_Events.py
index 407301e..8c86802 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Events.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Events.py
@@ -17,6 +17,8 @@
 #
 import traceback
 import uno
+import time
+
 #from common.Desktop import Desktop
 from .WWD_Startup import WWD_Startup
 from .WWD_General import WWD_General
@@ -24,6 +26,7 @@ from .WebWizardConst import *
 from ..common.FileAccess import FileAccess
 from ..common.Configuration import Configuration
 from ..ui.event.ListModelBinder import ListModelBinder
+from ..ui.event.CommonListener import KeyListenerProcAdapter
 from ..ui.event.Task import Task
 from .data.CGDocument import CGDocument
 from .data.CGSession import CGSession
@@ -59,9 +62,10 @@ class WWD_Events(WWD_Startup):
 
     def __init__(self, xmsf):
         super(WWD_Events, self).__init__(xmsf)
-        self.chkFTP.addKeyListener(None)
-        self.chkLocalDir.addKeyListener(None)
-        self.chkZip.addKeyListener(None)
+        c = KeyListenerProcAdapter(self.keyPressed)
+        self.chkFTP.addKeyListener(c)
+        self.chkLocalDir.addKeyListener(c)
+        self.chkZip.addKeyListener(c)
         self.currentSession = ""
         self.exitOnCreate = True
         self.time = 0
@@ -98,6 +102,18 @@ class WWD_Events(WWD_Startup):
             if sessionToLoad is not self.currentSession:
                 self.loadSession(sessionToLoad)
 
+    def keyPressed(self, ke):
+        if (ke.KeyChar == '&'):
+            self.time = time.time()
+        elif (ke.KeyChar == '%' and ((time.time() - self.time) < 300)):
+            b = self.xDialogModel.btnWizardFinish.Enabled
+            if (b):
+                print ("DEBUG !!! keyPressed -- Finish button ENABLED ")
+                self.finishWizard1(False)
+            else:
+                print ("DEBUG !!! keyPressed -- Finish button DISABLED ")
+
+
     '''
     **************
         STEP 1
commit c9c4d0f92ff04064192b2a1f921cd214896f7731
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Wed Apr 10 16:55:40 2013 +0000

    Implementing the createDOM method for the CGDocument class.
    
    Change-Id: I3480c641221d583cfc494cce29ace9db6e1a8c30

diff --git a/wizards/com/sun/star/wizards/web/WebConfigSet.py b/wizards/com/sun/star/wizards/web/WebConfigSet.py
index 4ab5ea3..73b16fb 100644
--- a/wizards/com/sun/star/wizards/web/WebConfigSet.py
+++ b/wizards/com/sun/star/wizards/web/WebConfigSet.py
@@ -146,9 +146,8 @@ class WebConfigSet(ConfigGroup):
         i = 0
         while i < len(items):
             item = items[i]
-            if isinstance(item, XMLProvider):
+            if hasattr(item, "createDOM"):
                 item.createDOM(parent)
-
             i += 1
         return parent
 
diff --git a/wizards/com/sun/star/wizards/web/data/CGDocument.py b/wizards/com/sun/star/wizards/web/data/CGDocument.py
index 25f914f..92d3e7a 100644
--- a/wizards/com/sun/star/wizards/web/data/CGDocument.py
+++ b/wizards/com/sun/star/wizards/web/data/CGDocument.py
@@ -23,6 +23,7 @@ from ...document.OfficeDocument import OfficeDocument
 from ...common.Properties import Properties
 from ...common.PropertyNames import PropertyNames
 from ...common.FileAccess import FileAccess
+from ...common.XMLHelper import XMLHelper
 from ..TypeDetection import *
 from ...common.Desktop import Desktop
 
@@ -45,28 +46,32 @@ The same is valid for *description* and *author*.
 '''
 
 class CGDocument(ConfigGroup):
-    cp_Exporter = None
-    cp_Index = -1
+
     PAGE_TYPE_PAGE = 1
     PAGE_TYPE_SLIDE = 2
-    cp_Title = ""
-    cp_Description = ""
-    cp_URL = ""
-    cp_Author = ""
-    localFilename = ""
-    urlFilename = ""
-    title = ""
-    description = ""
-    author = ""
-    sizeBytes = -1
-    pages = -1
-    valid = False
-    appType = None
-
-    def __init__(self, url = "", xmsf = None, Task = None):
+
+    def __init__(self, url = "", xmsf = None, task = None):
+        self.cp_URL = ""
+        self.cp_Exporter = None
+        self.cp_Index = -1
+        self.cp_Title = ""
+        self.cp_Description = ""
+        self.cp_Author = ""
+        self.localFilename = ""
+        self.urlFilename = ""
+        self.title = ""
+        self.description = ""
+        self.author = ""
+        self.dirName = ""
+        self.createdDate = None
+        self.updatedDate = None
+        self.sizeBytes = -1
+        self.pages = -1
+        self.valid = False
+        self.appType = None
         if (xmsf is None):
             return
-        cp_URL = self.getSettings().getFileAccess(xmsf).getURL(url);
+        self.cp_URL = self.getSettings().getFileAccess(xmsf).getURL(url);
         if (task is None):
             task = Task("", "", 5)
         self.validate(xmsf, task);
@@ -127,32 +132,32 @@ class CGDocument(ConfigGroup):
         #4
         #now use the object to read some document properties.
         if xProps is not None:
-            title = xProps.Title
-            description = xProps.Description
-            author = xProps.Author
-            createDate = xProps.CreationDate
-            updateDate = xProps.ModificationDate
+            self.title = xProps.Title
+            self.description = xProps.Description
+            self.author = xProps.Author
+            self.createdDate = xProps.CreationDate
+            self.updatedDate = xProps.ModificationDate
         else:
 
             #get some information from OS.
-            title = self.localFilename
-            updateDate = \
+            self.title = self.localFilename
+            self.updatedDate = \
                 self.getSettings().getFileAccess(xmsf).getLastModified(self.cp_URL)
 
         task.advance(True)
         #5
         valid = True
         if self.cp_Title == "":
-            cp_Title = self.title
+            self.cp_Title = self.title
 
         if self.cp_Title == "":
-            cp_Title = self.localFilename
+            self.cp_Title = self.localFilename
 
         if self.cp_Description == "":
-            cp_Description = self.description
+            self.cp_Description = self.description
 
         if self.cp_Author == "":
-            cp_Author = self.author
+            self.cp_Author = self.author
 
         if self.cp_Exporter is None or self.cp_Exporter == "":
             print ("WARNING !!! settign exporter for key:", CGDocument.appType)
@@ -224,21 +229,33 @@ class CGDocument(ConfigGroup):
     def createDOM(self, parent):
         d = self.getSettings().cp_DefaultSession.cp_Design
         exp = self.getSettings().cp_Exporters.getElement(self.cp_Exporter)
-        '''return XMLHelper.addElement(parent, "document", ["title", "description", "author", "format", "filename", "create-date", "update-date", "pages", "size", "icon", "dir", "fn"], [d.cp_DisplayTitle ? self.cp_Title : "", d.cp_DisplayDescription ? self.cp_Description : "", d.cp_DisplayAuthor ? self.cp_Author : "", d.cp_DisplayFileFormat ? getTargetTypeName(exp) : "", d.cp_DisplayFilename ? self.localFilename : "", d.cp_DisplayCreateDate ? self.createDate() : "", d.cp_DisplayUpdateDate ? self.updateDate() : "", d.cp_DisplayPages and (self.pages > -1) ? "" + self.pages() : "", #TODO when do i calculate pages?
-        d.cp_DisplaySize ? sizeKB() : "", #TODO when do i calculate size?
-        d.cp_DisplayFormatIcon ? getIcon(exp) : "", self.dirName, self.urlFilename])'''
+        return XMLHelper.addElement(parent, "document",
+                                    ["title", "description", "author", "format", "filename",
+                                     "create-date", "update-date", "pages", "size", "icon",
+                                     "dir", "fn"],
+                                    [self.cp_Title if (d.cp_DisplayTitle) else "",
+                                     self.cp_Description if (d.cp_DisplayDescription) else "",
+                                     self.cp_Author if (d.cp_DisplayAuthor) else "",
+                                     self.getTargetTypeName(exp) if (d.cp_DisplayFileFormat) else "",
+                                     self.localFilename if (d.cp_DisplayFilename) else "",
+                                     self.createDate() if (d.cp_DisplayCreateDate) else "",
+                                     self.updateDate() if (d.cp_DisplayUpdateDate) else  "",
+                                     "" + self.getPages() if (d.cp_DisplayPages and (self.pages > -1)) else "", #TODO when do i calculate pages?
+                                     self.sizeKB() if (d.cp_DisplaySize) else "", #TODO when do i calculate size?
+                                     self.getIcon(exp) if (d.cp_DisplayFormatIcon) else "",
+                                     self.dirName, self.urlFilename])
 
     def updateDate(self):
-        if self.updateDate is None:
+        if self.updatedDate is None:
             return ""
 
-        return self.getSettings().formatter.formatCreated(self.updateDate)
+        return self.getSettings().formatter.formatCreated(self.updatedDate)
 
     def createDate(self):
-        if self.createDate is None:
+        if self.createdDate is None:
             return ""
 
-        return self.getSettings().formatter.formatCreated(self.createDate)
+        return self.getSettings().formatter.formatCreated(self.createdDate)
 
     def sizeKB(self):
         if self.sizeBytes == -1:
@@ -246,11 +263,11 @@ class CGDocument(ConfigGroup):
         else:
             return self.getSettings().formatter.formatFileSize(self.sizeBytes)
 
-    def pages(self):
+    def getPages(self):
         if self.pages == -1:
             return ""
         else:
-            return pagesTemplate().replace("%NUMBER", "" + self.pages)
+            return self.pagesTemplate().replace("%NUMBER", "" + self.pages)
 
     def pagesTemplate(self):
         pagesType = \
@@ -272,11 +289,11 @@ class CGDocument(ConfigGroup):
 
     def getIcon(self, exporter):
         if exporter.cp_Icon == "":
-            return getIcon(CGDocument.appType)
+            return self.getIcon1(CGDocument.appType)
         else:
             return exporter.cp_Icon
 
-    def getIcon(self, appType):
+    def getIcon1(self, appType):
         return appType + ".gif"
 
     '''
diff --git a/wizards/com/sun/star/wizards/web/data/CGSession.py b/wizards/com/sun/star/wizards/web/data/CGSession.py
index 87fe366..a727ff6 100644
--- a/wizards/com/sun/star/wizards/web/data/CGSession.py
+++ b/wizards/com/sun/star/wizards/web/data/CGSession.py
@@ -25,6 +25,8 @@ from .CGDesign import CGDesign
 from .CGGeneralInfo import CGGeneralInfo
 from .CGPublish import CGPublish
 
+from com.sun.star.beans import StringPair
+
 class CGSession(ConfigGroup):
 
     cp_Index = -1
@@ -45,6 +47,20 @@ class CGSession(ConfigGroup):
         self.cp_Content.createDOM(root)
         return root
 
+    def serializeNode(self, node):
+        xBuffer = self.root.xmsf.createInstance("com.sun.star.io.Pipe")
+        xTextInputStream = self.root.xmsf.createInstance("com.sun.star.io.TextInputStream")
+        xSaxWriter = self.root.xmsf.createInstance( "com.sun.star.xml.sax.Writer" )
+        xSaxWriter.setOutputStream(xBuffer)
+        xTextInputStream.setInputStream(xBuffer)
+        node.serialize(xSaxWriter, tuple([StringPair()]))
+        result = ""
+        while (not xTextInputStream.isEOF()):
+            sLine = xTextInputStream.readLine()
+            if (not sLine == "") and (not sLine.startswith("<?xml")):
+                result = result + sLine + "\n"
+        print ("DEBUG !!! result: ", result)
+
     def getScreenSize(self):
         tmp_switch_var1 = self.cp_Design.cp_OptimizeDisplaySize
         if tmp_switch_var1 == 0:
diff --git a/wizards/com/sun/star/wizards/web/data/CGSettings.py b/wizards/com/sun/star/wizards/web/data/CGSettings.py
index e270935..78b4b18 100644
--- a/wizards/com/sun/star/wizards/web/data/CGSettings.py
+++ b/wizards/com/sun/star/wizards/web/data/CGSettings.py
@@ -35,6 +35,7 @@ from .CGSession import CGSession
 
 from com.sun.star.i18n.NumberFormatIndex import DATE_SYS_DMMMYYYY
 from com.sun.star.i18n.NumberFormatIndex import NUMBER_1000DEC2
+from com.sun.star.util import DateTime
 
 class CGSettings(ConfigGroup):
 
@@ -64,7 +65,7 @@ class CGSettings(ConfigGroup):
             self.soTemplateDir = FileAccess.getOfficePath2(self.xmsf, "Config", "", "");
             self.soGalleryDir = FileAccess.getOfficePath2(self.xmsf, "Gallery", "share", "");
             ConfigGroup.root = self
-            self.formatter = self.Formatter(self.xmsf, document)
+            self.formatter = self.Formatter(self.xmsf, document, resources_)
             self.resources = resources_
             self.workPath = None
             self.exportersMap = {}
@@ -146,35 +147,40 @@ class CGSettings(ConfigGroup):
             @param format a constant of the enumeration NumberFormatIndex
             @return
             '''
-            def getFormat(self, format):
-                return NumberFormatter.getNumberFormatterKey(self.formatSupplier, format)
+            def getFormat(self, f):
+                return NumberFormatter.getNumberFormatterKey(self.formatSupplier, f)
 
             '''
             @param date a VCL date in form of 20041231
             @return a document relative date
             '''
             def format(self, formatIndex, date):
-                difference =  date - self.calendar
+                dateTime = dateTimeObject(date.Year, date.Month, date.Day)
+                difference =  dateTime - self.calendar
                 return self.formatter.convertNumberToString(formatIndex,  difference.days)
 
-        def __init__(self, xmsf, document):
+            def getFormatter(self):
+                return self.formatter
+
+        def __init__(self, xmsf, document, resources):
             self.dateUtils = self.DateUtils(xmsf, document)
             self.dateFormat = self.dateUtils.getFormat(DATE_SYS_DMMMYYYY)
             self.numberFormat = self.dateUtils.getFormat(NUMBER_1000DEC2)
+            self.resources = resources
 
         def formatCreated(self, date):
-            sDate = self.dateUtils.format(dateFormat, date)
-            return resources[CGSettings.RESOURCE_CREATED_TEMPLATE].replace(
+            sDate = self.dateUtils.format(self.dateFormat, date)
+            return self.resources[CGSettings.RESOURCE_CREATED_TEMPLATE].replace(
                 "%DATE", sDate)
 
         def formatUpdated(self, date):
-            sDate = self.dateUtils.format(dateFormat, date);
-            return resources[CGSettings.RESOURCE_UPDATED_TEMPLATE].replace(
+            sDate = self.dateUtils.format(self.dateFormat, date);
+            return self.resources[CGSettings.RESOURCE_UPDATED_TEMPLATE].replace(
                 "%DATE", sDate)
 
         def formatFileSize(self, size):
             sizeInKB = size / float(1024)
             sSize = self.dateUtils.getFormatter().convertNumberToString(
-                numberFormat, sizeInKB)
-            return resources[CGSettings.RESOURCE_SIZE_TEMPLATE].replace(
+                self.numberFormat, sizeInKB)
+            return self.resources[CGSettings.RESOURCE_SIZE_TEMPLATE].replace(
                 "%NUMBER", sSize)
commit 31e61a35e834108c72c99405c8c8fcda4f7215ba
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Mon Apr 8 21:27:27 2013 +0000

    Fixed typos.
    
    Change-Id: Ia6f99bb7d0f8263e5b03933304975325cc1278e0

diff --git a/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py
index 8ce341a..2c9c7c9 100644
--- a/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py
+++ b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py
@@ -58,7 +58,7 @@ class UnoDataAware(DataAware):
             setattr(self.unoModel, self.unoPropName, value)
         else:
             print ("DEBUG !!! UnoDataAware.setToUI -- dataObject hasn't the attribute, su using the 'setter' method.")
-            uno.invoke(self.unoModel, "set" + self.unoPropName, (ui,))
+            uno.invoke(self.unoModel, "set" + self.unoPropName, (value,))
 
     # Try to get from an arbitrary object a boolean value.
     # Null returns Boolean.FALSE;
diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.py b/wizards/com/sun/star/wizards/web/WWD_Events.py
index 2b13edf..407301e 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Events.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Events.py
@@ -68,6 +68,7 @@ class WWD_Events(WWD_Startup):
         self.count = 0
         self.bgDialog = None
         self.iconsDialog = None
+        self.docPreview = None
 
     @classmethod
     def main(self, args):
commit af39fdacd7db4eccb16930de2e25c9d5d259a748
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Mon Apr 8 21:26:27 2013 +0000

    Implementing the XSLT Layout templates.
    
    Change-Id: I980850fd2c758e175e0d8cd140ade03bc8054562

diff --git a/wizards/com/sun/star/wizards/ui/event/CommonListener.py b/wizards/com/sun/star/wizards/ui/event/CommonListener.py
index b218e8c..5a9a003 100644
--- a/wizards/com/sun/star/wizards/ui/event/CommonListener.py
+++ b/wizards/com/sun/star/wizards/ui/event/CommonListener.py
@@ -102,3 +102,28 @@ class OMouseListenerProcAdapter( unohelper.Base, XMouseListener ):
     def mousePressed(self, MouseEvent):
         if callable( self.oProcToCall ):
             self.oProcToCall(MouseEvent)
+
+from com.sun.star.io import XStreamListener
+class StreamListenerProcAdapter( unohelper.Base, XStreamListener ):
+    def __init__(self, parent, terminatedCall, startedCall, closedCall, errorCall):
+        self.parent = parent
+        self.terminatedCall = terminatedCall
+        self.startedCall = startedCall
+        self.closedCall = closedCall
+        self.errorCall = errorCall
+
+    def terminated(self):
+        if callable( self. terminatedCall):
+            self.terminatedCall(self)
+
+    def started(self):
+        if callable( self.startedCall ):
+            self.startedCall(self, self.parent)
+
+    def closed(self):
+        if callable( self.closedCall ):
+            self.closedCall(self)
+
+    def error(self, aException):
+        if callable( self.errorCall ):
+            self.errorCall(self, aException)
diff --git a/wizards/com/sun/star/wizards/web/Process.py b/wizards/com/sun/star/wizards/web/Process.py
index 8ebbb8d..2e3b3fb 100644
--- a/wizards/com/sun/star/wizards/web/Process.py
+++ b/wizards/com/sun/star/wizards/web/Process.py
@@ -21,6 +21,7 @@ from .WebWizardConst import *
 from ..common.UCB import UCB
 from ..common.FileAccess import FileAccess
 from ..ui.event.Task import Task
+from ..ui.event.CommonListener import StreamListenerProcAdapter
 from .ProcessErrors import ProcessErrors
 from .ExtensionVerifier import ExtensionVerifier
 from .ErrorHandler import ErrorHandler
@@ -30,12 +31,13 @@ from .data.CGExporter import CGExporter
 from .data.CGLayout import CGLayout
 from .data.CGPublish import CGPublish
 from .data.CGSettings import CGSettings
-#from .export.Exporter import Exporter
-#from .export.AbstractExporter import AbstractExporter
-#from .export.CopyExporter import CopyExporter
 
 from com.sun.star.io import IOException
 from com.sun.star.uno import SecurityException
+from com.sun.star.beans import NamedValue
+from com.sun.star.beans import StringPair
+from com.sun.star.xml.dom.NodeType import DOCUMENT_NODE
+from com.sun.star.xml.dom.NodeType import ELEMENT_NODE
 
 # This class is used to process a CGSession object
 # and generate a site. </br>
@@ -346,29 +348,86 @@ class Process(ProcessErrors):
     def generate1(self, xmsf, layout, doc, fileAccess, targetPath, task):
         # a map that contains xsl templates. the keys are the xsl file names.
         templates = layout.getTemplates(xmsf)
+        self.node = doc
 
         task.advance1(True, TASK_GENERATE_XSL)
 
         # each template generates a page.
-        for key,temp in templates:
-            transformer = temp.newTransformer()
-
-            doc.normalize()
-            task.advance(True)
+        for key in templates:
+            temp = templates[key]
 
             # The target file name is like the xsl template filename
             # without the .xsl extension.
-            #fn = fileAccess.getPath(targetPath, key[:key.length() - 4])
-            #f = File(fn)
-            #oStream = FileOutputStream(f)
-            # Due to a problem occuring when using Xalan-Java 2.6.0 and
-            # Java 1.5.0, wrap f in a FileOutputStream here (otherwise, the
-            # StreamResult's getSystemId would return a "file:/..." URL while
-            # the Xalan code expects a "file:///..." URL):
-            #transformer.transform(DOMSource(doc), StreamResult(oStream))
-            #oStream.close()
+            fn = fileAccess.getPath(targetPath, key[:len(key) - 4])
+
+            print ("DEBUG !!!! generate1 - StylesheetURL: ", temp)
+            print ("DEBUG !!!! generate1 - fn: ", fn)
+
+            args = list(range(1))
+            nv = NamedValue()
+            nv.Name = "StylesheetURL"
+            nv.Value = temp
+            args[0] = nv
+            arguments = list(range(1))
+            arguments[0] = tuple(args)
+
+            tf = Process.createTransformer(xmsf, arguments)
+
+            self.node.normalize()
+            task.advance(True)
+
+            # we want to be notfied when the processing is done...
+            tf.addListener(StreamListenerProcAdapter(self,
+                                                     self.streamTerminatedHandler,
+                                                     self.streamStartedHandler,
+                                                     self.streamClosedHandler,
+                                                     self.streamErrorHandler))
+
+            # create pipe
+            pipeout = xmsf.createInstance("com.sun.star.io.Pipe")
+            pipein = pipeout
+
+            # connect sax writer to pipe
+            self.xSaxWriter = xmsf.createInstance( "com.sun.star.xml.sax.Writer" )
+            self.xSaxWriter.setOutputStream(pipeout)
+
+            # connect pipe to transformer
+            tf.setInputStream(pipein)
+
+            # connect transformer to output
+            xOutputStream = fileAccess.xInterface.openFileWrite(fn)
+            tf.setOutputStream(xOutputStream)
+
+            tf.start()
             task.advance(True)
 
+
+    @classmethod
+    def createTransformer(self, xmsf, args):
+        print ("DEBUG !!! createTransformer -- ")
+        tf = xmsf.createInstanceWithArguments("com.sun.star.xml.xslt.XSLT2Transformer",
+                                              tuple(args))
+        if (tf is None):
+            # TODO: put a dialog telling about the need to install
+            # xslt2-transformer extension here
+            print ("DEBUG !!! createTransformer -- could not create XSLT 2.0 transformer")
+            tf = xmsf.createInstanceWithArguments("com.sun.star.xml.xslt.XSLTTransformer",
+                                                  tuple(args))
+        return tf
+
+    def streamTerminatedHandler(self):
+        print ("DEBUG !!! Stream 'terminated' event handler !!!!")
+
+    def streamStartedHandler(self, parent):
+        print ("DEBUG !!! Stream 'started' event handler !!!!")
+        parent.node.serialize(parent.xSaxWriter, tuple([StringPair()]))
+
+    def streamErrorHandler(self, aException):
+        print ("DEBUG !!! Stream 'error' event handler")
+
+    def streamClosedHandler(self):
+        print ("DEBUG !!! Stream 'closed' event handler")
+
     # I broke the export method to two methods
     # in a time where a tree with more than one contents was planned.
     # I left it that way, because it may be used in the future.
diff --git a/wizards/com/sun/star/wizards/web/data/CGLayout.py b/wizards/com/sun/star/wizards/web/data/CGLayout.py
index e05e9a7..a5f65cb 100644
--- a/wizards/com/sun/star/wizards/web/data/CGLayout.py
+++ b/wizards/com/sun/star/wizards/web/data/CGLayout.py
@@ -15,7 +15,10 @@
 #   except in compliance with the License. You may obtain a copy of
 #   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 #
+import uno
+
 from ...common.ConfigGroup import ConfigGroup
+from ...common.FileAccess import FileAccess
 from ...ui.UIConsts import UIConsts
 
 class CGLayout(ConfigGroup):
@@ -24,21 +27,27 @@ class CGLayout(ConfigGroup):
     cp_Name = str()
     cp_FSName = str()
 
+    def getSettings(self):
+        return ConfigGroup.root
+
     def createTemplates(self, xmsf):
         self.templates = {}
-        tf = TransformerFactory.newInstance()
-        workPath = getSettings().workPath
+
+        workPath = self.getSettings().workPath
         fa = FileAccess(xmsf)
         stylesheetPath = fa.getURL(
-            getSettings().workPath, "layouts/" + self.cp_FSName)
+            self.getSettings().workPath, "layouts/" + self.cp_FSName)
+        print ("DEBUG !!! stylesheetPath: ", stylesheetPath)
         files = fa.listFiles(stylesheetPath, False)
         i = 0
-        while i < files.length:
-            if FileAccess.getExtension(files[i]).equals("xsl"):
-                self.templates.put(
-                    FileAccess.getFilename(files[i]),
-                    tf.newTemplates(StreamSource (files[i])))
+        print ("DEBUG !!! files: ", len(files))
+        while i < len(files):
+            ext = FileAccess.getExtension(files[i])
+            fileName = FileAccess.getFilename(files[i])
+            if ext == "xsl":
+                self.templates[fileName] = files[i]
             i += 1
+        print ("DEBUG !!! templates: ", self.templates)
 
     def getImageUrls(self):
         sRetUrls = range(1)
@@ -46,7 +55,5 @@ class CGLayout(ConfigGroup):
         return [ResId, ResId + 1]
 
     def getTemplates(self, xmsf):
-        # COMMENT - TODO
-        #self.createTemplates(xmsf)
-        #return self.templates
-        return {}
+        self.createTemplates(xmsf)
+        return self.templates
commit dba53a5abbf5e89a067e7f889b2e4548efbbc165
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Mon Apr 8 21:17:10 2013 +0000

    Using the xml.dom.DocumentBuilder service instead of the "minidom".
    
    Change-Id: Icaf2c31652e4c6bbd98353c0543c101255992093

diff --git a/wizards/com/sun/star/wizards/common/XMLHelper.py b/wizards/com/sun/star/wizards/common/XMLHelper.py
index 7ea3de3..0af198c 100644
--- a/wizards/com/sun/star/wizards/common/XMLHelper.py
+++ b/wizards/com/sun/star/wizards/common/XMLHelper.py
@@ -19,8 +19,8 @@ class XMLHelper:
 
     @classmethod
     def addElement(self, parent, name, attNames, attValues):
-        doc = parent.ownerDocument
-        if (doc == None):
+        doc = parent.getOwnerDocument()
+        if (doc is None):
             doc = parent
         e = doc.createElement(name)
         for i in range(len(attNames)):
diff --git a/wizards/com/sun/star/wizards/web/data/CGSession.py b/wizards/com/sun/star/wizards/web/data/CGSession.py
index a2c32d1..87fe366 100644
--- a/wizards/com/sun/star/wizards/web/data/CGSession.py
+++ b/wizards/com/sun/star/wizards/web/data/CGSession.py
@@ -25,8 +25,6 @@ from .CGDesign import CGDesign
 from .CGGeneralInfo import CGGeneralInfo
 from .CGPublish import CGPublish
 
-from xml.dom.minidom import Document
-
 class CGSession(ConfigGroup):
 
     cp_Index = -1
@@ -39,10 +37,10 @@ class CGSession(ConfigGroup):
     cp_Publishing = WebConfigSet(CGPublish)
     valid = False
 
-    def createDOM(self, parent):
-        root = XMLHelper.addElement(
-            parent, "session", ["name", "screen-size"],
-            [self.cp_Name, self.getScreenSize()])
+    def createDOM(self, doc):
+        root = XMLHelper.addElement(doc, "session",
+                                    ["name", "screen-size"],
+                                    [self.cp_Name, self.getScreenSize()])
         self.cp_GeneralInfo.createDOM(root)
         self.cp_Content.createDOM(root)
         return root
@@ -65,6 +63,7 @@ class CGSession(ConfigGroup):
         return self.root.cp_Styles.getElement(self.cp_Design.cp_Style)
 
     def createDOM1(self):
-        doc = Document()
+        factory = self.root.xmsf.createInstance("com.sun.star.xml.dom.DocumentBuilder")
+        doc = factory.newDocument()
         self.createDOM(doc)
         return doc
commit 8cb51731eaf718d9e3085651504e80ff3503d0ea
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Wed Apr 3 11:29:51 2013 +0000

    Fixed bugs in the FTP publisher
    
    * Properly handling the presence of proxies.
    * Fixed errors related to the FTPDialog initialization.
    * Fixed errors with the FTP password and URL.
    
    Change-Id: Ib07eb296656dda282e30a6ed1842036e449e2764

diff --git a/wizards/com/sun/star/wizards/common/UCB.py b/wizards/com/sun/star/wizards/common/UCB.py
index 4806399..0065801 100644
--- a/wizards/com/sun/star/wizards/common/UCB.py
+++ b/wizards/com/sun/star/wizards/common/UCB.py
@@ -100,6 +100,9 @@ class UCB(object):
         return aArg
 
     def executeCommand(self, xContent, aCommandName, aArgument):
+        print ("DEBUG !!! executeCommand -- xContent: ", xContent)
+        print ("DEBUG !!! executeCommand -- aCommandName: ", aCommandName)
+        print ("DEBUG !!! executeCommand -- aArgument: ", aArgument)
         aCommand  = Command()
         aCommand.Name     = aCommandName
         aCommand.Handle   = -1 # not available
@@ -107,7 +110,7 @@ class UCB(object):
         return xContent.execute(aCommand, 0, None)
 
     def listFiles(self, path, verifier):
-        print ("DEBUG !!! listFiles - path: ", path)
+        print ("DEBUG !!! listFiles -- path: ", path)
         xContent = self.getContent(path)
 
         aArg = OpenCommandArgument2()
@@ -121,8 +124,10 @@ class UCB(object):
         aArg.Properties[0].Handle = -1
 
         xSet = self.executeCommand(xContent, "open", aArg)
+        print ("DEBUG !!! listFiles -- xSet:  ", xSet)
 
         xResultSet = xSet.getStaticResultSet()
+        print ("DEBUG !!! listFiles -- xResultSet: ", xResultSet)
 
         files = []
 
@@ -130,11 +135,16 @@ class UCB(object):
             # obtain XContentAccess interface for child content access and XRow for properties
             while (True):
                 # Obtain URL of child.
-                aId = xResultSet.queryContentIdentifierString()
-                # First column: Title (column numbers are 1-based!)
-                #aTitle = xResultSet.getString(1)
-                aTitle = FileAccess.getFilename(aId)
-                if (len(aTitle) == 0 and xResultSet.wasNull()):
+                if (hasattr(xResultSet, "queryContentIdentifierString")):
+                    aId = xResultSet.queryContentIdentifierString()
+                    aTitle = FileAccess.getFilename(aId)
+                elif (hasattr(xResultSet, "getString")):
+                    # First column: Title (column numbers are 1-based!)
+                    aTitle = xResultSet.getString(1)
+                else:
+                    aTitle = ""
+                #if (len(aTitle) == 0 and xResultSet.wasNull()):
+                if (len(aTitle) == 0):
                     # ignore
                     pass
                 else:
@@ -149,12 +159,11 @@ class UCB(object):
         return files
 
     def getContentProperty(self, content, propName, classType):
-        pv = []
-        pv[0] = Property()
+        pv = [Property()]
         pv[0].Name = propName
         pv[0].Handle = -1
 
-        row = self.executeCommand(content, "getPropertyValues", pv)
+        row = self.executeCommand(content, "getPropertyValues", tuple(pv))
         if (isinstance(classType, str)):
            return row.getString(1)
         elif (isinstance(classType, bool)):
diff --git a/wizards/com/sun/star/wizards/web/FTPDialog.py b/wizards/com/sun/star/wizards/web/FTPDialog.py
index 995f747..d3c1ddb 100644
--- a/wizards/com/sun/star/wizards/web/FTPDialog.py
+++ b/wizards/com/sun/star/wizards/web/FTPDialog.py
@@ -31,12 +31,12 @@ from ..common.UCB import UCB
 from .data.CGPublish import CGPublish
 from .data.CGSettings import CGSettings
 
-#from com.sun.star.ucb import AuthenticationRequest
-#from com.sun.star.ucb import InteractiveAugmentedIOException
-#from com.sun.star.ucb import InteractiveNetworkConnectException
-#from com.sun.star.ucb import InteractiveNetworkResolveNameException
-#from com.sun.star.ucb import OpenCommandArgument2
-#from com.sun.star.ucb import OpenMode
+from com.sun.star.ucb import AuthenticationRequest
+from com.sun.star.ucb import InteractiveAugmentedIOException
+from com.sun.star.ucb import InteractiveNetworkConnectException
+from com.sun.star.ucb import InteractiveNetworkResolveNameException
+from com.sun.star.ucb import OpenCommandArgument2
+from com.sun.star.ucb.OpenMode import FOLDERS
 
 #PushButtonType_OK_value = uno.getConstantByName( "com.sun.star.awt.PushButtonType.OK" )
 #PushButtonType_CANCEL_value = uno.getConstantByName( "com.sun.star.awt.PushButtonType.CANCEL" )
@@ -90,44 +90,6 @@ class FTPDialog(UnoDialog2, UIConsts):
     ICON_UNKNOWN = "ftpunknown.gif"
     # The icon url for an icon representing the "connecting" state.
     ICON_CONNECTING = "ftpconnecting.gif"    # GUI Components as Class members.
-    # Fixed Line
-    ln1 = None
-    lblFTPAddress = None
-    txtHost = None
-    lblUsername = None
-    txtUsername = None
-    lblPassword = None
-    txtPassword = None
-    # Fixed Line
-    ln2 = None
-    btnTestConnection = None
-    imgStatus = None
-    lblStatus = None
-    # Fixed Line
-    ln3 = None
-    txtDir = None
-    btnDir = None
-    btnOK = None
-    btnCancel = None
-    btnHelp = None
-    # Font Descriptors as Class members.
-
-    # Resources Object
-    resources = None
-    dataAware = []
-    username = ""
-    password = ""
-
-    #The ftp host name
-    host = ""
-    #The ftp directory.
-    folder = ""
-    #the ftp publish object which contains the
-    #data for this dialog.
-    publish = None
-    ucb = None
-    #used for the status images url.
-    imagesDirectory = ""
 
     # constructor.
     # constructs the UI.
@@ -136,13 +98,21 @@ class FTPDialog(UnoDialog2, UIConsts):
     # for this dialog
     # @throws Exception
     def __init__(self, xmsf, p):
+
+        print ("DEBUG !!! FTPDialog.__init__ -- URL: ", p.cp_URL)
+
         super(FTPDialog, self).__init__(xmsf)
         self.publish = p
 
-        #templateDir = p.root.soTemplateDir
-        templateDir = ""
+        templateDir = p.root.soTemplateDir
+        print ("DEBUG !!! FTPDialog.__init__ -- templateDir: ", templateDir)
         self.imagesDirectory = FileAccess.connectURLs(templateDir, "../wizard/bitmap/")
 
+        self.dataAware = []
+        self.host = ""
+        self.username = ""
+        self.password = ""
+
         # Load Resources
         self.resources = FTPDialogResources(xmsf)
         self.ucb = UCB(xmsf)
@@ -177,14 +147,18 @@ class FTPDialog(UnoDialog2, UIConsts):
 
     # Add controls to dialog.
     def build(self):
+        print ("DEBUG !!! FTPDialog.build -- ")
         PROPNAMES_LABEL = (PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_NAME, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH)
         PROPNAMES_BUTTON = (PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_NAME, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH)
         PROPNAMES_BUTTON2 = (PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_NAME, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, "PushButtonType", PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH)
 
-        ln1 = self.insertFixedLine("ln1",
+        print ("DEBUG !!! FTPDialog.build -- resln1_value: ", self.resources.resln1_value)
+        print ("DEBUG !!! FTPDialog.build -- reslblFTPAddress_value: ", self.resources.reslblFTPAddress_value)
+
+        self.ln1 = self.insertFixedLine("ln1",
                 PROPNAMES_LABEL,
                 (8, self.resources.resln1_value, "ln1", 6, 6, 0, 210))
-        lblFTPAddress = self.insertLabel("lblFTPAddress",
+        self.lblFTPAddress = self.insertLabel("lblFTPAddress",
                 PROPNAMES_LABEL,
                 (8, self.resources.reslblFTPAddress_value, "lblFTPAddress", 12, 20, 1, 95))
         self.txtHost = self.insertTextField("txtHost", "disconnect",
@@ -236,6 +210,7 @@ class FTPDialog(UnoDialog2, UIConsts):
 
     # Make hostname, username and password text fields data aware.
     def configure(self):
+        print ("DEBUG !!! FTPDialog.configure -- ")
         self.dataAware.append(UnoDataAware.attachEditControl(self, "host", self.txtHost, True))
         self.dataAware.append(UnoDataAware.attachEditControl(self, "username", self.txtUsername, True))
         self.dataAware.append(UnoDataAware.attachEditControl(self, "password", self.txtPassword, True))
@@ -247,6 +222,7 @@ class FTPDialog(UnoDialog2, UIConsts):
     # @return 0 for cancel, 1 for ok.
     # @throws Exception - well, if something goes wrong...
     def execute(self, parent):
+        print ("DEBUG !!! FTPDialog.execute -- ")
         self.host = self.extractHost(self.publish.cp_URL)
         self.username = "" if (self.publish.cp_Username == None) else self.publish.cp_Username
         self.password = "" if (self.publish.password == None) else self.publish.password
@@ -258,7 +234,7 @@ class FTPDialog(UnoDialog2, UIConsts):
         result = self.executeDialogFromParent(parent)
         # change the CGPublish properties
         if (result == 1):
-            self.publish.cp_URL = "ftp://" + self.host() + self.getDir()
+            self.publish.cp_URL = "ftp://" + self.getHost() + self.getDir()
             self.publish.cp_Username = self.username
             self.publish.password = self.password
 
@@ -278,12 +254,12 @@ class FTPDialog(UnoDialog2, UIConsts):
     def extractHost(self, ftpUrl):
         if (ftpUrl is None or len(ftpUrl) < 6):
             return ""
-        url = ftpUrl.substring(6)
-        i = url.indexOf("/")
+        url = ftpUrl[6:]
+        i = url.find("/")
         if (i == -1):
             return url
         else:
-            return url.substring(0, i)
+            return url[:i]
 
     # used to get data from the CGPublish object.
     # @param ftpUrl
@@ -291,12 +267,12 @@ class FTPDialog(UnoDialog2, UIConsts):
     def extractDir(self, ftpUrl):
         if (ftpUrl is None or len(ftpUrl) < 6):
             return "/"
-        url = ftpUrl.substring(6)
-        i = url.indexOf("/")
+        url = ftpUrl[6:]
+        i = url.find("/")
         if (i == -1):
             return "/"
         else:
-            return url.substring(i)
+            return url[i:]
 
     # enables/disables the "test" button
     # according to the status of the hostname, username, password text fields.
@@ -311,27 +287,28 @@ class FTPDialog(UnoDialog2, UIConsts):
 
     # @return the ftp url with username and password,
     # but without the directory portion.
-    def getAcountUrl(self):
-        return "ftp://" + self.username + ":" + self.password + "@" + self.host()
+    def getAccountUrl(self):
+        return "ftp://" + self.username + ":" + self.password + "@" + self.getHost()
 
     # return the host name without the "ftp://"
     # @return
-    def host(self):
-        return self.host(self.host)
+    def getHost(self):
+        return self.getHost1(self.host)
 
     @classmethod
-    def host1(self, s):
-        return s.substring(6) if s.startswith("ftp://") else s
+    def getHost1(self, s):
+        return s[6:] if s.startswith("ftp://") else s
 
     # @return the full ftp url including username, password and directory portion.
     def getFullUrl(self):
-        return self.getAcountUrl() + self.folder
+        return self.getAccountUrl() + self.folder
 
     # First I try to connect to the full url, including directory.
     # If an InteractiveAugmentedIOException accures, I try again,
     # this time without the dir spec. If this works, I change the dir
     # to "/", if not I say to the user its his problem...
     def connect(self):
+        print ("DEBUG !!! FTPDialog.connect -- ")
         self.setEnabled(self.btnTestConnection, False)
         self.setLabel(self.STATUS_CONNECTING)
         success = False
@@ -340,7 +317,7 @@ class FTPDialog(UnoDialog2, UIConsts):
             success = True
         except InteractiveAugmentedIOException as iaioex:
             try:
-                self.connect1(self.getAcountUrl())
+                self.connect1(self.getAccountUrl())
                 self.setDir("/")
                 success = True
             except Exception:
@@ -372,20 +349,22 @@ class FTPDialog(UnoDialog2, UIConsts):
     # @param acountUrl
     # @throws Exception
     def connect1(self, acountUrl):
-        content = self.ucb.getContent(self.acountUrl)
+        content = self.ucb.getContent(self.getAccountUrl())
+        print ("DEBUG !!! connect1 -- content: ", content)
 
         # list files in the content.
-        l = self.ucb.listFiles(self.acountUrl, None)
+        l = self.ucb.listFiles(self.getAccountUrl(), None)
+        print ("DEBUG !!! connect1 -- l: ", l)
 
         # open the content
         aArg = OpenCommandArgument2()
-        aArg.Mode = OpenMode.FOLDERS # FOLDER, DOCUMENTS -> simple filter
+        aArg.Mode = FOLDERS # FOLDER, DOCUMENTS -> simple filter
         aArg.Priority = 32768 # Ignored by most implementations
 
         self.ucb.executeCommand(content, "open", aArg)
 
         # get the title property of the content.
-        obj = self.ucb.getContentProperty(content, PropertyNames.PROPERTY_TITLE, str())
+        #obj = self.ucb.getContentProperty(content, "Title", str)
 
     # changes the ftp subdirectory, in both
     # the UI and the data.
@@ -459,7 +438,7 @@ class FTPDialog(UnoDialog2, UIConsts):
             # if the user chose a local directory,
             # sI do not accept it.
             if (newUrl.startswith("ftp://")):
-                self.setDir(extractDir(newUrl))
+                self.setDir(self.extractDir(newUrl))
             else:
                 AbstractErrorHandler.showMessage(self.xMSF, self.xUnoDialog.getPeer(), self.resources.resIllegalFolder, ErrorHandler.ERROR_PROCESS_FATAL)
 
@@ -468,5 +447,4 @@ class FTPDialog(UnoDialog2, UIConsts):
     # @return the full ftp url with username password and everything one needs.
     @classmethod
     def getFullURL1(self, p):
-        #return "ftp://" + p.Username + ":" + p.password + "@" + self.host(p.URL)
-        return "ftp://" + p.cp_Username + ":" + "" + "@" + self.host1(p.cp_URL)
+        return "ftp://" + p.cp_Username + ":" + p.password + "@" + self.getHost1(p.cp_URL)
diff --git a/wizards/com/sun/star/wizards/web/FTPDialogResources.py b/wizards/com/sun/star/wizards/web/FTPDialogResources.py
index 1190fe0..8785d08 100644
--- a/wizards/com/sun/star/wizards/web/FTPDialogResources.py
+++ b/wizards/com/sun/star/wizards/web/FTPDialogResources.py
@@ -23,57 +23,33 @@ class FTPDialogResources(Resource):
     MODULE_NAME = "dbw"
     RID_FTPDIALOG_START = 4200
     RID_COMMON_START = 500
-    resFTPDialog_title = ""
-    reslblUsername_value = ""
-    reslblPassword_value = ""
-    resbtnConnect_value = ""
-    resbtnOK_value = ""
-    resbtnHelp_value = ""
-    resbtnCancel_value = ""
-    resln1_value = ""
-    reslblFTPAddress_value = ""
-    resln2_value = ""
-    resln3_value = ""
-    esln3_value = ""
-    restxtDir_value = ""
-    resbtnDir_value = ""
-    resFTPDisconnected = ""
-    resFTPConnected = ""
-    resFTPUserPwdWrong = ""
-    resFTPServerNotFound = ""
-    resFTPRights = ""
-    resFTPHostUnreachable = ""
-    resFTPUnknownError = ""
-    resFTPDirectory = ""
-    resIllegalFolder = ""
-    resConnecting = ""
 
     def __init__(self, xmsf):
         super(FTPDialogResources, self).__init__(xmsf, self.MODULE_NAME)
 
         # Delete the String, uncomment the getResText method
-        resFTPDialog_title = self.getResText(self.RID_FTPDIALOG_START + 0)
-        reslblUsername_value = self.getResText(self.RID_FTPDIALOG_START + 1)
-        reslblPassword_value = self.getResText(self.RID_FTPDIALOG_START + 2)
-        resbtnConnect_value = self.getResText(self.RID_FTPDIALOG_START + 3)
-        resln1_value = self.getResText(self.RID_FTPDIALOG_START + 4)
-        reslblFTPAddress_value = self.getResText(self.RID_FTPDIALOG_START + 5)
-        resln2_value = self.getResText(self.RID_FTPDIALOG_START + 6)
-        resln3_value = self.getResText(self.RID_FTPDIALOG_START + 7)
-        resbtnDir_value = self.getResText(self.RID_FTPDIALOG_START + 8)
-        resFTPDisconnected = self.getResText(self.RID_FTPDIALOG_START + 9)
-        resFTPConnected = self.getResText(self.RID_FTPDIALOG_START + 10)
-        resFTPUserPwdWrong = self.getResText(self.RID_FTPDIALOG_START + 11)
-        resFTPServerNotFound = self.getResText(self.RID_FTPDIALOG_START + 12)
-        resFTPRights = self.getResText(self.RID_FTPDIALOG_START + 13)
-        resFTPHostUnreachable = self.getResText(self.RID_FTPDIALOG_START + 14)
-        resFTPUnknownError = self.getResText(self.RID_FTPDIALOG_START + 15)
-        resFTPDirectory = self.getResText(self.RID_FTPDIALOG_START + 16)
-        resIllegalFolder = self.getResText(self.RID_FTPDIALOG_START + 17)
-        resConnecting = self.getResText(self.RID_FTPDIALOG_START + 18)
+        self.resFTPDialog_title = self.getResText(self.RID_FTPDIALOG_START + 0)
+        self.reslblUsername_value = self.getResText(self.RID_FTPDIALOG_START + 1)
+        self.reslblPassword_value = self.getResText(self.RID_FTPDIALOG_START + 2)
+        self.resbtnConnect_value = self.getResText(self.RID_FTPDIALOG_START + 3)
+        self.resln1_value = self.getResText(self.RID_FTPDIALOG_START + 4)
+        self.reslblFTPAddress_value = self.getResText(self.RID_FTPDIALOG_START + 5)
+        self.resln2_value = self.getResText(self.RID_FTPDIALOG_START + 6)
+        self.resln3_value = self.getResText(self.RID_FTPDIALOG_START + 7)
+        self.resbtnDir_value = self.getResText(self.RID_FTPDIALOG_START + 8)
+        self.resFTPDisconnected = self.getResText(self.RID_FTPDIALOG_START + 9)
+        self.resFTPConnected = self.getResText(self.RID_FTPDIALOG_START + 10)
+        self.resFTPUserPwdWrong = self.getResText(self.RID_FTPDIALOG_START + 11)
+        self.resFTPServerNotFound = self.getResText(self.RID_FTPDIALOG_START + 12)
+        self.resFTPRights = self.getResText(self.RID_FTPDIALOG_START + 13)
+        self.resFTPHostUnreachable = self.getResText(self.RID_FTPDIALOG_START + 14)
+        self.resFTPUnknownError = self.getResText(self.RID_FTPDIALOG_START + 15)
+        self.resFTPDirectory = self.getResText(self.RID_FTPDIALOG_START + 16)
+        self.resIllegalFolder = self.getResText(self.RID_FTPDIALOG_START + 17)
+        self.resConnecting = self.getResText(self.RID_FTPDIALOG_START + 18)
 
-        resbtnCancel_value = self.getResText(self.RID_COMMON_START + 11)
-        resbtnOK_value = self.getResText(self.RID_COMMON_START + 18)
-        resbtnHelp_value = self.getResText(self.RID_COMMON_START + 15)
+        self.resbtnCancel_value = self.getResText(self.RID_COMMON_START + 11)
+        self.resbtnOK_value = self.getResText(self.RID_COMMON_START + 18)
+        self.resbtnHelp_value = self.getResText(self.RID_COMMON_START + 15)
 
-        restxtDir_value = "/"
+        self.restxtDir_value = "/"
diff --git a/wizards/com/sun/star/wizards/web/ProcessErrorHandler.py b/wizards/com/sun/star/wizards/web/ProcessErrorHandler.py
index 6b6c8bb..84201d3 100644
--- a/wizards/com/sun/star/wizards/web/ProcessErrorHandler.py
+++ b/wizards/com/sun/star/wizards/web/ProcessErrorHandler.py
@@ -52,7 +52,7 @@ class ProcessErrorHandler(AbstractErrorHandler, ProcessErrors):
         elif ix == ProcessErrors.ERROR_GENERATE_COPY:
             return self.resources.resErrTOCMedia
         elif ix == ProcessErrors.ERROR_PUBLISH:
-            return self.resources.resErrPublish.replace(self.URL, obj.URL)
+            return self.resources.resErrPublish.replace(self.URL, obj.cp_URL)
         elif (ix == ProcessErrors.ERROR_EXPORT or ix == ProcessErrors.ERROR_PUBLISH_MEDIA):
             return self.resources.resErrPublishMedia
         elif ix == ProcessErrors.ERROR_CLEANUP:
diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.py b/wizards/com/sun/star/wizards/web/WWD_Events.py
index 9ca6772..2b13edf 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Events.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Events.py
@@ -798,9 +798,8 @@ class WWD_Events(WWD_Startup):
         '''
         p = self.getPublisher(FTP_PUBLISHER)
         # if ftp is checked, and no proxies are set, and password is empty...
-        password = getattr(p, "password", "")
         print ("FTP checked: ", p.cp_Publish)
-        if p.cp_Publish and not proxies and (password is None or password == ""):
+        if p.cp_Publish and not self.proxies and (p.password is None or p.password == ""):
             if self.showFTPDialog(p):
                 self.updatePublishUI(2)
                 #now continue...
@@ -852,10 +851,10 @@ class WWD_Events(WWD_Startup):
             I return the value of the ftp publisher cp_Publish
             property to its original value...
             '''
+        if self.proxies:
+            p.cp_Publish = self.ftp
 
-        p.cp_Publish = self.ftp
         #if the "save settings" checkbox is on...
-
         if self.isSaveSession():
             # if canceled by user
             if not self.saveSession():
diff --git a/wizards/com/sun/star/wizards/web/WWD_General.py b/wizards/com/sun/star/wizards/web/WWD_General.py
index 7dd6cf6c..2778194 100644
--- a/wizards/com/sun/star/wizards/web/WWD_General.py
+++ b/wizards/com/sun/star/wizards/web/WWD_General.py
@@ -40,16 +40,16 @@ This class implements general methods, used by different sub-classes
 
 class WWD_General(WebWizardDialog):
 
-    settings = None
-    folderDialog = None
-    ftpDialog = None
-    zipDialog = None
-    docAddDialog = None
-    fileAccess = None
-
     def __init__(self, xmsf):
         super(WWD_General, self).__init__(xmsf)
         self.xStringSubstitution = SystemDialog.createStringSubstitution(xmsf)
+        self.settings = None
+        self.folderDialog = None
+        self.ftpDialog = None
+        self.zipDialog = None
+        self.docAddDialog = None
+        self.fileAccess = None
+        self.proxies = None
 
     def getStatusDialog(self):
         statusDialog = StatusDialog(
diff --git a/wizards/com/sun/star/wizards/web/WWD_Startup.py b/wizards/com/sun/star/wizards/web/WWD_Startup.py
index 5bea662..7b7891d 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Startup.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Startup.py
@@ -107,7 +107,7 @@ class WWD_Startup(WWD_General):
     def __init__(self, xmsf):
         super(WWD_Startup, self).__init__(xmsf)
         self.selectedDoc = []
-        self.ftp = False
+        self.ftp = True
         self.sda = None
         self.docAware = []
         self.designAware = []
@@ -305,7 +305,7 @@ class WWD_Startup(WWD_General):
             #self.settings.cp_Styles.sort(None)
             self.prepareSessionLists()
             if self.proxies:
-                self.__ftp = self.getPublisher(FTP_PUBLISHER).cp_Publish
+                self.ftp = self.getPublisher(FTP_PUBLISHER).cp_Publish
                 self.getPublisher(FTP_PUBLISHER).cp_Publish = False
 
         except Exception:
diff --git a/wizards/com/sun/star/wizards/web/data/CGPublish.py b/wizards/com/sun/star/wizards/web/data/CGPublish.py
index 6a5c92f..e9db325 100644
--- a/wizards/com/sun/star/wizards/web/data/CGPublish.py
+++ b/wizards/com/sun/star/wizards/web/data/CGPublish.py
@@ -46,8 +46,3 @@ class CGPublish(ConfigGroup):
         except Exception as e:
             e.printStackTrace()
             return ""
-
-    def ftpURL(self):
-        pass
-        #COMMENTED
-        #return "ftp://" + self.cp_Username + ((self.password != None and self.password.length() > 0) ? ":" + self.password : "") + "@" + self.cp_URL.substring(7)
commit 907373e6f13d7eee8b08247f7a9d206251021d8a
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Tue Apr 2 11:31:39 2013 +0000

    Fixed bug in the zip publisher url.
    
    * Enable again the "delete" operation in the FileAccess class.
    
    Change-Id: I3e3fe9d743433bb30126b1b4d21bec0fa25db825

diff --git a/wizards/com/sun/star/wizards/common/FileAccess.py b/wizards/com/sun/star/wizards/common/FileAccess.py
index 4a2b2cc..74e5fcf 100644
--- a/wizards/com/sun/star/wizards/common/FileAccess.py
+++ b/wizards/com/sun/star/wizards/common/FileAccess.py
@@ -249,8 +249,9 @@ class FileAccess(object):
         return None
 
     def delete(self, filename):
+        print ("DEBUG !!! FileAccess.delete -- filename: ", filename)
         try:
-            #self.xInterface.kill(filename)
+            self.xInterface.kill(filename)
             return True
         except Exception:
             traceback.print_exc()
diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.py b/wizards/com/sun/star/wizards/web/WWD_Events.py
index 472890a..9ca6772 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Events.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Events.py
@@ -529,9 +529,9 @@ class WWD_Events(WWD_Startup):
         result = True
         # 1. check local publish target
         p = self.getPublisher(LOCAL_PUBLISHER)
+        fileAccess = self.getFileAccess()
         # should publish ?
         if (p.cp_Publish):
-            fileAccess = self.getFileAccess()
             path = fileAccess.getPath(p.url, None)
             # target exists?
             if fileAccess.exists(p.url, False):
@@ -824,17 +824,22 @@ class WWD_Events(WWD_Startup):
         zip publisher is using another url form...
         '''
         p = self.getPublisher(ZIP_PUBLISHER)
+        print ("DEBUG !!! finishWizard2 - zip URL: ", p.cp_URL)
+        #remove the 'file://' prefix
+        url1 = p.cp_URL.replace("file://", "")
         #replace the '%' with '%25'
-        url1 = p.cp_URL.replace("%25", "%")
+        url1 = url1.replace("%", "%25")
         #replace all '/' with '%2F'
-        url1 = url1.replace("%F", "/")
-        p.url = "vnd.sun.star.zip://" + url1 + "/";
+        url1 = url1.replace("/", "%2F")
+
+        p.url = "vnd.sun.star.zip://" + url1 + "/"
+        print ("DEBUG !!! finishWizard2 - zip url: ", p.url)
 
         '''
         and now ftp...
         '''
         p = self.getPublisher(FTP_PUBLISHER)
-        p.url = FTPDialog.getFullURL1(p);
+        p.url = FTPDialog.getFullURL1(p)
 
         ''' first we check the publishing targets. If they exist we warn and
         ask what to do. a False here means the user said "cancel"
commit a882f0f8fb9a884c2a83cb24197daa8bb2902e0d
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Tue Apr 2 09:57:59 2013 +0000

    Fixed bug in the UCB "listFiles" method.
    
    For some reason, the xRow interface is not retrieving the title
    of the file, so I had to get it directly from the content Id.
    
    Change-Id: Ib3e07d0287323a045c3294b967e7d53856d3bb91

diff --git a/wizards/com/sun/star/wizards/common/UCB.py b/wizards/com/sun/star/wizards/common/UCB.py
index a7c3ff1..4806399 100644
--- a/wizards/com/sun/star/wizards/common/UCB.py
+++ b/wizards/com/sun/star/wizards/common/UCB.py
@@ -30,13 +30,6 @@ from com.sun.star.ucb.NameClash import OVERWRITE
 from com.sun.star.ucb import OpenCommandArgument2
 from com.sun.star.ucb.OpenMode import ALL
 from com.sun.star.ucb.TransferCommandOperation import COPY
-#from com.sun.star.ucb import XCommandProcessor
-#from com.sun.star.ucb import XContentAccess
-#from com.sun.star.ucb import XContentIdentifier
-from com.sun.star.ucb import XContentIdentifierFactory
-from com.sun.star.ucb import XContentProvider
-#from com.sun.star.ucb import XDynamicResultSet
-#from com.sun.star.uno import UnoRuntime
 
 
 # This class is used to copy the content of a folder to
@@ -69,14 +62,15 @@ class UCB(object):
         self.copy1(sourceDir,targetDir, None)
 
     def copy1(self, sourceDir, targetDir, verifier):
+        print ("DEBUG !!! copy1 - sourcedir, targetDir, verifier :", sourceDir, targetDir, verifier)
         files = self.listFiles(sourceDir, verifier)
+        print ("DEBUG !!! copy1 - num files: ", len(files))
         for i in range(len(files)):
-          self.copy2(sourceDir, files[i], targetDir)
+          self.copy3(sourceDir, files[i], targetDir)
 
     def copy2(self, sourceDir, filename, targetDir, targetName):
-        #sourceDir = "file:///home/javi/intel-libreoffice/install/share/config/" + sourceDir[7:]
-        print ("WARNING !!! copy2 - sourcedir, filenName :", sourceDir, filename)
-        print ("WARNING !!! copy2 - targetDir, targetName :", targetDir, targetName)
+        print ("DEBUG !!! copy2 - sourcedir, filenName :", sourceDir, filename)
+        print ("DEBUG !!! copy2 - targetDir, targetName :", targetDir, targetName)
         if (not self.fa.exists(targetDir, True)):
           self.fa.xInterface.createFolder(targetDir)
         self.executeCommand(self.ucb, "globalTransfer", self.copyArg(sourceDir, filename, targetDir, targetName))
@@ -113,6 +107,7 @@ class UCB(object):
         return xContent.execute(aCommand, 0, None)
 
     def listFiles(self, path, verifier):
+        print ("DEBUG !!! listFiles - path: ", path)
         xContent = self.getContent(path)
 
         aArg = OpenCommandArgument2()
@@ -137,7 +132,8 @@ class UCB(object):
                 # Obtain URL of child.
                 aId = xResultSet.queryContentIdentifierString()
                 # First column: Title (column numbers are 1-based!)
-                aTitle = xResultSet.getString(1)
+                #aTitle = xResultSet.getString(1)
+                aTitle = FileAccess.getFilename(aId)
                 if (len(aTitle) == 0 and xResultSet.wasNull()):
                     # ignore
                     pass
@@ -172,16 +168,9 @@ class UCB(object):
 
     def getContent(self, path):
         try:
-            print ("WARNING !!! getContent - path: ", path)
-            #if (path.startswith("/")):
-            #    s = "file://" + path
-            #elif (path.startswith("file://")):
-            #    s = path
-            #else:
-            #    s = "file:///home/javi/intel-libreoffice/install/share/config/" + path[7:]
-            #ident = self.ucb.createContentIdentifier(s)
+            print ("DEBUG !!! getContent - path: ", path)
             ident = self.ucb.createContentIdentifier(path)
-            print ("WARNING !!! getContent - ident: ", ident.getContentIdentifier())
+            print ("DEBUG !!! getContent - ident: ", ident.getContentIdentifier())
             return self.ucb.queryContent(ident)
         except Exception:
             traceback.print_exc()
diff --git a/wizards/com/sun/star/wizards/web/ExtensionVerifier.py b/wizards/com/sun/star/wizards/web/ExtensionVerifier.py
index 6f5fee0..524027b 100644
--- a/wizards/com/sun/star/wizards/web/ExtensionVerifier.py
+++ b/wizards/com/sun/star/wizards/web/ExtensionVerifier.py
@@ -33,6 +33,6 @@ class ExtensionVerifier(UCB.Verifier):
     # a String which does not end with the
     # given extension.
     def verify(self, obj):
-        if (isinstance(obj, str())):
-            return not obj.endsWith(extension)
+        if (isinstance(obj, str)):
+            return not obj.endswith(self.extension)
         return False
commit 941e794968482ad5b3ecc1573bbc054434c132e7
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Mon Apr 1 17:39:23 2013 +0000

    Fixed bug in the document list box.
    
    - Added a Renderer private class in the ListModelBinder, in order to print the file name.
    - The intervalAdded wasn't triggering the insert, so using a while loop instead of range.
    - Defined a new method getBoolean to determine when the controls are enabled.
    - Defined a new metho getSelectedDoc, to be used via uno.invoke (getter/setter).
    - Catching the specific Exceptions in the WebConfigSet.add method.
    
    Change-Id: I2576b4e441386cd0456aa4d2079f8fa62ff4ccbd

diff --git a/wizards/com/sun/star/wizards/ui/event/DataAware.py b/wizards/com/sun/star/wizards/ui/event/DataAware.py
index c3b3760..d52fb3a 100644
--- a/wizards/com/sun/star/wizards/ui/event/DataAware.py
+++ b/wizards/com/sun/star/wizards/ui/event/DataAware.py
@@ -124,9 +124,9 @@ class DataAware(object):
             ui = self.getFromUI()
             print ("DEBUG !!! DataAware.updateData -- ui: ", ui)
             if data is not ui:
-                if isinstance(ui,tuple):
+                #if isinstance(ui,tuple):
                     #Selected Element listbox
-                    ui = ui[0]
+                #    ui = ui[0]
                 if useUno:
                     uno.invoke(self._dataObject, "set" + self._field, (ui,))
                 else:
diff --git a/wizards/com/sun/star/wizards/ui/event/ListModelBinder.py b/wizards/com/sun/star/wizards/ui/event/ListModelBinder.py
index 1f6f001..e0415c1 100644
--- a/wizards/com/sun/star/wizards/ui/event/ListModelBinder.py
+++ b/wizards/com/sun/star/wizards/ui/event/ListModelBinder.py
@@ -16,6 +16,8 @@
 #   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 #
 
+from abc import abstractmethod
+
 from .ListDataListener import ListDataListener
 
 class ListModelBinder(ListDataListener):
@@ -25,6 +27,7 @@ class ListModelBinder(ListDataListener):
         self.unoListModel = unoListBox.Model
         self.listModel = None
         self.setListModel(listModel_)
+        self.renderer = self.Renderer()
 
     def setListModel(self, newListModel):
         if self.listModel is not None:
@@ -53,9 +56,9 @@ class ListModelBinder(ListDataListener):
         self.unoList.addItem(self.getItemString(i), i)
 
     def getItemString(self, i):
-        return self.getItemString(self.listModel.getElementAt(i))
+        return self.getItemString1(self.listModel.getElementAt(i))
 
-    def getItemString(self, item):
+    def getItemString1(self, item):
         return self.renderer.render(item)
 
     def getSelectedItems(self):
@@ -66,13 +69,26 @@ class ListModelBinder(ListDataListener):
 
     def intervalAdded(self, lde):
         print ("DEBUG !!! intervalAdded -- lde: ", lde)
-        for i in range(lde.getIndex0(), lde.getIndex1()):
+        i = lde.getIndex0()
+        while (i <= lde.getIndex1()):
             self.insert(i)
+            i += 1
 
     def intervalRemoved(self, lde):
         print ("DEBUG !!! intervalRemoved -- lde: ", lde)
         self.remove(lde.getIndex0(), lde.getIndex1())
 
+    class Renderer:
+
+        @abstractmethod
+        def render(self, item):
+            if (item is None):
+                return ""
+            elif (isinstance(item, int)):
+                return str(item)
+            else:
+                return item.toString()
+
     @classmethod
     def fillList(self, xlist, items, renderer):
         xlist.Model.StringItemList = ()
diff --git a/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py
index b739dd4..8ce341a 100644
--- a/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py
+++ b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py
@@ -42,8 +42,9 @@ class UnoDataAware(DataAware):
         self.isShort = isShort
 
     def enableControls(self, value):
+        print ("DEBUG !!! enableControls -- value: ", value)
         for i in self.disableObjects:
-            i.Model.Enabled = bool(value)
+            i.Model.Enabled = self.getBoolean(value)
 
     def setToUI(self, value):
         if (isinstance(value, list)):
@@ -52,13 +53,34 @@ class UnoDataAware(DataAware):
             value = tuple(value)
         elif self.isShort:
             print ("DEBUG !!! value is sort: ", value)
-            value = uno.Any("[]short", (value,))
+            value = uno.Any("[]short", value)
         if (hasattr(self.unoModel, self.unoPropName)):
             setattr(self.unoModel, self.unoPropName, value)
         else:
             print ("DEBUG !!! UnoDataAware.setToUI -- dataObject hasn't the attribute, su using the 'setter' method.")
             uno.invoke(self.unoModel, "set" + self.unoPropName, (ui,))
 
+    # Try to get from an arbitrary object a boolean value.
+    # Null returns Boolean.FALSE;
+    # A Boolean object returns itself.
+    # An Array returns true if it not empty.
+    # An Empty String returns Boolean.FALSE.
+    # everything else returns a Boolean.TRUE.
+    # @param value
+    # @return
+    def getBoolean(self, value):
+        if (value is None):
+            return False
+        elif (isinstance(value, bool)):
+            return bool(value)
+        elif (isinstance(value, list)):
+            return True if (len(value) is not 0) else False
+        elif (value is ""):
+            return False
+        elif (isinstance(value, int)):
+            return True if (value == 0) else False
+        else:
+            return True
 
     def getFromUI(self):
         return getattr(self.unoModel, self.unoPropName)
diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.py b/wizards/com/sun/star/wizards/web/WWD_Events.py
index 309c11e..472890a 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Events.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Events.py
@@ -210,6 +210,15 @@ class WWD_Events(WWD_Startup):
     '''
 
     '''
+    A method used by the UnoDataAware attached
+    to the Documents listbox.
+    See the concept of the DataAware objects to undestand
+    why it is there...
+    '''
+    def getSelectedDoc(self):
+        return self.selectedDoc
+
+    '''
     when the user clicks another document
     in the listbox, this method is called,
     and couses the display in
@@ -230,7 +239,7 @@ class WWD_Events(WWD_Startup):
             print ("DEBUG !!! setSelectedDoc -- oddDoc is None.")
             self.fillExportList(self.settings.getExporters(doc.appType))
 
-        self.selectedDoc = s
+        self.selectedDoc = list(s)
         if (doc is not None):
             self.mountList(doc, self.docAware)
             self.disableDocUpDown()
diff --git a/wizards/com/sun/star/wizards/web/WWD_Startup.py b/wizards/com/sun/star/wizards/web/WWD_Startup.py
index 3ca83d99..5bea662 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Startup.py
+++ b/wizards/com/sun/star/wizards/web/WWD_Startup.py
@@ -379,7 +379,7 @@ class WWD_Startup(WWD_General):
 
         #page 2 : document properties
         self.docListDA = UnoDataAware.attachListBox(
-            self, "selectedDoc", self.lstDocuments, False)
+            self, "SelectedDoc", self.lstDocuments, False)
         self.docListDA.disableObjects = \
             [self.lnDocsInfo, self.btnRemoveDoc, self.lblDocTitle,
                 self.txtDocTitle, self.lblDocInfo, self.txtDocInfo,
diff --git a/wizards/com/sun/star/wizards/web/WebConfigSet.py b/wizards/com/sun/star/wizards/web/WebConfigSet.py
index f9d704d..4ab5ea3 100644
--- a/wizards/com/sun/star/wizards/web/WebConfigSet.py
+++ b/wizards/com/sun/star/wizards/web/WebConfigSet.py
@@ -54,21 +54,20 @@ class WebConfigSet(ConfigGroup):
             print ("DEBUG !!! WebConfigSet.add -- name IS an integer.")
             self.childrenList.insert(i, o)
             self.fireListDataListenerIntervalAdded(i, i);
-        except Exception:
+        except ValueError:
             print ("DEBUG !!! WebConfigSet.add -- name IS NOT an integer.")
-            try:
+            if (hasattr(o, "cp_Index")):
                 i = o.cp_Index
                 print ("DEBUG !!! WebConfigSet.add -- index: ", i)
                 oldSize = self.getSize()
                 print ("DEBUG !!! WebConfigSet.add -- oldSize: ", oldSize)
-                if oldSize <= i:
-                    newSize = i - oldSize
-                    self.childrenList += [None] * newSize
+                while (self.getSize() <= i):
+                    self.childrenList.append(None)
                 self.childrenList[i] = o
                 if oldSize > i:
                     oldSize = i
                 self.fireListDataListenerIntervalAdded(oldSize, i);
-            except Exception:
+            else:
                 if (oldO is not None):
                     print ("DEBUG !!! WebConfigSet.add -- No cp_Index attribute, but element already present, so replace it.")
                     i = self.childrenList.index(oldO)
commit 8e083b53a1e28eaa0bb672a93acfd23564972638
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Mon Apr 1 13:42:25 2013 +0000

    Fixed bug in the docUp/Down buttons.
    
    The StartSymbol font was replaced by the OpenSymbol font family.
    
    Change-Id: I8e30121c09d439b3497f6d92384eed2afab15cd9

diff --git a/wizards/com/sun/star/wizards/web/WebWizardDialog.py b/wizards/com/sun/star/wizards/web/WebWizardDialog.py
index bec0f70..47a7880 100644
--- a/wizards/com/sun/star/wizards/web/WebWizardDialog.py
+++ b/wizards/com/sun/star/wizards/web/WebWizardDialog.py
@@ -130,7 +130,7 @@ class WebWizardDialog(WizardDialog):
         self.fontDescriptor6.StyleName = "Bold Italic"
         self.fontDescriptor6.Weight = 150
         self.fontDescriptor6.Slant = ITALIC
-        self.fontDescriptor7.Name = "StarSymbol"
+        self.fontDescriptor7.Name = "OpenSymbol"
         self.fontDescriptor7.Height = 9
         self.fontDescriptor7.StyleName = "Regular"
         self.fontDescriptor7.Weight = 100
diff --git a/wizards/com/sun/star/wizards/web/WebWizardDialogResources.py b/wizards/com/sun/star/wizards/web/WebWizardDialogResources.py
index a8b5e54..ea45660 100644
--- a/wizards/com/sun/star/wizards/web/WebWizardDialogResources.py
+++ b/wizards/com/sun/star/wizards/web/WebWizardDialogResources.py
@@ -31,8 +31,8 @@ class WebWizardDialogResources(Resource):
     def __init__(self, xmsf):
         super(WebWizardDialogResources,self).__init__(xmsf,
             WebWizardDialogResources.MODULE_NAME)
-        self.resbtnDocUp_value = str(8743)
-        self.resbtnDocDown_value = str(8744)
+        self.resbtnDocUp_value = chr(8743)
+        self.resbtnDocDown_value = chr(8744)
 
         #Delete the String, uncomment the getResText method
         self.resWebWizardDialog_title = self.getResText(
commit 7294c3efbdf7b0377e8501e8a408b9e1b1800ee5
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Thu Mar 28 16:43:58 2013 +0000

    WedConfigSet: Fixed bug in the way the childrenList was using the cp_Index.
    
    Change-Id: Iaaf7ba4d198b244c1800a5de156163ddd8bd5296

diff --git a/wizards/com/sun/star/wizards/web/WebConfigSet.py b/wizards/com/sun/star/wizards/web/WebConfigSet.py
index 5439b72..f9d704d 100644
--- a/wizards/com/sun/star/wizards/web/WebConfigSet.py
+++ b/wizards/com/sun/star/wizards/web/WebConfigSet.py
@@ -38,7 +38,7 @@ class WebConfigSet(ConfigGroup):
         self.childClass = childType
         self.childrenMap = {}
         self.childrenList = []
-        self.noNulls = False
+        self.noNulls = True
         self.listenerList = None
 
     def add(self, name, o):
@@ -61,14 +61,10 @@ class WebConfigSet(ConfigGroup):
                 print ("DEBUG !!! WebConfigSet.add -- index: ", i)
                 oldSize = self.getSize()
                 print ("DEBUG !!! WebConfigSet.add -- oldSize: ", oldSize)
-                if oldSize < i:
+                if oldSize <= i:
                     newSize = i - oldSize
                     self.childrenList += [None] * newSize
-                    self.noNulls |= True
-                else:
-                    self.noNulls |= False
-                print ("DEBUG !!! WebConfigSet.add -- inserting object o: ", o)
-                self.childrenList.insert(i, o)
+                self.childrenList[i] = o
                 if oldSize > i:
                     oldSize = i
                 self.fireListDataListenerIntervalAdded(oldSize, i);
commit ed83d99e0188bc79a17a816b67b5a556ae351d82
Author: Javier Fernandez <jfernandez at igalia.com>
Date:   Thu Mar 28 12:13:36 2013 +0000

    Implementing the Design DataAware features and ItemListeners.
    
    Change-Id: I22ac7c16110a9f92a575dc23f2d3477d163ddb07

diff --git a/wizards/Pyuno_commonwizards.mk b/wizards/Pyuno_commonwizards.mk
index a62b356..82d867f 100644
--- a/wizards/Pyuno_commonwizards.mk
+++ b/wizards/Pyuno_commonwizards.mk
@@ -71,6 +71,7 @@ $(eval $(call gb_Pyuno_add_files,wizards,\
     ui/event/ListModelBinder.py \
     ui/event/RadioDataAware.py \
     ui/event/UnoDataAware.py \
+    ui/event/SimpleDataAware.py \
     ui/event/Task.py \
     ui/event/TaskEvent.py \
     ui/event/TaskListener.py \
diff --git a/wizards/com/sun/star/wizards/ui/ImageList.py b/wizards/com/sun/star/wizards/ui/ImageList.py
index 6e46908..38a0ea5 100644
--- a/wizards/com/sun/star/wizards/ui/ImageList.py
+++ b/wizards/com/sun/star/wizards/ui/ImageList.py
@@ -82,6 +82,7 @@ class ImageList(ListDataListener):
         self.renderer = None
         self.counterRenderer = self.SimpleCounterRenderer()
         self.MOVE_SELECTION_VALS = list(range(3))
+        self.itemListenerList = None
 
     def onMousePressed(self, event):
         print ("DEBUG !!! onMousePressed -- Mouse pressed.")
@@ -219,6 +220,7 @@ class ImageList(ListDataListener):
             (self.imageSize.Height + self.gap.Height) + self.gap.Height
 
     def refreshImages(self):
+        print ("DEBUG !!! refreshImages -- ")
         if self.showButtons:
             self.refreshCounterText()
 
@@ -261,6 +263,10 @@ class ImageList(ListDataListener):
             return i
 
     def refreshSelection(self):
+        print ("DEBUG !!! refreshSelection -- selected: ", self.selected)
+        print ("DEBUG !!! refreshSelection -- pageStart: ", self.pageStart)
+        print ("DEBUG !!! refreshSelection -- rows: ", self.rows)
+        print ("DEBUG !!! refreshSelection -- cols: ", self.cols)
         if self.selected < self.pageStart or \
                 self.selected >= (self.pageStart + self.rows * self.cols):
             self.hideSelection()
@@ -268,6 +274,7 @@ class ImageList(ListDataListener):
             self.moveSelection(self.getImageIndexFor(self.selected))
 
     def hideSelection(self):
+        print ("DEBUG !!!  -- hideSelection")
         self.grbxSelectedImage.Model.Step = ImageList.HIDE_PAGE
         self.grbxSelectedImage.Visible = False
 
@@ -292,7 +299,7 @@ class ImageList(ListDataListener):
         uno.invoke(self.grbxSelectedImage.Model, "setPropertyValues",
                    ((ImageList.MOVE_SELECTION),
                     (tuple(self.MOVE_SELECTION_VALS))))

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list