/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#if !defined(ENGLISH)
#define LG_D 					// generate always german version
#endif

#define VER_FIRSTYEAR	2007

#include <windows.h>
#include "version_so.hrc"

// -----------------------------------------------------------------------
// 				version information
// -----------------------------------------------------------------------

VS_VERSION_INFO versioninfo
#ifndef SUBVERSION
	fileversion    VERSION, 0, VERVARIANT, VER_COUNT
	productversion VERSION, 0, VERVARIANT, VER_COUNT
#else
	fileversion    VERSION, SUBVERSION, VERVARIANT, VER_COUNT
	productversion VERSION, SUBVERSION, VERVARIANT, VER_COUNT
#endif
	fileflagsmask 0x3F
	fileflags
#if defined(DEBUG)
	VS_FF_DEBUG |
#endif
#ifdef VER_PREL
	VS_FF_PRERELEASE |
#endif
	0
#ifndef WIN32
	fileos VOS_DOS_WINDOWS16
#else
	fileos VOS_NT_WINDOWS32
#endif
	filetype VFT_APP
	{
		block "StringFileInfo"
		{
#ifdef LG_D
			block "040704E4"
			{
				// German StringTable
				value "CompanyName",		"Apache Software Foundation\0"
				value "FileDescription", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\0"
				value "FileVersion",		PPS(VER_LEVEL) "\0"
				value "ProductVersion",		PPS(VER_LEVEL) "\0"
				value "OriginalFilename",	"SOFFICE.EXE\0"
				value "InternalName",		"SOFFICE\0"
				value "LegalCopyright",		S_CRIGHT " Apache Software Foundation\0"
			}
#else
			block "040904E4"
			{
				// International StringTable
				value "CompanyName", 		"Apache Software Foundation\0"
				value "FileDescription",	"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\0"
				value "FileVersion",		PPS(VER_LEVEL) "\0"
				value "ProductVersion",		PPS(VER_LEVEL) "\0"
				value "OriginalFilename",	"SOFFICE.EXE\0"
				value "InternalName", 		"SOFFICE\0"
				value "LegalCopyright", 	S_CRIGHT " Apache Software Foundation\0"
			}
#endif
		}

		block "VarFileInfo"
		{
#ifdef LG_D
			value "Translation", 0x0407, 1252
#else
			value "Translation", 0x0409, 1252
#endif
		}
	}

2 ICON "icons\\oasis-text.ico"
3 ICON "icons\\oasis-text-template.ico"
4 ICON "icons\\oasis-spreadsheet.ico"
5 ICON "icons\\oasis-spreadsheet-template.ico"
6 ICON "icons\\oasis-drawing.ico"
7 ICON "icons\\oasis-drawing-template.ico"
8 ICON "icons\\oasis-presentation.ico"
9 ICON "icons\\oasis-presentation-template.ico"
10 ICON "icons\\oasis-presentation-template.ico"
11 ICON "icons\\oasis-master-document.ico"
12 ICON "icons\\oasis-web-template.ico"
13 ICON "icons\\oasis-empty-document.ico"
14 ICON "icons\\oasis-database.ico"
15 ICON "icons\\oasis-formula.ico"
16 ICON "icons\\oasis-web-template.ico"
17 ICON "icons\\empty-document.ico"
18 ICON "icons\\empty-document.ico"
19 ICON "icons\\so9_main_app.ico"
20 ICON "icons\\empty-document.ico"
21 ICON "icons\\so9_writer_app.ico"
22 ICON "icons\\so9_calc_app.ico"
23 ICON "icons\\so9_draw_app.ico"
24 ICON "icons\\so9_impress_app.ico"
25 ICON "icons\\so9_math_app.ico"
26 ICON "icons\\so9_base_app.ico"
27 ICON "icons\\oasis-empty-document.ico"
28 ICON "icons\\text.ico"
29 ICON "icons\\text-template.ico"
30 ICON "icons\\spreadsheet.ico"
31 ICON "icons\\spreadsheet-template.ico"
32 ICON "icons\\drawing.ico"
33 ICON "icons\\drawing-template.ico"
34 ICON "icons\\presentation.ico"
35 ICON "icons\\presentation-template.ico"
36 ICON "icons\\master-document.ico"
37 ICON "icons\\empty-document.ico"
38 ICON "icons\\database.ico"
39 ICON "icons\\formula.ico"
40 ICON "icons\\oxt-extension.ico"
