home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / pOS_RKRM.lzx / pOS_RKRM / pPrefs / SerialPrefsLib_example / SerialPrefsGad.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  20.5 KB  |  674 lines

  1. #ifndef __INC_SERIALPREFSGAD_C
  2. #define __INC_SERIALPREFSGAD_C
  3. /*******************************************************************
  4.  $CRT 18 Oct 1996 : hp
  5.  
  6.  $AUT Holger Papajewski
  7.  $DAT >>SerialPrefsGad.c<<   31 Oct 1996    18:18:30 - (C) ProDAD
  8. *******************************************************************/
  9.  
  10. //##private
  11.  
  12. /***********************************************************
  13.   pOS programing example - Copyright (C) 1995-97 proDAD
  14.  
  15.   This code was written as an easy to understand example,
  16.   how to program pOS features. It is provided 'as-is',
  17.   without any express or implied warranty.
  18.  
  19.   Permission is hereby granted to use, copy and modify
  20.   this source code for any purpose, without fee, subject
  21.   to the following conditions:
  22.  
  23.     (1) This notice may not be removed or altered from any
  24.         source distribution.
  25.  
  26.     (2) Altered source versions must be plainly marked as
  27.         such, and must not be misrepresented as being
  28.         the original source code.
  29.  
  30.     (3) If only executable code is distributed, then the
  31.         accompanying documentation have to state that
  32.         "this software is based in part on examples of
  33.         the pOS developer packet".
  34.  
  35.     (4) Permission for use of this code is granted only
  36.         if the user accepts full responsibility for any
  37.         undesirable consequences. proDAD accept NO LIABILITY
  38.         for damages of any kind.
  39.  
  40.   ©proDAD
  41. ***********************************************************/
  42.  
  43. #include "ABC:hs/prog.h"
  44.  
  45. #include "p:pExec/Class.h"
  46. #include "p:pExec/Memory.h"
  47. #include "p:pDOS/DosBase.h"
  48. #include "p:pDOS/ArgTags.h"
  49. #include "p:pIntui/Tags.h"
  50. #include "p:pIntui/IObj.h"
  51. #include "p:pIntui/IClass.h"
  52. #include "p:pIntui/GClass.h"
  53. #include "p:pIntui/OClass.h"
  54. #include "p:pIntui/Tags.h"
  55. #include "p:pIntui/IntuMsg.h"
  56. #include "p:pIntui/FraClass.h"
  57. #include "p:pGadget/Gadget.h"
  58. #include "p:pGadget/PropGad.h"
  59. #include "p:pLayer/Rect.h"
  60. #include "p:pScreen/DrawInfo.h"
  61. #include "p:Device/IEvent.h"
  62. #include "p:pPrefs/PrefsTags.h"
  63. #include "p:pLocale/Catalog.h"
  64. #include "p:pLocale/LocTags.h"
  65. #include "p:proto/pLibExt.h"
  66. #include "p:proto/pExec2.h"
  67. #include "p:proto/pDOS2.h"
  68. #include "p:proto/pIntui2.h"
  69. #include "p:proto/pUtil2.h"
  70. #include "p:proto/pGFX2.h"
  71. #include "p:proto/pGadget2.h"
  72. #include "p:proto/pLocale2.h"
  73.  
  74.  
  75. #include "p://pOSPrg/SysCatalog/Sys_Cat.h"
  76.  
  77.  
  78.  
  79. #ifdef _____ME_____
  80.   #include "grund/inc_string.h"
  81.   #include "grund/inc_limits.h"
  82.   #include "grund/inc_stdio.h"
  83.   #include "grund/inc_stdlib.h"
  84. #else
  85.  #ifdef __cplusplus
  86.  extern "C" {
  87.  #endif
  88.   #include <string.h>
  89.   #include <limits.h>
  90.   #include <stdio.h>
  91.   #include <stdlib.h>
  92.  #ifdef __cplusplus
  93.  }
  94.  #endif
  95. #endif
  96.  
  97.  
  98.  
  99. #include "ABC:SerialPrefsGad.h"
  100.  
  101.  
  102.  
  103.  
  104. /*\
  105. *** ReadArgs-Template & Argumente
  106. \*/
  107. CHAR  gb_DosArgsTmpl[] = "BAUTRATE/K/N,BUFFER/K/N,PROTOCOL/K,PARITY/K,DATABITS/K,STOPBITS/K";
  108. CHAR *gb_DefSaveProto[] = {"XonXoff","RtsCts","None",NULL};
  109. CHAR *gb_DefSaveParit[] = {"None","Even","Odd","Bit1","Bit0",NULL};
  110.  
  111. /*----------------------------------
  112. Serial Prefs Load Funktion
  113. -----------------------------------*/
  114. BOOL SerialLoad_func(_R_A0 SerialData *obj,_R_A1 pOS_FileHandle *fh )
  115. {
  116.   BOOL Ret=FALSE;
  117.  
  118.   pOS_DosArgs *Args;
  119.   UWORD Cnt;
  120.   ULONG *Val;
  121.   ULONG Ops[6] = {9600,4096,(ULONG)"None",(ULONG)"None",(ULONG)"8",(ULONG)"1"};
  122.  
  123.  
  124.   if( Args = pOS_ReadDosArgs( gb_DosArgsTmpl,
  125.     Ops, sizeof(Ops)/sizeof(ULONG),
  126.     ARGTAG_Arguments,   (ULONG)"",
  127.     ARGTAG_FH,          (ULONG)fh,
  128.     ARGTAG_SearchLable, (ULONG)"SerialDefPrefs",
  129.     TAG_DONE )) {
  130.  
  131.     /* Bautrate */
  132.     if( Ops[0] ) {
  133.       Val=obj->sd_BautRates;
  134.       Cnt=0;
  135.       while( *Val && *Val < *((ULONG*)Ops[0])) { Cnt++; Val++; }
  136.       if( *Val )
  137.         pOS_SetGadgetAttrs(NULL,obj->sd_BautGad,PRGADTAG_Top,Cnt,TAG_DONE);
  138.     }
  139.  
  140.     /* Buffer */
  141.     if( Ops[1] ) {
  142.       Val=obj->sd_Buffers;
  143.       Cnt=0;
  144.       while( *Val && *Val < *((ULONG*)Ops[1])) { Cnt++; Val++; }
  145.       if( *Val )
  146.         pOS_SetGadgetAttrs(NULL,obj->sd_BufGad,PRGADTAG_Top,Cnt,TAG_DONE);
  147.     }
  148.  
  149.     /* Protocol */
  150.     if( Ops[2] ) {
  151.       Cnt=0;
  152.       while(gb_DefSaveProto[Cnt] && stricmp((CHAR*)Ops[2],gb_DefSaveProto[Cnt]))
  153.         Cnt++;
  154.       if( gb_DefSaveProto[Cnt] )
  155.         pOS_SetGadgetAttrs(NULL,obj->sd_ProtoGad,MXGADTAG_Active,Cnt,TAG_DONE);
  156.     }
  157.  
  158.     /* Parity */
  159.     if( Ops[3] ) {
  160.       Cnt=0;
  161.       while(gb_DefSaveParit[Cnt] && stricmp((CHAR*)Ops[3],gb_DefSaveParit[Cnt]))
  162.         Cnt++;
  163.       if( gb_DefSaveParit[Cnt] )
  164.         pOS_SetGadgetAttrs(NULL,obj->sd_ParityGad,MXGADTAG_Active,Cnt,TAG_DONE);
  165.     }
  166.  
  167.     /* DataBits */
  168.     if( Ops[4] ) {
  169.       Cnt=0;
  170.       while(obj->sd_DataBits[Cnt] && stricmp((CHAR*)Ops[4],obj->sd_DataBits[Cnt]))
  171.         Cnt++;
  172.       if( obj->sd_DataBits[Cnt] )
  173.         pOS_SetGadgetAttrs(NULL,obj->sd_DataBitGad,MXGADTAG_Active,Cnt,TAG_DONE);
  174.     }
  175.  
  176.     /* StopBits */
  177.     if( Ops[5] ) {
  178.       Cnt=0;
  179.       while(obj->sd_StopBits[Cnt] && stricmp((CHAR*)Ops[5],obj->sd_StopBits[Cnt]))
  180.         Cnt++;
  181.       if( obj->sd_StopBits[Cnt] )
  182.         pOS_SetGadgetAttrs(NULL,obj->sd_StopBitGad,MXGADTAG_Active,Cnt,TAG_DONE);
  183.     }
  184.  
  185.     Ret=TRUE;
  186.  
  187.     pOS_DeleteDosArgs( Args );
  188.   }
  189.  
  190.   return( Ret );
  191. }
  192.  
  193.  
  194. /*----------------------------------
  195. Serial Prefs Save Funktion
  196. -----------------------------------*/
  197. BOOL SerialSave_func(_R_A0 SerialData *obj,_R_A1 pOS_FileHandle *fh,
  198.                    _R_D0 ULONG flags )
  199. {
  200.   BOOL Ret = FALSE;
  201.   ULONG Val;
  202.  
  203.   ULONG Args[6];
  204.  
  205.   pOS_GetGadgetAttr(obj->sd_Window,obj->sd_BautGad,PRGADTAG_Top,&Val);
  206.   Args[0] = (ULONG)&obj->sd_BautRates[Val];
  207.  
  208.   pOS_GetGadgetAttr(obj->sd_Window,obj->sd_BufGad,PRGADTAG_Top,&Val);
  209.   Args[1] = (ULONG)&obj->sd_Buffers[Val];
  210.  
  211.   pOS_GetGadgetAttr(obj->sd_Window,obj->sd_ProtoGad,MXGADTAG_Active,&Val);
  212.   Args[2] = (ULONG)gb_DefSaveProto[Val];
  213.  
  214.   pOS_GetGadgetAttr(obj->sd_Window,obj->sd_ParityGad,MXGADTAG_Active,&Val);
  215.   Args[3] = (ULONG)gb_DefSaveParit[Val];
  216.  
  217.   pOS_GetGadgetAttr(obj->sd_Window,obj->sd_DataBitGad,MXGADTAG_Active,&Val);
  218.   Args[4] = (ULONG)obj->sd_DataBits[Val];
  219.  
  220.   pOS_GetGadgetAttr(obj->sd_Window,obj->sd_StopBitGad,MXGADTAG_Active,&Val);
  221.   Args[5] = (ULONG)obj->sd_StopBits[Val];
  222.  
  223.   pOS_TagItem TL[] = {  };
  224.  
  225.   Ret = pOS_WriteDosArgs( gb_DosArgsTmpl, Args,
  226.           sizeof(Args)/sizeof(ULONG), NULL,
  227.           ARGTAG_FH, (ULONG)fh,
  228.           ARGTAG_SearchLable, (ULONG)"SerialDefPrefs",
  229.           TAG_DONE);
  230.  
  231.   return( Ret );
  232. }
  233.  
  234.  
  235. /*----------------------------------
  236. Serial Prefs Reset Funktion
  237. -----------------------------------*/
  238. VOID SerialReset_func(_R_A0 SerialData *obj )
  239. {
  240.   pOS_SetGadgetAttrs(NULL,obj->sd_BautGad,PRGADTAG_Top,2,TAG_DONE);
  241.   pOS_SetGadgetAttrs(NULL,obj->sd_BufGad,PRGADTAG_Top,2,TAG_DONE);
  242.   pOS_SetGadgetAttrs(NULL,obj->sd_ProtoGad,MXGADTAG_Active,2,TAG_DONE);
  243.   pOS_SetGadgetAttrs(NULL,obj->sd_ParityGad,MXGADTAG_Active,0,TAG_DONE);
  244.   pOS_SetGadgetAttrs(NULL,obj->sd_DataBitGad,MXGADTAG_Active,1,TAG_DONE);
  245.   pOS_SetGadgetAttrs(NULL,obj->sd_StopBitGad,MXGADTAG_Active,0,TAG_DONE);
  246. }
  247.  
  248.  
  249.  
  250. /*----------------------------------
  251. -----------------------------------*/
  252. VOID InitSerialTags( SerialData *obj, const pOS_TagItem *tl )
  253. {
  254.   pOS_TagItem *ti;
  255.  
  256.   while( ti = pOS_NextTagItem( &tl )) {
  257.     switch( ti->ti_Tag ) {
  258. // -----
  259.       case PRFSERTAG_AvailBautRates:
  260.         obj->sd_BautRates = (ULONG*)ti->ti_Data;
  261.         break;
  262. // -----
  263.       case PRFSERTAG_AvailBufferSizes:
  264.         obj->sd_Buffers = (ULONG*)ti->ti_Data;
  265.         break;
  266. // -----
  267.       case PRFSERTAG_AvailProtocols:
  268.         obj->sd_Protocols = (CHAR**)ti->ti_Data;
  269.         break;
  270. // -----
  271.       case PRFSERTAG_AvailParities:
  272.         obj->sd_Parities = (CHAR**)ti->ti_Data;
  273.         break;
  274. // -----
  275.       case PRFSERTAG_AvailDataBits:
  276.         obj->sd_DataBits = (CHAR**)ti->ti_Data;
  277.         break;
  278. // -----
  279.       case PRFSERTAG_AvailStopBits:
  280.         obj->sd_StopBits = (CHAR**)ti->ti_Data;
  281.         break;
  282. // -----
  283.       default:
  284.         break;
  285.     }
  286.   }
  287. }
  288.  
  289.  
  290.  
  291. /*----------------------------------
  292. -----------------------------------*/
  293. VOID SetSerialTags( SerialData *obj, const pOS_TagItem *tl,
  294.                     pOS_Window *win )
  295. {
  296.   ww_w("SerialPrefsGad:SetSerialTags");
  297.   ww_rp(obj);
  298.   ww_rp(tl);
  299.   ww_end();
  300.  
  301.   pOS_TagItem  *ti;
  302.  
  303.   while( ti = pOS_NextTagItem( &tl )) {
  304.     switch( ti->ti_Tag ) {
  305.       PRFSERTAG_BautRate:
  306.         pOS_SetGadgetAttrs(win,obj->sd_BautGad,PRGADTAG_Top,ti->ti_Data);
  307.         break;
  308.  
  309.       PRFSERTAG_BufferSize:
  310.         pOS_SetGadgetAttrs(win,obj->sd_BufGad,PRGADTAG_Top,ti->ti_Data);
  311.         break;
  312.  
  313.       PRFSERTAG_Protocol:
  314.         pOS_SetGadgetAttrs(win,obj->sd_ProtoGad,MXGADTAG_Active,ti->ti_Data);
  315.         break;
  316.  
  317.       PRFSERTAG_Parity:
  318.         pOS_SetGadgetAttrs(win,obj->sd_ParityGad,MXGADTAG_Active,ti->ti_Data);
  319.         break;
  320.  
  321.       PRFSERTAG_DataBits:
  322.         pOS_SetGadgetAttrs(win,obj->sd_DataBitGad,MXGADTAG_Active,ti->ti_Data);
  323.         break;
  324.  
  325.       PRFSERTAG_StopBits:
  326.         pOS_SetGadgetAttrs(win,obj->sd_StopBitGad,MXGADTAG_Active,ti->ti_Data);
  327.         break;
  328.  
  329.       default:
  330.         break;
  331.     }
  332.   }
  333. }
  334.  
  335.  
  336.  
  337.  
  338. /*----------------------------------
  339. -----------------------------------*/
  340. ULONG GetSerialTags( SerialData *obj, ULONG id, ULONG *var )
  341. {
  342.   ww_w("SerialPrefsGad:GetSerialTags");
  343.   ww_rp(obj);
  344.   ww_endN(FALSE);
  345.  
  346.   ULONG ret=0;
  347.  
  348.   switch( id ) {
  349.     PRFSERTAG_BautRate:
  350.       ret=pOS_GetGadgetAttr(obj->sd_Window,obj->sd_BautGad,PRGADTAG_Top,var);
  351.       break;
  352.  
  353.     PRFSERTAG_BufferSize:
  354.       ret=pOS_GetGadgetAttr(obj->sd_Window,obj->sd_BufGad,PRGADTAG_Top,var);
  355.       break;
  356.  
  357.     PRFSERTAG_Protocol:
  358.       ret=pOS_GetGadgetAttr(obj->sd_Window,obj->sd_ProtoGad,MXGADTAG_Active,var);
  359.       break;
  360.  
  361.     PRFSERTAG_Parity:
  362.       ret=pOS_GetGadgetAttr(obj->sd_Window,obj->sd_ParityGad,MXGADTAG_Active,var);
  363.       break;
  364.  
  365.     PRFSERTAG_DataBits:
  366.       ret=pOS_GetGadgetAttr(obj->sd_Window,obj->sd_DataBitGad,MXGADTAG_Active,var);
  367.       break;
  368.  
  369.     PRFSERTAG_StopBits:
  370.       ret=pOS_GetGadgetAttr(obj->sd_Window,obj->sd_StopBitGad,MXGADTAG_Active,var);
  371.       break;
  372.  
  373.     default:
  374.       break;
  375.   }
  376.  
  377.   return( ret );
  378. }
  379.  
  380.  
  381. /*----------------------------------
  382. -----------------------------------*/
  383. ULONG SerialDispatcher( _R_LB pOS_ExecBase *exec,_R_A0 const pOS_Class *cl,
  384.                         _R_A1 SerialData *obj,_R_A2 pOS_GadgetMethod *mth)
  385. {
  386.   ULONG ret=0;
  387.  
  388.   switch( mth->imth_Method ) {
  389. // -----
  390.     case ICLMTH_New:
  391.       ret = pOS_DoAbsMethodA(cl,obj,(pOS_Method*)mth);
  392.       if( ret != pOS_CLASSERR ) {
  393.         const pOS_TagItem  *Tl =mth->imth_U.imth_New.imnw_Tags;
  394.         const pOS_DrawInfo *Dri=(pOS_DrawInfo*)pOS_FindTagData(ICLTAG_DrawInfo,Tl,NULL);
  395.  
  396.         ww_w("SerialPrefsGad:Dispatcher_New");
  397.         ww_rp(Dri);
  398.         ww_endN(pOS_CLASSERR);
  399.  
  400.         /* Zeiger auf ObjData in SpecialInfo merken */
  401.         pOS_Gadget *Gad=(pOS_Gadget*)pOS_GetObjectRootAdr(cl,obj);
  402.         Gad->gad_SpecialInfo = obj;
  403.         /* Zeiger auf Prefs-Funktionen merken */
  404.         obj->sd_Load_func = SerialLoad_func;
  405.         obj->sd_Save_func = SerialSave_func;
  406.         obj->sd_Reset_func= SerialReset_func;
  407.  
  408.         InitSerialTags( obj, Tl );
  409.         obj->sd_Catalog=pOS_OpenCatalog(NULL,"sys/sys.catalog",
  410.           LOCTAG_BuiltInLanguage,"english",TAG_DONE);
  411.  
  412.         UWORD   Cnt;
  413.         ULONG  *ul_Poi;
  414.         pOS_Gadget  *Grp1=NULL;
  415.         pOS_Gadget  *Grp2=NULL;
  416.         pOS_Gadget  *PropGrp=NULL;
  417.  
  418.         PropGrp = (pOS_Gadget*)pOS_NewIObject( NULL,
  419.           Dri->dri_Names[SCRNAM_GGroupClass], 0,
  420.           ICLTAG_DrawInfo, (ULONG)Dri, ICLTAG_Gwk, 1, TAG_DONE );
  421.  
  422.         if( ul_Poi = obj->sd_BautRates ) {
  423.           Cnt=0;
  424.           while( *ul_Poi ) { Cnt++; ul_Poi++; }
  425.  
  426.           obj->sd_BautGad = (pOS_Gadget*)pOS_NewIObject( NULL,
  427.             Dri->dri_Names[SCRNAM_GPropClass], 0,
  428.             ICLTAG_DrawInfo,      (ULONG)Dri,
  429.             ICLTAG_Gwk,           1,
  430.             ICLTAG_UpdateGadget,  TRUE,
  431.             ICLTAG_RelVerify,     TRUE,
  432.             ICLTAG_GadBorderType, GADBORTYP_Bevel1UpBox,
  433.             PRGADTAG_Flags,       PRGADF_FreeHoriz,
  434.             PRGADTAG_Total,       Cnt,
  435.             PRGADTAG_Visible,     1,
  436.             PRGADTAG_Top,         0,
  437.             PRGADTAG_IntArray,    obj->sd_BautRates,
  438.             PRGADTAG_CrtTxtObj,   TRUE,
  439.             PRGADTAG_Fmt,         (ULONG)"%ld",
  440.             TAG_DONE);
  441.  
  442.           pOS_SetGadgetAttrs( NULL,PropGrp,
  443.             GRPGADTAG_AddGadget, obj->sd_BautGad, TAG_DONE );
  444.         }
  445.  
  446.         if( ul_Poi = obj->sd_Buffers ) {
  447.           Cnt=0;
  448.           while( *ul_Poi ) { Cnt++; ul_Poi++; }
  449.  
  450.           obj->sd_BufGad = (pOS_Gadget*)pOS_NewIObject( NULL,
  451.             Dri->dri_Names[SCRNAM_GPropClass], 0,
  452.             ICLTAG_DrawInfo,      (ULONG)Dri,
  453.             ICLTAG_Gwk,           1,
  454.             ICLTAG_UpdateGadget,  TRUE,
  455.             ICLTAG_RelVerify,     TRUE,
  456.             ICLTAG_GadBorderType, GADBORTYP_Bevel1UpBox,
  457.             PRGADTAG_Flags,       PRGADF_FreeHoriz,
  458.             PRGADTAG_Total,       Cnt,
  459.             PRGADTAG_Visible,     1,
  460.             PRGADTAG_Top,         0,
  461.             PRGADTAG_IntArray,    obj->sd_Buffers,
  462.             PRGADTAG_CrtTxtObj,   TRUE,
  463.             PRGADTAG_Fmt,         (ULONG)"%ld",
  464.             TAG_DONE);
  465.  
  466.           pOS_SetGadgetAttrs( NULL,PropGrp,
  467.             GRPGADTAG_AddGadget, obj->sd_BufGad, TAG_DONE );
  468.         }
  469.  
  470.         if( obj->sd_Protocols ) {
  471.           obj->sd_ProtoGad = (pOS_Gadget*)pOS_NewIObject(NULL,
  472.             Dri->dri_Names[SCRNAM_GMXClass],0,
  473.             ICLTAG_DrawInfo,      (ULONG)Dri,
  474.             MXGADTAG_StrLabels,   (ULONG)obj->sd_Protocols,
  475.             TAG_DONE);
  476.         }
  477.  
  478.         if( obj->sd_Parities ) {
  479.           obj->sd_ParityGad = (pOS_Gadget*)pOS_NewIObject(NULL,
  480.             Dri->dri_Names[SCRNAM_GMXClass],0,
  481.             ICLTAG_DrawInfo,      (ULONG)Dri,
  482.             MXGADTAG_StrLabels,   (ULONG)obj->sd_Parities,
  483.             TAG_DONE);
  484.         }
  485.  
  486.         if( obj->sd_DataBits ) {
  487.           obj->sd_DataBitGad = (pOS_Gadget*)pOS_NewIObject(NULL,
  488.             Dri->dri_Names[SCRNAM_GMXClass],0,
  489.             ICLTAG_DrawInfo,      (ULONG)Dri,
  490.             MXGADTAG_StrLabels,   (ULONG)obj->sd_DataBits,
  491.             TAG_DONE);
  492.         }
  493.  
  494.         if( obj->sd_StopBits ) {
  495.           obj->sd_StopBitGad = (pOS_Gadget*)pOS_NewIObject(NULL,
  496.             Dri->dri_Names[SCRNAM_GMXClass],0,
  497.             ICLTAG_DrawInfo,      (ULONG)Dri,
  498.             MXGADTAG_StrLabels,   (ULONG)obj->sd_StopBits,
  499.             TAG_DONE);
  500.         }
  501.  
  502.  
  503.         Grp1 = (pOS_Gadget*)pOS_NewIObject( NULL,
  504.           Dri->dri_Names[SCRNAM_GGroupClass], 0,
  505.           ICLTAG_DrawInfo,      (ULONG)Dri,
  506.           GRPGADTAG_Horiz,      TRUE,
  507.           GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject( NULL,
  508.             Dri->dri_Names[SCRNAM_GGroupClass], 0,
  509.             ICLTAG_DrawInfo,      (ULONG)Dri,
  510.  
  511.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  512.               Dri->dri_Names[SCRNAM_GTxtBoxClass], 0,
  513.               ICLTAG_DrawInfo,      (ULONG)Dri,
  514.               ICLTAG_FrameType,     IFRACLTYP_OnlyBg,
  515.               ICLTAG_GadBorderType, GADBORTYP_None,
  516.               ICLTAG_RenderLayMode, IOBLAY_Right,
  517.               IOBJTAG_StaticString, (ULONG)pOS_GetCatalogStr(
  518.                 obj->sd_Catalog,MSG_Sys_BaudRate,"Baud Rate:"),
  519.               TAG_DONE),
  520.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  521.               Dri->dri_Names[SCRNAM_GTxtBoxClass], 0,
  522.               ICLTAG_DrawInfo,      (ULONG)Dri,
  523.               ICLTAG_FrameType,     IFRACLTYP_OnlyBg,
  524.               ICLTAG_GadBorderType, GADBORTYP_None,
  525.               ICLTAG_RenderLayMode, IOBLAY_Right,
  526.               IOBJTAG_StaticString, (ULONG)pOS_GetCatalogStr(
  527.                 obj->sd_Catalog,MSG_Sys_BufferSize,"Buffer Size:"),
  528.               TAG_DONE),
  529.             TAG_DONE),
  530.           GRPGADTAG_AddGadget,  (ULONG)PropGrp,
  531.           TAG_DONE);
  532.  
  533.         Grp2 = (pOS_Gadget*)pOS_NewIObject( NULL,
  534.           Dri->dri_Names[SCRNAM_GGroupClass], 0,
  535.           ICLTAG_DrawInfo,      (ULONG)Dri,
  536.           GRPGADTAG_Horiz,      TRUE,
  537.           GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject( NULL,
  538.             Dri->dri_Names[SCRNAM_GGroupClass], 0,
  539.             ICLTAG_DrawInfo,      (ULONG)Dri,
  540.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  541.               Dri->dri_Names[SCRNAM_GTxtBoxClass], 0,
  542.               ICLTAG_DrawInfo,      (ULONG)Dri,
  543.               ICLTAG_FrameType,     IFRACLTYP_OnlyBg,
  544.               ICLTAG_GadBorderType, GADBORTYP_None,
  545.               IOBJTAG_StaticString, (ULONG)pOS_GetCatalogStr(
  546.                 obj->sd_Catalog,MSG_Sys_Protocols,"Protocols"),
  547.               TAG_DONE),
  548.             GRPGADTAG_AddGadget,  (ULONG)obj->sd_ProtoGad,
  549.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  550.               "gadget.class", 0, ICLTAG_DrawInfo, Dri,
  551.               ICLTAG_Gwk, 5, TAG_DONE),
  552.             TAG_DONE),
  553.  
  554.  
  555.           GRPGADTAG_AddGadget,   (ULONG)pOS_NewIObject( NULL,
  556.               Dri->dri_Names[SCRNAM_GBarClass], 0,
  557.               ICLTAG_DrawInfo,  (ULONG)Dri, TAG_DONE ),
  558.  
  559.  
  560.           GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject( NULL,
  561.             Dri->dri_Names[SCRNAM_GGroupClass], 0,
  562.             ICLTAG_DrawInfo,      (ULONG)Dri,
  563.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  564.               Dri->dri_Names[SCRNAM_GTxtBoxClass], 0,
  565.               ICLTAG_DrawInfo,      (ULONG)Dri,
  566.               ICLTAG_FrameType,     IFRACLTYP_OnlyBg,
  567.               ICLTAG_GadBorderType, GADBORTYP_None,
  568.               IOBJTAG_StaticString, (ULONG)pOS_GetCatalogStr(
  569.                 obj->sd_Catalog,MSG_Sys_Parity,"Parity"),
  570.               TAG_DONE),
  571.             GRPGADTAG_AddGadget,  (ULONG)obj->sd_ParityGad,
  572.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  573.               "gadget.class", 0, ICLTAG_DrawInfo, Dri,
  574.               ICLTAG_Gwk, 5, TAG_DONE),
  575.             TAG_DONE),
  576.  
  577.  
  578.           GRPGADTAG_AddGadget,   (ULONG)pOS_NewIObject( NULL,
  579.               Dri->dri_Names[SCRNAM_GBarClass], 0,
  580.               ICLTAG_DrawInfo,  (ULONG)Dri, TAG_DONE ),
  581.  
  582.  
  583.           GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject( NULL,
  584.             Dri->dri_Names[SCRNAM_GGroupClass], 0,
  585.             ICLTAG_DrawInfo,      (ULONG)Dri,
  586.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  587.               Dri->dri_Names[SCRNAM_GTxtBoxClass], 0,
  588.               ICLTAG_DrawInfo,      (ULONG)Dri,
  589.               ICLTAG_FrameType,     IFRACLTYP_OnlyBg,
  590.               ICLTAG_GadBorderType, GADBORTYP_None,
  591.               IOBJTAG_StaticString, (ULONG)pOS_GetCatalogStr(
  592.                 obj->sd_Catalog,MSG_Sys_DataBits,"Data Bits"),
  593.               TAG_DONE),
  594.             GRPGADTAG_AddGadget,  (ULONG)obj->sd_DataBitGad,
  595.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  596.               "gadget.class", 0, ICLTAG_DrawInfo, Dri,
  597.               ICLTAG_Gwk, 5, TAG_DONE),
  598.             TAG_DONE),
  599.  
  600.  
  601.           GRPGADTAG_AddGadget,   (ULONG)pOS_NewIObject( NULL,
  602.               Dri->dri_Names[SCRNAM_GBarClass], 0,
  603.               ICLTAG_DrawInfo,  (ULONG)Dri, TAG_DONE ),
  604.  
  605.  
  606.           GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject( NULL,
  607.             Dri->dri_Names[SCRNAM_GGroupClass], 0,
  608.             ICLTAG_DrawInfo,      (ULONG)Dri,
  609.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  610.               Dri->dri_Names[SCRNAM_GTxtBoxClass], 0,
  611.               ICLTAG_DrawInfo,      (ULONG)Dri,
  612.               ICLTAG_FrameType,     IFRACLTYP_OnlyBg,
  613.               ICLTAG_GadBorderType, GADBORTYP_None,
  614.               IOBJTAG_StaticString, (ULONG)pOS_GetCatalogStr(
  615.                 obj->sd_Catalog,MSG_Sys_StopBits,"Stop Bits"),
  616.               TAG_DONE),
  617.             GRPGADTAG_AddGadget,  (ULONG)obj->sd_StopBitGad,
  618.             GRPGADTAG_AddGadget,  (ULONG)pOS_NewIObject(NULL,
  619.               "gadget.class", 0, ICLTAG_DrawInfo, Dri,
  620.               ICLTAG_Gwk, 5, TAG_DONE),
  621.             TAG_DONE),
  622.  
  623.           TAG_DONE);
  624.  
  625.         pOS_SetAbsObjectData(cl,obj,
  626.           ICLTAG_DrawInfo,      (ULONG)Dri,
  627.           GRPGADTAG_AddGadget,  (ULONG)Grp1,
  628.           GRPGADTAG_AddGadget,  (ULONG)Grp2,
  629.           TAG_DONE);
  630.  
  631.         SetSerialTags( obj, Tl, NULL);
  632.       }
  633.       break;
  634. // -----
  635.     case ICLMTH_Dispose:
  636.       pOS_CloseCatalog( obj->sd_Catalog );
  637.       ret = pOS_DoAbsMethodA( cl, obj, (pOS_Method*)mth );
  638.       break;
  639. // -----
  640.     case GCLMTH_Add:
  641.       obj->sd_Window = mth->imth_U.imth_Add.imad_Info->ici_Window;
  642.       ret = pOS_DoAbsMethodA( cl, obj, (pOS_Method*)mth );
  643.       break;
  644.  
  645. // -----
  646.     case GCLMTH_Rem:
  647.       obj->sd_Window = NULL;
  648.       ret = pOS_DoAbsMethodA( cl, obj, (pOS_Method*)mth );
  649.       break;
  650. // -----
  651.     case ICLMTH_Set:
  652.       SetSerialTags(obj,mth->imth_U.imth_Set.imst_Tags,
  653.         mth->imth_U.imth_Set.imst_Info ?
  654.         mth->imth_U.imth_Set.imst_Info->ici_Window : NULL );
  655.       ret = pOS_DoAbsMethodA(cl,obj,(pOS_Method*)mth);
  656.       break;
  657. // -----
  658.     case ICLMTH_Get:
  659.       ret = GetSerialTags(obj,mth->imth_U.imth_Get.imgt_ID,
  660.         mth->imth_U.imth_Get.imgt_Variable );
  661.       if( !ret ) ret = pOS_DoAbsMethodA(cl,obj,(pOS_Method*)mth);
  662.       break;
  663. // -----
  664.     default:
  665.       ret = pOS_DoAbsMethodA(cl,obj,(pOS_Method*)mth);
  666.       break;
  667.  
  668.   }
  669.  
  670.   return(ret);
  671. }
  672.  
  673. #endif
  674.