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 >
Text File  |  2001-01-27  |  16KB  |  300 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  2. <HTML>
  3. <HEAD>
  4. <base href="http://publib.boulder.ibm.com:80/cgi-bin/bookmgr/BOOKS/EZ30OZ00/2.9.1">
  5. <title>
  6. 2.9.1 "OS/2 WARP and OpenDoc" 
  7.   via IBM BookManager BookServer
  8. </title>
  9. </head>
  10. <body background="/bookmgr/backdrop.gif">
  11. <banner><br>
  12. <a href="../../library"><img src="/bookmgr/libicon2.gif" border=0 alt="[Library]"></a>
  13. <a  href="CONTENTS#2.9.1"><img src="/bookmgr/contents.gif" border=0 alt="[Contents]"></a>
  14. <img src="/bookmgr/drevs.gif" border=0 alt="[Revisions]">
  15. <a href="2.9"><img src="/bookmgr/prev.gif" border=0 alt="[Prev Topic]"></a>
  16. <a href="2.9.2"><img src="/bookmgr/next.gif" border=0 alt="[Next Topic]"></a>
  17. <a href="../../search?book=EZ30OZ00"><img src="/bookmgr/search.gif" border=0 alt="[Search]" ></a>
  18. <img src="/bookmgr/dslist.gif" border=0 alt="[Search Results]">
  19. <img src="/bookmgr/dsprev.gif" border=0 alt="[Prev Topic Match]">
  20. <img src="/bookmgr/dsnext.gif" border=0 alt="[Next Topic Match]">
  21. <img src="/bookmgr/dnotes.gif" border=0 alt="[Notes]">
  22. <img src="/bookmgr/dlnotes.gif" border=0 alt="[List Notes]">
  23. <a  href="../../print?book=EZ30OZ00"><img src="/bookmgr/print.gif" border=0 alt="[Print]"></a>
  24. <a href="../../download/EZ30OZ00.boo"><img src="/bookmgr/download.gif" border=0 alt="[Download]" ></a>
  25. <a  href="../../help/book"><img src="/bookmgr/help.gif" border=0 alt="[Help]"></a>
  26. <hr>
  27. <a name="HDR4610DPR"><H4> 2.9.1   Partmeister</H4></a>
  28. </banner>
  29. <pre width="80">
  30. <p>
  31.    One of the early tools available with IBM Developer's Toolkit for OS/2 
  32.    Warp Version 3 is the Partmeister, which is a code generation tool for 
  33.    components. 
  34. <p>
  35. <a name="FIG4610D14"><hr>
  36.  </a>
  37. <p>
  38. <p>
  39.                                    <a href="picture-50?mode=zoom"><img src="/bookmgr/pictures/EZ30OZ00.P50.GIF" alt="PICTURE 50"></a>           
  40. <p>
  41. <p>
  42. <hr>
  43.  
  44.    Figure 50. OpenDoc Partmeister Templates 
  45. <p>
  46.    You can select a template of a class derived from ODPart that has already 
  47.    implemented the functions for drag and drop, embedding or linking, shown 
  48.    in <a href="#FIG4610D14">Figure 50</a>.  From this template class, Partmeister is generating the 
  49.    following three files which can be used for further development: 
  50. <p>
  51.    1.  A CPP source file where the component specific logic can be added 
  52.    2.  An IDL file 
  53.    3.  An appropriate make file either for C Set++ or Visual Age C++ (see 
  54.        <a href="#FIG4610D16">Figure 52</a>) 
  55. <p>
  56.    The category and kind of component to be generated can also be specified 
  57.    as shown in<a href="#FIG4610D15"> Figure 51</a>. 
  58. <p>
  59. <a name="FIG4610D15"><hr>
  60.  </a>
  61. <p>
  62. <p>
  63.                                    <a href="picture-51?mode=zoom"><img src="/bookmgr/pictures/EZ30OZ00.P51.GIF" alt="PICTURE 51"></a>           
  64. <p>
  65. <p>
  66. <hr>
  67.  
  68.    Figure 51. OpenDoc Partmeister Category and Kind 
  69. <p>
  70.    After you have specified your paths, Partmeister generates the following 
  71.    three files: 
  72. <p>
  73.    1.  An IDL File 
  74.    2.  A CPP File 
  75.    3.  A makefile, customized to the compiler that was specified 
  76. <p>
  77.    The following IDL code is generated by Partmeister after we specify that 
  78.    we want to generate a basic component for graphics, supporting drag and 
  79.    drop.  The generated IDL specifies a class derived from where your 
  80.    component will be derived, IBM_BaseNonContainer.  This 
  81.    IBM_BaseNonContainer class is derived from the OpenDoc ODPart class.  The 
  82.    IDLs specify which methods have to be overridden.  Partmeister generates 
  83.    in the CPP file some basic code. 
  84. <p>
  85. <a name="FIG4610D16"><hr>
  86.  </a>
  87. <p>
  88. <p>
  89.                                    <a href="picture-52?mode=zoom"><img src="/bookmgr/pictures/EZ30OZ00.P52.GIF" alt="PICTURE 52"></a>           
  90. <p>
  91. <p>
  92. <hr>
  93.  
  94.    Figure 52. OpenDoc Partmeister 
  95. <p>
  96.    The following sample files were generated by Partmeister.  There is a 
  97.    sample for an IDL file and a part of a CPP file. 
  98. <a name="HDR4610DIP"><p>
  99. <p>
  100.    <I>Sample</I> <I>IDL</I> <I>File</I> <I>Generated</I> <I>by</I> <I>Partmeister</I> </a>
  101. <p>
  102. <a name="FIG4610D55"><hr>
  103.  </a>
  104. <p>
  105. <p>
  106.      <samp>#ifdef</samp> <samp>__PRIVATE__</samp> 
  107.      <samp>//#</samp> 
  108.      <samp>//#</samp>    <samp>File:</samp>          <samp>CONTI.IDL</samp> 
  109.      <samp>//#</samp> 
  110.      <samp>//#</samp>    <samp>Description:</samp>   <samp>IDL</samp> <samp>for</samp> <samp>CntrDrDropLink</samp> 
  111.      <samp>//#</samp> 
  112.      <samp>//#</samp>    <samp>Written</samp> <samp>by:</samp>    <samp>Puerckhauer</samp> 
  113.      <samp>//#</samp> 
  114.      <samp>//#</samp>    <samp>Generated</samp> <samp>by:</samp>  <samp>IBM</samp> <samp>PartMeister</samp> <samp>Beta</samp> <samp>2</samp> 
  115.      <samp>//#</samp> 
  116.      <samp>#endif</samp> 
  117.      <samp>//#</samp>    <samp>Copyright:</samp>     <samp>(c)</samp> <samp>1996</samp> <samp>by</samp> <samp>IBM</samp> 
  118.      <samp>//#</samp>                   <samp>-</samp> <samp>all</samp> <samp>rights</samp> <samp>reserved</samp> 
  119. <p>
  120.      <samp>#ifndef</samp> <samp>_CONTI_</samp> 
  121.      <samp>#define</samp> <samp>_CONTI_</samp> 
  122. <p>
  123.      <samp>#ifndef</samp> <samp>_BASENC_</samp> 
  124.      <samp>#include</samp> <samp><basenc.idl></samp> 
  125.      <samp>#endif</samp> 
  126. <p>
  127.      <samp>//</samp> <samp>meatless</samp> 
  128.      <samp>interface</samp> <samp>M_CntrDrDropLink;</samp> 
  129. <p>
  130.      <samp>interface</samp> <samp>CntrDrDropLink</samp> <samp>:</samp> <samp>IBM_BaseNonContainer</samp> 
  131.       <samp>{</samp> 
  132.          <samp>attribute</samp> <samp>string</samp> <samp>text;</samp> 
  133. <p>
  134.          <samp>#ifdef</samp> <samp>__SOMIDL__</samp> 
  135.          <samp>implementation</samp> 
  136.           <samp>{</samp> 
  137.              <samp>metaclass</samp>      <samp>=</samp> <samp>M_CntrDrDropLink;</samp> 
  138.              <samp>majorversion</samp>   <samp>=</samp> <samp>1;</samp> 
  139.              <samp>minorversion</samp>   <samp>=</samp> <samp>0;</samp> 
  140.              <samp>dllname</samp>        <samp>=</samp> <samp>"Conti.dll";</samp> 
  141. <p>
  142.              <samp>releaseorder:</samp> 
  143.                  <samp>_set_text,</samp> 
  144.                  <samp>_get_text;</samp> 
  145.              <samp>override:</samp> 
  146.                  <samp>somDefaultInit,</samp> 
  147.                  <samp>somDestruct,</samp> 
  148.                  <samp>InitPart,</samp> 
  149.                  <samp>InitPartFromStorage,</samp> 
  150.                  <samp>Draw,</samp> 
  151.                  <samp>Externalize,</samp> 
  152.                  <samp>CloneInto,</samp> 
  153.                  <samp>MenuCopyValid,</samp> 
  154.                  <samp>MenuPasteValid,</samp> 
  155.                  <samp>PopulateClipboardStorageUnit,</samp> 
  156.                  <samp>ReceiveClipboardStorageUnit,</samp> 
  157.                  <samp>DragValid,</samp> 
  158.                  <samp>DropValid,</samp> 
  159.                  <samp>PopulateDragStorageUnit,</samp> 
  160.                  <samp>ReceiveDropStorageUnit,</samp> 
  161.                  <samp>LinkSourceValid,</samp> 
  162.                  <samp>PopulateLinkStorageUnit;</samp> 
  163. <p>
  164.              <samp>//</samp> <samp>method</samp> <samp>modifiers</samp> 
  165.              <samp>somDefaultInit:</samp> <samp>init;</samp> 
  166.           <samp>};</samp> 
  167.          <samp>#endif</samp> 
  168.       <samp>};</samp> 
  169. <p>
  170.      <samp>interface</samp> <samp>M_CntrDrDropLink</samp> <samp>:</samp> <samp>M_IBM_BaseNonContainer</samp> 
  171.       <samp>{</samp> 
  172.          <samp>#ifdef</samp> <samp>__SOMIDL__</samp> 
  173.          <samp>implementation</samp> 
  174.           <samp>{</samp> 
  175.              <samp>override:</samp> 
  176.                  <samp>clsGetODPartHandlerName,</samp> 
  177.                  <samp>clsGetODPartHandlerDisplayName,</samp> 
  178.                  <samp>clsGetODPartKinds,</samp> 
  179.                  <samp>clsGetOLE2ClassId,</samp> 
  180.                  <samp>clsGetWindowsIconFileName;</samp> 
  181.           <samp>};</samp> 
  182.          <samp>#endif</samp> 
  183.       <samp>};</samp> 
  184.      <samp>#endif</samp> 
  185. <p>
  186. <p>
  187. <p>
  188. <hr>
  189.  
  190.    Figure 53. IDL File Generated by Partmeister 
  191. <p>
  192. <p>
  193. <p>
  194.     <B>Part</B> <B>of</B> <B>a</B> <B>CPP</B> <B>File</B> <B>generated</B> <B>by</B> <B>Partmeister</B> 
  195. <p>
  196.    This code skeleton has to be enriched by the component-specific logic. 
  197. <p>
  198. <p>
  199. <a name="FIG4610D56"><hr>
  200.  </a>
  201. <p>
  202.      <samp>SOM_Scope</samp> <samp>void</samp>  <samp>SOMLINK</samp> <samp>InitPart(CntrDrDropLink</samp> <samp>*somSelf,</samp>  <samp>Environment</samp> <samp>*ev,</samp> 
  203.                                       <samp>ODStorageUnit*</samp> <samp>storageUnit,</samp> <samp>ODPart</samp> <samp>*partWrapper</samp> 
  204.      <samp>)</samp> 
  205.      <samp>{</samp> 
  206.          <samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp> 
  207.          <samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"InitPart");</samp> 
  208. <p>
  209.          <samp>CntrDrDropLink_parent_IBM_BaseNonContainer_InitPart(somSelf,</samp> <samp>ev,</samp> <samp>storageUnit</samp> 
  210.      <samp>,</samp> <samp>partWrapper);</samp> 
  211.          <samp>CommonInitPart</samp> <samp>(somSelf,</samp> <samp>ev);</samp> 
  212. <p>
  213.          <samp>//</samp> <samp>store</samp> <samp>kind</samp> <samp>to</samp> <samp>storage</samp> <samp>unit</samp> 
  214.          <samp>storageUnit->AddProperty</samp> <samp>(ev,</samp> <samp>kODPropContents)->AddValue</samp> <samp>(ev,</samp> <samp>kKind);</samp> 
  215. <p>
  216.          <samp>//</samp> <samp>set</samp> <samp>preferred</samp> <samp>editor</samp> <samp>property</samp> <samp>to</samp> <samp>this</samp> <samp>part</samp> 
  217.          <samp>storageUnit->AddProperty</samp> <samp>(ev,</samp> <samp>kODPropPreferredKind)->AddValue</samp> <samp>(ev,</samp> <samp>kODISOStr</samp> 
  218.      <samp>);</samp> 
  219.          <samp>StorageUnitSetValue</samp> <samp>(storageUnit,</samp> <samp>ev,</samp> <samp>strlen</samp> <samp>(kKind)</samp> <samp>+</samp> <samp>1,</samp> <samp>kKind);</samp> 
  220. <p>
  221.          <samp>_text</samp> <samp>=</samp> <samp>(string)</samp> <samp>SOMMalloc</samp> <samp>(strlen</samp> <samp>("CntrDrDropLink")</samp> <samp>+</samp> <samp>1);</samp> 
  222.          <samp>strcpy</samp> <samp>(_text,</samp> <samp>"CntrDrDropLink");</samp> 
  223.      <samp>}</samp> 
  224. <p>
  225.      <samp>SOM_Scope</samp> <samp>void</samp>  <samp>SOMLINK</samp> <samp>InitPartFromStorage(CntrDrDropLink</samp> <samp>*somSelf,</samp> <samp>Environment</samp> 
  226.       <samp>*ev,</samp> 
  227.                                                  <samp>ODStorageUnit*</samp> <samp>storageUnit,</samp> <samp>ODPart</samp> <samp>*</samp> 
  228.      <samp>partWrapper)</samp> 
  229.      <samp>{</samp> 
  230.          <samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp> 
  231.          <samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"InitPartFromStorage");</samp> 
  232. <p>
  233.          <samp>CntrDrDropLink_parent_IBM_BaseNonContainer_InitPartFromStorage(somSelf,</samp> <samp>ev,</samp> 
  234.      <samp>storageUnit,</samp> <samp>partWrapper);</samp> 
  235.          <samp>CommonInitPart</samp> <samp>(somSelf,</samp> <samp>ev);</samp> 
  236. <p>
  237.          <samp>//</samp> <samp>retrieve</samp> <samp>part</samp> <samp>data</samp> <samp>from</samp> <samp>persistent</samp> <samp>storage</samp> 
  238.          <samp>storageUnit->Focus</samp> <samp>(ev,</samp> <samp>"Text",</samp> <samp>kODPosUndefined,</samp> <samp>kODKindPlainText,</samp> <samp>0,</samp> <samp>kODPos</samp> 
  239.      <samp>Undefined);</samp> 
  240.          <samp>long</samp> <samp>size</samp> <samp>=</samp> <samp>storageUnit->GetSize</samp> <samp>(ev);</samp> 
  241.          <samp>if</samp> <samp>(_text</samp> <samp>!=</samp> <samp>NULL)</samp> 
  242.              <samp>SOMFree</samp> <samp>(_text);</samp> 
  243.          <samp>_text</samp> <samp>=</samp> <samp>(string)</samp> <samp>SOMMalloc</samp> <samp>(size);</samp> 
  244.          <samp>StorageUnitGetValue</samp> <samp>(storageUnit,</samp> <samp>ev,</samp> <samp>size,</samp> <samp>_text);</samp> 
  245.      <samp>}</samp> 
  246.      <samp>SOM_Scope</samp> <samp>void</samp>  <samp>SOMLINK</samp> <samp>Externalize(CntrDrDropLink</samp> <samp>*somSelf,</samp>  <samp>Environment</samp> <samp>*ev)</samp> 
  247.      <samp>{</samp> 
  248.          <samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp> 
  249.          <samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"Externalize");</samp> 
  250. <p>
  251.          <samp>ODStorageUnit*</samp> <samp>su</samp> <samp>=</samp> <samp>somSelf->GetStorageUnit</samp> <samp>(ev);</samp> 
  252. <p>
  253.          <samp>if</samp> <samp>(su->Exists</samp> <samp>(ev,</samp> <samp>kODPropContents,</samp> <samp>kKind,</samp> <samp>0))</samp> 
  254.           <samp>{</samp> 
  255.              <samp>su->Focus</samp> <samp>(ev,</samp> <samp>kODPropContents,</samp> <samp>kODPosUndefined,</samp> <samp>kKind,</samp> <samp>0,</samp> <samp>kODPosUndefin</samp> 
  256.      <samp>ed);</samp> 
  257.              <samp>su->Remove</samp> <samp>(ev);</samp> 
  258.              <samp>su->AddValue</samp> <samp>(ev,</samp> <samp>kKind);</samp> 
  259.           <samp>}</samp> 
  260.          <samp>else</samp> 
  261.              <samp>su->AddProperty</samp> <samp>(ev,</samp> <samp>kODPropContents)->AddValue</samp> <samp>(ev,</samp> <samp>kKind);</samp> 
  262. <p>
  263.          <samp>//</samp> <samp>store</samp> <samp>persistent</samp> <samp>data</samp> 
  264.          <samp>su->AddProperty</samp> <samp>(ev,</samp> <samp>"Text")->AddValue</samp> <samp>(ev,</samp> <samp>kODKindPlainText);</samp> 
  265.          <samp>StorageUnitSetValue</samp> <samp>(su,</samp> <samp>ev,</samp> <samp>strlen</samp> <samp>(_text)</samp> <samp>+</samp> <samp>1,</samp> <samp>_text);</samp> 
  266. <p>
  267.          <samp>CntrDrDropLink_parent_IBM_BaseNonContainer_Externalize(somSelf,</samp> <samp>ev);</samp> 
  268.      <samp>}</samp> 
  269. <p>
  270.      <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> 
  271.      <samp>raftKey</samp> <samp>key,</samp> 
  272.                                        <samp>ODStorageUnit</samp> <samp>*toSU,</samp> <samp>ODFrame</samp> <samp>*scopeFrame)</samp> 
  273.      <samp>{</samp> 
  274.          <samp>CntrDrDropLinkData</samp> <samp>*somThis</samp> <samp>=</samp> <samp>CntrDrDropLinkGetData(somSelf);</samp> 
  275.          <samp>CntrDrDropLinkMethodDebug(kPartHandlerName,"CloneInto");</samp> 
  276. <p>
  277.          <samp>ODStorageUnit</samp> <samp>*su</samp>    <samp>=</samp> <samp>somSelf->GetStorageUnit</samp> <samp>(ev);</samp> 
  278.          <samp>ODDraft</samp>       <samp>*draft</samp> <samp>=</samp> <samp>su->GetDraft</samp> <samp>(ev);</samp> 
  279. <p>
  280.          <samp>somSelf->Externalize</samp> <samp>(ev);</samp> 
  281. <p>
  282.          <samp>ODID</samp> <samp>scopeFrameID</samp> <samp>=</samp> <samp>0;</samp> 
  283.          <samp>if</samp> <samp>(scopeFrame</samp> <samp>!=</samp> <samp>kODNULL)</samp> 
  284.              <samp>scopeFrameID</samp> <samp>=</samp> <samp>scopeFrame->GetStorageUnit</samp> <samp>(ev)->GetID</samp> <samp>(ev);</samp> 
  285.          <samp>su->CloneInto</samp> <samp>(ev,</samp> <samp>key,</samp> <samp>toSU,</samp> <samp>scopeFrameID);</samp> 
  286.      <samp>}</samp> 
  287. <p>
  288. <p>
  289. <hr>
  290.  
  291.    Figure 54. Part of CPP File Generated by Partmeister 
  292. </pre>
  293. </pre>
  294. <hr>
  295. <br><a href="2.9"><img src="/bookmgr/prev.gif" border=0 alt="[Prev Topic]"></a>
  296. <a href="2.9.2"><img src="/bookmgr/next.gif" border=0 alt="[Next Topic]"></a>
  297. <cite>  ⌐ Copyright IBM Corp. 1996</cite>
  298. <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>
  299. </BODY></HTML>
  300.