OWLNext 6.32
Classes | Defines | Typedefs | Enumerations | Enumerator | Functions | Variables | Friends
Doc/View classes

Classes

class  owl::TTreeViewCtrlView
class  owl::TListViewCtrlView
class  owl::TDocManager
class  owl::TDvOpenSaveData
class  owl::TDvOpenSaveDataOwner
class  owl::TDvFileOpenDialog
class  owl::TDvFileSaveDialog
class  owl::TDocTemplate
class  owl::TDocTemplateT< D, V >
class  owl::TDocument
class  owl::TView
 Abstract base class for view access from document. More...
class  owl::TWindowView
class  owl::TDialogView
class  owl::TStream
class  owl::TInStream
class  owl::TOutStream
class  owl::TEditView
class  owl::TFileDocument
class  owl::TListBoxView
 Provides views for list boxes. More...
class  owl::TPaneSplitterView

Defines

#define _DOCVIEWCLASS   _USERCLASS
#define DECLARE_STREAMABLE_OPSDV(cls)
#define PREV_OPEN   (ofNoCreate|ofNoReplace)
#define IS_PREV_OPEN(omode)   ((omode & PREV_OPEN)==PREV_OPEN)
#define B_void_Dispatch   B_Dispatch
#define B_int_Dispatch   B_I2_Dispatch
#define B_pointer_Dispatch   B_POINTER_Dispatch
#define B_long_Dispatch   B_LPARAM_Dispatch
#define NOTIFY_SIG(id, arg)
#define VN_DEFINE(id, method, disp)

Typedefs

typedef TTreeViewCtrlView owl::TTreeWindowView

Enumerations

enum  { owl::dnCreate, owl::dnClose, owl::dnRename }
enum  owl::TDocMode {
  owl::ofParent = 0, owl::ofRead = std::ios::in, owl::ofWrite = std::ios::out, ofReadWrite = (ofRead|ofWrite), owl::ofAtEnd = std::ios::ate, owl::ofAppend = std::ios::app, owl::ofTruncate = std::ios::trunc, owl::ofNoCreate = 0x40, owl::ofNoReplace = 0x80, ofBinary = std::ios::binary,
  ofIosMask = 0x00FF, owl::ofTransacted = 0x1000, owl::ofPreserve = 0x2000, owl::ofPriority = 0x4000, owl::ofTemporary = 0x8000, owl::shCompat = 0x0600, owl::shNone = 0x0800, owl::shRead = 0x0A00, owl::shWrite = 0x0C00, owl::shReadWrite = 0x0E00,
  owl::shDefault = 0, shMask = (shCompat|shNone|shRead|shWrite)
}

Functions

int owl::FormatFileTime (FILETIME *pft, void *dest, int textlen)
bool owl::TFileDocument::Open (int mode, LPCTSTR path=0)
bool owl::TFileDocument::Close ()
TInStream * owl::TFileDocument::InStream (int mode, LPCTSTR strmId=0)
TOutStream * owl::TFileDocument::OutStream (int mode, LPCTSTR strmId=0)
bool owl::TFileDocument::Commit (bool force=false)
bool owl::TFileDocument::Revert (bool clear=false)
int owl::TFileDocument::FindProperty (LPCTSTR name)
int owl::TFileDocument::PropertyFlags (int index)
LPCTSTR owl::TFileDocument::PropertyName (int index)
int owl::TFileDocument::GetProperty (int index, void *dest, int textlen=0)
bool owl::TFileDocument::SetProperty (int index, const void *src)
bool owl::TFileDocument::Open (HFILE fhdl)
HFILE owl::TFileDocument::OpenThisFile (int omode, const tstring &fileName, std::streampos *pseekpos)
void owl::TFileDocument::CloseThisFile (HFILE fhdl, int omode)

Variables

