📄 gvpprn.c
字号:
if (*s != ' ')
*d++ = *s;
s++;
}
*d = '\0';
}
char editpropname[MAXSTR];
/* dialog for adding for editing properties */
MRESULT EXPENTRY
EditPropDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
static char device[MAXSTR];
switch (msg) {
case WM_INITDLG:
strcpy(device, (char *)mp2); /* initialise device name */
WinSendMsg( WinWindowFromID(hwnd, EDITPROP_NAME),
EM_SETTEXTLIMIT, MPFROM2SHORT(MAXSTR, 0), MPFROMLONG(0) );
WinSendMsg( WinWindowFromID(hwnd, EDITPROP_VALUE),
EM_SETTEXTLIMIT, MPFROM2SHORT(MAXSTR, 0), MPFROMLONG(0) );
if (*editpropname) {
PROFILE *prf;
char section[MAXSTR];
char buf[MAXSTR];
if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
if (*editpropname == 's')
WinSendMsg( WinWindowFromID(hwnd, EDITPROP_STRING),
BM_SETCHECK, MPFROMSHORT(1), MPFROMLONG(0));
else
WinSendMsg( WinWindowFromID(hwnd, EDITPROP_NUMBER),
BM_SETCHECK, MPFROMSHORT(1), MPFROMLONG(0));
WinSetWindowText(WinWindowFromID(hwnd, EDITPROP_NAME), (PBYTE)(editpropname+1));
strcpy(section, device);
strcat(section, " values");
profile_read_string(prf, section, editpropname, "", buf, sizeof(buf)-2);
WinSetWindowText(WinWindowFromID(hwnd, EDITPROP_VALUE), (PCSZ)buf);
profile_close(prf);
}
}
else {
WinSendMsg( WinWindowFromID(hwnd, EDITPROP_NUMBER),
BM_SETCHECK, MPFROMSHORT(1), MPFROMLONG(0));
}
break;
case WM_CONTROL:
break;
case WM_COMMAND:
switch(LOUSHORT(mp1)) {
case ID_HELP:
get_help();
return (MRESULT)TRUE;
case EDITPROP_DEL:
{PROFILE *prf;
/* need to reopen profile file - this is wasteful */
if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
char name[MAXSTR];
char section[MAXSTR];
if (WinSendMsg(WinWindowFromID(hwnd, EDITPROP_STRING), BM_QUERYCHECK,
MPFROMLONG(0), MPFROMLONG(0)) > 0) {
strcpy(name, "s");
}
else
strcpy(name, "d");
WinQueryWindowText(WinWindowFromID(hwnd, EDITPROP_NAME), sizeof(name)-2, (PBYTE)(name+1));
strip_spaces(name);
if (strlen(name)>1) {
strcpy(section, device);
strcat(section, " values");
profile_write_string(prf, section, name, NULL);
profile_write_string(prf, device, name, NULL);
}
profile_close(prf);
}
}
WinDismissDlg(hwnd, DID_OK);
return (MRESULT)TRUE;
case DID_OK:
{PROFILE *prf;
/* need to reopen profile file - this is wasteful */
if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
char name[MAXSTR];
char value[MAXSTR];
char section[MAXSTR];
if (WinSendMsg(WinWindowFromID(hwnd, EDITPROP_STRING), BM_QUERYCHECK,
MPFROMLONG(0), MPFROMLONG(0)) > 0) {
strcpy(name, "s");
}
else
strcpy(name, "d");
WinQueryWindowText(WinWindowFromID(hwnd, EDITPROP_NAME), sizeof(name)-2, (PBYTE)(name+1));
WinQueryWindowText(WinWindowFromID(hwnd, EDITPROP_VALUE), sizeof(value), (PBYTE)value);
strip_spaces(name);
strip_spaces(value);
if ((strlen(name)>1) && strlen(value)) {
strcpy(section, device);
strcat(section, " values");
profile_write_string(prf, section, name, value);
strtok(value, ",");
profile_write_string(prf, device, name, value);
}
profile_close(prf);
}
}
WinDismissDlg(hwnd, DID_OK);
return (MRESULT)TRUE;
case DID_CANCEL:
WinDismissDlg(hwnd, DID_CANCEL);
return (MRESULT)TRUE;
}
break;
}
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
/* dialog box for selecting printer properties */
MRESULT EXPENTRY
PropDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
char buf[128];
int iprop;
int ivalue;
char *p;
char *value;
static char notdef[128];
static char device[MAXSTR]; /* contains printer device name */
static struct prop_item_s* propitem;
char section[MAXSTR];
switch (msg) {
case WM_INITDLG:
strcpy(device, (char *)mp2); /* initialise device name */
load_string(IDS_NOTDEFTAG, notdef, sizeof(notdef));
propitem = get_properties(device);
if (propitem == (struct prop_item_s *)NULL) {
WinDismissDlg(hwnd, FALSE);
return (MRESULT)TRUE;
}
WinSendMsg(WinWindowFromID(hwnd, PROP_NAME), LM_DELETEALL, (MPARAM)0, (MPARAM)0);
WinSendMsg(WinWindowFromID(hwnd, PROP_VALUE), LM_DELETEALL, (MPARAM)0, (MPARAM)0);
WinSetWindowText(WinWindowFromID(hwnd, PROP_NAME), (PCSZ)"");
WinSetWindowText(WinWindowFromID(hwnd, PROP_VALUE), (PCSZ)"");
for (iprop=0; propitem[iprop].name[0]; iprop++) {
WinSendMsg( WinWindowFromID(hwnd, PROP_NAME),
LM_INSERTITEM, MPFROMLONG(LIT_END), MPFROMP(propitem[iprop].name+1));
}
WinEnableWindow(WinWindowFromID(hwnd, PROP_NAME), (iprop != 0));
WinEnableWindow(WinWindowFromID(hwnd, PROP_VALUE), (iprop != 0));
WinEnableWindow(WinWindowFromID(hwnd, PROP_EDIT), (iprop != 0));
WinSendMsg( WinWindowFromID(hwnd, PROP_NAME),
LM_SELECTITEM, MPFROMLONG(0), MPFROMLONG(TRUE) );
/*
WinSendMsg(hwnd, WM_CONTROL, MPFROM2SHORT(PROP_NAME, CBN_LBSELECT),
MPFROMLONG(WinWindowFromID(hwnd, PROP_NAME)));
*/
{
PROFILE *prf;
strcpy(section, device);
strcat(section, " Options");
/* need to reopen profile file - this is wasteful */
if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
profile_read_string(prf, section, "Xoffset", "0", buf, sizeof(buf)-2);
WinSendMsg( WinWindowFromID(hwnd, PROP_XOFFSET),
EM_SETTEXTLIMIT, MPFROM2SHORT(sizeof(buf)-2, 0), MPFROMLONG(0) );
WinSetWindowText(WinWindowFromID(hwnd, PROP_XOFFSET), (PCSZ)buf);
profile_read_string(prf, section, "Yoffset", "0", buf, sizeof(buf)-2);
WinSendMsg( WinWindowFromID(hwnd, PROP_YOFFSET),
EM_SETTEXTLIMIT, MPFROM2SHORT(sizeof(buf)-2, 0), MPFROMLONG(0) );
WinSetWindowText(WinWindowFromID(hwnd, PROP_YOFFSET), (PCSZ)buf);
profile_close(prf);
}
}
break;
case WM_CONTROL:
if (mp1 == MPFROM2SHORT(PROP_NAME, CBN_LBSELECT)) {
iprop = (int)WinSendMsg(WinWindowFromID(hwnd, PROP_NAME), LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), (MPARAM)0);
if (iprop == LIT_NONE)
return FALSE;
/* now look up entry in gsview.ini */
/* and update PROP_VALUE list box */
strcpy(section, device);
strcat(section, " values");
{PROFILE *prf;
/* need to reopen profile file - this is wasteful */
if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
profile_read_string(prf, section, propitem[iprop].name, "", buf, sizeof(buf)-2);
profile_close(prf);
}
else
buf[0] = '\0';
}
while ((*buf) && (buf[strlen(buf)-1]==' '))
buf[strlen(buf)-1] = '\0'; /* remove trailing spaces */
buf[strlen(buf)+1] = '\0'; /* put double NULL at end */
WinSendMsg(WinWindowFromID(hwnd, PROP_VALUE), LM_DELETEALL, (MPARAM)0, (MPARAM)0);
WinSendMsg( WinWindowFromID(hwnd, PROP_VALUE),
LM_INSERTITEM, MPFROMLONG(LIT_END), MPFROMP(notdef) );
p = buf;
if (*p != '\0') {
WinEnableWindow(WinWindowFromID(hwnd, PROP_VALUE), TRUE);
while (*p!='\0') {
value = p;
while ((*p!='\0') && (*p!=','))
p++;
*p++ = '\0';
WinSendMsg( WinWindowFromID(hwnd, PROP_VALUE),
LM_INSERTITEM, MPFROMLONG(LIT_END), MPFROMP(value) );
}
}
strcpy(buf, propitem[iprop].value);
if (strcmp(buf, not_defined)==0)
strcpy(buf, notdef);
iprop = (int)WinSendMsg( WinWindowFromID(hwnd, PROP_VALUE),
LM_SEARCHSTRING, MPFROM2SHORT(LSS_CASESENSITIVE, LIT_FIRST),
MPFROMP(buf) );
if ((iprop == LIT_ERROR) || (iprop == LIT_NONE)) {
iprop = 0;
WinSetWindowText( WinWindowFromID(hwnd, PROP_VALUE), (PCSZ)buf);
}
else {
WinSendMsg( WinWindowFromID(hwnd, PROP_VALUE),
LM_SELECTITEM, MPFROMLONG(iprop), MPFROMLONG(TRUE) );
}
}
if (mp1 == MPFROM2SHORT(PROP_VALUE, CBN_LBSELECT)) {
iprop = (int)WinSendMsg(WinWindowFromID(hwnd, PROP_NAME), LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), (MPARAM)0);
if (iprop == LIT_NONE)
return FALSE;
ivalue = (int)WinSendMsg(WinWindowFromID(hwnd, PROP_VALUE), LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), (MPARAM)0);
if (ivalue == LIT_NONE)
return FALSE;
WinSendMsg(WinWindowFromID(hwnd, PROP_VALUE), LM_QUERYITEMTEXT,
MPFROM2SHORT(ivalue, sizeof(propitem->value)),
MPFROMP(propitem[iprop].value));
if (strcmp(propitem[iprop].value, notdef)==0)
strcpy(propitem[iprop].value, not_defined);
}
if (mp1 == MPFROM2SHORT(PROP_VALUE, CBN_EFCHANGE)) {
iprop = (int)WinSendMsg(WinWindowFromID(hwnd, PROP_NAME), LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), (MPARAM)0);
if (iprop == LIT_NONE)
return FALSE;
WinQueryWindowText(WinWindowFromID(hwnd, PROP_VALUE),
sizeof(propitem->value), (PBYTE)(propitem[iprop].value));
if (strcmp(propitem[iprop].value, notdef)==0)
strcpy(propitem[iprop].value, not_defined);
}
break;
case WM_COMMAND:
switch(LOUSHORT(mp1)) {
case PROP_EDIT:
nHelpTopic = IDS_TOPICEDITPROP;
iprop = (int)WinSendMsg(WinWindowFromID(hwnd, PROP_NAME), LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), (MPARAM)0);
editpropname[0] = '\0';
if (iprop != LIT_NONE)
strcpy(editpropname, propitem[iprop].name);
WinDlgBox(HWND_DESKTOP, hwnd, EditPropDlgProc, hlanguage, IDD_EDITPROP, device);
free((char *)propitem);
WinSendMsg(hwnd, WM_INITDLG, MPFROMLONG(hwnd), MPFROMP(device));
nHelpTopic = IDS_TOPICPROP;
return (MRESULT)TRUE;
case PROP_NEW:
nHelpTopic = IDS_TOPICEDITPROP;
editpropname[0] = '\0';
WinDlgBox(HWND_DESKTOP, hwnd, EditPropDlgProc, hlanguage, IDD_EDITPROP, device);
free((char *)propitem);
WinSendMsg(hwnd, WM_INITDLG, MPFROMLONG(hwnd), MPFROMP(device));
nHelpTopic = IDS_TOPICPROP;
return (MRESULT)TRUE;
case ID_HELP:
get_help();
return (MRESULT)TRUE;
case DID_OK:
{PROFILE *prf;
/* need to reopen profile file - this is wasteful */
if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
for (iprop=0; propitem[iprop].name[0]; iprop++) {
profile_write_string(prf, device, propitem[iprop].name, propitem[iprop].value);
}
strcpy(section, device);
strcat(section, " Options");
WinQueryWindowText(WinWindowFromID(hwnd, PROP_XOFFSET), sizeof(buf)-2, (PBYTE)(buf));
profile_write_string(prf, section, "Xoffset", buf);
WinQueryWindowText(WinWindowFromID(hwnd, PROP_YOFFSET), sizeof(buf)-2, (PBYTE)(buf));
profile_write_string(prf, section, "Yoffset", buf);
profile_close(prf);
}
}
free((char *)propitem);
WinDismissDlg(hwnd, DID_OK);
return (MRESULT)TRUE;
case DID_CANCEL:
free((char *)propitem);
WinDismissDlg(hwnd, DID_CANCEL);
return (MRESULT)TRUE;
}
break;
}
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
unsigned char *
GetUPPname(HWND hwnd, unsigned char *uppname, int upplen)
{
unsigned char *p, *q;
uppname[0] = '\0';
WinQueryWindowText(WinWindowFromID(WinQueryWindow(hwnd, QW_OWNER),
DEVICE_OPTIONS), upplen, uppname);
p = uppname;
if (p[0] == '"') {
/* remove quotes around configuration file */
p++;
q = (unsigned char *)strrchr((char *)p, '"');
if (q != NULL)
*q = '\0';
}
if (p[0] == '@')
p++;
if (strlen((char *)p))
memmove(uppname, p, strlen((char *)p)+1);
return uppname;
}
MRESULT EXPENTRY
UniDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
static char *ubuf;
BYTE uppname[MAXSTR]; /* contains printer device name */
int i;
switch (msg) {
case WM_INITDLG:
ubuf = NULL;
/* Delay initialization of the list box until
* after it is displayed, because searching for
* configuration files takes several seconds.
*/
load_string(IDS_WAIT, (char *)uppname, sizeof(uppname));
WinSendMsg(WinWindowFromID(hwnd, UPP_LIST), LM_DELETEALL,
(MPARAM)0, (MPARAM)0);
WinSendMsg( WinWindowFromID(hwnd, UPP_LIST), LM_INSERTITEM,
MPFROMLONG(LIT_END), MPFROMP(uppname) );
WinEnableWindow(WinWindowFromID(hwnd, UPP_LIST), FALSE);
uppname[0] = uppname[1] = '\0';
GetUPPname(hwnd, uppname, sizeof(uppname));
WinSetWindowText(WinWindowFromID(hwnd, UPP_NAME), uppname);
WinPostMsg(hwnd, WM_COMMAND, (MPARAM)WM_USER,
MPFROM2SHORT(CMDSRC_OTHER, TRUE));
return (MRESULT)TRUE;
case WM_CONTROL:
if (mp1 == MPFROM2SHORT(UPP_LIST, LN_SELECT)) {
char dname[MAXSTR];
if (ubuf == NULL)
return FALSE;
i = (int)WinSendMsg(WinWindowFromID(hwnd, UPP_LIST),
LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), (MPARAM)0);
if (i == LIT_NONE)
return FALSE;
WinSendMsg(WinWindowFromID(hwnd, UPP_LIST), LM_QUERYITEMTEXT,
MPFROM2SHORT(i, sizeof(dname)), MPFROMP(dname));
WinSetWindowText(WinWindowFromID(hwnd, UPP_NAME),
(PCSZ)uppmodel_to_name((char *)ubuf, (char *)dname));
}
if (mp1 == MPFROM2SHORT(UPP_LIST, LN_ENTER)) {
WinPostMsg(hwnd, WM_COMMAND, (MPARAM)IDOK,
MPFROM2SHORT(CMDSRC_OTHER, TRUE));
}
break;
case WM_COMMAND:
switch(LOUSHORT(mp1)) {
case WM_USER:
/* time consuming initialization */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -