summaryrefslogtreecommitdiff
path: root/pyuno/source/module/pyuno.cxx
AgeCommit message (Collapse)Author
2016-04-14clang-tidy performance-unnecessary-value-param in variousNoel Grandin
Change-Id: I7168d44dab8e6a8e37bb7920d744ff32f5e52907 Reviewed-on: https://gerrit.libreoffice.org/24019 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-02-09pyuno: Fix build with python 2.7Rico Tzschichholz
Adjust conditionals to properly respect python 2.7.1+ Change-Id: I32d21a071e054100294e418af5358305eac69944 Reviewed-on: https://gerrit.libreoffice.org/22231 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
2016-02-09Remove excess newlinesChris Sherlock
A ridiculously fast way of doing this is: for i in $(pcregrep -l -M -r --include='.*[hc]xx$' \ --exclude-dir=workdir --exclude-dir=instdir '^ {3,}' .) do perl -0777 -i -pe 's/^ {3,}/ /gm' $i done Change-Id: Iebb93eccbee9e4fc5c4380474ba595858a27ac2c Reviewed-on: https://gerrit.libreoffice.org/22224 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
2016-01-06Pyuno add compat for python 2.6Tomáš Chvátal
Change-Id: I3e40a8006278b094d494820e6f47628c6579e78a Reviewed-on: https://gerrit.libreoffice.org/20883 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
2015-11-10loplugin:nullptr (automatic rewrite)Stephan Bergmann
Change-Id: I7a5fda2606f42e2736ad0618f2d8bcc5ba4028fb
2015-10-25Bump python to 3.5David Ostrovsky
3.5 release is needed for MSVC 14.0 (aka VS 2015) support. Python 3.5 removed build toolchain support for MSVC 2013. Because we still need to support it, we duplicate the Python directory in externals and copy old patches and dispatch to this directory for MSVC 2013. Once the support for MSVC 2013 is dropped on master, this directory can be removed again. Change-Id: Idf7bc351239582f583ecbdb53c923cbdcf968089 Reviewed-on: https://gerrit.libreoffice.org/17352 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
2015-10-23com::sun::star->css in package,pyunoNoel Grandin
Change-Id: I7b7b0e7fea2d1a2b9f6f5501ad5e0b8c1b4a17b9
2015-10-09fix build by moving python-related includes below othersDouglas Mencken
This fixes build errors like "macro (...) passed 2 arguments, but takes just 1" The reason is a conflict between tolower() etc. as a set of functions from <ios> and a hacky fix in Python's include pyport.h which tries to undefine tolower() and then redefine it Change-Id: I82e5ac19b70912d09d5e3a34c93eddc08cec9260 Reviewed-on: https://gerrit.libreoffice.org/19082 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
2015-07-30Give PyUNO structs/exceptions their own separate typeMatthew J. Francis
Change-Id: Ie4c42c623fae1cf39c2e4c643825c9655cd28daa Reviewed-on: https://gerrit.libreoffice.org/17410 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Matthew Francis <mjay.francis@gmail.com>
2015-07-27Tweak introspection/invocation to be more useful to PyUNOMatthew J. Francis
- Make introspection/invocation handle XNameReplace and XIndexReplace - Make introspection handle XUnoTunnel - Adapt PyUNO to take advantage of the additionally handled interfaces Change-Id: Ie848d10fd2c31cad76fcc3a746262a490a2c9ae1 Reviewed-on: https://gerrit.libreoffice.org/17314 Reviewed-by: Matthew Francis <mjay.francis@gmail.com> Tested-by: Matthew Francis <mjay.francis@gmail.com>
2015-07-25Fix PyUNO object hash to use the correct pointerMatthew J. Francis
Change-Id: Id93cba88eaf0dca0784051507809bc849d046a03 Reviewed-on: https://gerrit.libreoffice.org/17337 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Matthew Francis <mjay.francis@gmail.com>
2015-07-21Make PyUNO objects hashableMatthew J. Francis
This allows them to be used as set members and dict keys Change-Id: I10bd71788be6b508c6f491a27a8841e599e47e3a Reviewed-on: https://gerrit.libreoffice.org/17248 Reviewed-by: Matthew Francis <mjay.francis@gmail.com> Tested-by: Matthew Francis <mjay.francis@gmail.com>
2015-07-01Fix compilation with Python 2.7Matthew J. Francis
Change-Id: I0dd118f0215e06fec0cccff9b46d80f13bd802cc Reviewed-on: https://gerrit.libreoffice.org/16620 Reviewed-by: Matthew Francis <mjay.francis@gmail.com> Tested-by: Matthew Francis <mjay.francis@gmail.com>
2015-06-26loplugin:implicitboolconversionStephan Bergmann
Change-Id: If495a415d4263d1932c03a31d07a517218533847
2015-06-26loplugin:cstylecastStephan Bergmann
Change-Id: I5f0bceb240a492c7c010b4356bc8efafdd83bf24
2015-06-26loplugin:passstuffbyrefStephan Bergmann
Change-Id: I66410932347b4f65c4b24b5316009ecffc8aef06
2015-06-26loplugin:salboolStephan Bergmann
Change-Id: I4875b12807aed36f758d81c731e2ac52a3a606e4
2015-06-26Make PyUNO provide more Pythonic behaviourMatthew J. Francis
- Simplifies working with UNO objects by giving the behaviour of Python lists, dicts and iterators to objects which implement UNO container interfaces - Applies a custom behaviour to allow objects which implement com::sun::star::table::XCellRange to yield cells and cell ranges by subscript - When UNO container objects are addressed in the new style, eliminates the requirement to manually construct Any objects for contained elements which are typed sequences - Allows lists and iterators to be passed wherever a UNO method accepts a sequence - Relaxes the requirements for initialising UNO structs to allow some members to be skipped when all initialisers are passed by name 1. Collection interfaces ======================== Objects which implement core UNO collection interfaces are made to behave in a way that is more natural for Python code. com::sun::star::container::XIndexAccess com::sun::star::container::XIndexReplace com::sun::star::container::XIndexContainer - Objects provide Python list access semantics num = len(obj) # Number of elements val = obj[0] # Access by index val1,val2 = obj[2:4] # Access by slice val1,val2 = obj[0:3:2] # Access by extended slice if val in obj: ... # Test value presence for val in obj: ... # Implicit iterator (values) itr = iter(obj) # Named iterator (values) obj[0] = val # Replace by index obj[2:4] = val1,val2 # Replace by slice obj[0:3:2] = val1,val2 # Replace by extended slice obj[2:3] = val1,val2 # Insert/replace by slice obj[2:2] = (val,) # Insert by slice obj[2:4] = (val,) # Replace/delete by slice obj[2:3] = () # Delete by slice (implicit) del obj[0] # Delete by index del obj[2:4] # Delete by slice com::sun::star::container::XNameAccess com::sun::star::container::XNameReplace com::sun::star::container::XNameContainer - Objects provide Python dict access semantics num = len(obj) # Number of keys val = obj[key] # Access by key if key in obj: ... # Test key presence for key in obj: ... # Implicit iterator (keys) itr = iter(obj) # Named iterator (keys) obj[key] = val # Replace by key obj[key] = val # Insert by key del obj[key] # Delete by key com::sun::star::container::XEnumerationAccess - Objects provide Python iterable semantics for val in obj: ... # Implicit iterator itr = iter(obj) # Named iterator com::sun::star::container::XEnumeration - Objects provide Python iterator semantics for val in itr: ... # Iteration of named iterator if val in itr: ... # Test value presence Objects which implement both XIndex* and XName* are supported, and respond to both integer and string keys. However, iterating over such an object will return the keys (like a Python dict) rather than the values (like a Python list). 2. Cell ranges ============== A custom behaviour is applied to objects which implement com::sun::star::table::XCellRange to allow their cells and cell ranges to be addressed by subscript, in the style of a Python list or dict (read-only). This is applicable to Calc spreadsheet sheets, Writer text tables and cell ranges created upon these. cell = cellrange[0,0] # Access cell by indices rng = cellrange[0,1:2] # Access cell range by index,slice rng = cellrange[1:2,0] # Access cell range by slice,index rng = cellrange[0:1,2:3] # Access cell range by slices rng = cellrange['A1:B2'] # Access cell range by descriptor rng = cellrange['Name'] # Access cell range by name Note that the indices used are in Python/C order, and differ from the arguments to methods provided by XCellRange. - The statement cellrange[r,c], which returns the cell from row r and column c, is equivalent to calling XCellRange::getCellByPosition(c,r) - The statement cellrange[t:b,l:r], which returns a cell range covering rows t to b(non-inclusive) and columns l to r(non- inclusive), is equivalent to calling XCellRange::getCellRangeByPosition(l,t,r-1,b-1). In contrast to the handling of objects implementing XIndex*, extended slice syntax is not supported. Negative indices (from-end addresses) are supported only for objects which also implement com::sun::star::table::XColumnRowRange (currently Calc spreadsheet sheets and cell ranges created upon these). For such objects, the following syntax is also available: rng = cellrange[0] # Access cell range by row index rng = cellrange[0,:] # Access cell range by row index rng = cellrange[:,0] # Access cell range by column index 3. Elimination of explicit Any ============================== PyUNO has not previously been able to cope with certain method arguments which are typed as Any but require a sequence of specific type to be passed. This is a particular issue for container interfaces such as XIndexContainer and XNameContainer. The existing solution to dealing with such methods is to use a special method to pass an explicitly typed Any, giving code such as: index = doc.createInstance("com.sun.star.text.ContentIndex"); ... uno.invoke( index.LevelParagraphStyles , "replaceByIndex", (0, uno.Any("[]string", ('Caption',))) ) The new Pythonic container access is able to correctly infer the expected type of the sequences required by these arguments. In the new style, the above call to .replaceByIndex() can instead be written: index.LevelParagraphStyles[0] = ('Caption',) 4. List and iterator arguments ============================== Wherever a UNO API expects a sequence, a Python list or iterator can now be passed. This enables the use of list comprehensions and generator expressions for method calls and property assignments. Example: tbl = doc.createInstance('com.sun.star.text.TextTable') tbl.initialize(10,10) # ... insert table ... # Assign numbers 0..99 to the cells using a generator expression tbl.Data = ((y for y in range(10*x,10*x + 10)) for x in range(10)) 5. Tolerant struct initialisation ================================= Previously, a UNO struct could be created fully uninitialised, or by passing a combination of positional and/or named arguments to its constructor. However, if any arguments were passed, all members were required to be initialised or an exception was thrown. This requirement is relaxed such that when all arguments passed to a struct constructor are by name, some may be omitted. The existing requirement that all members must be explicitly initialised when some constructor arguments are unnamed (positional) is not affected. Example: from com.sun.star.beans import PropertyValue prop = PropertyValue(Name='foo', Value='bar') Change-Id: Id29bff10a18099b1a00af1abee1a6c1bc58b3978 Reviewed-on: https://gerrit.libreoffice.org/16272 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Matthew Francis <mjay.francis@gmail.com>
2015-06-08loplugin:cstylecast: deal with remaining pointer castsStephan Bergmann
Change-Id: Iffa346c16a6775b206c8f8613eee9e7201e3badb
2015-04-08A UNO Any can't contain an AnyStephan Bergmann
...and css::uno::makeAny<css::uno::Any>() was never meant to be used. Introduce css::uno::toAny for the (template-code) cases that shall return an Any for both Any and non-Any inputs. Change-Id: Ifa977d73f1da71b2fedde7e8140b19497c4a0257
2015-03-29Clean up remaining C-style casts among void pointersStephan Bergmann
Change-Id: I1b49c020d597b569e330482f4dbf20c15ccdae3f
2015-03-28Clean up C-style casts from pointers to voidStephan Bergmann
Change-Id: I3676d56e65dd2d5b36882073c63e571a79819fee
2015-03-26const_cast: convert some C-style casts and remove some redundant onesStephan Bergmann
Change-Id: I71ebd11d850304772535cfb873086176d301172a
2015-01-20Some more loplugin:cstylecast: pyunoStephan Bergmann
Change-Id: I80c9fdb45c9f58ac3cd1b0fab2631b903194e268
2014-11-12Fix common typos. No automatic tools. Handmade…Andrea Gelmini
Change-Id: I1ab4e23b0539f8d39974787f226e57a21f96e959 Reviewed-on: https://gerrit.libreoffice.org/12164 Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>
2014-10-30Add includeStephan Bergmann
Change-Id: I0598e9d0c9c33c538aa02eabc2c09d96ec3c9b4d
2014-10-29fdo#43157 - Clean up OSL_ASSERT, DBG_ASSERTNaruhiko Ogasawara
- Clean up OSL_ASSERT Change-Id: I1f3a5dcfe08876da9bb4a8486311eb0ca9bab215 Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
2014-06-05various: remove SAL_THROW macroNoel Grandin
Change-Id: I9464179a736b91f5bc32eb5e5e89b3b4e3da3494
2014-05-23remove boilerplate in UNO Exception constructor callsNoel Grandin
Now that we have default values for Exception constructor params, remove lots of boilerplate code. Change-Id: I620bd641eecfed38e6123873b3b94aaf47922e74
2014-05-19pyuno: fix warnings with system python 3.4.0Thomas Arnhold
warning: missing initializer for member '_typeobject::tp_finalize' [-Wmissing-field-initializers] Change-Id: I7ab82025fd8c2f0d8fa4943690a217c4a4dc369d
2014-01-31Remove UNOIDL "array" and "union" vaporware remnantsStephan Bergmann
...and deprecate what cannot be removed for compatibility. Change-Id: I1ea335af775b867b468b8285113631167729a92a
2014-01-30coverity#983054, reorder code to avoid memory leakStephan Bergmann
Change-Id: If14160802f77673e3ebe69850e00d0506125969c
2014-01-07remove unnecessary sal_Unicode casts in OUStringBuffer::append callsNoel Grandin
Convert code like: buf.append( static_cast<sal_Unicode>('!') ); to: buf.append( '!' ); Change-Id: Iacb03a61de65a895540940953b49620677b3d051
2013-08-13fdo#50470: Restore pyuno object method introspection in Python 3David Bolen
Switch to __dir__ entry point for introspection as Python 3 dropped support for __members__/__methods__. This is backwards compatible to Python 2.6. Module initialization adjusted to complete type setup (needed for tp_dict) via PyType_Ready. Change-Id: Ie1f7b9dd4279242de89d009eb7acdc8c786dab8f Reviewed-on: https://gerrit.libreoffice.org/5375 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
2013-07-12Resolves: #i120788# remove unused members from PyUNO_callable_InternalsHerbert Dürr
Patch by: Tsutomu Uchino <hanya.runo@gmail.com> (cherry picked from commit 5e2c3fd88906494965979bd20ca852391bee3bac) Conflicts: pyuno/source/module/pyuno_impl.hxx Change-Id: If73d5f7b799f04b79b5cc71d2d44c797851b18d0
2013-04-07mass removal of rtl:: prefixes for O(U)String*Luboš Luňák
Modules sal, salhelper, cppu, cppuhelper, codemaker (selectively) and odk have kept them, in order not to break external API (the automatic using declaration is LO-internal). Change-Id: I588fc9e0c45b914f824f91c0376980621d730f09
2013-03-28Remove RTL_CONSTASCII_(U)STRINGPARAM in pyunoChr. Rossmanith
and use append() instead of appendAscii() Change-Id: Iaf29a2f18eff39db5d1b5cc298cce23442ac51a9
2013-03-19automated removal of RTL_CONSTASCII_USTRINGPARAM for quoted OUStringsThomas Arnhold
Done with a perl regex: s/OUString\s*\(\s*RTL_CONSTASCII_USTRINGPARAM\s*\((\s*"[^")]*?"\s*)\)\s*\)/OUString\($1\)/gms Change-Id: Idf28320817cdcbea6d0f7ec06a9bf51bd2c3b3ec Reviewed-on: https://gerrit.libreoffice.org/2832 Reviewed-by: Thomas Arnhold <thomas@arnhold.org> Tested-by: Thomas Arnhold <thomas@arnhold.org>
2012-12-27Check for __GNUC__ instead of GCC in sourcesTor Lillqvist
We still have checks for $(COM) being GCC or MSC in makefiles, of course. But there is no reason to pass -D$(COM) to compilations. Checking the built-in compiler-specific macros __GNUC__, _MSC_VER (etc) is the right thing to do. Change-Id: Ia961a29ba74e2c4977e5300a92318f38104c6592
2012-11-25pyuno: fix handling of "str", "unicode", "bytes" types:Michael Stahl
Replace currrent wrappers of Python 2 only PyString_* functions with better abstractions that handle default "str" (PyStr_*) or byte strings ("str"/"bytes" depending on version, PyStrBytes_*) and adjust all invocations to work on appropriate string types. Fixes obvious "attributes typeName and/or value of uno.Enum are not strings" exceptions with Python 3. Change-Id: I255dcb1bc198fd7f6a62b83b957901521071a480
2012-07-02re-base on ALv2 code. Removing:Michael Meeks
a patch contributed by Pedro Giffuni to handle FreeBSD issues that are unlikely to be an issue with a two-layer LibreOffice. http://svn.apache.org/viewvc?view=revision&revision=1180509
2012-06-04nuke unused definesTakeshi Abe
Change-Id: I7924da4bff73ca8f82c76eb8cb211401530acdeb
2012-03-16fdo#46926: PyUNO_cmp: return acquired referenceDavid Bolen
2012-03-09fdo#46926: fix the fix for Python 3Michael Stahl
Thanks to Maxime de Roucy for the hint that the "cmpfunc" type doesn't exist.
2012-03-07fdo#46926: fix UNO struct comparison in Python 2David Bolen
This requires setting a rich comparison flag in Python 2, while Python 3 uses rich comparison by default. (regression from a09ce46818fd4d5e08b3af9a478501cd8ef5b4fe)
2012-01-26Code cleanup: ( () ) replaced by (())Alexander Bergmann
2012-01-21Removed some unused parameters; added SAL_UNUSED_PARAMETER.Stephan Bergmann
SAL_UNUSED_PARAMETER (expanding to __attribute__ ((unused)) for GCC) is used to annotate legitimately unused parameters, so that static analysis tools can tell legitimately unused parameters from truly unnecessary ones. To that end, some patches for external modules are also added, that are only applied when compiling with GCC and add necessary __attribute__ ((unused)) in headers.
2011-12-21catch exception by constant referenceTakeshi Abe
2011-08-21Janitorial: remove unnecessary const_castsLionel Elie Mamane
The python C API has consts at these places
2011-05-19don't crash when interacting with a class that implements XInvocationMichael Meeks
VclStringResourceLoader eg. test = smgr.createInstance("com.sun.star.resource.VclStringResourceLoader") invocation = test.setValue("FileName", "test") It seems we can't cope with XInvocation implementors, so give a nice exception instead