home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
opendc12.zip
/
SG244883.ZIP
/
2_9.1
< prev
next >
Wrap
Text File
|
2001-01-27
|
16KB
|
300 lines
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<base href="http://publib.boulder.ibm.com:80/cgi-bin/bookmgr/BOOKS/EZ30OZ00/2.9.1">
<title>
2.9.1 "OS/2 WARP and OpenDoc"
via IBM BookManager BookServer
</title>
</head>
<body background="/bookmgr/backdrop.gif">
<banner><br>
<a href="../../library"><img src="/bookmgr/libicon2.gif" border=0 alt="[Library]"></a>
<a href="CONTENTS#2.9.1"><img src="/bookmgr/contents.gif" border=0 alt="[Contents]"></a>
<img src="/bookmgr/drevs.gif" border=0 alt="[Revisions]">
<a href="2.9"><img src="/bookmgr/prev.gif" border=0 alt="[Prev Topic]"></a>
<a href="2.9.2"><img src="/bookmgr/next.gif" border=0 alt="[Next Topic]"></a>
<a href="../../search?book=EZ30OZ00"><img src="/bookmgr/search.gif" border=0 alt="[Search]" ></a>
<img src="/bookmgr/dslist.gif" border=0 alt="[Search Results]">
<img src="/bookmgr/dsprev.gif" border=0 alt="[Prev Topic Match]">
<img src="/bookmgr/dsnext.gif" border=0 alt="[Next Topic Match]">
<img src="/bookmgr/dnotes.gif" border=0 alt="[Notes]">
<img src="/bookmgr/dlnotes.gif" border=0 alt="[List Notes]">
<a href="../../print?book=EZ30OZ00"><img src="/bookmgr/print.gif" border=0 alt="[Print]"></a>
<a href="../../download/EZ30OZ00.boo"><img src="/bookmgr/download.gif" border=0 alt="[Download]" ></a>
<a href="../../help/book"><img src="/bookmgr/help.gif" border=0 alt="[Help]"></a>
<hr>
<a name="HDR4610DPR"><H4> 2.9.1 Partmeister</H4></a>
</banner>
<pre width="80">
<p>
One of the early tools available with IBM Developer's Toolkit for OS/2
Warp Version 3 is the Partmeister, which is a code generation tool for
components.
<p>
<a name="FIG4610D14"><hr>
</a>
<p>
<p>
<a href="picture-50?mode=zoom"><img src="/bookmgr/pictures/EZ30OZ00.P50.GIF" alt="PICTURE 50"></a>
<p>
<p>
<hr>
Figure 50. OpenDoc Partmeister Templates
<p>
You can select a template of a class derived from ODPart that has already
implemented the functions for drag and drop, embedding or linking, shown
in <a href="#FIG4610D14">Figure 50</a>. From this template class, Partmeister is generating the
following three files which can be used for further development:
<p>
1. A CPP source file where the component specific logic can be added
2. An IDL file
3. An appropriate make file either for C Set++ or Visual Age C++ (see
<a href="#FIG4610D16">Figure 52</a>)
<p>
The category and kind of component to be generated can also be specified
as shown in<a href="#FIG4610D15"> Figure 51</a>.
<p>
<a name="FIG4610D15"><hr>
</a>
<p>
<p>
<a href="picture-51?mode=zoom"><img src="/bookmgr/pictures/EZ30OZ00.P51.GIF" alt="PICTURE 51"></a>
<p>
<p>
<hr>
Figure 51. OpenDoc Partmeister Category and Kind
<p>
After you have specified your paths, Partmeister generates the following
three files:
<p>
1. An IDL File
2. A CPP File
3. A makefile, customized to the compiler that was specified
<p>
The following IDL code is generated by Partmeister after we specify that
we want to generate a basic component for graphics, supporting drag and
drop. The generated IDL specifies a class derived from where your
component will be derived, IBM_BaseNonContainer. This
IBM_BaseNonContainer class is derived from the OpenDoc ODPart class. The
IDLs specify which methods have to be overridden. Partmeister generates
in the CPP file some basic code.
<p>
<a name="FIG4610D16"><hr>
</a>
<p>
<p>
<a href="picture-52?mode=zoom"><img src="/bookmgr/pictures/EZ30OZ00.P52.GIF" alt="PICTURE 52"></a>
<p>
<p>
<hr>
Figure 52. OpenDoc Partmeister
<p>
The following sample files were generated by Partmeister. There is a
sample for an IDL file and a part of a CPP file.
<a name="HDR4610DIP"><p>
<p>
<I>Sample</I> <I>IDL</I> <I>File</I> <I>Generated</I> <I>by</I> <I>Partmeister</I> </a>
<p>
<a name="FIG4610D55"><hr>
</a>
<p>
<p>
<samp>#ifdef</samp> <samp>__PRIVATE__</samp>
<samp>//#</samp>
<samp>//#</samp> <samp>File:</samp> <samp>CONTI.IDL</samp>
<samp>//#</samp>
<samp>//#</samp> <samp>Description:</samp> <samp>IDL</samp> <samp>for</samp> <samp>CntrDrDropLink</samp>
<samp>//#</samp>
<samp>//#</samp> <samp>Written</samp> <samp>by:</samp> <samp>Puerckhauer</samp>
<samp>//#</samp>
<samp>//#</samp> <samp>Generated</samp> <samp>by:</samp> <samp>IBM</samp> <samp>PartMeister</samp> <samp>Beta</samp> <samp>2</samp>
<samp>//#</samp>
<samp>#endif</samp>
<samp>//#</samp> <samp>Copyright:</samp> <samp>(c)</samp> <samp>1996</samp> <samp>by</samp> <samp>IBM</samp>
<samp>//#</samp> <samp>-</samp> <samp>all</samp> <samp>rights</samp> <samp>reserved</samp>
<p>
<samp>#ifndef</samp> <samp>_CONTI_</samp>
<samp>#define</samp> <samp>_CONTI_</samp>
<p>
<samp>#ifndef</samp> <samp>_BASENC_</samp>
<samp>#include</samp> <samp><basenc.idl></samp>
<samp>#endif</samp>
<p>
<samp>//</samp> <samp>meatless</samp>
<samp>interface</samp> <samp>M_CntrDrDropLink;</samp>
<p>
<samp>interface</samp> <samp>CntrDrDropLink</samp> <samp>:</samp> <samp>IBM_BaseNonContainer</samp>
<samp>{</samp>
<samp>attribute</samp> <samp>string</samp> <samp>text;</samp>
<p>
<samp>#ifdef</samp> <samp>__SOMIDL__</samp>
<samp>implementation</samp>
<samp>{</samp>
<samp>metaclass</samp> <samp>=</samp> <samp>M_CntrDrDropLink;</samp>
<samp>majorversion</samp> <samp>=</samp> <samp>1;</samp>
<samp>minorversion</samp> <samp>=</samp> <samp>0;</samp>
<samp>dllname</samp> <samp>=</samp> <samp>"Conti.dll";</samp>
<p>
<samp>releaseorder:</samp>
<samp>_set_text,</samp>
<samp>_get_text;</samp>
<samp>override:</samp>
<samp>somDefaultInit,</samp>
<samp>somDestruct,</samp>
<samp>InitPart,</samp>
<samp>InitPartFromStorage,</samp>
<samp>Draw,</samp>
<samp>Externalize,</samp>
<samp>CloneInto,</samp>
<samp>MenuCopyValid,</samp>
<samp>MenuPasteValid,</samp>
<samp>PopulateClipboardStorageUnit,</samp>
<samp>ReceiveClipboardStorageUnit,</samp>
<samp>DragValid,</samp>
<samp>DropValid,</samp>
<samp>PopulateDragStorageUnit,</samp>
<samp>ReceiveDropStorageUnit,</samp>
<samp>LinkSourceValid,</samp>
<samp>PopulateLinkStorageUnit;</samp>
<p>
<samp>//</samp> <samp>method</samp> <samp>modifiers</samp>
<samp>somDefaultInit:</samp> <samp>init;</samp>
<samp>};</samp>
<samp>#endif</samp>
<samp>};</samp>
<p>
<samp>interface</samp> <samp>M_CntrDrDropLink</samp> <samp>:</samp> <samp>M_IBM_BaseNonContainer</samp>
<samp>{</samp>
<samp>#ifdef</samp> <samp>__SOMIDL__</samp>
<samp>implementation</samp>
<samp>{</samp>
<samp>override:</samp>
<samp>clsGetODPartHandlerName,</samp>
<samp>clsGetODPartHandlerDisplayName,</samp>
<samp>clsGetODPartKinds,</samp>
<samp>clsGetOLE2ClassId,</samp>
<samp>clsGetWindowsIconFileName;</samp>
<samp>};</samp>
<samp>#endif</samp>
<samp>};</samp>
<samp>#endif</samp>
<p>
<p>
<p>
<hr>
Figure 53. IDL File Generated by Partmeister
<p>
<p>
<p>
<B>Part</B> <B>of</B> <B>a</B> <B>CPP</B> <B>File</B> <B>generated</B> <B>by</B> <B>Partmeister</B>
<p>
This code skeleton has to be enriched by the component-specific logic.
<p>
<p>
<a name="FIG4610D56"><hr>
</a>
<p>
<samp>SOM_Scope</samp> <samp>void</samp> <samp>SOMLINK</samp> <samp>InitPart(CntrDrDropLink</samp> <samp>*somSelf,</samp> <samp>Environment</samp> <samp>*ev,</samp>
<samp>ODStorageUnit*</samp> <samp>storageUnit,</samp> <samp>ODPart</samp> <samp>*partWrapper</samp>
<samp>)</samp>
<samp>{</samp>
<samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp>
<samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"InitPart");</samp>
<p>
<samp>CntrDrDropLink_parent_IBM_BaseNonContainer_InitPart(somSelf,</samp> <samp>ev,</samp> <samp>storageUnit</samp>
<samp>,</samp> <samp>partWrapper);</samp>
<samp>CommonInitPart</samp> <samp>(somSelf,</samp> <samp>ev);</samp>
<p>
<samp>//</samp> <samp>store</samp> <samp>kind</samp> <samp>to</samp> <samp>storage</samp> <samp>unit</samp>
<samp>storageUnit->AddProperty</samp> <samp>(ev,</samp> <samp>kODPropContents)->AddValue</samp> <samp>(ev,</samp> <samp>kKind);</samp>
<p>
<samp>//</samp> <samp>set</samp> <samp>preferred</samp> <samp>editor</samp> <samp>property</samp> <samp>to</samp> <samp>this</samp> <samp>part</samp>
<samp>storageUnit->AddProperty</samp> <samp>(ev,</samp> <samp>kODPropPreferredKind)->AddValue</samp> <samp>(ev,</samp> <samp>kODISOStr</samp>
<samp>);</samp>
<samp>StorageUnitSetValue</samp> <samp>(storageUnit,</samp> <samp>ev,</samp> <samp>strlen</samp> <samp>(kKind)</samp> <samp>+</samp> <samp>1,</samp> <samp>kKind);</samp>
<p>
<samp>_text</samp> <samp>=</samp> <samp>(string)</samp> <samp>SOMMalloc</samp> <samp>(strlen</samp> <samp>("CntrDrDropLink")</samp> <samp>+</samp> <samp>1);</samp>
<samp>strcpy</samp> <samp>(_text,</samp> <samp>"CntrDrDropLink");</samp>
<samp>}</samp>
<p>
<samp>SOM_Scope</samp> <samp>void</samp> <samp>SOMLINK</samp> <samp>InitPartFromStorage(CntrDrDropLink</samp> <samp>*somSelf,</samp> <samp>Environment</samp>
<samp>*ev,</samp>
<samp>ODStorageUnit*</samp> <samp>storageUnit,</samp> <samp>ODPart</samp> <samp>*</samp>
<samp>partWrapper)</samp>
<samp>{</samp>
<samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp>
<samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"InitPartFromStorage");</samp>
<p>
<samp>CntrDrDropLink_parent_IBM_BaseNonContainer_InitPartFromStorage(somSelf,</samp> <samp>ev,</samp>
<samp>storageUnit,</samp> <samp>partWrapper);</samp>
<samp>CommonInitPart</samp> <samp>(somSelf,</samp> <samp>ev);</samp>
<p>
<samp>//</samp> <samp>retrieve</samp> <samp>part</samp> <samp>data</samp> <samp>from</samp> <samp>persistent</samp> <samp>storage</samp>
<samp>storageUnit->Focus</samp> <samp>(ev,</samp> <samp>"Text",</samp> <samp>kODPosUndefined,</samp> <samp>kODKindPlainText,</samp> <samp>0,</samp> <samp>kODPos</samp>
<samp>Undefined);</samp>
<samp>long</samp> <samp>size</samp> <samp>=</samp> <samp>storageUnit->GetSize</samp> <samp>(ev);</samp>
<samp>if</samp> <samp>(_text</samp> <samp>!=</samp> <samp>NULL)</samp>
<samp>SOMFree</samp> <samp>(_text);</samp>
<samp>_text</samp> <samp>=</samp> <samp>(string)</samp> <samp>SOMMalloc</samp> <samp>(size);</samp>
<samp>StorageUnitGetValue</samp> <samp>(storageUnit,</samp> <samp>ev,</samp> <samp>size,</samp> <samp>_text);</samp>
<samp>}</samp>
<samp>SOM_Scope</samp> <samp>void</samp> <samp>SOMLINK</samp> <samp>Externalize(CntrDrDropLink</samp> <samp>*somSelf,</samp> <samp>Environment</samp> <samp>*ev)</samp>
<samp>{</samp>
<samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp>
<samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"Externalize");</samp>
<p>
<samp>ODStorageUnit*</samp> <samp>su</samp> <samp>=</samp> <samp>somSelf->GetStorageUnit</samp> <samp>(ev);</samp>
<p>
<samp>if</samp> <samp>(su->Exists</samp> <samp>(ev,</samp> <samp>kODPropContents,</samp> <samp>kKind,</samp> <samp>0))</samp>
<samp>{</samp>
<samp>su->Focus</samp> <samp>(ev,</samp> <samp>kODPropContents,</samp> <samp>kODPosUndefined,</samp> <samp>kKind,</samp> <samp>0,</samp> <samp>kODPosUndefin</samp>
<samp>ed);</samp>
<samp>su->Remove</samp> <samp>(ev);</samp>
<samp>su->AddValue</samp> <samp>(ev,</samp> <samp>kKind);</samp>
<samp>}</samp>
<samp>else</samp>
<samp>su->AddProperty</samp> <samp>(ev,</samp> <samp>kODPropContents)->AddValue</samp> <samp>(ev,</samp> <samp>kKind);</samp>
<p>
<samp>//</samp> <samp>store</samp> <samp>persistent</samp> <samp>data</samp>
<samp>su->AddProperty</samp> <samp>(ev,</samp> <samp>"Text")->AddValue</samp> <samp>(ev,</samp> <samp>kODKindPlainText);</samp>
<samp>StorageUnitSetValue</samp> <samp>(su,</samp> <samp>ev,</samp> <samp>strlen</samp> <samp>(_text)</samp> <samp>+</samp> <samp>1,</samp> <samp>_text);</samp>
<p>
<samp>CntrDrDropLink_parent_IBM_BaseNonContainer_Externalize(somSelf,</samp> <samp>ev);</samp>
<samp>}</samp>
<p>
<samp>SOM_Scope</samp> <samp>void</samp> <samp>SOMLINK</samp> <samp>CloneInto(CntrDrDropLink</samp> <samp>*somSelf,</samp> <samp>Environment</samp> <samp>*ev,</samp> <samp>ODD</samp>
<samp>raftKey</samp> <samp>key,</samp>
<samp>ODStorageUnit</samp> <samp>*toSU,</samp> <samp>ODFrame</samp> <samp>*scopeFrame)</samp>
<samp>{</samp>
<samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp>
<samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"CloneInto");</samp>
<p>
<samp>ODStorageUnit</samp> <samp>*su</samp> <samp>=</samp> <samp>somSelf->GetStorageUnit</samp> <samp>(ev);</samp>
<samp>ODDraft</samp> <samp>*draft</samp> <samp>=</samp> <samp>su->GetDraft</samp> <samp>(ev);</samp>
<p>
<samp>somSelf->Externalize</samp> <samp>(ev);</samp>
<p>
<samp>ODID</samp> <samp>scopeFrameID</samp> <samp>=</samp> <samp>0;</samp>
<samp>if</samp> <samp>(scopeFrame</samp> <samp>!=</samp> <samp>kODNULL)</samp>
<samp>scopeFrameID</samp> <samp>=</samp> <samp>scopeFrame->GetStorageUnit</samp> <samp>(ev)->GetID</samp> <samp>(ev);</samp>
<samp>su->CloneInto</samp> <samp>(ev,</samp> <samp>key,</samp> <samp>toSU,</samp> <samp>scopeFrameID);</samp>
<samp>}</samp>
<p>
<p>
<hr>
Figure 54. Part of CPP File Generated by Partmeister
</pre>
</pre>
<hr>
<br><a href="2.9"><img src="/bookmgr/prev.gif" border=0 alt="[Prev Topic]"></a>
<a href="2.9.2"><img src="/bookmgr/next.gif" border=0 alt="[Next Topic]"></a>
<cite> ⌐ Copyright IBM Corp. 1996</cite>
<HR><p><h6><a href="/cgi-bin/bookmgr/library">IBM BookManager« BookServer</a> Copyright 1989, 1999<a href="http://www.ibm.com/"> IBM</a> Corporation. All rights reserved.</h6><p>
</BODY></HTML>