Stroika Library 3.0d18
 
Loading...
Searching...
No Matches
LedItDocument.h
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4
5#ifndef __LedItDocument_h__
6#define __LedItDocument_h__ 1
7
8#include "Stroika/Foundation/StroikaPreComp.h"
9
10#if qStroika_Foundation_Common_Platform_MacOS
11#include <LSingleDoc.h>
12#elif defined(WIN32)
13#pragma warning(push)
14#pragma warning(disable : 5054)
15#include <afxole.h>
16#pragma warning(pop)
17
18#include <afxwin.h>
19#endif
20
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"
28
29#include "LedItConfig.h"
30
31class LedItView;
32
33#if qStroika_Foundation_Common_Platform_Windows
34class LedItServerItem;
35#endif
36
37class LedItDocument :
38#if qStroika_Foundation_Common_Platform_MacOS
39 public LSingleDoc,
40#elif qStroika_Foundation_Common_Platform_Windows
41 public COleServerDoc,
42#endif
43 public MarkerOwner {
44#if qStroika_Foundation_Common_Platform_MacOS
45public:
46 LedItDocument (LCommander* inSuper, FileFormat format);
47#elif qStroika_Foundation_Common_Platform_Windows
48protected: // create from serialization only
49 LedItDocument ();
50 DECLARE_DYNCREATE (LedItDocument)
51#elif qStroika_FeatureSupported_XWindows
52public:
53 LedItDocument ();
54#endif
55
56public:
57 virtual ~LedItDocument ();
58
59public:
60 virtual void DidUpdateText (const UpdateInfo& /*updateInfo*/) noexcept override;
61 virtual TextStore* PeekAtTextStore () const override;
62
63#if qStroika_Foundation_Common_Platform_MacOS
64 // Call exactly once (inFileSpec==NULL for new window)
65public:
66 nonvirtual void BuildDocWindow (const FSSpec* inFileSpec);
67
68public:
69 static const vector<LWindow*>& GetDocumentWindows ();
70
71public:
72 virtual Boolean ObeyCommand (CommandT inCommand, void* ioParam) override;
73 virtual void FindCommandStatus (CommandT inCommand, Boolean& outEnabled, Boolean& outUsesMark, UInt16& outMark, Str255 outName) override;
74
75 nonvirtual void OnSaveACopyAsCommand ();
76
77public:
78 virtual Boolean IsModified () override;
79
80 virtual Boolean AskSaveAs (FSSpec& outFSSpec, Boolean inRecordIt) override;
81
82 virtual void DoAESave (FSSpec& inFileSpec, OSType inFileType) override;
83 virtual void DoSave () override;
84 virtual void DoRevert () override;
85 virtual void DoPrint () override;
86
87public:
88 nonvirtual void PurgeUnneededMemory ();
89
90private:
91 nonvirtual void DoReadCode ();
92#elif qStroika_Foundation_Common_Platform_Windows
93public:
94 nonvirtual LedItServerItem* GetEmbeddedItem ();
95
96public:
97 virtual BOOL OnNewDocument () override;
98 virtual void Serialize (CArchive& ar) override;
99
100public:
101 static FileFormat sHiddenDocOpenArg;
102 virtual BOOL OnOpenDocument (LPCTSTR lpszPathName) override;
103
104protected:
105 virtual COleServerItem* OnGetEmbeddedItem () override;
106
107public:
108 virtual BOOL DoSave (LPCTSTR lpszPathName, BOOL bReplace) override;
109
110public:
111 afx_msg void OnUpdateFileSave (CCmdUI* pCmdUI);
112 afx_msg void OnFileSaveCopyAs ();
113 virtual void DeleteContents () override;
114#endif
115
116public:
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 ();
122
123protected:
124public:
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;
131
132#if qStroika_FeatureSupported_XWindows
133public:
134 nonvirtual void LoadFromFile (const string& fileName, FileFormat fileFormat);
135 nonvirtual void Save ();
136#endif
137
138#if qStroika_Foundation_Common_Platform_Windows
139 // utilities to pick save/open file names
140public:
141 static bool DoPromptSaveAsFileName (CString& fileName, FileFormat* fileFormat);
142 static bool DoPromptSaveCopyAsFileName (CString& fileName, FileFormat* fileFormat);
143 static bool DoPromptOpenFileName (CString& fileName, FileFormat* fileFormat);
144
145private:
146 static bool DoPromptFileName (CString& fileName, UINT nIDSTitle, bool isOpenDialogCall, long fileDLogFlags, FileFormat* fileFormat);
147#endif
148
149#if qStroika_FeatureSupported_XWindows
150private:
151public: //tmphack to allow easier change of old code...
152 string fPathName;
153#endif
154private:
155public:
156 FileFormat fFileFormat;
157 StyledTextIO::HTMLInfo fHTMLInfo;
158
159#if qStroika_Foundation_Common_Platform_MacOS
160protected:
161 nonvirtual void DoSaveHelper ();
162
163public:
164 nonvirtual LedItView* GetTextView () const
165 {
166 return fTextView;
167 }
168
169private:
170 LedItView* fTextView;
171
172 nonvirtual void NameNewDoc ();
173 nonvirtual void OpenFile (const FSSpec& inFileSpec);
174#endif
175#if qStroika_Foundation_Common_Platform_Windows
176#if qStroika_Foundation_Debug_AssertionsChecked
177public:
178 virtual void AssertValid () const override;
179#endif
180
181 // Generated message map functions
182protected:
183 DECLARE_MESSAGE_MAP ()
184
185 DECLARE_DISPATCH_MAP ()
186 DECLARE_INTERFACE_MAP ()
187#endif
188};
189
190SDKString ExtractFileSuffix (const SDKString& from);
191
192/*
193 ********************************************************************************
194 ***************************** Implementation Details ***************************
195 ********************************************************************************
196 */
197#if qStroika_Foundation_Common_Platform_Windows
198inline LedItServerItem* LedItDocument::GetEmbeddedItem ()
199{
200 return (LedItServerItem*)COleServerDoc::GetEmbeddedItem ();
201}
202#endif
203inline TextStore& LedItDocument::GetTextStore ()
204{
205 return fTextStore;
206}
207inline shared_ptr<AbstractStyleDatabaseRep>& LedItDocument::GetStyleDatabase ()
208{
209 return fStyleDatabase;
210}
211inline shared_ptr<AbstractParagraphDatabaseRep>& LedItDocument::GetParagraphDatabase ()
212{
213 return fParagraphDatabase;
214}
215inline shared_ptr<HidableTextMarkerOwner>& LedItDocument::GetHidableTextDatabase ()
216{
217 return fHidableTextDatabase;
218}
219inline CommandHandler& LedItDocument::GetCommandHandler ()
220{
221 return fCommandHandler;
222}
223
224#endif /*__LedItDocument_h__*/
basic_string< SDKChar > SDKString
Definition SDKString.h:38