const long owl::dtProhibited
const long owl::dtNewDoc = 0x80000000L
const long owl::dtAutoDelete = 0x40000000L
const long owl::dtNoAutoView = 0x20000000L
const long owl::dtSingleView = 0x10000000L
const long owl::dtAutoOpen = 0x08000000L
const long owl::dtUpdateDir = 0x04000000L
const long owl::dtHidden = 0x02000000L
const long owl::dtSelected = 0x01000000L
const long owl::dtDynRegInfo = 0x00800000L
const long owl::dtSingleUse = 0x00400000L
const long owl::dtRegisterExt = 0x00200000L
const long owl::dtForbidNew = 0x00100000L
const long owl::dtReadOnly = 0x0001
const long owl::dtOverwritePrompt = 0x0002
const long owl::dtHideReadOnly = 0x0004
const long owl::dtPathMustExist = 0x0800
const long owl::dtFileMustExist = 0x1000
const long owl::dtCreatePrompt = 0x2000
const long owl::dtNoReadOnly = 0x8000
const long owl::dtNoTestCreate = 0x10000L

Friends

class owl::TFileDocument::TFileInStream
class owl::TFileDocument::TFileOutStream

Definitions of dmXxx document manager operational mode flags

const int owl::dmSDI = 0x0001
const int owl::dmMDI = 0x0002
const int owl::dmMenu = 0x0004
const int owl::dmSaveEnable = 0x0010
const int owl::dmNoRevert = 0x0020

Custom OWL Window Messages

These macros handle OWL-defined window messages used internally by the framework:

#define EV_WM_PREPROCMENU
#define EV_WM_CANCLOSE
#define EV_WM_WAKEUP

Definitions of vnXxxx view notification event IDs

event ID's up to vnCustomBase reserved for general doc-view notifications

const int owl::vnViewOpened = 1
const int owl::vnViewClosed = 2
const int owl::vnDocOpened = 3
const int owl::vnDocClosed = 4
const int owl::vnCommit = 5
const int owl::vnRevert = 6
const int owl::vnIsDirty = 7
const int owl::vnIsWindow = 8
const int owl::vnCustomBase = 100

Document and view property access flags

Define document and view property attributes. Documents, views, and applications use these attributes to determine how to process a document or view.

const int owl::pfGetText = 1
const int owl::pfGetBinary = 2
const int owl::pfConstant = 4
const int owl::pfSettable = 8
const int owl::pfUnknown = 16
const int owl::pfHidden = 32
const int owl::pfUserDef = 128

Document View Messages

These macros handle view-related messages generated by the document manager. VnHandler is a generic term for the view notification handler function.

#define EV_VN_VIEWOPENED   VN_DEFINE(::owl::vnViewOpened, VnViewOpened, pointer)
#define EV_VN_VIEWCLOSED   VN_DEFINE(::owl::vnViewClosed, VnViewClosed, pointer)
#define EV_VN_DOCOPENED   VN_DEFINE(::owl::vnDocOpened, VnDocOpened, int)
#define EV_VN_DOCCLOSED   VN_DEFINE(::owl::vnDocClosed, VnDocClosed, int)
#define EV_VN_COMMIT   VN_DEFINE(::owl::vnCommit, VnCommit, int)
#define EV_VN_REVERT   VN_DEFINE(::owl::vnRevert, VnRevert, int)
#define EV_VN_ISDIRTY   VN_DEFINE(::owl::vnIsDirty, VnIsDirty, void)
#define EV_VN_ISWINDOW   VN_DEFINE(::owl::vnIsWindow, VnIsWindow, int)
 owl::TFileDocument::TFileDocument (TDocument *parent=0)
 owl::TFileDocument::~TFileDocument ()
bool owl::TFileDocument::IsOpen ()
int owl::TFileDocument::PropertyCount ()

Detailed Description

Doc/View class support the Doc/View model, a system in which data is contained in and accessed through a document object, and displayed and manipulated through a view object. Any number of views can be associated with a particular document type. Various classes control the flow of information within this system. Several classes also provide support for OLE's compound document and compound file structure within the Doc/View model.

TDocManager is the base class designed to handle documents, templates, messages and so on.


Define Documentation

#define B_int_Dispatch   B_I2_Dispatch

LPARAM as int.

#define B_long_Dispatch   B_LPARAM_Dispatch

LPARAM as long.

#define B_pointer_Dispatch   B_POINTER_Dispatch

