Author: gedmurphy
Date: Mon Jun 5 20:34:38 2006
New Revision: 22238
URL:
http://svn.reactos.ru/svn/reactos?rev=22238&view=rev
Log:
- implement menu hints
- load separate 24bit bitmaps for the icons
- fix image list loading
- lots of other little tweaks and changes
Added:
trunk/reactos/base/applications/servman/res/create.bmp (with props)
trunk/reactos/base/applications/servman/res/delete.bmp (with props)
trunk/reactos/base/applications/servman/res/exit.bmp (with props)
trunk/reactos/base/applications/servman/res/export.bmp (with props)
trunk/reactos/base/applications/servman/res/help.bmp (with props)
trunk/reactos/base/applications/servman/res/pause.bmp (with props)
trunk/reactos/base/applications/servman/res/properties.bmp (with props)
trunk/reactos/base/applications/servman/res/refresh.bmp (with props)
trunk/reactos/base/applications/servman/res/restart.bmp (with props)
trunk/reactos/base/applications/servman/res/start.bmp (with props)
trunk/reactos/base/applications/servman/res/stop.bmp (with props)
Removed:
trunk/reactos/base/applications/servman/res/toolbar.bmp
Modified:
trunk/reactos/base/applications/servman/En.rc
trunk/reactos/base/applications/servman/mainwnd.c
trunk/reactos/base/applications/servman/misc.c
trunk/reactos/base/applications/servman/precomp.h
trunk/reactos/base/applications/servman/propsheet.c
trunk/reactos/base/applications/servman/resource.h
trunk/reactos/base/applications/servman/servman.rc
Modified: trunk/reactos/base/applications/servman/En.rc
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/E…
==============================================================================
--- trunk/reactos/base/applications/servman/En.rc (original)
+++ trunk/reactos/base/applications/servman/En.rc Mon Jun 5 20:34:38 2006
@@ -8,7 +8,7 @@
END
POPUP "Action"
BEGIN
- MENUITEM "Connect to...", ID_NET_CON, GRAYED
+ MENUITEM "Connect to...", ID_CONNECT, GRAYED
MENUITEM SEPARATOR
MENUITEM "Start", ID_START, GRAYED
MENUITEM "Stop", ID_STOP, GRAYED
@@ -18,7 +18,7 @@
MENUITEM SEPARATOR
MENUITEM "Refresh", ID_REFRESH
MENUITEM SEPARATOR
- MENUITEM "Edit...", ID_EDIT, GRAYED
+ MENUITEM "Edit...", ID_EDIT, GRAYED
MENUITEM "Create...", ID_CREATE
MENUITEM "Delete...", ID_DELETE, GRAYED
MENUITEM SEPARATOR
@@ -31,13 +31,15 @@
MENUITEM "List", ID_VIEW_LIST
MENUITEM "Details", ID_VIEW_DETAILS
MENUITEM SEPARATOR
- MENUITEM "Customize...",ID_VIEW_CUSTOMIZE, GRAYED
+ MENUITEM "Customize...",ID_VIEW_CUST, GRAYED
END
POPUP "Help"
BEGIN
- MENUITEM "About...", ID_ABOUT
- END
-END
+ MENUITEM "Help", ID_HELP
+ MENUITEM "About", ID_ABOUT
+ END
+END
+
IDR_POPUP MENU
BEGIN
POPUP "popup"
@@ -50,7 +52,7 @@
MENUITEM SEPARATOR
MENUITEM "Refresh", ID_REFRESH
MENUITEM SEPARATOR
- MENUITEM "Edit...", ID_EDIT, GRAYED
+ MENUITEM "Edit...", ID_EDIT, GRAYED
MENUITEM "Delete...", ID_DELETE, GRAYED
MENUITEM SEPARATOR
MENUITEM "Properties...", ID_PROP, GRAYED
@@ -79,7 +81,7 @@
EDITTEXT IDC_DISP_NAME, 70, 29, 176, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP |
ES_READONLY
EDITTEXT IDC_DESCRIPTION, 70, 46, 176, 24, WS_CHILD | WS_VISIBLE | WS_VSCROLL |
WS_TABSTOP | ES_MULTILINE | ES_READONLY
EDITTEXT IDC_EXEPATH, 6, 86, 240, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_READONLY
- CONTROL "", IDC_START_TYPE, "ComboBox", WS_CHILD | WS_VISIBLE |
WS_TABSTOP | CBS_DROPDOWNLIST, 70, 107, 176, 40
+ COMBOBOX IDC_START_TYPE, 70, 107, 176, 40, WS_CHILD | WS_VISIBLE | WS_TABSTOP |
CBS_DROPDOWNLIST
PUSHBUTTON "Start", IDC_START, 6, 155, 54, 15, WS_DISABLED
PUSHBUTTON "Stop", IDC_STOP, 68, 155, 54, 15, WS_DISABLED
PUSHBUTTON "Pause", IDC_PAUSE , 130, 155, 54, 15, WS_DISABLED
@@ -101,8 +103,8 @@
FONT 8,"Tahoma",0,0
STYLE WS_BORDER | WS_VISIBLE | WS_DLGFRAME | WS_SYSMENU | WS_THICKFRAME | WS_GROUP |
WS_TABSTOP
BEGIN
- CONTROL
"",IDC_DEPEND_TREE1,"SysTreeView32",0x50010007,8,70,236,68,0x00000200
- CONTROL
"",IDC_DEPEND_TREE2,"SysTreeView32",0x50010007,8,151,234,67,0x00000200
+ CONTROL "", IDC_DEPEND_TREE1, "SysTreeView32" ,0x50010007, 8, 70,
236, 68, 0x00000200
+ CONTROL "", IDC_DEPEND_TREE2, "SysTreeView32", 0x50010007, 8, 151,
234, 67, 0x00000200
LTEXT "Some services depend on other services, system drivers and load order
groups. If a system component is stopped or it is not running properly, dependant services
can be affected.", IDC_STATIC,8, 7, 238, 26
LTEXT "This service depends on the following components", IDC_STATIC, 8, 57,
236, 9
LTEXT "", IDC_DEPEND_SERVICE, 8, 38, 236, 13
@@ -113,19 +115,19 @@
FONT 8,"Tahoma",0,0
STYLE WS_BORDER | WS_VISIBLE | WS_DLGFRAME | WS_SYSMENU | WS_THICKFRAME | WS_GROUP |
WS_TABSTOP
BEGIN
- CONTROL
"",IDC_CREATE_SERVNAME,"Edit",0x50010000,72,12,150,11,0x00000200
- CONTROL
"",IDC_CREATE_DISPNAME,"Edit",0x50010000,72,31,150,11,0x00000200
- CONTROL
"",IDC_CREATE_PATH,"Edit",0x50010000,8,62,214,13,0x00000200
- CONTROL
"",IDC_CREATE_DESC,"Edit",0x50010000,10,97,210,48,0x00000200
- CONTROL
"",IDC_CREATE_OPTIONS,"Edit",0x50010000,10,162,210,13,0x00000200
- CONTROL "*Service Name
:",IDC_STATIC,"Static",0x50000202,12,12,54,9
- CONTROL "*Display Name
:",IDC_STATIC,"Static",0x50000202,12,33,54,9
- CONTROL "*Path to executable
:",IDC_STATIC,"Static",0x50000000,10,51,68,9
- CONTROL "Description :",IDC_STATIC,"Static",0x50000000,12,86,44,9
- CONTROL "OK",IDOK,"Button",0x50010000,126,192,44,13
- CONTROL "Cancel",IDCANCEL,"Button",0x50010000,176,192,46,13
- CONTROL "Additional options (click help for
details)",IDC_STATIC,"Static",0x50000000,10,151,134,9
- CONTROL "Help",ID_CREATE_HELP,"Button",0x50010000,6,192,44,13
+ EDITTEXT IDC_CREATE_SERVNAME, 72, 12, 150, 11, WS_CHILD | WS_VISIBLE |
WS_EX_CLIENTEDGE
+ EDITTEXT IDC_CREATE_DISPNAME, 72, 31, 150, 11, WS_CHILD | WS_VISIBLE
+ EDITTEXT IDC_CREATE_PATH, 8, 62, 214, 13, WS_CHILD | WS_VISIBLE
+ EDITTEXT IDC_CREATE_DESC, 10, 97, 210, 48, WS_CHILD | WS_VISIBLE
+ EDITTEXT IDC_CREATE_OPTIONS, 10, 162, 210, 13, WS_CHILD | WS_VISIBLE
+ LTEXT "*Service Name :", IDC_STATIC, 12, 12, 54, 9
+ LTEXT "*Display Name :", IDC_STATIC, 12, 33, 54, 9
+ LTEXT "*Path to executable :", IDC_STATIC, 10, 51, 68, 9
+ LTEXT "Description :", IDC_STATIC, 12, 86, 44, 9
+ PUSHBUTTON "OK", IDOK, 126, 192, 44, 13
+ PUSHBUTTON "Cancel", IDCANCEL, 176, 192, 46, 13
+ LTEXT "Additional options (click help for details)", IDC_STATIC, 10, 151,
134, 9
+ PUSHBUTTON "Help", ID_CREATE_HELP, 6, 192, 44, 13
END
IDD_DLG_DELETE DIALOGEX 6,6,185,148
@@ -157,7 +159,7 @@
STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
EXSTYLE WS_EX_TOOLWINDOW
BEGIN
- CONTROL
"",IDC_SERVCON_PROGRESS,"msctls_progress32",0x50000000,8,46,238,13
+ CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000,
8, 46, 238, 13
LTEXT "", IDC_SERVCON_INFO, 8, 5, 236, 11
LTEXT "", IDC_SERVCON_NAME, 8, 25, 66, 11
PUSHBUTTON "&Close", IDOK, 100, 70, 54, 13
@@ -217,3 +219,62 @@
BEGIN
IDS_HELP_OPTIONS "CREATE OPTIONS:\r\nNOTE: The option name includes the equal
sign.\r\n type= <own|share|interact|kernel|filesys|rec>\r\n (default =
own)\r\n start= <boot|system|auto|demand|disabled>\r\n (default = demand) \r\n
error= <normal|severe|critical|ignore>\r\n (default = normal)\r\n group=
<LoadOrderGroup>\r\n tag= <yes|no>\r\n depend= <Dependencies(separated by /
(forward slash))>\r\n obj= <AccountName|ObjectName>\r\n (default =
LocalSystem)\r\n password= <password>\r\n"
END
+#define IDS_HINT_BLANK 20000
+#define IDS_HINT_EXPORT 20001
+#define IDS_HINT_EXIT 20002
+
+#define IDS_HINT_CONNECT 20011
+#define IDS_HINT_START 20012
+#define IDS_HINT_STOP 21013
+#define IDS_HINT_PAUSE 21014
+#define IDS_HINT_RESUME 20015
+#define IDS_HINT_RESTART 20016
+#define IDS_HINT_REFRESH 20017
+#define IDS_HINT_EDIT 20018
+#define IDS_HINT_CREATE 20019
+#define IDS_HINT_DELETE 20020
+#define IDS_HINT_PROP 20021
+
+#define IDS_HINT_LARGE 20030
+#define IDS_HINT_SMALL 20031
+#define IDS_HINT_LIST 20032
+#define IDS_HINT_DETAILS 20033
+#define IDS_HINT_CUST 20034
+
+#define IDS_HINT_HELP 20040
+#define IDS_HINT_ABOUT 20041
+/* Hints */
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_HINT_BLANK " "
+ IDS_HINT_EXPORT " Exports the current list to a file."
+ IDS_HINT_EXIT " Exits the program."
+
+ IDS_HINT_CONNECT " Manage a different computer."
+ IDS_HINT_START " Start the selected service."
+ IDS_HINT_STOP " Stop the selected service."
+ IDS_HINT_PAUSE " Pause the selected service."
+ IDS_HINT_RESUME " Resume the selected service."
+ IDS_HINT_RESTART " Stop and start the selected service."
+ IDS_HINT_REFRESH " Refresh the service list."
+ IDS_HINT_EDIT " Edit the properties of the selected service."
+ IDS_HINT_CREATE " Create a new service."
+ IDS_HINT_DELETE " Delete the selected service."
+ IDS_HINT_PROP " Open property sheet for the current selection."
+
+ IDS_HINT_LARGE " Display items by using large icons."
+ IDS_HINT_SMALL " Display items by using small icons."
+ IDS_HINT_LIST " Display item in a list."
+ IDS_HINT_DETAILS " Display information about each item in a window."
+ IDS_HINT_CUST " Customizes the view."
+
+ IDS_HINT_HELP " Display help window."
+ IDS_HINT_ABOUT " About ReactOS Service Manager."
+
+ IDS_HINT_SYS_RESTORE " Restores this window to normal size."
+ IDS_HINT_SYS_MOVE " Moves this window."
+ IDS_HINT_SYS_SIZE " Resizes this window."
+ IDS_HINT_SYS_MINIMIZE " Collapses this window to an icon."
+ IDS_HINT_SYS_MAXIMIZE " Expands this window to fill this screen."
+ IDS_HINT_SYS_CLOSE " Closes this window."
+END
Modified: trunk/reactos/base/applications/servman/mainwnd.c
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/m…
==============================================================================
--- trunk/reactos/base/applications/servman/mainwnd.c (original)
+++ trunk/reactos/base/applications/servman/mainwnd.c Mon Jun 5 20:34:38 2006
@@ -15,7 +15,7 @@
/* Toolbar buttons */
-TBBUTTON tbb [NUM_BUTTONS] =
+TBBUTTON Buttons [NUM_BUTTONS] =
{ /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */
{TBICON_PROP, ID_PROP, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0}, /*
properties */
{TBICON_REFRESH, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /*
refresh */
@@ -25,7 +25,7 @@
{15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /*
separator */
{TBICON_CREATE, ID_CREATE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /*
create */
- {TBICON_DELETE, ID_DELETE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /*
delete */
+ {TBICON_DELETE, ID_DELETE, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /*
delete */
{15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /*
separator */
@@ -40,6 +40,92 @@
{TBICON_EXIT, ID_EXIT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /*
exit */
};
+
+
+/* menu hints */
+static const MENU_HINT MainMenuHintTable[] = {
+ /* File Menu */
+ {ID_EXPORT, IDS_HINT_EXPORT},
+ {ID_EXIT, IDS_HINT_EXIT},
+
+ /* Action Menu */
+ {ID_CONNECT, IDS_HINT_CONNECT},
+ {ID_START, IDS_HINT_START},
+ {ID_STOP, IDS_HINT_STOP},
+ {ID_PAUSE, IDS_HINT_PAUSE},
+ {ID_RESUME, IDS_HINT_RESUME},
+ {ID_RESTART, IDS_HINT_RESTART},
+ {ID_REFRESH, IDS_HINT_REFRESH},
+ {ID_EDIT, IDS_HINT_EDIT},
+ {ID_CREATE, IDS_HINT_CREATE},
+ {ID_DELETE, IDS_HINT_DELETE},
+ {ID_PROP, IDS_HINT_PROP},
+
+ /* View menu */
+ {ID_VIEW_LARGE, IDS_HINT_LARGE},
+ {ID_VIEW_SMALL, IDS_HINT_SMALL},
+ {ID_VIEW_LIST, IDS_HINT_LIST},
+ {ID_VIEW_DETAILS, IDS_HINT_DETAILS},
+ {ID_VIEW_CUST, IDS_HINT_CUST},
+
+ /* Help Menu */
+ {ID_HELP, IDS_HINT_HELP},
+ {ID_ABOUT, IDS_HINT_ABOUT}
+};
+/* system menu hints */
+static const MENU_HINT SystemMenuHintTable[] = {
+ {SC_RESTORE, IDS_HINT_SYS_RESTORE},
+ {SC_MOVE, IDS_HINT_SYS_MOVE},
+ {SC_SIZE, IDS_HINT_SYS_SIZE},
+ {SC_MINIMIZE, IDS_HINT_SYS_MINIMIZE},
+ {SC_MAXIMIZE, IDS_HINT_SYS_MAXIMIZE},
+ {SC_CLOSE, IDS_HINT_SYS_CLOSE},
+};
+
+
+static BOOL
+MainWndMenuHint(PMAIN_WND_INFO Info,
+ WORD CmdId,
+ const MENU_HINT *HintArray,
+ DWORD HintsCount,
+ UINT DefHintId)
+{
+ BOOL Found = FALSE;
+ const MENU_HINT *LastHint;
+ UINT HintId = DefHintId;
+
+ LastHint = HintArray + HintsCount;
+ while (HintArray != LastHint)
+ {
+ if (HintArray->CmdId == CmdId)
+ {
+ HintId = HintArray->HintId;
+ Found = TRUE;
+ break;
+ }
+ HintArray++;
+ }
+
+ StatusBarLoadString(Info->hStatus,
+ SB_SIMPLEID,
+ hInstance,
+ HintId);
+
+ return Found;
+}
+
+
+static VOID
+UpdateMainStatusBar(PMAIN_WND_INFO Info)
+{
+ if (Info->hStatus != NULL)
+ {
+ SendMessage(Info->hStatus,
+ SB_SIMPLE,
+ (WPARAM)Info->InMenuLoop,
+ 0);
+ }
+}
static VOID
@@ -89,6 +175,12 @@
if (Info->SelectedItem != NO_ITEM_SELECTED)
{
+ /* allow user to delete service */
+ SendMessage(Info->hTool, TB_SETSTATE, ID_DELETE,
+ (LPARAM)MAKELONG(TBSTATE_ENABLED, 0));
+ EnableMenuItem(hMainMenu, ID_DELETE, MF_ENABLED);
+ EnableMenuItem(Info->hShortcutMenu, ID_DELETE, MF_ENABLED);
+
Flags = Info->CurrentService->ServiceStatusProcess.dwControlsAccepted;
State = Info->CurrentService->ServiceStatusProcess.dwCurrentState;
@@ -126,11 +218,15 @@
}
else
{
+ /* disable tools which rely on a selected service */
EnableMenuItem(hMainMenu, ID_PROP, MF_GRAYED);
EnableMenuItem(hMainMenu, ID_DELETE, MF_GRAYED);
+ EnableMenuItem(Info->hShortcutMenu, ID_PROP, MF_GRAYED);
EnableMenuItem(Info->hShortcutMenu, ID_DELETE, MF_GRAYED);
SendMessage(Info->hTool, TB_SETSTATE, ID_PROP,
(LPARAM)MAKELONG(TBSTATE_INDETERMINATE, 0));
+ SendMessage(Info->hTool, TB_SETSTATE, ID_DELETE,
+ (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, 0));
}
}
@@ -156,101 +252,55 @@
}
-/*FIXME: needs rewriting / optimising */
-static VOID CALLBACK
-MainWndResize(PVOID Context,
- WORD cx,
- WORD cy)
-{
- PMAIN_WND_INFO Info = (PMAIN_WND_INFO)Context;
-
- RECT rcClient, rcTool, rcStatus;
- int lvHeight, iToolHeight, iStatusHeight;
-
- /* Size toolbar and get height */
- Info->hTool = GetDlgItem(Info->hMainWnd, IDC_TOOLBAR);
- SendMessage(Info->hTool, TB_AUTOSIZE, 0, 0);
-
- GetWindowRect(Info->hTool, &rcTool);
- iToolHeight = rcTool.bottom - rcTool.top;
-
- /* Size status bar and get height */
- Info->hStatus = GetDlgItem(Info->hMainWnd, IDC_STATUSBAR);
- SendMessage(Info->hStatus, WM_SIZE, 0, 0);
-
- GetWindowRect(Info->hStatus, &rcStatus);
- iStatusHeight = rcStatus.bottom - rcStatus.top;
-
- /* Calculate remaining height and size list view */
- GetClientRect(Info->hMainWnd, &rcClient);
-
- lvHeight = rcClient.bottom - iToolHeight - iStatusHeight;
-
- Info->hListView = GetDlgItem(Info->hMainWnd, IDC_SERVLIST);
- SetWindowPos(Info->hListView, NULL, 0, iToolHeight, rcClient.right, lvHeight,
SWP_NOZORDER);
-}
-
-
-static VOID
+static BOOL
CreateToolbar(PMAIN_WND_INFO Info)
{
- TBADDBITMAP tbab;
- INT iImageOffset;
- INT NumButtons;
-
- Info->hTool = CreateWindowEx(0, //WS_EX_TOOLWINDOW
+ INT NumButtons = sizeof(Buttons) / sizeof(Buttons[0]);
+
+ Info->hTool = CreateWindowEx(0,
TOOLBARCLASSNAME,
NULL,
WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT |
TBSTYLE_TOOLTIPS,
0, 0, 0, 0,
Info->hMainWnd,
- (HMENU)IDC_TOOLBAR,
+ 0,
hInstance,
NULL);
- if(Info->hTool == NULL)
- {
- MessageBox(Info->hMainWnd,
- _T("Could not create tool bar."),
- _T("Error"),
- MB_OK | MB_ICONERROR);
- }
-
- /* Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility
*/
- SendMessage(Info->hTool,
- TB_BUTTONSTRUCTSIZE,
- sizeof(TBBUTTON),
- 0);
-
- NumButtons = sizeof(tbb) / sizeof(tbb[0]);
-
- /* Add custom images */
- tbab.hInst = hInstance;
- tbab.nID = IDB_BUTTONS;
- iImageOffset = (INT)SendMessage(Info->hTool,
- TB_ADDBITMAP,
- NumButtons,
- (LPARAM)&tbab);
- tbb[0].iBitmap += iImageOffset; /* properties */
- tbb[1].iBitmap += iImageOffset; /* refresh */
- tbb[2].iBitmap += iImageOffset; /* export */
- tbb[4].iBitmap += iImageOffset; /* create */
- tbb[5].iBitmap += iImageOffset; /* delete */
- tbb[7].iBitmap += iImageOffset; /* start */
- tbb[8].iBitmap += iImageOffset; /* stop */
- tbb[9].iBitmap += iImageOffset; /* pause */
- tbb[10].iBitmap += iImageOffset; /* restart */
- tbb[12].iBitmap += iImageOffset; /* help */
- tbb[13].iBitmap += iImageOffset; /* exit */
-
- /* Add buttons to toolbar */
- SendMessage(Info->hTool,
- TB_ADDBUTTONS,
- NumButtons,
- (LPARAM) &tbb);
-
- /* Show toolbar */
- ShowWindow(Info->hTool,
- SW_SHOWNORMAL);
+ if(Info->hTool != NULL)
+ {
+ HIMAGELIST hImageList;
+
+ SendMessage(Info->hTool,
+ TB_SETEXTENDEDSTYLE,
+ 0,
+ TBSTYLE_EX_HIDECLIPPEDBUTTONS);
+
+ SendMessage(Info->hTool,
+ TB_BUTTONSTRUCTSIZE,
+ sizeof(Buttons[0]),
+ 0);
+
+ hImageList = InitImageList(IDB_PROP,
+ IDB_EXIT,
+ 16,
+ 16);
+ if (hImageList == NULL)
+ return FALSE;
+
+ ImageList_Destroy((HIMAGELIST)SendMessage(Info->hTool,
+ TB_SETIMAGELIST,
+ 0,
+ (LPARAM)hImageList));
+
+ SendMessage(Info->hTool,
+ TB_ADDBUTTONS,
+ NumButtons,
+ (LPARAM)Buttons);
+
+ return TRUE;
+ }
+
+ return FALSE;
}
@@ -350,7 +400,7 @@
return TRUE;
}
-static VOID
+static BOOL
CreateStatusBar(PMAIN_WND_INFO Info)
{
INT StatWidths[] = {110, -1}; /* widths of status bar */
@@ -365,30 +415,90 @@
hInstance,
NULL);
if(Info->hStatus == NULL)
- {
- MessageBox(Info->hMainWnd,
- _T("Could not create status bar."),
- _T("Error!"),
- MB_OK | MB_ICONERROR);
- return;
- }
+ return FALSE;
+
SendMessage(Info->hStatus,
SB_SETPARTS,
sizeof(StatWidths) / sizeof(INT),
(LPARAM)StatWidths);
+
+ return TRUE;
+}
+
+static VOID
+ListViewSelectionChanged(PMAIN_WND_INFO Info,
+ LPNMLISTVIEW pnmv)
+{
+
+ HMENU hMainMenu;
+
+ /* get handle to menu */
+ hMainMenu = GetMenu(Info->hMainWnd);
+
+ /* activate properties menu item, if not already */
+ if (GetMenuState(hMainMenu,
+ ID_PROP,
+ MF_BYCOMMAND) != MF_ENABLED)
+ {
+ EnableMenuItem(hMainMenu,
+ ID_PROP,
+ MF_ENABLED);
+ }
+
+ /* activate delete menu item, if not already */
+ if (GetMenuState(hMainMenu,
+ ID_DELETE,
+ MF_BYCOMMAND) != MF_ENABLED)
+ {
+ EnableMenuItem(hMainMenu,
+ ID_DELETE,
+ MF_ENABLED);
+ EnableMenuItem(Info->hShortcutMenu,
+ ID_DELETE,
+ MF_ENABLED);
+ }
+
+
+ /* set selected service */
+ Info->SelectedItem = pnmv->iItem;
+
+ /* get pointer to selected service */
+ Info->CurrentService = GetSelectedService(Info);
+
+ /* alter options for the service */
+ SetMenuAndButtonStates(Info);
+
+ /* set current selected service in the status bar */
+ SendMessage(Info->hStatus,
+ SB_SETTEXT,
+ 1,
+ (LPARAM)Info->CurrentService->lpDisplayName);
+
+ /* show the properties button */
+ SendMessage(Info->hTool,
+ TB_SETSTATE,
+ ID_PROP,
+ (LPARAM)MAKELONG(TBSTATE_ENABLED, 0));
+
+
}
static VOID
InitMainWnd(PMAIN_WND_INFO Info)
{
- CreateToolbar(Info);
+ if (!CreateToolbar(Info))
+ DisplayString(_T("error creating toolbar"));
if (!CreateListView(Info))
+ {
+ DisplayString(_T("error creating list view"));
return;
-
- CreateStatusBar(Info);
+ }
+
+ if (!CreateStatusBar(Info))
+ DisplayString(_T("error creating status bar"));
/* Create Popup Menu */
Info->hShortcutMenu = LoadMenu(hInstance,
@@ -564,7 +674,7 @@
LVS_REPORT);
break;
- case ID_VIEW_CUSTOMIZE:
+ case ID_VIEW_CUST:
break;
case ID_ABOUT:
@@ -576,6 +686,37 @@
break;
}
+}
+
+
+static VOID CALLBACK
+MainWndResize(PMAIN_WND_INFO Info,
+ WORD cx,
+ WORD cy)
+{
+ RECT rcClient, rcTool, rcStatus;
+ int lvHeight, iToolHeight, iStatusHeight;
+
+ /* Size toolbar and get height */
+ SendMessage(Info->hTool, TB_AUTOSIZE, 0, 0);
+ GetWindowRect(Info->hTool, &rcTool);
+ iToolHeight = rcTool.bottom - rcTool.top;
+
+ /* Size status bar and get height */
+ SendMessage(Info->hStatus, WM_SIZE, 0, 0);
+ GetWindowRect(Info->hStatus, &rcStatus);
+ iStatusHeight = rcStatus.bottom - rcStatus.top;
+
+ /* Calculate remaining height and size list view */
+ GetClientRect(Info->hMainWnd, &rcClient);
+ lvHeight = rcClient.bottom - iToolHeight - iStatusHeight;
+ SetWindowPos(Info->hListView,
+ NULL,
+ 0,
+ iToolHeight,
+ rcClient.right,
+ lvHeight,
+ SWP_NOZORDER);
}
@@ -669,55 +810,8 @@
case LVN_ITEMCHANGED:
{
LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam;
- HMENU hMainMenu;
-
- /* get handle to menu */
- hMainMenu = GetMenu(Info->hMainWnd);
-
- /* activate properties menu item, if not already */
- if (GetMenuState(hMainMenu,
- ID_PROP,
- MF_BYCOMMAND) != MF_ENABLED)
- {
- EnableMenuItem(hMainMenu,
- ID_PROP,
- MF_ENABLED);
- }
-
- /* activate delete menu item, if not already */
- if (GetMenuState(hMainMenu,
- ID_DELETE,
- MF_BYCOMMAND) != MF_ENABLED)
- {
- EnableMenuItem(hMainMenu,
- ID_DELETE,
- MF_ENABLED);
- EnableMenuItem(Info->hShortcutMenu,
- ID_DELETE,
- MF_ENABLED);
- }
-
-
- /* set selected service */
- Info->SelectedItem = pnmv->iItem;
-
- /* get pointer to selected service */
- Info->CurrentService = GetSelectedService(Info);
-
- /* alter options for the service */
- SetMenuAndButtonStates(Info);
-
- /* set current selected service in the status bar */
- SendMessage(Info->hStatus,
- SB_SETTEXT,
- 1,
- (LPARAM)Info->CurrentService->lpDisplayName);
-
- /* show the properties button */
- SendMessage(Info->hTool,
- TB_SETSTATE,
- ID_PROP,
- (LPARAM)MAKELONG(TBSTATE_ENABLED, 0));
+
+ ListViewSelectionChanged(Info, pnmv);
}
break;
@@ -780,9 +874,6 @@
}
}
- break;
-
- default:
break;
}
}
@@ -818,6 +909,40 @@
LOWORD(wParam),
(HWND)lParam);
goto HandleDefaultMessage;
+ }
+
+ case WM_MENUSELECT:
+ {
+ if (Info->hStatus != NULL)
+ {
+ if (!MainWndMenuHint(Info,
+ LOWORD(wParam),
+ MainMenuHintTable,
+ sizeof(MainMenuHintTable) /
sizeof(MainMenuHintTable[0]),
+ IDS_HINT_BLANK))
+ {
+ MainWndMenuHint(Info,
+ LOWORD(wParam),
+ SystemMenuHintTable,
+ sizeof(SystemMenuHintTable) /
sizeof(SystemMenuHintTable[0]),
+ IDS_HINT_BLANK);
+ }
+ }
+ }
+ break;
+
+ case WM_ENTERMENULOOP:
+ {
+ Info->InMenuLoop = TRUE;
+ UpdateMainStatusBar(Info);
+ break;
+ }
+
+ case WM_EXITMENULOOP:
+ {
+ Info->InMenuLoop = FALSE;
+ UpdateMainStatusBar(Info);
+ break;
}
case WM_CLOSE:
Modified: trunk/reactos/base/applications/servman/misc.c
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/m…
==============================================================================
--- trunk/reactos/base/applications/servman/misc.c (original)
+++ trunk/reactos/base/applications/servman/misc.c Mon Jun 5 20:34:38 2006
@@ -216,27 +216,26 @@
HIMAGELIST
-InitImageList(UINT NumImages,
- UINT StartResource,
+InitImageList(UINT StartResource,
+ UINT EndResource,
UINT Width,
UINT Height)
{
HBITMAP hBitmap;
HIMAGELIST hImageList;
- INT i, k, Ret;
-
+ INT i, Ret;
/* Create the toolbar icon image list */
hImageList = ImageList_Create(Width,
Height,
ILC_MASK | ILC_COLOR24,
- NumImages,
+ EndResource - StartResource,
0);
- if (! hImageList)
+ if (hImageList == NULL)
return NULL;
/* Add all icons to the image list */
- for (i = StartResource, k = 0; k < NumImages; i++, k++)
+ for (i = StartResource; i <= EndResource; i++)
{
hBitmap = LoadImage(hInstance,
MAKEINTRESOURCE(i),
@@ -244,14 +243,17 @@
Width,
Height,
LR_LOADTRANSPARENT);
+ if (hBitmap == NULL)
+ return NULL;
Ret = ImageList_AddMasked(hImageList,
hBitmap,
- RGB(255, 255, 254));
+ RGB(255, 0, 128));
+ if (Ret == -1)
+ return NULL;
DeleteObject(hBitmap);
}
return hImageList;
-
-}
+}
Modified: trunk/reactos/base/applications/servman/precomp.h
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/p…
==============================================================================
--- trunk/reactos/base/applications/servman/precomp.h (original)
+++ trunk/reactos/base/applications/servman/precomp.h Mon Jun 5 20:34:38 2006
@@ -11,6 +11,10 @@
#ifdef _MSC_VER
#pragma warning(disable : 4100)
+#endif
+
+#ifndef SB_SIMPLEID
+#define SB_SIMPLEID 0xFF
#endif
#define NO_ITEM_SELECTED -1
@@ -54,6 +58,9 @@
struct _PROP_DLG_INFO *PropSheet;
+ /* status flags */
+ BOOL InMenuLoop : 1;
+
} MAIN_WND_INFO, *PMAIN_WND_INFO;
@@ -68,6 +75,12 @@
extern HANDLE ProcessHeap;
/* mainwnd.c */
+typedef struct _MENU_HINT
+{
+ WORD CmdId;
+ UINT HintId;
+} MENU_HINT, *PMENU_HINT;
+
BOOL InitMainWindowImpl(VOID);
VOID UninitMainWindowImpl(VOID);
HWND CreateMainWindow(LPCTSTR lpCaption, int nCmdShow);
Modified: trunk/reactos/base/applications/servman/propsheet.c
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/p…
==============================================================================
--- trunk/reactos/base/applications/servman/propsheet.c (original)
+++ trunk/reactos/base/applications/servman/propsheet.c Mon Jun 5 20:34:38 2006
@@ -259,9 +259,6 @@
/* Enable the 'Apply' button */
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
-
- default:
- break;
}
}
break;
@@ -312,12 +309,7 @@
case WM_COMMAND:
switch(LOWORD(wParam))
{
- case IDC_START:
- break;
-
- case IDC_STOP:
-
- break;
+
}
break;
@@ -329,9 +321,10 @@
LPNMHDR lpnm = (LPNMHDR)lParam;
switch (lpnm->code)
-
- default:
- break;
+ {
+
+ }
+
}
break;
}
Added: trunk/reactos/base/applications/servman/res/create.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/create.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/delete.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/delete.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/exit.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/exit.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/export.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/export.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/help.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/help.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/pause.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/pause.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/properties.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/properties.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/refresh.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/refresh.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/restart.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/restart.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/start.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/start.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: trunk/reactos/base/applications/servman/res/stop.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Propchange: trunk/reactos/base/applications/servman/res/stop.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Removed: trunk/reactos/base/applications/servman/res/toolbar.bmp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
Binary file - no diff available.
Modified: trunk/reactos/base/applications/servman/resource.h
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/r…
==============================================================================
--- trunk/reactos/base/applications/servman/resource.h (original)
+++ trunk/reactos/base/applications/servman/resource.h Mon Jun 5 20:34:38 2006
@@ -7,9 +7,8 @@
#define IDS_LICENSE 203
#define IDC_SERVLIST 1000
-#define IDC_TOOLBAR 1001
-#define IDC_STATUSBAR 1002
-#define IDC_EDIT_BUTTON 1003
+#define IDC_STATUSBAR 1001
+#define IDC_EDIT_BUTTON 1002
#define ID_PROP 2000
#define ID_REFRESH 2001
@@ -24,11 +23,11 @@
#define ID_DELETE 2010
#define ID_HELP 2011
#define ID_EXIT 2012
-#define ID_NET_CON 2013
+#define ID_CONNECT 2013
#define IDR_MAINMENU 102
#define IDR_POPUP 103
-#define ID_VIEW_CUSTOMIZE 4021
+#define ID_VIEW_CUST 4021
#define ID_VIEW_LARGE 4022
#define ID_VIEW_SMALL 4023
#define ID_VIEW_LIST 4024
@@ -65,6 +64,18 @@
#define IDI_SM_ICON 50
#define IDB_BUTTONS 51
+#define IDB_PROP 10000
+#define IDB_REFRESH 10001
+#define IDB_EXPORT 10002
+#define IDB_CREATE 10003
+#define IDB_DELETE 10004
+#define IDB_START 10005
+#define IDB_STOP 10006
+#define IDB_PAUSE 10007
+#define IDB_RESTART 10008
+#define IDB_HELP 10009
+#define IDB_EXIT 10010
+
/* toolbar buttons */
#define TBICON_PROP 0
#define TBICON_REFRESH 1
@@ -77,6 +88,42 @@
#define TBICON_RESTART 8
#define TBICON_HELP 9
#define TBICON_EXIT 10
+
+
+/* menu hints */
+#define IDS_HINT_BLANK 20000
+#define IDS_HINT_EXPORT 20001
+#define IDS_HINT_EXIT 20002
+
+#define IDS_HINT_CONNECT 20011
+#define IDS_HINT_START 20012
+#define IDS_HINT_STOP 21013
+#define IDS_HINT_PAUSE 21014
+#define IDS_HINT_RESUME 20015
+#define IDS_HINT_RESTART 20016
+#define IDS_HINT_REFRESH 20017
+#define IDS_HINT_EDIT 20018
+#define IDS_HINT_CREATE 20019
+#define IDS_HINT_DELETE 20020
+#define IDS_HINT_PROP 20021
+
+#define IDS_HINT_LARGE 20030
+#define IDS_HINT_SMALL 20031
+#define IDS_HINT_LIST 20032
+#define IDS_HINT_DETAILS 20033
+#define IDS_HINT_CUST 20034
+
+#define IDS_HINT_HELP 20040
+#define IDS_HINT_ABOUT 20041
+
+/* system menu hints */
+#define IDS_HINT_SYS_RESTORE 21001
+#define IDS_HINT_SYS_MOVE 21002
+#define IDS_HINT_SYS_SIZE 21003
+#define IDS_HINT_SYS_MINIMIZE 21004
+#define IDS_HINT_SYS_MAXIMIZE 21005
+#define IDS_HINT_SYS_CLOSE 21006
+
/* properties dialog */
#define IDD_DLG_GENERAL 10001
Modified: trunk/reactos/base/applications/servman/servman.rc
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/applications/servman/s…
==============================================================================
--- trunk/reactos/base/applications/servman/servman.rc (original)
+++ trunk/reactos/base/applications/servman/servman.rc Mon Jun 5 20:34:38 2006
@@ -18,6 +18,19 @@
END
IDI_SM_ICON ICON "res/system.ico"
-IDB_BUTTONS BITMAP DISCARDABLE "res/toolbar.bmp"
+
+/* main toolbar icons */
+IDB_PROP BITMAP DISCARDABLE "res/properties.bmp"
+IDB_REFRESH BITMAP DISCARDABLE "res/refresh.bmp"
+IDB_EXPORT BITMAP DISCARDABLE "res/export.bmp"
+IDB_CREATE BITMAP DISCARDABLE "res/create.bmp"
+IDB_DELETE BITMAP DISCARDABLE "res/delete.bmp"
+IDB_START BITMAP DISCARDABLE "res/start.bmp"
+IDB_STOP BITMAP DISCARDABLE "res/stop.bmp"
+IDB_PAUSE BITMAP DISCARDABLE "res/pause.bmp"
+IDB_RESTART BITMAP DISCARDABLE "res/restart.bmp"
+IDB_HELP BITMAP DISCARDABLE "res/help.bmp"
+IDB_EXIT BITMAP DISCARDABLE "res/exit.bmp"
+
#include "En.rc"