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; };
/* *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; }; };