home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / pstn.zip / zip / WinMenu.cpp < prev    next >
C/C++ Source or Header  |  1995-09-07  |  36KB  |  947 lines

  1. /*******************************************************************************
  2. * FILE NAME: WinMenu.cpp                                                       *
  3. *                                                                              *
  4. * DESCRIPTION:                                                                 *
  5. *   Class implementation of the class:                                         *
  6. *     WinMenu                                                                  *
  7. * ---------------------------------------------------------------------------- *
  8. * Warning: This file was generated by the VisualAge C++ Visual Builder.        *
  9. * Modifications to this source file will be lost when the part is regenerated. *
  10. *******************************************************************************/
  11. #ifndef _HPOSITION_
  12. #include "HPosition.hpp"
  13. #endif
  14.  
  15. #ifndef _IFRAME_
  16. #include <iframe.hpp>
  17. #endif
  18.  
  19. #ifndef _IMCELCV_
  20. #include <imcelcv.hpp>
  21. #endif
  22.  
  23. #ifndef _IGROUPBX_
  24. #include <igroupbx.hpp>
  25. #endif
  26.  
  27. #ifndef _IPOINT_
  28. #include <ipoint.hpp>
  29. #endif
  30.  
  31. #ifndef _ISTATTXT_
  32. #include <istattxt.hpp>
  33. #endif
  34.  
  35. #ifndef _IENTRYFD_
  36. #include <ientryfd.hpp>
  37. #endif
  38.  
  39. #ifndef _ISETCV_
  40. #include <isetcv.hpp>
  41. #endif
  42.  
  43. #ifndef _IPUSHBUT_
  44. #include <ipushbut.hpp>
  45. #endif
  46.  
  47. #ifndef _INOTIFEV_
  48. #include <inotifev.hpp>
  49. #endif
  50.  
  51. #ifndef _IOBSERVR_
  52. #include <iobservr.hpp>
  53. #endif
  54.  
  55. #ifndef _ISTDNTFY_
  56. #include <istdntfy.hpp>
  57. #endif
  58.  
  59. #ifndef _WINMENU_
  60. #include "WinMenu.hpp"
  61. #endif
  62.  
  63. #ifndef _IVBDEFS_
  64. #include <ivbdefs.h>
  65. #endif
  66.  
  67. #ifndef _ITRACE_
  68. #include <itrace.hpp>
  69. #endif
  70.  
  71.  
  72. //*****************************************************************************
  73. // Class definition for WinMenuConn2
  74. //*****************************************************************************
  75. class WinMenuConn2 : public IObserver {
  76. public:
  77.    virtual  ~WinMenuConn2(){};
  78.  
  79.    //---------------------------------------------------------------------------
  80.    // public member functions
  81.    //---------------------------------------------------------------------------
  82.    void initialize(IEntryField * aSource, IVBVariablePart<HPosition> * aTarget)
  83.       {source = aSource; target = aTarget; aligning = false; };
  84.    void setSource()
  85.       {
  86.       if (aligning==false) {
  87.          IFUNCTRACE_DEVELOP();
  88.          ITRACE_DEVELOP(" firing connection : Pos1Lat(valueAsDouble) to Position1(latitude))");
  89.          ITRACE_DEVELOP(" setting source from target ");
  90.          aligning = true;
  91.          try {source->VBSETTEXTFROMVALUE(target->target().latitude());}
  92.          catch (IException& exc) {};
  93.          aligning = false;
  94.          }
  95.       };
  96.    void setTarget()
  97.       {
  98.       if (aligning==false) {
  99.          IFUNCTRACE_DEVELOP();
  100.          ITRACE_DEVELOP(" firing connection : Pos1Lat(valueAsDouble) to Position1(latitude))");
  101.          ITRACE_DEVELOP(" setting target from source ");
  102.          aligning = true;
  103.          try {target->target().setLatitude(source->VBDOUBLEVALUEFROMTEXT());}
  104.          catch (IException& exc) {};
  105.          aligning = false;
  106.          }
  107.       };
  108.  
  109. protected:
  110.    //---------------------------------------------------------------------------
  111.    // protected member functions
  112.    //---------------------------------------------------------------------------
  113.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  114.       {
  115.       if (anEvent.notificationId() == VBINITIALIZEID) setTarget();
  116.       if ((anEvent.notificationId() == IEntryField::textId) && (source == &anEvent.notifier()))
  117.          setTarget();  /* set target to source value */
  118.       else
  119.       if ((anEvent.notificationId() == HPosition::latitudeId) && (&target->target() == &anEvent.notifier()))
  120.          setSource();  /* set source to target value */
  121.       return(*this);
  122.       };
  123.  
  124. private:
  125.    //---------------------------------------------------------------------------
  126.    // private member data
  127.    //---------------------------------------------------------------------------
  128.    IEntryField * source;
  129.    IVBVariablePart<HPosition> * target;
  130.    Boolean aligning;
  131.  
  132.  
  133. };   //WinMenuConn2
  134.  
  135.  
  136. //*****************************************************************************
  137. // Class definition for WinMenuConn3
  138. //*****************************************************************************
  139. class WinMenuConn3 : public IObserver {
  140. public:
  141.    virtual  ~WinMenuConn3(){};
  142.  
  143.    //---------------------------------------------------------------------------
  144.    // public member functions
  145.    //---------------------------------------------------------------------------
  146.    void initialize(IEntryField * aSource, IVBVariablePart<HPosition> * aTarget)
  147.       {source = aSource; target = aTarget; aligning = false; };
  148.    void setSource()
  149.       {
  150.       if (aligning==false) {
  151.          IFUNCTRACE_DEVELOP();
  152.          ITRACE_DEVELOP(" firing connection : Pos1Lon(valueAsDouble) to Position1(longitude))");
  153.          ITRACE_DEVELOP(" setting source from target ");
  154.          aligning = true;
  155.          try {source->VBSETTEXTFROMVALUE(target->target().longitude());}
  156.          catch (IException& exc) {};
  157.          aligning = false;
  158.          }
  159.       };
  160.    void setTarget()
  161.       {
  162.       if (aligning==false) {
  163.          IFUNCTRACE_DEVELOP();
  164.          ITRACE_DEVELOP(" firing connection : Pos1Lon(valueAsDouble) to Position1(longitude))");
  165.          ITRACE_DEVELOP(" setting target from source ");
  166.          aligning = true;
  167.          try {target->target().setLongitude(source->VBDOUBLEVALUEFROMTEXT());}
  168.          catch (IException& exc) {};
  169.          aligning = false;
  170.          }
  171.       };
  172.  
  173. protected:
  174.    //---------------------------------------------------------------------------
  175.    // protected member functions
  176.    //---------------------------------------------------------------------------
  177.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  178.       {
  179.       if (anEvent.notificationId() == VBINITIALIZEID) setTarget();
  180.       if ((anEvent.notificationId() == IEntryField::textId) && (source == &anEvent.notifier()))
  181.          setTarget();  /* set target to source value */
  182.       else
  183.       if ((anEvent.notificationId() == HPosition::longitudeId) && (&target->target() == &anEvent.notifier()))
  184.          setSource();  /* set source to target value */
  185.       return(*this);
  186.       };
  187.  
  188. private:
  189.    //---------------------------------------------------------------------------
  190.    // private member data
  191.    //---------------------------------------------------------------------------
  192.    IEntryField * source;
  193.    IVBVariablePart<HPosition> * target;
  194.    Boolean aligning;
  195.  
  196.  
  197. };   //WinMenuConn3
  198.  
  199.  
  200. //*****************************************************************************
  201. // Class definition for WinMenuConn4
  202. //*****************************************************************************
  203. class WinMenuConn4 : public IObserver {
  204. public:
  205.    virtual  ~WinMenuConn4(){};
  206.  
  207.    //---------------------------------------------------------------------------
  208.    // public member functions
  209.    //---------------------------------------------------------------------------
  210.    void initialize(IEntryField * aSource, IVBVariablePart<HPosition> * aTarget)
  211.       {source = aSource; target = aTarget; aligning = false; };
  212.    void setSource()
  213.       {
  214.       if (aligning==false) {
  215.          IFUNCTRACE_DEVELOP();
  216.          ITRACE_DEVELOP(" firing connection : Pos2Lat(valueAsDouble) to Position2(latitude))");
  217.          ITRACE_DEVELOP(" setting source from target ");
  218.          aligning = true;
  219.          try {source->VBSETTEXTFROMVALUE(target->target().latitude());}
  220.          catch (IException& exc) {};
  221.          aligning = false;
  222.          }
  223.       };
  224.    void setTarget()
  225.       {
  226.       if (aligning==false) {
  227.          IFUNCTRACE_DEVELOP();
  228.          ITRACE_DEVELOP(" firing connection : Pos2Lat(valueAsDouble) to Position2(latitude))");
  229.          ITRACE_DEVELOP(" setting target from source ");
  230.          aligning = true;
  231.          try {target->target().setLatitude(source->VBDOUBLEVALUEFROMTEXT());}
  232.          catch (IException& exc) {};
  233.          aligning = false;
  234.          }
  235.       };
  236.  
  237. protected:
  238.    //---------------------------------------------------------------------------
  239.    // protected member functions
  240.    //---------------------------------------------------------------------------
  241.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  242.       {
  243.       if (anEvent.notificationId() == VBINITIALIZEID) setTarget();
  244.       if ((anEvent.notificationId() == IEntryField::textId) && (source == &anEvent.notifier()))
  245.          setTarget();  /* set target to source value */
  246.       else
  247.       if ((anEvent.notificationId() == HPosition::latitudeId) && (&target->target() == &anEvent.notifier()))
  248.          setSource();  /* set source to target value */
  249.       return(*this);
  250.       };
  251.  
  252. private:
  253.    //---------------------------------------------------------------------------
  254.    // private member data
  255.    //---------------------------------------------------------------------------
  256.    IEntryField * source;
  257.    IVBVariablePart<HPosition> * target;
  258.    Boolean aligning;
  259.  
  260.  
  261. };   //WinMenuConn4
  262.  
  263.  
  264. //*****************************************************************************
  265. // Class definition for WinMenuConn5
  266. //*****************************************************************************
  267. class WinMenuConn5 : public IObserver {
  268. public:
  269.    virtual  ~WinMenuConn5(){};
  270.  
  271.    //---------------------------------------------------------------------------
  272.    // public member functions
  273.    //---------------------------------------------------------------------------
  274.    void initialize(IEntryField * aSource, IVBVariablePart<HPosition> * aTarget)
  275.       {source = aSource; target = aTarget; aligning = false; };
  276.    void setSource()
  277.       {
  278.       if (aligning==false) {
  279.          IFUNCTRACE_DEVELOP();
  280.          ITRACE_DEVELOP(" firing connection : Pos2Lon(valueAsDouble) to Position2(longitude))");
  281.          ITRACE_DEVELOP(" setting source from target ");
  282.          aligning = true;
  283.          try {source->VBSETTEXTFROMVALUE(target->target().longitude());}
  284.          catch (IException& exc) {};
  285.          aligning = false;
  286.          }
  287.       };
  288.    void setTarget()
  289.       {
  290.       if (aligning==false) {
  291.          IFUNCTRACE_DEVELOP();
  292.          ITRACE_DEVELOP(" firing connection : Pos2Lon(valueAsDouble) to Position2(longitude))");
  293.          ITRACE_DEVELOP(" setting target from source ");
  294.          aligning = true;
  295.          try {target->target().setLongitude(source->VBDOUBLEVALUEFROMTEXT());}
  296.          catch (IException& exc) {};
  297.          aligning = false;
  298.          }
  299.       };
  300.  
  301. protected:
  302.    //---------------------------------------------------------------------------
  303.    // protected member functions
  304.    //---------------------------------------------------------------------------
  305.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  306.       {
  307.       if (anEvent.notificationId() == VBINITIALIZEID) setTarget();
  308.       if ((anEvent.notificationId() == IEntryField::textId) && (source == &anEvent.notifier()))
  309.          setTarget();  /* set target to source value */
  310.       else
  311.       if ((anEvent.notificationId() == HPosition::longitudeId) && (&target->target() == &anEvent.notifier()))
  312.          setSource();  /* set source to target value */
  313.       return(*this);
  314.       };
  315.  
  316. private:
  317.    //---------------------------------------------------------------------------
  318.    // private member data
  319.    //---------------------------------------------------------------------------
  320.    IEntryField * source;
  321.    IVBVariablePart<HPosition> * target;
  322.    Boolean aligning;
  323.  
  324.  
  325. };   //WinMenuConn5
  326.  
  327.  
  328. //*****************************************************************************
  329. // Class definition for WinMenuConn17
  330. //*****************************************************************************
  331. class WinMenuConn17 : public IObserver, public IStandardNotifier {
  332. public:
  333.    virtual  ~WinMenuConn17(){};
  334.  
  335.    //---------------------------------------------------------------------------
  336.    // public member functions
  337.    //---------------------------------------------------------------------------
  338.    void initialize(IPushButton * aSource, IFrameWindow * aTarget)
  339.       {source = aSource; target = aTarget; enableNotification(); };
  340.  
  341. protected:
  342.    //---------------------------------------------------------------------------
  343.    // protected member functions
  344.    //---------------------------------------------------------------------------
  345.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  346.       {
  347.       if (anEvent.notificationId() == IPushButton::buttonClickId)
  348.          {
  349.          IFUNCTRACE_DEVELOP();
  350.          ITRACE_DEVELOP(" firing connection : PBQuit(buttonClickEvent) to TestWindow(close))");
  351.          try {target->close();}
  352.          catch (IException& exc) {};
  353.          }
  354.       return(*this);
  355.       };
  356.  
  357. private:
  358.    //---------------------------------------------------------------------------
  359.    // private member data
  360.    //---------------------------------------------------------------------------
  361.    IPushButton * source;
  362.    IFrameWindow * target;
  363.  
  364.  
  365. };   //WinMenuConn17
  366.  
  367.  
  368. //*****************************************************************************
  369. // Class definition for WinMenuConn6
  370. //*****************************************************************************
  371. class WinMenuConn6 : public IObserver, public IStandardNotifier {
  372. public:
  373.    virtual  ~WinMenuConn6(){};
  374.  
  375.    //---------------------------------------------------------------------------
  376.    // public member functions
  377.    //---------------------------------------------------------------------------
  378.    void initialize(IPushButton * aSource, IVBVariablePart<HPosition> * aTarget)
  379.       {source = aSource; target = aTarget; enableNotification(); };
  380.    WinMenuConn6 & setPos(IVBVariablePart<HPosition> * aSelf) {iPos = aSelf; return *this;};
  381.    double actionResult() const { return iActionResult; };
  382.    WinMenuConn6 & setActionResult(double aSelf) {
  383.       iActionResult = aSelf;
  384.       notifyObservers(INotificationEvent(actionResultId, *this));
  385.       return *this;
  386.       };
  387.  
  388.    //---------------------------------------------------------------------------
  389.    // public member data
  390.    //---------------------------------------------------------------------------
  391.    static const INotificationId actionResultId;
  392.  
  393. protected:
  394.    //---------------------------------------------------------------------------
  395.    // protected member functions
  396.    //---------------------------------------------------------------------------
  397.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  398.       {
  399.       if (anEvent.notificationId() == IPushButton::buttonClickId)
  400.          {
  401.          IFUNCTRACE_DEVELOP();
  402.          ITRACE_DEVELOP(" firing connection : PBCalculate(buttonClickEvent) to Position1(headingTo))");
  403.          try {setActionResult(target->target().headingTo(iPos->target()));}
  404.          catch (IException& exc) {};
  405.          }
  406.       return(*this);
  407.       };
  408.  
  409. private:
  410.    //---------------------------------------------------------------------------
  411.    // private member data
  412.    //---------------------------------------------------------------------------
  413.    IPushButton * source;
  414.    IVBVariablePart<HPosition> * target;
  415.    IVBVariablePart<HPosition> * iPos;
  416.    double iActionResult;
  417.  
  418.  
  419. };   //WinMenuConn6
  420.  
  421. const INotificationId WinMenuConn6::actionResultId = "WinMenuConn6::actionResult";
  422.  
  423. //*****************************************************************************
  424. // Class definition for WinMenuConn9
  425. //*****************************************************************************
  426. class WinMenuConn9 : public IObserver, public IStandardNotifier {
  427. public:
  428.    virtual  ~WinMenuConn9(){};
  429.  
  430.    //---------------------------------------------------------------------------
  431.    // public member functions
  432.    //---------------------------------------------------------------------------
  433.    void initialize(WinMenuConn6 * aSource, IEntryField * aTarget)
  434.       {source = aSource; target = aTarget; aligning = false; };
  435.    void setSource()
  436.       {      };
  437.    void setTarget()
  438.       {
  439.       if (aligning==false) {
  440.          IFUNCTRACE_DEVELOP();
  441.          ITRACE_DEVELOP(" firing connection : Conn6(actionResult) to HeadResult(valueAsDouble))");
  442.          ITRACE_DEVELOP(" setting target from source ");
  443.          aligning = true;
  444.          try {target->VBSETTEXTFROMVALUE(source->actionResult());}
  445.          catch (IException& exc) {};
  446.          aligning = false;
  447.          }
  448.       };
  449.  
  450. protected:
  451.    //---------------------------------------------------------------------------
  452.    // protected member functions
  453.    //---------------------------------------------------------------------------
  454.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  455.       {
  456.       if (anEvent.notificationId() == VBINITIALIZEID) setTarget();
  457.       if ((anEvent.notificationId() == WinMenuConn6::actionResultId) && (source == &anEvent.notifier()))
  458.          setTarget();  /* set target to source value */
  459.       else
  460.       if ((anEvent.notificationId() == IEntryField::textId) && (target == &anEvent.notifier()))
  461.          setSource();  /* set source to target value */
  462.       return(*this);
  463.       };
  464.  
  465. private:
  466.    //---------------------------------------------------------------------------
  467.    // private member data
  468.    //---------------------------------------------------------------------------
  469.    WinMenuConn6 * source;
  470.    IEntryField * target;
  471.    Boolean aligning;
  472.  
  473.  
  474. };   //WinMenuConn9
  475.  
  476.  
  477. //*****************************************************************************
  478. // Class definition for WinMenuConn18
  479. //*****************************************************************************
  480. class WinMenuConn18 : public IObserver, public IStandardNotifier {
  481. public:
  482.    virtual  ~WinMenuConn18(){};
  483.  
  484.    //---------------------------------------------------------------------------
  485.    // public member functions
  486.    //---------------------------------------------------------------------------
  487.    void initialize(IPushButton * aSource, IVBVariablePart<HPosition> * aTarget)
  488.       {source = aSource; target = aTarget; enableNotification(); };
  489.    WinMenuConn18 & setPos(IVBVariablePart<HPosition> * aSelf) {iPos = aSelf; return *this;};
  490.    double actionResult() const { return iActionResult; };
  491.    WinMenuConn18 & setActionResult(double aSelf) {
  492.       iActionResult = aSelf;
  493.       notifyObservers(INotificationEvent(actionResultId, *this));
  494.       return *this;
  495.       };
  496.  
  497.    //---------------------------------------------------------------------------
  498.    // public member data
  499.    //---------------------------------------------------------------------------
  500.    static const INotificationId actionResultId;
  501.  
  502. protected:
  503.    //---------------------------------------------------------------------------
  504.    // protected member functions
  505.    //---------------------------------------------------------------------------
  506.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  507.       {
  508.       if (anEvent.notificationId() == IPushButton::buttonClickId)
  509.          {
  510.          IFUNCTRACE_DEVELOP();
  511.          ITRACE_DEVELOP(" firing connection : PBCalculate(buttonClickEvent) to Position1(distanceTo))");
  512.          try {setActionResult(target->target().distanceTo(iPos->target()));}
  513.          catch (IException& exc) {};
  514.          }
  515.       return(*this);
  516.       };
  517.  
  518. private:
  519.    //---------------------------------------------------------------------------
  520.    // private member data
  521.    //---------------------------------------------------------------------------
  522.    IPushButton * source;
  523.    IVBVariablePart<HPosition> * target;
  524.    IVBVariablePart<HPosition> * iPos;
  525.    double iActionResult;
  526.  
  527.  
  528. };   //WinMenuConn18
  529.  
  530. const INotificationId WinMenuConn18::actionResultId = "WinMenuConn18::actionResult";
  531.  
  532. //*****************************************************************************
  533. // Class definition for WinMenuConn10
  534. //*****************************************************************************
  535. class WinMenuConn10 : public IObserver, public IStandardNotifier {
  536. public:
  537.    virtual  ~WinMenuConn10(){};
  538.  
  539.    //---------------------------------------------------------------------------
  540.    // public member functions
  541.    //---------------------------------------------------------------------------
  542.    void initialize(WinMenuConn18 * aSource, IEntryField * aTarget)
  543.       {source = aSource; target = aTarget; aligning = false; };
  544.    void setSource()
  545.       {      };
  546.    void setTarget()
  547.       {
  548.       if (aligning==false) {
  549.          IFUNCTRACE_DEVELOP();
  550.          ITRACE_DEVELOP(" firing connection : Conn18(actionResult) to DistResult(valueAsDouble))");
  551.          ITRACE_DEVELOP(" setting target from source ");
  552.          aligning = true;
  553.          try {target->VBSETTEXTFROMVALUE(source->actionResult());}
  554.          catch (IException& exc) {};
  555.          aligning = false;
  556.          }
  557.       };
  558.  
  559. protected:
  560.    //---------------------------------------------------------------------------
  561.    // protected member functions
  562.    //---------------------------------------------------------------------------
  563.    IObserver & dispatchNotificationEvent(const INotificationEvent & anEvent)
  564.       {
  565.       if (anEvent.notificationId() == VBINITIALIZEID) setTarget();
  566.       if ((anEvent.notificationId() == WinMenuConn18::actionResultId) && (source == &anEvent.notifier()))
  567.          setTarget();  /* set target to source value */
  568.       else
  569.       if ((anEvent.notificationId() == IEntryField::textId) && (target == &anEvent.notifier()))
  570.          setSource();  /* set source to target value */
  571.       return(*this);
  572.       };
  573.  
  574. private:
  575.    //---------------------------------------------------------------------------
  576.    // private member data
  577.    //---------------------------------------------------------------------------
  578.    WinMenuConn18 * source;
  579.    IEntryField * target;
  580.    Boolean aligning;
  581.  
  582.  
  583. };   //WinMenuConn10
  584.  
  585.  
  586. #pragma export (WinMenu::readyId)
  587. const INotificationId WinMenu::readyId = "WinMenu::readyId";
  588. //------------------------------------------------------------------------------
  589. // WinMenu :: defaultFramingSpec
  590. //------------------------------------------------------------------------------
  591. #pragma export (WinMenu::defaultFramingSpec())
  592. const IRectangle WinMenu::defaultFramingSpec()
  593. {
  594.    return(IRectangle(IPoint(158, IWindow::desktopWindow()->size().height()-61-470),ISize(285, 470)));
  595. }
  596.  
  597.  
  598. //------------------------------------------------------------------------------
  599. // WinMenu :: defaultTitle
  600. //------------------------------------------------------------------------------
  601. #pragma export (WinMenu::defaultTitle())
  602. IString WinMenu::defaultTitle()
  603. {
  604.    return("Positions Utility");
  605. }
  606.  
  607.  
  608. //------------------------------------------------------------------------------
  609. // WinMenu :: WinMenu
  610. //------------------------------------------------------------------------------
  611. #pragma export (WinMenu::WinMenu(unsigned long, IWindow *, IWindow *, const IRectangle &, const IFrameWindow::Style &, const char *))
  612. WinMenu::WinMenu(
  613.       unsigned long id, 
  614.       IWindow * parent, 
  615.       IWindow * owner, 
  616.       const IRectangle & rect, 
  617.       const IFrameWindow::Style & style, 
  618.       const char * title)
  619.    : IFrameWindow(id, parent, owner, rect, style, title)
  620. {
  621.    iPosition1 = new IVBVariablePart<HPosition>();
  622.    iPosition2 = new IVBVariablePart<HPosition>();
  623.    iMultiCellCanvas1 = new IMultiCellCanvas(
  624.       IC_FRAME_CLIENT_ID, 
  625.       this, 
  626.       this, 
  627.       IRectangle());
  628.    iGroupBox1 = new IGroupBox(
  629.       id+WNDOFFSET_WinMenu_GroupBox1, 
  630.       iMultiCellCanvas1, 
  631.       iMultiCellCanvas1, 
  632.       IRectangle());
  633.    iStaticText1 = new IStaticText(
  634.       id+WNDOFFSET_WinMenu_StaticText1, 
  635.       iMultiCellCanvas1, 
  636.       iMultiCellCanvas1, 
  637.       IRectangle(), 
  638.       IStaticText::defaultStyle() | IControl::group);
  639.    iStaticText2 = new IStaticText(
  640.       id+WNDOFFSET_WinMenu_StaticText2, 
  641.       iMultiCellCanvas1, 
  642.       iMultiCellCanvas1, 
  643.       IRectangle());
  644.    iPos1Lat = new IEntryField(
  645.       id+WNDOFFSET_WinMenu_Pos1Lat, 
  646.       iMultiCellCanvas1, 
  647.       iMultiCellCanvas1, 
  648.       IRectangle(), 
  649.       IEntryField::defaultStyle() & ~IControl::group | IEntryField::autoTab | IControl::tabStop);
  650.    iPos1Lon = new IEntryField(
  651.       id+WNDOFFSET_WinMenu_Pos1Lon, 
  652.       iMultiCellCanvas1, 
  653.       iMultiCellCanvas1, 
  654.       IRectangle(), 
  655.       IEntryField::defaultStyle() & ~IControl::group & ~IControl::tabStop | IEntryField::autoTab);
  656.    iGroupBox2 = new IGroupBox(
  657.       id+WNDOFFSET_WinMenu_GroupBox2, 
  658.       iMultiCellCanvas1, 
  659.       iMultiCellCanvas1, 
  660.       IRectangle());
  661.    iStaticText3 = new IStaticText(
  662.       id+WNDOFFSET_WinMenu_StaticText3, 
  663.       iMultiCellCanvas1, 
  664.       iMultiCellCanvas1, 
  665.       IRectangle(), 
  666.       IStaticText::defaultStyle() | IControl::group);
  667.    iStaticText4 = new IStaticText(
  668.       id+WNDOFFSET_WinMenu_StaticText4, 
  669.       iMultiCellCanvas1, 
  670.       iMultiCellCanvas1, 
  671.       IRectangle());
  672.    iPos2Lat = new IEntryField(
  673.       id+WNDOFFSET_WinMenu_Pos2Lat, 
  674.       iMultiCellCanvas1, 
  675.       iMultiCellCanvas1, 
  676.       IRectangle(), 
  677.       IEntryField::defaultStyle() & ~IControl::group | IEntryField::autoTab | IControl::tabStop);
  678.    iPos2Lon = new IEntryField(
  679.       id+WNDOFFSET_WinMenu_Pos2Lon, 
  680.       iMultiCellCanvas1, 
  681.       iMultiCellCanvas1, 
  682.       IRectangle(), 
  683.       IEntryField::defaultStyle() & ~IControl::tabStop | IEntryField::autoTab);
  684.    iGroupBox3 = new IGroupBox(
  685.       id+WNDOFFSET_WinMenu_GroupBox3, 
  686.       iMultiCellCanvas1, 
  687.       iMultiCellCanvas1, 
  688.       IRectangle());
  689.    iStaticText5 = new IStaticText(
  690.       id+WNDOFFSET_WinMenu_StaticText5, 
  691.       iMultiCellCanvas1, 
  692.       iMultiCellCanvas1, 
  693.       IRectangle(), 
  694.       IStaticText::defaultStyle() | IControl::group);
  695.    iStaticText6 = new IStaticText(
  696.       id+WNDOFFSET_WinMenu_StaticText6, 
  697.       iMultiCellCanvas1, 
  698.       iMultiCellCanvas1, 
  699.       IRectangle());
  700.    iDistResult = new IEntryField(
  701.       id+WNDOFFSET_WinMenu_DistResult, 
  702.       iMultiCellCanvas1, 
  703.       iMultiCellCanvas1, 
  704.       IRectangle(), 
  705.       IEntryField::defaultStyle() | IEntryField::readOnly);
  706.    iHeadResult = new IEntryField(
  707.       id+WNDOFFSET_WinMenu_HeadResult, 
  708.       iMultiCellCanvas1, 
  709.       iMultiCellCanvas1, 
  710.       IRectangle(), 
  711.       IEntryField::defaultStyle() | IEntryField::readOnly);
  712.    iCVSButtons = new ISetCanvas(
  713.       id+WNDOFFSET_WinMenu_CVSButtons, 
  714.       iMultiCellCanvas1, 
  715.       iMultiCellCanvas1, 
  716.       IRectangle());
  717.    iPBCalculate = new IPushButton(
  718.       id+WNDOFFSET_WinMenu_PBCalculate, 
  719.       iCVSButtons, 
  720.       iCVSButtons, 
  721.       IRectangle(), 
  722.       IPushButton::defaultStyle() | IPushButton::defaultButton | IControl::group | IControl::tabStop);
  723.    iPBQuit = new IPushButton(
  724.       id+WNDOFFSET_WinMenu_PBQuit, 
  725.       iCVSButtons, 
  726.       iCVSButtons, 
  727.       IRectangle(), 
  728.       IPushButton::defaultStyle() & ~IControl::tabStop);
  729.  
  730.    conn2 = new WinMenuConn2();
  731.    conn3 = new WinMenuConn3();
  732.    conn4 = new WinMenuConn4();
  733.    conn5 = new WinMenuConn5();
  734.    conn17 = new WinMenuConn17();
  735.    conn6 = new WinMenuConn6();
  736.    conn9 = new WinMenuConn9();
  737.    conn18 = new WinMenuConn18();
  738.    conn10 = new WinMenuConn10();
  739.  
  740.    this->setFocus();
  741.    this->setClient(iMultiCellCanvas1);
  742.    iMultiCellCanvas1->addToCell(iGroupBox1, 2, 2, 5, 6);
  743.    iMultiCellCanvas1->addToCell(iStaticText1, 3, 4, 1, 1);
  744.    iMultiCellCanvas1->addToCell(iStaticText2, 3, 6, 1, 1);
  745.    iMultiCellCanvas1->addToCell(iPos1Lon, 5, 6, 1, 1);
  746.    iMultiCellCanvas1->addToCell(iPos1Lat, 5, 4, 1, 1);
  747.    iMultiCellCanvas1->addToCell(iGroupBox2, 2, 9, 5, 6);
  748.    iMultiCellCanvas1->addToCell(iStaticText3, 3, 11, 1, 1);
  749.    iMultiCellCanvas1->addToCell(iStaticText4, 3, 13, 1, 1);
  750.    iMultiCellCanvas1->addToCell(iPos2Lat, 5, 11, 1, 1);
  751.    iMultiCellCanvas1->addToCell(iPos2Lon, 5, 13, 1, 1);
  752.    iMultiCellCanvas1->addToCell(iGroupBox3, 2, 16, 5, 6);
  753.    iMultiCellCanvas1->addToCell(iStaticText5, 3, 18, 1, 1);
  754.    iMultiCellCanvas1->addToCell(iStaticText6, 3, 20, 1, 1);
  755.    iMultiCellCanvas1->addToCell(iDistResult, 5, 18, 1, 1);
  756.    iMultiCellCanvas1->addToCell(iHeadResult, 5, 20, 1, 1);
  757.    iMultiCellCanvas1->addToCell(iCVSButtons, 2, 23, 5, 1);
  758.    iMultiCellCanvas1->setColumnWidth(5, IMultiCellCanvas::defaultCell().width(), true);
  759.    iMultiCellCanvas1->setColumnWidth(7, IMultiCellCanvas::defaultCell().width(), false);
  760.    iMultiCellCanvas1->setRowHeight(22, IMultiCellCanvas::defaultCell().height(), true);
  761.    iMultiCellCanvas1->setRowHeight(24, IMultiCellCanvas::defaultCell().height(), false);
  762.    iGroupBox1->setText("Position 1");
  763.    iGroupBox1->setMinimumSize(ISize(123, 98));
  764.    iStaticText1->setAlignment(IStaticText::centerLeft);
  765.    iStaticText1->setText("Latitude");
  766.    iStaticText1->setMinimumSize(ISize(123, 23));
  767.    iStaticText2->setAlignment(IStaticText::centerLeft);
  768.    iStaticText2->setText("Longitude");
  769.    iStaticText2->setMinimumSize(ISize(123, 22));
  770.    iPos1Lat->setLimit(8);
  771.    iPos1Lat->setAlignment(IEntryField::center);
  772.    iPos1Lat->setMinimumSize(ISize(101, 28));
  773.    iPos1Lon->setLimit(8);
  774.    iPos1Lon->setAlignment(IEntryField::center);
  775.    iPos1Lon->setMinimumSize(ISize(101, 28));
  776.    iGroupBox2->setText("Position 2");
  777.    iGroupBox2->setMinimumSize(ISize(123, 98));
  778.    iStaticText3->setAlignment(IStaticText::centerLeft);
  779.    iStaticText3->setText("Latitude");
  780.    iStaticText3->setMinimumSize(ISize(123, 22));
  781.    iStaticText4->setAlignment(IStaticText::centerLeft);
  782.    iStaticText4->setText("Longitude");
  783.    iStaticText4->setMinimumSize(ISize(123, 22));
  784.    iPos2Lat->setLimit(8);
  785.    iPos2Lat->setAlignment(IEntryField::center);
  786.    iPos2Lat->setMinimumSize(ISize(101, 28));
  787.    iPos2Lon->setLimit(8);
  788.    iPos2Lon->setAlignment(IEntryField::center);
  789.    iPos2Lon->setMinimumSize(ISize(101, 28));
  790.    iGroupBox3->setText("Results");
  791.    iGroupBox3->setMinimumSize(ISize(123, 98));
  792.    iStaticText5->setAlignment(IStaticText::centerLeft);
  793.    iStaticText5->setText("Distance");
  794.    iStaticText5->setMinimumSize(ISize(123, 23));
  795.    iStaticText6->setAlignment(IStaticText::centerLeft);
  796.    iStaticText6->setText("Heading");
  797.    iStaticText6->setMinimumSize(ISize(123, 20));
  798.    iDistResult->setLimit(16);
  799.    iDistResult->setAlignment(IEntryField::center);
  800.    iDistResult->setMinimumSize(ISize(101, 28));
  801.    iHeadResult->setLimit(16);
  802.    iHeadResult->setAlignment(IEntryField::center);
  803.    iHeadResult->setMinimumSize(ISize(101, 28));
  804.    iCVSButtons->setAlignment(ISetCanvas::centerCenter);
  805.    iCVSButtons->setMinimumSize(ISize(123, 51));
  806.    iCVSButtons->setPackType(ISetCanvas::expanded);
  807.    iPBCalculate->setText("~Calculate");
  808.    iPBCalculate->setMinimumSize(ISize(102, 34));
  809.    iPBQuit->setText("~Quit");
  810.    iPBQuit->setMinimumSize(ISize(102, 34));
  811. }     //end constructor
  812.  
  813.  
  814. //------------------------------------------------------------------------------
  815. // WinMenu :: ~WinMenu
  816. //------------------------------------------------------------------------------
  817. #pragma export (WinMenu::~WinMenu())
  818. WinMenu::~WinMenu()
  819. {
  820.    conn2->stopHandlingNotificationsFor(*iPos1Lat);
  821.    conn2->stopHandlingNotificationsFor(*iPosition1);
  822.    conn3->stopHandlingNotificationsFor(*iPos1Lon);
  823.    conn3->stopHandlingNotificationsFor(*iPosition1);
  824.    conn4->stopHandlingNotificationsFor(*iPos2Lat);
  825.    conn4->stopHandlingNotificationsFor(*iPosition2);
  826.    conn5->stopHandlingNotificationsFor(*iPos2Lon);
  827.    conn5->stopHandlingNotificationsFor(*iPosition2);
  828.    conn17->stopHandlingNotificationsFor(*iPBQuit);
  829.    conn6->stopHandlingNotificationsFor(*iPBCalculate);
  830.    conn9->stopHandlingNotificationsFor(*conn6);
  831.    conn9->stopHandlingNotificationsFor(*iHeadResult);
  832.    conn18->stopHandlingNotificationsFor(*iPBCalculate);
  833.    conn10->stopHandlingNotificationsFor(*conn18);
  834.    conn10->stopHandlingNotificationsFor(*iDistResult);
  835.  
  836.    delete conn2;
  837.    delete conn3;
  838.    delete conn4;
  839.    delete conn5;
  840.    delete conn17;
  841.    delete conn6;
  842.    delete conn9;
  843.    delete conn18;
  844.    delete conn10;
  845.  
  846.  
  847.    delete iPosition1;
  848.    delete iPosition2;
  849.    delete iMultiCellCanvas1;
  850.    delete iGroupBox1;
  851.    delete iStaticText1;
  852.    delete iStaticText2;
  853.    delete iPos1Lat;
  854.    delete iPos1Lon;
  855.    delete iGroupBox2;
  856.    delete iStaticText3;
  857.    delete iStaticText4;
  858.    delete iPos2Lat;
  859.    delete iPos2Lon;
  860.    delete iGroupBox3;
  861.    delete iStaticText5;
  862.    delete iStaticText6;
  863.    delete iDistResult;
  864.    delete iHeadResult;
  865.    delete iCVSButtons;
  866.    delete iPBCalculate;
  867.    delete iPBQuit;
  868. }
  869.  
  870. //------------------------------------------------------------------------------
  871. // WinMenu :: initializePart
  872. //------------------------------------------------------------------------------
  873. #pragma export (WinMenu::initializePart())
  874. WinMenu & WinMenu::initializePart()
  875. {
  876.    makeConnections();
  877.    notifyObservers(INotificationEvent(readyId, *this));
  878.    return *this;
  879. }
  880.  
  881.  
  882. //------------------------------------------------------------------------------
  883. // WinMenu :: makeConnections
  884. //------------------------------------------------------------------------------
  885. #pragma export (WinMenu::makeConnections())
  886. Boolean WinMenu::makeConnections()
  887. {
  888.    iPosition1->enableNotification();
  889.    iPosition2->enableNotification();
  890.    this->enableNotification();
  891.    iMultiCellCanvas1->enableNotification();
  892.    iGroupBox1->enableNotification();
  893.    iStaticText1->enableNotification();
  894.    iStaticText2->enableNotification();
  895.    iPos1Lat->enableNotification();
  896.    iPos1Lon->enableNotification();
  897.    iGroupBox2->enableNotification();
  898.    iStaticText3->enableNotification();
  899.    iStaticText4->enableNotification();
  900.    iPos2Lat->enableNotification();
  901.    iPos2Lon->enableNotification();
  902.    iGroupBox3->enableNotification();
  903.    iStaticText5->enableNotification();
  904.    iStaticText6->enableNotification();
  905.    iDistResult->enableNotification();
  906.    iHeadResult->enableNotification();
  907.    iCVSButtons->enableNotification();
  908.    iPBCalculate->enableNotification();
  909.    iPBQuit->enableNotification();
  910.  
  911.    conn2->initialize(iPos1Lat, iPosition1);
  912.    conn2->handleNotificationsFor(*iPos1Lat);
  913.    conn2->handleNotificationsFor(*iPosition1);
  914.    conn3->initialize(iPos1Lon, iPosition1);
  915.    conn3->handleNotificationsFor(*iPos1Lon);
  916.    conn3->handleNotificationsFor(*iPosition1);
  917.    conn4->initialize(iPos2Lat, iPosition2);
  918.    conn4->handleNotificationsFor(*iPos2Lat);
  919.    conn4->handleNotificationsFor(*iPosition2);
  920.    conn5->initialize(iPos2Lon, iPosition2);
  921.    conn5->handleNotificationsFor(*iPos2Lon);
  922.    conn5->handleNotificationsFor(*iPosition2);
  923.    conn17->initialize(iPBQuit, this);
  924.    conn17->handleNotificationsFor(*iPBQuit);
  925.    conn6->initialize(iPBCalculate, iPosition1);
  926.    conn6->handleNotificationsFor(*iPBCalculate);
  927.    conn6->setPos(iPosition2);
  928.    conn9->initialize(conn6, iHeadResult);
  929.    conn9->handleNotificationsFor(*conn6);
  930.    conn9->handleNotificationsFor(*iHeadResult);
  931.    conn18->initialize(iPBCalculate, iPosition1);
  932.    conn18->handleNotificationsFor(*iPBCalculate);
  933.    conn18->setPos(iPosition2);
  934.    conn10->initialize(conn18, iDistResult);
  935.    conn10->handleNotificationsFor(*conn18);
  936.    conn10->handleNotificationsFor(*iDistResult);
  937.  
  938.    conn2->setTarget();
  939.    conn3->setTarget();
  940.    conn4->setTarget();
  941.    conn5->setTarget();
  942.    return true;
  943. }
  944.  
  945.  
  946.  
  947.