xref: /core/scp2/inc/macros.inc (revision 45acf267)
1/*
2 * This file is part of the LibreOffice project.
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 *
8 * This file incorporates work covered by the following license notice:
9 *
10 *   Licensed to the Apache Software Foundation (ASF) under one or more
11 *   contributor license agreements. See the NOTICE file distributed
12 *   with this work for additional information regarding copyright
13 *   ownership. The ASF licenses this file to you under the Apache
14 *   License, Version 2.0 (the "License"); you may not use this file
15 *   except in compliance with the License. You may obtain a copy of
16 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
17 */
18
19#ifndef MACROS_INC
20#define MACROS_INC
21/* =====================================================
22 * global helper macros
23 * =====================================================*/
24
25#define DOSTRING( x )                           #x
26#define STRING( x )                             DOSTRING( x )
27#define DOCONCAT2( x, y )                       x##y
28#define CONCAT2( x, y)                          DOCONCAT2(x,y)
29#define DOCONCAT3( x, y, z )                    x##y##z
30#define CONCAT3( x, y, z )                      DOCONCAT3(x,y,z)
31#define DOCONCAT4( x, y, z, a )                 x##y##z##a
32#define CONCAT4( x, y, z, a )                   DOCONCAT4(x,y,z,a)
33#define DOCONCAT5( x, y, z, a, b )              x##y##z##a##b
34#define CONCAT5( x, y, z, a, b )                DOCONCAT5(x,y,z,a,b)
35#define DOCONCAT6( x, y, z, a, b, c )           x##y##z##a##b##c
36#define CONCAT6( x, y, z, a, b, c )             DOCONCAT6(x,y,z,a,b,c)
37#define DOCONCAT7( x, y, z, a, b, c, u)         x##y##z##a##b##c##u
38#define CONCAT7( x, y, z, a, b, c, u)           DOCONCAT7(x,y,z,a,b,c,u)
39#define DOCONCAT8( x, y, z, a, b, c, u, v)      x##y##z##a##b##c##u##v
40#define CONCAT8( x, y, z, a, b, c, u, v)        DOCONCAT8(x,y,z,a,b,c,u,v)
41#define DOCONCAT9( x, y, z, a, b, c, u, v, w)   x##y##z##a##b##c##u##v##w
42#define CONCAT9( x, y, z, a, b, c, u, v, w)     DOCONCAT9(x,y,z,a,b,c,u,v,w)
43
44#define MOD_NAME_DESC(id) \
45        ALL_LANG(Name,STR_NAME_##id); \
46        ALL_LANG(Description,STR_DESC_##id)
47
48#define REG_VALUE_LNG(id) \
49        ALL_LANG(Value,STR_REG_VAL_##id);
50
51#ifdef UNX
52    #ifdef MACOSX
53        #define UNXSUFFIX .dylib
54    #else
55        #define UNXSUFFIX .so
56    #endif
57#endif
58
59#ifdef UNX
60    #define PROFILENAME(name)                 STRING(CONCAT2(name,rc))
61#else
62    #define PROFILENAME(name)                 STRING(CONCAT2(name,.ini))
63#endif
64
65#ifdef MACOSX
66    #define GID_BRAND_DIR_ETC gid_Brand_Dir_Share
67    #define GID_DIR_PY gid_Brand_Dir_Share
68    #define GID_DIR_URE_LIB gid_Dir_Frameworks
69#else
70    #define GID_BRAND_DIR_ETC gid_Brand_Dir_Program
71    #define GID_DIR_PY gid_Brand_Dir_Program
72    #define GID_DIR_URE_LIB gid_Brand_Dir_Program
73#endif
74
75#define RESFILENAME(name,lang)                STRING(CONCAT3(name,lang,.res))
76#define READMETXTFILENAME(name,lang,ext)      STRING(CONCAT4(name,lang,.,ext))
77#define READMEFILENAME(name,lang)             STRING(CONCAT2(name,lang))
78#define EXTRAFILENAME(name,lang)              STRING(CONCAT3(name,lang,.zip))
79#define EXTRAFILELISTNAME(prefix,name,lang)   STRING(CONCAT4(prefix,name,lang,.filelist))
80#define CONFIGLANGFILENAME(name,lang,ext)     STRING(CONCAT4(name,lang,.,ext))
81
82#define SCP2_OOO_BIN_DIR gid_Brand_Dir_Program
83
84#ifdef MACOSX
85    #define SCP2_OOO_LIB_DIR gid_Dir_Frameworks
86#else
87    #define SCP2_OOO_LIB_DIR SCP2_OOO_BIN_DIR
88#endif
89
90#define BIN_FILE_BODY \
91        UnixRights   = 755
92
93#define LIB_FILE_BODY \
94        UnixRights   = 755
95
96#define TXT_FILE_BODY \
97        UnixRights   = 644
98
99#define USER_FILE_BODY \
100        UnixRights   = 644
101
102#define PACKED_TXT_FILE_BODY \
103        TXT_FILE_BODY; \
104        Styles = (PACKED)
105
106#ifdef WITH_HELPPACK_INTEGRATION
107#define FILELIST_TXT_FILE_BODY_HELPPACK \
108        TXT_FILE_BODY; \
109        Styles = (FILELIST,FORCEHELPPACK,LANGUAGEMODULE)
110#else
111#define FILELIST_TXT_FILE_BODY_HELPPACK \
112        TXT_FILE_BODY; \
113        Styles = (FILELIST,HELPPACK,LANGUAGEMODULE)
114#endif
115
116#define PACKAGE_FILELIST(id,name) \
117File id \
118    Dir = FILELIST_DIR; \
119    Name = name; \
120    Styles = (FILELIST, USE_INTERNAL_RIGHTS, PACKED); \
121End
122
123#define PACKAGE_FILELIST_COMPONENTCONDITION(id,name,cond) \
124File id \
125    Dir = FILELIST_DIR; \
126    Name = name; \
127    Styles = (FILELIST, USE_INTERNAL_RIGHTS, PACKED); \
128    ComponentCondition = cond; \
129End
130
131#ifdef WNT
132#define PACKAGE_FILELIST_FONT(id,name) \
133File id \
134    Dir = FILELIST_DIR; \
135    Name = name; \
136    Styles = (FILELIST, USE_INTERNAL_RIGHTS, PACKED, FONT); \
137End
138#else
139#define PACKAGE_FILELIST_FONT PACKAGE_FILELIST
140#endif // WNT
141
142#define SDK_PACKAGE_FILELIST(id,name) \
143File id \
144    Dir = FILELIST_SDK_DIR; \
145    Name = name; \
146    Styles = (FILELIST, USE_INTERNAL_RIGHTS, PACKED); \
147End
148
149#define PACKED_LIB_FILE_BODY \
150        LIB_FILE_BODY; \
151        Styles = (PACKED); \
152        Dir    = SCP2_OOO_LIB_DIR
153
154#define LIBO_LIB_FILE(id,name) \
155    File id \
156        Name = name; \
157        PACKED_LIB_FILE_BODY; \
158    End
159
160#define LIBO_LIB_FILE_BINARYTABLE(id,name) \
161    File id \
162        Name = name; \
163        PACKED_LIB_FILE_BODY; \
164        Styles = (PACKED, BINARYTABLE, BINARYTABLE_ONLY); \
165    End
166
167#define LIBO_LIB_FILE_COMPONENTCONDITION(id,name,cond) \
168    File id \
169        Name = name; \
170        PACKED_LIB_FILE_BODY; \
171        ComponentCondition = cond; \
172    End
173
174#define SHLXTHDL_LIB_FILE(id,name) \
175    File id \
176        Name = name; \
177        LIB_FILE_BODY; \
178        Styles = (PACKED); \
179        Dir    = gid_Dir_Shlxthdl; \
180    End
181
182#define SHLXTHDL_LIB_FILE_COMPONENTCONDITION(id,name,cond) \
183    File id \
184        Name = name; \
185        LIB_FILE_BODY; \
186        Styles = (PACKED); \
187        Dir    = gid_Dir_Shlxthdl; \
188        ComponentCondition = cond; \
189    End
190
191#ifdef MACOSX
192// links are created at configure time by odk/config/setsdkenv_unix.sh.in
193#define SDK_LIBRARY_LINK(id,name,target)
194#elif defined(WNT)
195#define SDK_LIBRARY_LINK(id,name,target) \
196    File id \
197        TXT_FILE_BODY; \
198        Styles = (PACKED); \
199        Dir = gid_Dir_Lib_Sdk; \
200        Name = name; \
201    End
202#else
203#define SDK_LIBRARY_LINK(id,name,target) \
204    Unixlink id \
205     BIN_FILE_BODY; \
206     Styles = (); \
207     Dir = gid_Dir_Lib_Sdk; \
208     Name = name; \
209     Target = target; \
210    End
211#endif
212
213#define LIBO_JAR_FILE(id,name) \
214    File id \
215        TXT_FILE_BODY; \
216        Name = name; \
217        Dir = gid_Dir_Classes; \
218        Styles = (PACKED); \
219    End
220
221#define URE_JAR_FILE(id,name) \
222    File id \
223        TXT_FILE_BODY; \
224        Name = name; \
225        Dir = gid_Dir_Classes; \
226        Styles = (PACKED); \
227    End
228
229#define CONDITIONAL_MODULE_ENTRY(name,modid) \
230    Module gid_Module_Root_Reg_##name \
231	ParentID = modid; \
232	Name = STRING(CONCAT2(gid_Module_Root_,name)); \
233	Description = STRING(CONCAT2(gid_Module_Root_,name)); \
234	Default = YES; \
235	Styles = (HIDDEN_ROOT); \
236End
237
238#define REGISTRY_ENTRY_OPEN_WITH(name,cond,doc_type,modid,key) \
239    RegistryItem gid_Regitem_OpenOffice_##cond##_OpenWith_##doc_type \
240        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
241        ModuleID = modid; \
242        Subkey = STRING(CONCAT3(.,key,\OpenWithProgIDs)); \
243        Name = STRING(CONCAT2(LibreOffice.,name)); \
244        Value = " "; \
245    End
246
247#define REGISTRY_ENTRY_OPEN_WITH_TMPL(name,cond,doc_type,modid,key) \
248    RegistryItem gid_Regitem_OpenOffice_##cond##_OpenWith_##doc_type \
249        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
250        ModuleID = modid; \
251        Subkey = STRING(CONCAT3(.,key,\OpenWithProgIDs)); \
252        Name = STRING(CONCAT2(LibreOffice.,name)); \
253        Value = " "; \
254    End
255
256#define CONDITIONAL_REGISTRY_ENTRY_EXT(name,cond,key) \
257    RegistryItem gid_Regitem__##name \
258        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
259        ModuleID = gid_Module_Root_Reg_##name; \
260        Subkey = STRING(CONCAT2(.,key)); \
261        Value = STRING(CONCAT2(LibreOffice.,name)); \
262        ComponentCondition = STRING(CONCAT3(REGISTER_,cond,=1)); \
263    End
264
265#define CONDITIONAL_REGISTRY_ENTRY_EXT_MEDIATYPE(name,cond,key,mediatype) \
266    RegistryItem gid_Regitem__MediaType_##name \
267        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
268        ModuleID = gid_Module_Root_Reg_##name; \
269        Subkey = STRING(CONCAT2(.,key)); \
270        Name = STRING(Content Type); \
271        Value = STRING(mediatype); \
272        ComponentCondition = STRING(CONCAT3(REGISTER_,cond,=1)); \
273    End
274
275#define CONDITIONAL_REGISTRY_ENTRY_MEDIATYPE_DEF_EXT(name,cond,key,mediatype) \
276    RegistryItem gid_Regitem__MediaType_DefExt_##name \
277        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
278        ModuleID = gid_Module_Root_Reg_##name; \
279        Subkey = STRING(CONCAT2(MIME\Database\Content Type\,mediatype)); \
280        Name = STRING(Extension); \
281        Value = STRING(CONCAT2(.,key)); \
282        ComponentCondition = STRING(CONCAT3(REGISTER_,cond,=1)); \
283    End
284
285#define REGISTRY_ENTRY_DOC(name,modid,disp_name) \
286    RegistryItem CONCAT2(gid_Regitem_Openoffice_,name) \
287        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
288        ModuleID = modid; \
289        Subkey = STRING(CONCAT2(LibreOffice.,name)); \
290        REG_VALUE_LNG(disp_name) \
291    End
292
293#define REGISTRY_ENTRY_APPUSERMODELID(name,modid,doc_type) \
294    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_AppUserModelID) \
295        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
296        ModuleID = modid; \
297        Subkey = STRING(CONCAT2(LibreOffice.,name)); \
298        Name = STRING(AppUserModelID); \
299        Value = STRING(CONCAT2(TheDocumentFoundation.LibreOffice.,doc_type)); \
300    End
301
302#define REGISTRY_ENTRY_ICON(name,modid,icon_id) \
303    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Defaulticon) \
304        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
305        ModuleID = modid; \
306        Subkey = STRING(CONCAT3(LibreOffice.,name,\DefaultIcon)); \
307        Value = "<progpath>\program\soffice.bin," STRING(icon_id); \
308    End
309
310#define REGISTRY_ENTRY_SHELL(name,default,modid) \
311    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell) \
312        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
313        ModuleID = modid; \
314        Subkey = STRING(CONCAT3(LibreOffice.,name,\shell)); \
315        Value = STRING(default); \
316    End
317
318#define REGISTRY_ENTRY_NEW_CMD_PPA(name,modid,progpath_program_app) \
319    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_New) \
320        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
321        ModuleID = modid; \
322        Subkey = STRING(CONCAT3(LibreOffice.,name,\shell\new)); \
323        REG_VALUE_LNG(NEW) \
324    End \
325    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_New_Command) \
326        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
327        ModuleID = modid; \
328        Subkey = STRING(CONCAT3(LibreOffice.,name,\shell\new\command)); \
329        Value = "\"" STRING(progpath_program_app) "\" -n \"%1\""; \
330    End
331
332#define REGISTRY_ENTRY_NEW_CMD(name,modid,app) \
333	REGISTRY_ENTRY_NEW_CMD_PPA(name,modid,<progpath>\program\app)
334
335#define REGISTRY_ENTRY_OPEN_CMD_PPA(name,modid,progpath_program_app) \
336    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_Open_Command) \
337        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
338        ModuleID = modid; \
339        Subkey = STRING(CONCAT3(LibreOffice.,name,\shell\open\command)); \
340        Value = "\"" STRING(progpath_program_app) "\" -o \"%1\""; \
341    End
342
343#define REGISTRY_ENTRY_OPEN_CMD(name,modid,app) \
344	REGISTRY_ENTRY_OPEN_CMD_PPA(name,modid,<progpath>\program\app)
345
346#define REGISTRY_ENTRY_PRINT_CMD_PPA(name,modid,progpath_program_app) \
347    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_Print_Command) \
348        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
349        ModuleID = modid; \
350        Subkey = STRING(CONCAT3(LibreOffice.,name,\shell\print\command)); \
351        Value = "\"" STRING(progpath_program_app) "\" -p \"%1\""; \
352    End
353
354#define REGISTRY_ENTRY_PRINT_CMD(name,modid,app) \
355	REGISTRY_ENTRY_PRINT_CMD_PPA(name,modid,<progpath>\program\app)
356
357#define REGISTRY_ENTRY_PRINTTO_CMD_PPA(name,modid,progpath_program_app) \
358    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_Printto_Command) \
359        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
360        ModuleID = modid; \
361        Subkey = STRING(CONCAT3(LibreOffice.,name,\shell\printto\command)); \
362        Value = "\"" STRING(progpath_program_app) "\" -pt \"%2\" \"%1\""; \
363    End
364
365#define REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
366	REGISTRY_ENTRY_PRINTTO_CMD_PPA(name,modid,<progpath>\program\app)
367
368#define REGISTRY_ENTRY_CAPABILITIES(name,modid,key,doc_type) \
369    RegistryItem CONCAT2(gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_,name) \
370        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
371        ModuleID = modid; \
372        Subkey = STRING(Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations); \
373        Name = STRING(CONCAT2(.,key)); \
374        Value = STRING(CONCAT2(LibreOffice.,name)); \
375        Styles = (); \
376    End
377
378#define REGISTRY_ENTRY_TEMPLATE_CAPABILITIES(name,modid,key,doc_type) \
379    RegistryItem CONCAT2(gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_,name) \
380        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
381        ModuleID = modid; \
382        Subkey = STRING(Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations); \
383        Name = STRING(CONCAT2(.,key)); \
384        Value = STRING(CONCAT2(LibreOffice.,name)); \
385        Styles = (); \
386    End
387
388#define REGISTRY_ENTRY_CAPABILITIES_URL(scheme,name,modid,handler) \
389    RegistryItem CONCAT2(gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_URLAssociations_,name) \
390        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
391        ModuleID = modid; \
392        Subkey = STRING(Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\URLAssociations); \
393        Name = scheme; \
394        Value = handler; \
395        Styles = (); \
396    End
397
398#define CONDITIONAL_REGISTER_DOC_OPEN_EXTENSION(name,modid,key,cond,disp_name,icon_id,app,default,doc_type) \
399    CONDITIONAL_MODULE_ENTRY(name,modid) \
400    REGISTRY_ENTRY_OPEN_WITH(name,cond,doc_type,modid,key) \
401    CONDITIONAL_REGISTRY_ENTRY_EXT(name,cond,key) \
402    REGISTRY_ENTRY_DOC(name,modid,disp_name) \
403    REGISTRY_ENTRY_APPUSERMODELID(name,modid,doc_type) \
404    REGISTRY_ENTRY_ICON(name,modid,icon_id) \
405    REGISTRY_ENTRY_SHELL(name,default,modid) \
406    REGISTRY_ENTRY_OPEN_CMD(name,modid,app) \
407    REGISTRY_ENTRY_CAPABILITIES(name,modid,key,doc_type) \
408
409#define CONDITIONAL_REGISTER_DOC_EXTENSION(name,modid,key,cond,disp_name,icon_id,app,default,doc_type) \
410    CONDITIONAL_REGISTER_DOC_OPEN_EXTENSION(name,modid,key,cond,disp_name,icon_id,app,default,doc_type) \
411    REGISTRY_ENTRY_NEW_CMD(name,modid,app) \
412    REGISTRY_ENTRY_PRINT_CMD(name,modid,app) \
413    REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
414
415#define CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION(name,modid,key,cond,disp_name,icon_id,app,default,doc_type) \
416    CONDITIONAL_MODULE_ENTRY(name,modid) \
417    REGISTRY_ENTRY_OPEN_WITH_TMPL(name,cond,doc_type,modid,key) \
418    CONDITIONAL_REGISTRY_ENTRY_EXT(name,cond,key) \
419    REGISTRY_ENTRY_DOC(name,modid,disp_name) \
420    REGISTRY_ENTRY_APPUSERMODELID(name,modid,doc_type) \
421    REGISTRY_ENTRY_ICON(name,modid,icon_id) \
422    REGISTRY_ENTRY_SHELL(name,default,modid) \
423    REGISTRY_ENTRY_NEW_CMD(name,modid,app) \
424    REGISTRY_ENTRY_OPEN_CMD(name,modid,app) \
425    REGISTRY_ENTRY_PRINT_CMD(name,modid,app) \
426    REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
427    REGISTRY_ENTRY_TEMPLATE_CAPABILITIES(name,modid,key,doc_type) \
428
429#ifdef _MSC_VER
430
431#ifdef BUILD_X64
432
433#define REGISTER_PROPERTY_HANDLER_FOR_EXTENSION(extension) \
434    RegistryItem CONCAT2(gid_Regitem_Software_Microsoft_Windows_CurrentVersion_PropertySystem_PropertyHandlers_,extension) \
435        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
436        ModuleID = gid_Module_Optional_Winexplorerext; \
437        Subkey = STRING(CONCAT2(SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers\.,extension)); \
438        Value = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
439    End \
440\
441    RegistryItem CONCAT3(gid_Regitem_Software_Microsoft_Windows_CurrentVersion_PropertySystem_PropertyHandlers_,extension,_x64) \
442        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
443        ModuleID = gid_Module_Optional_Winexplorerext_x64; \
444        ComponentCondition = "VersionNT64"; \
445        Subkey = STRING(CONCAT2(SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers\.,extension)); \
446        Value = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
447    End
448
449#else
450
451#define REGISTER_PROPERTY_HANDLER_FOR_EXTENSION(extension) \
452    RegistryItem CONCAT2(gid_Regitem_Software_Microsoft_Windows_CurrentVersion_PropertySystem_PropertyHandlers_,extension) \
453        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
454        ModuleID = gid_Module_Optional_Winexplorerext; \
455        Subkey = STRING(CONCAT2(SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers\.,extension)); \
456        Value = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
457    End
458
459#endif
460
461#else
462#define REGISTER_PROPERTY_HANDLER_FOR_EXTENSION(extension) // empty
463#endif
464
465
466#define SCP2_URE_DL_DIR GID_DIR_URE_LIB
467#if defined WNT
468#define SCP2_URE_DL_NORMAL(n) n ".dll"
469#define SCP2_URE_DL_VER(n, v) n v ".dll"
470#define SCP2_URE_DL_UNO_VER(n, v) n v ".dll"
471#define SCP2_URE_DL_UNO_COMID_VER(n, v) n v STRING(COMID) ".dll"
472#else
473#define SCP2_URE_DL_NORMAL(n) "lib" n STRING(UNXSUFFIX)
474#define SCP2_URE_DL_VER(n, v) "lib" n STRING(UNXSUFFIX) "." v
475#define SCP2_URE_DL_UNO_VER(n, v) "libuno_" n STRING(UNXSUFFIX) "." v
476#define SCP2_URE_DL_UNO_NORMAL(n) "libuno_" n STRING(UNXSUFFIX)
477#define SCP2_URE_DL_UNO_COMID_VER(n, v)	\
478    "libuno_" n STRING(COMID) STRING(UNXSUFFIX) "." v
479#define SCP2_URE_DL_UNO_COMID_NORMAL(n)	\
480    "libuno_" n STRING(COMID) STRING(UNXSUFFIX)
481#endif
482#if defined MACOSX
483#define SCP2_URE_JDL_NORMAL(n) "lib" n ".jnilib"
484#else
485#define SCP2_URE_JDL_NORMAL(n) SCP2_URE_DL_NORMAL(n)
486#endif
487
488#if defined MACOSX
489#define FILELIST_DIR PREDEFINED_PROGDIR
490#define FILELIST_SDK_DIR PREDEFINED_PROGDIR
491#else
492#define FILELIST_DIR gid_Dir_Brand_Root
493#if defined WNT
494#define FILELIST_SDK_DIR gid_Dir_Sdkoo_Root
495#else
496#define FILELIST_SDK_DIR PREDEFINED_PROGDIR
497#endif
498#endif
499
500#define UI_FILELIST(name, file) \
501    File CONCAT2(gid_File_Share_Config_Sofficecfg_uiconfig_, name) \
502        TXT_FILE_BODY; \
503        Styles = (FILELIST); \
504        Dir = FILELIST_DIR; \
505        Name = file; \
506    End
507
508#include <langmacros.inc>
509
510#define MO_FILELIST_ALL_LANG(name) \
511    File CONCAT3(gid_File_Res_, name, _Lang) \
512        TXT_FILE_BODY; \
513        Styles = (PACKED); \
514        Dir = gid_Dir_Resource; \
515        MO_ALL_LANG_EXCEPT_EN_US_AND_QTZ(name); \
516    End
517
518#define URE_PRIVATE_LIB(id,name) \
519    File id \
520        LIB_FILE_BODY; \
521        Dir = SCP2_URE_DL_DIR; \
522        Name = name; \
523        Styles = (PACKED); \
524    End
525
526#define URE_EXECUTABLE(id,name) \
527    File id \
528        BIN_FILE_BODY; \
529        Dir = gid_Brand_Dir_Program; \
530        Name = name; \
531        Styles = (PACKED); \
532    End
533
534#define LIBO_EXECUTABLE(id,name) \
535    File id \
536        BIN_FILE_BODY; \
537        Dir = gid_Brand_Dir_Program; \
538        Name = name; \
539        Styles = (PACKED); \
540    End
541
542#define LIBO_EXECUTABLE_COMPONENTCONDITION(id,name,cond) \
543    File id \
544        BIN_FILE_BODY; \
545        Dir = gid_Brand_Dir_Program; \
546        Name = name; \
547        Styles = (PACKED); \
548        ComponentCondition = cond; \
549    End
550
551#define SDK_EXECUTABLE(id,name) \
552    File id \
553        BIN_FILE_BODY; \
554        Dir = gid_Dir_Sdkoo_Bin; \
555        Name = name; \
556        Styles = (PACKED); \
557    End
558
559#define GALLERY_NAME(id) \
560
561#define GALLERY_FILELIST(id) \
562File gid_File_Extra_Gall##id \
563    Dir = FILELIST_DIR; \
564    TXT_FILE_BODY; \
565    Styles = (FILELIST, WORKSTATION); \
566    Name = STRING(CONCAT3(Gallery/,id,.filelist)); \
567End \
568File gid_File_Extra_GallFiles##id \
569    Dir = FILELIST_DIR; \
570    TXT_FILE_BODY; \
571    Styles = (FILELIST, WORKSTATION); \
572    Name = STRING(CONCAT3(Gallery/Files/,id,.filelist)); \
573End
574
575#define REGISTER_URI_HANDLER_IMPL(protocol,protid,modid,cond) \
576RegistryItem CONCAT2(gid_Regitem_,protid) \
577    ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
578    ModuleID = modid; \
579    Subkey = STRING(protocol); \
580    Value = "URL:" STRING(protocol) " Protocol"; \
581    cond \
582End \
583RegistryItem CONCAT3(gid_Regitem_,protid,_URL_Protocol) \
584    ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
585    ModuleID = modid; \
586    Subkey = STRING(protocol); \
587    Name = "URL Protocol"; \
588End \
589RegistryItem CONCAT3(gid_Regitem_,protid,_UseOriginalUrlEncoding) \
590    ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
591    ModuleID = modid; \
592    Subkey = STRING(protocol); \
593    Name = "UseOriginalUrlEncoding"; \
594    Value = "#1"; \
595End \
596RegistryItem CONCAT3(gid_Regitem_,protid,_DefaultIcon) \
597    ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
598    ModuleID = modid; \
599    Subkey = STRING(CONCAT2(protocol,\DefaultIcon)); \
600    Value = "<progpath>\program\soffice.bin,0"; \
601End \
602RegistryItem CONCAT3(gid_Regitem_,protid,_shell_open_command) \
603    ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
604    ModuleID = modid; \
605    Subkey = STRING(CONCAT2(protocol,\shell\open\command)); \
606    Value = "\"<progpath>\program\soffice.exe\" \"%1\""; \
607End
608
609#define REG_COND(cond) \
610    ComponentCondition = STRING(CONCAT2(cond,=1));
611
612#define REG_EMPTY_COND
613
614#define REGISTER_URI_HANDLER(protocol,protid,modid) \
615    REGISTER_URI_HANDLER_IMPL(protocol,protid,modid,REG_EMPTY_COND)
616
617#define CONDITIONAL_REGISTER_URI_HANDLER(protocol,protid,modid,cond) \
618    CONDITIONAL_MODULE_ENTRY(protid,modid) \
619    REGISTER_URI_HANDLER_IMPL(protocol,protid,gid_Module_Root_Reg_##protid,REG_COND(cond))
620
621#endif // MACROS_INC
622