source: trunk/src/kernel32/conprop2.cpp@ 1476

Last change on this file since 1476 was 1476, checked in by phaller, 26 years ago

Add: console properties update

File size: 9.0 KB
Line 
1/* $Id: conprop2.cpp,v 1.1 1999-10-27 12:38:47 phaller Exp $ */
2
3/*
4 * Win32 Console API Translation for OS/2
5 *
6 * 1998/03/06 Patrick Haller (haller@zebra.fh-weingarten.de)
7 *
8 * @(#) conprop.cpp 1.0.0 1998/03/06 PH Start from scratch
9 */
10
11
12/*****************************************************************************
13 * Remark *
14 *****************************************************************************
15
16 - save / load properties from EAs
17
18 */
19
20
21/*****************************************************************************
22 * Includes *
23 *****************************************************************************/
24
25#include <odin.h>
26#include <odinwrap.h>
27#include <os2sel.h>
28
29#define INCL_GPI
30#define INCL_WIN
31#define INCL_DOSMEMMGR
32#define INCL_DOSSEMAPHORES
33#define INCL_DOSERRORS
34#define INCL_DOSPROCESS
35#define INCL_DOSMODULEMGR
36#define INCL_VIO
37#define INCL_AVIO
38#include <os2wrap.h> //Odin32 OS/2 api wrappers
39#include <builtin.h>
40
41#include <win32type.h>
42#include <misc.h>
43#include <stdio.h>
44
45#include "console.h"
46#include "console2.h"
47#include "conprop.h"
48
49
50ODINDEBUGCHANNEL(KERNEL32-CONPROP2)
51
52/*****************************************************************************
53 * Defines *
54 *****************************************************************************/
55
56#define ERROR_SUCCESS 0
57
58#define REG_NONE 0 /* no type */
59#define REG_SZ 1 /* string type (ASCII) */
60#define REG_EXPAND_SZ 2 /* string, includes %ENVVAR% (expanded by caller) (ASCII) */
61#define REG_BINARY 3 /* binary format, callerspecific */
62 /* YES, REG_DWORD == REG_DWORD_LITTLE_ENDIAN */
63#define REG_DWORD 4 /* DWORD in little endian format */
64#define REG_DWORD_LITTLE_ENDIAN 4 /* DWORD in little endian format */
65#define REG_DWORD_BIG_ENDIAN 5 /* DWORD in big endian format */
66#define REG_LINK 6 /* symbolic link (UNICODE) */
67#define REG_MULTI_SZ 7 /* multiple strings, delimited by \0, terminated by \0\0 (ASCII) */
68#define REG_RESOURCE_LIST 8 /* resource list? huh? */
69#define REG_FULL_RESOURCE_DESCRIPTOR 9 /* full resource descriptor? huh? */
70
71#define HKEY_LOCAL_MACHINE_O32 0xFFFFFFEFL
72#define HKEY_CURRENT_USER_O32 0xFFFFFFEEL
73#define HKEY_USERS_O32 0xFFFFFFEDL
74#define HKEY_CLASSES_ROOT_O32 0xFFFFFFECL
75
76#define KEY_ALL_ACCESS 0x0000003f
77
78typedef unsigned long HKEY;
79typedef HKEY* LPHKEY;
80typedef DWORD REGSAM;
81
82LONG _System _O32_RegOpenKeyEx(HKEY,LPCSTR,DWORD,REGSAM,LPHKEY);
83LONG _System _O32_RegCreateKeyEx(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,
84 LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD);
85LONG _System _O32_RegQueryValueEx(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
86LONG _System _O32_RegCloseKey(HKEY);
87DWORD _System GetModuleFileNameA(HMODULE,LPSTR,DWORD);
88
89
90/*****************************************************************************
91 * Name : APIRET EXPENTRY ConsolePropertyDefault
92 * Funktion : load default options
93 * Parameter : PICONSOLEOPTIONS pConsoleOptions
94 * Variablen :
95 * Ergebnis : APIRET
96 * Bemerkung :
97 *
98 * Autor : Patrick Haller [1998/06/13 23:20]
99 *****************************************************************************/
100
101DWORD ConsolePropertyDefault(PICONSOLEOPTIONS pConsoleOptions)
102{
103 /*************************************
104 * Initialize Console Window Options *
105 *************************************/
106
107 pConsoleOptions->fTerminateAutomatically = FALSE;
108 pConsoleOptions->fSpeakerEnabled = TRUE;
109 pConsoleOptions->fSetWindowPosition = FALSE;
110 pConsoleOptions->coordDefaultPosition.X = 0;
111 pConsoleOptions->coordDefaultPosition.Y = 0;
112 pConsoleOptions->coordDefaultSize.X = 80;
113 pConsoleOptions->coordDefaultSize.Y = 25;
114 pConsoleOptions->fQuickInsert = FALSE;
115 pConsoleOptions->fInsertMode = FALSE;
116 pConsoleOptions->fMouseActions = FALSE;
117 pConsoleOptions->fToolbarActive = FALSE;
118 pConsoleOptions->ucDefaultAttribute = 0x0007; /* 07 = grey on black */
119 pConsoleOptions->ulTabSize = 8; /* tabulator size */
120 pConsoleOptions->ulUpdateLimit = 8; /* scroll max. n lines */
121
122 /* priority settings for message thread */
123 pConsoleOptions->ulConsoleThreadPriorityClass = PRTYC_REGULAR;
124 pConsoleOptions->ulConsoleThreadPriorityDelta = +10;
125
126 pConsoleOptions->ucCursorDivisor = 10; /* timer divisor for blinking */
127
128 return NO_ERROR;
129}
130
131
132/*****************************************************************************
133 * Name : APIRET EXPENTRY ConsolePropertyLoad
134 * Funktion : load properties from registry
135 * Parameter : PICONSOLEOPTIONS pConsoleOptions
136 * Variablen :
137 * Ergebnis : APIRET
138 * Bemerkung :
139 *
140 * Autor : Patrick Haller [1998/06/13 23:20]
141 *****************************************************************************/
142
143DWORD ConsolePropertyLoad(PICONSOLEOPTIONS pConsoleOptions)
144{
145 dprintf (("KERNEL32: Console:ConsolePropertyLoad(%08xh) not implemented.\n",
146 pConsoleOptions));
147
148 // HKEY_CURRENT_USER/SOFTWARE/ODIN/ConsoleProperties/<process name>/<option name>
149 LONG lRes = ERROR_SUCCESS;
150 HKEY hkConsole;
151 char szKey[256];
152 char szProcessName[256];
153 DWORD dwRes;
154 DWORD dwSize;
155 DWORD dwType;
156
157 // query process's name
158 dwRes = GetModuleFileNameA(NULL,
159 (LPSTR)&szProcessName,
160 sizeof(szProcessName));
161 if (dwRes == 0)
162 {
163 dprintf(("KERNEL32: ConProp: ConsolePropertyLoad: GetModuleFileName failed\n"));
164 lRes = ERROR_INVALID_PARAMETER;
165 }
166 else
167 {
168 // open process key
169 sprintf (szKey,
170 "Software\\ODIN\\ConsoleProperties\\%s",
171 szProcessName);
172
173 lRes = _O32_RegOpenKeyEx(HKEY_CURRENT_USER_O32,
174 szKey,
175 0,
176 KEY_ALL_ACCESS,
177 &hkConsole);
178 }
179
180 // try to open DEFAULT
181 if (lRes != ERROR_SUCCESS)
182 lRes = _O32_RegOpenKeyEx(HKEY_CURRENT_USER_O32,
183 "Software\\ODIN\\ConsoleProperties\\DEFAULT",
184 0,
185 KEY_ALL_ACCESS,
186 &hkConsole);
187
188 // now it's time to retrieve information
189 if (lRes != ERROR_SUCCESS)
190 {
191 // load hardcoded defaults instead
192 ConsolePropertyDefault(pConsoleOptions);
193 return ERROR_INVALID_PARAMETER;
194 }
195
196
197 // OK, finally retrieve tokens
198#define REGQUERYVALUE(name,var) \
199 dwSize = sizeof(pConsoleOptions->var); \
200 lRes = _O32_RegQueryValueEx(hkConsole, name, NULL, &dwType, \
201 (LPBYTE)&pConsoleOptions->var, &dwSize);
202
203 REGQUERYVALUE("AutomaticTermination", fTerminateAutomatically)
204 REGQUERYVALUE("Speaker", fSpeakerEnabled)
205 REGQUERYVALUE("SpeakerDuration", ulSpeakerDuration)
206 REGQUERYVALUE("SpeakerFrequency", ulSpeakerFrequency)
207 REGQUERYVALUE("UpdateLimit", ulUpdateLimit)
208 REGQUERYVALUE("SetWindowPosition", fSetWindowPosition)
209 REGQUERYVALUE("DefaultPosition_x", coordDefaultPosition.X)
210 REGQUERYVALUE("DefaultPosition_y", coordDefaultPosition.Y)
211 REGQUERYVALUE("DefaultSize_x", coordDefaultSize.X)
212 REGQUERYVALUE("DefaultSize_y", coordDefaultSize.Y)
213 REGQUERYVALUE("BufferSize_x", coordBufferSize.X)
214 REGQUERYVALUE("BufferSize_y", coordBufferSize.Y)
215 REGQUERYVALUE("QuickInsert", fQuickInsert)
216 REGQUERYVALUE("InsertMode", fInsertMode)
217 REGQUERYVALUE("MouseActions", fMouseActions)
218 REGQUERYVALUE("Toolbar", fToolbarActive)
219 REGQUERYVALUE("TabSize", ulTabSize)
220 REGQUERYVALUE("DefaultAttribute", ucDefaultAttribute)
221 REGQUERYVALUE("CursorDivisor", ucCursorDivisor)
222 REGQUERYVALUE("ConsolePriorityClass", ulConsoleThreadPriorityClass)
223 REGQUERYVALUE("ConsolePriorityDelta", ulConsoleThreadPriorityDelta)
224 REGQUERYVALUE("ApplicationPriorityClass", ulAppThreadPriorityClass)
225 REGQUERYVALUE("ApplicationPriorityDelta", ulAppThreadPriorityDelta)
226#undef REGQUERYVALUE
227
228 _O32_RegCloseKey(hkConsole);
229
230 return (NO_ERROR);
231}
232
233
234
235/*****************************************************************************
236 * Name : APIRET EXPENTRY ConsolePropertySave
237 * Funktion : save properties from registry
238 * Parameter : PICONSOLEOPTIONS pConsoleOptions
239 * Variablen :
240 * Ergebnis : APIRET
241 * Bemerkung :
242 *
243 * Autor : Patrick Haller [1998/06/13 23:20]
244 *****************************************************************************/
245
246DWORD ConsolePropertySave(PICONSOLEOPTIONS pConsoleOptions)
247{
248 dprintf (("KERNEL32: Console:ConsolePropertySave(%08xh) not implemented.\n",
249 pConsoleOptions));
250
251 return (NO_ERROR);
252}
253
Note: See TracBrowser for help on using the repository browser.