LPARAM as void*.

#define B_void_Dispatch   B_Dispatch

No parameters.

#define DECLARE_STREAMABLE_OPSDV (   cls)
Value:
static ipstream& readRef( ipstream& is, cls& cl );                  \
friend inline ipstream& operator >> ( ipstream& is, cls& cl )       \
    { return cls::readRef( is, cl ); }                              \
static ipstream& readPtr( ipstream& is, cls*& cl );                 \
friend inline ipstream& operator >> ( ipstream& is, cls*& cl )      \
    { return cls::readPtr( is, cl ); }                              \
static opstream& writeRef( opstream& is, const cls& cl );           \
friend inline opstream& operator << ( opstream& os, const cls& cl ) \
    { return cls::writeRef( os, cl ); }                             \
static opstream& writePtr( opstream& is, const cls* cl );           \
friend inline opstream& operator << ( opstream& os, const cls* cl ) \
    { return cls::writePtr( os, cl ); }
#define EV_WM_CANCLOSE
Value:
{{WM_OWLCANCLOSE}, 0, (::owl::TAnyDispatcher) ::owl::B_Dispatch,\
   (TMyPMF)::owl::B_Sig(&TMyClass::EvCanClose)}
#define EV_WM_PREPROCMENU
Value:
{{WM_OWLPREPROCMENU}, 0, (::owl::TAnyDispatcher) ::owl::v_WPARAM_Dispatch,\
   (TMyPMF)::owl::v_HMENU_Sig(&TMyClass::EvPreProcessMenu)}
#define EV_WM_WAKEUP
Value:
{{WM_OWLWAKEUP}, 0, (::owl::TAnyDispatcher) ::owl::v_Dispatch,\
   (TMyPMF)::owl::v_Sig(&TMyClass::EvWakeUp)}
