You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by mt...@apache.org on 2003/04/28 13:49:26 UTC
cvs commit: jakarta-commons-sandbox/daemon/src/native/nt/procrun procgui.c procrun.c procrun.h procrun.rc
mturk 2003/04/28 04:49:26
Modified: daemon/src/native/nt/procrun procgui.c procrun.c procrun.h
procrun.rc
Log:
Added properties window for interactive
service params settings.
Revision Changes Path
1.9 +292 -1 jakarta-commons-sandbox/daemon/src/native/nt/procrun/procgui.c
Index: procgui.c
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procgui.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- procgui.c 25 Apr 2003 17:26:23 -0000 1.8
+++ procgui.c 28 Apr 2003 11:49:25 -0000 1.9
@@ -127,6 +127,8 @@
/* splash window handle */
static HWND ac_splash_hwnd = NULL;
+INT_PTR ac_show_properties(HWND owner);
+
void ac_show_try_icon(HWND hwnd, DWORD message, const char *tip, int stop)
{
@@ -235,10 +237,11 @@
menu = CreatePopupMenu();
if (menu) {
if (ac_use_dlg) {
- ac_append_menu_item(menu, IDM_ABOUT, "About", 0, 1);
ac_append_menu_item(menu, IDM_CONSOLE, "Open Console Monitor", 1, 1);
ac_append_menu_item(menu, 0, "", 0, 1);
}
+ ac_append_menu_item(menu, IDM_ABOUT, "About", 0, 1);
+ ac_append_menu_item(menu, IDM_OPTIONS, "Properties", 1, 1);
strcpy(tmp, "Shutdown: ");
strcat(tmp, g_env->m->service.name);
ac_append_menu_item(menu, IDM_EXIT, tmp, 0, 1);
@@ -469,6 +472,291 @@
return FALSE;
}
+
+void CALLBACK PropSheetCallback(HWND hwndPropSheet, UINT uMsg, LPARAM lParam)
+{
+ switch(uMsg) {
+ case PSCB_PRECREATE:
+ {
+ LPDLGTEMPLATE lpTemplate = (LPDLGTEMPLATE)lParam;
+ if (!(lpTemplate->style & WS_SYSMENU))
+ lpTemplate->style |= WS_SYSMENU;
+
+ }
+ break;
+ case PSCB_INITIALIZED:
+ break;
+
+ }
+}
+
+LRESULT CALLBACK dlg_service_proc(HWND hdlg,
+ UINT uMessage,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+
+ LPNMHDR lpnmhdr;
+ int argc = 2;
+ char *argv[10];
+ char txt[4096];
+ process_t p;
+
+ switch (uMessage) {
+ case WM_COMMAND:
+ PropSheet_Changed(GetParent(hdlg), hdlg);
+ break;
+ case WM_INITDIALOG:
+ ac_center_window(GetParent(hdlg));
+ SetDlgItemText(hdlg, RC_TXT_SN, g_env->m->service.display ?
+ g_env->m->service.display : g_env->m->service.name);
+ SetDlgItemText(hdlg, RC_TXT_SD, g_env->m->service.description);
+ SetDlgItemText(hdlg, RC_TXT_IP, g_env->m->service.image);
+ SetDlgItemText(hdlg, RC_TXT_WP, g_env->m->service.path);
+ if (g_env->m->service.startup == SERVICE_AUTO_START)
+ CheckDlgButton(hdlg, RC_CHK_AUTO, BST_CHECKED);
+
+ break;
+
+ case WM_NOTIFY:
+ lpnmhdr = (NMHDR FAR *)lParam;
+
+ switch (lpnmhdr->code) {
+ case PSN_APPLY: /* sent when OK or Apply button pressed */
+ memcpy(&p, g_env->m, sizeof(process_t));
+ if (GetDlgItemText(hdlg, RC_TXT_SD, txt, 4095) > 0) {
+ argv[argc++] = "--" PROCRUN_PARAMS_DESCRIPTION;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ if (GetDlgItemText(hdlg, RC_TXT_IP, txt, 4095) > 0) {
+ argc = 2;
+ argv[argc++] = "--" PROCRUN_PARAMS_IMAGE;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ if (GetDlgItemText(hdlg, RC_TXT_WP, txt, 4095) > 0) {
+ argc = 2;
+ argv[argc++] = "--" PROCRUN_PARAMS_WORKPATH;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ /* TODO: check if the param is changed */
+ argv[argc++] = "--" PROCRUN_PARAMS_STARTUP;
+ if (IsDlgButtonChecked(hdlg, RC_CHK_AUTO))
+ argv[argc++] = "auto";
+ else
+ argv[argc++] = "manual";
+
+ procrun_update_service(&p, argc, argv);
+ break;
+ case PSN_RESET: /* sent when Cancel button pressed */
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return FALSE;
+}
+
+LRESULT CALLBACK dlg_java_proc(HWND hdlg,
+ UINT uMessage,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+
+ LPNMHDR lpnmhdr;
+ int argc = 2;
+ char *argv[10];
+ char txt[4096];
+ process_t p;
+
+ switch (uMessage) {
+ case WM_COMMAND:
+ PropSheet_Changed(GetParent(hdlg), hdlg);
+ break;
+ case WM_INITDIALOG:
+ SetDlgItemText(hdlg, RC_TXT_JVM, g_env->m->java.display);
+ sprintf(txt, "%s;%s;%s", g_env->m->java.start_class,
+ g_env->m->java.start_method,
+ g_env->m->java.start_param);
+ SetDlgItemText(hdlg, RC_TXT_SC, txt);
+ sprintf(txt, "%s;%s;%s", g_env->m->java.stop_class,
+ g_env->m->java.stop_method,
+ g_env->m->java.stop_param);
+ SetDlgItemText(hdlg, RC_TXT_EC, txt);
+ if (!strcmp(g_env->m->java.display, "auto"))
+ CheckDlgButton(hdlg, RC_CHK_JVM, BST_CHECKED);
+
+ break;
+ case WM_NOTIFY:
+ lpnmhdr = (NMHDR FAR *)lParam;
+
+ switch (lpnmhdr->code) {
+ case PSN_APPLY: /* sent when OK or Apply button pressed */
+ memcpy(&p, g_env->m, sizeof(process_t));
+ if (IsDlgButtonChecked(hdlg, RC_CHK_JVM)) {
+ argv[argc++] = "--" PROCRUN_PARAMS_JVM;
+ argv[argc++] = "auto";
+ }
+ else if (GetDlgItemText(hdlg, RC_TXT_JVM, txt, 4095) > 0) {
+ argv[argc++] = "--" PROCRUN_PARAMS_JVM;
+ argv[argc++] = &txt[0];
+ }
+ if (argc > 2)
+ procrun_update_service(&p, argc, argv);
+
+ if (GetDlgItemText(hdlg, RC_TXT_SC, txt, 4095) > 0) {
+ argc = 2;
+ argv[argc++] = "--" PROCRUN_PARAMS_STARTCLASS;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ if (GetDlgItemText(hdlg, RC_TXT_EC, txt, 4095) > 0) {
+ argc = 2;
+ argv[argc++] = "--" PROCRUN_PARAMS_STARTCLASS;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ if (GetDlgItemText(hdlg, RC_TXT_JO, txt, 4095) > 0) {
+ char *c = &txt[0];
+ argc = 2;
+ while (*c) {
+ if (*c == '\n') *c = '#';
+ ++c;
+ }
+ argv[argc++] = "--" PROCRUN_PARAMS_JVM_OPTS;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ break;
+ case PSN_RESET: /* sent when Cancel button pressed */
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return FALSE;
+}
+
+LRESULT CALLBACK dlg_stream_proc(HWND hdlg,
+ UINT uMessage,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+
+ LPNMHDR lpnmhdr;
+ int argc = 2;
+ char *argv[10];
+ char txt[4096];
+ process_t p;
+
+ switch (uMessage) {
+ case WM_COMMAND:
+ PropSheet_Changed(GetParent(hdlg), hdlg);
+ break;
+ case WM_INITDIALOG:
+ SetDlgItemText(hdlg, RC_TXT_STDI, g_env->m->service.inname);
+ SetDlgItemText(hdlg, RC_TXT_STDO, g_env->m->service.outname);
+ SetDlgItemText(hdlg, RC_TXT_STDE, g_env->m->service.errname);
+
+ break;
+
+ case WM_NOTIFY:
+ lpnmhdr = (NMHDR FAR *)lParam;
+
+ switch (lpnmhdr->code) {
+ case PSN_APPLY: /* sent when OK or Apply button pressed */
+ memcpy(&p, g_env->m, sizeof(process_t));
+ if (GetDlgItemText(hdlg, RC_TXT_STDI, txt, 4095) > 0) {
+ argc = 2;
+ argv[argc++] = "--" PROCRUN_PARAMS_STDINFILE;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ if (GetDlgItemText(hdlg, RC_TXT_STDO, txt, 4095) > 0) {
+ argc = 2;
+ argv[argc++] = "--" PROCRUN_PARAMS_STDOUTFILE;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+ if (GetDlgItemText(hdlg, RC_TXT_STDE, txt, 4095) > 0) {
+ argc = 2;
+ argv[argc++] = "--" PROCRUN_PARAMS_STDERRFILE;
+ argv[argc++] = &txt[0];
+ procrun_update_service(&p, argc, argv);
+ }
+
+ break;
+ case PSN_RESET: /* sent when Cancel button pressed */
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return FALSE;
+}
+
+INT_PTR ac_show_properties(HWND owner)
+{
+ PROPSHEETPAGE psp[3];
+ PROPSHEETHEADER psh;
+
+ psp[0].dwSize = sizeof(PROPSHEETPAGE);
+ psp[0].dwFlags = PSP_USETITLE;
+ psp[0].hInstance = ac_instance;
+ psp[0].pszTemplate = MAKEINTRESOURCE(RC_DLG_SRVOPT);
+ psp[0].pszIcon = NULL;
+ psp[0].pfnDlgProc = (DLGPROC)dlg_service_proc;
+ psp[0].pszTitle = TEXT("Service");
+ psp[0].lParam = 0;
+
+ psp[1].dwSize = sizeof(PROPSHEETPAGE);
+ psp[1].dwFlags = PSP_USETITLE;
+ psp[1].hInstance = ac_instance;
+ psp[1].pszTemplate = MAKEINTRESOURCE(RC_DLG_JVMOPT);
+ psp[1].pszIcon = NULL;
+ psp[1].pfnDlgProc = (DLGPROC)dlg_java_proc;
+ psp[1].pszTitle = TEXT("Java VM");
+ psp[1].lParam = 0;
+
+ psp[2].dwSize = sizeof(PROPSHEETPAGE);
+ psp[2].dwFlags = PSP_USETITLE;
+ psp[2].hInstance = ac_instance;
+ psp[2].pszTemplate = MAKEINTRESOURCE(RC_DLG_STDOPT);
+ psp[2].pszIcon = NULL;
+ psp[2].pfnDlgProc = (DLGPROC)dlg_stream_proc;
+ psp[2].pszTitle = TEXT("Standard Streams");
+ psp[2].lParam = 0;
+
+ psh.dwSize = sizeof(PROPSHEETHEADER);
+ psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_USECALLBACK | PSH_NOCONTEXTHELP;
+ psh.hwndParent = owner;
+ psh.hInstance = ac_instance;
+ psh.pszIcon = MAKEINTRESOURCE(IDI_ICOCONTRY);
+ psh.pszbmHeader = MAKEINTRESOURCE(IDB_BMPJAKARTA);
+ psh.pszCaption = TEXT("Service Options");
+ psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
+ psh.ppsp = (LPCPROPSHEETPAGE) &psp;
+ psh.pfnCallback = (PFNPROPSHEETCALLBACK)PropSheetCallback;
+ psh.nStartPage = 0;
+ return PropertySheet(&psh);
+}
+
+
+
LRESULT CALLBACK ac_main_wnd_proc(HWND hwnd, UINT message,
WPARAM wparam, LPARAM lparam)
{
@@ -538,7 +826,10 @@
DialogBox(ac_instance, MAKEINTRESOURCE(IDD_ABOUTBOX),
hwnd, (DLGPROC)ac_about_dlg_proc);
break;
+ case IDM_OPTIONS:
+ ac_show_properties(hwnd);
+ break;
}
default:
return DefWindowProc(hwnd, message, wparam, lparam);
1.15 +10 -5 jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.c
Index: procrun.c
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- procrun.c 25 Apr 2003 17:26:23 -0000 1.14
+++ procrun.c 28 Apr 2003 11:49:25 -0000 1.15
@@ -198,7 +198,7 @@
{
void *m = malloc(size);
EnterCriticalSection(&pool->lock);
- pool->mp[pool->size].m = INVALID_HANDLE_VALUE;
+ pool->mp[pool->size].h = INVALID_HANDLE_VALUE;
pool->mp[pool->size++].m = m;
LeaveCriticalSection(&pool->lock);
return m;
@@ -940,6 +940,7 @@
if (has_java) {
UINT em;
if (strlen(jvm_path)) {
+ proc->java.display = pool_strdup(proc->pool, jvm_path);
if (strlen(jvm_path) < 6)
proc->java.path = procrun_guess_jvm(proc);
else
@@ -1124,7 +1125,6 @@
strcpy(cp, "-Djava.class.path=");
strcat(cp, proc->service.image);
options[optn++].optionString = cp;
- pool_alloc(proc->pool, 100);
DBPRINTF1("-Djava.class.path=%s", proc->service.image);
/* Set the abort and exit hooks */
#if 0
@@ -1724,7 +1724,7 @@
/*
* Save the parameters in registry
*/
-static void save_service_params(process_t *proc, char *java)
+void save_service_params(process_t *proc, char *java)
{
int i;
@@ -1775,6 +1775,11 @@
set_service_param(proc, PROCRUN_PARAMS_PASSWORD,
b, 256, 2);
}
+ if (proc->service.startup)
+ set_service_param(proc, PROCRUN_PARAMS_STARTUP,
+ proc->service.startup == SERVICE_AUTO_START ? "auto" : "manual",
+ 0, 0);
+
if (proc->java.opts) {
int l = strlen(proc->java.opts);
/* change the string to zero separated for MULYI_SZ */
@@ -1913,7 +1918,7 @@
return 0;
}
-static int procrun_update_service(process_t *proc, int argc, char **argv)
+int procrun_update_service(process_t *proc, int argc, char **argv)
{
SC_HANDLE service;
SC_HANDLE manager;
@@ -2053,7 +2058,7 @@
save_service_params(proc,java);
- SetEvent(proc->events[0]);
+// SetEvent(proc->events[0]);
return 0;
}
1.14 +47 -1 jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.h
Index: procrun.h
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- procrun.h 25 Apr 2003 17:26:23 -0000 1.13
+++ procrun.h 28 Apr 2003 11:49:25 -0000 1.14
@@ -102,7 +102,50 @@
#define IDB_BMPSPLASH 123
#define IDL_INFO 124
-#define IDC_STATIC -1
+#define IDM_OPTIONS 125
+#define RC_DLG_SRVOPT 130
+
+#define RC_TAB_SRVOPT 1000
+#define RC_GRP_MSP 1001
+#define RC_BTN_APPLY 1002
+#define RC_LBL_SN 1003
+#define RC_TXT_SN 1004
+#define RC_LBL_SD 1005
+#define RC_TXT_SD 1006
+#define RC_LBL_IP 1007
+#define RC_TXT_IP 1008
+#define RC_BTN_BIP 1009
+#define RC_LBL_WP 1010
+#define RC_TXT_WP 1011
+#define RC_BTN_BWP 1012
+#define RC_CHK_AUTO 1013
+#define RC_DLG_JVMOPT 1999
+#define RC_GRP_JVMOPT 2000
+#define RC_LBL_JVM 2001
+#define RC_TXT_JVM 2002
+#define RC_BTN_JVM 2003
+#define RC_CHK_JVM 2004
+#define RC_LBL_JO 2005
+#define RC_TXT_JO 2006
+#define RC_LBL_SC 2007
+#define RC_TXT_SC 2008
+#define RC_LBL_EC 2009
+#define RC_TXT_EC 2010
+#define RC_DLG_STDOPT 2999
+#define RC_GRP_STDOPT 3000
+#define RC_LBL_STDI 3001
+#define RC_TXT_STDI 3002
+#define RC_BTN_STDI 3003
+#define RC_CHK_STDI 3004
+#define RC_LBL_STDO 3005
+#define RC_TXT_STDO 3006
+#define RC_BTN_STDO 3007
+#define RC_LBL_STDE 3008
+#define RC_TXT_STDE 3009
+#define RC_BTN_STDE 3010
+#define RC_ABOUT_TXT 3012
+
+#define IDC_STATIC -1
#define PROC_ENV_COUNT 32
#define PROC_ARG_COUNT 128
@@ -250,6 +293,7 @@
char *start_param;
char *stop_param;
char *opts;
+ char *display;
};
typedef struct process_t process_t;
@@ -281,6 +325,8 @@
};
int procrun_main(int argc, char **argv, char **envp, procrun_t *env);
+ int procrun_update_service(process_t *proc, int argc, char **argv);
+ void save_service_params(process_t *proc, char *java);
#ifdef __cplusplus
}
1.8 +58 -0 jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.rc
Index: procrun.rc
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.rc,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- procrun.rc 25 Apr 2003 17:26:23 -0000 1.7
+++ procrun.rc 28 Apr 2003 11:49:25 -0000 1.8
@@ -149,6 +149,64 @@
SS_CENTERIMAGE,0,0,322,151
END
+RC_DLG_SRVOPT DIALOGEX 0, 0, 337, 186
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE | WS_BORDER
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ GROUPBOX " Main Service Parameters ",RC_GRP_MSP,4,16,324,158
+ CONTROL "Auto Start",RC_CHK_AUTO,"Button",BS_AUTOCHECKBOX |
+ BS_LEFTTEXT | WS_TABSTOP,20,153,62,12
+ LTEXT "Name :",RC_LBL_SN,22,48,50,12
+ EDITTEXT RC_TXT_SN,76,48,179,12,ES_AUTOHSCROLL | ES_READONLY |
+ NOT WS_TABSTOP
+ LTEXT "Description :",RC_LBL_SD,22,66,50,12
+ EDITTEXT RC_TXT_SD,76,66,219,12,ES_AUTOHSCROLL
+ LTEXT "Image path :",RC_LBL_IP,21,79,50,12
+ EDITTEXT RC_TXT_IP,75,79,219,12,ES_AUTOHSCROLL
+ PUSHBUTTON "...",RC_BTN_BIP,297,79,18,12
+ LTEXT "Work path :",RC_LBL_WP,21,94,50,12
+ EDITTEXT RC_TXT_WP,75,92,219,12,ES_AUTOHSCROLL
+ PUSHBUTTON "...",RC_BTN_BWP,297,92,18,12
+END
+
+RC_DLG_JVMOPT DIALOGEX 0, 0, 337, 186
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE | WS_BORDER
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ GROUPBOX " Java Virtual Machine ",RC_GRP_JVMOPT,4,16,324,158
+ CONTROL "Auto",RC_CHK_JVM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
+ WS_TABSTOP,22,48,62,12
+ LTEXT "Java VM :",RC_LBL_JVM,22,66,50,12
+ EDITTEXT RC_TXT_JVM,76,66,219,12,ES_AUTOHSCROLL
+ PUSHBUTTON "...",RC_BTN_JVM,298,66,18,12
+ LTEXT "Java Options :",RC_LBL_JO,22,82,50,12
+ EDITTEXT RC_TXT_JO,76,82,219,30,ES_MULTILINE | ES_AUTOHSCROLL |
+ ES_WANTRETURN | WS_VSCROLL
+ LTEXT "Start class :",RC_LBL_SC,22,120,50,12
+ EDITTEXT RC_TXT_SC,76,120,219,12,ES_AUTOHSCROLL
+ LTEXT "Stop class :",RC_LBL_EC,22,138,50,12
+ EDITTEXT RC_TXT_EC,76,138,219,12,ES_AUTOHSCROLL
+END
+
+RC_DLG_STDOPT DIALOGEX 0, 0, 337, 186
+STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE | WS_BORDER
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ GROUPBOX " Standard I/O Streams ",RC_GRP_STDOPT,4,16,324,158
+ CONTROL "Read on startup",RC_CHK_STDI,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,76,66,55,12
+ LTEXT "Input :",RC_LBL_STDI,22,48,50,12
+ EDITTEXT RC_TXT_STDI,76,48,219,12,ES_AUTOHSCROLL
+ PUSHBUTTON "...",RC_BTN_STDI,298,48,18,12
+ LTEXT "Output :",RC_LBL_STDO,22,84,50,12
+ EDITTEXT RC_TXT_STDO,76,84,219,12,ES_AUTOHSCROLL
+ PUSHBUTTON "...",RC_BTN_STDO,298,84,18,12
+ LTEXT "Error :",RC_LBL_STDE,22,102,50,12
+ EDITTEXT RC_TXT_STDE,76,102,219,12,ES_AUTOHSCROLL
+ PUSHBUTTON "...",RC_BTN_STDE,298,102,18,12
+END
+
+
1 VERSIONINFO
FILEVERSION 2,1,0,0
PRODUCTVERSION 2,1,0,0
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org