示例#1
0
int CGrfDoc::DeleteTags(bool WithPrompts)
  {
  Strng_List MyTags;
  GetTagList(MyTags);
  int nTags=MyTags.Length();
  int nTagsMultPgs=0;
  if (nTags>0)
    {
    CMap<LPTSTR, LPTSTR, Strng*, Strng*> MyTagMap;
    MyTagMap.InitHashTable(FindNextPrimeNumber(MyTags.Length()));
    for (Strng *pTag=MyTags.First(); pTag; pTag=MyTags.Next())
      {
      pTag->SetIndex(0);
      MyTagMap.SetAt(pTag->Str(), pTag);
      }

    for (int iTmpl=iGraphTemplate; iTmpl<=iVisioTemplate; iTmpl++)
      {
      if (ScdApp()->TemplateExists(iTmpl))
        {
        POSITION Pos = ScdApp()->Template(iTmpl).GetFirstDocPosition();
        while (Pos)
          {
          CGrfDoc* pOtherDoc = (CGrfDoc*)(ScdApp()->Template(iTmpl).GetNextDoc(Pos));
          if (pOtherDoc!=this)
            {
            Strng *pTag;
            Strng_List OtherTags;
            int NGrfTags = pOtherDoc->GetTagList(OtherTags);
            for (Strng *pOtherTag=OtherTags.First(); pOtherTag; pOtherTag=OtherTags.Next())
              if (MyTagMap.Lookup(pOtherTag->Str(), pTag))
                pTag->SetIndex(pTag->Index()+1);
            }
          }
        }
      }

    for (Strng *pTag=MyTags.First(); pTag; pTag=MyTags.Next())
      {
      if (pTag->Index()>0)
        nTagsMultPgs++;
      }

    int Ret=IDYES;
    if (WithPrompts)
      {
      CString S;
      if (nTagsMultPgs)
        S.Format("Do you want Delete %i Units (%i Units have Multiple References)", nTags-nTagsMultPgs, nTagsMultPgs);
      else
        S.Format("Do you want Delete %i Units", nTags);
      Ret=AfxMessageBox(S, MB_ICONQUESTION|MB_YESNOCANCEL);
      }
    if (Ret==IDCANCEL)
      return -1;
    if (Ret==IDYES)
      {
      Strng_List DelTags;
      int nMdlDeletes=0;
      int nDeletesFailedCnt=0;
      for (Strng *pTag=MyTags.First(); pTag; pTag=MyTags.Next())
        {
        if (pTag->Index()==0)
          {
          DelTags.Append(pTag->Str());
          }
        }

      int RetCode = gs_Exec.DeleteTags(DelTags);
      for (Strng *pTag=DelTags.First(); pTag; pTag=MyTags.Next())
        {
        if (pTag->Index()!=EODT_DONE)
          {
          //dbgpln("Mdl Not Deleted %s", pTag->Str());
          LogError(pTag->Str(), 0, "Model not deleted");
          nDeletesFailedCnt++;
          }
        else
          {
          //dbgpln("Mdl     Deleted %s", pTag->Str());
          nMdlDeletes++;
          }
        }
      if (nDeletesFailedCnt)
        {
        CString S;
        S.Format("%i Units Failed to Delete", nDeletesFailedCnt);
        AfxMessageBox(S, MB_ICONEXCLAMATION|MB_OK);
        }
      }
    }
  return nTags;
  };
示例#2
0
/*
*Function:QueryResponse
*Inputs:client object, command, transaction id
*Outputs:none
*Returns:none
*/
void Opc_client_hda::QueryResponse (QObject *p, const QString &, int id, QObject*caller)
{
    if(this != p) return;
    switch(id)
    {
    case tListUnits:
    {
        int n = GetConfigureDb()->GetNumberResults();
        if(n > 0)
        {
            for(int i = 0; i < n; i++,GetConfigureDb()->FetchNext())
            {
                QString unit_name = GetConfigureDb()->GetString("NAME");
                Opc_client_hda_Instance *p = new Opc_client_hda_Instance(this, unit_name, i);
                IDict::value_type pr(unit_name, p);
                Instances.insert(pr);
                p->Start(); // kick it off
            };
        };
    };
    break;
    case tcreateNewUnit:
    {
        if(GetConfigureDb()->GetNumberResults() == 0)
        {
            for(int i = 1 ; i <= n_opc_items; i++)
            {
                QString n;
                n.sprintf("%02d",i);
                QString spname = opc_unit_name+"Point"+n;
                //
                QString cmd =
                    QString("insert into SAMPLE values('") + spname +
                    QString("',' Point Number ")  + n + "','" + opc_unit_name +
                    QString("','"TYPE_M_ME_TC_1"','V',1,1,'") + n + "',0,0,0);";
                //
                GetConfigureDb()->DoExec(0,cmd,0); // post it off

                QStringList l;
                GetTagList(TYPE_M_ME_TC_1,l,"","");

                QString m;
                m.sprintf("%d",i);

                CreateSamplePoint(spname, l,"00:01:00 4 20 0");

                cmd = QString("update TAGS set IOA=");
                cmd += m;
                cmd += " where NAME='" + spname + "';";

                GetConfigureDb()->DoExec(0,cmd ,0);

                cmd = QString("update TAGS set UNIT='");
                cmd += opc_unit_name;
                cmd += "' where NAME='" + spname + "';";

                GetConfigureDb()->DoExec(0,cmd ,0);
            }
        }
    }
    break;
    default:
        break;
    };
};