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

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

PS header settings option code

File size: 8.0 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 PUCHAR ON = "1";
39
40 switch (msg)
41 {
42 case WM_INITDLG:
43// WinSendDlgItemMsg(hDlg,ID_BINARY,BM_SETCHECK,MPFROM2SHORT(1,0),NULL);
44 WinSendDlgItemMsg(hDlg,ID_PROGRAM, EM_SETTEXTLIMIT, MPFROMSHORT(128),NULL);
45 WinSendDlgItemMsg(hDlg,ID_PARAMETERS,EM_SETTEXTLIMIT, MPFROMSHORT(128),NULL);
46 WinSendDlgItemMsg(hDlg,ID_DIRECTORY, EM_SETTEXTLIMIT, MPFROMSHORT(128),NULL);
47
48 pUniData = (PUNIDATA)mp2;
49
50 WinSetWindowULong (hDlg, QWL_USER, (ULONG)pUniData);
51 if (PrfQueryProfileString (HINI_SYSTEMPROFILE,
52 pUniData->pszAppName,
53 KEY_DESCRIPTION,
54 NULL,
55 (PSZ)szDesc,
56 STR_LEN_PORTDESC))
57 {
58 WinSetWindowText (WinWindowFromID (hDlg, (USHORT)IDD_UNI),szDesc);
59 rc = WinLoadString(pUniData->hAB,
60 pUniData->hModule,
61 PDR_ID_PROPERTIES,
62 STR_LEN_PORTDESC, szTemp);
63 if (rc) {
64 strcpy ( szTitle, pUniData->pszPortName );
65 strcat ( szTitle, " - " );
66 strcat ( szTitle, szTemp );
67 WinSetWindowText (hDlg, szTitle);
68 }
69 }
70 if (PrfQueryProfileString (HINI_SYSTEMPROFILE,
71 pUniData->pszAppName,
72 KEY_INITIALIZATION,
73 NULL,
74 szTemp,
75 sizeof(szTemp)))
76 {
77 i = 0;
78 token = lprtok(szTemp,"#");
79 while (token != NULL)
80 {
81 switch(i)
82 {
83 case 0:
84 WinSetDlgItemText(hDlg,ID_PROGRAM,token);
85 case 1:
86 if (token[ strlen(token)-1 ] == ';')
87 token[ strlen(token)-1 ] = '\0';
88 WinSetDlgItemText(hDlg,ID_PARAMETERS,token);
89 break;
90 case 2:
91 if (token[ strlen(token)-1 ] == ';')
92 token[ strlen(token)-1 ] = '\0';
93 WinSetDlgItemText(hDlg,ID_DIRECTORY,token);
94 break;
95 case 3:
96 if (token[ strlen(token)-1 ] == ';')
97 token[ strlen(token)-1 ] = '\0';
98
99 if (strncmp(token, ON ,1) == 0) {
100 WinSendDlgItemMsg(hDlg,ID_ADDPS,BM_SETCHECK,MPFROMSHORT(1),NULL);
101 }
102 else {
103 WinSendDlgItemMsg(hDlg,ID_ADDPS,BM_SETCHECK,MPFROMSHORT(0),NULL);
104 }
105 break;
106 }
107 i++;
108 token = lprtok(NULL,"#");
109 }
110 }
111 break;
112
113 case WM_COMMAND:
114 pUniData = (PUNIDATA)WinQueryWindowULong (hDlg, QWL_USER);
115 switch (SHORT1FROMMP(mp1))
116 {
117 case DID_OK:
118 sprintf(szDesc," ");
119 /* Program */
120 WinQueryDlgItemText (hDlg, ID_PROGRAM, sizeof(szTemp), szTemp );
121 strcat(pUniData->szSaveLprSetting,szTemp);
122 strcat(pUniData->szSaveLprSetting,"#");
123
124 if (strlen(szTemp) > 0) {
125 strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
126 strncat(szDesc, szTemp, STR_LEN_PORTDESC - 1);
127 }
128 /* strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
129 strncat(szDesc, szShareName, STR_LEN_PORTDESC - 1); */
130
131 /* Parameters */
132 WinQueryDlgItemText (hDlg, ID_PARAMETERS, sizeof(szTemp), szTemp );
133 strcat(pUniData->szSaveLprSetting,szTemp);
134 strcat(pUniData->szSaveLprSetting,"#");
135
136 if (strlen(szTemp) > 0) {
137 strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
138 strncat(szDesc, szTemp, STR_LEN_PORTDESC - 1);
139 }
140 /* strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
141 strncat(szDesc, szShareName, STR_LEN_PORTDESC - 1); */
142
143 /* Working directory */
144 WinQueryDlgItemText (hDlg, ID_DIRECTORY, sizeof(szTemp), szTemp );
145 strcat(pUniData->szSaveLprSetting,szTemp);
146 strcat(pUniData->szSaveLprSetting,"#");
147
148 /* if (strlen(szTemp) > 0) {
149 strncat(szShareName, "\\", STR_LEN_PORTDESC - 1);
150 strncat(szShareName, szTemp, STR_LEN_PORTDESC - 1);
151 } */
152
153 /* Add PS header */
154 if ((int) WinSendDlgItemMsg(hDlg,ID_ADDPS,BM_QUERYCHECK,NULL,NULL) == 1)
155 strcat(pUniData->szSaveLprSetting,"1");
156 else strcat(pUniData->szSaveLprSetting,"0");
157
158 /* strcat(pUniData->szSaveLprSetting,"#"); */
159
160 /* Username */
161/* WinQueryDlgItemText (hDlg, ID_USER, sizeof(szTemp), szTemp );
162 strcat(pUniData->szSaveLprSetting,"#");
163 strcat(pUniData->szSaveLprSetting,szTemp); */
164 /* Number of copies */
165/* WinQueryDlgItemText (hDlg, ID_COPIES, sizeof(szTemp), szTemp );
166 strcat(pUniData->szSaveLprSetting,"#");
167 strcat(pUniData->szSaveLprSetting,szTemp); */
168 /* Password - must be the last item! */
169/* WinQueryDlgItemText (hDlg, ID_PASSWORD, sizeof(szTemp), szTemp );
170 strcat(pUniData->szSaveLprSetting,"#");
171 strcpy(pwBuffer,szTemp);
172 encryptPassword(pwBuffer,szTemp);
173 strcat(pUniData->szSaveLprSetting,szTemp);
174 */
175 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
176 pUniData->pszAppName,
177 KEY_INITIALIZATION,
178 pUniData->szSaveLprSetting))
179 WinDismissDlg(hDlg, MBID_CANCEL);
180
181 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
182 APPNAME_PM_SPOOLER_PORT,
183 pUniData->pszPortName,
184 pUniData->szSaveLprSetting))
185 WinDismissDlg(hDlg, MBID_CANCEL);
186
187 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
188 pUniData->pszAppName,
189 KEY_DESCRIPTION,
190 szDesc ))
191 WinDismissDlg(hDlg, MBID_CANCEL);
192
193 WinDismissDlg(hDlg, TRUE);
194 break;
195 case DID_FIND:
196 // setup data
197 memset( &fd, 0, sizeof( fd));
198 fd.cbSize = sizeof( fd);
199 fd.fl = FDS_CENTER | FDS_HELPBUTTON | FDS_OPEN_DIALOG;
200 fd.pszTitle = "Find executable";
201
202 WinQueryDlgItemText (hDlg, ID_PROGRAM, sizeof(szTemp), szTemp );
203 if (strlen(szTemp) > 0) {
204 _splitpath(szTemp, szDrive, szDir, NULL, NULL);
205 strncat(szDrive, szDir, strlen(szDir) -1);
206 strcat(szDrive,"\\*");
207 strcpy( fd.szFullFile,szDrive);
208 }
209 else strcpy( fd.szFullFile, "C:\\*");
210
211 // launch dialog
212 fResult = WinFileDlg( HWND_DESKTOP, hDlg, &fd);
213 if (!fResult)
214 sprintf( szMessage, "error launching WinFileDlg\n");
215 else if (fd.lReturn == DID_OK) {
216 WinSetDlgItemText(hDlg,ID_PROGRAM,fd.szFullFile);
217 _splitpath(fd.szFullFile, szDrive, szDir, NULL, NULL);
218 strncat(szDrive, szDir, strlen(szDir) -1);
219 WinSetDlgItemText(hDlg,ID_DIRECTORY,szDrive);
220 }
221 else
222 sprintf( szMessage, "error occurred!\n");
223 break;
224 case DID_SETUPWIZARD:
225 // preliminary
226 WinDismissDlg(hDlg, TRUE);
227 sprintf(setupwiz,"unipdrcfg.exe");
228 rc = spawnlp(P_NOWAIT,setupwiz,setupwiz,pUniData->pszPortName,NULL);
229 // preliminary
230 WinDismissDlg(hDlg, TRUE);
231 break;
232 case DID_CANCEL:
233 WinDismissDlg(hDlg, MBID_CANCEL);
234 break;
235 }
236 break;
237 default:
238 return WinDefDlgProc(hDlg, msg, mp1, mp2) ;
239 break;
240 }
241return FALSE;
242}
243
244ULONG OpenUniPortDlg ( HAB hab,
245 HMODULE hModule,
246 PSZ pszPortName,
247 PSZ pszAppName )
248{
249 UNIDATA UniData;
250
251 memset (&UniData, 0, sizeof (UNIDATA));
252 UniData.hAB = hab;
253 UniData.hModule = hModule;
254 UniData.pszPortName = pszPortName;
255 UniData.pszAppName = pszAppName;
256
257 WinDlgBox (HWND_DESKTOP,
258 HWND_DESKTOP,
259 (PFNWP)CommDlg,
260 (HMODULE)hModule,
261 IDD_UNI,
262 &UniData);
263
264 return UniData.lfModified;
265}
Note: See TracBrowser for help on using the repository browser.