|
/************************************************************************
*
* Resource ID Organiser Core Library
*
* (c) Copyright 2000-2005 by Riverblade Limited (UK). All rights reserved.
*
************************************************************************
*
* Description : CResOrgSymbolsDoc - document class for a resource
* symbol file
*
* Compiler : Microsoft Visual C++ 6.0, Service Pack 3 or later
* Microsoft Visual C++ .NET 2003
*
* Target
* Environment : Windows 98/NT/2000/XP
*
* NOTE:
*
* This software is provided "as is". All title and copyrights in and
* to the software, including but not limited to any images, text etc.
* etc. incorporated into it, are the property of Anna-Jayne Metcalfe
* and Riverblade Limited, except where acknowledged otherwise.
*
* Your may freely use this code in your own products, PROVIDED
* this notice is not removed or modified.
*
* Please visit http://www.riverblade.co.uk/products/resorg
* or email support@riverblade.co.uk for latest updates and product support
*
************************************************************************
*
* MODIFICATION HISTORY:
*
* This is a controlled document. See project configuration
* control tool for latest version and full version history.
*
* $Archive: /Projects/AddIns/ResOrg/ResOrgCore/ResOrgSymbolsDoc.h $
* $Revision: 22 $
* $Date: 31/12/04 16:26 $
* $Author: Anna $
*
* $History: ResOrgSymbolsDoc.h $
*
* ***************** Version 22 *****************
* User: Anna Date: 31/12/04 Time: 16:26
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* 1. Added IDP_WARN_CONFIG_LOAD_FAILED and IDP_WARN_CONFIG_SAVE_FAILED
* string table prompts for use when loading/saving config files (debug
* builds only)
* 2. Updated file banners
*
* ***************** Version 21 *****************
* User: Anna Date: 23/08/04 Time: 21:40
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Added support for out of range symbols
*
* ***************** Version 20 *****************
* User: Anna Date: 11/07/04 Time: 16:21
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Added support for detection of out of range symbols
*
* ***************** Version 19 *****************
* User: Anna Date: 15/04/03 Time: 19:17
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Removed unnecessary header file guards
*
* ***************** Version 18 *****************
* User: Anna Date: 1/03/03 Time: 18:10
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* The user can now provide their own XSL stylesheet to generate an HTML
* report
*
* ***************** Version 17 *****************
* User: Anna Date: 19/02/03 Time: 19:20
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Started adding XML export and HTML reports
*
* ***************** Version 16 *****************
* User: Anna Date: 15/02/03 Time: 20:48
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Changed big BOOLs into little bools
*
* ***************** Version 15 *****************
* User: Anna Date: 28/01/03 Time: 21:19
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Improved multi-file support by allowing files to be Added/Removed from
* a multi-file display via the File Properties Dialog
*
* ***************** Version 14 *****************
* User: Anna Date: 19/01/03 Time: 17:17
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Made CResOrgSymbolsDoc::Add(), Set(), Remove() and
* CheckNextSymbolValues() virtual
*
* ***************** Version 13 *****************
* User: Anna Date: 2/01/03 Time: 0:05
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* The CResourceSymbolManager object used by the document is now held by
* pointer, to allow it's type to be customised in derived classes
*
* ***************** Version 12 *****************
* User: Anna Date: 25/11/02 Time: 15:14
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Changed website address in banner
*
* ***************** Version 11 *****************
* User: Anna Date: 22/10/02 Time: 13:24
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Changed name/mail address (at last!)
*
* ***************** Version 10 *****************
* User: Andy Date: 7/06/02 Time: 17:04
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Renamed the ResOrgUtils module to ResOrgCore. Updated file banners
* accordingly
*
* ***************** Version 9 *****************
* User: Andy Date: 27/05/02 Time: 16:39
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Knock on changes from CResourceSymbolBuffer (now
* CResourceSymbolManager)
*
* ***************** Version 8 *****************
* User: Andy Date: 10/21/01 Time: 11:03p
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* 1. CResOrgSymbolsDoc::Serialize() no longer calls
* CResOrgSymbolsDoc::CheckNextSymbolValues() - the prompt is now done
* elseware
* 2. CResOrgSymbolsDoc::CheckNextSymbolValues() now takes a parameter to
* determine whether a prompt dialog should be shown
*
* ***************** Version 7 *****************
* User: Andy Date: 10/03/01 Time: 12:26p
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* 1. Added CResOrgSymbolsDoc::CheckNextSymbolValues() to prompt if the
* "Next Symbol" values are in use
* 2. CResOrgSymbolsDoc::Serialize() now calls CheckNextSymbolValues()
* after loading to ensure that the "Next Symbol" values are OK.
*
* ***************** Version 6 *****************
* User: Andy Date: 22/06/01 Time: 9:49
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Made class declaration "Rose friendly"
*
* ***************** Version 5 *****************
* User: Andy Date: 2/04/01 Time: 17:04
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Added GetSymbolBuffer() access method; made attributes protected
*
* ***************** Version 4 *****************
* User: Andy Date: 17/02/01 Time: 6:57
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* 1. Knock-on changes from renaming of CResOrgSymbolsView to
* CResOrgSymbolsListView
* 2. Added wrappers around commonly used CResourceSymbolBuffer methods
* [e.g. Set()] to remove the need for views to raise view hints
*
* ***************** Version 3 *****************
* User: Andy Date: 29/11/00 Time: 18:38
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Added file banners
*
* $Nokeywords: $
*
************************************************************************/
#pragma once
#include "ResourceSymbolManager.h"
#define CResOrgSymbolsDoc_BASE CDocument
class RESORGCORE_EXT_CLASS CResOrgSymbolsDoc : public CDocument
{
DECLARE_DYNCREATE(CResOrgSymbolsDoc)
protected: // create from serialization only
CResOrgSymbolsDoc(void);
public:
virtual ~CResOrgSymbolsDoc(void);
// Attributes
protected:
CResourceSymbolManager* m_pSymbolManager;
CNGFileChangeMonitor m_FileChangeMonitor;
CString m_sTemporaryReportPathName;
// Operations
public:
CResourceSymbolManager* GetSymbolBuffer(void) const
{ return m_pSymbolManager; }
virtual CResourceSymbol* Add( const CString& sSymbolName,
UINT uSymbolValue,
int nLineNo);
virtual bool Set( CResourceSymbol* pSymbol,
const CString& sName,
UINT uValue,
bool bReadOnly = false);
virtual bool Remove( CResourceSymbol* pSymbol);
virtual bool CheckNextSymbolValues(bool bPrompt = true);
virtual void ShowSymbolFileProperties(CRuntimeClass* pActivePageClass = NULL);
bool CreateReport(const CString& sStyleSheetText,
const CString& sPathName,
CString* psMsg = NULL);
CString GenerateReportText( const CString& sStyleSheetText,
CString* psMsg = NULL) const;
CString GenerateReport( IXMLDOMDocument* pXmlDoc,
IXMLDOMDocument* pStyleSheetDoc,
CString* psMsg = NULL) const;
bool WriteXml(const CString& sPathName, CString* psMsg = NULL) const;
HRESULT SaveXml(IXMLDOMDocument* pDOMDoc, CString* psMsg = NULL) const;
CString LoadXsl(UINT uResourceID) const;
CString GetTemporaryReportName(void) const;
void DeleteTemporaryReport(void);
BOOL PathAddExtension(CString& rsPathName, const CString& sExtension) const;
void PathRemoveExtension(CString& rsPathName) const;
// Virtual Overrides
public:
virtual BOOL OnNewDocument(void);
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
virtual void OnCloseDocument(void);
virtual void Serialize(CArchive& ar);
virtual void DeleteContents(void);
// Implementation
protected:
virtual bool CreateSymbolManager(void);
public:
#ifdef _DEBUG
virtual void AssertValid(void) const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
bool StartFileChangeMonitor(const CString& sPathName);
bool StopFileChangeMonitor(void);
bool DoNextSymbolValuesInUsePrompt(void);
// Message handlers
protected:
afx_msg void OnCmdFileChanged(void);
afx_msg void OnFileSave(void);
afx_msg void OnFileSaveAs(void);
afx_msg void OnCmdFileExport(void);
afx_msg void OnCmdFileProperties(void);
afx_msg void OnCmdFilePropertiesStatistics(void);
afx_msg void OnCmdFilePropertiesNextSymbolValues(void);
afx_msg void OnCmdRenumberSymbols(void);
afx_msg void OnUpdateRenumberSymbols(CCmdUI* pCmdUI);
afx_msg void OnCmdReport(void);
DECLARE_MESSAGE_MAP()
};
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I haven't always written software for a living. When I graduated from Surrey University in 1989, it was with an Electronic Engineering degree, but unfortunately that never really gave me the opportunity to do anything particularly interesting (with the possible exception of designing
Darth Vader's Codpiece * for the UK Army in 1990).
* Also known as the Standard Army Bootswitch. But that's another story...
Since the opportunity arose to lead a software team developing C++ software for
Avionic Test Systems in 1996, I've not looked back. More recently I've been involved in the development of subsea acoustic navigation systems, digital TV broadcast systems, port security/tracking systems, and most recently software development tools with my own company,
Riverblade Ltd.
One of my personal specialities is IDE plug-in development.
ResOrg was my first attempt at a plug-in, but my day to day work is with
Visual Lint, an interactive code analysis tool environment with works within the Visual Studio and Eclipse IDEs or on build servers.
I love lots of things, but particularly music, photography and anything connected with history or engineering. I
despise ignorant, intolerant and obstructive people - and it shows...I can be a bolshy cow if you wind me up the wrong way...
I'm currently based 15 minutes walk from the beach in Bournemouth on the south coast of England. Since I moved here I've grown to love the place - even if it is full of grockles in Summer!