#include "multibyte.h"
#include "pgapifunc.h"
+#ifdef _HANDLE_ENLIST_IN_DTC_
+#include "connexp.h"
+#endif /* _HANDLE_ENLIST_IN_DTC_ */
extern GLOBAL_VALUES globals;
static int ds_options_update(HWND hdlg, ConnInfo *ci);
+static int ds_options3Draw(HWND, const ConnInfo *);
+static int ds_options3_update(HWND hdlg, ConnInfo *ci);
+
static struct {
int ids;
const char * const modestr;
MAKEINTRESOURCE(DLG_OPTIONS_DRV),
hdlg, ds_options1Proc, (LPARAM) ci);
break;
+ case IDNEXTPAGE:
+ ds_options_update(hdlg, ci);
+ EndDialog(hdlg, cmd == IDOK);
+ DialogBoxParam(s_hModule,
+ MAKEINTRESOURCE(DLG_OPTIONS_DS3),
+ hdlg, ds_options3Proc, (LPARAM) ci);
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+static int
+ds_options3Draw(HWND hdlg, const ConnInfo *ci)
+{
+ BOOL enable = TRUE;
+ static BOOL defset = FALSE;
+
+ /* The use of LIBPQ library */
+#ifdef USE_LIBPQ
+ if (ci->prefer_libpq < 0)
+ CheckDlgButton(hdlg, DS_DEFAULT_LIBPQ_USE, 1);
+ else if (0 == ci->prefer_libpq)
+ CheckDlgButton(hdlg, DS_NO_LIBPQ_USE, 1);
+ else
+ CheckDlgButton(hdlg, DS_LIBPQ_USE, 1);
+#else
+ enable = FALSE;
+ EnableWindow(GetDlgItem(hdlg, DS_DEFAULT_LIBPQ_USE), enable);
+ EnableWindow(GetDlgItem(hdlg, DS_LIBPQ_USE), enable);
+ EnableWindow(GetDlgItem(hdlg, DS_NO_LIBPQ_USE), enable);
+#endif /* USE_LIBPQ */
+
+#ifdef _HANDLE_ENLIST_IN_DTC_
+ switch (ci->xa_opt)
+ {
+ case 0:
+ enable = FALSE;
+ break;
+ case DTC_CHECK_LINK_ONLY:
+ CheckDlgButton(hdlg, DS_DTC_LINK_ONLY, 1);
+ break;
+ case DTC_CHECK_BEFORE_LINK:
+ CheckDlgButton(hdlg, DS_DTC_SIMPLE_PRECHECK, 1);
+ break;
+ case DTC_CHECK_RM_CONNECTION:
+ CheckDlgButton(hdlg, DS_DTC_CONFIRM_RM_CONNECTION, 1);
+ break;
+ }
+#else
+ enable = FALSE;
+#endif /* _HANDLE_ENLIST_IN_DTC_ */
+ if (!enable)
+ {
+ EnableWindow(GetDlgItem(hdlg, DS_DTC_LINK_ONLY), enable);
+ EnableWindow(GetDlgItem(hdlg, DS_DTC_SIMPLE_PRECHECK), enable);
+ EnableWindow(GetDlgItem(hdlg, DS_DTC_CONFIRM_RM_CONNECTION), enable);
+ }
+
+ return 0;
+}
+
+static int
+ds_options3_update(HWND hdlg, ConnInfo *ci)
+{
+ mylog("%s: got ci = %p\n", __FUNCTION__, ci);
+
+#ifdef USE_LIBPQ
+ /* Libpq use */
+ if (IsDlgButtonChecked(hdlg, DS_DEFAULT_LIBPQ_USE))
+ ci->prefer_libpq = -1;
+ else if (IsDlgButtonChecked(hdlg, DS_NO_LIBPQ_USE))
+ ci->prefer_libpq = 0;
+ else
+ ci->prefer_libpq = 1;
+#endif /* USE_LIBPQ */
+
+#ifdef _HANDLE_ENLIST_IN_DTC_
+ if (IsDlgButtonChecked(hdlg, DS_DTC_LINK_ONLY))
+ ci->xa_opt = DTC_CHECK_LINK_ONLY;
+ else if (IsDlgButtonChecked(hdlg, DS_DTC_SIMPLE_PRECHECK))
+ ci->xa_opt = DTC_CHECK_BEFORE_LINK;
+ else if (IsDlgButtonChecked(hdlg, DS_DTC_CONFIRM_RM_CONNECTION))
+ ci->xa_opt = DTC_CHECK_RM_CONNECTION;
+ else
+ ci->xa_opt = 0;
+#endif /* _HANDLE_ENLIST_IN_DTC_ */
+
+ return 0;
+}
+
+LRESULT CALLBACK
+ds_options3Proc(HWND hdlg,
+ UINT wMsg,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ ConnInfo *ci;
+ char buf[128];
+ DWORD cmd;
+
+ switch (wMsg)
+ {
+ case WM_INITDIALOG:
+ ci = (ConnInfo *) lParam;
+ SetWindowLongPtr(hdlg, DWLP_USER, lParam); /* save for OK */
+
+ /* Change window caption */
+ if (ci && ci->dsn && ci->dsn[0])
+ {
+ char fbuf[64];
+
+ cmd = LoadString(s_hModule,
+ IDS_ADVANCE_OPTION_DSN3,
+ fbuf,
+ sizeof(fbuf));
+ if (cmd <= 0)
+ strcpy(fbuf, "Advanced Options (%s) 3/3");
+ sprintf(buf, fbuf, ci->dsn);
+ SetWindowText(hdlg, buf);
+ }
+ else
+ {
+ LoadString(s_hModule, IDS_ADVANCE_OPTION_CON3, buf, sizeof(buf));
+ SetWindowText(hdlg, buf);
+ ShowWindow(GetDlgItem(hdlg, IDAPPLY), SW_HIDE); }
+
+ ds_options3Draw(hdlg, ci);
+ break;
+
+ case WM_COMMAND:
+ ci = (ConnInfo *) GetWindowLongPtr(hdlg, DWLP_USER);
+ switch (cmd = GET_WM_COMMAND_ID(wParam, lParam))
+ {
+ case DS_SHOWOIDCOLUMN:
+ mylog("WM_COMMAND: DS_SHOWOIDCOLUMN\n");
+ EnableWindow(GetDlgItem(hdlg, DS_FAKEOIDINDEX), IsDlgButtonChecked(hdlg, DS_SHOWOIDCOLUMN));
+ return TRUE;
+ case DS_DISABLE_KEEPALIVE:
+ mylog("WM_COMMAND: DS_SHOWOIDCOLUMN\n");
+ EnableWindow(GetDlgItem(hdlg, DS_KEEPALIVETIME), !IsDlgButtonChecked(hdlg, cmd));
+ EnableWindow(GetDlgItem(hdlg, DS_KEEPALIVEINTERVAL), !IsDlgButtonChecked(hdlg, cmd));
+ return TRUE;
+
+ case IDOK:
+ ds_options3_update(hdlg, ci);
+ case IDCANCEL:
+ EndDialog(hdlg, IDOK == cmd);
+ return TRUE;
+ case IDAPPLY:
+ ds_options3_update(hdlg, ci);
+ SendMessage(GetWindow(hdlg, GW_OWNER), WM_COMMAND, wParam, lParam);
+ break;
+ case IDPREVPAGE:
+ ds_options3_update(hdlg, ci);
+ EndDialog(hdlg, cmd == IDOK);
+ DialogBoxParam(s_hModule,
+ MAKEINTRESOURCE(DLG_OPTIONS_DS),
+ hdlg, ds_options2Proc, (LPARAM) ci);
+ break;
}
}
BS_AUTOCHECKBOX | WS_TABSTOP,139,85,110,10
END
+#define LIBPQ_USE_X 10
+#define LIBPQ_USE_Y 40
+#define DTC_GRP_X 10
+#define DTC_GRP_Y 60
+#define DTC_GRP_WIDTH 200
+#define DTC_GRP_HEIGHT 100
+#define DTC_OPT_X (DTC_GRP_X)
+#define DTC_OPT_Y (DTC_GRP_Y+10)
+#define DTC_OPT_WIDTH 180
+#define DTC_OPT_HEIGHT 45
+#define DTC_LOG_X (DTC_GRP_X)
+#define DTC_LOG_Y (DTC_OPT_Y+60)
+
+DLG_OPTIONS_DS3 DIALOG DISCARDABLE 0, 0, 306, 243
+STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION |
+ WS_SYSMENU
+CAPTION "\8d\82\93x\82È\90Ý\92è (\83f\81[\83^\83\\81[\83X\82R)"
+FONT 9, "\82l\82r \83S\83V\83b\83N"
+BEGIN
+ PUSHBUTTON "\90Ý\92è3",IDNEXTPAGE,49,5,40,15
+ PUSHBUTTON "\90Ý\92è2",IDPREVPAGE,5,5,40,15
+
+ GROUPBOX "LIBPQ\83\89\83C\83u\83\89\83\8a\8eg\97p",IDC_STATIC,LIBPQ_USE_X,LIBPQ_USE_Y-10,150,25
+ CONTROL "\96³\8ew\92è",DS_DEFAULT_LIBPQ_USE,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP,15,LIBPQ_USE_Y,40,10
+ CONTROL "\97\98\97p\82·\82é",DS_LIBPQ_USE,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,55,LIBPQ_USE_Y,50,10
+ CONTROL "\97\98\97p\82µ\82È\82¢",DS_NO_LIBPQ_USE,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,105,LIBPQ_USE_Y,50,10
+
+ GROUPBOX "\95ª\8eU\83g\83\89\83\93\83U\83N\83V\83\87\83\93\8aÖ\98A\90Ý\92è",IDC_STATIC,DTC_GRP_X,DTC_GRP_Y,DTC_GRP_WIDTH,DTC_GRP_HEIGHT
+ GROUPBOX "MSDTC\83\8a\83J\83o\83\8a\81[\95s\89Â\90Ú\91±\82ð\8b\96\89Â?",IDC_STATIC,DTC_OPT_X,DTC_OPT_Y,DTC_OPT_WIDTH,DTC_OPT_HEIGHT
+ CONTROL "\82·\82é",DS_DTC_LINK_ONLY,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP,DTC_OPT_X+5,DTC_OPT_Y+10,140,10
+ CONTROL "sslmode verify-[ca|full]\82ð\8b\91\90â",DS_DTC_SIMPLE_PRECHECK,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,DTC_OPT_X+5,DTC_OPT_Y+20,140,10
+ CONTROL "\82µ\82È\82¢(\8dÅ\8f\89\82ÉMSDTC\82©\82ç\82Ì\90Ú\91±\90«\82ð\8am\94F)",DS_DTC_CONFIRM_RM_CONNECTION,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,DTC_OPT_X+5,DTC_OPT_Y+30,170,10
+
+ DEFPUSHBUTTON "OK",IDOK,5,224,50,14,WS_GROUP
+ PUSHBUTTON "\83L\83\83\83\93\83Z\83\8b",IDCANCEL,66,224,50,14
+ PUSHBUTTON "\93K\97p",IDAPPLY,128,224,50,14
+END
+
DLG_OPTIONS_GLOBAL DIALOG DISCARDABLE 0, 0, 306, 115
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION |
IDS_ADVANCE_OPTION_CON1 "\8d\82\93x\82È\90Ý\92è\81i\83R\83l\83N\83V\83\87\83\93\90Ý\92è\82P\81j"
IDS_ADVANCE_OPTION_DSN2 "\8d\82\93x\82È\90Ý\92è (%s \90Ý\92è2)"
IDS_ADVANCE_OPTION_CON2 "\8d\82\93x\82È\90Ý\92è (\83R\83l\83N\83V\83\87\83\93\90Ý\92è2)"
+ IDS_ADVANCE_OPTION_DSN3 "\8d\82\93x\82È\90Ý\92è (%s \90Ý\92è3)"
+ IDS_ADVANCE_OPTION_CON3 "\8d\82\93x\82È\90Ý\92è (\83R\83l\83N\83V\83\87\83\93\90Ý\92è3)"
IDS_ADVANCE_CONNECTION "\83R\83l\83N\83V\83\87\83\93"
END
BS_AUTORADIOBUTTON | WS_TABSTOP,247,138,47,9
END
+#undef LIBPQ_USE_X
+#undef LIBPQ_USE_Y
+#undef DTC_GRP_X
+#undef DTC_GRP_Y
+#undef DTC_GRP_WIDTH
+#undef DTC_GRP_HEIGHT
+#undef DTC_OPT_X
+#undef DTC_OPT_Y
+#undef DTC_OPT_WIDTH
+#undef DTC_OPT_HEIGHT
+#undef DTC_LOG_X
+#undef DTC_LOG_Y
+#define LIBPQ_USE_X 10
+#define LIBPQ_USE_Y 40
+#define DTC_GRP_X 10
+#define DTC_GRP_Y 60
+#define DTC_GRP_WIDTH 200
+#define DTC_GRP_HEIGHT 100
+#define DTC_OPT_X (DTC_GRP_X)
+#define DTC_OPT_Y (DTC_GRP_Y+10)
+#define DTC_OPT_WIDTH 180
+#define DTC_OPT_HEIGHT 45
+#define DTC_LOG_X (DTC_GRP_X)
+#define DTC_LOG_Y (DTC_OPT_Y+60)
+
+DLG_OPTIONS_DS3 DIALOG DISCARDABLE 0, 0, 306, 243
+STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION |
+ WS_SYSMENU
+CAPTION "Adavanced Options(Datasource 3)"
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "Page 3",IDNEXTPAGE,49,5,40,15
+ PUSHBUTTON "Page 2",IDPREVPAGE,5,5,40,15
+
+ GROUPBOX "The use of LIBPQ library",IDC_STATIC,LIBPQ_USE_X,LIBPQ_USE_Y-12,150,25
+ CONTROL "unspecified",DS_DEFAULT_LIBPQ_USE,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP,LIBPQ_USE_X+5,LIBPQ_USE_Y,50,10
+ CONTROL "yes",DS_LIBPQ_USE,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,LIBPQ_USE_X+55,LIBPQ_USE_Y,30,10
+ CONTROL "no",DS_NO_LIBPQ_USE,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,LIBPQ_USE_X+85,LIBPQ_USE_Y,50,10
+
+ GROUPBOX "Distributed Transaction related settings",IDC_STATIC,DTC_GRP_X,DTC_GRP_Y,DTC_GRP_WIDTH,DTC_GRP_HEIGHT
+ GROUPBOX "Allow connections unrecoverable by MSDTC?",IDC_STATIC,DTC_OPT_X,DTC_OPT_Y,DTC_OPT_WIDTH,DTC_OPT_HEIGHT
+ CONTROL "yes",DS_DTC_LINK_ONLY,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP,DTC_OPT_X+5,DTC_OPT_Y+10,40,10
+ CONTROL "rejects sslmode verify-[ca|full]",DS_DTC_SIMPLE_PRECHECK,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,DTC_OPT_X+5,DTC_OPT_Y+20,120,10
+ CONTROL "no (confirm the connectivity from MSDTC first)",DS_DTC_CONFIRM_RM_CONNECTION,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,DTC_OPT_X+5,DTC_OPT_Y+30,170,10
+
+ DEFPUSHBUTTON "OK",IDOK,5,224,50,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,66,224,50,14
+ PUSHBUTTON "Apply",IDAPPLY,128,224,50,14
+END
+
DLG_OPTIONS_GLOBAL DIALOG DISCARDABLE 0, 0, 306, 110
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
IDS_MSGTITLE "Invalid DSN"
IDS_ADVANCE_OPTION_DEF "Advanced Options (Default)"
IDS_ADVANCE_SAVE "Save"
- IDS_ADVANCE_OPTION_DSN1 "Advanced Options (%s) 1/2"
- IDS_ADVANCE_OPTION_CON1 "Advanced Options (Connection 2/2)"
- IDS_ADVANCE_OPTION_DSN2 "Advanced Options (%s) 2/2"
- IDS_ADVANCE_OPTION_CON2 "Advanced Options (Connection 2/2)"
+ IDS_ADVANCE_OPTION_DSN1 "Advanced Options (%s) 1/3"
+ IDS_ADVANCE_OPTION_CON1 "Advanced Options (Connection 1/3)"
+ IDS_ADVANCE_OPTION_DSN2 "Advanced Options (%s) 2/3"
+ IDS_ADVANCE_OPTION_DSN3 "Advanced Options (%s) 3/3"
+ IDS_ADVANCE_OPTION_CON2 "Advanced Options (Connection 2/3)"
+ IDS_ADVANCE_OPTION_CON3 "Advanced Options (Connection 3/3)"
IDS_ADVANCE_CONNECTION "Connection"
END
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
-
+P