mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
619 lines
19 KiB
619 lines
19 KiB
//=============================================================================
|
|
// (c) Copyright Wang Laboratories, Inc. 1993 All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
// Project: Norway - Image Editor
|
|
//
|
|
// Component: CIEditDoc
|
|
//
|
|
// File Name: docanno.cpp
|
|
//
|
|
// Class: CIEditDoc
|
|
//
|
|
// Functions:
|
|
//
|
|
// Remarks: This file is the continuation of the ieditdoc.cpp.
|
|
//-----------------------------------------------------------------------------
|
|
// Maintenance Log:
|
|
/*
|
|
$Header: S:\products\msprods\norway\iedit95\docanno.cpv 1.39 10 Jun 1996 11:07:30 GMP $
|
|
$Log: S:\products\msprods\norway\iedit95\docanno.cpv $
|
|
|
|
Rev 1.39 10 Jun 1996 11:07:30 GMP
|
|
conditionally compile for NTGROUP build env.
|
|
|
|
Rev 1.38 13 Feb 1996 10:20:42 GSAGER
|
|
removed previous change for enabling hide annotations
|
|
|
|
Rev 1.37 06 Feb 1996 14:09:24 GSAGER
|
|
change the enabling of hide annotations it is not available
|
|
in thumbnail only mode.
|
|
|
|
Rev 1.36 18 Jan 1996 15:59:22 GMP
|
|
disable "Make annotations permanent" if annotations are hidden.
|
|
|
|
Rev 1.35 09 Jan 1996 12:54:50 GMP
|
|
disable annotation tool selection if annotations are hidden.
|
|
|
|
Rev 1.34 15 Dec 1995 13:53:44 GMP
|
|
Gray out Hide Annotations if no annotations in image.
|
|
|
|
Rev 1.33 17 Oct 1995 15:08:30 GMP
|
|
added error handling in CATCH for failed rubber stamp.
|
|
|
|
Rev 1.32 10 Oct 1995 13:47:24 JPRATT
|
|
VC++ 4.0 updates
|
|
|
|
Rev 1.31 27 Sep 1995 16:44:58 LMACLENNAN
|
|
set finishpastenow(2) for some cases
|
|
|
|
Rev 1.30 25 Sep 1995 14:44:04 LMACLENNAN
|
|
new getapphMenu
|
|
|
|
Rev 1.29 21 Sep 1995 14:17:20 LMACLENNAN
|
|
dirty for show/hide annot
|
|
|
|
Rev 1.28 19 Sep 1995 09:59:16 LMACLENNAN
|
|
finishpaste for hide/show annot
|
|
|
|
Rev 1.27 18 Sep 1995 16:24:26 LMACLENNAN
|
|
FinishPaste, update OurGetAnnotMarkCount
|
|
|
|
Rev 1.26 16 Sep 1995 16:39:42 LMACLENNAN
|
|
clearselecitonrect
|
|
|
|
Rev 1.25 16 Sep 1995 14:00:44 LMACLENNAN
|
|
new OurGetAnnotCount
|
|
|
|
Rev 1.24 14 Sep 1995 11:34:36 MMB
|
|
rubber stamp dlg comes up when clicking on menu now
|
|
|
|
Rev 1.23 12 Sep 1995 11:37:00 MMB
|
|
bullets on menus instead of checkmarks
|
|
|
|
Rev 1.22 11 Sep 1995 18:56:12 MMB
|
|
added anno toggling func
|
|
|
|
Rev 1.21 08 Sep 1995 17:40:40 MMB
|
|
commented out select tool stuff
|
|
|
|
Rev 1.20 08 Sep 1995 15:49:12 MMB
|
|
ann hidden pick only available for TIFF
|
|
|
|
Rev 1.19 05 Sep 1995 12:32:12 MMB
|
|
fixed hide/show ann to be always available.
|
|
|
|
Rev 1.18 05 Sep 1995 10:24:56 MMB
|
|
hide ann is only available if annotations exist
|
|
|
|
Rev 1.17 31 Aug 1995 15:16:40 LMACLENNAN
|
|
unselect image select rects on annotation pick
|
|
|
|
Rev 1.16 30 Aug 1995 17:02:00 MMB
|
|
fix bug on tool palette causing crash or hang
|
|
|
|
Rev 1.15 22 Aug 1995 16:56:46 MMB
|
|
reset the pointer to hand if in drag mode
|
|
|
|
Rev 1.14 22 Aug 1995 14:05:42 MMB
|
|
rubberstamp pick will call showrubberstampdialog in IEOCX, fixed bug where
|
|
drag hand could not be selected
|
|
|
|
Rev 1.13 21 Aug 1995 15:39:18 LMACLENNAN
|
|
disable annotation menu for readonly
|
|
|
|
Rev 1.12 14 Aug 1995 13:55:20 LMACLENNAN
|
|
remove headers; in ieditdoc now
|
|
|
|
Rev 1.11 10 Aug 1995 14:49:50 MMB
|
|
fix bug where Image select was causing drag to be selected
|
|
|
|
Rev 1.10 04 Aug 1995 09:32:58 LMACLENNAN
|
|
remove srvritem.h
|
|
|
|
Rev 1.9 28 Jul 1995 16:09:02 LMACLENNAN
|
|
update oledirtyset
|
|
|
|
Rev 1.8 25 Jul 1995 16:42:20 MMB
|
|
fix bug with Annotation tools, Select & Drag
|
|
|
|
Rev 1.7 21 Jul 1995 14:30:18 LMACLENNAN
|
|
do OleDirtyset after Burnin
|
|
|
|
Rev 1.6 20 Jul 1995 15:36:46 MMB
|
|
fix bug in enabling Burn In Annotations menu pick
|
|
|
|
Rev 1.5 13 Jul 1995 13:41:52 MMB
|
|
fixed SetAnnotationTool to call the right method in the Iedit OCX
|
|
|
|
Rev 1.4 07 Jul 1995 09:39:28 MMB
|
|
set mode to drag properly
|
|
|
|
Rev 1.3 06 Jul 1995 13:05:44 MMB
|
|
added annotation functionality
|
|
|
|
Rev 1.2 28 Jun 1995 17:13:04 LMACLENNAN
|
|
error display
|
|
|
|
Rev 1.1 22 Jun 1995 06:58:14 LMACLENNAN
|
|
from miki
|
|
|
|
Rev 1.0 21 Jun 1995 07:01:36 LMACLENNAN
|
|
Initial entry
|
|
*/
|
|
|
|
//=============================================================================
|
|
|
|
// ----------------------------> Includes <-------------------------------
|
|
#include "stdafx.h"
|
|
#include "IEdit.h"
|
|
|
|
#include "IEditdoc.h"
|
|
#include "cntritem.h"
|
|
#include "ocxitem.h"
|
|
#include "items.h"
|
|
#include "pagerang.h"
|
|
|
|
// ALL READY TO START ADDING ERROR CODES..
|
|
//#define E_12_CODES // limits error defines to ours..
|
|
#include "error.h"
|
|
|
|
|
|
#include "wangiocx.h"
|
|
|
|
extern "C"
|
|
{
|
|
#include "oierror.h"
|
|
}
|
|
// ----------------------------> Globals <-------------------------------
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
// CIEditDoc Annotation functionality
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
|
|
//=============================================================================
|
|
// Function: OurGetAnnotMarkCount()
|
|
//
|
|
// works with m_bFloatingPaste to avoid calling the real function
|
|
// pIedDIsp->GetAnnotationMarkCount
|
|
// if we have pasted items, they are treaded as annotations until the user
|
|
// has fixed them onto the image. If we call the real funct (as in updating menus)
|
|
// this will inadvertently paste the item.
|
|
//
|
|
// we control usage of the m_bFloatingPaste as follows:
|
|
//
|
|
// FALSE means free to use real function.
|
|
// TRUE means a paste just occured. We only could have pasted if the mark count is '0'
|
|
// based on the current model. If this changes, all this logic nees to re-worked
|
|
//
|
|
// When actions occur to reset the pasted state, we reset var to FALSE
|
|
// Ex: page move, new doc, draw annotations, etc.
|
|
// See FinishPasteNow
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
int CIEditDoc::OurGetAnnotMarkCount() // default to 0
|
|
{
|
|
int retval = 0;
|
|
|
|
// do only of not in float paste state
|
|
// I.E. if in float state, just return '0'
|
|
if (!m_bFloatingPaste)
|
|
{
|
|
VARIANT evt;
|
|
evt.vt = VT_ERROR;
|
|
_DImagedit* pIedit = g_pAppOcxs->GetIeditDispatch();
|
|
retval = pIedit->GetAnnotationMarkCount (evt, evt);
|
|
}
|
|
|
|
return (retval);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateShowAnntoolbox(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateShowAnntoolbox(CCmdUI* pCmdUI)
|
|
{
|
|
if (m_eCurrentView == Null_View ||
|
|
m_eCurrentView == Thumbnails_only ||
|
|
m_eFileStatus == ReadOnly || m_bAnnotationsHidden)
|
|
{
|
|
//If we are here because annotations are hidden, the tool palette
|
|
//button and menu item need to be unchecked.
|
|
pCmdUI->SetCheck (FALSE);
|
|
pCmdUI->Enable (FALSE);
|
|
}
|
|
else
|
|
{
|
|
pCmdUI->Enable (TRUE);
|
|
if (m_bAnnotationPaletteShowing)
|
|
pCmdUI->SetCheck (TRUE);
|
|
else
|
|
pCmdUI->SetCheck (FALSE);
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnShowAnntoolbox()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnShowAnntoolbox()
|
|
{
|
|
_DImagedit* pIedDisp = g_pAppOcxs->GetIeditDispatch();
|
|
|
|
if (m_bAnnotationPaletteShowing)
|
|
{
|
|
TRY
|
|
{
|
|
pIedDisp->HideAnnotationToolPalette ();
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
m_bAnnotationPaletteShowing = FALSE;
|
|
}
|
|
END_CATCH
|
|
m_bAnnotationPaletteShowing = FALSE;
|
|
if (m_nCurrAnnTool != NoTool)
|
|
// reset the damn! pointer - VB folks need a different behavior
|
|
pIedDisp->SelectTool ((short)m_nCurrAnnTool);
|
|
}
|
|
else
|
|
{
|
|
VARIANT vXPos, vYPos, vShowAttribs, vToolTips;
|
|
// to do : xPos, yPos from registry
|
|
CString szToolTipStr = (LPCTSTR)NULL, szTmp;
|
|
|
|
int i = IDS_ANNTIP_SELECTIONPOINTER;
|
|
while (TRUE)
|
|
{
|
|
szTmp.LoadString (i); szToolTipStr += szTmp;
|
|
if (i < IDS_ANNTIP_RUBBERSTAMPS)
|
|
szToolTipStr += _T("|");
|
|
i++;
|
|
if (i > IDS_ANNTIP_RUBBERSTAMPS)
|
|
break;
|
|
}
|
|
|
|
vXPos.vt = vYPos.vt = VT_I4;
|
|
|
|
SIZE size;
|
|
size.cx = size.cy = 50;
|
|
theApp.GetProfileBinary (szEtcStr, szAnnPalPosition, (void*)&size, sizeof(SIZE));
|
|
|
|
vXPos.lVal = size.cx;
|
|
vYPos.lVal = size.cy;
|
|
|
|
vShowAttribs.vt = VT_BOOL; vShowAttribs.boolVal = TRUE;
|
|
vToolTips.vt = VT_BSTR;
|
|
|
|
vToolTips.bstrVal = szToolTipStr.AllocSysString();
|
|
TRY
|
|
{
|
|
pIedDisp->ShowAnnotationToolPalette (vShowAttribs, vXPos, vYPos, vToolTips);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
SysFreeString (vToolTips.bstrVal);
|
|
m_bAnnotationPaletteShowing = TRUE;
|
|
}
|
|
END_CATCH
|
|
SysFreeString (vToolTips.bstrVal);
|
|
m_bAnnotationPaletteShowing = TRUE;
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateAnnTool(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateAnnTool(CCmdUI* pCmdUI)
|
|
{
|
|
HMENU hMenu = GetApphMenu();
|
|
// if no doc or in thumbnail only view or readonly- no annotation
|
|
// tool is available
|
|
if (m_eCurrentAppDocStatus == No_Document ||
|
|
m_eCurrentView == Thumbnails_only ||
|
|
m_eFileStatus == ReadOnly || m_bAnnotationsHidden)
|
|
{
|
|
//make sure tool is set to notool before disabling UI.
|
|
if ((int)(pCmdUI->m_nID - ID_ANNOTATION_NOTOOL) == (int)m_nCurrAnnTool)
|
|
{
|
|
CheckMenuRadioItem (hMenu, ID_ANNOTATION_NOTOOL, ID_ANNOTATION_RUBBERSTAMPS,
|
|
pCmdUI->m_nID, MF_BYCOMMAND);
|
|
}
|
|
pCmdUI->Enable (FALSE);
|
|
}
|
|
else // they are all available
|
|
{
|
|
pCmdUI->Enable (TRUE);
|
|
if ((int)(pCmdUI->m_nID - ID_ANNOTATION_NOTOOL) == (int)m_nCurrAnnTool)
|
|
{
|
|
CheckMenuRadioItem (hMenu, ID_ANNOTATION_NOTOOL, ID_ANNOTATION_RUBBERSTAMPS,
|
|
pCmdUI->m_nID, MF_BYCOMMAND);
|
|
}
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateHideAnn(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateHideAnn(CCmdUI* pCmdUI)
|
|
{
|
|
// always available
|
|
if (m_eCurrentAppDocStatus != No_Document)
|
|
{
|
|
_DNrwyad* pAdmDisp = g_pAppOcxs->GetAdminDispatch ();
|
|
short sFileType = pAdmDisp->GetFileType ();
|
|
|
|
if (sFileType != TIFF)
|
|
pCmdUI->Enable (FALSE);
|
|
else
|
|
{
|
|
//can't hide annotations if there are none.
|
|
if (OurGetAnnotMarkCount() != 0)
|
|
pCmdUI->Enable(TRUE);
|
|
else
|
|
pCmdUI->Enable(FALSE);
|
|
|
|
}
|
|
}
|
|
else
|
|
pCmdUI->Enable (FALSE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnHideAnnotations()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnHideAnnotations()
|
|
{
|
|
HMENU hMenu = GetApphMenu();
|
|
_DImagedit* pIedDisp = g_pAppOcxs->GetIeditDispatch();
|
|
|
|
VARIANT evt;
|
|
evt.vt = VT_ERROR;
|
|
CString szTmp;
|
|
m_bAnnotationsHiddenToggled = TRUE;
|
|
if (m_bAnnotationsHidden)
|
|
{
|
|
if (m_eCurrentAppDocStatus != No_Document && m_eCurrentView != Thumbnails_only)
|
|
{
|
|
// force pasted data if there is any
|
|
// do not do dirty, its done right below!!
|
|
FinishPasteNow();
|
|
// if there is any selection rectangle - remove it !
|
|
ClearSelectionRect(Both);
|
|
|
|
pIedDisp->ShowAnnotationGroup (evt);
|
|
}
|
|
|
|
szTmp.LoadString (IDS_HIDE_ANNOTATIONS);
|
|
::ModifyMenu (hMenu,ID_ANNOTATION_HIDEANNOTATIONS, MF_BYCOMMAND|MF_STRING,
|
|
ID_ANNOTATION_HIDEANNOTATIONS, szTmp);
|
|
m_bAnnotationsHidden = FALSE;
|
|
}
|
|
else
|
|
{
|
|
if (m_eCurrentAppDocStatus != No_Document && m_eCurrentView != Thumbnails_only)
|
|
{
|
|
// force pasted data if there is any
|
|
// do not do dirty, its done right below!!
|
|
FinishPasteNow();
|
|
// if there is any selection rectangle - remove it !
|
|
ClearSelectionRect(Both);
|
|
|
|
pIedDisp->HideAnnotationGroup (evt);
|
|
}
|
|
|
|
szTmp.LoadString (IDS_SHOW_ANNOTATIONS);
|
|
::ModifyMenu (hMenu,ID_ANNOTATION_HIDEANNOTATIONS, MF_BYCOMMAND|MF_STRING,
|
|
ID_ANNOTATION_HIDEANNOTATIONS, szTmp);
|
|
m_bAnnotationsHidden = TRUE;
|
|
//if tool palette was showing, hide it.
|
|
if (m_bAnnotationPaletteShowing)
|
|
{
|
|
_DImagedit* pIedDisp = g_pAppOcxs->GetIeditDispatch();
|
|
TRY
|
|
{
|
|
pIedDisp->HideAnnotationToolPalette ();
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
m_bAnnotationPaletteShowing = FALSE;
|
|
}
|
|
END_CATCH
|
|
m_bAnnotationPaletteShowing = FALSE;
|
|
}
|
|
// make sure tool is set to notool
|
|
if (m_nCurrAnnTool != NoTool)
|
|
SetAnnotationTool (NoTool);
|
|
}
|
|
// For OLE, as we convert, make the container update himself
|
|
OleDirtyset(OLEDIRTY_TOGANNOT);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateBurnInAnn(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateBurnInAnn(CCmdUI* pCmdUI)
|
|
{
|
|
if (m_eCurrentAppDocStatus == No_Document ||
|
|
m_eCurrentView == Thumbnails_only ||
|
|
m_eFileStatus == ReadOnly || m_bAnnotationsHidden)
|
|
pCmdUI->Enable (FALSE);
|
|
else
|
|
{
|
|
if (OurGetAnnotMarkCount() != 0)
|
|
pCmdUI->Enable(TRUE);
|
|
else
|
|
pCmdUI->Enable(FALSE);
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnBurnInAnn()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnBurnInAnn()
|
|
{
|
|
_DImagedit* pIedit = g_pAppOcxs->GetIeditDispatch();
|
|
|
|
VARIANT evt; evt.vt = VT_ERROR;
|
|
TRY
|
|
{
|
|
// burn 'em, burn 'em at the stakes !!
|
|
pIedit->BurnInAnnotations (ALL_ANNOTATIONS, DONT_CHANGE_ANNOTATION_COLOR, evt);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
g_pErr->PutErr (ErrorInImageEdit);
|
|
g_pErr->HandlePageConvertError ();
|
|
}
|
|
END_CATCH
|
|
|
|
// for OLE, if we burn it, update view in case colors change
|
|
OleDirtyset(OLEDIRTY_ANNOT); // Special flag to tell how dirty
|
|
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationAttachanote()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationAttachanote()
|
|
{
|
|
SetAnnotationTool (AttachANoteTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationFilledrectangle()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationFilledrectangle()
|
|
{
|
|
SetAnnotationTool (FilledRectangleTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationFreehandline()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationFreehandline()
|
|
{
|
|
SetAnnotationTool (FreehandLineTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationHighlightline()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationHighlightline()
|
|
{
|
|
SetAnnotationTool (HighlightTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationHollowrectangle()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationHollowrectangle()
|
|
{
|
|
SetAnnotationTool (HollowRectangleTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationNotool()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationNotool()
|
|
{
|
|
SetAnnotationTool (NoTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationRubberstamps()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationRubberstamps()
|
|
{
|
|
_DImagedit* pIedit = g_pAppOcxs->GetIeditDispatch ();
|
|
if ((m_eCurrPtrMode == Annotation) && (m_nCurrAnnTool == RubberStampTool))
|
|
{
|
|
pIedit->ShowRubberStampDialog ();
|
|
}
|
|
else
|
|
{
|
|
SetAnnotationTool (RubberStampTool);
|
|
pIedit->ShowRubberStampDialog ();
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationSelectionpointer()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationSelectionpointer()
|
|
{
|
|
SetAnnotationTool (SelectionTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationStraightline()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationStraightline()
|
|
{
|
|
SetAnnotationTool (StraightLineTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationTextfromfile()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationTextfromfile()
|
|
{
|
|
SetAnnotationTool (TextFromFileTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationTypedtext()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnAnnotationTypedtext()
|
|
{
|
|
SetAnnotationTool (TypedTextTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnAnnotationTypedtext()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEditDoc::SetAnnotationTool (AnnotationTool eTool, BOOL bInEvent)
|
|
{
|
|
_DImagedit* pIedit = g_pAppOcxs->GetIeditDispatch ();
|
|
|
|
if (m_nCurrAnnTool == eTool)
|
|
return (TRUE);
|
|
|
|
m_nCurrAnnTool = eTool;
|
|
TRY
|
|
{
|
|
if (!bInEvent)
|
|
pIedit->SelectTool ((short)eTool);
|
|
|
|
// if no tool selected and not in other mode now, go to default
|
|
if (NoTool == eTool)
|
|
{
|
|
if (m_eCurrPtrMode != Select && m_eCurrPtrMode != Drag)
|
|
OnEditDrag ();
|
|
}
|
|
else // some tool selected...
|
|
{
|
|
m_eCurrPtrMode = Annotation;
|
|
|
|
// force pasted data if there is any
|
|
// do the dirty now..
|
|
FinishPasteNow(2);
|
|
|
|
// if there is a image selection rectangle - remove it !
|
|
ClearSelectionRect(Image_Selection);
|
|
}
|
|
|
|
if (m_eCurrPtrMode == Drag)
|
|
pIedit->SetMousePointer (HAND_MOUSEPOINTER);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
// could not select the tool - make the selection NoTool & return
|
|
m_nCurrAnnTool = NoTool;
|
|
return (FALSE);
|
|
}
|
|
END_CATCH
|
|
return (TRUE);
|
|
}
|