bundled/include/LibreOfficeKit/LibreOfficeKit.h | 30 +++++ bundled/include/LibreOfficeKit/LibreOfficeKit.hxx | 38 +++++- bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h | 112 +++++++++++++++++++ kit/ChildSession.cpp | 23 +-- kit/Kit.cpp | 8 - kit/KitHelper.hpp | 101 ----------------- tools/KitClient.cpp | 54 --------- 7 files changed, 193 insertions(+), 173 deletions(-)
New commits: commit 32007cbb329f4d2bb1b44d0353ad141996d623f7 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> AuthorDate: Fri Aug 16 09:24:38 2019 -0400 Commit: Ashod Nakashian <ashnak...@gmail.com> CommitDate: Sat Aug 17 03:38:08 2019 +0200 Update LOK headers and reuse callback-type-to-string helper Also, avoid repeatedly converting INT_MAX to string. It's an arbitrary large number, so use 1 billion, which is probably more easily recognizable as an arbitrary large number. Change-Id: Ie6f898d6e8978efa29c355f3cb50b60114870f0d Reviewed-on: https://gerrit.libreoffice.org/77593 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKit.h b/bundled/include/LibreOfficeKit/LibreOfficeKit.h index e4e96483c..93b430f5d 100644 --- a/bundled/include/LibreOfficeKit/LibreOfficeKit.h +++ b/bundled/include/LibreOfficeKit/LibreOfficeKit.h @@ -378,6 +378,36 @@ struct _LibreOfficeKitDocumentClass /// @see lok::Document::createViewWithOptions(). int (*createViewWithOptions) (LibreOfficeKitDocument* pThis, const char* pOptions); + /// @see lok::Document::selectPart(). + void (*selectPart) (LibreOfficeKitDocument* pThis, int nPart, int nSelect); + + /// @see lok::Document::moveSelectedParts(). + void (*moveSelectedParts) (LibreOfficeKitDocument* pThis, int nPosition, bool bDuplicate); + + /// Resize window with given id. + /// @see lok::Document::resizeWindow(). + void (*resizeWindow) (LibreOfficeKitDocument* pThis, unsigned nWindowId, + const int width, const int height); + + /// Pass a nullptr terminated array of mime-type strings + /// @see lok::Document::getClipboard for more details + int (*getClipboard) (LibreOfficeKitDocument* pThis, + const char **pMimeTypes, + size_t *pOutCount, + char ***pOutMimeTypes, + size_t **pOutSizes, + char ***pOutStreams); + + /// @see lok::Document::setClipboard + int (*setClipboard) (LibreOfficeKitDocument* pThis, + const size_t nInCount, + const char **pInMimeTypes, + const size_t *pInSizes, + const char **pInStreams); + + /// @see lok::Document::getSelectionType + int (*getSelectionType) (LibreOfficeKitDocument* pThis); + #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY }; diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx b/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx index 0d1c6e94d..517a38a50 100644 --- a/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx +++ b/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx @@ -188,7 +188,7 @@ public: * * @param nWindowid */ - void postWindow(unsigned nWindowId, int nAction, const char* pData) + void postWindow(unsigned nWindowId, int nAction, const char* pData = nullptr) { return mpDoc->pClass->postWindow(mpDoc, nWindowId, nAction, pData); } @@ -436,7 +436,7 @@ public: /** * Returns a json mapping of the possible values for the given command * e.g. {commandName: ".uno:StyleApply", commandValues: {"familyName1" : ["list of style names in the family1"], etc.}} - * @param pCommand a uno command for which the possible values are requested + * @param pCommand a UNO command for which the possible values are requested * @return {commandName: unoCmd, commandValues: {possible_values}} */ char* getCommandValues(const char* pCommand) @@ -676,7 +676,7 @@ public: /** * Gets an image of the selected shapes. * @param pOutput contains the result; use free to deallocate. - * @return the size ouf *pOutput in bytes. + * @return the size of *pOutput in bytes. */ size_t renderShapeSelection(char** pOutput) { @@ -698,6 +698,36 @@ public: { return mpDoc->pClass->postWindowGestureEvent(mpDoc, nWindowId, pType, nX, nY, nOffset); } + + /// Set a part's selection mode. + /// nSelect is 0 to deselect, 1 to select, and 2 to toggle. + void selectPart(int nPart, int nSelect) + { + mpDoc->pClass->selectPart(mpDoc, nPart, nSelect); + } + + /// Moves the selected pages/slides to a new position. + /// nPosition is the new position where the selection + /// should go. bDuplicate when true will copy instead of move. + void moveSelectedParts(int nPosition, bool bDuplicate) + { + mpDoc->pClass->moveSelectedParts(mpDoc, nPosition, bDuplicate); + } + + /** + * Resize a window (dialog, popup, etc.) with give id. + * + * @param nWindowId + * @param width The width of the window. + * @param height The height of the window. + */ + void resizeWindow(unsigned nWindowId, + const int width, + const int height) + { + return mpDoc->pClass->resizeWindow(mpDoc, nWindowId, width, height); + } + #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY }; @@ -719,7 +749,7 @@ public: } /** - * Loads a document from an URL. + * Loads a document from a URL. * * @param pUrl the URL of the document to load * @param pFilterOptions options for the import filter, e.g. SkipImages. diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h index 0c8e5938f..44bf83eab 100644 --- a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h +++ b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h @@ -10,6 +10,8 @@ #ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITENUMS_H #define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITENUMS_H +#include <assert.h> + #ifdef __cplusplus extern "C" { @@ -47,6 +49,15 @@ typedef enum } LibreOfficeKitWindowAction; +typedef enum +{ + LOK_SELTYPE_NONE, + LOK_SELTYPE_TEXT, + LOK_SELTYPE_LARGE_TEXT, + LOK_SELTYPE_COMPLEX +} +LibreOfficeKitSelectionType; + /** Optional features of LibreOfficeKit, in particular callbacks that block * LibreOfficeKit until the corresponding reply is received, which would * deadlock if the client does not support the feature. @@ -697,6 +708,107 @@ typedef enum } LibreOfficeKitExtTextInputType; +/// Returns the string representation of a LibreOfficeKitCallbackType enumeration element. +static inline const char* lokCallbackTypeToString(int nType) +{ + switch (static_cast<LibreOfficeKitCallbackType>(nType)) + { + case LOK_CALLBACK_INVALIDATE_TILES: + return "LOK_CALLBACK_INVALIDATE_TILES"; + case LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR: + return "LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR"; + case LOK_CALLBACK_TEXT_SELECTION: + return "LOK_CALLBACK_TEXT_SELECTION"; + case LOK_CALLBACK_TEXT_SELECTION_START: + return "LOK_CALLBACK_TEXT_SELECTION_START"; + case LOK_CALLBACK_TEXT_SELECTION_END: + return "LOK_CALLBACK_TEXT_SELECTION_END"; + case LOK_CALLBACK_CURSOR_VISIBLE: + return "LOK_CALLBACK_CURSOR_VISIBLE"; + case LOK_CALLBACK_VIEW_CURSOR_VISIBLE: + return "LOK_CALLBACK_VIEW_CURSOR_VISIBLE"; + case LOK_CALLBACK_GRAPHIC_SELECTION: + return "LOK_CALLBACK_GRAPHIC_SELECTION"; + case LOK_CALLBACK_GRAPHIC_VIEW_SELECTION: + return "LOK_CALLBACK_GRAPHIC_VIEW_SELECTION"; + case LOK_CALLBACK_CELL_CURSOR: + return "LOK_CALLBACK_CELL_CURSOR"; + case LOK_CALLBACK_HYPERLINK_CLICKED: + return "LOK_CALLBACK_HYPERLINK_CLICKED"; + case LOK_CALLBACK_MOUSE_POINTER: + return "LOK_CALLBACK_MOUSE_POINTER"; + case LOK_CALLBACK_STATE_CHANGED: + return "LOK_CALLBACK_STATE_CHANGED"; + case LOK_CALLBACK_STATUS_INDICATOR_START: + return "LOK_CALLBACK_STATUS_INDICATOR_START"; + case LOK_CALLBACK_STATUS_INDICATOR_SET_VALUE: + return "LOK_CALLBACK_STATUS_INDICATOR_SET_VALUE"; + case LOK_CALLBACK_STATUS_INDICATOR_FINISH: + return "LOK_CALLBACK_STATUS_INDICATOR_FINISH"; + case LOK_CALLBACK_SEARCH_NOT_FOUND: + return "LOK_CALLBACK_SEARCH_NOT_FOUND"; + case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED: + return "LOK_CALLBACK_DOCUMENT_SIZE_CHANGED"; + case LOK_CALLBACK_SET_PART: + return "LOK_CALLBACK_SET_PART"; + case LOK_CALLBACK_SEARCH_RESULT_SELECTION: + return "LOK_CALLBACK_SEARCH_RESULT_SELECTION"; + case LOK_CALLBACK_DOCUMENT_PASSWORD: + return "LOK_CALLBACK_DOCUMENT_PASSWORD"; + case LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY: + return "LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY"; + case LOK_CALLBACK_CONTEXT_MENU: + return "LOK_CALLBACK_CONTEXT_MENU"; + case LOK_CALLBACK_INVALIDATE_VIEW_CURSOR: + return "LOK_CALLBACK_INVALIDATE_VIEW_CURSOR"; + case LOK_CALLBACK_TEXT_VIEW_SELECTION: + return "LOK_CALLBACK_TEXT_VIEW_SELECTION"; + case LOK_CALLBACK_CELL_VIEW_CURSOR: + return "LOK_CALLBACK_CELL_VIEW_CURSOR"; + case LOK_CALLBACK_CELL_ADDRESS: + return "LOK_CALLBACK_CELL_ADDRESS"; + case LOK_CALLBACK_CELL_FORMULA: + return "LOK_CALLBACK_CELL_FORMULA"; + case LOK_CALLBACK_UNO_COMMAND_RESULT: + return "LOK_CALLBACK_UNO_COMMAND_RESULT"; + case LOK_CALLBACK_ERROR: + return "LOK_CALLBACK_ERROR"; + case LOK_CALLBACK_VIEW_LOCK: + return "LOK_CALLBACK_VIEW_LOCK"; + case LOK_CALLBACK_REDLINE_TABLE_SIZE_CHANGED: + return "LOK_CALLBACK_REDLINE_TABLE_SIZE_CHANGED"; + case LOK_CALLBACK_REDLINE_TABLE_ENTRY_MODIFIED: + return "LOK_CALLBACK_REDLINE_TABLE_ENTRY_MODIFIED"; + case LOK_CALLBACK_INVALIDATE_HEADER: + return "LOK_CALLBACK_INVALIDATE_HEADER"; + case LOK_CALLBACK_COMMENT: + return "LOK_CALLBACK_COMMENT"; + case LOK_CALLBACK_RULER_UPDATE: + return "LOK_CALLBACK_RULER_UPDATE"; + case LOK_CALLBACK_WINDOW: + return "LOK_CALLBACK_WINDOW"; + case LOK_CALLBACK_VALIDITY_LIST_BUTTON: + return "LOK_CALLBACK_VALIDITY_LIST_BUTTON"; + case LOK_CALLBACK_CLIPBOARD_CHANGED: + return "LOK_CALLBACK_CLIPBOARD_CHANGED"; + case LOK_CALLBACK_CONTEXT_CHANGED: + return "LOK_CALLBACK_CONTEXT_CHANGED"; + case LOK_CALLBACK_SIGNATURE_STATUS: + return "LOK_CALLBACK_SIGNATURE_STATUS"; + case LOK_CALLBACK_PROFILE_FRAME: + return "LOK_CALLBACK_PROFILE_FRAME"; + case LOK_CALLBACK_CELL_SELECTION_AREA: + return "LOK_CALLBACK_CELL_SELECTION_AREA"; + case LOK_CALLBACK_CELL_AUTO_FILL_AREA: + return "LOK_CALLBACK_CELL_AUTO_FILL_AREA"; + case LOK_CALLBACK_TABLE_SELECTED: + return "LOK_CALLBACK_TABLE_SELECTED"; + } + + assert(!"Unknown LibreOfficeKitCallbackType type."); + return nullptr; +} + typedef enum { /// A pressed gesture has started. diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp index 62566c7be..c3dd0a3ae 100644 --- a/kit/ChildSession.cpp +++ b/kit/ChildSession.cpp @@ -148,7 +148,7 @@ bool ChildSession::_handleInput(const char *buffer, int length) // the rectangle to invalidate; invalidating everything is sub-optimal if (_stateRecorder.isInvalidate()) { - std::string payload = "0, 0, " + std::to_string(INT_MAX) + ", " + std::to_string(INT_MAX) + ", " + std::to_string(curPart); + const std::string payload = "0, 0, 1000000000, 1000000000, " + std::to_string(curPart); loKitCallback(LOK_CALLBACK_INVALIDATE_TILES, payload); } @@ -157,7 +157,8 @@ bool ChildSession::_handleInput(const char *buffer, int length) for (const auto& eventPair : viewPair.second) { const RecordedEvent& event = eventPair.second; - LOG_TRC("Replaying missed view event: " << viewPair.first << " " << LOKitHelper::kitCallbackTypeToString(event.getType()) + LOG_TRC("Replaying missed view event: " << viewPair.first << ' ' + << lokCallbackTypeToString(event.getType()) << ": " << event.getPayload()); loKitCallback(event.getType(), event.getPayload()); } @@ -166,7 +167,8 @@ bool ChildSession::_handleInput(const char *buffer, int length) for (const auto& eventPair : _stateRecorder.getRecordedEvents()) { const RecordedEvent& event = eventPair.second; - LOG_TRC("Replaying missed event: " << LOKitHelper::kitCallbackTypeToString(event.getType()) << ": " << event.getPayload()); + LOG_TRC("Replaying missed event: " << lokCallbackTypeToString(event.getType()) << ": " + << event.getPayload()); loKitCallback(event.getType(), event.getPayload()); } @@ -178,7 +180,8 @@ bool ChildSession::_handleInput(const char *buffer, int length) for (const auto& event : _stateRecorder.getRecordedEventsVector()) { - LOG_TRC("Replaying missed event (part of sequence): " << LOKitHelper::kitCallbackTypeToString(event.getType()) << ": " << event.getPayload()); + LOG_TRC("Replaying missed event (part of sequence): " << + lokCallbackTypeToString(event.getType()) << ": " << event.getPayload()); loKitCallback(event.getType(), event.getPayload()); } @@ -2066,7 +2069,7 @@ int ChildSession::getSpeed() { void ChildSession::loKitCallback(const int type, const std::string& payload) { - const std::string typeName = LOKitHelper::kitCallbackTypeToString(type); + const char* const typeName = lokCallbackTypeToString(type); LOG_TRC("ChildSession::loKitCallback [" << getName() << "]: " << typeName << " [" << payload << "]."); @@ -2187,12 +2190,8 @@ void ChildSession::loKitCallback(const int type, const std::string& payload) const int parts = getLOKitDocument()->getParts(); for (int i = 0; i < parts; ++i) { - sendTextFrame("invalidatetiles:" - " part=" + std::to_string(i) + - " x=0" + - " y=0" + - " width=" + std::to_string(INT_MAX) + - " height=" + std::to_string(INT_MAX)); + sendTextFrame("invalidatetiles: part=" + std::to_string(i) + + " x=0 y=0 width=1000000000 height=1000000000"); } getStatus("", 0); @@ -2307,7 +2306,7 @@ void ChildSession::loKitCallback(const int type, const std::string& payload) // we want a compilation-time failure in the debug builds; but ERR in the // log in the release ones default: - LOG_ERR("Unknown callback event (" << LOKitHelper::kitCallbackTypeToString(type) << "): " << payload); + LOG_ERR("Unknown callback event (" << lokCallbackTypeToString(type) << "): " << payload); #endif } } diff --git a/kit/Kit.cpp b/kit/Kit.cpp index bd6dc7f8c..c76e4cf50 100644 --- a/kit/Kit.cpp +++ b/kit/Kit.cpp @@ -1324,7 +1324,7 @@ public: } const std::string payload = p ? p : "(nil)"; - LOG_TRC("Document::GlobalCallback " << LOKitHelper::kitCallbackTypeToString(type) << + LOG_TRC("Document::GlobalCallback " << lokCallbackTypeToString(type) << " [" << payload << "]."); Document* self = static_cast<Document*>(data); if (type == LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY || @@ -1369,7 +1369,7 @@ public: const std::string payload = p ? p : "(nil)"; LOG_TRC("Document::ViewCallback [" << descriptor->getViewId() << - "] [" << LOKitHelper::kitCallbackTypeToString(type) << + "] [" << lokCallbackTypeToString(type) << "] [" << payload << "]."); // when we examine the content of the JSON @@ -2069,7 +2069,7 @@ public: else { LOG_ERR("Session-thread of session [" << session->getId() << "] for view [" << - viewId << "] is not running. Dropping [" << LOKitHelper::kitCallbackTypeToString(type) << + viewId << "] is not running. Dropping [" << lokCallbackTypeToString(type) << "] payload [" << payload << "]."); } @@ -2083,7 +2083,7 @@ public: if (!isFound) { LOG_WRN("Document::ViewCallback. Session [" << viewId << - "] is no longer active to process [" << LOKitHelper::kitCallbackTypeToString(type) << + "] is no longer active to process [" << lokCallbackTypeToString(type) << "] [" << payload << "] message to Master Session."); } } diff --git a/kit/KitHelper.hpp b/kit/KitHelper.hpp index 8a32cb2dd..b0962276a 100644 --- a/kit/KitHelper.hpp +++ b/kit/KitHelper.hpp @@ -44,107 +44,6 @@ namespace LOKitHelper return documentTypeToString(type); } - inline std::string kitCallbackTypeToString(const int type) - { - // Keep in the same order as in LibreOfficeKitEnums.h - switch (static_cast<LibreOfficeKitCallbackType>(type)) - { - case LOK_CALLBACK_INVALIDATE_TILES: - return "INVALIDATE_TILES"; - case LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR: - return "INVALIDATE_VISIBLE_CURSOR"; - case LOK_CALLBACK_TEXT_SELECTION: - return "TEXT_SELECTION"; - case LOK_CALLBACK_TEXT_SELECTION_START: - return "TEXT_SELECTION_START"; - case LOK_CALLBACK_TEXT_SELECTION_END: - return "TEXT_SELECTION_END"; - case LOK_CALLBACK_CURSOR_VISIBLE: - return "CURSOR_VISIBLE"; - case LOK_CALLBACK_GRAPHIC_SELECTION: - return "GRAPHIC_SELECTION"; - case LOK_CALLBACK_HYPERLINK_CLICKED: - return "HYPERLINK_CLICKED"; - case LOK_CALLBACK_STATE_CHANGED: - return "STATE_CHANGED"; - case LOK_CALLBACK_STATUS_INDICATOR_START: - return "STATUS_INDICATOR_START"; - case LOK_CALLBACK_STATUS_INDICATOR_SET_VALUE: - return "STATUS_INDICATOR_SET_VALUE"; - case LOK_CALLBACK_STATUS_INDICATOR_FINISH: - return "STATUS_INDICATOR_FINISH"; - case LOK_CALLBACK_SEARCH_NOT_FOUND: - return "SEARCH_NOT_FOUND"; - case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED: - return "DOCUMENT_SIZE_CHANGED"; - case LOK_CALLBACK_SET_PART: - return "SET_PART"; - case LOK_CALLBACK_SEARCH_RESULT_SELECTION: - return "SEARCH_RESULT_SELECTION"; - case LOK_CALLBACK_UNO_COMMAND_RESULT: - return "UNO_COMMAND_RESULT"; - case LOK_CALLBACK_CELL_CURSOR: - return "CELL_CURSOR"; - case LOK_CALLBACK_MOUSE_POINTER: - return "MOUSE_POINTER"; - case LOK_CALLBACK_CELL_FORMULA: - return "CELL_FORMULA"; - case LOK_CALLBACK_DOCUMENT_PASSWORD: - return "DOCUMENT_PASSWORD"; - case LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY: - return "DOCUMENT_PASSWORD_TO_MODIFY"; - case LOK_CALLBACK_ERROR: - return "ERROR"; - case LOK_CALLBACK_CONTEXT_MENU: - return "CONTEXT_MENU"; - case LOK_CALLBACK_INVALIDATE_VIEW_CURSOR: - return "INVALIDATE_VIEW_CURSOR"; - case LOK_CALLBACK_TEXT_VIEW_SELECTION: - return "TEXT_VIEW_SELECTION"; - case LOK_CALLBACK_CELL_VIEW_CURSOR: - return "CELL_VIEW_CURSOR"; - case LOK_CALLBACK_GRAPHIC_VIEW_SELECTION: - return "GRAPHIC_VIEW_SELECTION"; - case LOK_CALLBACK_VIEW_CURSOR_VISIBLE: - return "VIEW_CURSOR_VISIBLE"; - case LOK_CALLBACK_VIEW_LOCK: - return "VIEW_LOCK"; - case LOK_CALLBACK_REDLINE_TABLE_SIZE_CHANGED: - return "REDLINE_TABLE_SIZE_CHANGED"; - case LOK_CALLBACK_REDLINE_TABLE_ENTRY_MODIFIED: - return "REDLINE_TABLE_ENTRY_MODIFIED"; - case LOK_CALLBACK_COMMENT: - return "COMMENT"; - case LOK_CALLBACK_INVALIDATE_HEADER: - return "INVALIDATE_HEADER"; - case LOK_CALLBACK_CELL_ADDRESS: - return "CELL_ADDRESS"; - case LOK_CALLBACK_RULER_UPDATE: - return "RULER_UPDATE"; - case LOK_CALLBACK_WINDOW: - return "WINDOW"; - case LOK_CALLBACK_VALIDITY_LIST_BUTTON: - return "VALIDITY_LIST_BUTTON"; - case LOK_CALLBACK_CLIPBOARD_CHANGED: - return "CLIPBOARD_CHANGED"; - case LOK_CALLBACK_CONTEXT_CHANGED: - return "CONTEXT_CHANGED"; - case LOK_CALLBACK_SIGNATURE_STATUS: - return "SIGNATURE_STATUS"; - case LOK_CALLBACK_PROFILE_FRAME: - return "PROFILE_FRAME"; - case LOK_CALLBACK_CELL_SELECTION_AREA: - return "CELL_SELECTION_AREA"; - case LOK_CALLBACK_CELL_AUTO_FILL_AREA: - return "CELL_AUTO_FILL_AREA"; - case LOK_CALLBACK_TABLE_SELECTED: - return "TABLE_SELECTED"; - } - - assert(!"Missing LOK_CALLBACK type"); - return std::to_string(type); - } - inline std::string documentStatus(LibreOfficeKitDocument *loKitDocument) { char *ptrValue; diff --git a/tools/KitClient.cpp b/tools/KitClient.cpp index a4419a3e3..fdb4ffa84 100644 --- a/tools/KitClient.cpp +++ b/tools/KitClient.cpp @@ -39,58 +39,8 @@ extern "C" { static void myCallback(int type, const char* payload, void*) { - std::cout << "Callback: "; - switch ((LibreOfficeKitCallbackType) type) - { -#define CASE(x) case LOK_CALLBACK_##x: std::cout << #x; break - CASE(INVALIDATE_TILES); - CASE(INVALIDATE_VISIBLE_CURSOR); - CASE(TEXT_SELECTION); - CASE(TEXT_SELECTION_START); - CASE(TEXT_SELECTION_END); - CASE(CURSOR_VISIBLE); - CASE(GRAPHIC_SELECTION); - CASE(CELL_CURSOR); - CASE(CELL_FORMULA); - CASE(HYPERLINK_CLICKED); - CASE(MOUSE_POINTER); - CASE(STATE_CHANGED); - CASE(STATUS_INDICATOR_START); - CASE(STATUS_INDICATOR_SET_VALUE); - CASE(STATUS_INDICATOR_FINISH); - CASE(SEARCH_NOT_FOUND); - CASE(SEARCH_RESULT_SELECTION); - CASE(DOCUMENT_SIZE_CHANGED); - CASE(SET_PART); - CASE(UNO_COMMAND_RESULT); - CASE(DOCUMENT_PASSWORD); - CASE(DOCUMENT_PASSWORD_TO_MODIFY); - CASE(ERROR); - CASE(CONTEXT_MENU); - CASE(INVALIDATE_VIEW_CURSOR); - CASE(TEXT_VIEW_SELECTION); - CASE(CELL_VIEW_CURSOR); - CASE(GRAPHIC_VIEW_SELECTION); - CASE(VIEW_CURSOR_VISIBLE); - CASE(VIEW_LOCK); - CASE(REDLINE_TABLE_SIZE_CHANGED); - CASE(REDLINE_TABLE_ENTRY_MODIFIED); - CASE(COMMENT); - CASE(INVALIDATE_HEADER); - CASE(CELL_ADDRESS); - CASE(RULER_UPDATE); - CASE(WINDOW); - CASE(VALIDITY_LIST_BUTTON); - CASE(CLIPBOARD_CHANGED); - CASE(CONTEXT_CHANGED); - CASE(SIGNATURE_STATUS); - CASE(PROFILE_FRAME); - CASE(CELL_SELECTION_AREA); - CASE(CELL_AUTO_FILL_AREA); - CASE(TABLE_SELECTED); -#undef CASE - } - std::cout << " payload: " << payload << std::endl; + std::cout << "Callback: " << lokCallbackTypeToString(type) + << " payload: " << payload << std::endl; } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits