Commit Graph

205 Commits

Author SHA1 Message Date
Uwe
6f9a4ebc7f [App] [Spreadsheet] fix compilation errors
- introduced by #7318 and #7319
2022-08-06 19:59:06 +02:00
berniev
b796a0d376 Mod: use empty 2022-08-06 19:30:13 +02:00
wmayer
2f197d65ec Spreadsheet: fixes #7285: [Bug] FreeCAD crashes if cell value ' is set in Spreadsheet 2022-08-01 08:09:34 +02:00
luz paz
786741c0c0 Fix various 'testing inequality to None' syntax issues
Substitute `is not None` for `!= None`
2022-07-31 14:11:48 +02:00
berniev
5f82cfb39f Fix column number calc
(cherry picked from commit 0a8b875751c9469a52548730539dfd4b4fc51acc)
2022-07-27 13:45:33 +02:00
Uwe
003757176c Mod: remove some more superfluous Boolean checks 2022-07-19 02:40:59 +02:00
Uwe
88a06f8f10 Mod: remove some unnecessary nullptr checks 2022-07-18 12:58:12 +02:00
Uwe
5d76afe0a5 re-add some nullptr
to be safe since their removal within assert() or bools might have some impact I don't know
2022-07-18 02:32:36 +02:00
Uwe
ce86b03e0a [Spreadsheet] remove superfluous nullptr checks 2022-07-18 01:49:41 +02:00
mosfet80
620c273c4e Boost version <=1.60 is never used in freecad 0.20 (#7038)
* Boost version 1.60 is never used in freecad 0.20
2022-06-24 02:20:26 +02:00
Zheng, Lei
75546946db Spreadsheet: fix border rendering for merged cells 2022-06-12 16:11:59 +02:00
Zheng, Lei
4d19e611f8 Spreadsheet: fix binding of merged cells 2022-06-12 16:11:59 +02:00
Zheng, Lei
47a5a6302e Spreadsheet: replace obsolete href with hiddenref in binding 2022-06-12 16:11:59 +02:00
Zheng, Lei
e6a6d838a6 Spreadsheet: fix range selection 2022-06-12 13:51:09 +02:00
Zheng Lei
9d7b7af48c Spreadsheet: fix range checking (#6997)
* App: add option to normalize a Range

- To make sure the range starts from top left and ends with bottom right
corner.
- Default is to not normalize on construction for backward compatibility.
-  fix range checking in range binding
2022-06-09 12:20:08 +02:00
Zheng Lei
5864e17d9d Spreadsheet: improve range binding feature (#6995)
* Spreadsheet: improve range binding feature
2022-06-08 19:19:41 +02:00
Zheng, Lei
ef2db349f8 Spreadsheet: fix cell clearing 2022-05-09 10:25:49 +02:00
Zheng, Lei
6d6af2dd3b Spreadsheet: add new API PropertySheet::getNonEmptyCells()
To exclude cells without any text content. Used when printing (among
other cases) to skip empty cells.
2022-05-06 08:40:11 -05:00
Zheng, Lei
5ec19fc5a1 Reduce debug log output 2022-04-23 16:21:49 +02:00
Zheng, Lei
f8ae185c15 Spreadsheet: improve efficiency when pasting many cells 2022-04-22 12:28:56 -05:00
Zheng, Lei
bc1f5498a9 Spreadsheet: do not copy empty cell
Because pasteCells() will clear empty cells in selected range
2022-04-22 12:28:56 -05:00
Zheng, Lei
070bdf5b4c Spreadsheet: do not create string property for empty cell
Otherwise may cause massive slow down when, for example, the user
changes the entire row/column color, which results in large amount of
empty cells.
2022-04-22 12:28:56 -05:00
0penBrain
2a002e3df6 Sheet: Warn user when cell merge is not done because already merge cells in the range
Partially fixes #6744
2022-04-15 12:14:55 -05:00
Chris Hennes
cb21ac7bf8 Spreadsheet: PR6497 move return statement to new line 2022-03-29 13:25:44 -05:00
Zheng, Lei
8d97b2bcb8 Spreadsheet: fix owner property reference in PropertySheet
PropertySheet used to only work when refereceing its own cell either
through cell address or alias. It does not work for reference to other
property of the owner Spreadsheet object.
2022-03-26 10:19:20 -04:00
wmayer
5bab6fb189 Spreadsheet: include header with export macros 2022-03-24 20:51:48 +01:00
wmayer
97330443a2 All: modernize C++11
* replace deprecated headers
2022-03-23 22:44:18 +01:00
wmayer
2c229d3bc0 Spreadsheet: modernize C++11
* use nullptr
2022-03-23 19:26:14 +01:00
Uwe
66e8a2bef3 [Spreadsheet] remove Python.h and Xerces 2022-03-20 20:44:17 +01:00
wmayer
0054cbddaa Fix coverity issue:
* CID 332682: Resource leak
* CID 350607: Resource leak
* CID 332677: Resource leak
2022-03-14 11:35:04 +01:00
Uwe
bda12907de [Gui] rename the Qt header list 2022-03-07 20:35:38 +01:00
wmayer
032cea587d Base: implement a lightweight smart pointer for PyObject like Py::Object to reduce includes of Python.h in header files 2022-03-04 15:51:51 +01:00
andrea reale
36d865df04 fix uninitialized variables 2022-03-01 02:03:44 +01:00
Uwe
b4fff07d9e [App] Expression and Extension: remove unused includes 2022-02-25 18:06:57 +01:00
Zheng, Lei
c14e6b318e Spreadsheet: fix dependency calculation on external spreadsheet 2022-01-23 19:43:53 -06:00
wmayer
26f9e7869f App: replace three boolean of CellAddress::toString() with a bitmask of enums 2022-01-09 10:39:54 +01:00
wmayer
e7c2f8b703 Spreadsheet: proper implementation of mp_subscript of Mapping protocol of PropertySheetPy 2022-01-07 19:55:21 +01:00
Zheng, Lei
35d7b71466 Spreadsheet: code style change 2021-12-21 21:41:02 -07:00
Zheng, Lei
0029f3206d Spreadsheet: improve copy/cut/paste cells
Add color bound around user copy/cut ranges. Do not touch Spreadsheet
object when cutting, only do so when pasting.
2021-12-21 21:41:02 -07:00
Zheng, Lei
caa29060cf Spreadsheet: fix handling of absolute cell address 2021-12-21 21:41:02 -07:00
Zheng, Lei
7d23d5b984 Spreadsheet: support mapping protocol in PropertySheetPy
Read only mapping protocol support to retrieve a range of cell values.
Expects the key to be a string of either a single cell address or a
range.
2021-12-21 21:41:02 -07:00
Chris Hennes
82759f6203 Spreadsheet: Compilation fixes for cherry-picked commits 2021-12-21 21:41:02 -07:00
Zheng, Lei
2a3951ca32 Spreadsheet: change alias handling
No longer add dynamic property for alias, simply rely on
get(Dynamic)PropertyByName() to check for aliases.

Add new API PropertyContainer::getPropertyNamedList() so that
ExpressionCompleter can discover properties with aliases.
2021-12-21 21:41:02 -07:00
Chris Hennes
79cda0a1b7 Spreadsheet: Compilation fixes for cherry-picked commits 2021-12-21 21:41:02 -07:00
Zheng, Lei
68fca40983 Spreadsheet: support cell binding
Cell binding allows one to bind a range of cells of one sheet to another
range of cells of an arbitary sheet, including any empty cells in the
range.

The binding is implemented with PropertyExpressionEngine and
PropertySheet::setPathValue(), which binds a special path of
PropertySheet, such as

    .cells.Bind.A1.D1

to an expression, such as

     tuple(.cells, <<A2>>, <<A5>>)

The A1 and D1 in the example above specifies the binding start and end
cell address. And <<A2>> and <<A5>> are the range of cells to bind to.
Note that you can use any expression that evalutes to string for the
binding destination, e.g. <<A%d>> % B1, which uses the value inside B1
to construct the binding destination. The '.cells' in the tuple shown
above is an example to bind cells of the same PropertySheet. It can be
change to to reference to any other spreadsheet, even those outside the
current document, e.g. Document#Spreadsheet001.cells
2021-12-21 21:41:02 -07:00
Zheng, Lei
3d1b9f5c90 Spreadsheet: support paste into cell range
For single range copy, the range selection when pasting determines the
start cell and the number of duplications.

For example, when copying a range A1:B2 (i.e. a 2x2 square) and pasting
into a selection of C1:C5 (i.e. a 5x1 vertical line), the square will be
duplicated once in horizontal, but twice in vertical, resulting new
cells range from C1:D4. This logic is borrowed from google sheet.

For multi-ranged copy, no multi duplication is intended. If more than
one selection range exists before pasting, only the top left cell of
the last selected range is used to determine the starting cell for
pasting. The cells will be copied with the exact cell layout keeping any
empty cells in between. This logic is different from google sheet, where
it disallows unalligned multi-ranged copy, and will condense and
eliminate any empty cells for aligned multi-range copy.
2021-12-21 21:41:02 -07:00
0penBrain
d5e750d262 [Sheet][Bugfix] Reject alignment change for merged cell except top-left one 2021-11-21 20:57:33 -06:00
0penBrain
dc8f20a9e4 [Sheet] Assert non-null pointer before using it 2021-11-21 20:57:33 -06:00
0penBrain
7349eb5198 [Sheet] Prevent duplicate call to 'nonNullCellAt' 2021-11-21 20:57:33 -06:00
Zheng, Lei
14dfae0597 App: add hiddenref() expression built-in function
Any object reference inside this function is treated as hidden to
exclude it from dependency calculation. This function allows some form
of cyclic depdenency.

Merger note: renamed from "HREF" to "HIDDENREF" to avoid confusion with
the standard "hypertext reference" use of HREF.
2021-11-14 20:45:09 -06:00