xref: /trunk/main/scp2/inc/macros.inc (revision 7aab1a1c)
1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22#ifndef MACROS_INC
23#define MACROS_INC
24/* =====================================================
25 * global helper macros
26 * =====================================================*/
27
28#define DOSTRING( x )                           #x
29#define STRING( x )                             DOSTRING( x )
30#define DOCONCAT2( x, y )                       x##y
31#define CONCAT2( x, y)                          DOCONCAT2(x,y)
32#define DOCONCAT3( x, y, z )                    x##y##z
33#define CONCAT3( x, y, z )                      DOCONCAT3(x,y,z)
34#define DOCONCAT4( x, y, z, a )                 x##y##z##a
35#define CONCAT4( x, y, z, a )                   DOCONCAT4(x,y,z,a)
36#define DOCONCAT5( x, y, z, a, b )              x##y##z##a##b
37#define CONCAT5( x, y, z, a, b )                DOCONCAT5(x,y,z,a,b)
38#define DOCONCAT6( x, y, z, a, b, c )           x##y##z##a##b##c
39#define CONCAT6( x, y, z, a, b, c )             DOCONCAT6(x,y,z,a,b,c)
40#define DOCONCAT7( x, y, z, a, b, c, u)         x##y##z##a##b##c##u
41#define CONCAT7( x, y, z, a, b, c, u)           DOCONCAT7(x,y,z,a,b,c,u)
42#define DOCONCAT8( x, y, z, a, b, c, u, v)      x##y##z##a##b##c##u##v
43#define CONCAT8( x, y, z, a, b, c, u, v)        DOCONCAT8(x,y,z,a,b,c,u,v)
44#define DOCONCAT9( x, y, z, a, b, c, u, v, w)   x##y##z##a##b##c##u##v##w
45#define CONCAT9( x, y, z, a, b, c, u, v, w)     DOCONCAT9(x,y,z,a,b,c,u,v,w)
46
47#define MOD_NAME_DESC(id) \
48        ALL_LANG(Name,STR_NAME_##id); \
49        ALL_LANG(Description,STR_DESC_##id)
50
51#define MOD_NAME_DESC_ON_DESELECT(id) \
52        MOD_NAME_DESC(id); \
53        ALL_LANG(OnDeselect,STR_DESELECT_##id)
54
55#define REG_VALUE_LNG(id) \
56        ALL_LANG(Value,STR_REG_VAL_##id);
57
58#define FOLDERITEM_NAME_LNG(id) \
59        ALL_LANG(Name,STR_FI_NAME_##id);
60
61#define ALL_LANG_STR_KEY(ident) \
62        ALL_LANG(Key,ident)
63
64#define ALL_LANG_STR_KEY_LNG(ident) \
65        ALL_LANG(Key,STR_KEY_##ident)
66
67#define ALL_LANG_STR_VALUE_LNG(ident) \
68        ALL_LANG(Value,STR_VALUE_##ident)
69
70#define ALL_LANG_VALUE(vident) \
71        ALL_LANG(Value,vident)
72
73#define ALL_LANG_KEY(vident) \
74        ALL_LANG(Key,vident)
75
76
77#ifdef UNX
78    #ifdef MACOSX
79        #define UNXSUFFIX .dylib
80    #else
81        #define UNXSUFFIX .so
82    #endif
83#endif
84
85#ifdef UNX
86    #define LIBNAME(name)                     STRING(CONCAT4(lib,name,DLLPOSTFIX,UNXSUFFIX))
87    #define FILTER_LIBNAME(name)              LIBNAME(name)
88    #define EXENAME(name)                     STRING(name)
89    #define PROFILENAME(name)                 STRING(CONCAT2(name,rc))
90    #define SPECIAL_NAME(name)                STRING(CONCAT3(lib,name,UNXSUFFIX))
91    #ifdef MACOSX
92    	#define SPECIAL_NAME_VER(name,version)    STRING(CONCAT5(lib,name,.,version,UNXSUFFIX))
93    #else
94	#define SPECIAL_NAME_VER(name,version)    STRING(CONCAT5(lib,name,UNXSUFFIX,.,version))
95    #endif
96    #define SPECIAL_COMPONENT_LIB_NAME(name)  STRING(CONCAT2(name,UNXSUFFIX))
97#else
98    #define LIBNAME(name)                     STRING(CONCAT3(name,DLLPOSTFIX,.dll))
99    #define FILTER_LIBNAME(name)              LIBNAME(name)
100    #define EXENAME(name)                     STRING(CONCAT2(name,.exe))
101    #define PROFILENAME(name)                 STRING(CONCAT2(name,.ini))
102    #define SPECIAL_NAME(name)                STRING(CONCAT2(name,.dll))
103    #define SPECIAL_COMPONENT_LIB_NAME(name)  STRING(CONCAT2(name,.dll))
104#endif
105
106#define RESFILENAME(name,lang)                STRING(CONCAT3(name,lang,.res))
107#define SHORTRESFILENAME(name,lang)           STRING(CONCAT3(name,lang,.res))
108#define READMETXTFILENAME(name,lang,ext)      STRING(CONCAT4(name,lang,.,ext))
109#define READMEFILENAME(name,lang)             STRING(CONCAT2(name,lang))
110#define HELPFILENAME(name,endung)             STRING(CONCAT3(name,.,endung))
111#define EXTRAFILENAME(name,lang)              STRING(CONCAT3(name,lang,.zip))
112#define CONFIGLANGFILENAME(name,lang,ext)     STRING(CONCAT4(name,lang,.,ext))
113
114#if defined WNT
115#define SCP2_OOO_BIN_DIR gid_Brand_Dir_Program
116#else
117#define SCP2_OOO_BIN_DIR gid_Dir_Program
118#endif
119
120#define BIN_FILE_BODY \
121        UnixRights   = 555
122
123#define TXT_FILE_BODY \
124        UnixRights   = 444
125
126#define USER_FILE_BODY \
127        UnixRights   = 644
128
129#define PACKED_TXT_FILE_BODY \
130        TXT_FILE_BODY; \
131        Styles = (PACKED)
132
133#define PACKED_TXT_FILE_BODY_PATCH \
134        TXT_FILE_BODY; \
135        Styles = (PACKED,PATCH)
136
137#define ARCHIVE_TXT_FILE_BODY \
138        TXT_FILE_BODY; \
139        Styles = (ARCHIVE)
140
141#define ARCHIVE_TXT_FILE_BODY_PATCH \
142        TXT_FILE_BODY; \
143        Styles = (ARCHIVE,PATCH)
144
145#define ARCHIVE_SUBST_FILE_BODY \
146        TXT_FILE_BODY; \
147        Styles = (ARCHIVE,SUBSTITUTE)
148
149#define ARCHIVE_SUBST_FILE_BODY_PATCH \
150        TXT_FILE_BODY; \
151        Styles = (ARCHIVE,SUBSTITUTE,PATCH)
152
153#define PACKED_LIB_FILE_BODY \
154        TXT_FILE_BODY; \
155        Styles = (PACKED); \
156        Dir    = SCP2_OOO_BIN_DIR
157
158#define PACKED_LIB_FILE_BODY_PATCH \
159        TXT_FILE_BODY; \
160        Styles = (PACKED,PATCH); \
161        Dir    = SCP2_OOO_BIN_DIR
162
163#define PACKED_FILTER_FILE_BODY \
164        TXT_FILE_BODY; \
165        Styles = (PACKED); \
166        Dir    = gid_Dir_Filter
167
168#define PACKED_FILTER_FILE_BODY_PATCH \
169        TXT_FILE_BODY; \
170        Styles = (PACKED,PATCH); \
171        Dir    = gid_Dir_Filter
172
173#define STD_LIB_FILE(id,name) \
174    File id \
175        Name   = LIBNAME(name); \
176        PACKED_LIB_FILE_BODY; \
177    End
178
179#define STD_LIB_FILE_PATCH(id,name) \
180    File id \
181        Name   = LIBNAME(name); \
182        PACKED_LIB_FILE_BODY_PATCH; \
183    End
184
185#define SPECIAL_LIB_FILE(id,name) \
186    File id \
187        Name    = SPECIAL_NAME(name); \
188        PACKED_LIB_FILE_BODY; \
189    End
190
191#define SPECIAL_LIB_FILE_PATCH(id,name) \
192    File id \
193        Name    = SPECIAL_NAME(name); \
194        PACKED_LIB_FILE_BODY_PATCH; \
195    End
196
197#define STD_RES_FILE(id,name) \
198    File id \
199        TXT_FILE_BODY; \
200        RESFILE_ALL_LANG(name); \
201        Dir     = gid_Dir_Resource; \
202        Styles  = (PACKED); \
203    End
204
205#define BRAND_RES_FILE(id,name) \
206    File id \
207        TXT_FILE_BODY; \
208        RESFILE_ALL_LANG(name); \
209        Dir     = gid_Brand_Dir_Resource; \
210        Styles  = (PACKED); \
211    End
212
213#define STD_RES_FILE_PATCH(id,name) \
214    File id \
215        TXT_FILE_BODY; \
216        RESFILE_ALL_LANG(name); \
217        Dir     = gid_Dir_Resource; \
218        Styles  = (PACKED,PATCH); \
219    End
220
221#define STD_RES_FILE_ONLY_PATCH(id,name) \
222    File id \
223        TXT_FILE_BODY; \
224        RESFILE_ALL_LANG(name); \
225        Dir     = gid_Dir_Resource; \
226        Styles  = (PACKED,PATCH,PATCH_ONLY); \
227    End
228
229#define STD_FILTER_FILE(id,name) \
230    File id \
231        PACKED_LIB_FILE_BODY; \
232        Name = FILTER_LIBNAME(name); \
233    End
234
235#define STD_FILTER_FILE_PATCH(id,name) \
236    File id \
237        PACKED_LIB_FILE_BODY_PATCH; \
238        Name = FILTER_LIBNAME(name); \
239    End
240
241#define STD_FONTUNX_FILE(id,name,fontname) \
242    File id \
243        TXT_FILE_BODY; \
244        Dir       = gid_Dir_Fonts_Truetype; \
245        Styles    = (PACKED, FONT_WARN_IF_EXISTS); \
246        Name      = STRING(name) ; \
247    End
248
249#define STD_FONTWIN_FILE(id,name,fontname) \
250    File id \
251        TXT_FILE_BODY; \
252        Dir      = PREDEFINED_OSSYSTEMFONTDIR; \
253        Styles   = (PACKED,FONT,DONT_DELETE,FONT_WARN_IF_EXISTS); \
254        Name     = STRING(name) ; \
255        FontName = STRING(fontname) ; \
256        NetDir   = gid_Dir_Winfonts; \
257    End
258
259#ifdef UNX
260#define STD_FONT_FILE(id,name,fontname) \
261    File id \
262        TXT_FILE_BODY; \
263        Dir       = gid_Dir_Fonts_Truetype; \
264        Styles    = (PACKED, FONT_WARN_IF_EXISTS); \
265        Name      = STRING(name) ; \
266    End
267#endif
268
269#ifdef UNX
270#define STD_FONT_FILE_DUO(id,name,unxfontname,winfontname) \
271    File id \
272        TXT_FILE_BODY; \
273        Dir       = gid_Dir_Fonts_Truetype; \
274        Styles    = (PACKED, FONT_WARN_IF_EXISTS); \
275        Name      = STRING(name) ; \
276    End
277#endif
278
279#ifdef WNT
280#define STD_FONT_FILE(id,name,fontname) \
281    File id \
282        TXT_FILE_BODY; \
283        Dir      = PREDEFINED_OSSYSTEMFONTDIR; \
284        Styles   = (PACKED,FONT,DONT_DELETE,FONT_WARN_IF_EXISTS); \
285        Name     = STRING(name) ; \
286        FontName = STRING(fontname) ; \
287        NetDir   = gid_Dir_Winfonts; \
288    End
289#endif
290
291#ifdef WNT
292#define STD_FONT_FILE_DUO(id,name,unxfontname,winfontname) \
293    File id \
294        TXT_FILE_BODY; \
295        Dir      = PREDEFINED_OSSYSTEMFONTDIR; \
296        Styles   = (PACKED,FONT,DONT_DELETE,FONT_WARN_IF_EXISTS); \
297        Name     = STRING(name) ; \
298        FontName = STRING(winfontname) ; \
299        NetDir   = gid_Dir_Winfonts; \
300    End
301#endif
302
303#define STD_JAR_FILE(id,name) \
304    File id \
305        TXT_FILE_BODY; \
306        Name     = STRING(CONCAT2(name,.jar)); \
307        Dir      = gid_Dir_Classes; \
308        Styles   = (PACKED,DONT_OVERWRITE); \
309    End
310
311#define STD_JAR_FILE_PATCH(id,name) \
312    File id \
313        TXT_FILE_BODY; \
314        Name     = STRING(CONCAT2(name,.jar)); \
315        Dir      = gid_Dir_Classes; \
316        Styles   = (PACKED,DONT_OVERWRITE,PATCH); \
317    End
318
319#define JARFILENAME(name) STRING(CONCAT2(name,.jar))
320
321#define PACKED_SHELLNEW_FILE_BODY \
322        TXT_FILE_BODY; \
323        Styles = (PACKED,WORKSTATION, OVERWRITE); \
324        Dir    = PREDEFINED_OSSHELLNEWDIR; \
325        NetDir = gid_Dir_Shellnew
326
327#define STD_SHELLNEW_FILE(id,name) \
328    File id \
329        PACKED_SHELLNEW_FILE_BODY; \
330        Name      = STRING(name) ; \
331    End
332
333#define SPECIAL_COMPONENT_LIB_FILE(id,name) \
334    File id \
335        Name     = SPECIAL_COMPONENT_LIB_NAME(name); \
336        PACKED_LIB_FILE_BODY; \
337    End
338
339#define SPECIAL_COMPONENT_LIB_FILE_PATCH(id,name) \
340    File id \
341        Name     = SPECIAL_COMPONENT_LIB_NAME(name); \
342        PACKED_LIB_FILE_BODY_PATCH; \
343    End
344
345#define WINW4WFILTERFILENAME(name) STRING(CONCAT2(name,f32w.dll))
346
347#define STD_WIN_W4WFILTER_FILE(id,name) \
348    File id \
349        PACKED_FILTER_FILE_BODY; \
350        Name            = WINW4WFILTERFILENAME(name);  \
351    End
352
353#define SOLSW4WFILTERFILENAME(name) STRING(CONCAT2(w4w, name))
354
355#define STD_SOLS_W4WFILTER_FILE(id,name) \
356    File id \
357        BIN_FILE_BODY; \
358        Styles = (PACKED); \
359        Dir = gid_Dir_Filter; \
360        Name = SOLSW4WFILTERFILENAME(name); \
361    End
362
363#define SPECIAL_NO_WARNING_IF_NOT_EXISTS_FILE(id,name) \
364    File id \
365        TXT_FILE_BODY; \
366        Name = LIBNAME(name); \
367        Dir = SCP2_OOO_BIN_DIR; \
368        Styles = (PACKED, NO_WARNING_IF_NOT_EXISTS); \
369    End
370
371// ---------------------------------------
372#define CONDITIONAL_MODULE_ENTRY(name,modid) \
373    Module gid_Module_Root_Reg_##name \
374	ParentID = modid; \
375	Name = STRING(CONCAT2(gid_Module_Root_,name)); \
376	Description = STRING(CONCAT2(gid_Module_Root_,name)); \
377	Default = YES; \
378	Styles = (HIDDEN_ROOT); \
379End
380
381#define REGISTRY_ENTRY_OPEN_WITH(name,cond,doc_type,modid,key) \
382    RegistryItem gid_Regitem_OpenOffice_##cond##_OpenWith_##doc_type \
383        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
384        ModuleID = modid; \
385        Subkey = STRING(CONCAT3(.,key,\OpenWithProgIDs)); \
386        Name = STRING(CONCAT2(OpenOffice.org.,name)); \
387        Value = " "; \
388    End
389
390#define REGISTRY_ENTRY_OPEN_WITH_TMPL(name,cond,doc_type,modid,key) \
391    RegistryItem gid_Regitem_OpenOffice_##cond##_OpenWith_##doc_type \
392        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
393        ModuleID = modid; \
394        Subkey = STRING(CONCAT3(.,key,\OpenWithProgIDs)); \
395        Name = STRING(CONCAT2(OpenOffice.org.,name)); \
396        Value = " "; \
397    End
398
399#define CONDITIONAL_REGISTRY_ENTRY_EXT(name,cond,key) \
400    RegistryItem gid_Regitem__##name \
401        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
402        ModuleID = gid_Module_Root_Reg_##name; \
403        Subkey = STRING(CONCAT2(.,key)); \
404        Value = STRING(CONCAT2(OpenOffice.org.,name)); \
405        ComponentCondition = STRING(CONCAT3(REGISTER_,cond,=1)); \
406    End
407
408#define REGISTRY_ENTRY_DOC(name,modid,disp_name) \
409    RegistryItem CONCAT2(gid_Regitem_Openoffice_,name) \
410        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
411        ModuleID = modid; \
412        Subkey = STRING(CONCAT2(OpenOffice.org.,name)); \
413        REG_VALUE_LNG(disp_name) \
414    End
415
416#define REGISTRY_ENTRY_ICON(name,modid,icon_id) \
417    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Defaulticon) \
418        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
419        ModuleID = modid; \
420        Subkey = STRING(CONCAT3(OpenOffice.org.,name,\DefaultIcon)); \
421        Value = "<progpath>\program\soffice.exe," STRING(icon_id); \
422    End
423
424#define REGISTRY_ENTRY_SHELL(name,default,modid) \
425    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell) \
426        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
427        ModuleID = modid; \
428        Subkey = STRING(CONCAT3(OpenOffice.org.,name,\shell)); \
429        Value = STRING(default); \
430    End
431
432#define REGISTRY_ENTRY_NEW_CMD(name,modid,app) \
433    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_New) \
434        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
435        ModuleID = modid; \
436        Subkey = STRING(CONCAT3(OpenOffice.org.,name,\shell\new)); \
437        REG_VALUE_LNG(NEW) \
438    End \
439    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_New_Command) \
440        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
441        ModuleID = modid; \
442        Subkey = STRING(CONCAT3(OpenOffice.org.,name,\shell\new\command)); \
443        Value = "\"<progpath>\program\\" STRING(app) "\" -n \"%1\""; \
444    End
445
446#define REGISTRY_ENTRY_OPEN_CMD(name,modid,app) \
447    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_Open_Command) \
448        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
449        ModuleID = modid; \
450        Subkey = STRING(CONCAT3(OpenOffice.org.,name,\shell\open\command)); \
451        Value = "\"<progpath>\program\\" STRING(app) "\" -o \"%1\""; \
452    End
453
454#define REGISTRY_ENTRY_PRINT_CMD(name,modid,app) \
455    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_Print_Command) \
456        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
457        ModuleID = modid; \
458        Subkey = STRING(CONCAT3(OpenOffice.org.,name,\shell\print\command)); \
459        Value = "\"<progpath>\program\\" STRING(app) "\" -p \"%1\""; \
460    End
461
462#define REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
463    RegistryItem CONCAT3(gid_Regitem_Openoffice_,name,_Shell_Printto_Command) \
464        ParentID = PREDEFINED_HKEY_CLASSES_ROOT; \
465        ModuleID = modid; \
466        Subkey = STRING(CONCAT3(OpenOffice.org.,name,\shell\printto\command)); \
467        Value = "\"<progpath>\program\\" STRING(app) "\" -pt \"%2\" \"%1\""; \
468    End
469
470#define REGISTRY_ENTRY_CAPABILITIES(name,modid,key,doc_type) \
471    RegistryItem CONCAT2(gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_,name) \
472        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
473        ModuleID = modid; \
474        Subkey = STRING(Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations); \
475        Name = STRING(CONCAT2(.,key)); \
476        Value = STRING(CONCAT2(OpenOffice.org.,name)); \
477        Styles = (); \
478    End
479
480#define REGISTRY_ENTRY_TEMPLATE_CAPABILITIES(name,modid,key,doc_type) \
481    RegistryItem CONCAT2(gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_,name) \
482        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
483        ModuleID = modid; \
484        Subkey = STRING(Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations); \
485        Name = STRING(CONCAT2(.,key)); \
486        Value = STRING(CONCAT2(OpenOffice.org.,name)); \
487        Styles = (); \
488    End
489
490#define CONDITIONAL_REGISTER_DOC_EXTENSION(name,modid,key,cond,disp_name,icon_id,app,default,doc_type) \
491    CONDITIONAL_MODULE_ENTRY(name,modid) \
492    REGISTRY_ENTRY_OPEN_WITH(name,cond,doc_type,modid,key) \
493    CONDITIONAL_REGISTRY_ENTRY_EXT(name,cond,key) \
494    REGISTRY_ENTRY_DOC(name,modid,disp_name) \
495    REGISTRY_ENTRY_ICON(name,modid,icon_id) \
496    REGISTRY_ENTRY_SHELL(name,default,modid) \
497    REGISTRY_ENTRY_NEW_CMD(name,modid,app) \
498    REGISTRY_ENTRY_OPEN_CMD(name,modid,app) \
499    REGISTRY_ENTRY_PRINT_CMD(name,modid,app) \
500    REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
501    REGISTRY_ENTRY_CAPABILITIES(name,modid,key,doc_type) \
502
503#define CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION(name,modid,key,cond,disp_name,icon_id,app,default,doc_type) \
504    CONDITIONAL_MODULE_ENTRY(name,modid) \
505    REGISTRY_ENTRY_OPEN_WITH_TMPL(name,cond,doc_type,modid,key) \
506    CONDITIONAL_REGISTRY_ENTRY_EXT(name,cond,key) \
507    REGISTRY_ENTRY_DOC(name,modid,disp_name) \
508    REGISTRY_ENTRY_ICON(name,modid,icon_id) \
509    REGISTRY_ENTRY_SHELL(name,default,modid) \
510    REGISTRY_ENTRY_NEW_CMD(name,modid,app) \
511    REGISTRY_ENTRY_OPEN_CMD(name,modid,app) \
512    REGISTRY_ENTRY_PRINT_CMD(name,modid,app) \
513    REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
514    REGISTRY_ENTRY_TEMPLATE_CAPABILITIES(name,modid,key,doc_type) \
515
516// ---------------------------------------
517
518#define REGISTER_PROPERTY_HANDLER_FOR_EXTENSION(extension) \
519    RegistryItem CONCAT2(gid_Regitem_Software_Microsoft_Windows_CurrentVersion_PropertySystem_PropertyHandlers_,extension) \
520        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
521        ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl; \
522        ComponentCondition = "VersionNT >= 600"; \
523        Styles = (X64); \
524        Subkey = STRING(CONCAT2(SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers\.,extension)); \
525        Value = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
526        Val64 = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
527    End
528
529// ---------------------------------------
530
531#if defined WNT
532#define SCP2_URE_DL_DIR gid_Dir_Ure_Bin
533#define SCP2_URE_DL_NORMAL(n) n ".dll"
534#define SCP2_URE_DL_BARE(n) n ".dll"
535#define SCP2_URE_DL_VER(n, v) n v ".dll"
536#define SCP2_URE_DL_COMID_VER(n, v) n v STRING(COMID) ".dll"
537#define SCP2_URE_DL_UNO_VER(n, v) n v ".dll"
538#define SCP2_URE_DL_UNO_COMID_VER(n, v) n v STRING(COMID) ".dll"
539#define SCP2_URE_SHARE_DIR gid_Dir_Common_Ure
540#if defined _STLP_DEBUG
541#define SCP2_STDLP_DEBUG "d"
542#else
543#define SCP2_STDLP_DEBUG ""
544#endif
545#else
546#define SCP2_URE_DL_DIR gid_Dir_Ure_Lib
547#define SCP2_URE_DL_NORMAL(n) "lib" n STRING(UNXSUFFIX)
548#define SCP2_URE_DL_BARE(n) n STRING(UNXSUFFIX)
549#define SCP2_URE_DL_VER(n, v) "lib" n STRING(UNXSUFFIX) "." v
550#define SCP2_URE_DL_COMID_VER(n, v) \
551    "lib" n STRING(COMID) STRING(UNXSUFFIX) "." v
552#define SCP2_URE_DL_UNO_VER(n, v) "libuno_" n STRING(UNXSUFFIX) "." v
553#define SCP2_URE_DL_UNO_NORMAL(n) "libuno_" n STRING(UNXSUFFIX)
554#define SCP2_URE_DL_UNO_COMID_VER(n, v)	\
555    "libuno_" n STRING(COMID) STRING(UNXSUFFIX) "." v
556#define SCP2_URE_DL_UNO_COMID_NORMAL(n)	\
557    "libuno_" n STRING(COMID) STRING(UNXSUFFIX)
558#define SCP2_URE_SHARE_DIR gid_Dir_Ure_Share
559#endif
560#if defined MACOSX
561#define SCP2_URE_JDL_NORMAL(n) "lib" n ".jnilib"
562#else
563#define SCP2_URE_JDL_NORMAL(n) SCP2_URE_DL_NORMAL(n)
564#endif
565
566#include <langmacros.inc>
567
568
569#endif // MACROS_INC
570
571