1668 lines
46 KiB
C++
1668 lines
46 KiB
C++
//=============================================================================
|
|
// (c) Copyright Wang Laboratories, Inc. 1995 All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
// Project: Norway - Image Editor
|
|
//
|
|
// Component: CIEditMainToolBar
|
|
//
|
|
// File Name: maintbar.cpp
|
|
//
|
|
// Class: CIEMainToolBar
|
|
//
|
|
// Functions:
|
|
//-----------------------------------------------------------------------------
|
|
// Maintenance Log:
|
|
/*
|
|
$Header: S:\products\wangview\norway\iedit95\maintbar.cpv 1.37 05 Apr 1996 14:59:32 MMB $
|
|
$Log: S:\products\wangview\norway\iedit95\maintbar.cpv $
|
|
|
|
Rev 1.37 05 Apr 1996 14:59:32 MMB
|
|
added scan new and new page buttons to the view toolbar
|
|
|
|
Rev 1.36 09 Jan 1996 13:53:00 GSAGER
|
|
added thumbnail only support to the srvr toolbar
|
|
|
|
Rev 1.35 13 Dec 1995 12:35:02 MMB
|
|
fix zoom edit box to allow upto 8 characters
|
|
|
|
Rev 1.34 01 Dec 1995 10:44:16 MMB
|
|
fix bug# 5494
|
|
|
|
Rev 1.33 09 Nov 1995 16:15:42 GMP
|
|
don't change to system font on double byte systems.
|
|
|
|
Rev 1.32 08 Nov 1995 08:27:36 LMACLENNAN
|
|
new setTbarStyle call, move LoadResource below SetSizes in UpdateToolBar
|
|
|
|
Rev 1.31 06 Nov 1995 10:29:16 MMB
|
|
changed calls to UpdateToolbar (0,0) to (2,0) to fix the positions of the
|
|
scale and page boxes on the toolbar when in edit & view mode
|
|
|
|
Rev 1.30 31 Oct 1995 15:51:10 LMACLENNAN
|
|
re-wrote for efficiency
|
|
|
|
Rev 1.29 13 Oct 1995 19:35:36 GMP
|
|
force toolbar to come up with large buttons to cover up bug with small
|
|
buttons in MSVC4.0
|
|
|
|
Rev 1.28 04 Oct 1995 15:07:32 MMB
|
|
dflt zoom = 50%
|
|
|
|
Rev 1.27 20 Sep 1995 15:14:34 LMACLENNAN
|
|
move rect init from constructor to calcallsizes
|
|
|
|
Rev 1.26 19 Sep 1995 18:16:06 GMP
|
|
make Fit To zooms update the toolbar.
|
|
|
|
Rev 1.25 16 Sep 1995 12:36:04 MMB
|
|
remove fit to and other options from the zoom combo box in the toolbar
|
|
|
|
Rev 1.24 15 Sep 1995 17:27:04 LMACLENNAN
|
|
fixes to better get OLE state to force app toolbar for OLE Linking
|
|
|
|
Rev 1.23 14 Sep 1995 11:33:14 MMB
|
|
font in page number, toolbar buttons changes
|
|
|
|
Rev 1.22 12 Sep 1995 11:41:40 MMB
|
|
toolbar on & off changes
|
|
|
|
Rev 1.21 08 Sep 1995 15:36:58 LMACLENNAN
|
|
decrement toolbar size by 3 for OLE inplace
|
|
|
|
Rev 1.20 07 Sep 1995 16:29:18 MMB
|
|
move from BOLD to NORMAL in zoom dlg box
|
|
|
|
Rev 1.19 06 Sep 1995 16:18:36 LMACLENNAN
|
|
SetOurButtons
|
|
|
|
Rev 1.18 05 Sep 1995 14:52:00 LMACLENNAN
|
|
update button arrays for OLE (have thumb/1page now)
|
|
|
|
Rev 1.17 30 Aug 1995 18:13:38 LMACLENNAN
|
|
had wrong server bitmap ID
|
|
|
|
Rev 1.16 30 Aug 1995 17:04:02 MMB
|
|
remove code for bForceViewMenu
|
|
|
|
Rev 1.15 29 Aug 1995 18:05:54 MMB
|
|
fixed dynamic toolbar bugs
|
|
|
|
Rev 1.14 29 Aug 1995 15:14:34 MMB
|
|
added dynamic view mode
|
|
|
|
Rev 1.13 14 Aug 1995 13:53:58 LMACLENNAN
|
|
new create toolbar call; do setowner
|
|
|
|
Rev 1.12 10 Aug 1995 14:49:34 LMACLENNAN
|
|
use CFrameWnd
|
|
|
|
Rev 1.11 09 Aug 1995 15:07:30 LMACLENNAN
|
|
finish updates for OLE toolbars
|
|
|
|
Rev 1.10 09 Aug 1995 13:36:20 MMB
|
|
include loading of server toolbar bitmaps
|
|
|
|
Rev 1.9 08 Aug 1995 15:32:30 LMACLENNAN
|
|
updates for buttons for OLE toolbar
|
|
|
|
Rev 1.8 31 Jul 1995 09:21:48 MMB
|
|
added code to load the View menu on demand when in automation
|
|
|
|
Rev 1.7 27 Jun 1995 12:28:04 MMB
|
|
changed order of buttons in the embedded case toolbar
|
|
|
|
Rev 1.6 20 Jun 1995 06:55:36 LMACLENNAN
|
|
from miki
|
|
|
|
Rev 1.5 19 Jun 1995 07:28:14 LMACLENNAN
|
|
from miki
|
|
|
|
Rev 1.4 14 Jun 1995 07:21:28 LMACLENNAN
|
|
from Miki
|
|
|
|
Rev 1.3 13 Jun 1995 08:08:38 LMACLENNAN
|
|
from miki
|
|
|
|
Rev 1.2 12 Jun 1995 11:49:14 MMB
|
|
from miki
|
|
|
|
Rev 1.1 07 Jun 1995 15:58:44 LMACLENNAN
|
|
toolbar for embedded app
|
|
|
|
Rev 1.0 31 May 1995 09:28:24 MMB
|
|
Initial entry
|
|
*/
|
|
|
|
//=============================================================================
|
|
|
|
// ----------------------------> Includes <-------------------------------
|
|
#include "stdafx.h"
|
|
#include "iedit.h"
|
|
#include "ieditdoc.h"
|
|
#include "ieditnum.h"
|
|
#include "items.h"
|
|
// ----------------------------> Globals <-------------------------------
|
|
|
|
// works with definition in ieditetc.h
|
|
#ifdef _DEBUG
|
|
#define MYTRCENTRY(str) TRACE1("In ToolBar::%s\r\n", str);
|
|
#endif
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
IMPLEMENT_DYNCREATE(CIEMainToolBar, CToolBar)
|
|
|
|
// returned from GetIdOrSetting()
|
|
// we have APP/OLE, SM/LG, MON/COL, EDIT/VIEW
|
|
// PLEASE NOTE!!!
|
|
// We'll use this "binary" system to return values
|
|
// As this is written, we can assign the binary values
|
|
// to the corresponding fields:
|
|
// MON/COL = 0/1
|
|
// SM/LG = 0/2
|
|
// EDIT/VIEW = 0/4
|
|
// APP/OLE = 0/8
|
|
//
|
|
// these can build items below
|
|
#define TBAR_MON 0
|
|
#define TBAR_COL 1
|
|
#define TBAR_SM 0
|
|
#define TBAR_LG 2
|
|
#define TBAR_EDIT 0
|
|
#define TBAR_VIEW 4
|
|
#define TBAR_APP 0
|
|
#define TBAR_OLE 8
|
|
|
|
#define APP_EDIT_SM_MON (TBAR_APP + TBAR_EDIT + TBAR_SM + TBAR_MON) // 0
|
|
#define APP_EDIT_SM_COL (TBAR_APP + TBAR_EDIT + TBAR_SM + TBAR_COL) // 1
|
|
#define APP_EDIT_LG_MON (TBAR_APP + TBAR_EDIT + TBAR_LG + TBAR_MON) // 2
|
|
#define APP_EDIT_LG_COL (TBAR_APP + TBAR_EDIT + TBAR_LG + TBAR_COL) // 3
|
|
#define APP_VIEW_SM_MON (TBAR_APP + TBAR_VIEW + TBAR_SM + TBAR_MON) // 4
|
|
#define APP_VIEW_SM_COL (TBAR_APP + TBAR_VIEW + TBAR_SM + TBAR_COL) // 5
|
|
#define APP_VIEW_LG_MON (TBAR_APP + TBAR_VIEW + TBAR_LG + TBAR_MON) // 6
|
|
#define APP_VIEW_LG_COL (TBAR_APP + TBAR_VIEW + TBAR_LG + TBAR_COL) // 7
|
|
#define OLE_EDIT_SM_MON (TBAR_OLE + TBAR_EDIT + TBAR_SM + TBAR_MON) // 8
|
|
#define OLE_EDIT_SM_COL (TBAR_OLE + TBAR_EDIT + TBAR_SM + TBAR_COL) // 9
|
|
#define OLE_EDIT_LG_MON (TBAR_OLE + TBAR_EDIT + TBAR_LG + TBAR_MON) // 10
|
|
#define OLE_EDIT_LG_COL (TBAR_OLE + TBAR_EDIT + TBAR_LG + TBAR_COL) // 11
|
|
#define OLE_VIEW_SM_MON (TBAR_OLE + TBAR_VIEW + TBAR_SM + TBAR_MON) // 12
|
|
#define OLE_VIEW_SM_COL (TBAR_OLE + TBAR_VIEW + TBAR_SM + TBAR_COL) // 13
|
|
#define OLE_VIEW_LG_MON (TBAR_OLE + TBAR_VIEW + TBAR_LG + TBAR_MON) // 14
|
|
#define OLE_VIEW_LG_COL (TBAR_OLE + TBAR_VIEW + TBAR_LG + TBAR_COL) // 15
|
|
|
|
// also, separate, we have horiz, vert
|
|
#define TBAR_HORIZ 0
|
|
#define TBAR_VERT 1
|
|
|
|
// toolbar buttons - IDs are command buttons : EDIT MODE
|
|
static UINT BASED_CODE Editbuttons[] =
|
|
{
|
|
ID_FILE_NEW_SCAN,
|
|
ID_FILE_NEW_BLANKDOCUMENT,
|
|
ID_IEDIT_FILE_OPEN,
|
|
ID_IEDIT_FILE_SAVE,
|
|
ID_SEPARATOR,
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_ANNOTATION_SHOWANNOTATIONTOOLBOX,
|
|
ID_SEPARATOR,
|
|
ID_SEPARATOR, // seperator for the zoom combo - box
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_SEPARATOR, // seperator for the page edit - box
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
static UINT BASED_CODE EditbuttonsVertical[] =
|
|
{
|
|
ID_FILE_NEW_SCAN,
|
|
ID_FILE_NEW_BLANKDOCUMENT,
|
|
ID_IEDIT_FILE_OPEN,
|
|
ID_IEDIT_FILE_SAVE,
|
|
ID_SEPARATOR,
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_ANNOTATION_SHOWANNOTATIONTOOLBOX,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
// toolbar buttons - IDs are command buttons : VIEW MODE
|
|
static UINT BASED_CODE Viewbuttons[] =
|
|
{
|
|
ID_FILE_NEW_SCAN,
|
|
ID_FILE_NEW_BLANKDOCUMENT,
|
|
ID_IEDIT_FILE_OPEN,
|
|
ID_SEPARATOR,
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_SEPARATOR, // seperator for the zoom combo - box
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_SEPARATOR, // seperator for the page edit - box
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
static UINT BASED_CODE ViewbuttonsVertical[] =
|
|
{
|
|
ID_FILE_NEW_SCAN,
|
|
ID_FILE_NEW_BLANKDOCUMENT,
|
|
ID_IEDIT_FILE_OPEN,
|
|
ID_SEPARATOR,
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_SEPARATOR, // seperator for the page edit - box
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
// toolbar buttons - IDs are command buttons : EDIT EMBEDDED OBJECT MODE
|
|
static UINT BASED_CODE Embedbuttons[] =
|
|
{
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_ANNOTATION_SHOWANNOTATIONTOOLBOX,
|
|
ID_SEPARATOR,
|
|
ID_SEPARATOR, // seperator for the zoom combo - box
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_SEPARATOR, // seperator for the page edit - box
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
// toolbar buttons - IDs are command buttons : VIEW EMBEDDED OBJECT MODE
|
|
static UINT BASED_CODE EmbedViewbuttons[] =
|
|
{
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_SEPARATOR, // seperator for the zoom combo - box
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_SEPARATOR, // seperator for the page edit - box
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
// toolbar buttons - IDs are command buttons : EDIT EMBEDDED OBJECT MODE
|
|
static UINT BASED_CODE EmbedbuttonsVertical[] =
|
|
{
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_ANNOTATION_SHOWANNOTATIONTOOLBOX,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
// toolbar buttons - IDs are command buttons : VIEW EMBEDDED OBJECT MODE
|
|
static UINT BASED_CODE EmbedViewbuttonsVertical[] =
|
|
{
|
|
ID_IEDIT_FILE_PRINT,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_SELECT,
|
|
ID_EDIT_DRAG,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMIN,
|
|
ID_ZOOM_ZOOMOUT,
|
|
ID_SEPARATOR,
|
|
ID_ZOOM_ZOOMTOSELECTION,
|
|
ID_SEPARATOR,
|
|
ID_EDIT_ROTATELEFT,
|
|
ID_EDIT_ROTATERIGHT,
|
|
ID_SEPARATOR,
|
|
ID_PAGE_PREVIOUS,
|
|
ID_PAGE_NEXT,
|
|
ID_SEPARATOR,
|
|
ID_VIEW_ONEPAGE,
|
|
ID_VIEW_THUMBNAILS,
|
|
ID_VIEW_PAGEANDTHUMBNAILS,
|
|
};
|
|
|
|
|
|
#define BUTTON_LARGE_X 24
|
|
#define BUTTON_LARGE_Y 24
|
|
|
|
#define BUTTON_SMALL_X 16
|
|
#define BUTTON_SMALL_Y 15
|
|
|
|
#define BUTTON_ADDON_X 8
|
|
#define BUTTON_ADDON_Y 7
|
|
|
|
// ----------------------------> Message Map <-------------------------------
|
|
BEGIN_MESSAGE_MAP(CIEMainToolBar, CToolBar)
|
|
//{{AFX_MSG_MAP(CIEMainToolBar)
|
|
ON_WM_SIZE()
|
|
//}}AFX_MSG_MAP
|
|
// Global help commands
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
// Function: CIEMainToolBar ()
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
CIEMainToolBar::CIEMainToolBar ()
|
|
{
|
|
MYTRC0("TOOL:Constructor ++Tool \r\n");
|
|
|
|
m_bAreButtonsInColor = theApp.GetProfileInt (szEtcStr, szClrButtonsStr, TRUE);
|
|
m_bAreButtonsLarge = theApp.GetProfileInt (szEtcStr, szLgButtonsStr, FALSE);
|
|
//m_bAreButtonsLarge = TRUE;
|
|
|
|
// LDM /GWS 09/20/95 MOVED ALL RECT INIT
|
|
// down into CalcAllSizes so that it can be picked up
|
|
// by the case where OLE Linking re-calls in here
|
|
// to rebuild toolbars
|
|
|
|
m_bCreate = FALSE;
|
|
m_bOleInplace = FALSE;
|
|
m_bSawOleLink = 0;
|
|
m_nBarSetting = 55;
|
|
m_nBarHorVert = TBAR_HORIZ;
|
|
}
|
|
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
// Function: ~CIEMainToolBar ()
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
CIEMainToolBar::~CIEMainToolBar ()
|
|
{
|
|
MYTRC0("TOOL:Destructor --Tool \r\n");
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: IsOleEmbed
|
|
//
|
|
// This function determines if its OLE embedded or not....
|
|
// Needed for OLE linking instances when the full app is alive,
|
|
// but m_olelaunch is not enuf to say embedded tool bard
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::IsOleEmbed()
|
|
{
|
|
CIEditDoc* pDoc;
|
|
BOOL result = FALSE; // default to NO
|
|
|
|
// this much can be the default for YES..
|
|
if (theApp.m_olelaunch == LAUNCHTYPE_EMBED)
|
|
{
|
|
result = TRUE;
|
|
// now look in detail to see if really embedded
|
|
if (theApp.m_pMainWnd != NULL)
|
|
{
|
|
pDoc = (CIEditDoc*)((CFrameWnd*)theApp.m_pMainWnd)->GetActiveDocument();
|
|
if (pDoc != NULL)
|
|
{
|
|
// this will be the case for linking
|
|
if (!pDoc->IsitEmbed())
|
|
{
|
|
result = FALSE;
|
|
if (!m_bSawOleLink)
|
|
m_bSawOleLink = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return (result);
|
|
|
|
// this junk was older logic to only say true once we had all windows.
|
|
// causes problems during normal OLE startup because at first its not true
|
|
// then becomes true later...
|
|
#if(0) // try another way..
|
|
|
|
// only say yes if we have it all together
|
|
if (theApp.m_olelaunch == LAUNCHTYPE_EMBED)
|
|
{
|
|
if (theApp.m_pMainWnd != NULL)
|
|
{
|
|
pDoc = (CIEditDoc*)((CFrameWnd*)theApp.m_pMainWnd)->GetActiveDocument();
|
|
if (pDoc != NULL)
|
|
{
|
|
// linking returns false
|
|
if (pDoc->IsitEmbed())
|
|
result = TRUE;
|
|
}
|
|
}
|
|
}
|
|
return (result);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: Create (CFrameWnd* pIEFrame)
|
|
//
|
|
// This function will create the toolbar passing it the appropriate array of
|
|
// buttons depending on whether the application is in View only mode or in Edit
|
|
// mode. Further, this function will also create the Scale Factors combo box and
|
|
// insert it in the appropriate place on the tool bar - it will also find the
|
|
// edit box child of the combo box and subclass it so that the user can only
|
|
// enter characters we consider valid. It will then create the page edit box,
|
|
// and size and insert it appropriately in the toolbar, the page edit box is
|
|
// already created from a special class derived from CEdit that will not let
|
|
// the user enter any invalid characters or invalid page numbers
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::Create (CFrameWnd* pIEFrame, CFrameWnd* pOwn, BOOL setown)
|
|
{
|
|
SHOWENTRY("Create");
|
|
|
|
m_bCreate = TRUE;
|
|
|
|
if (!CToolBar::Create ((CWnd*)pIEFrame))
|
|
return FALSE;
|
|
|
|
CString szTmp;
|
|
szTmp.LoadString (IDS_TOOLBAR_TITLE);
|
|
SetWindowText (szTmp);
|
|
szTmp = (LPCTSTR) NULL;
|
|
|
|
// This is for Inplace frames to associate the toolbar properly
|
|
if (setown)
|
|
{
|
|
m_bOleInplace = TRUE;
|
|
SetOwner(pOwn);
|
|
}
|
|
|
|
if (!UpdateToolbar(1,0))
|
|
return FALSE;
|
|
|
|
|
|
MYTRC0("TOOL:CreateDONE\r\n");
|
|
|
|
m_bCreate = FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: EnableScaleBox (BOOL bEnable)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEMainToolBar::EnableScaleBox (BOOL bEnable)
|
|
{
|
|
SHOWENTRY("EnableScale");
|
|
|
|
m_cbScaleFactors.EnableWindow (bEnable);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: SetTBarStyle - combines setting of color/BW and Large/Small
|
|
//
|
|
// Normally, inputs are BOOLEAN values. But, if set to 99, will leave unchanged
|
|
// IN OTHER WORDS - if you use 99, that wont be considered TRUE.
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::SetTbarStyle (UINT nColor, UINT nLarge)
|
|
{
|
|
SHOWENTRY("SetTbarStyle");
|
|
|
|
BOOL doit = FALSE;
|
|
BOOL bVal;
|
|
|
|
// if not to be left alone...
|
|
if (nColor != 99)
|
|
{
|
|
// Boolean convert
|
|
if (nColor)
|
|
bVal = TRUE;
|
|
else
|
|
bVal = FALSE;
|
|
|
|
// only if different...
|
|
if (bVal != m_bAreButtonsInColor)
|
|
{
|
|
m_bAreButtonsInColor = bVal;
|
|
doit = TRUE;
|
|
}
|
|
}
|
|
|
|
|
|
// if not to be left alone...
|
|
if (nLarge != 99)
|
|
{
|
|
// Boolean convert
|
|
if (nLarge)
|
|
bVal = TRUE;
|
|
else
|
|
bVal = FALSE;
|
|
|
|
// only if different...
|
|
if (bVal != m_bAreButtonsLarge)
|
|
{
|
|
m_bAreButtonsLarge = bVal;
|
|
doit = TRUE;
|
|
}
|
|
}
|
|
|
|
if (doit)
|
|
{
|
|
UpdateToolbar (2,0);
|
|
}
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// Function: ShowSelectionInZoomBox (float fZoomFactor, ScaleFactors eFitTo)
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::ShowSelectionInZoomBox (float fZoomFactor, ScaleFactors eFitTo)
|
|
{
|
|
SHOWENTRY("ShowSelinZoom");
|
|
|
|
int nSel;
|
|
CString szTmp;
|
|
|
|
switch (eFitTo)
|
|
{
|
|
case Preset_Factors :
|
|
if (fZoomFactor == 25.00) nSel = 0;
|
|
else if (fZoomFactor == 50.00) nSel = 1;
|
|
else if (fZoomFactor == 75.00) nSel = 2;
|
|
else if (fZoomFactor == 100.00) nSel = 3;
|
|
else if (fZoomFactor == 200.00) nSel = 4;
|
|
else if (fZoomFactor == 400.00) nSel = 5;
|
|
goto do_the_easy;
|
|
break;
|
|
|
|
case FitToWidth :
|
|
nSel = 6;
|
|
goto do_the_easy;
|
|
break;
|
|
|
|
case FitToHeight :
|
|
nSel = 7;
|
|
goto do_the_easy;
|
|
break;
|
|
|
|
case BestFit :
|
|
nSel = 8;
|
|
goto do_the_easy;
|
|
break;
|
|
|
|
case ActualSize :
|
|
nSel = 9;
|
|
goto do_the_easy;
|
|
break;
|
|
|
|
case Custom :
|
|
{
|
|
g_pAppOcxs->ValTransZoomFactor (TRUE, szTmp, fZoomFactor);
|
|
|
|
// set the text in the combo box
|
|
m_cbScaleFactors.SetCurSel (-1);
|
|
m_cbScaleFactors.SetWindowText (szTmp);
|
|
return (TRUE);
|
|
}
|
|
break;
|
|
}
|
|
|
|
do_the_easy :
|
|
|
|
g_pAppOcxs->ValTransZoomFactor (TRUE, szTmp, fZoomFactor);
|
|
m_cbScaleFactors.SetWindowText ( szTmp);
|
|
return (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: EnablePageBox (BOOL bEnable)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEMainToolBar::EnablePageBox (BOOL bEnable)
|
|
{
|
|
SHOWENTRY("EnabPgBx");
|
|
|
|
m_ebPageNumber.EnableWindow (bEnable);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: SetPageNumberInPageBox (long lPageNumber)
|
|
//
|
|
// Arguments :
|
|
// long lPageNumber - this will be converted and displayed in the page edit
|
|
// box. No effort is made to make sure that it is a valid page number
|
|
//-----------------------------------------------------------------------------
|
|
void CIEMainToolBar::SetPageNumberInPageBox (long lPageNumber)
|
|
{
|
|
SHOWENTRY("SetPage#");
|
|
// set the page number in the page edit box to the parameter that is passed in
|
|
char szTmp[10];
|
|
_ltoa (lPageNumber, szTmp, 10);
|
|
m_ebPageNumber.SetWindowText (szTmp);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: SetVertical ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::SetVertical ()
|
|
{
|
|
SHOWENTRY("SetVert");
|
|
|
|
if (m_nBarHorVert != TBAR_VERT)
|
|
{
|
|
m_nBarHorVert = TBAR_VERT;
|
|
|
|
if (!UpdateToolbar(0,2))
|
|
return FALSE;
|
|
}
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: SetHorizontal ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::SetHorizontal ()
|
|
{
|
|
SHOWENTRY("SetHorz");
|
|
|
|
if (m_nBarHorVert != TBAR_HORIZ)
|
|
{
|
|
m_nBarHorVert = TBAR_HORIZ;
|
|
|
|
if (!UpdateToolbar(2,1))
|
|
return FALSE;
|
|
}
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: SetOurButtons ()
|
|
//
|
|
// to preserve original logic, MODE allows
|
|
// 0 - default
|
|
// 1 - forceview
|
|
// 2 - forcededit
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::SetOurButtons (BOOL vertical, UINT mode)
|
|
{
|
|
SHOWENTRY("SetOurButts");
|
|
|
|
BOOL retval = TRUE;
|
|
BOOL bView = theApp.GetViewMode();
|
|
UINT* array;
|
|
int arraysize;
|
|
|
|
// FYI the 8 arrays....
|
|
//Editbuttons
|
|
//Viewbuttons
|
|
//Embedbuttons
|
|
//EmbedViewbuttons
|
|
//EditbuttonsVertical
|
|
//ViewbuttonsVertical
|
|
//EmbedbuttonsVertical
|
|
//EmbedViewbuttonsVertical
|
|
|
|
// force mode if we have to
|
|
if (1 == mode)
|
|
bView = TRUE;
|
|
else if (2 == mode)
|
|
bView = FALSE;
|
|
|
|
if (bView) // in view mode...
|
|
{
|
|
// OLE
|
|
if (IsOleEmbed())
|
|
{
|
|
if (vertical)
|
|
{
|
|
array = EmbedViewbuttonsVertical;
|
|
arraysize = (sizeof (EmbedViewbuttonsVertical)/sizeof (UINT));
|
|
}
|
|
else
|
|
{
|
|
array = EmbedViewbuttons;
|
|
arraysize = (sizeof (EmbedViewbuttons)/sizeof (UINT));
|
|
}
|
|
}
|
|
else // regular
|
|
{
|
|
if (vertical)
|
|
{
|
|
array = ViewbuttonsVertical;
|
|
arraysize = (sizeof (ViewbuttonsVertical)/sizeof (UINT));
|
|
}
|
|
else
|
|
{
|
|
array = Viewbuttons;
|
|
arraysize = (sizeof (Viewbuttons)/sizeof (UINT));
|
|
}
|
|
}
|
|
}
|
|
else // not in view mode
|
|
{
|
|
// OLE
|
|
if (IsOleEmbed())
|
|
{
|
|
if (vertical)
|
|
{
|
|
array = EmbedbuttonsVertical;
|
|
arraysize = (sizeof (EmbedbuttonsVertical)/sizeof (UINT));
|
|
}
|
|
else
|
|
{
|
|
array = Embedbuttons;
|
|
arraysize = (sizeof (Embedbuttons)/sizeof (UINT));
|
|
}
|
|
}
|
|
else // regular
|
|
{
|
|
if (vertical)
|
|
{
|
|
array = EditbuttonsVertical;
|
|
arraysize = (sizeof (EditbuttonsVertical)/sizeof (UINT));
|
|
}
|
|
else
|
|
{
|
|
array = Editbuttons;
|
|
arraysize = (sizeof (Editbuttons)/sizeof (UINT));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// In any case, if OLE, and inplace, reduce size of array by three
|
|
// so that the One Page and Page& Thumb buttons (and last separator)
|
|
// are omitted from tne toolbar..
|
|
if (IsOleEmbed())
|
|
if (m_bOleInplace)
|
|
arraysize -= 3;
|
|
|
|
if (!SetButtons (array, arraysize))
|
|
retval = FALSE;
|
|
|
|
return (retval);
|
|
}
|
|
|
|
|
|
|
|
//=============================================================================
|
|
// Function: OnSize(UINT nType, int cx, int cy)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEMainToolBar::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
SHOWENTRY("OnSize");
|
|
|
|
// prevent if in creation and if from enable docking (sizes too big still)
|
|
if (!m_bCreate && ((cx < 63000) && (cy < 63000)))
|
|
if (cx > cy)
|
|
SetHorizontal ();
|
|
else
|
|
SetVertical ();
|
|
|
|
CToolBar::OnSize(nType, cx, cy);
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// Function: GetIdOrSetting ()
|
|
//
|
|
// Input enum is set to either Get_ResID or Get_Setting
|
|
//-----------------------------------------------------------------------------
|
|
UINT CIEMainToolBar::GetIdOrSetting(IDORSET eIdSet)
|
|
{
|
|
UINT result;
|
|
UINT index = 0;
|
|
|
|
if (IsOleEmbed())
|
|
index += TBAR_OLE;
|
|
else
|
|
index += TBAR_APP;
|
|
|
|
if (theApp.GetViewMode ())
|
|
index += TBAR_VIEW;
|
|
else
|
|
index += TBAR_EDIT;
|
|
|
|
if (m_bAreButtonsLarge)
|
|
index += TBAR_LG;
|
|
else
|
|
index += TBAR_SM;
|
|
|
|
if (m_bAreButtonsInColor)
|
|
index += TBAR_COL;
|
|
else
|
|
index += TBAR_MON;
|
|
|
|
// for resources, find it..
|
|
if (Get_ResID == eIdSet)
|
|
{
|
|
switch (index)
|
|
{
|
|
case APP_EDIT_SM_MON:
|
|
result = IDB_IEDIT_EDIT_MONO_TOOLBAR;
|
|
break;
|
|
case APP_EDIT_SM_COL:
|
|
result = IDR_IEDIT_EDIT_TOOLBAR;
|
|
break;
|
|
case APP_EDIT_LG_MON:
|
|
result = IDB_IEDIT_EDIT_LARGE_MONO_TOOLBAR;
|
|
break;
|
|
case APP_EDIT_LG_COL:
|
|
result = IDB_IEDIT_EDIT_LARGE_TOOLBAR;
|
|
break;
|
|
case APP_VIEW_SM_MON:
|
|
result = IDB_IEDIT_VIEW_MONO_TOOLBAR;
|
|
break;
|
|
case APP_VIEW_SM_COL:
|
|
result = IDB_IEDIT_VIEW_TOOLBAR;
|
|
break;
|
|
case APP_VIEW_LG_MON:
|
|
result = IDB_IEDIT_VIEW_LARGE_MONO_TOOLBAR;
|
|
break;
|
|
case APP_VIEW_LG_COL:
|
|
result = IDB_IEDIT_VIEW_LARGE_TOOLBAR;
|
|
break;
|
|
case OLE_EDIT_SM_MON:
|
|
result = IDB_SRVR_MONO_TOOLBAR;
|
|
break;
|
|
case OLE_EDIT_SM_COL:
|
|
result = IDR_SRVR_TOOLBAR;
|
|
break;
|
|
case OLE_EDIT_LG_MON:
|
|
result = IDB_SRVR_LARGE_MONO_TOOLBAR;
|
|
break;
|
|
case OLE_EDIT_LG_COL:
|
|
result = IDB_SRVR_LARGE_TOOLBAR;
|
|
break;
|
|
case OLE_VIEW_SM_MON:
|
|
result = IDB_SRVR_VIEW_MONO_TOOLBAR;
|
|
break;
|
|
case OLE_VIEW_SM_COL:
|
|
result = IDB_SRVR_VIEW_TOOLBAR;
|
|
break;
|
|
case OLE_VIEW_LG_MON:
|
|
result = IDB_SRVR_VIEW_LARGE_MONO_TOOLBAR;
|
|
break;
|
|
case OLE_VIEW_LG_COL:
|
|
result = IDB_SRVR_VIEW_LARGE_TOOLBAR;
|
|
break;
|
|
default: // should never happen
|
|
result = IDB_IEDIT_EDIT_MONO_TOOLBAR;
|
|
break;
|
|
}
|
|
}
|
|
else //getting the setting onyl, give back value
|
|
{
|
|
result = index;
|
|
}
|
|
return (result);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetPageEditBoxPosition ()
|
|
//-----------------------------------------------------------------------------
|
|
int CIEMainToolBar::GetPageEditBoxPosition ()
|
|
{
|
|
BOOL bView = theApp.GetViewMode ();
|
|
|
|
if (IsOleEmbed())
|
|
return (((bView==TRUE) ? MTBAR_PAGENUMBER_POS_VIEW_SRVR : MTBAR_PAGENUMBER_POS_SRVR));
|
|
else
|
|
return (((bView==TRUE) ? MTBAR_VIEW_PAGENUMBER_POS : MTBAR_PAGENUMBER_POS));
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetZoomBoxPosition ()
|
|
//-----------------------------------------------------------------------------
|
|
int CIEMainToolBar::GetZoomBoxPosition ()
|
|
{
|
|
BOOL bView = theApp.GetViewMode ();
|
|
|
|
if (IsOleEmbed())
|
|
return (((bView==TRUE) ? MTBAR_SCALEFACTOR_POS_VIEW_SRVR : MTBAR_SCALEFACTOR_POS_SRVR));
|
|
else
|
|
return (((bView==TRUE) ? MTBAR_VIEW_SCALEFACTOR_POS : MTBAR_SCALEFACTOR_POS));
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// Function: ChangeToViewToolBar ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::ChangeToViewToolBar ()
|
|
{
|
|
SHOWENTRY("ChangeVIEW");
|
|
|
|
UINT setting = GetIdOrSetting(Get_Setting);
|
|
|
|
if (m_nBarSetting != setting)
|
|
if (!UpdateToolbar(2,0))
|
|
return FALSE;
|
|
return (TRUE);
|
|
|
|
#if(0)
|
|
LoadBitmap (GetIdOfToolBar ());
|
|
|
|
// LDM added both lines so that when loading up the OLE linking
|
|
// we get new correct toolbar... It starts up bt default loading
|
|
// the embedded toolbar, but for linking, we want the APP toolbar
|
|
if (m_bSawOleLink == 1)
|
|
{
|
|
m_bSawOleLink++; // only need to do once..
|
|
CalcAllSizes();
|
|
}
|
|
|
|
// sets up view button arrays (EmbedViewbuttons, Viewbuttons)
|
|
// Note its forced here in case..
|
|
if (!SetOurButtons(FALSE, 1))
|
|
return FALSE;
|
|
|
|
int nControlPos = GetZoomBoxPosition ();
|
|
|
|
// create the combo box for the magnification factors
|
|
SetButtonInfo (nControlPos - 1, ID_SEPARATOR, TBBS_SEPARATOR, 12);
|
|
SetButtonInfo (nControlPos, IDW_SCALE_COMBOBOX, TBBS_SEPARATOR, MTBAR_SCALEFACTOR_CMBOX_WIDTH);
|
|
SetButtonInfo (nControlPos + 1, ID_SEPARATOR, TBBS_SEPARATOR, 12);
|
|
|
|
// now create the Page Edit box
|
|
nControlPos = GetPageEditBoxPosition ();
|
|
// create the edit box for the page number stuff
|
|
SetButtonInfo (nControlPos, IDW_PAGE_EDITBOX, TBBS_SEPARATOR, MTBAR_PAGENUMBER_EBBOX_WIDTH);
|
|
return (TRUE);
|
|
#endif
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: ChangeToEditToolBar ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::ChangeToEditToolBar ()
|
|
{
|
|
SHOWENTRY("ChangeEDIT");
|
|
|
|
UINT setting = GetIdOrSetting(Get_Setting);
|
|
|
|
if (m_nBarSetting != setting)
|
|
if (!UpdateToolbar(2,0))
|
|
return FALSE;
|
|
|
|
return (TRUE);
|
|
|
|
#if(0)
|
|
|
|
LoadBitmap (GetIdOfToolBar ());
|
|
|
|
// LDM added both lines so that when loading up the OLE linking
|
|
// we get new correct toolbar... It starts up bt default loading
|
|
// the embedded toolbar, but for linking, we want the APP toolbar
|
|
if (m_bSawOleLink == 1)
|
|
{
|
|
m_bSawOleLink++; // only need to do once..
|
|
CalcAllSizes();
|
|
}
|
|
|
|
// sets up Edit button arrays (Embedbuttons, Editbuttons)
|
|
// Note its forced here in case..
|
|
if (!SetOurButtons(FALSE, 2))
|
|
return FALSE;
|
|
|
|
int nControlPos = GetZoomBoxPosition ();
|
|
|
|
// set the position for the zoom combo box
|
|
SetButtonInfo (nControlPos - 1, ID_SEPARATOR, TBBS_SEPARATOR, 12);
|
|
SetButtonInfo (nControlPos, IDW_SCALE_COMBOBOX, TBBS_SEPARATOR, MTBAR_SCALEFACTOR_CMBOX_WIDTH);
|
|
SetButtonInfo (nControlPos + 1, ID_SEPARATOR, TBBS_SEPARATOR, 12);
|
|
|
|
// now set the position of the Page Edit box
|
|
nControlPos = GetPageEditBoxPosition ();
|
|
SetButtonInfo (nControlPos, IDW_PAGE_EDITBOX, TBBS_SEPARATOR, MTBAR_PAGENUMBER_EBBOX_WIDTH);
|
|
return (TRUE);
|
|
#endif
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// Function: UpdateToolbar ()
|
|
//
|
|
// This does all basic toolbar operations:
|
|
//
|
|
// 1) LoadBitmap
|
|
// 2) SetSizes
|
|
// 3) SetButtons
|
|
// 4) SetButtonInfo (for our special Zoom/Page controls)
|
|
//
|
|
// Some of these operations dont require certain things
|
|
// Inputs control:
|
|
// UINT nBoxAction 0 = default
|
|
// 1 = from OnCreate (create Zoom/Page boxes)
|
|
// 2 = from ShowCOlor or Showlarge (move Zoom/Page boxes, do RecalcLayout)
|
|
// UINT nHorVert 0 = default, 1 from sethorz, 2 from setvert (show/hide boxes)
|
|
//
|
|
// UINT m_nBarSetting;
|
|
// UINT m_nBarHorVert;
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::UpdateToolbar(
|
|
UINT nBoxAction,
|
|
UINT nHorVert)
|
|
{
|
|
SHOWENTRY("UpdateTbar");
|
|
|
|
SIZE sizeImage, sizeButtons;
|
|
CRect rect;
|
|
BOOL vert = FALSE;
|
|
|
|
// - resetting horiz or vert does not need a load or size......
|
|
if (0 == nHorVert)
|
|
{
|
|
// load it up!!
|
|
// if (!LoadBitmap (GetIdOrSetting(Get_ResID)))
|
|
// return FALSE;
|
|
|
|
// Set the Size....
|
|
if (m_bAreButtonsLarge)
|
|
{
|
|
sizeImage.cx = BUTTON_LARGE_X;
|
|
sizeImage.cy = BUTTON_LARGE_Y;
|
|
}
|
|
else
|
|
{
|
|
sizeImage.cx = BUTTON_SMALL_X;
|
|
sizeImage.cy = BUTTON_SMALL_Y;
|
|
}
|
|
sizeButtons.cx = sizeImage.cx + BUTTON_ADDON_X;
|
|
sizeButtons.cy = sizeImage.cy + BUTTON_ADDON_Y;
|
|
SetSizes (sizeButtons, sizeImage);
|
|
|
|
// load it up!!
|
|
if (!LoadBitmap (GetIdOrSetting(Get_ResID)))
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
if (2 == nHorVert || m_nBarHorVert == TBAR_VERT)
|
|
vert = TRUE;
|
|
|
|
// set the array
|
|
if (!SetOurButtons(vert, 0))
|
|
return FALSE;
|
|
|
|
// for the vertical, all we do is hide the windows...
|
|
// only do if not vertical...
|
|
if (2 != nHorVert)
|
|
{
|
|
// Take care of whatever is required for the Zoom dialog...
|
|
int nControlPos = GetZoomBoxPosition();
|
|
if (!vert)
|
|
{
|
|
SetButtonInfo (nControlPos - 1, ID_SEPARATOR, TBBS_SEPARATOR, 12);
|
|
SetButtonInfo (nControlPos, IDW_SCALE_COMBOBOX, TBBS_SEPARATOR, MTBAR_SCALEFACTOR_CMBOX_WIDTH);
|
|
SetButtonInfo (nControlPos + 1, ID_SEPARATOR, TBBS_SEPARATOR, 12);
|
|
}
|
|
|
|
// only need the rect if we're gonna use it..
|
|
if (nBoxAction)
|
|
{
|
|
GetItemRect (nControlPos, &rect);
|
|
rect.bottom = rect.top + MTBAR_SCALEFACTOR_CMBOX_HEIGHT;
|
|
}
|
|
|
|
if (2 == nBoxAction)
|
|
{
|
|
m_cbScaleFactors.MoveWindow (rect.left, rect.top,
|
|
(rect.right - rect.left), (rect.bottom - rect.top));
|
|
}
|
|
else if (1 == nBoxAction)
|
|
{
|
|
CreateZoomOrPageBox(1, rect);
|
|
}
|
|
|
|
// Take care of whatever is required for the Page dialog...
|
|
nControlPos = GetPageEditBoxPosition();
|
|
|
|
if (!vert)
|
|
{
|
|
SetButtonInfo (nControlPos, IDW_PAGE_EDITBOX, TBBS_SEPARATOR, MTBAR_PAGENUMBER_EBBOX_WIDTH);
|
|
}
|
|
|
|
// only need the rect if we're gonna use it..
|
|
if (nBoxAction)
|
|
{
|
|
GetItemRect (nControlPos, &rect);
|
|
rect.right += 1;
|
|
}
|
|
|
|
if (2 == nBoxAction)
|
|
{
|
|
m_ebPageNumber.MoveWindow (rect.left, rect.top,
|
|
(rect.right - rect.left), (rect.bottom - rect.top));
|
|
|
|
((CIEditMainFrame*)theApp.m_pMainWnd)->RecalcLayout (TRUE);
|
|
}
|
|
else if (1 == nBoxAction)
|
|
{
|
|
CreateZoomOrPageBox(2, rect);
|
|
}
|
|
|
|
// for horiz, show 'em now
|
|
if (1 == nHorVert)
|
|
{
|
|
// show both the controls if they are already created
|
|
if (m_cbScaleFactors.m_hWnd != NULL)
|
|
m_cbScaleFactors.ShowWindow (SW_SHOW);
|
|
if (m_ebPageNumber.m_hWnd != NULL)
|
|
m_ebPageNumber.ShowWindow (SW_SHOW);
|
|
}
|
|
}
|
|
else // was vertical - hide 'em
|
|
{
|
|
if (m_cbScaleFactors.m_hWnd != NULL)
|
|
m_cbScaleFactors.ShowWindow (SW_HIDE);
|
|
if (m_ebPageNumber.m_hWnd != NULL)
|
|
m_ebPageNumber.ShowWindow (SW_HIDE);
|
|
}
|
|
|
|
m_nBarSetting = GetIdOrSetting(Get_Setting);
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// Function: CreateZoomOrPageBox ()
|
|
//
|
|
// nWhich 1 = Zoom, 2 = Page
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::CreateZoomOrPageBox(UINT nWhich, CRect& rect)
|
|
{
|
|
SHOWENTRY("CreateZ/P");
|
|
|
|
if (1 == nWhich)
|
|
{
|
|
// create the combo box
|
|
m_cbScaleFactors.Create (CBS_DROPDOWN|CBS_AUTOHSCROLL|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL|WS_BORDER|WS_CHILD,
|
|
rect, this, IDW_SCALE_COMBOBOX);
|
|
|
|
// Create a font for the combobox
|
|
LOGFONT logFont;
|
|
memset(&logFont, 0, sizeof(logFont));
|
|
//GMP we shouldn't need to do this for double byte systems, but I'm leaving the code
|
|
//for a while until we are sure it looks good in Japanese.
|
|
// if (!::GetSystemMetrics(SM_DBCSENABLED))
|
|
// {
|
|
// Since design guide says toolbars are fixed height so is the font.
|
|
logFont.lfHeight = -12;
|
|
logFont.lfWeight = FW_NORMAL;
|
|
logFont.lfPitchAndFamily = VARIABLE_PITCH | FF_SWISS;
|
|
|
|
CString strDefaultFont;
|
|
strDefaultFont.LoadString(IDS_DFLT_SCALECB_FONT);
|
|
|
|
lstrcpy(logFont.lfFaceName, strDefaultFont);
|
|
if (!m_ScaleFont.CreateFontIndirect(&logFont))
|
|
TRACE0("Could Not create font for combo\n");
|
|
else
|
|
m_cbScaleFactors.SetFont(&m_ScaleFont);
|
|
// }
|
|
// else
|
|
// {
|
|
// m_ScaleFont.Attach(::GetStockObject(SYSTEM_FONT));
|
|
// m_cbScaleFactors.SetFont(&m_ScaleFont);
|
|
// }
|
|
|
|
// load the strings into the combo box
|
|
CString szZoom;
|
|
szZoom.LoadString(IDS_ZOOM25);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOM50);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOM75);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOM100);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOM200);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOM400);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
|
|
/* out for now ?
|
|
szZoom.LoadString(IDS_ZOOMFITTOWIDTH);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOMFITTOHEIGHT);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOMBESTFIT);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
szZoom.LoadString(IDS_ZOOMACTUALSIZE);
|
|
m_cbScaleFactors.AddString (szZoom);
|
|
*/
|
|
// set a default selection to 100%
|
|
m_cbScaleFactors.SetCurSel (theApp.GetProfileInt (szZoomStr, szOpenedToStr, DEFAULT_ZOOM_FACTOR_SEL));
|
|
|
|
// to start with disable the combo box and let it be enabled on the display of the
|
|
// image or other factors in the application
|
|
m_cbScaleFactors.EnableWindow (FALSE);
|
|
|
|
// get the edit box part of the combo box and subclass that window
|
|
// : user can only enter numbers
|
|
CWnd* pWnd = m_cbScaleFactors.GetWindow (GW_CHILD);
|
|
m_ebZoomFactor.SubclassWindow (pWnd->m_hWnd);
|
|
m_ebZoomFactor.LimitText (8);
|
|
TCHAR szDec [2];
|
|
GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, (LPTSTR)szDec, sizeof (TCHAR) * 2);
|
|
m_ebZoomFactor.cAllow1 = szDec[0];
|
|
m_ebZoomFactor.cAllow2 = _T('%');
|
|
}
|
|
else // must be Page
|
|
{
|
|
|
|
// now create the Page Edit box
|
|
// create the edit box for the page number stuff
|
|
// create the combo box
|
|
m_ebPageNumber.Create (ES_LEFT|WS_VISIBLE|WS_DISABLED|WS_CHILD|WS_BORDER,
|
|
rect, this, IDW_PAGE_EDITBOX);
|
|
// set the number within the edit box to a default of 1
|
|
m_ebPageNumber.SetFont(&m_ScaleFont);
|
|
m_ebPageNumber.SetWindowText (_T("1"));
|
|
}
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
#if(0) // ALL GONE....
|
|
|
|
//=============================================================================
|
|
// Function: CalcAllSizes ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::CalcAllSizes ()
|
|
{
|
|
SHOWENTRY("CalcAllSizes");
|
|
|
|
BOOL retval = FALSE; // bad to start
|
|
|
|
// 09/20/95 rect init moved here from constructor..
|
|
// EDIT small
|
|
m_rectEditInsideVertSmall.SetRectEmpty();
|
|
m_rectEditInsideHorzSmall.SetRectEmpty();
|
|
|
|
// EDIT large
|
|
m_rectEditInsideVertLarge.SetRectEmpty();
|
|
m_rectEditInsideHorzLarge.SetRectEmpty();
|
|
|
|
// VIEW small
|
|
m_rectViewInsideVertSmall.SetRectEmpty();
|
|
m_rectViewInsideHorzSmall.SetRectEmpty();
|
|
|
|
// VIEW large
|
|
m_rectViewInsideVertLarge.SetRectEmpty();
|
|
m_rectViewInsideHorzLarge.SetRectEmpty();
|
|
|
|
BOOL bOldViewMode = theApp.GetViewMode ();
|
|
BOOL bOldColor = m_bAreButtonsInColor;
|
|
BOOL bOldSize = m_bAreButtonsLarge;
|
|
|
|
// set up edit mode, B/W buttons & small buttons to start;
|
|
theApp.SetViewMode (FALSE);
|
|
m_bAreButtonsInColor = FALSE;
|
|
m_bAreButtonsLarge = FALSE;
|
|
|
|
SIZE sizeImage, sizeButtons;
|
|
|
|
/***********************
|
|
* load the small edit bitmap & buttons
|
|
***********************/
|
|
if (!LoadBitmap(GetIdOrSetting(Get_ResID)))
|
|
goto LEAVEALLSIZE;
|
|
|
|
// sets up normal button arrays (Embedbuttons, Editbuttons)
|
|
if (!SetOurButtons(FALSE,0))
|
|
goto LEAVEALLSIZE;
|
|
|
|
sizeImage.cx = BUTTON_SMALL_X;
|
|
sizeImage.cy = BUTTON_SMALL_Y;
|
|
sizeButtons.cx = sizeImage.cx + BUTTON_ADDON_X;
|
|
sizeButtons.cy = sizeImage.cy + BUTTON_ADDON_Y;
|
|
SetSizes (sizeButtons, sizeImage);
|
|
|
|
// we have already loaded the small button bitmap - get dimensions
|
|
if (!SetVertical ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the vertically oriented toolbar measurements
|
|
CalcInsideRect (m_rectEditInsideVertSmall, FALSE);
|
|
m_sizeEditVertSmall = CToolBar::CalcFixedLayout (FALSE, FALSE);
|
|
|
|
if (!SetHorizontal ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the horizontally oriented toolbar measurements
|
|
CalcInsideRect (m_rectEditInsideHorzSmall, TRUE);
|
|
m_sizeEditHorzSmall = CToolBar::CalcFixedLayout (FALSE, TRUE);
|
|
|
|
|
|
/***********************
|
|
* load the large edit bitmaps next - the button array remains the same
|
|
***********************/
|
|
m_bAreButtonsLarge = TRUE;
|
|
if (!LoadBitmap(GetIdOrSetting(Get_ResID)))
|
|
goto LEAVEALLSIZE;
|
|
|
|
sizeImage.cx = BUTTON_LARGE_X;
|
|
sizeImage.cy = BUTTON_LARGE_Y;
|
|
sizeButtons.cx = sizeImage.cx + BUTTON_ADDON_X;
|
|
sizeButtons.cy = sizeImage.cy + BUTTON_ADDON_Y;
|
|
SetSizes (sizeButtons, sizeImage);
|
|
|
|
if (!SetVertical ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the vertically oriented toolbar measurements
|
|
CalcInsideRect (m_rectEditInsideVertLarge, FALSE);
|
|
m_sizeEditVertLarge = CToolBar::CalcFixedLayout (FALSE, FALSE);
|
|
|
|
if (!SetHorizontal ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the horizontally oriented toolbar measurements
|
|
CalcInsideRect (m_rectEditInsideHorzLarge, TRUE);
|
|
m_sizeEditHorzLarge = CToolBar::CalcFixedLayout (FALSE, TRUE);
|
|
|
|
/***********************
|
|
* load the small view bitmap & buttons
|
|
***********************/
|
|
theApp.SetViewMode (TRUE);
|
|
m_bAreButtonsLarge = FALSE;
|
|
|
|
if (!LoadBitmap(GetIdOrSetting(Get_ResID)))
|
|
goto LEAVEALLSIZE;
|
|
|
|
// sets up View button arrays (EmbedViewbuttons, Viewbuttons)
|
|
if (!SetOurButtons(FALSE,0))
|
|
goto LEAVEALLSIZE;
|
|
|
|
sizeImage.cx = BUTTON_SMALL_X;
|
|
sizeImage.cy = BUTTON_SMALL_Y;
|
|
sizeButtons.cx = sizeImage.cx + BUTTON_ADDON_X;
|
|
sizeButtons.cy = sizeImage.cy + BUTTON_ADDON_Y;
|
|
SetSizes (sizeButtons, sizeImage);
|
|
|
|
// we have already loaded the small button bitmap - get dimensions
|
|
if (!SetVertical ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the vertically oriented toolbar measurements
|
|
CalcInsideRect (m_rectViewInsideVertSmall, FALSE);
|
|
m_sizeViewVertSmall = CToolBar::CalcFixedLayout (FALSE, FALSE);
|
|
|
|
if (!SetHorizontal ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the horizontally oriented toolbar measurements
|
|
CalcInsideRect (m_rectViewInsideHorzSmall, TRUE);
|
|
m_sizeViewHorzSmall = CToolBar::CalcFixedLayout (FALSE, TRUE);
|
|
|
|
/***********************
|
|
* load the large edit bitmaps next - the button array remains the same
|
|
***********************/
|
|
m_bAreButtonsLarge = TRUE;
|
|
if (!LoadBitmap(GetIdOrSetting(Get_ResID)))
|
|
goto LEAVEALLSIZE;
|
|
|
|
sizeImage.cx = BUTTON_LARGE_X;
|
|
sizeImage.cy = BUTTON_LARGE_Y;
|
|
sizeButtons.cx = sizeImage.cx + BUTTON_ADDON_X;
|
|
sizeButtons.cy = sizeImage.cy + BUTTON_ADDON_Y;
|
|
SetSizes (sizeButtons, sizeImage);
|
|
|
|
if (!SetVertical ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the vertically oriented toolbar measurements
|
|
CalcInsideRect (m_rectViewInsideVertLarge, FALSE);
|
|
m_sizeViewVertLarge = CToolBar::CalcFixedLayout (FALSE, FALSE);
|
|
|
|
if (!SetHorizontal ())
|
|
goto LEAVEALLSIZE;
|
|
|
|
// save the horizontally oriented toolbar measurements
|
|
CalcInsideRect (m_rectViewInsideHorzLarge, TRUE);
|
|
m_sizeViewHorzLarge = CToolBar::CalcFixedLayout (FALSE, TRUE);
|
|
|
|
|
|
retval = TRUE; // here == good
|
|
|
|
LEAVEALLSIZE:
|
|
|
|
// reset to same as on entry
|
|
m_bAreButtonsLarge = bOldSize;
|
|
m_bAreButtonsInColor = bOldColor;
|
|
theApp.SetViewMode (bOldViewMode);
|
|
|
|
return (retval);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: CalcFixedLayout (BOOL bStretch, BOOL bHorz)
|
|
//-----------------------------------------------------------------------------
|
|
CSize CIEMainToolBar::CalcFixedLayout (BOOL bStretch, BOOL bHorz)
|
|
{
|
|
SHOWENTRY("CalcFixed");
|
|
|
|
CSize size;
|
|
|
|
size = CControlBar::CalcFixedLayout (bStretch, bHorz);
|
|
|
|
CRect rect;
|
|
rect.SetRectEmpty();
|
|
CalcInsideRect (rect, bHorz);
|
|
|
|
CRect *pRect;
|
|
CSize *pSize;
|
|
if (theApp.GetViewMode())
|
|
{
|
|
if (bHorz)
|
|
{
|
|
pRect = m_bAreButtonsLarge ? &m_rectViewInsideHorzLarge : &m_rectViewInsideHorzSmall;
|
|
pSize = m_bAreButtonsLarge ? &m_sizeViewHorzLarge : &m_sizeViewHorzSmall;
|
|
}
|
|
else
|
|
{
|
|
pRect = m_bAreButtonsLarge ? &m_rectViewInsideVertLarge : &m_rectViewInsideVertSmall;
|
|
pSize = m_bAreButtonsLarge ? &m_sizeViewVertLarge : &m_sizeViewVertSmall;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (bHorz)
|
|
{
|
|
pRect = m_bAreButtonsLarge ? &m_rectEditInsideHorzLarge : &m_rectEditInsideHorzSmall;
|
|
pSize = m_bAreButtonsLarge ? &m_sizeEditHorzLarge : &m_sizeEditHorzSmall;
|
|
}
|
|
else
|
|
{
|
|
pRect = m_bAreButtonsLarge ? &m_rectEditInsideVertLarge : &m_rectEditInsideVertSmall;
|
|
pSize = m_bAreButtonsLarge ? &m_sizeEditVertLarge : &m_sizeEditVertSmall;
|
|
}
|
|
}
|
|
|
|
size.cx += pSize->cx + (pRect->Width() - rect.Width());
|
|
size.cy += pSize->cy + (pRect->Height() - rect.Height());
|
|
|
|
return size;
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: UpdateToolbar ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::UpdateToolbar ()
|
|
{
|
|
SHOWENTRY("UpdateTbar");
|
|
|
|
SIZE sizeImage, sizeButtons;
|
|
CRect rect;
|
|
|
|
LoadBitmap (GetIdOrSetting(Get_ResID));
|
|
|
|
if (m_bAreButtonsLarge)
|
|
{
|
|
sizeImage.cx = BUTTON_LARGE_X;
|
|
sizeImage.cy = BUTTON_LARGE_Y;
|
|
}
|
|
else
|
|
{
|
|
sizeImage.cx = BUTTON_SMALL_X;
|
|
sizeImage.cy = BUTTON_SMALL_Y;
|
|
}
|
|
sizeButtons.cx = sizeImage.cx + BUTTON_ADDON_X;
|
|
sizeButtons.cy = sizeImage.cy + BUTTON_ADDON_Y;
|
|
SetSizes (sizeButtons, sizeImage);
|
|
|
|
int nControlPos = GetZoomBoxPosition();
|
|
// resize the scale combo box
|
|
GetItemRect (nControlPos, &rect);
|
|
rect.bottom = rect.top + MTBAR_SCALEFACTOR_CMBOX_HEIGHT;
|
|
m_cbScaleFactors.MoveWindow (rect.left, rect.top,
|
|
(rect.right - rect.left), (rect.bottom - rect.top));
|
|
|
|
// resize the page edit box
|
|
nControlPos = GetPageEditBoxPosition();
|
|
// resize the scale combo box
|
|
GetItemRect (nControlPos, &rect);
|
|
rect.right += 1;
|
|
m_ebPageNumber.MoveWindow (rect.left, rect.top,
|
|
(rect.right - rect.left), (rect.bottom - rect.top));
|
|
|
|
((CIEditMainFrame*)theApp.m_pMainWnd)->RecalcLayout (TRUE);
|
|
return (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: ShowColorButtons ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::ShowButtonsColorOrMono (BOOL bColor)
|
|
{
|
|
SHOWENTRY("ShowButtC/M");
|
|
|
|
// depending on whether the application is in View or Edit mode load the appropriate
|
|
// color toolbar
|
|
if (bColor == m_bAreButtonsInColor)
|
|
return (TRUE);
|
|
|
|
m_bAreButtonsInColor = bColor;
|
|
UpdateToolbar (2,0);
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: ShowButtonsLargeOrSmall (BOOL bSmall)
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEMainToolBar::ShowButtonsLargeOrSmall (BOOL bLarge)
|
|
{
|
|
SHOWENTRY("ShowButtL/S");
|
|
|
|
// depending on whether the application is in View or Edit mode load the appropriate
|
|
// small or large button bitmap for the toolbar
|
|
if (bLarge == m_bAreButtonsLarge)
|
|
return (TRUE);
|
|
|
|
m_bAreButtonsLarge = bLarge;
|
|
UpdateToolbar (2,0);
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
|
|
#endif
|