389815ac63
The new function takes a map from keywords to integer values, and accepts parameters in the form of either name=keyword, or for backward compatibility, name='keyword'. Use it to parse the type parameter of the key, mouse, selecttext and selectgraphic messages. This restricts the accepted keywords to those actually valid for each message.
77 lines
2.4 KiB
C++
77 lines
2.4 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#ifndef INCLUDED_LOOLPROTOCOL_HPP
|
|
#define INCLUDED_LOOLPROTOCOL_HPP
|
|
|
|
#include <map>
|
|
#include <string>
|
|
|
|
#define LOK_USE_UNSTABLE_API
|
|
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
|
|
|
|
namespace LOOLProtocol
|
|
{
|
|
// The frames sent from the client to the server are called
|
|
// "commands" and those sent from the server to the client are
|
|
// called "messages". At least until I come up with a better
|
|
// terminology.
|
|
|
|
// I don't want to call the latter "responses"
|
|
// because they are not necessarily responses to some "request" or
|
|
// "command". Also "event" would be misleading because that is
|
|
// typically used for things originated by the user, like key or
|
|
// mouse events. And in fact, those are here part of the
|
|
// "commands".
|
|
|
|
// Not sure if these enums will be needed
|
|
enum class Command
|
|
{
|
|
KEY,
|
|
LOAD,
|
|
MOUSE,
|
|
RESETSELECTION,
|
|
SAVEAS,
|
|
SELECTGRAPHIC,
|
|
SELECTTEXT,
|
|
STATUS,
|
|
TILE,
|
|
UNO,
|
|
};
|
|
|
|
enum class Message
|
|
{
|
|
CHILD,
|
|
CURSOR_VISIBLE,
|
|
ERROR,
|
|
GRAPHIC_SELECTION,
|
|
HYPERLINK_CLICKED,
|
|
INVALIDATE_CURSOR,
|
|
INVALIDATE_TILES,
|
|
STATUS,
|
|
TEXT_SELECTION,
|
|
TEXT_SELECTION_END,
|
|
TEXT_SELECTION_START,
|
|
TILE,
|
|
};
|
|
|
|
bool getTokenInteger(const std::string& token, const std::string& name, int& value);
|
|
bool getTokenString(const std::string& token, const std::string& name, std::string& value);
|
|
bool getTokenKeyword(const std::string& token, const std::string& name, const std::map<std::string, int>& map, int& value);
|
|
|
|
// Functions that parse messages. All return false if parsing fails
|
|
bool parseStatus(const std::string& message, LibreOfficeKitDocumentType& type, int& nParts, int& currentPart, int& width, int& height);
|
|
|
|
std::string getFirstLine(const char *message, int length);
|
|
std::string getAbbreviatedMessage(const char *message, int length);
|
|
};
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|