/***************************************************************************** I N I T M E N U Name: initmenu.c Date: 21-Jan-1994 Creator: Unknown Description: This file contains the function to initialize the menus. History: 21-Jan-1994 John Fu, reformat and cleanup. 13-Mar-1995 John Fu, add Paste to Page *****************************************************************************/ #define WIN31 #define STRICT #include #include #include #include #include "common.h" #include "clipbook.h" #include "clipbrd.h" #include "clipdsp.h" #include "commctrl.h" #include "cvinit.h" #include "cvutil.h" #include "initmenu.h" /* * InitializeMenu * * this function controls the enabled/grayed state of * the menu items and the state of the toolbar buttons. * It is called when the selection within a listbox changes, * or the focus changes from one MDI child window to another. */ VOID PASCAL InitializeMenu ( HANDLE hmenu) { LPLISTENTRY lpLE = NULL; int index; int fMenu; int fButton; DWORD flags; assert(NULL != pActiveMDI); hmenu = GetMenu(hwndApp); flags = pActiveMDI->flags; if (flags & F_CLPBRD) { index = LB_ERR; } else if (pActiveMDI->hWndListbox) { index = (int)SendMessage (pActiveMDI->hWndListbox, LB_GETCURSEL, 0, 0L); if ( index != LB_ERR ) { SendMessage (pActiveMDI->hWndListbox, LB_GETTEXT, index, (LPARAM)(LPCSTR)&lpLE); } } else index = LB_ERR; EnableMenuItem (hmenu, IDM_OPEN, (flags & F_CLPBRD ? MF_ENABLED : MF_GRAYED)| MF_BYCOMMAND); EnableMenuItem (hmenu, IDM_SAVEAS, (CountClipboardFormats() && flags & (F_CLPBRD|F_LOCAL)? MF_ENABLED : MF_GRAYED) | MF_BYCOMMAND ); if ( fShareEnabled ) { // SHARE allowed? if ( (flags & F_LOCAL) && (index != LB_ERR) ) { fMenu = MF_ENABLED; fButton = TRUE; } else { fMenu = MF_GRAYED; fButton = FALSE; } EnableMenuItem (hmenu, IDM_SHARE, fMenu | MF_BYCOMMAND ); SendMessage ( hwndToolbar, TB_ENABLEBUTTON, IDM_SHARE, fButton ); // UNSHARE allowed? if ( (flags & F_LOCAL) && (index != LB_ERR) && IsShared(lpLE) ) { fMenu = MF_ENABLED; fButton = TRUE; } else { fMenu = MF_GRAYED; fButton = FALSE; } EnableMenuItem (hmenu, IDM_UNSHARE, fMenu | MF_BYCOMMAND); SendMessage ( hwndToolbar, TB_ENABLEBUTTON, IDM_UNSHARE, fButton ); } if ( fNetDDEActive ) { // DISCONNECT allowed? EnableMenuItem (hmenu, IDM_DISCONNECT, (flags & ( F_LOCAL | F_CLPBRD ) ? MF_GRAYED : MF_ENABLED) | MF_BYCOMMAND ); SendMessage ( hwndToolbar, TB_ENABLEBUTTON, IDM_DISCONNECT, flags & ( F_LOCAL | F_CLPBRD ) ? FALSE : TRUE ); } else // If netdde isn't active, we can't connect { EnableMenuItem(hmenu, IDM_CONNECT, MF_GRAYED | MF_BYCOMMAND); EnableMenuItem(hmenu, IDM_DISCONNECT, MF_GRAYED | MF_BYCOMMAND); SendMessage(hwndToolbar, TB_ENABLEBUTTON, IDM_CONNECT, FALSE); SendMessage(hwndToolbar, TB_ENABLEBUTTON, IDM_DISCONNECT, FALSE); } // Delete allowed? if ( ( flags & F_LOCAL && index != LB_ERR ) || flags & F_CLPBRD && CountClipboardFormats() ) { fMenu = MF_ENABLED; fButton = TRUE; } else { fMenu = MF_GRAYED; fButton = FALSE; } EnableMenuItem (hmenu, IDM_DELETE, fMenu | MF_BYCOMMAND); SendMessage ( hwndToolbar, TB_ENABLEBUTTON, IDM_DELETE, fButton ); // a page selected? if ( index != LB_ERR ) { fMenu = MF_ENABLED; fButton = TRUE; } else { fMenu = MF_GRAYED; fButton = FALSE; } EnableMenuItem (hmenu, IDM_COPY, fMenu | MF_BYCOMMAND); SendMessage ( hwndToolbar, TB_ENABLEBUTTON, IDM_COPY, fButton ); // Paste Allowed? if (CountClipboardFormats() && hwndActiveChild == hwndLocal && !(flags & F_CLPBRD)) { fMenu = MF_ENABLED; fButton = TRUE; } else { fMenu = MF_GRAYED; fButton = FALSE; } EnableMenuItem (hmenu, IDM_KEEP, fMenu | MF_BYCOMMAND); SendMessage (hwndToolbar, TB_ENABLEBUTTON, IDM_KEEP, fButton ); // if a page is selected if (LB_ERR != index) EnableMenuItem (hmenu, IDM_PASTE_PAGE, fMenu|MF_BYCOMMAND); else EnableMenuItem (hmenu, IDM_PASTE_PAGE, MF_GRAYED|MF_BYCOMMAND); // TOOLBAR, STATUS BAR CheckMenuItem ( hmenu, IDM_TOOLBAR, fToolBar ? MF_CHECKED : MF_UNCHECKED ); CheckMenuItem ( hmenu, IDM_STATUSBAR, fStatus ? MF_CHECKED:MF_UNCHECKED ); // disable some view options if clipboard window EnableMenuItem (hmenu, IDM_LISTVIEW, (flags & F_CLPBRD ? MF_GRAYED : MF_ENABLED) | MF_BYCOMMAND ); EnableMenuItem (hmenu, IDM_PREVIEWS, (flags & F_CLPBRD ? MF_GRAYED : MF_ENABLED) | MF_BYCOMMAND ); EnableMenuItem (hmenu, IDM_PAGEVIEW, ((flags & F_CLPBRD) || index != LB_ERR ? MF_ENABLED : MF_GRAYED) | MF_BYCOMMAND); SendMessage (hwndToolbar, TB_ENABLEBUTTON, IDM_LISTVIEW, flags & F_CLPBRD ? FALSE : TRUE); SendMessage (hwndToolbar, TB_ENABLEBUTTON, IDM_PREVIEWS, flags & F_CLPBRD ? FALSE : TRUE); SendMessage (hwndToolbar, TB_ENABLEBUTTON, IDM_PAGEVIEW, (( flags & F_CLPBRD ) || index != LB_ERR ) ? TRUE : FALSE ); // Disable "Security" menu for other than Local Clipbook window // or if there's no item selected in the clipbook window fMenu = MF_GRAYED | MF_BYCOMMAND; if ((flags & F_LOCAL) && LB_ERR != index) { fMenu = MF_ENABLED | MF_BYCOMMAND; } EnableMenuItem (hmenu, IDM_PERMISSIONS, fMenu); EnableMenuItem (hmenu, IDM_OWNER, fMenu); EnableMenuItem (hmenu, IDM_AUDITING, fAuditEnabled ? fMenu : MF_GRAYED | MF_BYCOMMAND); // check selected view... CheckMenuItem (hmenu, IDM_LISTVIEW, pActiveMDI->DisplayMode == DSP_LIST ? MF_CHECKED : MF_UNCHECKED ); CheckMenuItem (hmenu, IDM_PREVIEWS, pActiveMDI->DisplayMode == DSP_PREV ? MF_CHECKED : MF_UNCHECKED ); CheckMenuItem (hmenu, IDM_PAGEVIEW, pActiveMDI->DisplayMode == DSP_PAGE ? MF_CHECKED : MF_UNCHECKED ); SendMessage (hwndToolbar, TB_CHECKBUTTON, IDM_LISTVIEW, pActiveMDI->DisplayMode == DSP_LIST ? TRUE : FALSE ); SendMessage (hwndToolbar, TB_CHECKBUTTON, IDM_PREVIEWS, pActiveMDI->DisplayMode == DSP_PREV ? TRUE : FALSE ); SendMessage (hwndToolbar, TB_CHECKBUTTON, IDM_PAGEVIEW, pActiveMDI->DisplayMode == DSP_PAGE ? TRUE : FALSE ); DrawMenuBar(hwndApp); return; }