bin/extract-tooltip.py | 107 ++++++++++++++++++++++++++++++++ sc/qa/unit/data/xlsx/check-boolean.xlsx |binary sc/qa/unit/subsequent_filters-test.cxx | 25 +++++++ sc/source/core/data/document10.cxx | 58 ++++------------- sw/source/core/doc/docfmt.cxx | 59 +++++------------ 5 files changed, 165 insertions(+), 84 deletions(-)
New commits: commit 1e475fef47fe6bd9dba6d830aaf0b6c12dc88881 Author: Ursache Vladimir <ursa...@collabora.co.uk> Date: Fri Feb 13 21:56:43 2015 +0200 related tdf#89004 improve performance of document data collection Change-Id: Ieca50aa0920753cd952123e27d5355d32e82c918 diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index 0dcaa3e..bed21c6 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -1919,53 +1919,28 @@ void SwDoc::RenameFmt(SwFmt & rFmt, const OUString & sNewName, BroadcastStyleOperation(sNewName, eFamily, SFX_STYLESHEET_MODIFIED); } - std::vector<Color> SwDoc::GetDocColors() { - std::vector<Color> docColors; - - for(unsigned int i = 0; i < m_pNodes->Count(); ++i) - { - const SwNode* pNode = (*m_pNodes)[i]; - if( ! pNode->IsTxtNode() ) - continue; - - const SfxItemSet* pItemSet = pNode->GetTxtNode()->GetpSwAttrSet(); - if( pItemSet == 0 ) - continue; - - SfxWhichIter aIter( *pItemSet ); - sal_uInt16 nWhich = aIter.FirstWhich(); - while( nWhich ) + std::vector<Color> aDocColors; + SwAttrPool& rPool = GetAttrPool(); + const sal_uInt16 pAttribs[] = {RES_CHRATR_COLOR, RES_CHRATR_HIGHLIGHT, RES_BACKGROUND}; + for (size_t i=0; i<SAL_N_ELEMENTS(pAttribs); i++) + { + const sal_uInt16 nAttrib = pAttribs[i]; + const sal_uInt32 nCount = rPool.GetItemCount2(nAttrib); + for (sal_uInt32 j=0; j<nCount; j++) { - const SfxPoolItem *pItem; - if( SfxItemState::SET == pItemSet->GetItemState( nWhich, false, &pItem ) ) - { - sal_uInt16 aWhich = pItem->Which(); - switch (aWhich) - { - // list of color attributes to collect - case RES_CHRATR_COLOR: - case RES_CHRATR_HIGHLIGHT: - case RES_BACKGROUND: - { - Color aColor( static_cast<const SvxColorItem*>(pItem)->GetValue() ); - if( COL_AUTO != aColor.GetColor() && - std::find(docColors.begin(), docColors.end(), aColor) == docColors.end() ) - { - docColors.push_back( aColor ); - } - } - break; - default: - break; - } - } - - nWhich = aIter.NextWhich(); + const SvxColorItem *pItem = static_cast<const SvxColorItem*>(rPool.GetItem2(nAttrib, j)); + if (pItem == 0) + continue; + Color aColor( pItem->GetValue() ); + if (COL_AUTO == aColor.GetColor()) + continue; + if (std::find(aDocColors.begin(), aDocColors.end(), aColor) == aDocColors.end()) + aDocColors.push_back(aColor); } } - return docColors; + return aDocColors; } // #i69627# commit 6a348503ad504a82778f86d35325737b712c5352 Author: Ursache Vladimir <ursa...@collabora.co.uk> Date: Fri Feb 13 06:23:53 2015 +0200 tdf#89004 improve performance of document data collection Change-Id: Ie74495745b48d721c7dda0b447fc59066c869874 diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx index 0a2e3cb..362acbf 100644 --- a/sc/source/core/data/document10.cxx +++ b/sc/source/core/data/document10.cxx @@ -19,6 +19,7 @@ #include <poolhelp.hxx> #include <bcaslot.hxx> #include <cellvalues.hxx> +#include <docpool.hxx> #include "dociter.hxx" #include "patattr.hxx" @@ -157,53 +158,26 @@ void ScDocument::CopyCellValuesFrom( const ScAddress& rTopPos, const sc::CellVal std::vector<Color> ScDocument::GetDocColors() { - std::vector<Color> docColors; - - for( unsigned int nTabIx = 0; nTabIx < maTabs.size(); ++nTabIx ) + std::vector<Color> aDocColors; + ScDocumentPool *pPool = GetPool(); + const sal_uInt16 pAttribs[] = {ATTR_BACKGROUND, ATTR_FONT_COLOR}; + for (size_t i=0; i<SAL_N_ELEMENTS( pAttribs ); i++) { - ScUsedAreaIterator aIt(this, nTabIx, 0, 0, MAXCOLCOUNT-1, MAXROWCOUNT-1); - - for( bool bIt = aIt.GetNext(); bIt; bIt = aIt.GetNext() ) + const sal_uInt16 nAttrib = pAttribs[i]; + const sal_uInt32 nCount = pPool->GetItemCount2(nAttrib); + for (sal_uInt32 j=0; j<nCount; j++) { - const ScPatternAttr* pPattern = aIt.GetPattern(); - - if( pPattern == 0 ) + const SvxColorItem *pItem = static_cast<const SvxColorItem*>(pPool->GetItem2(nAttrib, j)); + if (pItem == 0) continue; - - const SfxItemSet& rItemSet = pPattern->GetItemSet(); - - SfxWhichIter aIter( rItemSet ); - sal_uInt16 nWhich = aIter.FirstWhich(); - while( nWhich ) - { - const SfxPoolItem *pItem; - if( SfxItemState::SET == rItemSet.GetItemState( nWhich, false, &pItem ) ) - { - sal_uInt16 aWhich = pItem->Which(); - switch (aWhich) - { - // attributes we want to collect - case ATTR_FONT_COLOR: - case ATTR_BACKGROUND: - { - Color aColor( static_cast<const SvxColorItem*>(pItem)->GetValue() ); - if( COL_AUTO != aColor.GetColor() && - std::find(docColors.begin(), docColors.end(), aColor) == docColors.end() ) - { - docColors.push_back( aColor ); - } - } - break; - default: - break; - } - } - - nWhich = aIter.NextWhich(); - } + Color aColor( pItem->GetValue() ); + if (COL_AUTO == aColor.GetColor()) + continue; + if (std::find(aDocColors.begin(), aDocColors.end(), aColor) == aDocColors.end()) + aDocColors.push_back(aColor); } } - return docColors; + return aDocColors; } void ScDocument::SetCalcConfig( const ScCalcConfig& rConfig ) commit 10e3e75ce8b88a0ba5157d17d10f5e9aca4360fa Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Sat Feb 14 01:34:12 2015 +0100 small stylistic changes for previous commit Change-Id: Ied363ca05ee1778b401073321588ac00d9b19634 diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index a793239..2012876 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -19,7 +19,6 @@ #include <sfx2/sfxmodelfactory.hxx> #include <svl/stritem.hxx> #include <svl/nfkeytab.hxx> -//#include <zformat.hxx> #include <svl/zformat.hxx> #include <svx/svdograf.hxx> @@ -361,7 +360,7 @@ void ScFiltersTest::testBooleanFormatXLSX() { ScDocShellRef xDocSh = loadDoc("check-boolean.", XLSX); ScDocument& rDoc = xDocSh->GetDocument(); - SvNumberFormatter *pNumFormatter = rDoc.GetFormatTable(); + SvNumberFormatter* pNumFormatter = rDoc.GetFormatTable(); const OUString aBooleanTypeStr = "\"TRUE\";\"TRUE\";\"FALSE\""; CPPUNIT_ASSERT_MESSAGE("Failed to load check-boolean.xlsx", xDocSh.Is()); @@ -369,10 +368,10 @@ void ScFiltersTest::testBooleanFormatXLSX() for (SCROW i = 0; i <= 1; i++) { - rDoc.GetNumberFormat(0, i, 0, nNumberFormat); - const SvNumberformat *pSvnumberFormat = pNumFormatter->GetEntry(nNumberFormat); - const OUString &rFormatStr = pSvnumberFormat->GetFormatstring(); - CPPUNIT_ASSERT_MESSAGE("Number format != boolean", rFormatStr == aBooleanTypeStr); + rDoc.GetNumberFormat(0, i, 0, nNumberFormat); + const SvNumberformat* pNumberFormat = pNumFormatter->GetEntry(nNumberFormat); + const OUString& rFormatStr = pNumberFormat->GetFormatstring(); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number format != boolean", rFormatStr, aBooleanTypeStr); } xDocSh->DoClose(); commit 23159e5a23687683d8478a302b5634097e6c518d Author: Ursache Vladimir <ursa...@collabora.co.uk> Date: Tue Feb 10 23:06:35 2015 +0200 tdf#68117 Unit test Change-Id: I2c1b935648ea2728878f606dfe8a141c3c1ddda2 diff --git a/sc/qa/unit/data/xlsx/check-boolean.xlsx b/sc/qa/unit/data/xlsx/check-boolean.xlsx new file mode 100644 index 0000000..a7643d1 Binary files /dev/null and b/sc/qa/unit/data/xlsx/check-boolean.xlsx differ diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index 13c616d..a793239 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -18,6 +18,9 @@ #include <sfx2/docfile.hxx> #include <sfx2/sfxmodelfactory.hxx> #include <svl/stritem.hxx> +#include <svl/nfkeytab.hxx> +//#include <zformat.hxx> +#include <svl/zformat.hxx> #include <svx/svdograf.hxx> #include "drwlayer.hxx" @@ -86,6 +89,7 @@ public: virtual void tearDown() SAL_OVERRIDE; //ods, xls, xlsx filter tests + void testBooleanFormatXLSX(); void testBasicCellContentODS(); void testRangeNameXLS(); void testRangeNameLocalXLS(); @@ -186,6 +190,7 @@ public: void testEmbeddedImageXLS(); CPPUNIT_TEST_SUITE(ScFiltersTest); + CPPUNIT_TEST(testBooleanFormatXLSX); CPPUNIT_TEST(testBasicCellContentODS); CPPUNIT_TEST(testRangeNameXLS); CPPUNIT_TEST(testRangeNameLocalXLS); @@ -352,6 +357,27 @@ void ScFiltersTest::testBasicCellContentODS() xDocSh->DoClose(); } +void ScFiltersTest::testBooleanFormatXLSX() +{ + ScDocShellRef xDocSh = loadDoc("check-boolean.", XLSX); + ScDocument& rDoc = xDocSh->GetDocument(); + SvNumberFormatter *pNumFormatter = rDoc.GetFormatTable(); + const OUString aBooleanTypeStr = "\"TRUE\";\"TRUE\";\"FALSE\""; + + CPPUNIT_ASSERT_MESSAGE("Failed to load check-boolean.xlsx", xDocSh.Is()); + sal_uInt32 nNumberFormat; + + for (SCROW i = 0; i <= 1; i++) + { + rDoc.GetNumberFormat(0, i, 0, nNumberFormat); + const SvNumberformat *pSvnumberFormat = pNumFormatter->GetEntry(nNumberFormat); + const OUString &rFormatStr = pSvnumberFormat->GetFormatstring(); + CPPUNIT_ASSERT_MESSAGE("Number format != boolean", rFormatStr == aBooleanTypeStr); + } + + xDocSh->DoClose(); +} + void ScFiltersTest::testRangeNameXLS() { ScDocShellRef xDocSh = loadDoc("named-ranges-global.", XLS); commit 480de8e23d4fc39e33646eb11987a00c311ee28d Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jan 14 12:56:44 2015 +0100 add script to extract tooltips Change-Id: I4c79b944edf246b80a8dd5ea54c3651e3909f54b diff --git a/bin/extract-tooltip.py b/bin/extract-tooltip.py new file mode 100755 index 0000000..5397c71 --- /dev/null +++ b/bin/extract-tooltip.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python +import sys +import os +import re +import urlparse + +def usage(): + message = """ usage: {program} inDir outDir +inDir: directory containing .ht files +outDir: target for the new files""" + print(message.format(program = os.path.basename(sys.argv[0]))) + +def parseFile(filename): + file = open(filename, "r") + data = file.readlines() + data = [line.rstrip('\n') for line in data] + + pairs = {} + regEx = re.compile("^(\S+)\s(\S+)\s(\S+)\s((?:\s*\S*)+)$") + old_line = None + for line in data: + if len(line) > 0: + if(old_line != None): + print filename + #print("failed to parse line") + #print(old_line) + line = old_line + line + print line + old_line = None + split_line = regEx.split(line) + #print(split_line) + #print(urlparse.unquote(split_line[2])) + #print(split_line[4]) + if(old_line == None and split_line[4] == "" and split_line[3] != "0"): + print(line) + print(split_line) + old_line = line + else: + pairs[urlparse.unquote(split_line[2])] = split_line[4] + assert(len(split_line) == 6) + #print data + #print(pairs) + return pairs + +def parseFiles(dir): + strings = [] + for files in os.listdir(dir): + if files.endswith(".ht"): + string = parseFile(os.path.join(dir,files)) + print(files) + #print string + strings.append([files, string]) + return strings + +def extractSharedEntries(strings): + first_dict = strings[0][1] + shared_dict = {} + #print(first_dict) + for key, value in first_dict.iteritems(): + # check that the entry in the same in all dics + is_in_all_dicts = True + for dict_file_pair in strings: + dict = dict_file_pair[1] + if not dict.has_key(key): + is_in_all_dicts = False + elif not dict[key] == value: + print("Element with different values") + print(key) + is_in_all_dicts = False + if is_in_all_dicts: + shared_dict[key] = value + #print(shared_dict) + for dict_file_pair in strings: + for key in shared_dict.iterkeys(): + dict_file_pair[1].pop(key) + + strings.append(["shared.ht", shared_dict]) + return strings + +def writeOutFiles(dir, strings): + for string in strings: + file_name_base = string[0] + file_name_base = file_name_base.replace(".ht", ".properties") + file_name = os.path.join(dir, file_name_base) + file = open(file_name, "w") + for key, value in string[1].iteritems(): + try: + file.write(key) + file.write("=") + file.write(value) + file.write("\n") + except UnicodeDecodeError: + print key + print value + file.close() + +def main (args): + if(len(args) != 3): + usage() + sys.exit(1) + + strings = parseFiles(args[1]) + new_strings = extractSharedEntries(strings) + writeOutFiles(args[2], new_strings) + +if __name__ == "__main__": + main(sys.argv) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits