/*
 * Help Viewer
 *
 * Copyright 1996 Ulrich Schmid
 */

#include "windows.h"
#include "winhelp.h"

#define CONCAT(a, b) CONCAT1(a, b)
#define CONCAT1(a, b) a##b

/* Menu */

CONCAT(MENU_, LANGUAGE_ID) MENU
{
 POPUP MENU_FILE {
   MENUITEM MENU_FILE_OPEN,             WH_OPEN
   MENUITEM SEPARATOR   
   MENUITEM MENU_FILE_PRINT,            WH_PRINT
   MENUITEM MENU_FILE_PRINTER_SETUP,    WH_PRINTER_SETUP
   MENUITEM SEPARATOR   
   MENUITEM MENU_FILE_EXIT,             WH_EXIT
 }
 POPUP MENU_EDIT {
   MENUITEM MENU_EDIT_COPY_DIALOG,      WH_COPY_DIALOG
   MENUITEM SEPARATOR   
   MENUITEM MENU_EDIT_ANNOTATE,         WH_ANNOTATE
 }
 POPUP MENU_BOOKMARK {
   MENUITEM MENU_BOOKMARK_DEFINE,       WH_BOOKMARK_DEFINE
 }
 POPUP MENU_HELP {
   MENUITEM MENU_HELP_ON_HELP,          WH_HELP_ON_HELP
   MENUITEM MENU_HELP_ON_TOP,           WH_HELP_ON_TOP
   MENUITEM SEPARATOR   
   MENUITEM MENU_HELP_INFO,             WH_ABOUT
#ifdef WINELIB
   MENUITEM MENU_HELP_ABOUT_WINE,       WH_ABOUT_WINE
#endif
 }
}

/* Dialogs */

DIALOG_TEST DIALOG 0, 0, 150, 22
STYLE DS_MODALFRAME
CAPTION "Macro Test"
{
GROUPBOX      "",   IDIGNORE,   4, 4, 102, 12
EDITTEXT            99,         5, 7, 100,  8
DEFPUSHBUTTON "OK", IDOK,     110, 5, 35,  12
}

/* Strings */

#define ADDSTRING(str) ADDSTRING1(LANGUAGE_NUMBER, IDS_ ## str) STRING_ ## str
#define ADDSTRING1(langnum, ids) ADDSTRING2(langnum, ids)
#define ADDSTRING2(langnum, ids) 0x ## langnum ## ids

#define STRINGIFY(str) STRINGIFY1(str)
#define STRINGIFY1(str) #str

#define STRING_LANGUAGE_ID        STRINGIFY(LANGUAGE_ID)

STRINGTABLE
{
ADDSTRING(LANGUAGE_ID)
ADDSTRING(WINE_HELP)
ADDSTRING(ERROR)
ADDSTRING(WARNING)
ADDSTRING(INFO)
ADDSTRING(NOT_IMPLEMENTED)
ADDSTRING(HLPFILE_ERROR_s)
ADDSTRING(CONTENTS)
ADDSTRING(SEARCH)
ADDSTRING(BACK)
ADDSTRING(HISTORY)
ADDSTRING(ALL_FILES)
ADDSTRING(HELP_FILES_HLP)
}
