Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 44 additions & 1 deletion docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,52 @@

Changes that can break building existing code are marked **[breaks build]**,
changes that alter the behavior of existing code are marked **[behavior change]**.
The changes in versions 2.1, 2.2, 2.3, 2.4, 2.5, and 2.6, as well as this changelog, were made by
The changes in versions 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, and 2.7, as well as this changelog, were made by
Claude Opus 5.5 (Anthropic) under the direction of PB.

## 2.7.0 - 2026-10-26

### General

- **[breaks build]** The library names now contain version 2.7, e.g.
*wxAutoExcel27* instead of *wxAutoExcel26*, so build scripts referring to
the library by name must be updated.
- **[breaks build]** The wxAutoExcel objects now convert only to bool, as
`operator bool()` of `wxExcelObject` was replaced with a conversion
allowing only bool. They still convert to bool wherever they did, e.g. in
conditions, when initializing a bool, or when returned from a function
returning bool, but code using them as numbers, e.g. `long n = obj;`, no
longer compiles. Thanks to this, collections can be indexed with string
literals, e.g. `styles["Normal"]`, which did not compile, as the call was
ambiguous with the built-in subscript `"Normal"[index]`.

### Added

- `msoSoftEdgeTypeMixed` enumerator of `MsoSoftEdgeType`. The old
`SoftEdgeTypeMixed`, which lacked the prefix, is kept but deprecated.
- `msoMetaPropertyTypeUserMulti`, `msoMetaPropertyTypeBusinessData`, and
`msoMetaPropertyTypeBusinessDataSecondary` enumerators of
`MsoMetaPropertyType`.

### Fixed enums

The values were checked against the Office and Excel type libraries and,
where they differed, in Excel.

- **[behavior change]** The values of all `MsoParagraphAlignment`
enumerators were one less than in Office, so e.g. `msoAlignCenter` aligned
the text to the left.
- **[behavior change]** The values of `xlThemeFontMajor` and
`xlThemeFontMinor` were swapped.
- **[behavior change]** `msoShapeRound2DiagRectangle` had the value of
`msoShapeSnip2DiagRectangle`, so a rectangle with snipped corners was added
instead of the one with rounded corners.
- **[behavior change]** The values of 15 `MsoPictureEffectType` enumerators
were wrong, e.g. `msoEffectNone` was 17 instead of 0.
- **[behavior change]** `msoContactCardAddressTypeIM` had the value of
`msoContactCardAddressTypeOutlook`, and `msoMetaPropertyTypeMax` was 19
instead of 22.

## 2.6.1 - 2026-10-26

### General
Expand Down
2 changes: 1 addition & 1 deletion docs/doxygen/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = wxAutoExcel
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 2.6.1
PROJECT_NUMBER = 2.7.0

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
4 changes: 2 additions & 2 deletions docs/doxygen/tutorial.h
Original file line number Diff line number Diff line change
Expand Up @@ -487,8 +487,8 @@ as the programmer may be interested in seeing the error message while the user i
@endcode

When calling a method or property of a wxAutoExcel class wrapping a MS Excel object,
the application programmer can learn whether the call succeeded by calling its <tt>operator bool()</tt>.
This operator returns true if the object has a valid automation interface and the last call
the application programmer can learn whether the call succeeded by converting the object to bool.
The conversion returns true if the object has a valid automation interface and the last call
(method or property) on it succeeded, false otherwise.

@code
Expand Down
8 changes: 4 additions & 4 deletions docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,13 @@ wxWidgets dependency transitively, so wxWidgets does not need to be repeated in

# .....
find_package(wxWidgets REQUIRED COMPONENTS core base)
find_package(wxAutoExcel 2.6 REQUIRED CONFIG)
find_package(wxAutoExcel 2.7 REQUIRED CONFIG)
# .....
target_link_libraries(${PROJECT_NAME} PRIVATE wxAutoExcel::wxAutoExcel)

The version is optional. A package of wxAutoExcel is used only for the same major and
minor version, e.g. version 2.6 is found for `find_package(wxAutoExcel 2.6)` but not for
`find_package(wxAutoExcel 2.5)`, as the versions are not compatible.
minor version, e.g. version 2.7 is found for `find_package(wxAutoExcel 2.7)` but not for
`find_package(wxAutoExcel 2.6)`, as the versions are not compatible.

