Ejemplo n.º 1
0
/**
 * Program initialization.
 */
static int Init()
{
    /* Load control cursors */
	LoadControlCursors();

    /* Register window classes */
    if ( RegisterWindowClasses() == 0 ) {
        return 0;
    }

    /* Initialize common controls library */
    InitCommonControlsEx( NULL);

    /* Initialize property list dll */
	if ( InitPropertyListDll( GetModuleHandle(NULL)) == 0 ) {
        return 0;
    }

    /* Initialize TWC and creating main window */
    if ( !twcInit() || !(twcCreateObject( &MainWnd, 1, HWND_DESKTOP)) ) {
        return 0;
    }
	hMainWnd = MainWnd.hwnd;

    /* Create property list */
    if ( CreatePropList() == 0) {
        return 0;
    }

    /* Set status bar z-order(top) */
    SetWindowPos( StatusBar.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

    /* Add toolbox and toolbar buttons */
    AddToolboxButtons(Toolbox.hwnd);
	AddMainToolbarButtons(MainToolbar.hwnd);

    /* Show main window */
    ShowWindow( hMainWnd, SW_SHOWMAXIMIZED);
	UpdateWindow( hMainWnd);

    twc_SetObjectsClientDataSize( sizeof( TWC_OBJECT_CLIENT_DATA));

    actNewProject();

    return 1;
}
Ejemplo n.º 2
0
LRESULT CALLBACK MainWndProc(HWND hDlg, 
							 UINT msg,
							 WPARAM wParam, 
							 LPARAM lParam)
{
	WNDPROC lpOldProc;
	PluginInfo *plugin;

	lpOldProc = (WNDPROC)GetProp( hDlg, "oldproc" );
	plugin = GetPluginInfo(hDlg);
	
	if (plugin != NULL)
	{
		if (msg == plugin->nPurgeCacheMsg)
		{
			PGPclPurgeCachedPassphrase(wParam);
			return TRUE;
		}
	}

	switch(msg)
	{
	case WM_SETTINGCHANGE:
	case WM_PALETTECHANGED:
	case WM_FONTCHANGE:
	case WM_SYSCOLORCHANGE:
		{
			HIMAGELIST hilToolbar;
			int nIndex;
			LRESULT lResult;
			
			lResult = CommonWndProc(hDlg, msg, wParam, lParam);

			nIndex = SendMessage(plugin->hToolbar, TB_COMMANDTOINDEX,
						IDC_PGPKEYS, 0);

			SendMessage(plugin->hToolbar, TB_DELETEBUTTON, nIndex, 0);
			plugin->nPGPKeysButton = -1;

			hilToolbar = (HIMAGELIST) SendMessage(plugin->hToolbar, 
										TB_GETIMAGELIST, 0, 0);
			
			ImageList_Remove(hilToolbar, plugin->nPGPKeysImage);

			AddMainToolbarButtons(plugin);
			return lResult;
		}

	case WM_DESTROY:
		{
			KillTimer(hDlg, WATCH_TOOLBAR_TIMER);
			break;
		}

	case WM_PARENTNOTIFY:
		if (LOWORD(wParam) == WM_CREATE)
			CreateMainWindowGUI(hDlg, plugin);
		break;
	
	case WM_TIMER:
		if (wParam == WATCH_TOOLBAR_TIMER)
		{
			int nState;

			nState = SendMessage(plugin->hToolbar, TB_GETSTATE, 
						IDC_PGPKEYS, 0);

			if (nState & TBSTATE_ENABLED)
				return 0;

			nState |= TBSTATE_ENABLED;
			SendMessage(plugin->hToolbar, TB_SETSTATE, IDC_PGPKEYS, 
				MAKELONG(nState, 0));

			return 0;
		}
		break;

	case WM_INITMENUPOPUP:
		{
			int nOptions;
			MENUITEMINFO menuInfo;
			char szOptions[256];
			char szMenu[256];
			LRESULT lResult;

			// For some reason, the old window proc disables the
			// menu items in the PGP popup menu. We'll enable
			// the items after the old proc disables them

			if ((HMENU) wParam == plugin->hPGPMenu)
			{
				lResult = CallWindowProc(lpOldProc, hDlg, msg, wParam, 
							lParam);
				
				EnableMenuItem(plugin->hPGPMenu, IDC_PREFS, 
					MF_BYCOMMAND | MF_ENABLED);
				EnableMenuItem(plugin->hPGPMenu, IDC_PGPKEYS, 
					MF_BYCOMMAND | MF_ENABLED);

				return lResult;
			}
			else if (plugin->bOE5)
			{
				UIGetString(szOptions, 254, IDS_MENU_OEOPTIONS);
				nOptions = GetMenuItemCount((HMENU) wParam);
				
				menuInfo.cbSize = sizeof(MENUITEMINFO);
				menuInfo.fMask = MIIM_TYPE | MIIM_SUBMENU | MIIM_ID;
				menuInfo.dwTypeData = szMenu;
				menuInfo.cch = 255;
				
				GetMenuItemInfo((HMENU) wParam, nOptions - 1, TRUE, 
					&menuInfo);

				if (!strcmp(szMenu, szOptions))
				{
					lResult = CallWindowProc(lpOldProc, hDlg, msg, wParam, 
								lParam);
					
					strcpy(szMenu, "&PGP");
					
					menuInfo.cbSize = sizeof(MENUITEMINFO);
					menuInfo.fMask = MIIM_TYPE | MIIM_ID | MIIM_SUBMENU | 
						MIIM_STATE;
					menuInfo.fType = MFT_STRING;
					menuInfo.fState = MFS_ENABLED;
					menuInfo.wID = IDC_PGPMENU;
					menuInfo.hSubMenu = plugin->hPGPMenu;
					menuInfo.dwTypeData = szMenu;
					
					InsertMenuItem((HMENU) wParam, nOptions, TRUE, &menuInfo);
					plugin->nPGPPosition = nOptions;
					return lResult;
				}
				else if (!strcmp(szMenu, "&PGP"))
				{
					lResult = CallWindowProc(lpOldProc, hDlg, msg, wParam, 
								lParam);
					
					DestroyMenu(plugin->hPGPMenu);
					plugin->hPGPMenu = CreatePopupMenu();
					
					UIGetString(szMenu, 254, IDS_MENU_PREFS);
					AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PREFS, 
						szMenu);
					
					UIGetString(szMenu, 254, IDS_MENU_PGPKEYS);
					AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PGPKEYS, 
						szMenu);
					
					menuInfo.cbSize = sizeof(MENUITEMINFO);
					menuInfo.fMask = MIIM_SUBMENU | MIIM_STATE;
					menuInfo.fState = MFS_ENABLED;
					menuInfo.hSubMenu = plugin->hPGPMenu;

					SetMenuItemInfo((HMENU) wParam, IDC_PGPMENU, FALSE,
						&menuInfo);

					menuInfo.fMask = MIIM_STATE;

					SetMenuItemInfo(plugin->hPGPMenu, IDC_PREFS, FALSE, 
						&menuInfo);
				
					SetMenuItemInfo(plugin->hPGPMenu, IDC_PGPKEYS, FALSE, 
						&menuInfo);

					return lResult;
				}
			}

			break;
		}
	}

	return CommonWndProc(hDlg, msg, wParam, lParam);
}
Ejemplo n.º 3
0
static LRESULT CALLBACK ToolbarParentWndProc(HWND hDlg, 
											 UINT msg,
											 WPARAM wParam, 
											 LPARAM lParam)
{
	WNDPROC lpOldProc;
	PluginInfo *plugin;
	LPNMHDR lpnm;
	LPNMTOOLBAR lptb;

	lpOldProc = (WNDPROC)GetProp( hDlg, "oldproc" );
	plugin = GetPluginInfo(hDlg);

	lpnm = (LPNMHDR) lParam;
	lptb = (LPNMTOOLBAR) lParam;

	switch(msg)
	{
	case WM_NOTIFY:
		{
			int nIndex;

			if (lpnm->code == TBN_BEGINADJUST)
			{
				nIndex = SendMessage(plugin->hToolbar, TB_COMMANDTOINDEX,
							IDC_PGPKEYS, 0);

				SendMessage(plugin->hToolbar, TB_DELETEBUTTON, nIndex, 0);
				plugin->nPGPKeysButton = -1;
			}

			if (lpnm->code == TBN_ENDADJUST)
			{
				TBBUTTON tbb[1];
				HIMAGELIST hilToolbar;
				int nX;
				int nY;
				LRESULT lResult;
				
				lResult = CallWindowProc(lpOldProc, hDlg, msg, wParam, 
							lParam);

				hilToolbar = (HIMAGELIST) SendMessage(plugin->hToolbar, 
											TB_GETIMAGELIST, 0, 0);

				ImageList_GetIconSize(hilToolbar, &nX, &nY);
				if ((nX < 20) && !(plugin->bSmallIcons))
					AddMainToolbarButtons(plugin);
				else if ((nX > 20) && plugin->bSmallIcons)
					AddMainToolbarButtons(plugin);
				else
				{
					tbb[0].iBitmap = plugin->nPGPKeysImage;
					tbb[0].idCommand = IDC_PGPKEYS;
					tbb[0].fsState = TBSTATE_ENABLED;
					tbb[0].fsStyle = TBSTYLE_BUTTON;
					tbb[0].dwData = 0;
					tbb[0].iString = plugin->nPGPKeysString;
					
					SendMessage(plugin->hToolbar, TB_ADDBUTTONS, 1, 
						(LPARAM) &tbb);
					
					plugin->nPGPKeysButton = SendMessage(plugin->hToolbar,
												TB_COMMANDTOINDEX,
												IDC_PGPKEYS,
												0);
				}

				return lResult;
			}

			break;
		}
	}

	return CallWindowProc(lpOldProc, hDlg, msg, wParam, lParam);
}
Ejemplo n.º 4
0
void CreateMainWindowGUI(HWND hDlg, PluginInfo *plugin)
{
	HWND hReBar;
	HWND hSizableRebar;
	int nIndex;
	MENUITEMINFO menuInfo;
	WNDPROC lpOldProc;
	char szText[255];
	
	hSizableRebar = FindWindowEx(hDlg, NULL, "SizableRebar", NULL);
	hReBar = FindWindowEx(hSizableRebar, NULL, "ReBarWindow32", NULL);

	if (plugin->bOE5)
	{
		plugin->hToolbar = FindWindowEx(hReBar, NULL, "ToolbarWindow32", 
								NULL);
		plugin->hMenuToolbar = FindWindowEx(hReBar, plugin->hToolbar, 
									"ToolbarWindow32", NULL);

		if (!plugin->hMenuToolbar || !plugin->hToolbar)
			return;
	}
	else
	{
		plugin->hMainMenu = GetMenu(hDlg);
		plugin->hToolbar = FindWindowEx(hReBar, NULL, "ToolbarWindow32", 
							NULL);

		if (!plugin->hMainMenu || !plugin->hToolbar)
			return;
	}
	
	if (plugin->bOE5)
	{
		if (plugin->hPGPMenu != NULL)
			DestroyMenu(plugin->hPGPMenu);
		
		plugin->hPGPMenu = CreatePopupMenu();
		
		UIGetString(szText, 254, IDS_MENU_PREFS);
		AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PREFS, szText);
		
		UIGetString(szText, 254, IDS_MENU_PGPKEYS);
		AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PGPKEYS, szText);
	}
	else
	{
		menuInfo.cbSize = sizeof(MENUITEMINFO);
		menuInfo.fMask = MIIM_SUBMENU;
		GetMenuItemInfo(plugin->hMainMenu, 4, TRUE, &menuInfo);
		if (menuInfo.hSubMenu != plugin->hPGPMenu)
		{
			if (plugin->hPGPMenu != NULL)
				DestroyMenu(plugin->hPGPMenu);
			
			plugin->hPGPMenu = CreatePopupMenu();
			plugin->nPGPPosition = 4;
			
			InsertMenu(plugin->hMainMenu, plugin->nPGPPosition, 
				MF_BYPOSITION | MF_STRING | MF_POPUP, 
				(UINT) plugin->hPGPMenu, "&PGP");
			
			UIGetString(szText, 254, IDS_MENU_PREFS);
			AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PREFS, 
				szText);
			
			UIGetString(szText, 254, IDS_MENU_PGPKEYS);
			AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PGPKEYS, 
				szText);
			
			DrawMenuBar(hDlg);
		}
	}
	
	SendMessage(plugin->hToolbar, TB_BUTTONSTRUCTSIZE,
		(WPARAM) sizeof(TBBUTTON), 0);
	
	nIndex = SendMessage(plugin->hToolbar, TB_COMMANDTOINDEX,
				IDC_PGPKEYS, 0);

	if (nIndex < 0)
	{
		AddMainToolbarButtons(plugin); 
		SetTimer(hDlg, WATCH_TOOLBAR_TIMER, 500, NULL);
	}
	
	// Look for status bar
	plugin->hStatusBar = FindWindowEx(hDlg, NULL, 
		"msctls_statusbar32", NULL);

	lpOldProc = (WNDPROC) GetProp(hReBar, "oldproc");
	if (lpOldProc == NULL)
	{
		// Save away toolbar parent window proc
		SetProp(hReBar, "oldproc", 
			(HANDLE) GetWindowLong(hReBar, GWL_WNDPROC)); 

		// Save plugin pointer
		SetProp(hReBar, PLUGIN_INFO_PROP, (HANDLE) plugin);

		// Subclass toolbar parent window
		SetWindowLong(hReBar, GWL_WNDPROC, (DWORD) ToolbarParentWndProc);
	}

	return;
}