mirror of
https://github.com/reactos/wine.git
synced 2025-03-07 12:17:33 +00:00

Sat Apr 20 23:23:16 1996 Robert Pouliot <krynos@qbc.clic.net> * [resources/sysres_Fr.rc] [resources/TODO] Made changes for Choose_Color dialog. Sat Apr 20 15:43:49 1996 Alexandre Julliard <julliard@lrc.epfl.ch> * [controls/button.c] Fixed test that got miscompiled by some old gcc versions. * [memory/local.c] Fixed the layout of handle tables so that moveable handle entries can be freed on LocalFree(). Implemented LocalFlags(), LocalCountFree(), LocalHandleDelta() and GetHeapSpaces(). * [misc/main.c] [ANNOUNCE] Update the list of contributors. Please let me know if I forgot someone. Fri Apr 19 20:07:20 1996 Frans van Dorsselaer <dorssel@rulhm1.leidenuniv.nl> * [controls/edit.c] [controls/EDIT.TODO] Fixed EM_SETHANDLE / WM_CREATE / EDIT_MakeFir() buffer allocation. Fixed ES_NOHIDESEL / WM_MOUSEMOVE / WM_LBUTTONDOWN implementation. Added WM_ENABLE implementation (gray text). Fixed buffer > 32767 bug. Fixed argument types / typecasting. Faster selection (re)drawing. Thu Apr 18 13:38:26 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [misc/registry.c] [include/winreg.h] Changed savefile format again to human readable/editable (UNICODE chars >0xff are specified by \uXXXX, data by XX). Has now global / local registry databases (including merging them). HKEY_CLASSES_ROOT == HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes. HKEY_CURRENT_USER == HKEY_USERS\\<loginname>. * [misc/comm.c] Allow " " as COMx: ... spec delimiter too. (AOL-CD setup.exe tries to initialize modem2 as "9600,x,x x" (can't remember the x). Thu Apr 18 09:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu> * [windows/mdi.c] Miscellaneous changes. * [windows/winpos.c] Use BitBlt whenever possible in SetWindowPos. * [windows/painting.c] Fix incompatibilities with hrgnUpdate being 1. Wed Apr 17 19:19:22 1996 Albrecht Kleine <kleine@ak.sax.de> * [misc/commdlg.c] Many bugfixes in ChooseColor dialog. Added a user defined dialog title in FileOpen-/FileSave- dialog. * [misc/commdlg.c][include/commdlg.h] [if1632/commdlg.spec][if1632/winprocs.spec] Introduced dialog-, callback- and enum- stub functions for ChooseFont dialog Wed Apr 17 19:08:38 1996 Niels de Carpentier <niels@cindy.et.tudelft.nl> * [objects/metafile.c] [include/metafile.h] [if1632/gdi.spec] Implemented EnumMetaFile and CopyMetaFile. Removed METAFILE struct. Implemented META_STRETCHDIB in PlayMetaFileRecord, several bug fixes. * [windows/winpos.c] Don't try to hide the window if it's already hidden. * [windows/message.c] Let MSG_PeekHardwareMsg fill the message queue with events if it's empty. Wed Apr 17 17:54:04 1996 Tristan Tarrant <tst@sthinc.demon.co.uk> * [resources/sysres_It.rc] Updated to support the new CHOOSE_COLOR_DIALOG. Tue Apr 16 11:50:00 1996 Anand Kumria <akumria@ozemail.com.au> * [if1632/Makefile] [if1632/relay.c] [if1631/w32sys.spec] [include/w32sys.h] [include/dlls.h] [misc/Makefile] [misc/w32sys.c] W32SYS.DLL partially implemented.
141 lines
4.3 KiB
C
141 lines
4.3 KiB
C
/*
|
|
* Program Manager
|
|
*
|
|
* Copyright 1996 Ulrich Schmid
|
|
*/
|
|
|
|
#include <windows.h>
|
|
#ifdef WINELIB
|
|
#include <options.h>
|
|
#endif
|
|
#include "progman.h"
|
|
|
|
/* Class names */
|
|
|
|
CHAR STRING_MAIN_WIN_CLASS_NAME[] = "PMMain";
|
|
CHAR STRING_MDI_WIN_CLASS_NAME[] = "MDICLIENT";
|
|
CHAR STRING_GROUP_WIN_CLASS_NAME[] = "PMGroup";
|
|
CHAR STRING_PROGRAM_WIN_CLASS_NAME[] = "PMProgram";
|
|
|
|
/* Resource names */
|
|
/* Xx will be overwritten with En, ... */
|
|
CHAR STRING_ACCEL[] = "ACCEL";
|
|
CHAR STRING_MENU_Xx[] = "MENU_Xx";
|
|
CHAR STRING_NEW_Xx[] = "DIALOG_NEW_Xx";
|
|
CHAR STRING_OPEN_Xx[] = "DIALOG_OPEN_Xx";
|
|
CHAR STRING_MOVE_Xx[] = "DIALOG_MOVE_Xx";
|
|
CHAR STRING_COPY_Xx[] = "DIALOG_COPY_Xx";
|
|
CHAR STRING_DELETE_Xx[] = "DIALOG_DELETE_Xx";
|
|
CHAR STRING_GROUP_Xx[] = "DIALOG_GROUP_Xx";
|
|
CHAR STRING_PROGRAM_Xx[] = "DIALOG_PROGRAM_Xx";
|
|
CHAR STRING_SYMBOL_Xx[] = "DIALOG_SYMBOL_Xx";
|
|
CHAR STRING_EXECUTE_Xx[] = "DIALOG_EXECUTE_Xx";
|
|
|
|
static BOOL STRING_LoadStringOtherLanguage(UINT num, UINT ids, LPSTR str, UINT len)
|
|
{
|
|
ids -= Globals.wStringTableOffset;
|
|
ids += num * 0x100;
|
|
return(LoadString(Globals.hInstance, ids, str, len));
|
|
};
|
|
|
|
VOID STRING_SelectLanguageByName(LPCSTR lang)
|
|
{
|
|
INT i;
|
|
CHAR newlang[3];
|
|
|
|
for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
|
|
if (STRING_LoadStringOtherLanguage(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)) &&
|
|
!lstrcmp(lang, newlang))
|
|
{
|
|
STRING_SelectLanguageByNumber(i);
|
|
return;
|
|
}
|
|
|
|
/* Fallback */
|
|
for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
|
|
if (STRING_LoadStringOtherLanguage(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)))
|
|
{
|
|
STRING_SelectLanguageByNumber(i);
|
|
return;
|
|
}
|
|
|
|
MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK);
|
|
PostQuitMessage(1);
|
|
}
|
|
|
|
VOID STRING_SelectLanguageByNumber(UINT num)
|
|
{
|
|
INT i;
|
|
CHAR lang[3];
|
|
CHAR caption[MAX_STRING_LEN];
|
|
CHAR item[MAX_STRING_LEN];
|
|
HMENU hMainMenu;
|
|
HLOCAL hGroup;
|
|
|
|
/* Select string table */
|
|
Globals.wStringTableOffset = num * 0x100;
|
|
|
|
/* Get Language id */
|
|
LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang));
|
|
Globals.lpszLanguage = lang;
|
|
|
|
/* Set frame caption */
|
|
LoadString(Globals.hInstance, IDS_PROGRAM_MANAGER, caption, sizeof(caption));
|
|
SetWindowText(Globals.hMainWnd, caption);
|
|
|
|
/* Change Resource names */
|
|
lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_NEW_Xx + sizeof(STRING_NEW_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_OPEN_Xx + sizeof(STRING_OPEN_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_MOVE_Xx + sizeof(STRING_MOVE_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_COPY_Xx + sizeof(STRING_COPY_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_DELETE_Xx + sizeof(STRING_DELETE_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_GROUP_Xx + sizeof(STRING_GROUP_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_PROGRAM_Xx + sizeof(STRING_PROGRAM_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_SYMBOL_Xx + sizeof(STRING_SYMBOL_Xx) - 3, lang, 3);
|
|
lstrcpyn(STRING_EXECUTE_Xx + sizeof(STRING_EXECUTE_Xx) - 3, lang, 3);
|
|
|
|
/* Create menu */
|
|
hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
|
|
Globals.hFileMenu = GetSubMenu(hMainMenu, 0);
|
|
Globals.hOptionMenu = GetSubMenu(hMainMenu, 1);
|
|
Globals.hWindowsMenu = GetSubMenu(hMainMenu, 2);
|
|
Globals.hLanguageMenu = GetSubMenu(hMainMenu, 3);
|
|
|
|
/* Remove dummy item */
|
|
RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION);
|
|
/* Add language items */
|
|
for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
|
|
if (STRING_LoadStringOtherLanguage(i, IDS_LANGUAGE_MENU_ITEM, item, sizeof(item)))
|
|
AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND,
|
|
PM_FIRST_LANGUAGE + i, item);
|
|
|
|
if (Globals.hMDIWnd)
|
|
SendMessage(Globals.hMDIWnd, WM_MDISETMENU,
|
|
(WPARAM) hMainMenu,
|
|
(LPARAM) Globals.hWindowsMenu);
|
|
else SetMenu(Globals.hMainWnd, hMainMenu);
|
|
|
|
/* Destroy old menu */
|
|
if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu);
|
|
Globals.hMainMenu = hMainMenu;
|
|
|
|
#ifdef WINELIB
|
|
/* Update system menus */
|
|
for (i = 0; langNames[i] && lstrcmp(lang, langNames[i]);) i++;
|
|
if (langNames[i]) Options.language = i;
|
|
|
|
GetSystemMenu(Globals.hMainWnd, TRUE);
|
|
for (hGroup = GROUP_FirstGroup(); hGroup;
|
|
hGroup = GROUP_NextGroup(hGroup))
|
|
{
|
|
GROUP *group = LocalLock(hGroup);
|
|
GetSystemMenu(group->hWnd, TRUE);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Local Variables: */
|
|
/* c-file-style: "GNU" */
|
|
/* End: */
|