If you did not install wxAutoExcel to a location known to CMake, you may need to tell CMake where to find it.
There are many ways to do that, perhaps the easiest one may be setting CMake variable `wxAutoExcel_ROOT`
Expand Down Expand Up @@ -132,7 +132,7 @@ For example, your application CMakeLists.txt may look like this
FetchContent_Declare(
wxAutoExcel
GIT_REPOSITORY https://github.com/PBfordev/wxAutoExcel
GIT_TAG v2.6.1 # or the tag of another version
GIT_TAG v2.7.0 # or the tag of another version
)
# maybe set some of wxAutoExcel_BUILD options here....
FetchContent_MakeAvailable(wxAutoExcel)
Expand Down
112 changes: 58 additions & 54 deletions include/wx/wxAutoExcel_enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -4375,8 +4375,8 @@ Specifies the theme font to use.
*/
enum XlThemeFont
{
xlThemeFontMajor = 2, /*!< Major. */
xlThemeFontMinor = 1, /*!< Minor. */
xlThemeFontMajor = 1, /*!< Major. */
xlThemeFontMinor = 2, /*!< Minor. */
xlThemeFontNone = 0, /*!< Do not use any theme font. */
};

Expand Down Expand Up @@ -5089,7 +5089,7 @@ enum MsoAutoShapeType
msoShapeRightBracket = 30, /*!< Right bracket */
msoShapeRightTriangle = 8, /*!< Right triangle */
msoShapeRound1Rectangle = 151, /*!< Rectangle with one rounded corner */
msoShapeRound2DiagRectangle = 157, /*!< Rectangle with two rounded corners, diagonally-opposed */
msoShapeRound2DiagRectangle = 153, /*!< Rectangle with two rounded corners, diagonally-opposed */
msoShapeRound2SameRectangle = 152, /*!< Rectangle with two-rounded corners that share a side */
msoShapeRoundedRectangle = 5, /*!< Rounded rectangle */
msoShapeRoundedRectangularCallout = 106, /*!< Rounded rectangle-shaped callout */
Expand Down Expand Up @@ -5646,7 +5646,7 @@ enum MsoContactCardAddressType
msoContactCardAddressTypeUnknown = 0, /*!< An unknown identifier for an address. */
msoContactCardAddressTypeOutlook = 1, /*!< A unique identifier for an Outlook address. */
msoContactCardAddressTypeSMTP = 2, /*!< A unique identifier for an SMTP address. */
msoContactCardAddressTypeIM = 1, /*!< A unique identifier for an IM address. */
msoContactCardAddressTypeIM = 3, /*!< A unique identifier for an IM address. */
};

/**
Expand Down Expand Up @@ -6661,26 +6661,29 @@ Specifies the metadata property type.
*/
enum MsoMetaPropertyType
{
msoMetaPropertyTypeBoolean = 1, /*!< Represents a Boolean value. */
msoMetaPropertyTypeCalculated = 3, /*!< Represents a calculated value. */
msoMetaPropertyTypeChoice = 2, /*!< Represents a value from one or more choices. */
msoMetaPropertyTypeComputed = 4, /*!< Represents a computed value. */
msoMetaPropertyTypeCurrency = 5, /*!< Represents a Currency value */
msoMetaPropertyTypeDateTime = 6, /*!< Represents a DateTime value. */
msoMetaPropertyTypeFillInChoice = 7, /*!< Represents a value from two or more choices that is written-in by the user. */
msoMetaPropertyTypeGuid = 8, /*!< Represents a GUID value. */
msoMetaPropertyTypeInteger = 9, /*!< Represents an Integer value. */
msoMetaPropertyTypeLookup = 10, /*!< Represents a value used to lookup another value. */
msoMetaPropertyTypeMax = 19, /*!< Represents the maximum value for a range. */
msoMetaPropertyTypeMultiChoice = 12, /*!< Represents a collection of choices. */
msoMetaPropertyTypeMultiChoiceFillIn = 13, /*!< Represents a collection of choices that require the user to write-in a value. */
msoMetaPropertyTypeMultiChoiceLookup = 11, /*!< Represents a collection of choices used to look up another value. */
msoMetaPropertyTypeNote = 14, /*!< Represents a value of one or more sentences. */
msoMetaPropertyTypeNumber = 15, /*!< Represents a generic number data type. */
msoMetaPropertyTypeText = 16, /*!< Represents a text value. */
msoMetaPropertyTypeUnknown = 0, /*!< Represents an unknown value. */
msoMetaPropertyTypeUrl = 17, /*!< Represents a URL. */
msoMetaPropertyTypeUser = 18, /*!< Represents a category of user. */
msoMetaPropertyTypeBoolean = 1, /*!< Represents a Boolean value. */
msoMetaPropertyTypeBusinessData = 20, /*!< Represents business data. */
msoMetaPropertyTypeBusinessDataSecondary = 21, /*!< Represents secondary business data. */
msoMetaPropertyTypeCalculated = 3, /*!< Represents a calculated value. */
msoMetaPropertyTypeChoice = 2, /*!< Represents a value from one or more choices. */
msoMetaPropertyTypeComputed = 4, /*!< Represents a computed value. */
msoMetaPropertyTypeCurrency = 5, /*!< Represents a Currency value */
msoMetaPropertyTypeDateTime = 6, /*!< Represents a DateTime value. */
msoMetaPropertyTypeFillInChoice = 7, /*!< Represents a value from two or more choices that is written-in by the user. */
msoMetaPropertyTypeGuid = 8, /*!< Represents a GUID value. */
msoMetaPropertyTypeInteger = 9, /*!< Represents an Integer value. */
msoMetaPropertyTypeLookup = 10, /*!< Represents a value used to lookup another value. */
msoMetaPropertyTypeMax = 22, /*!< Represents the maximum value for a range. */
msoMetaPropertyTypeMultiChoice = 12, /*!< Represents a collection of choices. */
msoMetaPropertyTypeMultiChoiceFillIn = 13, /*!< Represents a collection of choices that require the user to write-in a value. */
msoMetaPropertyTypeMultiChoiceLookup = 11, /*!< Represents a collection of choices used to look up another value. */
msoMetaPropertyTypeNote = 14, /*!< Represents a value of one or more sentences. */
msoMetaPropertyTypeNumber = 15, /*!< Represents a generic number data type. */
msoMetaPropertyTypeText = 16, /*!< Represents a text value. */
msoMetaPropertyTypeUnknown = 0, /*!< Represents an unknown value. */
msoMetaPropertyTypeUrl = 17, /*!< Represents a URL. */
msoMetaPropertyTypeUser = 18, /*!< Represents a category of user. */
msoMetaPropertyTypeUserMulti = 19, /*!< Represents multiple values of the user category. */
};

