home *** CD-ROM | disk | FTP | other *** search
/ Point Programming 1 / PPROG1.ISO / c / fli106c / examples / elemedit.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-25  |  7.7 KB  |  304 lines

  1. //
  2. // The Fusion Library Interface for DOS
  3. // Version 1.02
  4. // Copyright (C) 1990, 1991
  5. // Software Dimensions
  6. //
  7. // Dialog Development System
  8. //
  9.  
  10. #include "fliwin.h"
  11. #include "elements.h"
  12. #include "mask.h"
  13. #include "dds.h"
  14. #include "colors.h"
  15.  
  16. #include <alloc.h>
  17. #include <string.h>
  18.  
  19. //-------------------------------------------------------------------------
  20. //
  21. // This edits an element (by selecting Manipulate|Size or Edit)
  22. //
  23. //-------------------------------------------------------------------------
  24.  
  25. void DialogWindow::EditElement(PieceHandler &Piece)
  26. {
  27.   MaskDialog *Mask=0;
  28.   CheckDialog *CheckMask=0;
  29.   PushDialog *PushMask=0;
  30.   GroupDialog *GroupMask=0;
  31.   RadioDialog *RadioMask=0;
  32.   PickDialog *PickMask=0;
  33.  
  34.     switch (Piece.LayOut)
  35.     {
  36.         case PieceHandler::Character:
  37.     case PieceHandler::Integer:
  38.     case PieceHandler::Long:
  39.     case PieceHandler::Float:
  40.     case PieceHandler::Double:
  41.     case PieceHandler::Bcd:
  42.       Mask=new MaskDialog(Piece.GroupCode,Piece.HelpId,Piece.ToBeDerived);
  43.  
  44.       if (Piece.LayOut==PieceHandler::Character)
  45.         Mask->CharacterActive=1;
  46.  
  47.       strcpy(Mask->ElementMask,Piece.Mask);
  48.       strcpy(Mask->VariableName,Piece.Variable);
  49.       strcpy(Mask->Prompter,Piece.Prompter);
  50.       strcpy(Mask->HotKeyDefine,Piece.HotKey);
  51.       strcpy(Mask->HelpLine,Piece.Help);
  52.       strcpy(Mask->DerivedClass,Piece.DerivedClass);
  53.  
  54.       if (Piece.LayOut==PieceHandler::Character)
  55.       {
  56.         Mask->MaskCharacter[0]=Piece.MaskCharacter;
  57.         Mask->MaskCharacter[1]=0;
  58.         Mask->MaskWidth=Piece.MaskWidth;
  59.         Mask->ScrollWidth=Piece.ScrollWidth;
  60.       }
  61.  
  62.       if (Mask->GetMask())
  63.         break;
  64.  
  65.       delete Mask;
  66.             return;
  67.  
  68.         case PieceHandler::Check:
  69.       CheckMask=new CheckDialog(Piece.GroupCode,Piece.HelpId,Piece.ToBeDerived);
  70.  
  71.       strcpy(CheckMask->CheckText,Piece.Text);
  72.       strcpy(CheckMask->HotKeyDefine,Piece.HotKey);
  73.       strcpy(CheckMask->VariableName,Piece.Variable);
  74.       strcpy(CheckMask->HelpLine,Piece.Help);
  75.       strcpy(CheckMask->DerivedClass,Piece.DerivedClass);
  76.  
  77.       if (CheckMask->GetCheck())
  78.       {
  79.         Piece.Width=strlen(CheckMask->CheckText)+2;
  80.         if (strchr(CheckMask->CheckText,'~'))
  81.           Piece.Width--;
  82.         break;
  83.       }
  84.  
  85.       delete CheckMask;
  86.             return;
  87.  
  88.         case PieceHandler::Push:
  89.       PushMask=new PushDialog(Piece.GroupCode,Piece.HelpId,Piece.ToBeDerived);
  90.  
  91.       strcpy(PushMask->PushText,Piece.Text);
  92.       strcpy(PushMask->Constant,Piece.Constant);
  93.       strcpy(PushMask->HotKeyDefine,Piece.HotKey);
  94.       strcpy(PushMask->HelpLine,Piece.Help);
  95.       strcpy(PushMask->DerivedClass,Piece.DerivedClass);
  96.  
  97.       if (PushMask->GetPush())
  98.       {
  99.         Piece.Width=strlen(PushMask->PushText)+2;
  100.         if (strchr(PushMask->PushText,'~'))
  101.           Piece.Width--;
  102.         break;
  103.       }
  104.  
  105.       delete PushMask;
  106.             return;
  107.  
  108.         case PieceHandler::GroupHeading:
  109.       GroupMask=new GroupDialog(Piece.GroupCode);
  110.  
  111.       strcpy(GroupMask->GroupText,Piece.Text);
  112.       strcpy(GroupMask->HotKeyDefine,Piece.HotKey);
  113.  
  114.       if (GroupMask->GetGroup())
  115.       {
  116.         Piece.Width=strlen(GroupMask->GroupText);
  117.         if (strchr(GroupMask->GroupText,'~'))
  118.           Piece.Width--;
  119.         break;
  120.       }
  121.  
  122.       delete GroupMask;
  123.             return;
  124.  
  125.     case PieceHandler::HRadio:
  126.     case PieceHandler::VRadio:
  127.       RadioMask=new RadioDialog(Piece.GroupCode,Piece.HelpId,Piece.ToBeDerived);
  128.       if (Piece.LayOut==PieceHandler::HRadio)
  129.         RadioMask->Enabled=1;
  130.  
  131.       for (int i=0;i<10;i++)
  132.         strcpy(RadioMask->RadioButtons[i],Piece.Elements[i]);
  133.  
  134.       strcpy(RadioMask->VariableName,Piece.Variable);
  135.       strcpy(RadioMask->Prompter,Piece.Prompter);
  136.       strcpy(RadioMask->HotKeyDefine,Piece.HotKey);
  137.       strcpy(RadioMask->HelpLine,Piece.Help);
  138.       strcpy(RadioMask->DerivedClass,Piece.DerivedClass);
  139.  
  140.       if (RadioMask->GetRadio())
  141.         break;
  142.  
  143.       delete RadioMask;
  144.             return;
  145.  
  146.     case PieceHandler::PickGeneric:
  147.       PickMask=new PickDialog(Piece.HelpId,Piece.Width-3,Piece.Height);
  148.  
  149.       strcpy(PickMask->Prompter,Piece.Prompter);
  150.       strcpy(PickMask->HotKeyDefine,Piece.HotKey);
  151.       strcpy(PickMask->HelpLine,Piece.Help);
  152.       strcpy(PickMask->DerivedClass,Piece.DerivedClass);
  153.  
  154.       if (PickMask->GetPick())
  155.         break;
  156.  
  157.       delete PickMask;
  158.             return;
  159.  
  160.     }
  161.  
  162.   if (Piece.LayOut==PieceHandler::HRadio)
  163.   {
  164.     for (int i=0,j=1;i<10;i++)
  165.     {
  166.       if (!RadioMask->RadioButtons[i][0])
  167.         continue;
  168.       j+=(strlen(RadioMask->RadioButtons[i])+5);
  169.     }
  170.     Piece.Width=j;
  171.   }
  172.  
  173.   if (Piece.LayOut==PieceHandler::VRadio)
  174.   {
  175.     for (int i=0,j=0,k=0;i<10;i++)
  176.     {
  177.       if (!RadioMask->RadioButtons[i][0])
  178.         continue;
  179.       k++;
  180.       if ((strlen(RadioMask->RadioButtons[i])+6)>j)
  181.         j=strlen(RadioMask->RadioButtons[i])+6;
  182.     }
  183.     Piece.Height=k;
  184.     Piece.Width=j;
  185.   }
  186.  
  187.   if (Mask)
  188.   {
  189.  
  190.     strcpy(Piece.Mask,Mask->ElementMask);
  191.     strcpy(Piece.Variable,Mask->VariableName);
  192.     strcpy(Piece.Prompter,Mask->Prompter);
  193.     strcpy(Piece.HotKey,Mask->HotKeyDefine);
  194.     strcpy(Piece.Help,Mask->HelpLine);
  195.     strcpy(Piece.DerivedClass,Mask->DerivedClass);
  196.  
  197.     Piece.GroupCode=Mask->GroupingCode;
  198.     Piece.HelpId=Mask->HelpScreen;
  199.     Piece.ToBeDerived=Mask->SetForLiving;
  200.  
  201.     Piece.MaskCharacter=Mask->MaskCharacter[0];
  202.     Piece.MaskWidth=Mask->MaskWidth;
  203.     Piece.ScrollWidth=Mask->ScrollWidth;
  204.  
  205.     if (Piece.ScrollWidth)
  206.       Piece.Width=Piece.ScrollWidth+2;
  207.     else if (Piece.MaskWidth)
  208.       Piece.Width=Piece.MaskWidth;
  209.     else
  210.       Piece.Width=strlen(Piece.Mask);
  211.  
  212.     delete Mask;
  213.  
  214.   }
  215.  
  216.   if (CheckMask)
  217.   {
  218.  
  219.     strcpy(Piece.Text,CheckMask->CheckText);
  220.     strcpy(Piece.HotKey,CheckMask->HotKeyDefine);
  221.     strcpy(Piece.Variable,CheckMask->VariableName);
  222.     strcpy(Piece.Help,CheckMask->HelpLine);
  223.     strcpy(Piece.DerivedClass,CheckMask->DerivedClass);
  224.  
  225.     Piece.GroupCode=CheckMask->GroupingCode;
  226.     Piece.HelpId=CheckMask->HelpScreen;
  227.     Piece.ToBeDerived=CheckMask->SetForLiving;
  228.  
  229.     delete CheckMask;
  230.  
  231.   }
  232.  
  233.   if (PushMask)
  234.   {
  235.  
  236.     strcpy(Piece.Text,PushMask->PushText);
  237.     strcpy(Piece.Constant,PushMask->Constant);
  238.     strcpy(Piece.HotKey,PushMask->HotKeyDefine);
  239.     strcpy(Piece.Help,PushMask->HelpLine);
  240.     strcpy(Piece.DerivedClass,PushMask->DerivedClass);
  241.  
  242.     Piece.GroupCode=PushMask->GroupingCode;
  243.     Piece.HelpId=PushMask->HelpScreen;
  244.     Piece.ToBeDerived=PushMask->SetForLiving;
  245.  
  246.     delete PushMask;
  247.  
  248.   }
  249.  
  250.   if (GroupMask)
  251.   {
  252.  
  253.     strcpy(Piece.Text,GroupMask->GroupText);
  254.     strcpy(Piece.HotKey,GroupMask->HotKeyDefine);
  255.  
  256.     Piece.GroupCode=GroupMask->GroupingCode;
  257.  
  258.     delete GroupMask;
  259.  
  260.   }
  261.  
  262.   if (RadioMask)
  263.   {
  264.  
  265.     strcpy(Piece.Variable,RadioMask->VariableName);
  266.     strcpy(Piece.Prompter,RadioMask->Prompter);
  267.     strcpy(Piece.HotKey,RadioMask->HotKeyDefine);
  268.     strcpy(Piece.Help,RadioMask->HelpLine);
  269.     strcpy(Piece.DerivedClass,RadioMask->DerivedClass);
  270.  
  271.     Piece.GroupCode=RadioMask->GroupingCode;
  272.     Piece.HelpId=RadioMask->HelpScreen;
  273.     Piece.ToBeDerived=RadioMask->SetForLiving;
  274.  
  275.     for (int i=0;i<10;i++)
  276.       strcpy(Piece.Elements[i],RadioMask->RadioButtons[i]);
  277.  
  278.     delete RadioMask;
  279.  
  280.   }
  281.  
  282.   if (PickMask)
  283.   {
  284.  
  285.     strcpy(Piece.Prompter,PickMask->Prompter);
  286.     strcpy(Piece.HotKey,PickMask->HotKeyDefine);
  287.     strcpy(Piece.Help,PickMask->HelpLine);
  288.     strcpy(Piece.DerivedClass,PickMask->DerivedClass);
  289.  
  290.     Piece.HelpId=PickMask->HelpScreen;
  291.     Piece.ToBeDerived=1;
  292.  
  293.     Piece.Height=PickMask->Height;
  294.     Piece.Width=PickMask->Width+3;
  295.  
  296.     delete PickMask;
  297.  
  298.   }
  299.  
  300.   RemoveTheMenus();
  301.  
  302.   VirtualizedInterior();
  303. }
  304.