5#ifndef __LedItDocument_h__
6#define __LedItDocument_h__ 1
8#include "Stroika/Foundation/StroikaPreComp.h"
10#if qStroika_Foundation_Common_Platform_MacOS
11#include <LSingleDoc.h>
14#pragma warning(disable : 5054)
21#include "Stroika/Frameworks/Led/ChunkedArrayTextStore.h"
22#include "Stroika/Frameworks/Led/Command.h"
23#include "Stroika/Frameworks/Led/StyledTextIO/StyledTextIO.h"
24#include "Stroika/Frameworks/Led/StyledTextIO/StyledTextIO_HTML.h"
25#include "Stroika/Frameworks/Led/StyledTextIO/StyledTextIO_RTF.h"
26#include "Stroika/Frameworks/Led/StyledTextImager.h"
27#include "Stroika/Frameworks/Led/WordProcessor.h"
29#include "LedItConfig.h"
33#if qStroika_Foundation_Common_Platform_Windows
38#if qStroika_Foundation_Common_Platform_MacOS
40#elif qStroika_Foundation_Common_Platform_Windows
44#if qStroika_Foundation_Common_Platform_MacOS
46 LedItDocument (LCommander* inSuper, FileFormat format);
47#elif qStroika_Foundation_Common_Platform_Windows
50 DECLARE_DYNCREATE (LedItDocument)
51#elif qStroika_FeatureSupported_XWindows
57 virtual ~LedItDocument ();
60 virtual void DidUpdateText (
const UpdateInfo& )
noexcept override;
61 virtual TextStore* PeekAtTextStore ()
const override;
63#if qStroika_Foundation_Common_Platform_MacOS
66 nonvirtual
void BuildDocWindow (
const FSSpec* inFileSpec);
69 static const vector<LWindow*>& GetDocumentWindows ();
72 virtual Boolean ObeyCommand (CommandT inCommand,
void* ioParam)
override;
73 virtual void FindCommandStatus (CommandT inCommand, Boolean& outEnabled, Boolean& outUsesMark, UInt16& outMark, Str255 outName)
override;
75 nonvirtual
void OnSaveACopyAsCommand ();
78 virtual Boolean IsModified ()
override;
80 virtual Boolean AskSaveAs (FSSpec& outFSSpec, Boolean inRecordIt)
override;
82 virtual void DoAESave (FSSpec& inFileSpec, OSType inFileType)
override;
83 virtual void DoSave ()
override;
84 virtual void DoRevert ()
override;
85 virtual void DoPrint ()
override;
88 nonvirtual
void PurgeUnneededMemory ();
91 nonvirtual
void DoReadCode ();
92#elif qStroika_Foundation_Common_Platform_Windows
94 nonvirtual LedItServerItem* GetEmbeddedItem ();
97 virtual BOOL OnNewDocument ()
override;
98 virtual void Serialize (CArchive& ar)
override;
101 static FileFormat sHiddenDocOpenArg;
102 virtual BOOL OnOpenDocument (LPCTSTR lpszPathName)
override;
105 virtual COleServerItem* OnGetEmbeddedItem ()
override;
108 virtual BOOL DoSave (LPCTSTR lpszPathName, BOOL bReplace)
override;
111 afx_msg
void OnUpdateFileSave (CCmdUI* pCmdUI);
112 afx_msg
void OnFileSaveCopyAs ();
113 virtual void DeleteContents ()
override;
117 nonvirtual TextStore& GetTextStore ();
118 nonvirtual shared_ptr<AbstractStyleDatabaseRep>& GetStyleDatabase ();
119 nonvirtual shared_ptr<AbstractParagraphDatabaseRep>& GetParagraphDatabase ();
120 nonvirtual shared_ptr<HidableTextMarkerOwner>& GetHidableTextDatabase ();
121 nonvirtual CommandHandler& GetCommandHandler ();
125 ChunkedArrayTextStore fTextStore;
126 StyledTextIO::RTFInfo fRTFInfo;
127 shared_ptr<AbstractStyleDatabaseRep> fStyleDatabase;
128 shared_ptr<AbstractParagraphDatabaseRep> fParagraphDatabase;
129 shared_ptr<HidableTextMarkerOwner> fHidableTextDatabase;
130 MultiLevelUndoCommandHandler fCommandHandler;
132#if qStroika_FeatureSupported_XWindows
134 nonvirtual
void LoadFromFile (
const string& fileName, FileFormat fileFormat);
135 nonvirtual
void Save ();
138#if qStroika_Foundation_Common_Platform_Windows
141 static bool DoPromptSaveAsFileName (CString& fileName, FileFormat* fileFormat);
142 static bool DoPromptSaveCopyAsFileName (CString& fileName, FileFormat* fileFormat);
143 static bool DoPromptOpenFileName (CString& fileName, FileFormat* fileFormat);
146 static bool DoPromptFileName (CString& fileName, UINT nIDSTitle,
bool isOpenDialogCall,
long fileDLogFlags, FileFormat* fileFormat);
149#if qStroika_FeatureSupported_XWindows
156 FileFormat fFileFormat;
157 StyledTextIO::HTMLInfo fHTMLInfo;
159#if qStroika_Foundation_Common_Platform_MacOS
161 nonvirtual
void DoSaveHelper ();
164 nonvirtual LedItView* GetTextView ()
const
170 LedItView* fTextView;
172 nonvirtual
void NameNewDoc ();
173 nonvirtual
void OpenFile (
const FSSpec& inFileSpec);
175#if qStroika_Foundation_Common_Platform_Windows
176#if qStroika_Foundation_Debug_AssertionsChecked
178 virtual void AssertValid ()
const override;
183 DECLARE_MESSAGE_MAP ()
185 DECLARE_DISPATCH_MAP ()
186 DECLARE_INTERFACE_MAP ()
190SDKString ExtractFileSuffix (
const SDKString& from);
197#if qStroika_Foundation_Common_Platform_Windows
198inline LedItServerItem* LedItDocument::GetEmbeddedItem ()
200 return (LedItServerItem*)COleServerDoc::GetEmbeddedItem ();
203inline TextStore& LedItDocument::GetTextStore ()
207inline shared_ptr<AbstractStyleDatabaseRep>& LedItDocument::GetStyleDatabase ()
209 return fStyleDatabase;
211inline shared_ptr<AbstractParagraphDatabaseRep>& LedItDocument::GetParagraphDatabase ()
213 return fParagraphDatabase;
215inline shared_ptr<HidableTextMarkerOwner>& LedItDocument::GetHidableTextDatabase ()
217 return fHidableTextDatabase;
219inline CommandHandler& LedItDocument::GetCommandHandler ()
221 return fCommandHandler;
basic_string< SDKChar > SDKString