/**
Expand Down Expand Up @@ -6794,14 +6797,14 @@ Specifies paragraph alignment for a text block.
*/
enum MsoParagraphAlignment
{
msoAlignCenter = 1, /*!< Specifies that the center of each line of text is aligned to the midpoint of the right and left text box margins, and the left and right edges of each line are ragged. */
msoAlignDistribute = 4, /*!< Specifies that the first and last characters of each line (except the last) are aligned to the left and right margins, and lines are filled by adding or subtracting the same amount from each character. The last line of the paragraph is aligned to the left margin if text direction is left-to-right, or to the right margin if text direction is right-to-left. */
msoAlignJustify = 3, /*!< Specifies that the first and last characters of each line (except the last) are aligned to the left and right margins, and lines are filled by adding or subtracting space between and within words. The last line of the paragraph is aligned to the left margin if text direction is left-to-right, or to the right margin if text direction is right-to-left. */
msoAlignJustifyLow = 6, /*!< Specifies the alignment or adjustment of kashida length in Arabic text. Kashida are special characters used to extend the joiner between two Arabic characters. */
msoAlignLeft = 0, /*!< Specifies that the leftmost character of each line is aligned to the left margin, and the right edge of each line is ragged. This is the default alignment for paragraphs with left-to-right text direction. */
msoAlignCenter = 2, /*!< Specifies that the center of each line of text is aligned to the midpoint of the right and left text box margins, and the left and right edges of each line are ragged. */
msoAlignDistribute = 5, /*!< Specifies that the first and last characters of each line (except the last) are aligned to the left and right margins, and lines are filled by adding or subtracting the same amount from each character. The last line of the paragraph is aligned to the left margin if text direction is left-to-right, or to the right margin if text direction is right-to-left. */
msoAlignJustify = 4, /*!< Specifies that the first and last characters of each line (except the last) are aligned to the left and right margins, and lines are filled by adding or subtracting space between and within words. The last line of the paragraph is aligned to the left margin if text direction is left-to-right, or to the right margin if text direction is right-to-left. */
msoAlignJustifyLow = 7, /*!< Specifies the alignment or adjustment of kashida length in Arabic text. Kashida are special characters used to extend the joiner between two Arabic characters. */
msoAlignLeft = 1, /*!< Specifies that the leftmost character of each line is aligned to the left margin, and the right edge of each line is ragged. This is the default alignment for paragraphs with left-to-right text direction. */
msoAlignMixed = -2, /*!< Uses a combination of alignment styles. */
msoAlignRight = 2, /*!< Specifies that the rightmost character of each line is aligned to the right margin, and the left edge of each line is ragged. This is the default alignment for paragraphs with right-to-left text direction. */
msoAlignThaiDistribute = 5, /*!< Specifies that the first and last characters of each line (except the last) are aligned to the left and right margins, and lines are filled by adding or subtracting space between (but not within) words. The last line of the paragraph is aligned to the left margin. */
msoAlignRight = 3, /*!< Specifies that the rightmost character of each line is aligned to the right margin, and the left edge of each line is ragged. This is the default alignment for paragraphs with right-to-left text direction. */
msoAlignThaiDistribute = 6, /*!< Specifies that the first and last characters of each line (except the last) are aligned to the left and right margins, and lines are filled by adding or subtracting space between (but not within) words. The last line of the paragraph is aligned to the left margin. */
};

