00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 #ifndef INC_STYLES
00102 #define INC_STYLES
00103
00104 class BaseCamelotFilter;
00105 class CXaraFileRecord;
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 class Style : public CC_CLASS_MEMDUMP
00121 {
00122 CC_DECLARE_MEMDUMP(Style)
00123
00124 public:
00125 virtual ~Style() = 0;
00126 virtual Style* CreateCopy(const StringBase& NewName) const = 0;
00127 virtual BOOL operator==(const Style& OtherStyle) const;
00128
00129 const StringBase& GetName() const;
00130
00131
00132 protected:
00133 Style(const StringBase& Name);
00134
00135 BOOL SetName(const StringBase& Name);
00136
00137 private:
00138 String_64 m_Name;
00139 };
00140
00141
00142 class StyleContainer;
00143 class StyleContainerItem;
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156 class StyleIterator
00157 {
00158 public:
00159 StyleIterator& operator ++();
00160 Style& operator*();
00161 BOOL operator!=(const StyleIterator& Other);
00162
00163 StyleIterator(StyleContainer& Container, StyleContainerItem* const pPosition);
00164
00165 private:
00166 StyleContainerItem* m_CurrentItem;
00167 StyleContainer& m_Container;
00168 };
00169
00170 class StylesExporter;
00171 typedef INT32 XFileRef;
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186 class Styles : public DocComponent
00187 {
00188 CC_DECLARE_DYNAMIC(Styles)
00189 public:
00190 virtual BOOL Init();
00191
00192 virtual Style* AddStyle(const Style& NewStyle);
00193 virtual BOOL MergeStyles(Styles& OtherStyles);
00194
00195
00196 virtual StyleIterator Begin() const;
00197 virtual const StyleIterator& End() const;
00198 virtual Style* FindStyleFromName(const StringBase& StyleName) const;
00199
00200
00201
00202
00203 virtual BOOL StartComponentCopy();
00204 virtual BOOL EndComponentCopy();
00205 virtual void AbortComponentCopy();
00206
00207 virtual Style* CopyComponentData(const Style& NewStyle);
00208
00209 virtual ~Styles();
00210 protected:
00211 Styles();
00212 Styles(const Styles& OtherStyles);
00213 Styles& operator=(const Styles&);
00214
00215 BOOL GenerateUniqueName(const StringBase& Prefix, StringBase* pResult);
00216 BOOL NameExists(const StringBase& Name) const;
00217 void SendStylesChangeMessage();
00218
00219
00220 StyleContainer& GetContainer() const;
00221 Styles& GetStylesToAdd() const;
00222 protected:
00223 StylesExporter* m_pCurrentExporter;
00224 private:
00225 StyleContainer* m_pStyleContainer;
00226
00227
00228 Styles* m_pStylesToAdd;
00229 };
00230
00231
00232
00233 class WizOp;
00234 class WizOpStyleRecordHandler;
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247 class WizOpStyleComponentClass : public DocComponentClass
00248 {
00249 CC_DECLARE_DYNAMIC(WizOpStyleComponentClass)
00250
00251 public:
00252 static BOOL Init();
00253
00254 virtual BOOL AddComponent(BaseDocument*);
00255 };
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268 class WizOpStyle : public Style
00269 {
00270 CC_DECLARE_MEMDUMP(WizOpStyle)
00271 public:
00272 WizOpStyle( const StringBase& Name, const StringBase& Question,
00273 const WizOp& WizOpRef, const StringBase& Param);
00274
00275 virtual Style* CreateCopy(const StringBase& NewName) const;
00276 virtual BOOL operator==(const Style& OtherStyle) const;
00277
00278 const StringBase& GetQuestion() const;
00279 BOOL SetQuestion(const StringBase& NewQuestion);
00280
00281 const WizOp& GetWizOp() const;
00282 const StringBase& GetParam() const;
00283
00284 protected:
00285 BOOL SetParam(const StringBase& NewParam);
00286
00287 private:
00288 String_256 m_Question;
00289 const WizOp& m_WizOp;
00290 String_256 m_Param;
00291 };
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307 class WizOpStyles : public Styles
00308 {
00309 CC_DECLARE_DYNAMIC(WizOpStyles)
00310
00311 public:
00312 WizOpStyles() {}
00313
00314
00315
00316 virtual BOOL StartImport(BaseCamelotFilter *pFilter);
00317 virtual BOOL EndImport(BaseCamelotFilter *pFilter, BOOL Success);
00318
00319 WizOpStyle* FindStyleFromRecordReference(XFileRef RecordRef) const;
00320
00321 BOOL SetRecordHandler(WizOpStyleRecordHandler& RecordHandler);
00322 WizOpStyleRecordHandler& GetRecordHandler() const;
00323
00324
00325 virtual BOOL StartExport(BaseCamelotFilter *pFilter);
00326 virtual BOOL EndExport(BaseCamelotFilter *pFilter, BOOL Success);
00327
00328 virtual XFileRef GetRecordRefForStyle(const WizOpStyle& Style);
00329
00330 private:
00331 WizOpStyleRecordHandler* m_pImporter;
00332 };
00333
00334
00335 extern const INT32 XFILEREF_ERROR;
00336
00337 class RecordReferenceItem;
00338 class List;
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352 class RecordReferencingExporter : public CC_CLASS_MEMDUMP
00353 {
00354 CC_DECLARE_MEMDUMP(RecordReferencingExporter)
00355
00356 protected:
00357 RecordReferencingExporter(BaseCamelotFilter& FilterToUse) : m_Filter(FilterToUse) {}
00358 RecordReferencingExporter(const RecordReferencingExporter& Other);
00359 const RecordReferencingExporter& operator=(const RecordReferencingExporter& Other);
00360
00361 virtual ~RecordReferencingExporter();
00362
00363
00364 virtual XFileRef WriteItem(const RecordReferenceItem& TentativeExportItem);
00365
00366 virtual XFileRef WriteRecord(const RecordReferenceItem& ItemToExport) = 0;
00367
00368
00369 virtual BOOL AddExportedItem(RecordReferenceItem& NewItem);
00370 virtual const RecordReferenceItem* FindExportedItem(const RecordReferenceItem& ItemToFind);
00371
00372
00373
00374 BaseCamelotFilter& GetFilter() { return m_Filter; }
00375
00376 private:
00377 BaseCamelotFilter& m_Filter;
00378 List m_ExportedItems;
00379 };
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394 class StylesExporter : public RecordReferencingExporter
00395 {
00396 CC_DECLARE_MEMDUMP(StylesExporter)
00397
00398 public:
00399 StylesExporter(Styles& StylesToExport, BaseCamelotFilter& FilterToUse);
00400
00401
00402 virtual XFileRef WriteStyle(const WizOpStyle& StyleToWrite);
00403
00404 protected:
00405
00406 virtual XFileRef WriteRecord(const RecordReferenceItem& ItemToExport);
00407
00408 private:
00409 Styles& m_Styles;
00410 };
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422 class WizOpStyleRecordHandler : public CamelotRecordHandler
00423 {
00424
00425 CC_DECLARE_DYNAMIC(WizOpStyleRecordHandler);
00426
00427 public:
00428 WizOpStyleRecordHandler();
00429 virtual ~WizOpStyleRecordHandler();
00430
00431
00432 virtual UINT32* GetTagList();
00433 virtual BOOL Init(BaseCamelotFilter* pFilter);
00434 virtual BOOL HandleRecord(CXaraFileRecord* pCXaraFileRecord);
00435 virtual BOOL EndImport();
00436
00437 WizOpStyle* FindStyleFromRecordReference(XFileRef RecordRef) const;
00438
00439 #ifdef XAR_TREE_DIALOG
00440 virtual void GetRecordDescriptionText(CXaraFileRecord* pCXaraFileRecord,StringBase* Str);
00441 virtual void GetTagText(UINT32 Tag,String_256& Str);
00442 #endif
00443
00444 protected:
00445 WizOpStyleRecordHandler(const WizOpStyleRecordHandler& Other);
00446 WizOpStyleRecordHandler& operator=(const WizOpStyleRecordHandler& Other);
00447
00448
00449 WizOpStyle* AddStyle( const StringBase& Name, const StringBase& Question,
00450 const StringBase& WizOpName, const StringBase& Param);
00451
00452 BOOL AddRecordReference(XFileRef RecordRef, const WizOpStyle& ImportedStyle);
00453
00454 WizOpStyles& GetTentativeStyles();
00455
00456
00457 private:
00458
00459 WizOpStyles* m_pTentativeStyles;
00460 List m_ImportedItems;
00461 };
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476 class StylesMessage : public Msg
00477 {
00478 CC_DECLARE_DYNAMIC(StylesMessage);
00479
00480 public:
00481 StylesMessage(Styles& StylesChanging) :
00482 m_StylesChanging(StylesChanging) {}
00483
00484 Styles& GetStylesChanging() { return m_StylesChanging; }
00485
00486 private:
00487 Styles& m_StylesChanging;
00488 };
00489
00490 #endif // INC_STYLES