source: branches/1.0/src/uni.c@ 29

Last change on this file since 29 was 29, checked in by herwigb, 15 years ago

Implemented Find button, fixed length limit

File size: 9.2 KB
Line 
1#define LINT_ARGS /* argument checking enabled */
2
3
4int acrtused=1; /* Define variable to say this is a DLL */
5
6#include "uni.h"
7
8#include <stdlib.h>
9#include <string.h>
10#include <ctype.h>
11#include <stdarg.h>
12#include <stdio.h>
13#include <stdlib.h>
14#include <process.h>
15#include "utils.h"
16
17MRESULT EXPENTRY CommDlg( HWND hDlg, USHORT msg, MPARAM mp1, MPARAM mp2 )
18{
19 PUNIDATA pUniData;
20 ULONG ulTimeOut = 0 ;
21 CHAR szDesc[ STR_LEN_PORTDESC ];
22 CHAR szShareName[ STR_LEN_PORTDESC ];
23 CHAR szTitle[ STR_LEN_TITLE + 1];
24 CHAR szTemp[ STR_LEN_PORTDESC ];
25 CHAR pwBuffer[256];
26 CHAR setupwiz[256];
27 CHAR setupparms[256];
28 USHORT i;
29 ULONG rc = 0;
30 PUCHAR token;
31 BOOL ulResult = MBID_ERROR;
32 BOOL fResult;
33 FILEDLG fd;
34 CHAR szMessage[ _MAX_PATH];
35 CHAR szDrive[ _MAX_PATH];
36 CHAR szDir[ _MAX_PATH];
37 PSZ pszButtonCode;
38
39 switch (msg)
40 {
41 case WM_INITDLG:
42// WinSendDlgItemMsg(hDlg,ID_BINARY,BM_SETCHECK,MPFROM2SHORT(1,0),NULL);
43 WinSendDlgItemMsg(hDlg,ID_PROGRAM, EM_SETTEXTLIMIT, MPFROMSHORT(128),NULL);
44 WinSendDlgItemMsg(hDlg,ID_PARAMETERS,EM_SETTEXTLIMIT, MPFROMSHORT(128),NULL);
45 WinSendDlgItemMsg(hDlg,ID_DIRECTORY, EM_SETTEXTLIMIT, MPFROMSHORT(128),NULL);
46
47 pUniData = (PUNIDATA)mp2;
48 WinSetWindowULong (hDlg, QWL_USER, (ULONG)pUniData);
49 if (PrfQueryProfileString (HINI_SYSTEMPROFILE,
50 pUniData->pszAppName,
51 KEY_DESCRIPTION,
52 NULL,
53 (PSZ)szDesc,
54 STR_LEN_PORTDESC))
55 {
56 WinSetWindowText (WinWindowFromID (hDlg, (USHORT)IDD_UNI),szDesc);
57 rc = WinLoadString(pUniData->hAB,
58 pUniData->hModule,
59 PDR_ID_PROPERTIES,
60 STR_LEN_PORTDESC, szTemp);
61 if (rc) {
62 strcpy ( szTitle, pUniData->pszPortName );
63 strcat ( szTitle, " - " );
64 strcat ( szTitle, szTemp );
65 WinSetWindowText (hDlg, szTitle);
66 }
67 }
68 if (PrfQueryProfileString (HINI_SYSTEMPROFILE,
69 pUniData->pszAppName,
70 KEY_INITIALIZATION,
71 NULL,
72 szTemp,
73 sizeof(szTemp)))
74 {
75 i = 0;
76 token = lprtok(szTemp,"#");
77 while (token != NULL)
78 {
79 switch(i)
80 {
81 case 0:
82 WinSetDlgItemText(hDlg,ID_PROGRAM,token);
83 case 1:
84 if (token[ strlen(token) - 1 ] == ';')
85 token[ strlen(token)-1 ] = '\0';
86 WinSetDlgItemText(hDlg,ID_PARAMETERS,token);
87 break;
88 case 2:
89 if (token[ strlen(token) - 1 ] == ';')
90 token[ strlen(token)-1 ] = '\0';
91 WinSetDlgItemText(hDlg,ID_DIRECTORY,token);
92 break;
93 }
94 i++;
95 token = lprtok(NULL,"#");
96 }
97 }
98 break;
99
100 case WM_COMMAND:
101 pUniData = (PUNIDATA)WinQueryWindowULong (hDlg, QWL_USER);
102 switch (SHORT1FROMMP(mp1))
103 {
104 case DID_OK:
105 sprintf(szDesc," ");
106 /* Program */
107 WinQueryDlgItemText (hDlg, ID_PROGRAM, sizeof(szTemp), szTemp );
108 strcat(pUniData->szSaveLprSetting,szTemp);
109 strcat(pUniData->szSaveLprSetting,"#");
110
111 if (strlen(szTemp) > 0) {
112 strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
113 strncat(szDesc, szTemp, STR_LEN_PORTDESC - 1);
114 }
115 /* strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
116 strncat(szDesc, szShareName, STR_LEN_PORTDESC - 1); */
117
118 /* Parameters */
119 WinQueryDlgItemText (hDlg, ID_PARAMETERS, sizeof(szTemp), szTemp );
120 strcat(pUniData->szSaveLprSetting,szTemp);
121 strcat(pUniData->szSaveLprSetting,"#");
122
123 if (strlen(szTemp) > 0) {
124 strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
125 strncat(szDesc, szTemp, STR_LEN_PORTDESC - 1);
126 }
127 /* strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
128 strncat(szDesc, szShareName, STR_LEN_PORTDESC - 1); */
129
130 /* Working directory */
131 WinQueryDlgItemText (hDlg, ID_DIRECTORY, sizeof(szTemp), szTemp );
132 strcat(pUniData->szSaveLprSetting,szTemp);
133 /* strcat(pUniData->szSaveLprSetting,"#"); */
134
135 /* if (strlen(szTemp) > 0) {
136 strncat(szShareName, "\\", STR_LEN_PORTDESC - 1);
137 strncat(szShareName, szTemp, STR_LEN_PORTDESC - 1);
138 } */
139 /* Username */
140/* WinQueryDlgItemText (hDlg, ID_USER, sizeof(szTemp), szTemp );
141 strcat(pUniData->szSaveLprSetting,"#");
142 strcat(pUniData->szSaveLprSetting,szTemp); */
143 /* Number of copies */
144/* WinQueryDlgItemText (hDlg, ID_COPIES, sizeof(szTemp), szTemp );
145 strcat(pUniData->szSaveLprSetting,"#");
146 strcat(pUniData->szSaveLprSetting,szTemp); */
147 /* Password - must be the last item! */
148/* WinQueryDlgItemText (hDlg, ID_PASSWORD, sizeof(szTemp), szTemp );
149 strcat(pUniData->szSaveLprSetting,"#");
150 strcpy(pwBuffer,szTemp);
151 encryptPassword(pwBuffer,szTemp);
152 strcat(pUniData->szSaveLprSetting,szTemp);
153 */
154 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
155 pUniData->pszAppName,
156 KEY_INITIALIZATION,
157 pUniData->szSaveLprSetting))
158 WinDismissDlg(hDlg, MBID_CANCEL);
159
160 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
161 APPNAME_PM_SPOOLER_PORT,
162 pUniData->pszPortName,
163 pUniData->szSaveLprSetting))
164 WinDismissDlg(hDlg, MBID_CANCEL);
165
166 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
167 pUniData->pszAppName,
168 KEY_DESCRIPTION,
169 szDesc ))
170 WinDismissDlg(hDlg, MBID_CANCEL);
171
172 WinDismissDlg(hDlg, TRUE);
173 break;
174 case DID_FIND:
175 // setup data
176 memset( &fd, 0, sizeof( fd));
177 fd.cbSize = sizeof( fd);
178 fd.fl = FDS_CENTER | FDS_HELPBUTTON | FDS_OPEN_DIALOG;
179 fd.pszTitle = "Find executable";
180
181 WinQueryDlgItemText (hDlg, ID_PROGRAM, sizeof(szTemp), szTemp );
182 if (strlen(szTemp) > 0) {
183 _splitpath(szTemp, szDrive, szDir, NULL, NULL);
184 strncat(szDrive, szDir, strlen(szDir) -1);
185 strcat(szDrive,"\\*");
186 strcpy( fd.szFullFile,szDrive);
187 }
188 else strcpy( fd.szFullFile, "C:\\*");
189
190 // launch dialog
191 fResult = WinFileDlg( HWND_DESKTOP, hDlg, &fd);
192 if (!fResult)
193 sprintf( szMessage, "error launching WinFileDlg\n");
194 else if (fd.lReturn == DID_OK) {
195 WinSetDlgItemText(hDlg,ID_PROGRAM,fd.szFullFile);
196 _splitpath(fd.szFullFile, szDrive, szDir, NULL, NULL);
197 strncat(szDrive, szDir, strlen(szDir) -1);
198 WinSetDlgItemText(hDlg,ID_DIRECTORY,szDrive);
199 }
200 else
201 sprintf( szMessage, "error occurred!\n");
202 break;
203 case DID_SETUPWIZARD:
204 // preliminary
205 WinDismissDlg(hDlg, TRUE);
206 sprintf(setupwiz,"unipdrcfg.exe");
207 rc = spawnlp(P_NOWAIT,setupwiz,setupwiz,pUniData->pszPortName,NULL);
208 // preliminary
209 WinDismissDlg(hDlg, TRUE);
210 break;
211 case DID_CANCEL:
212 WinDismissDlg(hDlg, MBID_CANCEL);
213 break;
214 }
215 break;
216 default:
217 return WinDefDlgProc(hDlg, msg, mp1, mp2) ;
218 break;
219 }
220return FALSE;
221}
222
223ULONG OpenUniPortDlg ( HAB hab,
224 HMODULE hModule,
225 PSZ pszPortName,
226 PSZ pszAppName )
227{
228 UNIDATA UniData;
229
230 memset (&UniData, 0, sizeof (UNIDATA));
231 UniData.hAB = hab;
232 UniData.hModule = hModule;
233 UniData.pszPortName = pszPortName;
234 UniData.pszAppName = pszAppName;
235
236 WinDlgBox (HWND_DESKTOP,
237 HWND_DESKTOP,
238 (PFNWP)CommDlg,
239 (HMODULE)hModule,
240 IDD_UNI,
241 &UniData);
242
243 return UniData.lfModified;
244}
245
246/*
247static ULONG _launchFileDlg( HWND hwnd, HWND hwndBubbleHelp)
248
249{
250 BOOL ulResult = MBID_ERROR;
251 BOOL fResult;
252 FILEDLG fd;
253
254 CHAR szMessage[ _MAX_PATH];
255 PSZ pszButtonCode;
256
257// stop bubble help
258WtkDeactivateBubbleHelp( hwndBubbleHelp);
259
260do
261 {
262 // setup data
263 memset( &fd, 0, sizeof( fd));
264 fd.cbSize = sizeof( fd);
265 fd.fl = FDS_CENTER | FDS_HELPBUTTON | FDS_OPEN_DIALOG;
266 fd.pszTitle = "System File test dialog";
267 strcpy( fd.szFullFile, "C:\\*");
268
269 // launch dialog
270 fResult = WinFileDlg( HWND_DESKTOP, hwnd, &fd);
271
272 if (!fResult)
273 sprintf( szMessage, "error launching WinFileDlg\n");
274 else if (fd.lReturn == DID_OK)
275 sprintf( szMessage, "file is: %s\n", fd.szFullFile);
276 else
277 sprintf( szMessage, "error occurred!\n");
278
279 switch (fd.lReturn)
280 {
281 case DID_OK: pszButtonCode = "(DID_OK)"; break;
282 case DID_CANCEL: pszButtonCode = "(DID_CANCEL)"; break;
283 case DID_ERROR: pszButtonCode = "(DID_ERROR)"; break;
284 default: pszButtonCode = ""; break;
285 }
286
287 sprintf( &szMessage[ strlen( szMessage)],
288 "\015\015"
289 "return code is: %u %s\015"
290 "WinFileDlg error source code is: %u\015",
291 fd.lReturn, pszButtonCode, fd.lSRC);
292
293 WinMessageBox( HWND_DESKTOP, hwnd, szMessage, "File Dialog Result",
294 IDDLG_MSGBOX_RESULTFILEDLG, MB_MOVEABLE | MB_OK | MB_HELP);
295
296 // on error return error code
297 if (!fResult)
298 break;
299
300 // hand over result
301 ulResult = fd.lReturn;
302
303 } while (FALSE);
304
305
306// restart bubble help
307WtkActivateBubbleHelp( hwndBubbleHelp);
308return ulResult;
309}
310 */
Note: See TracBrowser for help on using the repository browser.