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.
2021 lines
63 KiB
2021 lines
63 KiB
//=============================================================================
|
|
// (c) Copyright Wang Laboratories, Inc. 1993 All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
// Project: Norway - Image Editor
|
|
//
|
|
// Component: CIEditDoc
|
|
//
|
|
// File Name: docetc.cpp
|
|
//
|
|
// Class: CIEditDoc
|
|
//
|
|
// Functions:
|
|
//
|
|
// Remarks: This file is the continuation of the ieditdoc.cpp.
|
|
//-----------------------------------------------------------------------------
|
|
// Maintenance Log:
|
|
/*
|
|
$Header: S:\products\msprods\norway\iedit95\docetc.cpv 1.137 24 Jun 1996 18:18:20 GMP $
|
|
$Log: S:\products\msprods\norway\iedit95\docetc.cpv $
|
|
|
|
Rev 1.137 24 Jun 1996 18:18:20 GMP
|
|
PPC workaround for cancel on open test.
|
|
|
|
Rev 1.136 11 Jun 1996 10:33:00 RWR08970
|
|
Replaced IMG_WIN95 conditionals for XIF processing with WITH_XIF conditionals
|
|
(I'm commented them out completely for the moment, until things get settled)
|
|
|
|
Rev 1.135 22 May 1996 09:06:42 GSAGER
|
|
updated to check for twain if present then call ocx to see if available
|
|
|
|
Rev 1.134 16 May 1996 12:02:00 MMB
|
|
modified thumb width & ht setting to default to -1 for MS bug
|
|
|
|
Rev 1.133 04 Apr 1996 16:58:28 GMP
|
|
removed caching
|
|
|
|
Rev 1.132 26 Mar 1996 16:46:36 GMP
|
|
in ViewOptionsGeneral check if full screen toolbar needs to be displayed now
|
|
|
|
Rev 1.131 25 Mar 1996 17:52:52 GMP
|
|
removed IN_PROG_GENERAL around xif.
|
|
|
|
Rev 1.130 19 Mar 1996 11:21:56 GSAGER
|
|
added refresh method for the thumbnail context menu
|
|
|
|
Rev 1.129 18 Mar 1996 14:40:38 GMP
|
|
allow new files to be saved as different file types.
|
|
|
|
Rev 1.128 01 Mar 1996 14:22:12 GMP
|
|
when calculating size of new document, don't multiply width and height
|
|
by resolution. GetWidth and GetHeight have already figured in the resolution
|
|
|
|
Rev 1.127 29 Feb 1996 11:19:52 GMP
|
|
use different indexes for the file types in the open dlg if awd not enabled.
|
|
|
|
Rev 1.126 27 Feb 1996 16:27:24 GMP
|
|
added xif support.
|
|
|
|
Rev 1.125 15 Feb 1996 18:06:26 GMP
|
|
remove awd support for nt.
|
|
|
|
Rev 1.124 06 Feb 1996 14:45:28 GMP
|
|
call base class function in OnUpdateFileSendMail so that Send menu pick
|
|
will not be shown if MAPI unavailable.
|
|
|
|
Rev 1.123 29 Jan 1996 16:07:54 GSAGER
|
|
Docetc.cpp moved the code that creates a thumbnail if not present to Û
|
|
do so in all cases.
|
|
³ Line:2259 Col:28
|
|
|
|
Rev 1.122 19 Jan 1996 11:17:20 GMP
|
|
added support for normscrn bar.
|
|
|
|
Rev 1.121 18 Jan 1996 11:49:14 GSAGER
|
|
fixed bug when mailed inbox item multiple times.
|
|
|
|
Rev 1.120 15 Jan 1996 17:34:22 GMP
|
|
in DoNewBlankDocument set m_eFileStatus to ReadWrite.
|
|
|
|
Rev 1.119 15 Jan 1996 11:38:00 GSAGER
|
|
if a user changed thumbnail options before the splitter window was created th
|
|
caused a gpf this now creates and deletes the thumbnail if it has never been
|
|
created before thumbnail options
|
|
|
|
Rev 1.118 12 Jan 1996 16:01:02 GMP
|
|
In DoNewBlankDocument make sure thumb control exists before setting its image
|
|
|
|
Rev 1.117 11 Jan 1996 14:48:36 GMP
|
|
switchApptoEditMode in OnFileNewBlankDocument.
|
|
|
|
Rev 1.116 11 Jan 1996 12:22:06 GSAGER
|
|
added logic to create a tempfile for mailing an embedded exchange object
|
|
|
|
Rev 1.115 09 Jan 1996 13:57:48 GSAGER
|
|
made changes for thumbnail
|
|
|
|
Rev 1.114 13 Dec 1995 12:33:34 MMB
|
|
remove WITHSENDMAIL define since it was a left over from before
|
|
|
|
Rev 1.113 01 Dec 1995 13:03:14 MMB
|
|
fix bug# - 5468; image cache is cleared
|
|
|
|
Rev 1.112 28 Nov 1995 16:54:58 MMB
|
|
added warning message to be posted if the new image that is requested
|
|
is greater than 8MB
|
|
|
|
Rev 1.111 28 Nov 1995 10:46:20 MMB
|
|
fix PrintImage to pass in original filename
|
|
|
|
Rev 1.110 21 Nov 1995 15:42:54 MMB
|
|
check for existence of file in the application before calling the IE OCX
|
|
for file type information in the AdminShowFileDialog box function
|
|
|
|
Rev 1.109 20 Nov 1995 00:19:36 MMB
|
|
fix FileOpen to default to 1 (all image files) instead of 2 (TIFF files)
|
|
|
|
Rev 1.108 19 Nov 1995 15:59:30 MMB
|
|
set the filter in the show files of type dlg box based on the file that is
|
|
currently opened in the app
|
|
|
|
Rev 1.107 17 Nov 1995 17:14:24 LMACLENNAN
|
|
back from VC++2.2
|
|
|
|
Rev 1.103 17 Nov 1995 17:08:06 LMACLENNAN
|
|
propsheet now back to off the stack - not NEW'd
|
|
reset admin after cancelled saveas
|
|
|
|
Rev 1.102 16 Nov 1995 13:03:32 LMACLENNAN
|
|
GUY - fixed ViewOptsThumb by testint m_bwasmodified now
|
|
LARRY changed Sendmail to use SaveModified & send the real filename
|
|
|
|
Rev 1.101 09 Nov 1995 15:16:40 LMACLENNAN
|
|
from VC++4.0
|
|
|
|
Rev 1.105 08 Nov 1995 08:27:22 LMACLENNAN
|
|
new setTbarStyle call
|
|
|
|
Rev 1.104 07 Nov 1995 15:37:36 LMACLENNAN
|
|
InternalSaveAs has 3rd parm now
|
|
|
|
Rev 1.103 07 Nov 1995 08:37:16 LMACLENNAN
|
|
use new funct InternalSaveAs at new blank doc
|
|
|
|
Rev 1.102 06 Nov 1995 18:23:40 GMP
|
|
Don't prompt in PromptForBurnIn anymore.
|
|
|
|
Rev 1.101 27 Oct 1995 15:08:22 GMP
|
|
don't reset the file type in the file open dlg to "all image files" so it
|
|
will use the last files of type selected.
|
|
|
|
Rev 1.100 20 Oct 1995 16:02:26 JPRATT
|
|
update rotateall to fix prompt for saving when navigating
|
|
|
|
Rev 1.99 19 Oct 1995 07:25:02 LMACLENNAN
|
|
DEBUG_NEW
|
|
|
|
Rev 1.98 18 Oct 1995 12:33:52 GMP
|
|
clear image file name in admin SaveAs dlg.
|
|
|
|
Rev 1.97 10 Oct 1995 13:47:40 JPRATT
|
|
VC++ 4.0 updates
|
|
|
|
Rev 1.96 04 Oct 1995 15:06:10 MMB
|
|
dflt zoom = 50%
|
|
|
|
Rev 1.95 03 Oct 1995 09:47:20 LMACLENNAN
|
|
for the NewBlankDocument, do a Revoke to clear ROT
|
|
|
|
Rev 1.94 27 Sep 1995 18:25:32 GMP
|
|
Allow color bitmaps to be saved as AWD.
|
|
|
|
Rev 1.93 27 Sep 1995 11:32:00 LMACLENNAN
|
|
for OLE, do not display new blank dislog anymore
|
|
|
|
Rev 1.92 27 Sep 1995 09:34:32 MMB
|
|
now can save JPG to AWD
|
|
|
|
Rev 1.91 26 Sep 1995 15:16:08 MMB
|
|
added optional page mode fix
|
|
|
|
Rev 1.90 25 Sep 1995 14:44:14 LMACLENNAN
|
|
new getapphmenu
|
|
|
|
Rev 1.89 25 Sep 1995 10:39:26 MMB
|
|
fix mail bug - was sending the original file instead of the temp file
|
|
|
|
Rev 1.88 23 Sep 1995 16:13:52 MMB
|
|
made all anno's color on burnin - even if AWD - on O/i's request
|
|
|
|
Rev 1.87 22 Sep 1995 19:00:40 MMB
|
|
remove IMGTwainGetDSNames call
|
|
|
|
Rev 1.86 22 Sep 1995 15:56:10 JPRATT
|
|
remove prompt for burn in of awd annotations
|
|
|
|
Rev 1.85 21 Sep 1995 16:24:58 GMP
|
|
SetFilterIndex to 1 for admin ShowFileDialog so that open has filter of
|
|
all image files.
|
|
|
|
Rev 1.84 20 Sep 1995 17:05:26 MMB
|
|
fix bugs in AWD code - deleting in thumbnail mode & save
|
|
|
|
Rev 1.83 20 Sep 1995 15:13:16 LMACLENNAN
|
|
commented stuff for dirty-Size
|
|
|
|
Rev 1.82 20 Sep 1995 13:43:56 MMB
|
|
added bMustDisplay
|
|
|
|
Rev 1.81 18 Sep 1995 17:25:02 MMB
|
|
changed IDYES to IDNO
|
|
|
|
Rev 1.80 18 Sep 1995 17:21:16 GMP
|
|
SetFilter before SetFilterIndex on SaveAs in case index is larger
|
|
than previous filter. Fixes bug 4343.
|
|
|
|
Rev 1.79 18 Sep 1995 16:24:52 LMACLENNAN
|
|
FinishPaste
|
|
|
|
Rev 1.78 18 Sep 1995 11:42:52 MMB
|
|
fixed SendMail
|
|
|
|
Rev 1.77 18 Sep 1995 09:51:02 LMACLENNAN
|
|
use FinishPasteNow(1) to freeze pasted data before mark count call
|
|
|
|
Rev 1.76 16 Sep 1995 13:59:50 LMACLENNAN
|
|
removed GetCurrPtrMode, SetSelectionState to DOCAMBNT
|
|
|
|
Rev 1.75 16 Sep 1995 12:36:44 MMB
|
|
add new filters & ask burn in question for AWD
|
|
|
|
Rev 1.74 15 Sep 1995 17:27:32 LMACLENNAN
|
|
re-work startall ocx again for hang for OLE Linking
|
|
|
|
Rev 1.73 15 Sep 1995 16:40:46 MMB
|
|
burn all annotations to black only if current file type is AWD
|
|
|
|
Rev 1.72 15 Sep 1995 14:19:24 MMB
|
|
remove LETTER as dflt
|
|
|
|
Rev 1.71 13 Sep 1995 17:22:20 LMACLENNAN
|
|
re-work on StartAllOcx
|
|
|
|
Rev 1.70 13 Sep 1995 14:41:04 MMB
|
|
changed Start AllOcxs to only inquire scan availibility directly from Oi
|
|
|
|
Rev 1.69 13 Sep 1995 09:46:52 LMACLENNAN
|
|
assign parent for OLE for new blank doc dialog,
|
|
use ENUM in showannotationpalete
|
|
MIKI - comment out internalsavemod at dofileprint
|
|
|
|
Rev 1.68 12 Sep 1995 17:15:18 MMB
|
|
fix thumbnails so that they are centered after a rotate all
|
|
|
|
Rev 1.67 12 Sep 1995 14:05:36 LMACLENNAN
|
|
new parm in showannotationpalette
|
|
|
|
Rev 1.66 11 Sep 1995 15:00:02 MMB
|
|
fix RotateAll bug
|
|
|
|
Rev 1.65 08 Sep 1995 17:17:28 GMP
|
|
Had to move m_bDlgUp = FALSE for ShowPrintDialog out of the Try/Catch
|
|
sections because it was being skipped if cancel was pressed.
|
|
|
|
Rev 1.64 08 Sep 1995 17:01:30 GMP
|
|
added m_bDlgUp = True before ShowPrintDialog.
|
|
|
|
Rev 1.63 08 Sep 1995 16:05:42 MMB
|
|
added GetCurrAnnTool fn code
|
|
|
|
Rev 1.62 08 Sep 1995 16:00:22 GMP
|
|
added m_bDlgUp wrapper around dlgs for F1 help.
|
|
|
|
Rev 1.61 07 Sep 1995 17:13:46 MMB
|
|
fix AWD saves of DCX once more
|
|
|
|
Rev 1.60 07 Sep 1995 16:32:06 MMB
|
|
change getfiletype over to Admin
|
|
|
|
Rev 1.59 07 Sep 1995 11:22:06 LMACLENNAN
|
|
fix mail for OLE now
|
|
|
|
Rev 1.58 07 Sep 1995 10:55:08 MMB
|
|
fixed more stuff in fl types allowed in save as
|
|
|
|
Rev 1.56 06 Sep 1995 10:23:30 MMB
|
|
added all image files string to open dlg box
|
|
|
|
Rev 1.55 05 Sep 1995 17:07:20 MMB
|
|
add allow BMP to AWD save if b&w image, and setflags to 0 before calling
|
|
print dialog.
|
|
|
|
Rev 1.54 05 Sep 1995 14:51:14 LMACLENNAN
|
|
allow thumbs for OLE
|
|
|
|
Rev 1.53 05 Sep 1995 12:30:54 MMB
|
|
fixed bug in thumbnail resizing code
|
|
|
|
Rev 1.52 03 Sep 1995 11:35:32 LMACLENNAN
|
|
no thumbs for OLE rotate ALL, do DIrtySet there
|
|
|
|
Rev 1.51 02 Sep 1995 13:49:34 MMB
|
|
fix new blank document bugs
|
|
|
|
Rev 1.50 01 Sep 1995 23:35:00 MMB
|
|
change rotate all code
|
|
|
|
Rev 1.49 01 Sep 1995 17:54:02 MMB
|
|
move calling ImageEdit to calling Admin
|
|
|
|
Rev 1.48 01 Sep 1995 12:22:30 MMB
|
|
send app into Drag mode on New blank mode iff no ann tool is currently
|
|
selected
|
|
|
|
Rev 1.47 01 Sep 1995 11:08:34 MMB
|
|
dont ask question if annotations and AWD
|
|
|
|
Rev 1.46 30 Aug 1995 16:59:30 MMB
|
|
added code to disable Rotate all when in read only mode
|
|
|
|
Rev 1.45 29 Aug 1995 15:15:02 MMB
|
|
fixed bug on zoom
|
|
|
|
Rev 1.44 28 Aug 1995 15:49:14 LMACLENNAN
|
|
delete temp for all cases (generic). No CLearDOcument for OLE.
|
|
|
|
Rev 1.43 28 Aug 1995 13:55:54 LMACLENNAN
|
|
fixup DoNewBlankDocument.. Del temp file on creation to give name to SaveAs
|
|
Assign name to Iedit Ocx after saving...
|
|
|
|
Rev 1.42 26 Aug 1995 16:30:58 LMACLENNAN
|
|
move admin->setimage outside OLE test so OLE does it
|
|
|
|
Rev 1.41 25 Aug 1995 15:08:44 MMB
|
|
add rotate all code
|
|
|
|
Rev 1.39 25 Aug 1995 10:25:18 MMB
|
|
move to document model
|
|
|
|
Rev 1.38 22 Aug 1995 14:07:28 MMB
|
|
changed dflt comp info from expand_ltr to compress_ltr as per Mary's req
|
|
|
|
Rev 1.37 18 Aug 1995 15:26:56 LMACLENNAN
|
|
new startAllOcx ability for imageedit only
|
|
|
|
Rev 1.36 17 Aug 1995 14:25:44 LMACLENNAN
|
|
updated startallocx
|
|
|
|
Rev 1.35 17 Aug 1995 09:42:14 LMACLENNAN
|
|
scan init in startallocx
|
|
|
|
Rev 1.34 16 Aug 1995 15:24:20 MMB
|
|
removed hard coded string
|
|
|
|
Rev 1.33 14 Aug 1995 13:53:12 LMACLENNAN
|
|
new GetAppToolbar
|
|
|
|
Rev 1.32 12 Aug 1995 13:01:34 MMB
|
|
added fn to tell if the annotation palette is showing
|
|
|
|
Rev 1.31 11 Aug 1995 09:34:12 MMB
|
|
change define from FIT_TO_PAGE to CTL_WCOMMON_blah_blah_blah - broke da bld
|
|
|
|
Rev 1.30 10 Aug 1995 12:53:00 LMACLENNAN
|
|
rename function SetSelectionActive -> State, add Get
|
|
|
|
Rev 1.29 08 Aug 1995 13:08:22 PAJ
|
|
Clear path on blank documents to tell MMU there is a new document.
|
|
|
|
Rev 1.28 07 Aug 1995 09:25:14 MMB
|
|
new SetSelection status added
|
|
|
|
Rev 1.27 04 Aug 1995 14:36:52 MMB
|
|
new DoZoom func
|
|
|
|
Rev 1.26 04 Aug 1995 14:15:16 LMACLENNAN
|
|
added StartAllOcx function
|
|
|
|
Rev 1.25 04 Aug 1995 09:33:04 LMACLENNAN
|
|
remove srvritem.h
|
|
|
|
Rev 1.24 02 Aug 1995 14:14:30 MMB
|
|
changed Print to PrintImage for new Image EditOCX
|
|
|
|
Rev 1.23 02 Aug 1995 11:22:48 MMB
|
|
added new error handling mechanism
|
|
|
|
Rev 1.22 01 Aug 1995 16:16:50 MMB
|
|
changed AdminShowFileDialog to new error handling method
|
|
|
|
Rev 1.21 26 Jul 1995 15:43:04 LMACLENNAN
|
|
new stuff for FileNewBlank, OnNewBlank.. created
|
|
|
|
Rev 1.20 21 Jul 1995 11:40:36 MMB
|
|
change made dor defines in Image Edit OCX
|
|
|
|
Rev 1.19 21 Jul 1995 10:00:00 MMB
|
|
fixed bug in ShowPrintDlg return; the appln must check for what range option
|
|
the user has selected
|
|
|
|
Rev 1.18 19 Jul 1995 14:52:54 MMB
|
|
added File/Print... bug fix to the code
|
|
|
|
Rev 1.17 19 Jul 1995 13:46:18 MMB
|
|
change PromptForBurnIn return to IDYES & IDNO only
|
|
|
|
Rev 1.16 19 Jul 1995 13:13:56 MMB
|
|
added code to prompt for burning in the annotation marks
|
|
|
|
Rev 1.15 18 Jul 1995 16:32:44 MMB
|
|
check for new CANCELPRESSED define in Admin OCX
|
|
|
|
Rev 1.14 18 Jul 1995 13:09:56 MMB
|
|
move ShowFileDlg & ShowPrintDlg to new Admin OCX
|
|
|
|
Rev 1.13 18 Jul 1995 11:06:14 MMB
|
|
set pagenumber in IEOCX to 1 after DisplayBlankImage
|
|
|
|
Rev 1.12 17 Jul 1995 09:07:44 MMB
|
|
add UI handler for Thumb context for Show Page
|
|
|
|
Rev 1.11 14 Jul 1995 14:57:40 MMB
|
|
change over to the new BlankImageDOcument call in IE Ocx
|
|
|
|
Rev 1.10 14 Jul 1995 09:36:08 MMB
|
|
add return on SaveAs if user clicks on CANCEL
|
|
|
|
Rev 1.9 13 Jul 1995 10:31:56 MMB
|
|
add title to Save As dlg box
|
|
|
|
Rev 1.8 12 Jul 1995 11:14:08 MMB
|
|
move to new DispErr call
|
|
|
|
Rev 1.7 12 Jul 1995 09:10:40 MMB
|
|
fixed the order of the title when File/New was called
|
|
|
|
Rev 1.6 11 Jul 1995 14:46:52 MMB
|
|
added /pt command line processing
|
|
|
|
Rev 1.5 07 Jul 1995 15:55:38 LMACLENNAN
|
|
new parm to ShowScrollBars call
|
|
|
|
Rev 1.4 07 Jul 1995 09:42:04 MMB
|
|
added DoPrintFile method to this file
|
|
|
|
Rev 1.3 06 Jul 1995 13:05:28 MMB
|
|
added ShowAnnotationPalette function
|
|
|
|
Rev 1.2 30 Jun 1995 14:50:04 MMB
|
|
changed over to the new Pagedll.dll
|
|
|
|
Rev 1.1 28 Jun 1995 17:13:20 LMACLENNAN
|
|
error display
|
|
|
|
Rev 1.0 16 Jun 1995 07:21:32 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_11_CODES // limits error defines to ours..
|
|
#define E_02_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
|
|
|
|
// This will help detect memory Leaks from "new" - "delete" mismatches
|
|
#define new DEBUG_NEW
|
|
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
// CIEditDoc Etc functionality
|
|
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
|
|
//=============================================================================
|
|
// Function: StartAllOcx
|
|
//
|
|
// Done in specific order because SCAN requires ADMIN to be there for parent window
|
|
// (2 hidden controls issue) because scan kills himself right here.
|
|
//
|
|
// OLE never asks for thumb...
|
|
// OLE sometimes ONLY asks for ImageEdit (when rendering data for linking)
|
|
//
|
|
// m_ocxsFlag is the tracker....
|
|
// for normal calls by the app (TRUE, FALSE)
|
|
// m_ocxsFlag ends up at 2 (complete) or 1 (dead)
|
|
//
|
|
// if imageonly is set, m_ocxsFlag ends up at 99 (complete)
|
|
//
|
|
// Returns TRUE-OK, FALSE-BAD
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEditDoc::StartAllOcx(BOOL fromapp, BOOL onlyimage)
|
|
{
|
|
BOOL dothumb = FALSE; // used to be input parm
|
|
BOOL scancalled; // only call this once forever
|
|
char twain[256];
|
|
char twain32[256];
|
|
WIN32_FIND_DATA findFileData;
|
|
BOOL retval = FALSE; // assume bad for multi-passes
|
|
COcxItem* pOcx;
|
|
_DImagscan* pScan;
|
|
|
|
|
|
// see if the '128' bit is on.. the TWAIN call can possibly get
|
|
// recursive when starting a link. This will cause a hang.
|
|
// never call scan if its been started....
|
|
scancalled = m_ocxsFlag & 128;
|
|
m_ocxsFlag &= 127; // now kill that bit
|
|
|
|
// If it has completed a pass on image only,
|
|
// and is called like that again, just leave at 99, OK at end
|
|
// ELSE if called normal, reset m_ocxsFlag for normel bumping..
|
|
// Note all this only matters if called for onlyimage first...
|
|
// If called later for onlyimage, our m_ocxsFlag is already set to 1 or 2
|
|
if (m_ocxsFlag == 99)
|
|
if (!onlyimage)
|
|
m_ocxsFlag = 0;
|
|
|
|
// We'll only get one try to do this...(unless condition above)
|
|
if (0 == m_ocxsFlag)
|
|
{
|
|
m_bStartOcx = TRUE;
|
|
|
|
// OLETHUMB
|
|
// Now that OLE is trying for the thumbs, force it true...
|
|
// for now, we'll leave calling code to here the same..
|
|
// this may be reset below for the case that is image ocx only...
|
|
//dothumb = TRUE;
|
|
// SELF-INIT Now that we're back on the self-init model
|
|
// Never do thumbs here, do dynamically...
|
|
dothumb = FALSE;
|
|
|
|
BeginWaitCursor();
|
|
|
|
|
|
// seems that the ImageEidt Ocx init calls TWAIN and for ceratin
|
|
// OLE startups, causes the bad recursion on the TWAIN call....
|
|
// therefore, pick up twain first even for this case
|
|
if (onlyimage)
|
|
{
|
|
dothumb = FALSE; // force it
|
|
goto ImgOnly;
|
|
}
|
|
|
|
// Create the admin first so the parent window will not get deleted
|
|
// when the scan control is deleted. This is a bug with invisible
|
|
// controls (they share one parent window...).
|
|
|
|
// only for OLE....
|
|
if (!fromapp)
|
|
if ((pOcx = g_pAppOcxs->GetOcx(ADMIN_OCX)) == NULL)
|
|
goto quitnow;
|
|
|
|
// Get the scan control, get scan availability, and unload until needed
|
|
// If its not there, dont treat as death condition...
|
|
// If it is there, it will load the ImageEdit OCX as it performs operation
|
|
::GetWindowsDirectory(twain,sizeof(twain));
|
|
::lstrcpy(twain32,twain);
|
|
::lstrcat(twain,"\\twain\\*.*");
|
|
::lstrcat(twain32,"\\twain_32\\*.*");
|
|
|
|
if ((::FindFirstFile(twain,&findFileData) != INVALID_HANDLE_VALUE) ||
|
|
(::FindFirstFile(twain32,&findFileData) != INVALID_HANDLE_VALUE))
|
|
{
|
|
if ((pOcx = g_pAppOcxs->GetOcx(SCAN_OCX)) == NULL)
|
|
goto SkipScan;
|
|
pScan = g_pAppOcxs->GetScanDispatch ();
|
|
SetScanAvailable(pScan->ScannerAvailable());
|
|
pOcx->Delete();
|
|
}
|
|
else
|
|
SetScanAvailable(FALSE);
|
|
|
|
// this scan available is the only thing that the
|
|
// app is currently interested in....
|
|
|
|
ImgOnly:
|
|
|
|
if (!scancalled) // prevent recursion on this
|
|
{
|
|
// do both settings... even though this will get overwritten below
|
|
// if it falls thru, it will get re-or'd at end. The reason we need
|
|
// the 'or' now is that this call allows taksks time and will re-enter
|
|
// on the OLE LInk startup from the main app call in View::OnDraw
|
|
// then we need it or-d to work right
|
|
scancalled = TRUE;
|
|
m_ocxsFlag |= 128;
|
|
|
|
// prepare for two bumps for success below...
|
|
// if needed, 128 gets or'd back
|
|
m_ocxsFlag = 0;
|
|
}
|
|
|
|
SkipScan:
|
|
|
|
// only for OLE....
|
|
if (!fromapp)
|
|
{
|
|
if ((pOcx = g_pAppOcxs->GetOcx(IEDIT_OCX)) == NULL)
|
|
goto quitnow;
|
|
else if (onlyimage)
|
|
m_ocxsFlag = 97; // TAKE 2 bumps till bottom...
|
|
}
|
|
|
|
// only do thumb if asked....
|
|
// (currently never....)
|
|
#ifdef noSplit
|
|
if (dothumb)
|
|
if ((pOcx = g_pAppOcxs->GetOcx(THUMB_OCX)) == NULL)
|
|
goto quitnow;
|
|
#endif
|
|
m_ocxsFlag++; // success bump
|
|
|
|
quitnow:
|
|
|
|
EndWaitCursor();
|
|
m_bStartOcx = FALSE;
|
|
m_ocxsFlag++; // bump
|
|
}
|
|
|
|
// after first start or anytime, value 2 or 99
|
|
// means that all os OK. Other value (1) is BAD
|
|
if (2 == m_ocxsFlag || 99 == m_ocxsFlag)
|
|
retval = TRUE;
|
|
|
|
if (scancalled)
|
|
m_ocxsFlag |= 128;
|
|
|
|
return (retval);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetAppToolBar
|
|
//
|
|
// Returns toolbar created on behalf of the APP for normal situatiions
|
|
// (Including OLE Server launched in separate window...)
|
|
// -OR- toolbar created on behalf of the APP in OLE INPLACE session..
|
|
//-----------------------------------------------------------------------------
|
|
CIEMainToolBar* CIEditDoc::GetAppToolBar()
|
|
{
|
|
CIEMainToolBar* pTool;
|
|
// check for OLE inplace frame...
|
|
if(NULL != m_IPFrameWnd)
|
|
pTool = m_IPFrameWnd->GetToolBar();
|
|
else // regular operation
|
|
pTool = ((CIEditMainFrame*)theApp.m_pMainWnd)->GetToolBar();
|
|
|
|
return (pTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetApphMenu
|
|
//
|
|
// Returns toolbar created on behalf of the APP for normal situatiions
|
|
// (Including OLE Server launched in separate window...)
|
|
// -OR- toolbar created on behalf of the APP in OLE INPLACE session..
|
|
//-----------------------------------------------------------------------------
|
|
HMENU CIEditDoc::GetApphMenu()
|
|
{
|
|
HMENU hMenu;
|
|
hMenu =GetDefaultMenu();
|
|
// check for OLE inplace frame...
|
|
if(NULL == hMenu)
|
|
{
|
|
CMenu* pMenu = theApp.m_pMainWnd->GetMenu();
|
|
hMenu = pMenu->m_hMenu;
|
|
}
|
|
return (hMenu);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: AdminShowFileDialogBox (CString& szTitle, long lFlags)
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEditDoc::AdminShowFileDialogBox (CString& szTitle, long lFlags)
|
|
{
|
|
// load the filters from the rc file
|
|
CString szFilter = (LPCTSTR) NULL, szTmp = (LPCTSTR) NULL;
|
|
|
|
// *.tif, *.awd, *.bmp, *.jpg, *.pcx, *.dcx, xif, *.*
|
|
szFilter.LoadString (IDS_ALLIMAGEFILES);
|
|
szFilter += _T("|");
|
|
szTmp.LoadString (IDS_TIFFFILES); // load the TIFF string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
#ifdef WITH_AWD
|
|
szTmp.LoadString (IDS_AWDFILES); // load the AWD string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
#endif
|
|
szTmp.LoadString (IDS_BMPFILES); // load the BMP string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
szTmp.LoadString (IDS_JPEGFILES); // load the JPEG string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
szTmp.LoadString (IDS_PCXFILES); // load the PCX string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
//#ifdef WITH_XIF
|
|
szTmp.LoadString (IDS_XIFFILES); // load the XIF string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
//#endif //WITH_XIF
|
|
szTmp.LoadString (IDS_ALLFILES); // load the ALL string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
|
|
_DImagedit* pIedDisp = g_pAppOcxs->GetIeditDispatch();
|
|
short nFilterIndex = -1;
|
|
|
|
if (m_eCurrentAppDocStatus != No_Document)
|
|
{
|
|
TRY
|
|
{
|
|
nFilterIndex = pIedDisp->GetFileType ();
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
}
|
|
END_CATCH
|
|
}
|
|
|
|
_DNrwyad* pAdmDisp = g_pAppOcxs->GetAdminDispatch();
|
|
|
|
TRY
|
|
{
|
|
pAdmDisp->SetDefaultExt (_T("tif")); // set the default extension to tif
|
|
pAdmDisp->SetDialogTitle (szTitle); // set the dlg title to Open
|
|
pAdmDisp->SetFilter (szFilter); // set the filter in the Admin ocx
|
|
pAdmDisp->SetFlags (lFlags);
|
|
pAdmDisp->SetInitDir (m_szInitialPath);
|
|
|
|
switch (nFilterIndex)
|
|
{
|
|
case TIFF :
|
|
nFilterIndex = 2;
|
|
break;
|
|
#ifdef WITH_AWD
|
|
case AWD :
|
|
nFilterIndex = 3;
|
|
break;
|
|
case BMP :
|
|
nFilterIndex = 4;
|
|
break;
|
|
case PCX :
|
|
case DCX :
|
|
nFilterIndex = 6;
|
|
break;
|
|
case JPEG :
|
|
nFilterIndex = 5;
|
|
break;
|
|
#else
|
|
case BMP :
|
|
nFilterIndex = 3;
|
|
break;
|
|
case PCX :
|
|
case DCX :
|
|
nFilterIndex = 5;
|
|
break;
|
|
case JPEG :
|
|
nFilterIndex = 4;
|
|
break;
|
|
#endif
|
|
|
|
//#ifdef WITH_XIF
|
|
case XIF :
|
|
nFilterIndex = 7;
|
|
break;
|
|
//#endif //WITH_XIF
|
|
default :
|
|
nFilterIndex = 1;
|
|
break;
|
|
}
|
|
pAdmDisp->SetFilterIndex ((long)nFilterIndex);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
g_pErr->PutErr (ErrorInAdmin);
|
|
return (FALSE);
|
|
}
|
|
END_CATCH
|
|
|
|
// todo : set the help properties;
|
|
TRY
|
|
{
|
|
VARIANT vhWnd;
|
|
vhWnd.vt = VT_I4;
|
|
vhWnd.lVal = (long)((theApp.m_pMainWnd)->GetSafeHwnd());
|
|
pAdmDisp->ShowFileDialog (CTL_ADMIN_DIALOG_OPEN, vhWnd); // exec method to display the Open dialog box
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
DWORD dwRes = 0;
|
|
|
|
dwRes = pAdmDisp->GetStatusCode ();
|
|
if (dwRes == WICTL_E_CANCELPRESSED)
|
|
return (TRUE);
|
|
|
|
g_pErr->PutErr (ErrorInAdmin);
|
|
return (FALSE);
|
|
}
|
|
END_CATCH
|
|
|
|
// okay ! all seems to have went well
|
|
return (TRUE);
|
|
}
|
|
|
|
#include "generald.h"
|
|
//=============================================================================
|
|
// Function: OnViewOptionsGeneral()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnViewOptionsGeneral()
|
|
{
|
|
|
|
CIEMainToolBar* pBar = GetAppToolBar();
|
|
|
|
CGeneralDlg TheDlg;
|
|
TheDlg.m_bColorButtons = pBar->m_bAreButtonsInColor;
|
|
TheDlg.m_bLargeButtons = pBar->m_bAreButtonsLarge;
|
|
TheDlg.m_bShowScrollBars = m_bShowScrollBars;
|
|
TheDlg.m_bShowNormScrnBar = m_bShowNormScrnBar;
|
|
theApp.m_bDlgUp = TRUE;
|
|
|
|
if (TheDlg.DoModal () == IDOK)
|
|
{
|
|
// no longer called
|
|
//pBar->ShowButtonsColorOrMono (TheDlg.m_bColorButtons);
|
|
//pBar->ShowButtonsLargeOrSmall (TheDlg.m_bLargeButtons);
|
|
|
|
pBar->SetTbarStyle(TheDlg.m_bColorButtons, TheDlg.m_bLargeButtons);
|
|
|
|
// for OLE, if we toggel scrollbars, update view
|
|
// funct returns TRUE if it did it...
|
|
if (ShowScrollBars (TheDlg.m_bShowScrollBars, TRUE)) // TRUE = Save registry seting
|
|
OleDirtyset(OLEDIRTY_TOGSCROLL); // Special flag to tell how dirty
|
|
|
|
m_bShowNormScrnBar = TheDlg.m_bShowNormScrnBar;
|
|
((CIEditMainFrame*)theApp.m_pMainWnd)->CheckFullScreenToolBar( m_bShowNormScrnBar );
|
|
|
|
// save the stuff to the registry
|
|
theApp.WriteProfileInt (szEtcStr, szClrButtonsStr, (pBar->m_bAreButtonsInColor ? 1 : 0));
|
|
theApp.WriteProfileInt (szEtcStr, szLgButtonsStr, (pBar->m_bAreButtonsLarge ? 1 : 0));
|
|
theApp.WriteProfileInt (szEtcStr, szScrollBarsStr, (m_bShowScrollBars ? 1 : 0));
|
|
theApp.WriteProfileInt (szEtcStr, szNormScrnBarStr, (m_bShowNormScrnBar ? 1 : 0));
|
|
|
|
ScaleFactors eSclFac;
|
|
float fZoom;
|
|
int nSel = TheDlg.GetZoomDefault (eSclFac, fZoom);
|
|
theApp.WriteProfileInt (szZoomStr, szOpenedToStr, nSel);
|
|
}
|
|
theApp.m_bDlgUp = FALSE;
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnViewOptionsThumbnail()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnViewOptionsThumbnail()
|
|
{
|
|
_DThumb* pThumbDisp = g_pAppOcxs->GetThumbDispatch ();
|
|
|
|
VARIANT ImageVt, PageVt;
|
|
BOOL bRet;
|
|
BOOL bCreateThumb = FALSE;
|
|
|
|
if(pThumbDisp == NULL)
|
|
{
|
|
pThumbDisp = new CImgThumbnail;
|
|
pThumbDisp->Create(NULL, 0 ,
|
|
CRect(0,0,10,10), theApp.m_pMainWnd, 0);
|
|
bCreateThumb = TRUE;
|
|
// get the thumbnail height & width from the registry & set it !
|
|
int nThmbStuff;
|
|
nThmbStuff = theApp.GetProfileInt (szThumbnailStr, szThumbWidthStr, -1);
|
|
if (nThmbStuff != -1) pThumbDisp->SetThumbWidth (nThmbStuff);
|
|
nThmbStuff = theApp.GetProfileInt (szThumbnailStr, szThumbHeightStr, -1);
|
|
if (nThmbStuff != -1) pThumbDisp->SetThumbHeight (nThmbStuff);
|
|
}
|
|
|
|
if (m_eCurrentAppDocStatus != No_Document)
|
|
{
|
|
ImageVt.vt = VT_BSTR;
|
|
if ((m_eCurrentAppDocStatus == Dynamic_Document) || (m_bWasModified == ImageModifiedByUser))
|
|
ImageVt.bstrVal = m_szInternalObjDisplayed.AllocSysString();
|
|
else
|
|
ImageVt.bstrVal = m_szCurrObjDisplayed.AllocSysString();
|
|
|
|
PageVt.vt = VT_I4; PageVt.lVal = m_lCurrPageNumber;
|
|
theApp.m_bDlgUp = TRUE;
|
|
bRet = pThumbDisp->UISetThumbSize (ImageVt, PageVt);
|
|
theApp.m_bDlgUp = FALSE;
|
|
SysFreeString (ImageVt.bstrVal);
|
|
}
|
|
else
|
|
{
|
|
ImageVt.vt = VT_ERROR; PageVt.vt = VT_ERROR;
|
|
theApp.m_bDlgUp = TRUE;
|
|
bRet = pThumbDisp->UISetThumbSize (ImageVt, PageVt);
|
|
theApp.m_bDlgUp = FALSE;
|
|
}
|
|
|
|
if (bRet)
|
|
{
|
|
long lWidth, lHeight;
|
|
lWidth = pThumbDisp->GetThumbWidth ();
|
|
lHeight = pThumbDisp->GetThumbHeight ();
|
|
|
|
theApp.WriteProfileInt (szThumbnailStr, szThumbWidthStr, (int)lWidth);
|
|
theApp.WriteProfileInt (szThumbnailStr, szThumbHeightStr, (int)lHeight);
|
|
|
|
if ((m_eCurrentAppDocStatus != No_Document) && (m_eCurrentView != One_Page))
|
|
{
|
|
POSITION pos = GetFirstViewPosition();
|
|
CView* pView = GetNextView (pos);
|
|
if (pView != NULL)
|
|
{
|
|
CRect rcRect;
|
|
pView->GetClientRect (rcRect);
|
|
g_pAppOcxs->SizeOcxItems (rcRect);
|
|
}
|
|
}
|
|
}
|
|
if(bCreateThumb)
|
|
{
|
|
pThumbDisp->DestroyWindow();
|
|
delete pThumbDisp;
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateIeditFilePrint(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateIeditFilePrint(CCmdUI* pCmdUI)
|
|
{
|
|
if (m_eCurrentAppDocStatus == No_Document)
|
|
pCmdUI->Enable (FALSE);
|
|
else
|
|
pCmdUI->Enable (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnIeditFilePrint()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnIeditFilePrint()
|
|
{
|
|
if (theApp.m_eCmdLineSwitch == None)
|
|
DoFilePrint ();
|
|
else
|
|
DoFilePrint (TRUE, FALSE);
|
|
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: DoFilePrint()
|
|
//-----------------------------------------------------------------------------
|
|
#include "cmdline.h"
|
|
void CIEditDoc::DoFilePrint(BOOL bPrintAndClose, BOOL bShowPrintDlg)
|
|
{
|
|
BOOL bPrintAnnotations;
|
|
long lStartPage, lEndPage, lNumCopies;
|
|
short sOutputFormat;
|
|
_DNrwyad* pAdmin = NULL;
|
|
|
|
// save the current page first
|
|
//if (!InternalSaveModified ())
|
|
// return;
|
|
|
|
if (bPrintAndClose || !bShowPrintDlg)
|
|
{
|
|
// if we do not show the Print dialog box then we will print the annotations & print
|
|
// all the pages in the image
|
|
bPrintAnnotations = TRUE; lStartPage = 1; lEndPage = m_lPageCount;
|
|
sOutputFormat = CTL_WCOMMON_PRINTFORMAT_FITTOPAGE;
|
|
goto Continue_with_FilePrint;
|
|
}
|
|
|
|
// use the admin OCX to show the print dlg box
|
|
pAdmin = g_pAppOcxs->GetAdminDispatch();
|
|
TRY
|
|
{
|
|
VARIANT vhWnd;
|
|
vhWnd.vt = VT_I4; vhWnd.lVal = (long)((theApp.m_pMainWnd)->GetSafeHwnd());
|
|
pAdmin->SetFlags (0);
|
|
theApp.m_bDlgUp = TRUE;
|
|
pAdmin->ShowPrintDialog (vhWnd);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
}
|
|
END_CATCH
|
|
theApp.m_bDlgUp = FALSE;
|
|
|
|
if (pAdmin->GetStatusCode () == WICTL_E_CANCELPRESSED)
|
|
return;
|
|
|
|
// get the information from the Admin OCX and give it to the
|
|
// Image Edit OCX to do the actual printing
|
|
bPrintAnnotations = pAdmin->GetPrintAnnotations ();
|
|
switch (pAdmin->GetPrintRangeOption())
|
|
{
|
|
case CTL_ADMIN_PRINTRANGE_ALL :
|
|
lStartPage = 1;
|
|
lEndPage = m_lPageCount;
|
|
break;
|
|
|
|
case CTL_ADMIN_PRINTRANGE_PAGES :
|
|
lStartPage = pAdmin->GetPrintStartPage ();
|
|
lEndPage = pAdmin->GetPrintEndPage ();
|
|
break;
|
|
}
|
|
|
|
lNumCopies = pAdmin->GetPrintNumCopies ();
|
|
sOutputFormat = pAdmin->GetPrintOutputFormat();
|
|
|
|
Continue_with_FilePrint :
|
|
|
|
// set the above information in the ImageEdit OCX
|
|
VARIANT vStartPage, vEndPage, vOutputFormat, vPrintAnnotations, evt;
|
|
// set the start page
|
|
vStartPage.vt = VT_I4; vStartPage.lVal = lStartPage;
|
|
// set the end page
|
|
vEndPage.vt = VT_I4; vEndPage.lVal = lEndPage;
|
|
// set the output format
|
|
vOutputFormat.vt = VT_I2; vOutputFormat.iVal = sOutputFormat;
|
|
// set the flag to print annotation or not
|
|
vPrintAnnotations.vt = VT_BOOL; vPrintAnnotations.bVal = bPrintAnnotations;
|
|
// do it!
|
|
_DImagedit* pIedDisp = g_pAppOcxs->GetIeditDispatch();
|
|
|
|
evt.vt = VT_ERROR;
|
|
|
|
if (theApp.m_eCmdLineSwitch == Print)
|
|
{
|
|
TRY
|
|
{
|
|
pIedDisp->PrintImage (vStartPage, vEndPage, vOutputFormat, vPrintAnnotations, evt, evt, evt);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
}
|
|
END_CATCH
|
|
}
|
|
else if (theApp.m_eCmdLineSwitch == PrintTo)
|
|
{
|
|
CCmdLine cmdline;
|
|
CString szPrinter, szDriver, szPort;
|
|
cmdline.GetPrintToParms (theApp.m_lpCmdLine, szPrinter, szDriver, szPort);
|
|
VARIANT vPrinter, vDriver, vPort;
|
|
vPrinter.vt = vPort.vt = vDriver.vt = VT_BSTR;
|
|
|
|
vPrinter.bstrVal = szPrinter.AllocSysString();
|
|
vDriver.bstrVal = szDriver.AllocSysString();
|
|
vPort.bstrVal = szPort.AllocSysString();
|
|
|
|
TRY
|
|
{
|
|
pIedDisp->PrintImage (vStartPage, vEndPage, vOutputFormat, vPrintAnnotations, vPrinter, vDriver, vPort);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
}
|
|
END_CATCH
|
|
|
|
SysFreeString (vPort.bstrVal);
|
|
SysFreeString (vDriver.bstrVal);
|
|
SysFreeString (vPrinter.bstrVal);
|
|
}
|
|
else
|
|
{
|
|
TRY
|
|
{
|
|
VARIANT vTitle; vTitle.vt = VT_BSTR;
|
|
CString szTmp1;
|
|
|
|
if (m_eCurrentAppDocStatus == Dynamic_Document)
|
|
{
|
|
CString szTmp, szTmp1;
|
|
szTmp.LoadString (IDR_MAINFRAME);
|
|
AfxExtractSubString (szTmp1, szTmp, 1); // extract the name of a new document
|
|
|
|
vTitle.bstrVal = szTmp1.AllocSysString ();
|
|
pIedDisp->PrintImageAs (vStartPage, vEndPage, vOutputFormat, vPrintAnnotations, vTitle, evt, evt, evt);
|
|
SysFreeString (vTitle.bstrVal);
|
|
}
|
|
else
|
|
{
|
|
if (m_szInternalObjDisplayed.IsEmpty ())
|
|
{
|
|
pIedDisp->PrintImage (vStartPage, vEndPage, vOutputFormat, vPrintAnnotations, evt, evt, evt);
|
|
}
|
|
else
|
|
{
|
|
LPTSTR lpFile = szTmp1.GetBuffer (_MAX_FNAME);
|
|
GetFileTitle (m_szCurrObjDisplayed, lpFile, _MAX_FNAME);
|
|
szTmp1.ReleaseBuffer ();
|
|
vTitle.bstrVal = szTmp1.AllocSysString ();
|
|
pIedDisp->PrintImageAs (vStartPage, vEndPage, vOutputFormat, vPrintAnnotations, vTitle, evt, evt, evt);
|
|
SysFreeString (vTitle.bstrVal);
|
|
}
|
|
}
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
}
|
|
END_CATCH
|
|
}
|
|
|
|
if (bPrintAndClose)
|
|
theApp.m_pMainWnd->PostMessage(WM_CLOSE, 0, 0);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateFileSendMail(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateFileSendMail(CCmdUI* pCmdUI)
|
|
{
|
|
COleDocument::OnUpdateFileSendMail(pCmdUI);//will not show Send pick if MAPI unavailable
|
|
if (m_eCurrentAppDocStatus != No_Document)
|
|
pCmdUI->Enable (TRUE);
|
|
else
|
|
pCmdUI->Enable (FALSE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnFileSendMail()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnFileSendMail()
|
|
{
|
|
CString oldname;
|
|
BOOL oldbemb;
|
|
oldname.Empty();
|
|
|
|
// fisrt, be sure its al updated...
|
|
// Use SaveModified so that the ORIGINAL file gets updated
|
|
// We uset to use INternalSaveMod here and send the ~IV file over.
|
|
// setting this flag changes the question that is asked if its
|
|
// dynamic (blank) document. FOr that case, we force him to either
|
|
// save it now or cancel the operation. This way we avoid confusion
|
|
// if he were to answer "NO" to the save question, he sends his image per
|
|
// the current state of ths disk file.
|
|
m_bSendingMail = TRUE;
|
|
if (!SaveModified ())
|
|
return;
|
|
|
|
// For OLE, we must tool the internal pathname so that
|
|
// Mail will pickup our file. The result is that you get
|
|
// "EMB4927.TIF" as the attachment in the mail package..
|
|
//
|
|
// LDM NOTE: 11/16/95 If you do not do this, and let the base class SendMail do its
|
|
// thing, it finds the m_strPathName empty, calls us back with DoSave to save in some
|
|
// temp file, then titles the attachment from our title "Image Doc in LARRY.XLS"
|
|
// Thats kind of OK, except that now we are faced with a MAIL bug in that it associates
|
|
// the item with the TITLE. It will try to use EXCEL to open the image data. (for
|
|
// this case). So, even though this places our cryptic filename as the attachment,
|
|
// it mails OK and associates with our application.
|
|
if (IsitEmbed())
|
|
{
|
|
// only remember if we have something
|
|
if (!m_strPathName.IsEmpty())
|
|
oldname = m_strPathName;
|
|
|
|
// will fail assertion if both not set right
|
|
#ifdef WITH_AWD
|
|
if (m_awdOlefax & AWDOLE_NATIVE)
|
|
{
|
|
DWORD ourerr;
|
|
if(!(m_mailTmpFile.IsEmpty()))
|
|
DelTempFile(m_mailTmpFile, ourerr, E_02_CATCH_DELTMP);
|
|
MakeTempFile("EMB", m_mailTmpFile, 2);
|
|
InternalSaveAs(m_mailTmpFile,999,999);
|
|
m_strPathName = m_mailTmpFile;
|
|
}
|
|
else
|
|
#endif
|
|
m_strPathName = m_embedTmpFile;
|
|
oldbemb = m_bEmbedded;
|
|
m_bEmbedded = FALSE;
|
|
}
|
|
|
|
#if(0) // LDM 11/16/95 only need this if using InternalSaveModified...
|
|
// when performing savemodified, the original file has already been updated
|
|
|
|
else
|
|
{
|
|
if (!m_strPathName.IsEmpty())
|
|
oldname = m_strPathName;
|
|
|
|
// will fail assertion if both not set right
|
|
if (!m_szInternalObjDisplayed.IsEmpty())
|
|
m_strPathName = m_szInternalObjDisplayed;
|
|
}
|
|
#endif
|
|
|
|
COleDocument::OnFileSendMail ();
|
|
|
|
// For OLE, we must tool back the internal pathname
|
|
if (IsitEmbed())
|
|
{
|
|
// only restore if not empty
|
|
if (oldname.IsEmpty())
|
|
m_strPathName.Empty();
|
|
else
|
|
m_strPathName = oldname;
|
|
|
|
m_bEmbedded = oldbemb;
|
|
}
|
|
|
|
|
|
#if(0) // LDM 11/16/95 only need this if using InternalSaveModified...
|
|
// when performing savemodified, the original file has already been updated
|
|
|
|
else
|
|
{
|
|
if (!oldname.IsEmpty())
|
|
m_strPathName = oldname;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateFileNewBlankdocument(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateFileNewBlankdocument(CCmdUI* pCmdUI)
|
|
{
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnFileNewBlankdocument()
|
|
//
|
|
// This is the menu item function, calls helper to share functioinality
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnFileNewBlankdocument()
|
|
{
|
|
DoNewBlankdocument(FALSE, NULL);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: DoNewBlankdocument()
|
|
//
|
|
// Input param defaults to FALSE unless used by the OLE Section!!!!!
|
|
//
|
|
// RETURNS 0 for success,
|
|
// 1 for cancelled,
|
|
// 2 on error
|
|
//-----------------------------------------------------------------------------
|
|
#include "pagedll.h"
|
|
UINT CIEditDoc::DoNewBlankdocument(BOOL oleCreatenew, LPCTSTR szNewFile) // default = FALSE
|
|
{
|
|
CWnd* parent;
|
|
_DThumb* pThumb;
|
|
_DImagedit* pIedDisp;
|
|
CIEMainToolBar* pToolBar;
|
|
//CPagePropSheet* pNewDlg = NULL;
|
|
UINT retval = 0;
|
|
CString szTmp1;
|
|
|
|
|
|
// check to see if we have modified this document - if so,
|
|
// ask the user to save this document first
|
|
// this is only IF NOT on OLE situation
|
|
if (!oleCreatenew)
|
|
if (!SaveModified ())
|
|
retval = 1; // cancelled
|
|
|
|
// written this way for VC++2.2 / 4.0 compatibility
|
|
// proceed if OK..
|
|
if (0 == retval)
|
|
{
|
|
// well he did what he did, now show the file new dialog box
|
|
CString szTmp;
|
|
szTmp.LoadString (IDS_NEWBLANKDOC_DLGCAPTION);
|
|
|
|
// if OLE inplace, substitite parent window..
|
|
// We use our inplace frame window. Tried saving and using
|
|
// windows passed to us in CIEditDoc::CreateInPlaceFrame(CWnd* pParentWnd)
|
|
// and in CInPlaceFrame::OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc)
|
|
// bu those do not work, we ASSERT because we cant use the other process'es
|
|
// windows in our process. Also, setting NULL did not work nicely, either
|
|
|
|
// Update 09/27/95 LDM. This dialog can HANG Excel if we just let it set there
|
|
// Excel is awaiting completion of OLE event and it gets all messed up.
|
|
// so, for OLE, change to NOT DISPLAYING the dialog (no DoMOdal). We'll
|
|
// behave just like they hit OK. We should still get the international
|
|
// benefits of A4 or 8.5 x 11 at the end
|
|
|
|
if (oleCreatenew && m_isInPlace)
|
|
parent = (CWnd*)m_IPFrameWnd;
|
|
else // typical operation
|
|
parent = theApp.m_pMainWnd;
|
|
|
|
// CPropertySheet is the type...
|
|
//pNewDlg = new CPagePropSheet(szTmp, parent);
|
|
CPagePropSheet NewDlg(szTmp, parent);
|
|
|
|
// the order of the property pages on the dialog box are :
|
|
// FileType, Color, Compression, Resolution & Size
|
|
// Only give file type option IF NOT on OLE situation
|
|
if (!oleCreatenew)
|
|
NewDlg.AddFileTypePage ();
|
|
NewDlg.AddColorPage ();
|
|
NewDlg.AddCompressionPage ();
|
|
NewDlg.AddResolutionPage ();
|
|
NewDlg.AddSizePage ();
|
|
// set up the defaults in the dialog box
|
|
NewDlg.SetDefaultFileType (TIFF);
|
|
NewDlg.SetDefaultColor (BLACK_AND_WHITE);
|
|
NewDlg.SetDefaultResolution (200, 200);
|
|
NewDlg.SetDefaultCompType (GROUP3_MODIFIED_HUFFMAN);
|
|
NewDlg.SetDefaultCompOpts (CTL_ADMIN_COMPINFO_COMP_LTR);
|
|
|
|
theApp.m_bDlgUp = TRUE;
|
|
|
|
// 09/27/95 LDM for OLE, dont display it, just use it for values
|
|
if (!oleCreatenew)
|
|
{
|
|
if (NewDlg.DoModal() != IDOK)
|
|
{
|
|
// bozo does not want to do the new page after all!
|
|
theApp.m_bDlgUp = FALSE;
|
|
|
|
retval = 1; // cancelled
|
|
goto CLEANANDLEAVE;
|
|
}
|
|
}
|
|
|
|
VARIANT ResX, ResY, PgType;
|
|
ResX.vt = ResY.vt = VT_I4;
|
|
ResX.lVal = NewDlg.GetXRes ();
|
|
ResY.lVal = NewDlg.GetYRes ();
|
|
PgType.vt = VT_I2; PgType.iVal = NewDlg.GetColor ();
|
|
|
|
long lXSize;
|
|
lXSize = (NewDlg.GetWidth() * NewDlg.GetHeight());
|
|
|
|
switch (NewDlg.GetColor ())
|
|
{
|
|
case BLACK_AND_WHITE :
|
|
lXSize = (lXSize >> 3);
|
|
break;
|
|
|
|
case PAL_4 :
|
|
case GRAY_4 :
|
|
lXSize = (lXSize >> 2);
|
|
break;
|
|
|
|
case PAL_8 :
|
|
case GRAY_8 :
|
|
break;
|
|
|
|
case RGB_24 :
|
|
case BGR_24 :
|
|
lXSize = (lXSize * 3);
|
|
break;
|
|
}
|
|
|
|
theApp.m_bDlgUp = FALSE;
|
|
|
|
#define MAX_NEWIMAGE_WARNSIZE 8000000
|
|
|
|
if (lXSize > MAX_NEWIMAGE_WARNSIZE)
|
|
{
|
|
if (AfxMessageBox (IDS_NEWIMAGE_WARNING, MB_YESNO) == IDNO)
|
|
{
|
|
retval = 1;
|
|
goto CLEANANDLEAVE;
|
|
}
|
|
}
|
|
|
|
szTmp.Empty ();
|
|
|
|
BeginWaitCursor(); // put up the wait cursor
|
|
|
|
szTmp1 = m_szCurrObjDisplayed;
|
|
// okay - clear the current image
|
|
m_szCurrObjDisplayed.Empty();
|
|
|
|
// Remove any entry from the Running Object Table....
|
|
Revoke();
|
|
|
|
pIedDisp = g_pAppOcxs->GetIeditDispatch ();
|
|
// clear the image name from the Image Edit OCX
|
|
|
|
// do thumb only IF NOT on OLE situation
|
|
// OLETHUMB
|
|
//if (!oleCreatenew)
|
|
//{
|
|
pThumb = g_pAppOcxs->GetThumbDispatch ();
|
|
// clear the image name from the Thumbnail OCX
|
|
if( pThumb != NULL )
|
|
pThumb->SetImage (szTmp);
|
|
//}
|
|
|
|
if (m_eCurrentView != One_Page)
|
|
// set the application in one page view mode - this is the only view available
|
|
// if the appln is in Dynamic_Document mode
|
|
SetOnePageView ();
|
|
|
|
if (pIedDisp->GetImageDisplayed())
|
|
pIedDisp->ClearDisplay();
|
|
pIedDisp->SetImage (szTmp);
|
|
|
|
/* TRY
|
|
{
|
|
if (!szTmp1.IsEmpty())
|
|
pIedDisp->RemoveImageCache (szTmp1, -1);
|
|
|
|
if (!m_szInternalObjDisplayed.IsEmpty())
|
|
pIedDisp->RemoveImageCache (m_szInternalObjDisplayed, -1);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
}
|
|
AND_CATCH (CException, e)
|
|
{
|
|
}
|
|
END_CATCH
|
|
*/
|
|
TRY
|
|
{
|
|
// tell the Image Edit OCX to create a blank image
|
|
pIedDisp->DisplayBlankImage (NewDlg.GetWidth (), NewDlg.GetHeight (), ResX, ResY, PgType);
|
|
pIedDisp->SetPage (1);
|
|
#ifdef THUMBGEN
|
|
m_bMustDisplay = FALSE;
|
|
#endif
|
|
// set the zoom to the registry value
|
|
int nSel = theApp.GetProfileInt (szZoomStr, szOpenedToStr, DEFAULT_ZOOM_FACTOR_SEL);
|
|
|
|
ScaleFactors eSclFac;
|
|
float fZoom;
|
|
g_pAppOcxs->TranslateSelToZoom (eSclFac, fZoom, nSel);
|
|
|
|
// tell the Image Edit OCX to do the zoom
|
|
DoZoom (eSclFac, fZoom, TRUE, FALSE);
|
|
|
|
// store the filetype & compression parameters away - we will use them when
|
|
// we save this image to disk
|
|
m_CompStruct.sCompType = NewDlg.GetCompType ();
|
|
m_CompStruct.lCompInfo = NewDlg.GetCompOpts ();
|
|
m_CompStruct.sFileType = NewDlg.GetFileType ();
|
|
|
|
// Now that We're done with dialog, blow it away
|
|
// in case something bad happens below...
|
|
//delete pNewDlg;
|
|
//pNewDlg = NULL;
|
|
|
|
// this is only IF NOT on OLE situation
|
|
if (!oleCreatenew)
|
|
m_embedType = EMBEDTYPE_NONE;
|
|
|
|
CString szSaveAsName;
|
|
if (szNewFile == NULL)
|
|
{
|
|
if (!m_szInternalObjDisplayed.IsEmpty())
|
|
CFile::Remove ((LPCTSTR)m_szInternalObjDisplayed);
|
|
MakeTempFile ("~IV", m_szInternalObjDisplayed, m_CompStruct.sFileType);
|
|
szSaveAsName = m_szInternalObjDisplayed;
|
|
}
|
|
else
|
|
szSaveAsName = szNewFile;
|
|
|
|
// default filetype & pagetype will pick from m_CompStruct for info...
|
|
InternalSaveAs (szSaveAsName, 999, 999);
|
|
|
|
m_bWasModified = ImageModifiedByUser;
|
|
m_CompStruct.sCompType = -1; // reset the comp type so that we don't look at it again
|
|
|
|
_DNrwyad* pAdmin = g_pAppOcxs->GetAdminDispatch ();
|
|
pAdmin->SetImage (szSaveAsName);
|
|
|
|
pIedDisp->SetImage (szSaveAsName);
|
|
pIedDisp->Display();
|
|
|
|
// OLETHUMB
|
|
//if (!oleCreatenew)
|
|
//{
|
|
pThumb = g_pAppOcxs->GetThumbDispatch ();
|
|
// clear the image name from the Thumbnail OCX
|
|
if( pThumb != NULL )
|
|
pThumb->SetImage (szSaveAsName);
|
|
//}
|
|
|
|
EndWaitCursor();
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
EndWaitCursor(); // all done - error encountered!
|
|
// failed ?
|
|
g_pErr->PutErr (ErrorInImageEdit);
|
|
g_pErr->HandleNewDocumentError ();
|
|
|
|
// this is only IF NOT on OLE situation
|
|
// If it is OLE, just return the error and we'll
|
|
// throw an abort over in DIsplayEMbeddedImage
|
|
// In this case, we're in a direct transaction
|
|
// with a cll to our OleObj interface. If we do the
|
|
// CLearDocument, then that code gets us all out of
|
|
// synch.....
|
|
if (!oleCreatenew)
|
|
ClearDocument ();
|
|
|
|
retval = 2; // error
|
|
goto CLEANANDLEAVE;
|
|
}
|
|
END_CATCH
|
|
|
|
// if the previously opened image was read only, we need to get back the edit menu.
|
|
theApp.SwitchAppToEditMode ();
|
|
m_eFileStatus = ReadandWrite;
|
|
|
|
EndWaitCursor(); // all done!
|
|
|
|
m_lCurrPageNumber = m_lPageCount = 1;
|
|
m_lPreviousPageNumber = 0;
|
|
|
|
pToolBar = GetAppToolBar();
|
|
pToolBar->SetPageNumberInPageBox (m_lCurrPageNumber);
|
|
|
|
// set the current view to a Null_View
|
|
m_eCurrentAppDocStatus = Dynamic_Document;
|
|
|
|
if (m_CompStruct.sFileType == TIFF || m_CompStruct.sFileType == AWD)
|
|
m_bCanBeMultiPage = TRUE;
|
|
else
|
|
m_bCanBeMultiPage = FALSE;
|
|
|
|
// Only fool with title and dirty state IF NOT on OLE situation
|
|
if (!oleCreatenew)
|
|
{
|
|
// todo : get current path & set the filename to untitled.<FileType>
|
|
// set the pathname in the document to that
|
|
szTmp.LoadString (IDR_MAINFRAME);
|
|
|
|
CString szTmp2, szTmp1;
|
|
AfxExtractSubString (szTmp2, szTmp, 1); // extract the name of a new document
|
|
AfxExtractSubString (szTmp1, szTmp, 0); // extract the name of the application
|
|
|
|
szTmp2 += (_T(" - "));
|
|
szTmp2 += szTmp1;
|
|
theApp.m_pMainWnd->SetWindowText (szTmp2);
|
|
|
|
// DYNAMIC DOCUMENT !!!!
|
|
// NO FILE NAME YET and DONT update document with pathname!!!
|
|
// m_szCurrObjDisplayed = m_szInitialPath + szTmp1;
|
|
// COleDocument::SetPathName(m_szCurrObjDisplayed, FALSE);
|
|
// Just clear the current pathname
|
|
m_strPathName.Empty();
|
|
|
|
// set the modified flag to FALSE for now
|
|
SetModifiedFlag (FALSE);
|
|
}
|
|
|
|
if (!m_bAnnotationPaletteShowing)
|
|
{
|
|
OnEditDrag ();
|
|
}
|
|
|
|
CLEANANDLEAVE: // come here for all returns to delete allocated memory
|
|
|
|
// just to be sure we're in scope
|
|
retval++;
|
|
retval--;
|
|
}
|
|
|
|
// Now that We're done with dialog, blow it away
|
|
// in case something bad happens below...
|
|
//if (NULL != pNewDlg)
|
|
// delete pNewDlg;
|
|
|
|
return(retval); // left at '0' if all was OK
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: SetAppDocStatus (AppDocStatus eDocStatus)
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEditDoc::SetAppDocStatus (AppDocStatus eDocStatus)
|
|
{
|
|
m_eCurrentAppDocStatus = eDocStatus;
|
|
return (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetAppDocStatus ()
|
|
//-----------------------------------------------------------------------------
|
|
AppDocStatus CIEditDoc::GetAppDocStatus ()
|
|
{
|
|
return (m_eCurrentAppDocStatus);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetCurrentView ()
|
|
//-----------------------------------------------------------------------------
|
|
TheViews CIEditDoc :: GetCurrentView ()
|
|
{
|
|
return (m_eCurrentView);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetPageCount ()
|
|
//-----------------------------------------------------------------------------
|
|
long CIEditDoc :: GetPageCount ()
|
|
{
|
|
return (m_lPageCount);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetCurrentPage ()
|
|
//-----------------------------------------------------------------------------
|
|
long CIEditDoc :: GetCurrentPage()
|
|
{
|
|
return (m_lCurrPageNumber);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetCurrentZoomFactor ()
|
|
//-----------------------------------------------------------------------------
|
|
float CIEditDoc :: GetCurrentZoomFactor()
|
|
{
|
|
return (m_fZoomFactor);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: ShowAnnotationPalette (BOOL bSel)
|
|
//
|
|
// Set forceopt to:
|
|
// NOTCHANGE_FORCEOFF - leave unchanged
|
|
// CLEAR_FORCEOFF - Clear it
|
|
// APPMINIMIZE_FORCEOFF - set forceopt
|
|
// OLEINPLACE_FORCEOFF - set forceopt
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEditDoc :: ShowAnnotationPalette (BOOL bStatus, FORCEDBYWHO forceopt)
|
|
{
|
|
m_bAnnotationPaletteShowing = bStatus;
|
|
|
|
// if told to do anything but leave alone, DO IT
|
|
if (NOTCHANGE_FORCEOFF != forceopt)
|
|
m_bAnnotationPaletteForceOff = forceopt;
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
#ifdef _DEBUG
|
|
//=============================================================================
|
|
// Function: AssertValid() const
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::AssertValid() const
|
|
{
|
|
COleServerDoc::AssertValid();
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: Dump(CDumpContext& dc) const
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::Dump(CDumpContext& dc) const
|
|
{
|
|
COleServerDoc::Dump(dc);
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
//=============================================================================
|
|
// Function: ShowAdminSaveAsDialog (short &FileType)
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEditDoc::ShowAdminSaveAsDialog (short &FileType)
|
|
{
|
|
CString szFilter, szDefExt;
|
|
BOOL bCanSaveAsBmp = FALSE, bCanSaveAsAwd = FALSE;
|
|
long lFIndex;
|
|
|
|
_DNrwyad* pAdmDisp = g_pAppOcxs->GetAdminDispatch();
|
|
|
|
CString szTmp;
|
|
|
|
szFilter.LoadString (IDS_TIFFFILES); // load the TIFF string
|
|
szFilter += _T("|");
|
|
|
|
_DImagedit* pIedDisp = g_pAppOcxs->GetIeditDispatch ();
|
|
short sFileType = pAdmDisp->GetFileType ();
|
|
short sPageType = pIedDisp->GetPageType();
|
|
|
|
#ifdef WITH_AWD
|
|
//GMP This is the same for all file types. We don't need the switch
|
|
szTmp.LoadString (IDS_AWDFILES); // load the AWD string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
bCanSaveAsAwd = TRUE;
|
|
#endif
|
|
if (m_lPageCount == 1)
|
|
{
|
|
// if the current file is a one page file then we can
|
|
// save it as a BMP file
|
|
szTmp.LoadString (IDS_BMPFILES); // load the BMP string
|
|
szTmp += _T("|"); szFilter += szTmp;
|
|
bCanSaveAsBmp = TRUE;
|
|
}
|
|
|
|
pAdmDisp->SetFilter (szFilter); // set the filter in the Admin ocx
|
|
|
|
// set the filter index
|
|
#ifdef WITH_AWD
|
|
if (bCanSaveAsBmp && bCanSaveAsAwd)
|
|
{
|
|
if (sFileType == TIFF) lFIndex = 1;
|
|
else if (sFileType == AWD) lFIndex = 2;
|
|
else if (sFileType == BMP) lFIndex = 3;
|
|
else lFIndex = 1;
|
|
}
|
|
else
|
|
#endif
|
|
if (bCanSaveAsBmp)
|
|
{
|
|
if (sFileType == TIFF) lFIndex = 1;
|
|
else if (sFileType == BMP) lFIndex = 2;
|
|
else lFIndex = 1;
|
|
}
|
|
#ifdef WITH_AWD
|
|
else if (bCanSaveAsAwd)
|
|
{
|
|
if (sFileType == TIFF) lFIndex = 1;
|
|
else if (sFileType == AWD) lFIndex = 2;
|
|
else lFIndex = 1;
|
|
}
|
|
#endif
|
|
else
|
|
{
|
|
lFIndex = 1;
|
|
}
|
|
pAdmDisp->SetFilterIndex (lFIndex);
|
|
|
|
szDefExt = _T("tif");
|
|
|
|
|
|
pAdmDisp->SetDefaultExt (szDefExt); // set the default extension to tif
|
|
|
|
pAdmDisp->SetFlags (OFN_HIDEREADONLY|OFN_PATHMUSTEXIST);
|
|
pAdmDisp->SetInitDir (m_szInitialPath);
|
|
szFilter = (LPCTSTR) NULL;
|
|
|
|
szFilter.LoadString (IDS_FILESAVEAS_DLGTITLE);
|
|
pAdmDisp->SetDialogTitle (szFilter); // set the dlg title to Save As
|
|
|
|
CString szTmp1, szorigfile;
|
|
szTmp1.Empty();
|
|
// set to NULL so that no file shows up in the file name field
|
|
szorigfile = pAdmDisp->GetImage();
|
|
pAdmDisp->SetImage (szTmp1);
|
|
|
|
// todo : set Help Properties
|
|
TRY
|
|
{
|
|
VARIANT vhWnd;
|
|
vhWnd.vt = VT_I4; vhWnd.lVal = (long)((theApp.m_pMainWnd)->GetSafeHwnd());
|
|
pAdmDisp->ShowFileDialog (CTL_ADMIN_DIALOG_SAVEAS, vhWnd); // exec method to display the SaveAs dlg box
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
// handle the exception
|
|
MYTRC0 ("AdminOCX - ShowFileDialog Exception\n\r");
|
|
// todo : what oh what could have happened ?
|
|
pAdmDisp->SetImage (szorigfile);
|
|
return (FALSE);
|
|
}
|
|
END_CATCH
|
|
|
|
if (pAdmDisp->GetStatusCode () == WICTL_E_CANCELPRESSED)
|
|
{
|
|
pAdmDisp->SetImage (szorigfile);
|
|
return (FALSE);
|
|
}
|
|
|
|
lFIndex = pAdmDisp->GetFilterIndex ();
|
|
#ifdef WITH_AWD
|
|
if (bCanSaveAsBmp && bCanSaveAsAwd)
|
|
{
|
|
if (lFIndex == 1) FileType = TIFF;
|
|
else if (lFIndex == 2) FileType = AWD;
|
|
else FileType = BMP;
|
|
}
|
|
else
|
|
#endif
|
|
if (bCanSaveAsBmp)
|
|
{
|
|
if (lFIndex == 1) FileType = TIFF;
|
|
else FileType = BMP;
|
|
}
|
|
#ifdef WITH_AWD
|
|
else if (bCanSaveAsAwd)
|
|
{
|
|
if (lFIndex == 1) FileType = TIFF;
|
|
else FileType = AWD;
|
|
}
|
|
#endif
|
|
else
|
|
{
|
|
FileType = TIFF;
|
|
}
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnThumbctxtShowpage()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnThumbctxtShowpage()
|
|
{
|
|
SetOnePageView ();
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateThumbctxtShowpage(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateThumbctxtShowpage(CCmdUI* pCmdUI)
|
|
{
|
|
// one page view is always enabled
|
|
pCmdUI->Enable (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnThumbctxtRefresh()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnThumbctxtRefresh()
|
|
{
|
|
TRY
|
|
{
|
|
_DThumb* pThumb = g_pAppOcxs->GetThumbDispatch();
|
|
VARIANT vPgNum;
|
|
vPgNum.vt = VT_I4; vPgNum.lVal = 0;
|
|
pThumb->ClearThumbs (vPgNum);
|
|
vPgNum.lVal = m_lCurrPageNumber;
|
|
|
|
// tell the Thumbnail control to regen the thumbnail for this page
|
|
pThumb->GenerateThumb (CTL_THUMB_GENERATEIFNEEDED, vPgNum);
|
|
|
|
// put the currently selected thumb in the middle
|
|
VARIANT vOption;
|
|
vOption.vt = VT_I2;
|
|
vOption.iVal = CTL_THUMB_MIDDLE;
|
|
pThumb->DisplayThumbs (vPgNum, vOption);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
EndWaitCursor ();
|
|
// an error occurred
|
|
g_pErr->PutErr (ErrorInThumbnail);
|
|
ClearDocument ();
|
|
}
|
|
END_CATCH
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdateThumbctxtRefresh(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdateThumbctxtRefresh(CCmdUI* pCmdUI)
|
|
{
|
|
// one page view is always enabled
|
|
pCmdUI->Enable (TRUE);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: PromptForBurnIn ()
|
|
//-----------------------------------------------------------------------------
|
|
int CIEditDoc::PromptForBurnIn (short sFileType)
|
|
{
|
|
VARIANT evt;
|
|
_DImagedit* pIedDisp = g_pAppOcxs->GetIeditDispatch();
|
|
|
|
evt.vt = VT_ERROR;
|
|
|
|
|
|
// For all filetypes......
|
|
// if in the floating paste state, its time to finish this now...
|
|
FinishPasteNow();
|
|
|
|
// this is a normal save operation : compression stuff may have changed but
|
|
// the file type cannot be changed ...
|
|
if (sFileType != TIFF)
|
|
{
|
|
// this file is not a TIFF file format so annotations MUST be burnt in!
|
|
if (pIedDisp->GetAnnotationMarkCount (evt, evt) != 0)
|
|
{
|
|
m_bNewAnnotationsAdded = TRUE;
|
|
//removed dlg if bmp. now burns in all the time. if at some future
|
|
//time we need to prompt again, chkout version 1.101
|
|
pIedDisp->BurnInAnnotations (ALL_ANNOTATIONS, DONT_CHANGE_ANNOTATION_COLOR, evt);
|
|
|
|
}
|
|
}
|
|
return IDYES;
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: IsAnnotationPaletteShowing ()
|
|
//-----------------------------------------------------------------------------
|
|
BOOL CIEditDoc::IsAnnotationPaletteShowing ()
|
|
{
|
|
return (m_bAnnotationPaletteShowing);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnUpdatePageRotateall(CCmdUI* pCmdUI)
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnUpdatePageRotateall(CCmdUI* pCmdUI)
|
|
{
|
|
if (m_eCurrentAppDocStatus == No_Document || m_eFileStatus == ReadOnly ||
|
|
m_eCurrentView == Thumbnails_only)
|
|
pCmdUI->Enable (FALSE);
|
|
else
|
|
{
|
|
_DNrwyad* pAdmin = g_pAppOcxs->GetAdminDispatch(FALSE);
|
|
|
|
#ifdef WITH_AWD
|
|
// only enable this menu pick if the file type is AWD currently
|
|
if (pAdmin != NULL && pAdmin->GetFileType() == AWD)
|
|
pCmdUI->Enable (TRUE);
|
|
else
|
|
#endif
|
|
pCmdUI->Enable (FALSE);
|
|
}
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: OnPageRotateall()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::OnPageRotateall()
|
|
{
|
|
_DImagedit* pIedit = g_pAppOcxs->GetIeditDispatch(FALSE);
|
|
// ask the user to save the mods first
|
|
if (!InternalSaveModified (1))
|
|
return;
|
|
|
|
BeginWaitCursor ();
|
|
TRY
|
|
{
|
|
VARIANT evt; evt.vt = VT_ERROR;
|
|
// rotate all pages by 90 degrees (right)
|
|
pIedit->RotateAll (evt);
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
EndWaitCursor ();
|
|
// an error occurred
|
|
g_pErr->PutErr (ErrorInImageEdit);
|
|
ClearDocument ();
|
|
}
|
|
END_CATCH
|
|
|
|
// ONLY FOOL WITH THUMB control if NOT EMBEDDING......
|
|
// OLETHUMB
|
|
//if (!IsitEmbed())
|
|
//{
|
|
TRY
|
|
{
|
|
_DThumb* pThumb = g_pAppOcxs->GetThumbDispatch();
|
|
if( pThumb != NULL )
|
|
{
|
|
VARIANT vPgNum;
|
|
vPgNum.vt = VT_I4; vPgNum.lVal = 0;
|
|
pThumb->ClearThumbs (vPgNum);
|
|
vPgNum.lVal = m_lCurrPageNumber;
|
|
// tell the Thumbnail control to regen the thumbnail for this page
|
|
pThumb->GenerateThumb (CTL_THUMB_GENERATEIFNEEDED, vPgNum);
|
|
|
|
// deselect the selected thumb
|
|
pThumb->DeselectAllThumbs ();
|
|
// select the new one
|
|
pThumb->SetThumbSelected (m_lCurrPageNumber, TRUE);
|
|
|
|
if (m_eCurrentView == Thumbnails_only || m_eCurrentView == Thumbnail_and_Page)
|
|
{
|
|
// put the currently selected thumb in the middle
|
|
VARIANT vOption;
|
|
vOption.vt = VT_I2;
|
|
vOption.iVal = CTL_THUMB_MIDDLE;
|
|
pThumb->DisplayThumbs (vPgNum, vOption);
|
|
}
|
|
}
|
|
}
|
|
CATCH (COleDispatchException, e)
|
|
{
|
|
EndWaitCursor ();
|
|
// an error occurred
|
|
g_pErr->PutErr (ErrorInThumbnail);
|
|
ClearDocument ();
|
|
}
|
|
END_CATCH
|
|
//}
|
|
|
|
m_bWasModified = ImageModifiedByUser;
|
|
|
|
// update OLE dirty flag & presentation
|
|
OleDirtyset(OLEDIRTY_ROTATE); // call our function to set it dirty..
|
|
|
|
EndWaitCursor ();
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: GetCurrAnnTool ()
|
|
//-----------------------------------------------------------------------------
|
|
AnnotationTool CIEditDoc::GetCurrAnnTool ()
|
|
{
|
|
return (m_nCurrAnnTool);
|
|
}
|
|
|
|
//=============================================================================
|
|
// Function: SetInitialPath ()
|
|
//-----------------------------------------------------------------------------
|
|
void CIEditDoc::SetInitialPath (CString& szPath)
|
|
{
|
|
m_szInitialPath = szPath;
|
|
}
|
|
|
|
|