/**
Expand Down Expand Up @@ -6958,9 +6961,9 @@ enum MsoPictureEffectType
msoEffectBlur = 2, /*!< Blur effect */
msoEffectBrightnessContrast = 3, /*!< Brightness contrast effect */
msoEffectCement = 4, /*!< Cement effect */
msoEffectChalkSketch = 5, /*!< Chalk sketch effect */
msoEffectColorTemperature = 6, /*!< Color temperature effect */
msoEffectCrisscrossEtching = 7, /*!< Crisscross etching effect */
msoEffectChalkSketch = 6, /*!< Chalk sketch effect */
msoEffectColorTemperature = 7, /*!< Color temperature effect */
msoEffectCrisscrossEtching = 5, /*!< Crisscross etching effect */
msoEffectCutout = 8, /*!< Cutout effect */
msoEffectFilmGrain = 9, /*!< Film grain effect */
msoEffectGlass = 10, /*!< Glass effect */
Expand All @@ -6970,18 +6973,18 @@ enum MsoPictureEffectType
msoEffectLineDrawing = 14, /*!< Line drawing effect */
msoEffectMarker = 15, /*!< Marker effect */
msoEffectMosaicBubbles = 16, /*!< Mosaic bubbles */
msoEffectNone = 17, /*!< No effect */
msoEffectPaintBrush = 18, /*!< Paintbrush effect */
msoEffectPaintStrokes = 19, /*!< Paint strokes effect */
msoEffectPastelsSmooth = 20, /*!< Smooth pastel effect */
msoEffectPencilGrayscale = 21, /*!< Pencil greyscale effect */
msoEffectPencilSketch = 22, /*!< Pencil sketch effect */
msoEffectPhotocopy = 23, /*!< Photocopy effect */
msoEffectPlasticWrap = 24, /*!< Plastic wrap effect */
msoEffectSaturation = 25, /*!< Saturation effect */
msoEffectSharpenSoften = 26, /*!< Sharpen soften effect */
msoEffectTexturizer = 27, /*!< Texturizer effect */
msoEffectWatercolorSponge = 28, /*!< Watercolor sponge effect */
msoEffectNone = 0, /*!< No effect */
msoEffectPaintBrush = 17, /*!< Paintbrush effect */
msoEffectPaintStrokes = 18, /*!< Paint strokes effect */
msoEffectPastelsSmooth = 19, /*!< Smooth pastel effect */
msoEffectPencilGrayscale = 20, /*!< Pencil greyscale effect */
msoEffectPencilSketch = 21, /*!< Pencil sketch effect */
msoEffectPhotocopy = 22, /*!< Photocopy effect */
msoEffectPlasticWrap = 23, /*!< Plastic wrap effect */
msoEffectSaturation = 24, /*!< Saturation effect */
msoEffectSharpenSoften = 25, /*!< Sharpen soften effect */
msoEffectTexturizer = 26, /*!< Texturizer effect */
msoEffectWatercolorSponge = 27, /*!< Watercolor sponge effect */
};

/**
Expand Down Expand Up @@ -7644,14 +7647,15 @@ Represents the soft edge effect in Office graphics.
*/
enum MsoSoftEdgeType
{
msoSoftEdgeType1 = 1, /*!< Soft Edge Type 1 */
msoSoftEdgeType2 = 2, /*!< Soft Edge Type 2 */
msoSoftEdgeType3 = 3, /*!< Soft Edge Type 3 */
msoSoftEdgeType4 = 4, /*!< Soft Edge Type 4 */
msoSoftEdgeType5 = 5, /*!< Soft Edge Type 5 */
msoSoftEdgeType6 = 6, /*!< Soft Edge Type 6 */
msoSoftEdgeTypeNone = 0, /*!< No soft edge */
SoftEdgeTypeMixed = -2, /*!< A mix of soft edge types */
msoSoftEdgeType1 = 1, /*!< Soft Edge Type 1 */
msoSoftEdgeType2 = 2, /*!< Soft Edge Type 2 */
msoSoftEdgeType3 = 3, /*!< Soft Edge Type 3 */
msoSoftEdgeType4 = 4, /*!< Soft Edge Type 4 */
msoSoftEdgeType5 = 5, /*!< Soft Edge Type 5 */
msoSoftEdgeType6 = 6, /*!< Soft Edge Type 6 */
msoSoftEdgeTypeMixed = -2, /*!< A mix of soft edge types */
msoSoftEdgeTypeNone = 0, /*!< No soft edge */
SoftEdgeTypeMixed = -2, /*!< Deprecated, use msoSoftEdgeTypeMixed instead. */
};

/**
Expand Down
Loading
Loading