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