ios LibreOfficeLight LOkit integration
Integrated LibreOfficeLight into gbuild. added lo.xcconfig and Resources (needed to link with LO and run LO) added swift --> C interface for LOkit add known commands from JS client added C++ condition in LibreOfficekitInit.h (inline no good in a C file) Change-Id: I19ebe8912546408bf701c96c0c63541d6e37cad8 Reviewed-on: https://gerrit.libreoffice.org/35430 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: jan iversen <jani@libreoffice.org>
This commit is contained in:
parent
7a2f07c4bd
commit
c1f46c54a6
@ -43,7 +43,9 @@ extern "C"
|
|||||||
#define SEPARATOR '/'
|
#define SEPARATOR '/'
|
||||||
|
|
||||||
#ifndef __OBJC__
|
#ifndef __OBJC__
|
||||||
|
#ifdef __cplusplus
|
||||||
inline
|
inline
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
void *lok_loadlib(const char *pFN)
|
void *lok_loadlib(const char *pFN)
|
||||||
{
|
{
|
||||||
@ -55,7 +57,9 @@ extern "C"
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __OBJC__
|
#ifndef __OBJC__
|
||||||
|
#ifdef __cplusplus
|
||||||
inline
|
inline
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
char *lok_dlerror(void)
|
char *lok_dlerror(void)
|
||||||
{
|
{
|
||||||
@ -63,7 +67,9 @@ extern "C"
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __OBJC__
|
#ifndef __OBJC__
|
||||||
|
#ifdef __cplusplus
|
||||||
inline
|
inline
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
void *lok_dlsym(void *Hnd, const char *pName)
|
void *lok_dlsym(void *Hnd, const char *pName)
|
||||||
{
|
{
|
||||||
@ -71,7 +77,9 @@ extern "C"
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __OBJC__
|
#ifndef __OBJC__
|
||||||
|
#ifdef __cplusplus
|
||||||
inline
|
inline
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
int lok_dlclose(void *Hnd)
|
int lok_dlclose(void *Hnd)
|
||||||
{
|
{
|
||||||
@ -79,7 +87,9 @@ extern "C"
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __OBJC__
|
#ifndef __OBJC__
|
||||||
|
#ifdef __cplusplus
|
||||||
inline
|
inline
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
void extendUnoPath(const char *pPath)
|
void extendUnoPath(const char *pPath)
|
||||||
{
|
{
|
||||||
|
30
ios/CustomTarget_LibreOfficeLight_app.mk
Normal file
30
ios/CustomTarget_LibreOfficeLight_app.mk
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||||
|
#
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
#- Env ------------------------------------------------------------------------
|
||||||
|
BUILDID :=$(shell cd $(SRCDIR) && git log -1 --format=%H)
|
||||||
|
|
||||||
|
#- Targets --------------------------------------------------------------------
|
||||||
|
|
||||||
|
.PHONY: LibreOfficeLight_setup
|
||||||
|
|
||||||
|
# Register target
|
||||||
|
$(eval $(call gb_CustomTarget_CustomTarget,ios/LibreOfficeLight))
|
||||||
|
|
||||||
|
# Build
|
||||||
|
# Depend on the custom target that sets up lo.xcconfig
|
||||||
|
$(call gb_CustomTarget_get_target,ios/LibreOfficeLight): $(call gb_CustomTarget_get_target,ios/Lo_Xcconfig)
|
||||||
|
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),APP,2)
|
||||||
|
$(call IOSbuild,LibreOfficeLight, clean build)
|
||||||
|
|
||||||
|
# Clean
|
||||||
|
$(call gb_CustomTarget_get_clean_target,ios/LibreOfficeLight):
|
||||||
|
$(call gb_Output_announce,$(subst $(WORKDIR)/Clean/,,$@),$(false),APP,2)
|
||||||
|
$(call IOSbuild,LibreOfficeLight, clean)
|
||||||
|
|
||||||
|
# vim: set noet sw=4 ts=4:
|
@ -14,6 +14,7 @@ $(eval $(call gb_Module_add_targets,ios,\
|
|||||||
CustomTarget_Lo_Xcconfig \
|
CustomTarget_Lo_Xcconfig \
|
||||||
CustomTarget_TiledLibreOffice_app \
|
CustomTarget_TiledLibreOffice_app \
|
||||||
CustomTarget_Prototype_app \
|
CustomTarget_Prototype_app \
|
||||||
|
CustomTarget_LibreOfficeLight_app \
|
||||||
))
|
))
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@ -21,6 +21,17 @@
|
|||||||
3992D85E1E5B764A00BEA987 /* ViewFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3992D85C1E5B764A00BEA987 /* ViewFileManager.swift */; };
|
3992D85E1E5B764A00BEA987 /* ViewFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3992D85C1E5B764A00BEA987 /* ViewFileManager.swift */; };
|
||||||
399648471E5B87DC00E73E83 /* ViewProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399648461E5B87DC00E73E83 /* ViewProperties.swift */; };
|
399648471E5B87DC00E73E83 /* ViewProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399648461E5B87DC00E73E83 /* ViewProperties.swift */; };
|
||||||
399648491E5C4E5500E73E83 /* LO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399648481E5C4E5500E73E83 /* LO.swift */; };
|
399648491E5C4E5500E73E83 /* LO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399648481E5C4E5500E73E83 /* LO.swift */; };
|
||||||
|
39A83A8F1E5F471D00D0C683 /* lokit.c in Sources */ = {isa = PBXBuildFile; fileRef = 39A83A8E1E5F471D00D0C683 /* lokit.c */; };
|
||||||
|
39B084E31E5F0A9600682A59 /* lo.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 39B084E21E5F0A9600682A59 /* lo.xcconfig */; };
|
||||||
|
39B08B9D1E5F0BB600682A59 /* fundamentalrc in Resources */ = {isa = PBXBuildFile; fileRef = 39B084E51E5F0BB400682A59 /* fundamentalrc */; };
|
||||||
|
39B08B9E1E5F0BB600682A59 /* offapi.rdb in Resources */ = {isa = PBXBuildFile; fileRef = 39B084E61E5F0BB400682A59 /* offapi.rdb */; };
|
||||||
|
39B08B9F1E5F0BB600682A59 /* oovbaapi.rdb in Resources */ = {isa = PBXBuildFile; fileRef = 39B084E71E5F0BB400682A59 /* oovbaapi.rdb */; };
|
||||||
|
39B08BD71E5F0BB600682A59 /* rc in Resources */ = {isa = PBXBuildFile; fileRef = 39B085211E5F0BB400682A59 /* rc */; };
|
||||||
|
39B08BD91E5F0BB600682A59 /* services.rdb in Resources */ = {isa = PBXBuildFile; fileRef = 39B085241E5F0BB400682A59 /* services.rdb */; };
|
||||||
|
39B091CD1E5F0BB800682A59 /* udkapi.rdb in Resources */ = {isa = PBXBuildFile; fileRef = 39B08B9B1E5F0BB600682A59 /* udkapi.rdb */; };
|
||||||
|
39B091CE1E5F0BB800682A59 /* unorc in Resources */ = {isa = PBXBuildFile; fileRef = 39B08B9C1E5F0BB600682A59 /* unorc */; };
|
||||||
|
39B091D01E5F102E00682A59 /* test1.odt in Resources */ = {isa = PBXBuildFile; fileRef = 39B091CF1E5F102E00682A59 /* test1.odt */; };
|
||||||
|
39B091D21E5F109A00682A59 /* icudt58l.dat in Resources */ = {isa = PBXBuildFile; fileRef = 39B091D11E5F109A00682A59 /* icudt58l.dat */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@ -61,6 +72,19 @@
|
|||||||
3992D85C1E5B764A00BEA987 /* ViewFileManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewFileManager.swift; sourceTree = "<group>"; };
|
3992D85C1E5B764A00BEA987 /* ViewFileManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewFileManager.swift; sourceTree = "<group>"; };
|
||||||
399648461E5B87DC00E73E83 /* ViewProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewProperties.swift; sourceTree = "<group>"; };
|
399648461E5B87DC00E73E83 /* ViewProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewProperties.swift; sourceTree = "<group>"; };
|
||||||
399648481E5C4E5500E73E83 /* LO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LO.swift; sourceTree = "<group>"; };
|
399648481E5C4E5500E73E83 /* LO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LO.swift; sourceTree = "<group>"; };
|
||||||
|
39A83A8D1E5F471C00D0C683 /* lokit-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; path = "lokit-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
|
39A83A8E1E5F471D00D0C683 /* lokit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lokit.c; path = LibreOfficeLight/lokit.c; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B084E21E5F0A9600682A59 /* lo.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = lo.xcconfig; path = "../../../../ios-work/workdir/ios/generated/lo.xcconfig"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B084E51E5F0BB400682A59 /* fundamentalrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = fundamentalrc; path = "../../../../ios-work/workdir/ios/resources/fundamentalrc"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B084E61E5F0BB400682A59 /* offapi.rdb */ = {isa = PBXFileReference; lastKnownFileType = file; name = offapi.rdb; path = "../../../../ios-work/workdir/ios/resources/offapi.rdb"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B084E71E5F0BB400682A59 /* oovbaapi.rdb */ = {isa = PBXFileReference; lastKnownFileType = file; name = oovbaapi.rdb; path = "../../../../ios-work/workdir/ios/resources/oovbaapi.rdb"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B085211E5F0BB400682A59 /* rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rc; path = "../../../../ios-work/workdir/ios/resources/rc"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B085241E5F0BB400682A59 /* services.rdb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = services.rdb; path = "../../../../ios-work/workdir/ios/resources/services.rdb"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B08B9B1E5F0BB600682A59 /* udkapi.rdb */ = {isa = PBXFileReference; lastKnownFileType = file; name = udkapi.rdb; path = "../../../../ios-work/workdir/ios/resources/udkapi.rdb"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B08B9C1E5F0BB600682A59 /* unorc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = unorc; path = "../../../../ios-work/workdir/ios/resources/unorc"; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B091CF1E5F102E00682A59 /* test1.odt */ = {isa = PBXFileReference; lastKnownFileType = file; name = test1.odt; path = ../../../odk/examples/java/DocumentHandling/test/test1.odt; sourceTree = SOURCE_ROOT; };
|
||||||
|
39B091D11E5F109A00682A59 /* icudt58l.dat */ = {isa = PBXFileReference; lastKnownFileType = file; name = icudt58l.dat; path = "../../../../ios-work/workdir/UnpackedTarball/icu/source/data/in/icudt58l.dat"; sourceTree = "<group>"; };
|
||||||
|
39B092501E5F3DEA00682A59 /* LibreOfficeLight-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "LibreOfficeLight-Prefix.pch"; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -91,6 +115,8 @@
|
|||||||
3911D89F1E5993600050D6BC /* Support files */ = {
|
3911D89F1E5993600050D6BC /* Support files */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
39B092501E5F3DEA00682A59 /* LibreOfficeLight-Prefix.pch */,
|
||||||
|
39B084E21E5F0A9600682A59 /* lo.xcconfig */,
|
||||||
397E09071E597BD8001374E0 /* Assets.xcassets */,
|
397E09071E597BD8001374E0 /* Assets.xcassets */,
|
||||||
397E09041E597BD8001374E0 /* LibreOfficeLight.xcdatamodeld */,
|
397E09041E597BD8001374E0 /* LibreOfficeLight.xcdatamodeld */,
|
||||||
397E090C1E597BD8001374E0 /* Info.plist */,
|
397E090C1E597BD8001374E0 /* Info.plist */,
|
||||||
@ -102,6 +128,8 @@
|
|||||||
397E08F11E597BD8001374E0 = {
|
397E08F11E597BD8001374E0 = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
39B084E41E5F0B5200682A59 /* Resources */,
|
||||||
|
3911D89F1E5993600050D6BC /* Support files */,
|
||||||
397E08FC1E597BD8001374E0 /* LibreOfficeLight */,
|
397E08FC1E597BD8001374E0 /* LibreOfficeLight */,
|
||||||
397E09141E597BD8001374E0 /* LibreOfficeLightTests */,
|
397E09141E597BD8001374E0 /* LibreOfficeLightTests */,
|
||||||
397E091F1E597BD8001374E0 /* LibreOfficeLightUITests */,
|
397E091F1E597BD8001374E0 /* LibreOfficeLightUITests */,
|
||||||
@ -122,6 +150,7 @@
|
|||||||
397E08FC1E597BD8001374E0 /* LibreOfficeLight */ = {
|
397E08FC1E597BD8001374E0 /* LibreOfficeLight */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
39A83A8E1E5F471D00D0C683 /* lokit.c */,
|
||||||
397E08FD1E597BD8001374E0 /* AppDelegate.swift */,
|
397E08FD1E597BD8001374E0 /* AppDelegate.swift */,
|
||||||
3992D8571E5B761700BEA987 /* ViewController.swift */,
|
3992D8571E5B761700BEA987 /* ViewController.swift */,
|
||||||
3992D85B1E5B764A00BEA987 /* SideMenu.swift */,
|
3992D85B1E5B764A00BEA987 /* SideMenu.swift */,
|
||||||
@ -132,7 +161,7 @@
|
|||||||
399648481E5C4E5500E73E83 /* LO.swift */,
|
399648481E5C4E5500E73E83 /* LO.swift */,
|
||||||
397E09011E597BD8001374E0 /* Main.storyboard */,
|
397E09011E597BD8001374E0 /* Main.storyboard */,
|
||||||
397868D81E59A3EA007F9248 /* LaunchScreen.xib */,
|
397868D81E59A3EA007F9248 /* LaunchScreen.xib */,
|
||||||
3911D89F1E5993600050D6BC /* Support files */,
|
39A83A8D1E5F471C00D0C683 /* lokit-Bridging-Header.h */,
|
||||||
);
|
);
|
||||||
path = LibreOfficeLight;
|
path = LibreOfficeLight;
|
||||||
sourceTree = SOURCE_ROOT;
|
sourceTree = SOURCE_ROOT;
|
||||||
@ -155,6 +184,22 @@
|
|||||||
path = LibreOfficeLightUITests;
|
path = LibreOfficeLightUITests;
|
||||||
sourceTree = SOURCE_ROOT;
|
sourceTree = SOURCE_ROOT;
|
||||||
};
|
};
|
||||||
|
39B084E41E5F0B5200682A59 /* Resources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
39B084E51E5F0BB400682A59 /* fundamentalrc */,
|
||||||
|
39B084E61E5F0BB400682A59 /* offapi.rdb */,
|
||||||
|
39B084E71E5F0BB400682A59 /* oovbaapi.rdb */,
|
||||||
|
39B085211E5F0BB400682A59 /* rc */,
|
||||||
|
39B085241E5F0BB400682A59 /* services.rdb */,
|
||||||
|
39B08B9B1E5F0BB600682A59 /* udkapi.rdb */,
|
||||||
|
39B08B9C1E5F0BB600682A59 /* unorc */,
|
||||||
|
39B091CF1E5F102E00682A59 /* test1.odt */,
|
||||||
|
39B091D11E5F109A00682A59 /* icudt58l.dat */,
|
||||||
|
);
|
||||||
|
name = Resources;
|
||||||
|
sourceTree = SOURCE_ROOT;
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@ -223,6 +268,7 @@
|
|||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
397E08F91E597BD8001374E0 = {
|
397E08F91E597BD8001374E0 = {
|
||||||
CreatedOnToolsVersion = 8.2;
|
CreatedOnToolsVersion = 8.2;
|
||||||
|
LastSwiftMigration = 0820;
|
||||||
ProvisioningStyle = Automatic;
|
ProvisioningStyle = Automatic;
|
||||||
};
|
};
|
||||||
397E09101E597BD8001374E0 = {
|
397E09101E597BD8001374E0 = {
|
||||||
@ -261,8 +307,18 @@
|
|||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
39B091D21E5F109A00682A59 /* icudt58l.dat in Resources */,
|
||||||
397E09081E597BD8001374E0 /* Assets.xcassets in Resources */,
|
397E09081E597BD8001374E0 /* Assets.xcassets in Resources */,
|
||||||
|
39B08BD71E5F0BB600682A59 /* rc in Resources */,
|
||||||
|
39B08B9E1E5F0BB600682A59 /* offapi.rdb in Resources */,
|
||||||
|
39B084E31E5F0A9600682A59 /* lo.xcconfig in Resources */,
|
||||||
397868D61E59A3EA007F9248 /* LaunchScreen.xib in Resources */,
|
397868D61E59A3EA007F9248 /* LaunchScreen.xib in Resources */,
|
||||||
|
39B08B9F1E5F0BB600682A59 /* oovbaapi.rdb in Resources */,
|
||||||
|
39B08B9D1E5F0BB600682A59 /* fundamentalrc in Resources */,
|
||||||
|
39B091CD1E5F0BB800682A59 /* udkapi.rdb in Resources */,
|
||||||
|
39B08BD91E5F0BB600682A59 /* services.rdb in Resources */,
|
||||||
|
39B091D01E5F102E00682A59 /* test1.odt in Resources */,
|
||||||
|
39B091CE1E5F0BB800682A59 /* unorc in Resources */,
|
||||||
397E09031E597BD8001374E0 /* Main.storyboard in Resources */,
|
397E09031E597BD8001374E0 /* Main.storyboard in Resources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -295,6 +351,7 @@
|
|||||||
3992D85E1E5B764A00BEA987 /* ViewFileManager.swift in Sources */,
|
3992D85E1E5B764A00BEA987 /* ViewFileManager.swift in Sources */,
|
||||||
3992D85A1E5B762A00BEA987 /* ViewDocument.swift in Sources */,
|
3992D85A1E5B762A00BEA987 /* ViewDocument.swift in Sources */,
|
||||||
397E08FE1E597BD8001374E0 /* AppDelegate.swift in Sources */,
|
397E08FE1E597BD8001374E0 /* AppDelegate.swift in Sources */,
|
||||||
|
39A83A8F1E5F471D00D0C683 /* lokit.c in Sources */,
|
||||||
399648491E5C4E5500E73E83 /* LO.swift in Sources */,
|
399648491E5C4E5500E73E83 /* LO.swift in Sources */,
|
||||||
3992D8581E5B761700BEA987 /* ViewController.swift in Sources */,
|
3992D8581E5B761700BEA987 /* ViewController.swift in Sources */,
|
||||||
);
|
);
|
||||||
@ -354,6 +411,7 @@
|
|||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
397E09231E597BD8001374E0 /* Debug */ = {
|
397E09231E597BD8001374E0 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
@ -392,6 +450,26 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||||
|
"$(LO_BUILDDIR)/config_host",
|
||||||
|
"$(LO_SRCDIR)/include",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/udkapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/offapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnpackedTarball/icu/source/common",
|
||||||
|
"$(LO_WORKDIR)/ios/generated",
|
||||||
|
);
|
||||||
|
"HEADER_SEARCH_PATHS[arch=*]" = (
|
||||||
|
"$(inherited)",
|
||||||
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||||
|
"$(LO_BUILDDIR)/config_host",
|
||||||
|
"$(LO_SRCDIR)/include",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/udkapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/offapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnpackedTarball/icu/source/common",
|
||||||
|
"$(LO_WORKDIR)/ios/generated",
|
||||||
|
);
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
|
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
@ -404,6 +482,7 @@
|
|||||||
};
|
};
|
||||||
397E09241E597BD8001374E0 /* Release */ = {
|
397E09241E597BD8001374E0 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
@ -436,8 +515,29 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||||
|
"$(LO_BUILDDIR)/config_host",
|
||||||
|
"$(LO_SRCDIR)/include",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/udkapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/offapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnpackedTarball/icu/source/common",
|
||||||
|
"$(LO_WORKDIR)/ios/generated",
|
||||||
|
);
|
||||||
|
"HEADER_SEARCH_PATHS[arch=*]" = (
|
||||||
|
"$(inherited)",
|
||||||
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||||
|
"$(LO_BUILDDIR)/config_host",
|
||||||
|
"$(LO_SRCDIR)/include",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/udkapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnoApiHeadersTarget/offapi/comprehensive",
|
||||||
|
"$(LO_WORKDIR)/UnpackedTarball/icu/source/common",
|
||||||
|
"$(LO_WORKDIR)/ios/generated",
|
||||||
|
);
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
|
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
@ -447,30 +547,51 @@
|
|||||||
};
|
};
|
||||||
397E09261E597BD8001374E0 /* Debug */ = {
|
397E09261E597BD8001374E0 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = NO;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = NO;
|
||||||
|
ENABLE_TESTABILITY = NO;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "LibreOfficeLight/LibreOfficeLight-Prefix.pch";
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
INFOPLIST_FILE = LibreOfficeLight/Info.plist;
|
INFOPLIST_FILE = LibreOfficeLight/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = jani.libreofficeLight.LibreOfficeLight;
|
PRODUCT_BUNDLE_IDENTIFIER = LibreOfficeLight;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "LibreOfficeLight/lokit-Bridging-Header.h";
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 3.0;
|
SWIFT_VERSION = 3.0;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
397E09271E597BD8001374E0 /* Release */ = {
|
397E09271E597BD8001374E0 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = NO;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = NO;
|
||||||
|
COPY_PHASE_STRIP = YES;
|
||||||
|
ENABLE_TESTABILITY = NO;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "LibreOfficeLight/LibreOfficeLight-Prefix.pch";
|
||||||
INFOPLIST_FILE = LibreOfficeLight/Info.plist;
|
INFOPLIST_FILE = LibreOfficeLight/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = jani.libreofficeLight.LibreOfficeLight;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = LibreOfficeLight;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "LibreOfficeLight/lokit-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 3.0;
|
SWIFT_VERSION = 3.0;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
397E09291E597BD8001374E0 /* Debug */ = {
|
397E09291E597BD8001374E0 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
@ -485,6 +606,7 @@
|
|||||||
};
|
};
|
||||||
397E092A1E597BD8001374E0 /* Release */ = {
|
397E092A1E597BD8001374E0 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
@ -499,6 +621,7 @@
|
|||||||
};
|
};
|
||||||
397E092C1E597BD8001374E0 /* Debug */ = {
|
397E092C1E597BD8001374E0 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
INFOPLIST_FILE = LibreOfficeLightUITests/Info.plist;
|
INFOPLIST_FILE = LibreOfficeLightUITests/Info.plist;
|
||||||
@ -512,6 +635,7 @@
|
|||||||
};
|
};
|
||||||
397E092D1E597BD8001374E0 /* Release */ = {
|
397E092D1E597BD8001374E0 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 39B084E21E5F0A9600682A59 /* lo.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
INFOPLIST_FILE = LibreOfficeLightUITests/Info.plist;
|
INFOPLIST_FILE = LibreOfficeLightUITests/Info.plist;
|
||||||
|
@ -16,7 +16,7 @@ class LOkit
|
|||||||
{
|
{
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
|
LOkit_Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
//
|
||||||
|
// 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/.
|
||||||
|
|
||||||
|
#import <Availability.h>
|
||||||
|
|
||||||
|
#ifndef __IPHONE_5_0
|
||||||
|
#warning "This project uses features only available in iOS SDK 5.0 and later."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
#include <premac.h>
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#include <postmac.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// vim:set shiftwidth=4 softtabstop=4 expandtab:
|
@ -0,0 +1,11 @@
|
|||||||
|
//
|
||||||
|
// 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/.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
// Bridge functions to LibreOfficeKit
|
||||||
|
int LOkit_Init();
|
491
ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit.c
Executable file
491
ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit.c
Executable file
@ -0,0 +1,491 @@
|
|||||||
|
//
|
||||||
|
// 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/.
|
||||||
|
//
|
||||||
|
#include <stdio.h>
|
||||||
|
#define LOK_USE_UNSTABLE_API
|
||||||
|
#include <LibreOfficeKit/LibreOfficeKitInit.h>
|
||||||
|
|
||||||
|
// pointers to our instance
|
||||||
|
static LibreOfficeKit* kit;
|
||||||
|
static LibreOfficeKitDocument* document;
|
||||||
|
|
||||||
|
|
||||||
|
// Bridge functions to LibreOfficeKit
|
||||||
|
int LOkit_Init()
|
||||||
|
{
|
||||||
|
// Initialize LibreOfficeKit
|
||||||
|
kit = lok_init(NULL);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int LOkit_open(char *file)
|
||||||
|
{
|
||||||
|
document = kit->pClass->documentLoad(kit, file);
|
||||||
|
document->pClass->initializeForRendering(document, "");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// createpath from tiled
|
||||||
|
static NSString *createPaths(NSString *base, NSString *appRootEscaped, NSArray *fileNames)
|
||||||
|
{
|
||||||
|
NSString *result;
|
||||||
|
NSString *prefix = @"file://";
|
||||||
|
BOOL first = YES;
|
||||||
|
|
||||||
|
result = base;
|
||||||
|
for (NSString *fileName in fileNames) {
|
||||||
|
result = [result stringByAppendingString: prefix];
|
||||||
|
result = [result stringByAppendingString: [appRootEscaped stringByAppendingPathComponent: fileName]];
|
||||||
|
|
||||||
|
if (first) {
|
||||||
|
prefix = [@" " stringByAppendingString:prefix];
|
||||||
|
first = NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Force reference to libreofficekit_hook
|
||||||
|
extern "C" void *libreofficekit_hook(const char *);
|
||||||
|
static __attribute__((used)) void *(*foop)(const char *) = libreofficekit_hook;
|
||||||
|
|
||||||
|
extern "C" void lo_initialize(NSString *documentPath)
|
||||||
|
{
|
||||||
|
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
|
||||||
|
NSString *app_root_escaped = [bundlePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
||||||
|
NSString *uno_types = createPaths(@"-env:UNO_TYPES=", app_root_escaped, @[@"offapi.rdb", @"oovbaapi.rdb", @"types.rdb"]);
|
||||||
|
NSString *uno_services = createPaths(@"-env:UNO_SERVICES=", app_root_escaped, @[@"ure/services.rdb", @"services.rdb"]);
|
||||||
|
|
||||||
|
int fd = open([[bundlePath stringByAppendingPathComponent:@U_ICUDATA_NAME".dat"] UTF8String], O_RDONLY);
|
||||||
|
if (fd != -1) {
|
||||||
|
struct stat st;
|
||||||
|
if (fstat(fd, &st) != -1
|
||||||
|
&& st.st_size < (size_t)-1) {
|
||||||
|
void *icudata = mmap(0, (size_t) st.st_size, PROT_READ, MAP_FILE|MAP_PRIVATE, fd, 0);
|
||||||
|
if (icudata == MAP_FAILED) {
|
||||||
|
#if OSL_DEBUG_LEVEL > 0
|
||||||
|
NSLog(@"mmap failed:%s", strerror(errno));
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
UErrorCode icuStatus = U_ZERO_ERROR;
|
||||||
|
udata_setCommonData(icudata, &icuStatus);
|
||||||
|
#if OSL_DEBUG_LEVEL > 0
|
||||||
|
if (U_FAILURE(icuStatus))
|
||||||
|
NSLog(@"udata_setCommonData failed");
|
||||||
|
else {
|
||||||
|
// Test that ICU works...
|
||||||
|
UConverter *cnv = ucnv_open("iso-8859-3", &icuStatus);
|
||||||
|
NSLog(@"ucnv_open(iso-8859-3)-> %p, err = %s, name=%s",
|
||||||
|
(void *)cnv, u_errorName(icuStatus), (!cnv)?"?":ucnv_getName(cnv,&icuStatus));
|
||||||
|
if (U_SUCCESS(icuStatus))
|
||||||
|
ucnv_close(cnv);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *argv[] = {
|
||||||
|
[[[NSBundle mainBundle] executablePath] UTF8String],
|
||||||
|
"-env:URE_INTERNAL_LIB_DIR=file:///",
|
||||||
|
[uno_types UTF8String],
|
||||||
|
[uno_services UTF8String],
|
||||||
|
[[@"file://" stringByAppendingString: [documentPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] UTF8String]
|
||||||
|
};
|
||||||
|
|
||||||
|
const int argc = sizeof(argv)/sizeof(*argv);
|
||||||
|
|
||||||
|
osl_setCommandArgs(argc, (char **) argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// LOK_main (online)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// CLIENT COMMAND INTERFACE
|
||||||
|
static bool client_canceltiles(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: canceltiles
|
||||||
|
// arguments: NONE
|
||||||
|
// description:
|
||||||
|
// All outstanding tile messages from the client to the server are
|
||||||
|
// dropped and will not be handled, except tile messages with an id
|
||||||
|
// parameter. There is no guarantee of exactly which tile: messages
|
||||||
|
// might still be sent back to the client.
|
||||||
|
//
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_clientvisiblearea(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: clientvisiblearea
|
||||||
|
// arguments: x=<x>
|
||||||
|
// y=<y>
|
||||||
|
// width=<width>
|
||||||
|
// height=<height>
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_closedocument(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: closedocument
|
||||||
|
// arguments: None
|
||||||
|
// description:
|
||||||
|
// This gives document owners the ability to terminate all sessions
|
||||||
|
// currently having that document opened. This functionality is enabled
|
||||||
|
// only in case WOPI. host mentions 'EnableOwnerTermination' flag in
|
||||||
|
// its CheckFileInfo response
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_commandvalues(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: commandvalues
|
||||||
|
// arguments: None
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_downloadas(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: downloadas
|
||||||
|
// arguments: name=<fileName>
|
||||||
|
// id=<id>
|
||||||
|
// format=<document format>
|
||||||
|
// options=<SkipImages, etc>
|
||||||
|
// description:
|
||||||
|
// Exports the current document to the desired format and returns a
|
||||||
|
// download URL. The id identifies the request on the client. id can
|
||||||
|
// take following values:
|
||||||
|
// * 'print': When request for download is basically for print purposes
|
||||||
|
// * 'slideshow': When request for download is for showing slideshow
|
||||||
|
// * 'export': Just a simple download
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_getchildid(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: getchildid
|
||||||
|
// arguments: None
|
||||||
|
// description:
|
||||||
|
// Requests the child id so that it knows where the files needs to be sent
|
||||||
|
// when it is inserted in the document
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_gettextselection(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: gettextselection
|
||||||
|
// arguments: None
|
||||||
|
// description:
|
||||||
|
// Request selection's content
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_insertfile(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: insertfile
|
||||||
|
// arguments: name=<name>
|
||||||
|
// type=<type>
|
||||||
|
// description:
|
||||||
|
// Inserts the file with the name <name> into the document,
|
||||||
|
// we currently support type = 'graphic'
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_key(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: key
|
||||||
|
// arguments: type=<type>
|
||||||
|
// char=<charcode>
|
||||||
|
// key=<keycode>
|
||||||
|
// description:
|
||||||
|
// <type> is 'input' or 'up', <charcode> and <keycode> are numbers.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_load(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: load
|
||||||
|
// arguments: [part=<partNumber>]
|
||||||
|
// url=<url>
|
||||||
|
// [timestamp=<time>]
|
||||||
|
//. [options=<options>]
|
||||||
|
// description:
|
||||||
|
// part is an optional parameter. <partNumber> is a number.
|
||||||
|
// timestamp is an optional parameter. <time> is provided in
|
||||||
|
// microseconds since the Unix epoch - midnight, January 1, 1970.
|
||||||
|
// options are the whole rest of the line, not URL-encoded,
|
||||||
|
// and must be valid JSON.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_loolclient(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: loolclient
|
||||||
|
// arguments: <major.minor[-patch]>
|
||||||
|
// description:
|
||||||
|
// Upon connection, a client must announce the version number it supports.
|
||||||
|
// Major: an integer that must always match between client and server,
|
||||||
|
// otherwise there are no guarantees of any sensible compatibility.
|
||||||
|
// This is bumped when API changes.
|
||||||
|
// Minor: an integer is more flexible and is at the discretion of either party.
|
||||||
|
// Security fixes that do not alter the API would bump the minor version number.
|
||||||
|
// Patch: an optional string that is informational.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_mouse(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: mouse
|
||||||
|
// arguments: type=<type>
|
||||||
|
// x=<x>
|
||||||
|
// y=<y>
|
||||||
|
// count=<count>
|
||||||
|
// description:
|
||||||
|
// <type> is 'buttondown', 'buttonup' or 'move', others are numbers.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_paste(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: paste
|
||||||
|
// arguments: mimetype=<mimeType>
|
||||||
|
// <binaryPasteData>
|
||||||
|
// description:
|
||||||
|
// Paste content at the current cursor position
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_ping(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: ping
|
||||||
|
// argument: None
|
||||||
|
// description:
|
||||||
|
// requests a 'pong' server message.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_renderfont(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: renderfont
|
||||||
|
// arguments: font=<font>
|
||||||
|
// char=<characters>
|
||||||
|
// description:
|
||||||
|
// requests the rendering of the given font.
|
||||||
|
// The font parameter is URL encoded
|
||||||
|
// The char parameter is URL encoded
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_requestloksession(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: requestloksession
|
||||||
|
// arguments: None
|
||||||
|
// description:
|
||||||
|
// requests the initialization of a LOK process in an attempt
|
||||||
|
// to predict the user's interaction with the document
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_resetselection(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: resetselection
|
||||||
|
// arguments: None
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_saveas(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: saveas
|
||||||
|
// arguments: url=<url>
|
||||||
|
// format=<format>
|
||||||
|
// options=<options>
|
||||||
|
// description:
|
||||||
|
// <url> is a URL, encoded. <format> is also URL-encoded,
|
||||||
|
// i.e. spaces as %20 and it can be empty
|
||||||
|
// options are the whole rest of the line, not URL-encoded, and can be empty
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_selectgraphic(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: selectgraphic
|
||||||
|
// arguments: type=<type>
|
||||||
|
// x=<x>
|
||||||
|
// y=<y>
|
||||||
|
// description:
|
||||||
|
// <type> is 'start' or 'end'. <x> and <y> are numbers.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_selecttext(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: selecttext
|
||||||
|
// arguments: type=<type>
|
||||||
|
// x=<x>
|
||||||
|
// y=<y>
|
||||||
|
// description:
|
||||||
|
// <type> is 'start', 'end' or 'reset', <x> and <y> are numbers.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_setclientpart(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: setclientpart
|
||||||
|
// arguments: part=<partNumber>
|
||||||
|
// description:
|
||||||
|
// Informs the server that the client changed to part <partNumber>.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_status(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: status
|
||||||
|
// arguments: None
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_styles(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: styles
|
||||||
|
// arguments: None
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_tile(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: tile
|
||||||
|
// arguments: part=<partNumber>
|
||||||
|
// width=<width>
|
||||||
|
// height=<height>
|
||||||
|
// tileposx=<xpos>
|
||||||
|
// tileposy=<ypos>
|
||||||
|
// tilewidth=<tileWidth>
|
||||||
|
// tileheight=<tileHeight>
|
||||||
|
// [timestamp=<time>]
|
||||||
|
// [id=<id>]
|
||||||
|
// [broadcast=<yesOrNo>]
|
||||||
|
// [oldhash=<hash>]
|
||||||
|
// description:
|
||||||
|
// Parameters are numbers except broadcast which is 'yes' or 'no'
|
||||||
|
// and hash which is a 64-bit hash. (There is no need for the client
|
||||||
|
// to parse it into a number, it can be treated as an opaque string.)
|
||||||
|
// Note: id must be echoed back in the response verbatim. It and the
|
||||||
|
// following parameter, broadcast, are used when rendering slide
|
||||||
|
// previews of presentation documents, and not for anything else. It
|
||||||
|
// is only useful to loleaflet and will break it if not returned in
|
||||||
|
// the response.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_tilecombine(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: tilecombine
|
||||||
|
// arguments: <parameters>
|
||||||
|
// description:
|
||||||
|
// Accepts same parameters as the 'tile' message except that
|
||||||
|
// parameters 'tileposx', 'tileposy' and 'oldhash' are
|
||||||
|
// comma-separated lists, and the number of elements in each
|
||||||
|
// must be same.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_uno(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: uno
|
||||||
|
// arguments: <command>
|
||||||
|
// description:
|
||||||
|
// <command> is a line of text.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_useractive(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: useractive
|
||||||
|
// arguments: None
|
||||||
|
// description:
|
||||||
|
// Sent when the user regains focus or clicks within the active
|
||||||
|
// area to disable the inactive state.
|
||||||
|
// Will send invalidation and update notifications to force refreshing the screen.
|
||||||
|
// See 'userinactive'.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool client_userinactive(char *input, int argc, char *args[])
|
||||||
|
{
|
||||||
|
// command: userinactive
|
||||||
|
// arguments: None
|
||||||
|
// description:
|
||||||
|
// Sent when the user has switched tabs or away from the Browser
|
||||||
|
// altogether. It should throttle updates until the user is active again.
|
||||||
|
// See 'useractive'.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {const char *command; bool (*funcCmd)(char *, int, char *[]);} CLIENTCOMMAND;
|
||||||
|
static CLIENTCOMMAND clientcommands[] = {{"canceltiles", client_canceltiles},
|
||||||
|
{"clientvisiblearea", client_clientvisiblearea},
|
||||||
|
{"closedocument", client_closedocument},
|
||||||
|
{"commandvalues", client_commandvalues},
|
||||||
|
{"downloadas", client_downloadas},
|
||||||
|
{"getchildid", client_getchildid},
|
||||||
|
{"gettextselection", client_gettextselection},
|
||||||
|
{"insertfile", client_insertfile},
|
||||||
|
{"key", client_key},
|
||||||
|
{"load", client_load},
|
||||||
|
{"loolclient", client_loolclient},
|
||||||
|
{"mouse", client_mouse},
|
||||||
|
{"paste", client_paste},
|
||||||
|
{"ping", client_ping},
|
||||||
|
{"renderfont", client_renderfont},
|
||||||
|
{"requestloksession", client_requestloksession},
|
||||||
|
{"resetselection", client_resetselection},
|
||||||
|
{"saveas", client_saveas},
|
||||||
|
{"selectgraphic", client_selectgraphic},
|
||||||
|
{"selecttext", client_selecttext},
|
||||||
|
{"setclientpart", client_setclientpart},
|
||||||
|
{"status", client_status},
|
||||||
|
{"styles", client_styles},
|
||||||
|
{"tile", client_tile},
|
||||||
|
{"tilecombine", client_tilecombine},
|
||||||
|
{"uno", client_uno},
|
||||||
|
{"useractive", client_useractive},
|
||||||
|
{"userinactive", client_userinactive},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool ClientCommand(char *input)
|
||||||
|
{
|
||||||
|
CLIENTCOMMAND *cmd = clientcommands;
|
||||||
|
|
||||||
|
// Split input into cmd + args
|
||||||
|
|
||||||
|
// Locate correct command
|
||||||
|
for (; cmd->command; ++cmd)
|
||||||
|
if (!strcmp(cmd->command,"mycommand"))
|
||||||
|
return cmd->funcCmd(input, 0, NULL);
|
||||||
|
|
||||||
|
// Call/Return from command
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user