summaryrefslogtreecommitdiff
path: root/Build/source/texk/windvi/wincfg.c
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-17 21:41:51 +0000
committerKarl Berry <karl@freefriends.org>2006-01-17 21:41:51 +0000
commit487ca4806cc046076293cf6cc5fbba0db282bac7 (patch)
tree847b412ab5158dd7bdd7ed7e5a4cc3fbca94be32 /Build/source/texk/windvi/wincfg.c
parenta3d3111bfe26b8e5f5bc6049dfb2a4ca2edc7881 (diff)
texk 1
git-svn-id: svn://tug.org/texlive/trunk@1485 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/windvi/wincfg.c')
-rw-r--r--Build/source/texk/windvi/wincfg.c667
1 files changed, 667 insertions, 0 deletions
diff --git a/Build/source/texk/windvi/wincfg.c b/Build/source/texk/windvi/wincfg.c
new file mode 100644
index 00000000000..dbafc75845a
--- /dev/null
+++ b/Build/source/texk/windvi/wincfg.c
@@ -0,0 +1,667 @@
+/*
+ Desc: This has to manage the property sheet for WinDvi configuration.
+ */
+
+#include "wingui.h"
+#include <prsht.h>
+#include "xdvi-config.h"
+#include "mfmodes.h"
+
+HWND hwndPSheet;
+
+/*
+ DVI File Configuration Dialog.
+ */
+LRESULT CALLBACK DviConfigDlgProc(HWND, UINT, WPARAM, LPARAM);
+LRESULT MsgDviConfigInit(HWND, UINT, WPARAM, LPARAM);
+LRESULT MsgDviConfigCommand(HWND, UINT, WPARAM, LPARAM);
+LRESULT MsgDviConfigNotify(HWND, UINT, WPARAM, LPARAM);
+LRESULT CmdDviConfigOK(HWND, WORD, WORD, HWND);
+LRESULT CmdDviConfigCancel(HWND, WORD, WORD, HWND);
+
+/* DviConfig dialog message table definition. */
+MSD rgmsdDviConfig[] =
+{
+ {WM_COMMAND, MsgDviConfigCommand},
+ {WM_INITDIALOG, MsgDviConfigInit},
+ {WM_NOTIFY, MsgDviConfigNotify}
+};
+
+MSDI msdiDviConfig =
+{
+ sizeof(rgmsdDviConfig) / sizeof(MSD),
+ rgmsdDviConfig,
+ edwpNone
+};
+
+/* DviConfig dialog command table definition. */
+CMD rgcmdDviConfig[] =
+{
+ {IDOK, CmdDviConfigOK},
+ {IDCANCEL, CmdDviConfigCancel}
+};
+
+CMDI cmdiDviConfig =
+{
+ sizeof(rgcmdDviConfig) / sizeof(CMD),
+ rgcmdDviConfig,
+ edwpNone
+};
+
+/*
+ Page View Configuration Dialog.
+ */
+LRESULT CALLBACK ViewConfigDlgProc(HWND, UINT, WPARAM, LPARAM);
+LRESULT MsgViewConfigInit(HWND, UINT, WPARAM, LPARAM);
+LRESULT MsgViewConfigCommand(HWND, UINT, WPARAM, LPARAM);
+LRESULT MsgViewConfigNotify(HWND, UINT, WPARAM, LPARAM);
+LRESULT CmdViewConfigOK(HWND, WORD, WORD, HWND);
+LRESULT CmdViewConfigCancel(HWND, WORD, WORD, HWND);
+
+/* ViewConfig dialog message table definition. */
+MSD rgmsdViewConfig[] =
+{
+ {WM_COMMAND, MsgViewConfigCommand},
+ {WM_INITDIALOG, MsgViewConfigInit},
+ {WM_NOTIFY, MsgViewConfigNotify}
+};
+
+MSDI msdiViewConfig =
+{
+ sizeof(rgmsdViewConfig) / sizeof(MSD),
+ rgmsdViewConfig,
+ edwpNone
+};
+
+/* ViewConfig dialog command table definition. */
+CMD rgcmdViewConfig[] =
+{
+ {IDOK, CmdViewConfigOK},
+ {IDCANCEL, CmdViewConfigCancel}
+};
+
+CMDI cmdiViewConfig =
+{
+ sizeof(rgcmdViewConfig) / sizeof(CMD),
+ rgcmdViewConfig,
+ edwpNone
+};
+
+/*
+ Dvi File Configuration dialog box.
+ */
+
+/*
+ List of controls in this dialog :
+ Pixels-per-inches : IDC_EDITBDPI : edit
+ Alternate font : IDC_EDITALTFONT : edit
+ MF mode : IDC_COMBOMFMODE : combo box
+ Paper type : IDC_COMBOPAPER : combo box
+ Make pk : IDC_CHECKMAKEPK : check box
+ List fonts : IDC_CHECKLISTFONTS : check box
+ Auto scan : IDC_CHECKSCAN : check box
+ Single instance : IDC_CHECKSINGLE : check box
+ Alllow Shell : IDC_CHECKALLOWSHELL : check box
+ Hush specials : IDC_CHECKHUSHSPECIALS : boolean
+ Hush chars : IDC_CHECKHUSHCHARS : boolean
+ Hush checksums : IDC_CHECKHUSHCHECKSUMS: boolean
+ */
+void DviConfigExport(HWND hwnd)
+{
+ char szBuf[256];
+ int i;
+ extern char * paper_types[];
+ extern int paper_types_number;
+
+
+ /* Put every current value in its control */
+ wsprintf(szBuf, "%d", resource._pixels_per_inch);
+ SendDlgItemMessage(hwnd, IDC_EDITBDPI, WM_SETTEXT, (WPARAM)0, (LPARAM)szBuf);
+
+ SendDlgItemMessage(hwnd, IDC_EDITALTFONT, WM_SETTEXT, (WPARAM)0, (LPARAM)resource._alt_font);
+
+ /* populate combo boxes */
+ /* MF modes */
+ for (i = 0; i < sizeof(avail_modes)/sizeof(mfmode) - 1; i++) {
+ SendDlgItemMessage(hwnd, IDC_COMBOMFMODE, CB_ADDSTRING,
+ (WPARAM) 0, (LPARAM)avail_modes[i].desc);
+ }
+ for (i = 0; i < sizeof(avail_modes)/sizeof(mfmode) - 1; i++) {
+ if (resource.mfmode && (strcmp(resource.mfmode, avail_modes[i].name) == 0)) {
+ SendDlgItemMessage(hwnd, IDC_COMBOMFMODE, CB_SELECTSTRING,
+ (WPARAM) i, (LPARAM)avail_modes[i].desc);
+ /* SendDlgItemMessage(hwnd, IDC_COMBOMFMODE, CB_SETCURSEL,
+ (WPARAM) i, (LPARAM)0); */
+ }
+ }
+ /* Paper types */
+ for (i = 0; i < paper_types_number; i+=2) {
+ wsprintf(szBuf, "%-10s%s", paper_types[i], paper_types[i+1]);
+ SendDlgItemMessage(hwnd, IDC_COMBOPAPER, CB_ADDSTRING,
+ (WPARAM) 0, (LPARAM)szBuf);
+ }
+
+ if (resource.paper)
+ SendDlgItemMessage(hwnd, IDC_COMBOPAPER, CB_SELECTSTRING,
+ (WPARAM) 0, (LPARAM)resource.paper);
+
+ SendDlgItemMessage(hwnd, IDC_CHECKMAKEPK, BM_SETCHECK,
+ (WPARAM) ( resource.makepk ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKLISTFONTS, BM_SETCHECK,
+ (WPARAM)( resource._list_fonts ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKSCAN, BM_SETCHECK,
+ (WPARAM)( resource.scan_flag ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKLOG, BM_SETCHECK,
+ (WPARAM)( resource.log_flag ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKSINGLE, BM_SETCHECK,
+ (WPARAM)( resource.single_flag ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKHUSHSPECIALS, BM_SETCHECK,
+ (WPARAM)( resource._warn_spec ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKHUSHCHARS, BM_SETCHECK,
+ (WPARAM)( resource._hush_chars ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKHUSHCHECKSUMS, BM_SETCHECK,
+ (WPARAM)( resource._hush_chk ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKALLOWSHELL, BM_SETCHECK,
+ (WPARAM)( resource.allow_shell ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+}
+
+BOOL DviConfigImport(HWND hwnd)
+{
+ char szBuf[256], *p;
+ int i;
+
+ SendDlgItemMessage(hwnd, IDC_EDITBDPI, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource._pixels_per_inch = atoi(szBuf))
+ xputenv("BDPI", szBuf);
+
+ SendDlgItemMessage(hwnd, IDC_EDITALTFONT, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource._alt_font)
+ free(resource._alt_font);
+ resource._alt_font = strdup(szBuf);
+
+ SendDlgItemMessage(hwnd, IDC_COMBOMFMODE, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource.mfmode)
+ free(resource.mfmode);
+
+ for (i = 0; i < sizeof(avail_modes)/sizeof(mfmode) - 1; i++) {
+ if (strcmp(szBuf, avail_modes[i].desc) == 0) {
+ resource.mfmode = strdup(avail_modes[i].name);
+ xputenv("MODE", resource.mfmode);
+ break;
+ }
+ }
+#if 0
+ fprintf(stderr, "Dvi config import putenv MODE\n");
+#endif
+ SendDlgItemMessage(hwnd, IDC_COMBOPAPER, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource.paper)
+ free(resource.paper);
+
+ if (*szBuf) {
+ for (p = szBuf; *p && p < szBuf+sizeof(szBuf); p++)
+ if (*p == ' ') {
+ *p = '\0';
+ break;
+ }
+ resource.paper = strdup(szBuf);
+ set_paper_type();
+ init_page();
+ }
+
+ resource.makepk = (SendDlgItemMessage(hwnd, IDC_CHECKMAKEPK, BM_GETCHECK,
+ (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+
+ resource._list_fonts = (SendDlgItemMessage(hwnd, IDC_CHECKLISTFONTS,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource.scan_flag = (SendDlgItemMessage(hwnd, IDC_CHECKSCAN,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource.log_flag = (SendDlgItemMessage(hwnd, IDC_CHECKLOG,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource.single_flag = (SendDlgItemMessage(hwnd, IDC_CHECKSINGLE,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource._warn_spec = (SendDlgItemMessage(hwnd, IDC_CHECKHUSHSPECIALS,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource._hush_chars = (SendDlgItemMessage(hwnd, IDC_CHECKHUSHCHARS,
+ BM_GETCHECK,(WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource._hush_chk = (SendDlgItemMessage(hwnd, IDC_CHECKHUSHCHECKSUMS,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource.allow_shell = (SendDlgItemMessage(hwnd, IDC_CHECKALLOWSHELL,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+
+ return TRUE;
+}
+
+BOOL DviConfigValidate(HWND hwnd)
+{
+
+ return TRUE;
+}
+
+void UpdateConfiguration()
+{
+ extern Boolean init_dvi_file(void);
+ extern void ReopenDviFile(void);
+
+ initcolor();
+ /* FIXME : this should happen only if mode or bdpi changed
+ or shrink factor has changed. */
+ reset_fonts();
+ reconfig();
+ SendMessage(hWndDraw, WM_ERASEBKGND, (WPARAM)GetDC(hWndDraw), 0);
+ ChangePage(0);
+}
+
+/*
+ Processes WM_COMMAND sent to the DviConfig box.
+ */
+
+LRESULT MsgDviConfigCommand(HWND hwnd,
+ UINT uMessage,
+ WPARAM wparam,
+ LPARAM lparam)
+{
+ return DispCommand(&cmdiDviConfig, hwnd, wparam, lparam);
+}
+
+LRESULT MsgDviConfigInit(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
+{
+ DviConfigExport(hdlg);
+ return 0;
+}
+
+LRESULT MsgDviConfigNotify(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
+{
+ HWND hwndPSheet = ((NMHDR FAR *) lparam)->hwndFrom;
+ switch (((NMHDR FAR *) lparam)->code) {
+ case PSN_APPLY:
+ if (DviConfigImport(hdlg)) {
+ SendMessage(hwndPSheet, PSM_UNCHANGED, (WPARAM)hdlg, 0);
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, PSNRET_NOERROR);
+ UpdateConfiguration();
+ } else
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE);
+ break;
+ case PSN_HELP:
+ {
+ /* char szBuf[PATH_MAX]; /* buffer for name of help file */
+ /* Display help for the Dvi File options. */
+ }
+ return TRUE;
+ break;
+ case PSN_KILLACTIVE:
+ if (DviConfigValidate(hdlg)) {
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, FALSE);
+ }
+ else {
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, TRUE);
+ }
+ break;
+ case PSN_QUERYCANCEL:
+ /* Accept cancelation */
+ return FALSE;
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+/*
+ OK has been clicked on, free the box and related resources.
+ */
+
+LRESULT CmdDviConfigOK(HWND hdlg, WORD wCommand, WORD wNotify, HWND hwndCtrl)
+{
+ /* EndDialog(hdlg, TRUE); /* Exit the dialog */
+ return 0;
+}
+
+/*
+ Cancel has been clicked on, free the box and related resources.
+ */
+
+LRESULT CmdDviConfigCancel(HWND hdlg, WORD wCommand, WORD wNotify, HWND hwndCtrl)
+{
+ /* EndDialog(hdlg, TRUE); /* Exit the dialog */
+ return 0;
+}
+
+/*
+ Process messages for the DviConfig box.
+ */
+
+LRESULT CALLBACK DviConfigDlgProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
+{
+ return DispMessage(&msdiDviConfig, hdlg, uMessage, wparam, lparam);
+}
+
+/*
+ View Page configuration dialog box.
+ */
+
+/*
+ List of controls in this dialog box.
+ Postscript : IDC_CHECKPOSTSCRIPT
+ Antialiasing : IDC_CHECKALIASING
+ GS Antialiasing : IDC_CHECKGSALPHA
+ Reverse video : IDC_CHECKREVIDEO
+ Density : IDC_EDITDENSITY
+ Gamma : IDC_EDITGAMMA
+ Grid 1 color :
+ Grid 2 color :
+ Grid 3 color :
+ Mag size 1 : IDC_EDITMGS1
+ Mag size 2 : IDC_EDITMGS2
+ Mag size 3 : IDC_EDITMGS3
+ */
+
+void ViewConfigExport(HWND hwnd)
+{
+ int i;
+ char szBuf[256];
+
+ /* Put every current value in its control */
+ sprintf(szBuf, "%2.4f", resource._gamma);
+ SendDlgItemMessage(hwnd, IDC_EDITGAMMA, WM_SETTEXT, (WPARAM)0, (LPARAM)szBuf);
+ wsprintf(szBuf, "%d", resource._density);
+ SendDlgItemMessage(hwnd, IDC_EDITDENSITY, WM_SETTEXT, (WPARAM)0, (LPARAM)szBuf);
+
+ wsprintf(szBuf, "%dx%d", mg_size[0].w, mg_size[0].h);
+ SendDlgItemMessage(hwnd, IDC_EDITMGS1, WM_SETTEXT, (WPARAM)0, (LPARAM)szBuf);
+ wsprintf(szBuf, "%dx%d", mg_size[1].w, mg_size[1].h);
+ SendDlgItemMessage(hwnd, IDC_EDITMGS2, WM_SETTEXT, (WPARAM)0, (LPARAM)szBuf);
+ wsprintf(szBuf, "%dx%d", mg_size[2].w, mg_size[2].h);
+ SendDlgItemMessage(hwnd, IDC_EDITMGS3, WM_SETTEXT, (WPARAM)0, (LPARAM)szBuf);
+
+ SendDlgItemMessage(hwnd, IDC_CHECKGSALPHA, BM_SETCHECK,
+ (WPARAM) ( resource.gs_alpha ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKINMEMORY, BM_SETCHECK,
+ (WPARAM) ( resource.in_memory ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKPOSTSCRIPT, BM_SETCHECK,
+ (WPARAM) ( resource._postscript ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKALIASING, BM_SETCHECK,
+ (WPARAM) ( resource._use_grey ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ SendDlgItemMessage(hwnd, IDC_CHECKREVIDEO, BM_SETCHECK,
+ (WPARAM) ( resource.reverse ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+
+#ifdef TRANSFORM
+ if (IS_WIN95 || IS_WIN98) {
+ SendDlgItemMessage(hwnd, IDC_CHECKXFORM, BN_DISABLE, 0, 0);
+ resource.use_xform = False;
+ }
+ else {
+ fprintf(stderr, "set use_xform is %s\n", (resource.use_xform ? "true" : "false"));
+ SendDlgItemMessage(hwnd, IDC_CHECKXFORM, BM_SETCHECK,
+ (WPARAM)( resource.use_xform ? BST_CHECKED : BST_UNCHECKED), (LPARAM)0);
+ }
+#else
+ SendDlgItemMessage(hwnd, IDC_CHECKXFORM, BN_DISABLE, 0, 0);
+#endif
+
+ /* Colors */
+ for (i = 0; i < win32_color_map_size; i++) {
+ wsprintf(szBuf, "%s", win32_color_map[i].name);
+ SendDlgItemMessage(hwnd, IDC_COMBO_FORE_COLOR, CB_ADDSTRING,
+ (WPARAM) 0, (LPARAM)szBuf);
+ SendDlgItemMessage(hwnd, IDC_COMBO_BACK_COLOR, CB_ADDSTRING,
+ (WPARAM) 0, (LPARAM)szBuf);
+ }
+ if (resource.fore_color)
+ SendDlgItemMessage(hwnd, IDC_COMBO_FORE_COLOR, CB_SELECTSTRING,
+ (WPARAM) 0, (LPARAM)resource.fore_color);
+ if (resource.back_color)
+ SendDlgItemMessage(hwnd, IDC_COMBO_BACK_COLOR, CB_SELECTSTRING,
+ (WPARAM) 0, (LPARAM)resource.back_color);
+
+}
+
+BOOL ViewConfigImport(HWND hwnd)
+{
+ char szBuf[256];
+ int i;
+
+ SendDlgItemMessage(hwnd, IDC_EDITGAMMA, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ resource._gamma = atof(szBuf);
+
+ SendDlgItemMessage(hwnd, IDC_EDITDENSITY, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ resource._density = atoi(szBuf);
+
+ SendDlgItemMessage(hwnd, IDC_EDITMGS1, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource.mg_arg[0])
+ free(resource.mg_arg[0]);
+ resource.mg_arg[0] = strdup(szBuf);
+ SendDlgItemMessage(hwnd, IDC_EDITMGS2, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource.mg_arg[1])
+ free(resource.mg_arg[1]);
+ resource.mg_arg[1] = strdup(szBuf);
+ SendDlgItemMessage(hwnd, IDC_EDITMGS3, WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource.mg_arg[2])
+ free(resource.mg_arg[2]);
+ resource.mg_arg[2] = strdup(szBuf);
+
+ for (i = 0; i < 3; ++i)
+ if (resource.mg_arg[i] != NULL) {
+ char *s;
+
+ mg_size[i].w = mg_size[i].h = atoi(resource.mg_arg[i]);
+ s = strchr(resource.mg_arg[i], 'x');
+ if (s != NULL) {
+ mg_size[i].h = atoi(s + 1);
+ if (mg_size[i].h <= 0) mg_size[i].w = 0;
+ }
+ }
+
+ resource.gs_alpha = (SendDlgItemMessage(hwnd, IDC_CHECKGSALPHA, BM_GETCHECK,
+ (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource.in_memory = (SendDlgItemMessage(hwnd, IDC_CHECKINMEMORY, BM_GETCHECK,
+ (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource._use_grey = (SendDlgItemMessage(hwnd, IDC_CHECKALIASING, BM_GETCHECK,
+ (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource._postscript = (SendDlgItemMessage(hwnd, IDC_CHECKPOSTSCRIPT, BM_GETCHECK,
+ (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+ resource.reverse = (SendDlgItemMessage(hwnd, IDC_CHECKREVIDEO, BM_GETCHECK,
+ (WPARAM) 0, (LPARAM)0) == BST_CHECKED);
+#ifdef TRANSFORM
+ if (IS_WIN95 || IS_WIN98) {
+ resource.use_xform = False;
+ }
+ else {
+ resource.use_xform = (SendDlgItemMessage(hwnd, IDC_CHECKXFORM,
+ BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED);
+ fprintf(stderr, "get use_xform is %s\n", (resource.use_xform ? "true" : "false"));
+ if (resource.use_xform) {
+ extern void init_xfrm_stack(void);
+ init_xfrm_stack();
+ ChangePage(0);
+ }
+ }
+#else
+ resource.use_xform = False;
+#endif
+
+ SendDlgItemMessage(hwnd, IDC_COMBO_FORE_COLOR,
+ WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource.fore_color)
+ free(resource.fore_color);
+ resource.fore_color = xstrdup(szBuf);
+
+ SendDlgItemMessage(hwnd, IDC_COMBO_BACK_COLOR,
+ WM_GETTEXT, (WPARAM)sizeof(szBuf), (LPARAM)szBuf);
+ if (resource.back_color)
+ free(resource.back_color);
+ resource.back_color = xstrdup(szBuf);
+
+ return TRUE;
+}
+
+BOOL ViewConfigValidate(HWND hwnd)
+{
+
+ return TRUE;
+}
+
+/*
+ Processes WM_COMMAND sent to the ViewConfig box.
+ */
+
+LRESULT MsgViewConfigCommand(HWND hwnd,
+ UINT uMessage,
+ WPARAM wparam,
+ LPARAM lparam)
+{
+ return DispCommand(&cmdiViewConfig, hwnd, wparam, lparam);
+}
+
+LRESULT MsgViewConfigInit(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
+{
+ /* Setup current values into the dialog */
+ ViewConfigExport(hdlg);
+ return 0;
+}
+
+LRESULT MsgViewConfigNotify(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
+{
+ HWND hwndPSheet = ((NMHDR FAR *) lparam)->hwndFrom;
+
+ switch (((NMHDR FAR *) lparam)->code) {
+ case PSN_APPLY:
+ if (ViewConfigImport(hdlg)) {
+ SendMessage(hwndPSheet, PSM_UNCHANGED, (WPARAM)hdlg, 0);
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, PSNRET_NOERROR);
+ UpdateConfiguration();
+ } else
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE);
+ break;
+ case PSN_HELP:
+ {
+ /* char szBuf[PATH_MAX]; /* buffer for name of help file */
+ /* Display help for the View Page options. */
+ }
+ break;
+ case PSN_KILLACTIVE:
+ if (ViewConfigValidate(hdlg)) {
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, TRUE);
+ }
+ else {
+ SetWindowLong(hwndPSheet, DWL_MSGRESULT, FALSE);
+ }
+ break;
+ case PSN_QUERYCANCEL:
+ /* Accept cancelation */
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+/*
+ OK has been clicked on, free the box and related resources.
+ */
+
+LRESULT CmdViewConfigOK(HWND hdlg, WORD wCommand, WORD wNotify, HWND hwndCtrl)
+{
+ /* Retrieve the values in the dialog and set them as current */
+
+ /* EndDialog(hdlg, TRUE); /* Exit the dialog */
+#if PS
+ ps_destroy();
+#endif
+
+ initcolor();
+ reconfig();
+ redraw_page();
+
+ return 0;
+}
+
+/*
+ Cancel has been clicked on, free the box and related resources.
+ */
+
+LRESULT CmdViewConfigCancel(HWND hdlg, WORD wCommand, WORD wNotify, HWND hwndCtrl)
+{
+ /* EndDialog(hdlg, TRUE); /* Exit the dialog */
+ return 0;
+}
+
+/*
+ Process messages for the ViewConfig box.
+ */
+
+LRESULT CALLBACK ViewConfigDlgProc(HWND hdlg, UINT uMessage, WPARAM wparam, LPARAM lparam)
+{
+ return DispMessage(&msdiViewConfig, hdlg, uMessage, wparam, lparam);
+}
+
+int CALLBACK ConfigPSheetCallback(HWND hwnd, UINT uMsg, LPARAM lParam)
+{
+ if (uMsg == PSCB_INITIALIZED)
+ hwndPSheet = hwnd;
+ return 0;
+}
+
+/* DoConfigSheet - creates a property sheet that contains two pages.
+ hwndOwner - handle to the owner window of the property sheet. */
+
+void DoConfigPSheet(HWND hwndOwner)
+{
+ PROPSHEETPAGE psp[2];
+ PROPSHEETHEADER psh;
+ int num_sheets = sizeof(psp) / sizeof(PROPSHEETPAGE);
+
+ ZeroMemory(psp, num_sheets*sizeof(PROPSHEETPAGE));
+ psp[0].dwSize = sizeof(PROPSHEETPAGE);
+ /* psp[0].dwFlags = PSP_USEICONID | PSP_USETITLE; */
+ psp[0].hInstance = hInst;
+ psp[0].pszTemplate = "DLGCONFIGDVI";
+ /* psp[0].pszIcon = MAKEINTRESOURCE(IDI_FONT); */
+ psp[0].pfnDlgProc = DviConfigDlgProc;
+ /* psp[0].pszTitle = MAKEINTRESOURCE(IDS_FONT); */
+ psp[0].lParam = 0;
+ psp[0].pfnCallback = NULL;
+
+ psp[1].dwSize = sizeof(PROPSHEETPAGE);
+ /* psp[1].dwFlags = PSP_USEICONID | PSP_USETITLE; */
+ psp[1].hInstance = hInst;
+ psp[1].pszTemplate = "DLGCONFIGVIEW";
+ /* psp[1].pszIcon = MAKEINTRESOURCE(IDI_BORDER); */
+ psp[1].pfnDlgProc = ViewConfigDlgProc;
+ /* psp[1].pszTitle = MAKEINTRESOURCE(IDS_BORDER); */
+ psp[1].lParam = 0;
+ psp[1].pfnCallback = NULL;
+
+ ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
+ psh.dwSize = sizeof(PROPSHEETHEADER);
+ psh.dwFlags = /* PSH_USEICONID |*/ PSH_PROPSHEETPAGE;
+ psh.hwndParent = hwndOwner;
+ psh.hInstance = hInst;
+ /* psh.pszIcon = MAKEINTRESOURCE(IDI_CELL_PROPERTIES); */
+ psh.pszCaption = (LPSTR) "Windvi Configuration";
+ psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
+ psh.nStartPage = 0;
+ psh.ppsp = (LPCPROPSHEETPAGE) &psp;
+ psh.pfnCallback = ConfigPSheetCallback;
+ PropertySheet(&psh);
+ return;
+}
+
+LRESULT CmdWindviConfig (HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
+{
+#if 0
+ SET_CRT_DEBUG_FIELD( _CRTDBG_DELAY_FREE_MEM_DF );
+ SET_CRT_DEBUG_FIELD( _CRTDBG_CHECK_ALWAYS_DF );
+#endif
+ DoConfigPSheet(hwnd);
+ return 0;
+}
+
+LRESULT CmdTexConfig (HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
+{
+ MessageBox (hwnd,
+ "Command Not Yet Implemented.\r\n",
+ "Windvi",
+ MB_OK | MB_ICONEXCLAMATION);
+ return 0;
+}
+