#define NOTIFY_SIG (   id,
  arg 
)
Value:
template <class T> \
  inline bool _CALLCNVN (T::*id##_Sig(bool _CALLCNVN (T::*pmf)(arg)))(arg) {return pmf;}
#define VN_DEFINE (   id,
  method,
  disp 
)
Value:
{{WM_OWLNOTIFY}, id, \
  (::owl::TAnyDispatcher) ::owl::B_##disp##_Dispatch, \
  (TMyPMF)id##_Sig(&TMyClass::method)}

Define a DocView notification response entry 'id' is the id from NOTIFY_SIG above 'method' is the method name called by the notification 'disp' is the type of the lParam dispacher to use, and can be: 'void' lParam not passed 'int' integer size (16bit for win16, or 32bit on win32) 'pointer' pointer size (16bit for small & medium, or 32bit all other) 'long' 32 bit passed always


Enumeration Type Documentation

anonymous enum

Definitions of dnXxx document/view message notifications.

Enumerator:
dnCreate 

New document or view has been created.

dnClose 

Document or view has been closed.

dnRename 

Document has been renamed.

Document open and sharing modes - used in storage and stream constructors.

Defines the document and open sharing modes used for constructing streams and storing data. Any constants that have the same functionality as those used by OLE 2.0 doc files are indicated in the following table; for example, STGM_TRANSACTED, STGM_CONVERT, STGM_PRIORITY, and STGM_DELETEONRELEASE. Although files are typically used for data storage, databases or spreadsheets can also be used. I/O streams rather than DOS use these bit values. Documents open the object used for storage in one of the following modes:

Note:
the bits values are those of file streams, not same as RTL or OLE
Enumerator:
ofParent 

use open mode of parent storage

ofRead 

ios::in, open for reading

ofWrite 

ios::out, open for writing

ofAtEnd 

ios::ate, seek to eof upon original open

ofAppend 

ios::app, append mode: all additions at eof

ofTruncate 

ios::trunc, truncate file if already exists

ofNoCreate 

ios::nocreate, open fails if file doesn't exist

ofNoReplace 

ios::noreplace, open fails if file already exists

ofTransacted 

STGM_TRANSACTED, supports commit and revert.

ofPreserve 

STGM_CONVERT, backup old data of same name.

ofPriority 

STGM_PRIORITY, temporary efficient peeking.

ofTemporary 

STGM_DELETEONRELEASE, delete when destructed.

shCompat 

for non-compliant applications, avoid if possible

shNone 

EXCLUSIVE functionality.

shRead 

DENY_WRITE functionality.

shWrite 

DENY_READ functionality.

shReadWrite 

DENY_NONE functionality.

shDefault 

use stream implementation default value


Function Documentation

owl::TFileDocument::TFileDocument ( TDocument parent = 0) [inline]

Constructs a TFileDocument object with the optional parent document.

owl::TFileDocument::~TFileDocument ( ) [inline]

Destroys a TFileDocument object.

bool owl::TFileDocument::Close ( ) [virtual]

< String-aware overload

Closes the document but does not delete or detach any associated views. Before closing the document, Close calls TDocument::Close to make sure all child documents are closed. If any children are open, Close returns 0 and does not close the document. If all children are closed, Close checks to see if any associated streams are open, and if so, returns 0 and does not close the document. If there are no open streams, Close closes the file.

Reimplemented from owl::TDocument.

void owl::TFileDocument::CloseThisFile ( HFILE  fhdl,
int  omode 
) [protected]

Closes the file handle if the associated file was opened by TFileDocument. Calls TDocument::NotifyViews() to notify all views that the file document has closed.

References owl::vnDocClosed.

bool owl::TFileDocument::Commit ( bool  force = false) [virtual]

< String-aware overload

Calls TDocument::Commit and clears TDocument's DirtyFlag data member, thus indicating that there are no unsaved changes made to the document.

Reimplemented from owl::TDocument.

int owl::TFileDocument::FindProperty ( LPCTSTR  name) [virtual]

return index

Gets the property index, given the property name (name). Returns 0 if the name is not found.

Reimplemented from owl::TDocument.

int owl::TFileDocument::GetProperty ( int  prop,
void *  dest,
int  textlen = 0 
) [virtual]

Overrides TDocument::GetProperty and gets the property ID for the current file document.

Reimplemented from owl::TDocument.

TInStream * owl::TFileDocument::InStream ( int  omode,
LPCTSTR  strmId = 0 
) [virtual]

Overrides TDocument::InStream and provides generic input for the particular storage medium. InStream returns a pointer to a TInStream. mode is a combination of the ios bits defined in iostream.h. strmId is not used for file documents. The view reads data from the document as a stream or through stream functions.

Reimplemented from owl::TDocument.

References owl::ofParent, and owl::ofRead.

bool owl::TFileDocument::IsOpen ( ) [inline, virtual]

Is nonzero if the document or any streams are open.

Reimplemented from owl::TDocument.

bool owl::TFileDocument::Open ( HFILE  fhdl)

open on existing file handle

Opens a file document using an existing file handle. Sets TDocument::OpenMode to PREV_OPEN and read/write. Sets the document path to 0. Sets FHdl to fhdl. Always returns a nonzero value.

bool owl::TFileDocument::Open ( int  omode,
LPCTSTR  path = 0 
) [virtual]

Overrides TDocument::Open and opens the file using the specified path. If the file is already open, returns 0. Calls TDocument::SetDocPath to set the directory path. If mode is not 0, sets TDocument::OpenMode to mode. If the file cannot be opened, returns 0.

Reimplemented from owl::TDocument.

HFILE owl::TFileDocument::OpenThisFile ( int  omode,
const tstring &  fileName,
std::streampos *  pseekpos 
) [protected]

Opens the file document after checking the file sharing mode (omode). If a file mode is not specified as read, write, or read and write, OpenThisFile returns 0.

Todo:
This method uses obsolete WinApi functions for 16-bit compatibility which is no longer supported

References owl::ofAppend, owl::ofAtEnd, owl::ofNoCreate, owl::ofNoReplace, owl::ofRead, owl::ofTruncate, owl::ofWrite, owl::shCompat, owl::shRead, owl::shReadWrite, and owl::vnDocOpened.

TOutStream * owl::TFileDocument::OutStream ( int  omode,
LPCTSTR  strmId = 0 
) [virtual]

< String-aware overload

Overrides TDocument::OutStream and provides generic input for the particular storage medium. OutStream returns a pointer to a TOutStream. mode is a combination of the ios bits defined in iostream.h. strmId is not used for file documents. Instead, the view reads data from the document through stream functions.

Reimplemented from owl::TDocument.

References owl::ofParent, and owl::ofWrite.

int owl::TFileDocument::PropertyCount ( ) [inline, virtual]

Return the number of property support by this document.

Note:
The property count includes properties inherited from base document classes.

Reimplemented from owl::TDocument.

References owl::TFileDocument::NextProperty.

int owl::TFileDocument::PropertyFlags ( int  index) [virtual]

< String-aware overload

Returns the property attribute constants (pfGetText, pfHidden, and so on).

Reimplemented from owl::TDocument.

LPCTSTR owl::TFileDocument::PropertyName ( int  index) [virtual]

Returns the text name of the property given the index value.

Reimplemented from owl::TDocument.

bool owl::TFileDocument::Revert ( bool  clear = false) [virtual]

Calls TDocument::Revert to notify the views to refresh their data. If clear is false, the data is restored instead of cleared.

Reimplemented from owl::TDocument.

bool owl::TFileDocument::SetProperty ( int  prop,
const void *  src 
) [virtual]

Sets the property data, which must be in the native data type (either string or binary).

Reimplemented from owl::TDocument.


Variable Documentation

const int owl::dmMDI = 0x0002

Supports multiple open documents.

const int owl::dmMenu = 0x0004

Set IDs for file menu.

const int owl::dmNoRevert = 0x0020

Disable FileRevert menu item

const int owl::dmSaveEnable = 0x0010

Enable FileSave even if doc is unmodified.

const int owl::dmSDI = 0x0001

Does not support multiple open documents.

const long owl::dtAutoDelete = 0x40000000L

delete doc when last view is deleted

const long owl::dtAutoOpen = 0x08000000L

open document upon creation

const long owl::dtDynRegInfo = 0x00800000L

reginfo table is dynamic, not static

const long owl::dtForbidNew = 0x00100000L

forbids creating new document

const long owl::dtHidden = 0x02000000L

hide template from user selection

const long owl::dtNewDoc = 0x80000000L

create new document, no path used

const long owl::dtNoAutoView = 0x20000000L

no automatic create of default view

const long owl::dtProhibited
Initial value:
 OFN_ENABLEHOOK | 
                          OFN_ENABLETEMPLATE | 
                          OFN_ALLOWMULTISELECT |
                          OFN_ENABLETEMPLATEHANDLE

Flags which are stripped off when invoking Open/Save dialogs [See SelectDocPath() method for more information ]

const long owl::dtRegisterExt = 0x00200000L

register extension with this app

const long owl::dtSelected = 0x01000000L

indicates template last selected

const long owl::dtSingleUse = 0x00400000L

to be registered as single use

const long owl::dtSingleView = 0x10000000L

only a single view per document

const long owl::dtUpdateDir = 0x04000000L

syncronize directory with dialog dir

const int owl::pfConstant = 4

property is invariant for object instance

const int owl::pfGetBinary = 2

property accessible as native non-text format

const int owl::pfGetText = 1

property accessible as text format

const int owl::pfHidden = 32

property should be hidden from normal browse

const int owl::pfSettable = 8

property settable as native format

const int owl::pfUnknown = 16

property defined but unavailable in object

const int owl::pfUserDef = 128

property has been user-defined at run time

const int owl::vnCommit = 5

document is committing, flush cached changes

const int owl::vnCustomBase = 100

base of document class specific notifications

const int owl::vnDocClosed = 4

document has just been closed

const int owl::vnDocOpened = 3

document has just been opened

const int owl::vnIsDirty = 7

respond true if uncommitted changes present

const int owl::vnIsWindow = 8

respond true if passed HWND is that of view

const int owl::vnRevert = 6

document has reverted, reload data from doc

const int owl::vnViewClosed = 2

another view is about to be destructed

const int owl::vnViewOpened = 1

a new view has just been constructed