source: branches/1.0/src/uni.c

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

PS header settings option code

File size: 8.0 KB
RevLine 
[1]1#define LINT_ARGS /* argument checking enabled */
2
3
4int acrtused=1; /* Define variable to say this is a DLL */
5
[26]6#include "uni.h"
[1]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>
[29]14#include <process.h>
[23]15#include "utils.h"
[1]16
17MRESULT EXPENTRY CommDlg( HWND hDlg, USHORT msg, MPARAM mp1, MPARAM mp2 )
18{
[26]19 PUNIDATA pUniData;
[1]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];
[29]26 CHAR setupwiz[256];
27 CHAR setupparms[256];
[1]28 USHORT i;
29 ULONG rc = 0;
30 PUCHAR token;
[29]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;
[32]38 PUCHAR ON = "1";
[1]39
40 switch (msg)
41 {
42 case WM_INITDLG:
[11]43// WinSendDlgItemMsg(hDlg,ID_BINARY,BM_SETCHECK,MPFROM2SHORT(1,0),NULL);
[29]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
[26]48 pUniData = (PUNIDATA)mp2;
[32]49
[26]50 WinSetWindowULong (hDlg, QWL_USER, (ULONG)pUniData);
[1]51 if (PrfQueryProfileString (HINI_SYSTEMPROFILE,
[26]52 pUniData->pszAppName,
[1]53 KEY_DESCRIPTION,
54 NULL,
55 (PSZ)szDesc,
56 STR_LEN_PORTDESC))
57 {
58 WinSetWindowText (WinWindowFromID (hDlg, (USHORT)IDD_UNI),szDesc);
[26]59 rc = WinLoadString(pUniData->hAB,
60 pUniData->hModule,
[1]61 PDR_ID_PROPERTIES,
62 STR_LEN_PORTDESC, szTemp);
63 if (rc) {
[26]64 strcpy ( szTitle, pUniData->pszPortName );
[1]65 strcat ( szTitle, " - " );
66 strcat ( szTitle, szTemp );
67 WinSetWindowText (hDlg, szTitle);
68 }
69 }
70 if (PrfQueryProfileString (HINI_SYSTEMPROFILE,
[26]71 pUniData->pszAppName,
[1]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:
[11]84 WinSetDlgItemText(hDlg,ID_PROGRAM,token);
[1]85 case 1:
[32]86 if (token[ strlen(token)-1 ] == ';')
[1]87 token[ strlen(token)-1 ] = '\0';
[11]88 WinSetDlgItemText(hDlg,ID_PARAMETERS,token);
[1]89 break;
[20]90 case 2:
[32]91 if (token[ strlen(token)-1 ] == ';')
[20]92 token[ strlen(token)-1 ] = '\0';
93 WinSetDlgItemText(hDlg,ID_DIRECTORY,token);
94 break;
[32]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;
[1]106 }
107 i++;
108 token = lprtok(NULL,"#");
109 }
110 }
111 break;
112
113 case WM_COMMAND:
[26]114 pUniData = (PUNIDATA)WinQueryWindowULong (hDlg, QWL_USER);
[1]115 switch (SHORT1FROMMP(mp1))
116 {
117 case DID_OK:
[19]118 sprintf(szDesc," ");
[11]119 /* Program */
120 WinQueryDlgItemText (hDlg, ID_PROGRAM, sizeof(szTemp), szTemp );
[26]121 strcat(pUniData->szSaveLprSetting,szTemp);
122 strcat(pUniData->szSaveLprSetting,"#");
[16]123
[19]124 if (strlen(szTemp) > 0) {
125 strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
[11]126 strncat(szDesc, szTemp, STR_LEN_PORTDESC - 1);
127 }
[20]128 /* strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
129 strncat(szDesc, szShareName, STR_LEN_PORTDESC - 1); */
[11]130
131 /* Parameters */
132 WinQueryDlgItemText (hDlg, ID_PARAMETERS, sizeof(szTemp), szTemp );
[26]133 strcat(pUniData->szSaveLprSetting,szTemp);
134 strcat(pUniData->szSaveLprSetting,"#");
[20]135
[19]136 if (strlen(szTemp) > 0) {
[20]137 strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
138 strncat(szDesc, szTemp, STR_LEN_PORTDESC - 1);
[19]139 }
[20]140 /* strncat(szDesc, " ", STR_LEN_PORTDESC - 1);
141 strncat(szDesc, szShareName, STR_LEN_PORTDESC - 1); */
[11]142
[20]143 /* Working directory */
144 WinQueryDlgItemText (hDlg, ID_DIRECTORY, sizeof(szTemp), szTemp );
[26]145 strcat(pUniData->szSaveLprSetting,szTemp);
[32]146 strcat(pUniData->szSaveLprSetting,"#");
[20]147
148 /* if (strlen(szTemp) > 0) {
[1]149 strncat(szShareName, "\\", STR_LEN_PORTDESC - 1);
150 strncat(szShareName, szTemp, STR_LEN_PORTDESC - 1);
[11]151 } */
[32]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
[1]160 /* Username */
[11]161/* WinQueryDlgItemText (hDlg, ID_USER, sizeof(szTemp), szTemp );
[26]162 strcat(pUniData->szSaveLprSetting,"#");
163 strcat(pUniData->szSaveLprSetting,szTemp); */
[1]164 /* Number of copies */
[11]165/* WinQueryDlgItemText (hDlg, ID_COPIES, sizeof(szTemp), szTemp );
[26]166 strcat(pUniData->szSaveLprSetting,"#");
167 strcat(pUniData->szSaveLprSetting,szTemp); */
[1]168 /* Password - must be the last item! */
[11]169/* WinQueryDlgItemText (hDlg, ID_PASSWORD, sizeof(szTemp), szTemp );
[26]170 strcat(pUniData->szSaveLprSetting,"#");
[1]171 strcpy(pwBuffer,szTemp);
172 encryptPassword(pwBuffer,szTemp);
[26]173 strcat(pUniData->szSaveLprSetting,szTemp);
[11]174 */
[1]175 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
[26]176 pUniData->pszAppName,
[1]177 KEY_INITIALIZATION,
[26]178 pUniData->szSaveLprSetting))
[1]179 WinDismissDlg(hDlg, MBID_CANCEL);
180
181 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
182 APPNAME_PM_SPOOLER_PORT,
[26]183 pUniData->pszPortName,
184 pUniData->szSaveLprSetting))
[1]185 WinDismissDlg(hDlg, MBID_CANCEL);
186
187 if (!PrfWriteProfileString (HINI_SYSTEMPROFILE,
[26]188 pUniData->pszAppName,
[1]189 KEY_DESCRIPTION,
190 szDesc ))
191 WinDismissDlg(hDlg, MBID_CANCEL);
192
193 WinDismissDlg(hDlg, TRUE);
194 break;
[29]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;
[1]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
[26]244ULONG OpenUniPortDlg ( HAB hab,
[1]245 HMODULE hModule,
246 PSZ pszPortName,
247 PSZ pszAppName )
248{
[26]249 UNIDATA UniData;
[1]250
[26]251 memset (&UniData, 0, sizeof (UNIDATA));
252 UniData.hAB = hab;
253 UniData.hModule = hModule;
254 UniData.pszPortName = pszPortName;
255 UniData.pszAppName = pszAppName;
[1]256
257 WinDlgBox (HWND_DESKTOP,
258 HWND_DESKTOP,
259 (PFNWP)CommDlg,
260 (HMODULE)hModule,
261 IDD_UNI,
[26]262 &UniData);
[1]263
[26]264 return UniData.lfModified;
[1]265}
Note: See TracBrowser for help on using the repository browser.