void CFunctionsView::RefreshList() { m_pList->SetRedraw(false); m_pList->DeleteAllItems(); if(!m_context) return; if(m_biosDebugInfoProvider) { m_modules = m_biosDebugInfoProvider->GetModulesDebugInfo(); } else { m_modules.clear(); } bool groupingEnabled = m_modules.size() != 0; if(groupingEnabled) { InitializeModuleGrouper(); } else { m_pList->EnableGroupView(false); } for(auto itTag(m_context->m_Functions.GetTagsBegin()); itTag != m_context->m_Functions.GetTagsEnd(); itTag++) { LVITEM it; std::tstring sTag(string_cast<std::tstring>(itTag->second)); memset(&it, 0, sizeof(LVITEM)); it.pszText = const_cast<LPTSTR>(sTag.c_str()); it.lParam = itTag->first; it.mask = LVIF_PARAM | LVIF_TEXT; if(groupingEnabled) { it.iGroupId = GetFunctionGroupId(itTag->first); it.mask |= LVIF_GROUPID; } m_pList->InsertItem(it); } unsigned int nCount = m_pList->GetItemCount(); for(unsigned int i = 0; i < nCount; i++) { uint32 nAddress = m_pList->GetItemData(i); m_pList->SetItemText(i, 1, (_T("0x") + lexical_cast_hex<std::tstring>(nAddress, 8)).c_str()); } m_pList->SetRedraw(true); }
void Flot::EvalJoinPressures() { switch (SolveMode()) { case PBMODE: case SSMODE: { for (int j=0; j<NJoins(); j++) { double Pm=AtmosPress(IODatum_Term(j));//(j==0 ? PRqd : GetPBInputPressure(j)); SetPBJoinPressure(j, Pm, true, true); #if dbgFlwNode if (dbgEvalJoinPress(sTag())) dbgpln("EJP: %12.2f %s[%i]", Pm, sTag(), j ); #endif } } //MdlNode::EvalJoinPressures(); break; case DYNMODE: MN_Surge::EvalJoinPressures(); break; } };
void CCopyTagBlkDlg::BuildOtherUnitsList() { //const int PrevSelCnt = OtherUnitsList.GetSelCount(); OtherUnitsList.ResetContent(); CModelTypeListArray& List = TagTrees.GetList(); int i; int index = -1; while ((index=TagTrees.FindPartModelName(sModelClass(),index))>=0) { CModelTypeList* pTagList = List[index]; for (i=0; i<pTagList->GetSize(); i++) { if (iSrc!=ACB_Selected || _stricmp(sTag(), pTagList->GetTagAt(i))!=0) OtherUnitsList.AddString(pTagList->GetTagAt(i)); } } }
void CCopyTagBlkDlg::OnSelchangeCpyunit() { const int i = m_UnitsCombo.GetCurSel(); if (i>=0) { CString Txt; m_UnitsCombo.GetLBText(i, Txt); if (_stricmp((const char*)Txt, sTag())!=0) { sTag = (const char*)Txt; BuildTree(); BuildOtherUnitsList(); BuildPreviewList(); UpdateDescriptors(); } } }
int CCopyTagBlkDlg::BuildTreeSelList(CSVector& List, char* pRootTag/*=NULL*/) { int Cnt = m_CopyTree.CntSelected(m_CopyTree.GetRootItem()); if (Cnt>0) { const int SelCnt = Cnt; List.SetSize(SelCnt); Cnt = 0; Strng ss; if (pRootTag) ss = pRootTag; else ss = sTag(); ss += '.'; BldTreeSelList(/*TVI_ROOT*/m_CopyTree.GetRootItem(), ss(), Cnt, List); ASSERT(Cnt==SelCnt); return SelCnt; } return 0; }
flag CReport::DoReport() { ASSERT_ALWAYS(Opt==Excel, "Only Excel Report", __FILE__, __LINE__); char Buff[512]; int i,j,iMax,jMax; Strng s, sTag, WrkTag, WrkCnvTxt, Separ; ASSERT(pConv); Separ = "\t"; int aa,bb; iMax = (bVert ? lALen : lBLen); jMax = (bVert ? lBLen : lALen); DWORD dwSize = 0; void* pData = NULL; char* pDat; flag CheckCells = 0 /*kga temp; still TODO */|| (sIgnoreChars.Length()>0); if (CheckCells) { sprintf(Buff, "R%dC%d:R%dC%d", iStartRow+1, iStartCol+1, iStartRow+iMax, iStartCol+jMax); pConv->Request(Buff, &pData, &dwSize); //request for all cells if (dwSize) {//got data... pDat = (char*)pData; //...TODO... retain special cells } else { pConv->Release(); // and it should get deleted ReportError(17L, "Unable to get cell contents %s", Buff); return False; } } for (i=0; i<iMax; i++) { s = ""; for (j=0; j<jMax; j++) { if (j>0) s += Separ; aa = (bVert ? i : j); bb = (bVert ? j : i); if (ATags[aa].Length()==0 || BTags[bb].Length()==0) s += sBlank; else { sTag = ATags[aa]; sTag += '.'; sTag += BTags[bb]; TaggedObject::SplitTagCnv(sTag(), WrkTag, WrkCnvTxt); CXM_ObjectTag ObjTag(WrkTag(), TABOpt_AllInfoOnce); CXM_ObjectData ObjData; CXM_Route Route; if (pDdeExec->XReadTaggedItem(ObjTag, ObjData, Route)) { CPkDataItem * pItem = ObjData.FirstItem(); if (pItem->Value()->IsNAN()) s += sNan; else s += pItem->Value()->GetString("%i", "%g", pItem->CnvIndex(), WrkCnvTxt()); } else s += sBlank; } } s += "\r\n"; sprintf(Buff, "R%dC%d:R%dC%d", i+iStartRow+1, iStartCol+1, i+iStartRow+1, iStartCol+jMax); if (!pConv->Poke(CF_TEXT, Buff, (void*)s(), s.Length() + 1)) { pConv->Release(); // and it should get deleted ReportError(16L, "Unable to send row %d", i+iStartRow+1); if (CheckCells) delete pData; return False; } } if (CheckCells) delete pData; ReportError(0L, ""); return True; }
flag CCopyTagBlkDlg::BuildTree() { m_CopyTree.DeleteAllItems(); #if 1 if (sTag.Len()>0) { TV_INSERTSTRUCT Ins; Ins.hParent = TVI_ROOT; Ins.hInsertAfter = TVI_LAST;//TVI_SORT; Ins.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; Ins.item.state = 0; Ins.item.stateMask = 0; Ins.item.hItem = NULL; Ins.item.pszText = NULL; Ins.item.cchTextMax = 0; Ins.item.iImage = 0; Ins.item.iSelectedImage = 0; Ins.item.cChildren = 0; Ins.item.lParam = 0; CTagTree TT; TT.Build(sTag()); TT.PopulateTree(m_CopyTree, Ins, isParm, 0);//, ButtonFld); } #else int iLvl=0; const int MaxItems = 256; HTREEITEM hItem[MaxItems], hRoot=NULL; for (iLvl=0; iLvl<MaxItems; iLvl++) hItem[iLvl]=NULL; Strng Txt; int PrvLvl=0; for (int di = 0; (di < AW.NData); di++ ) { rAccNdData d = AW.Data[di]; // dbgpln("Fld %3i Typ:%-16s S:%i E:%i Lvl:%3i :%s", // di, tt_TypeString(d.iType), d.iStrtFld, d.iEndFld, d.iLvl, d.sSymOrTag()); ASSERT(d.iLvl<MaxItems); for (int i=PrvLvl+1; i<=d.iLvl; i++) hItem[i] = NULL; if (!IsLayout(d.iType) && !IsStructEnd(d.iType) && (!IsData(d.iType)/* || (d.fIsParam && !bBlocksOnly)*/)) { TV_INSERTSTRUCT Ins; Ins.hParent = TVI_ROOT; Ins.hInsertAfter = TVI_LAST; Ins.item.mask = TVIF_TEXT|TVIF_PARAM; Ins.item.state = 0; Ins.item.stateMask = 0; if (IsData(d.iType)) Txt.Set("%s (%s)", d.sSymOrTag(), d.sValue()); else Txt = d.sSymOrTag(); Ins.item.hItem = NULL; Ins.item.pszText = Txt(); Ins.item.cchTextMax = 0; Ins.item.iImage = 0; Ins.item.iSelectedImage = 0; Ins.item.cChildren = 0; Ins.item.lParam = MAKELPARAM((WORD)di, (WORD)0); if (d.iLvl>0) { int i = d.iLvl-1; while (i>0 && hItem[i]==NULL) i--; Ins.hParent = hItem[i]; hItem[d.iLvl] = m_CopyTree.InsertItem(&Ins); } else { hItem[d.iLvl] = m_CopyTree.InsertItem(&Ins); hRoot = hItem[d.iLvl]; } } PrvLvl = d.iLvl; } #endif if (m_CopyTree.GetRootItem()) m_CopyTree.Expand(m_CopyTree.GetRootItem(), TVM_EXPAND); return m_CopyTree.GetCount()>0; }
BOOL CCopyTagBlkDlg::OnInitDialog() { CDialog::OnInitDialog(); m_CopyTree.LoadImage(); LBlksList.SetCheckStyle(BS_CHECKBOX); //RBlksList.SetCheckStyle(BS_CHECKBOX); /*CRect WndRect; GetWindowRect(WndRect); //GetClientRect(ClntRect); GetDlgItem(IDC_CPYTREE)->GetWindowRect(SrcTreeRect); GetDlgItem(IDC_CPYLBLKSLIST)->GetWindowRect(DstDefRect); GetDlgItem(IDC_CPYOTHERLIST)->GetWindowRect(DstUnitRect); GetDlgItem(IDC_CPYUNIT)->GetWindowRect(SrcComboRect); const int xo = -(WndRect.left+GetSystemMetrics(SM_CXFIXEDFRAME)); const int yo = -(WndRect.top+GetSystemMetrics(SM_CYFIXEDFRAME)+GetSystemMetrics(SM_CYCAPTION)); SrcTreeRect.OffsetRect(xo, yo); DstDefRect.OffsetRect(xo, yo); DstUnitRect.OffsetRect(xo, yo); SrcComboRect.OffsetRect(xo, yo); DstUnitRect.left = DstDefRect.left; DstTreeRect = DstUnitRect; DstTreeRect.top = SrcTreeRect.top; SrcDefRect = SrcTreeRect; SrcDefRect.top = DstDefRect.top; SrcUnitRect = SrcDefRect; DstComboRect = SrcComboRect; DstComboRect.left = DstUnitRect.left; DstComboRect.right = DstComboRect.left + SrcComboRect.Width();*/ pTTC = new CCustomToolTipCtrl(this); pTTC->UpdateTipText("Show source preview", GetDlgItem(IDC_CPYMORE)); pTTC->UpdateTipText("Select all", GetDlgItem(IDC_CPYSELECTALL)); TagTrees.Rebuild(RQ_Tags); if (sTag.Len()>0 && sModelClass.Len()==0) { CXM_ObjectTag ObjTag(sTag(), TABOpt_Parms);//TABOpt_AllInfoOnce); CXM_ObjectData ObjData; CXM_Route Route; if (pEO->XReadTaggedItem(ObjTag, ObjData, Route)) { CPkDataItem * pItem = ObjData.FirstItem(); sModelClass = pItem->Class(); pTagObjClass pTagObj = TagObjClass::FindClassId(sModelClass()); if (pTagObj==NULL) pTagObj = TagObjClass::FindClassName(sModelClass()); if (pTagObj) sModelClass = pTagObj->ShortDesc(); } else sTag = ""; } iSrc = (sTag.Len()>0) ? ACB_Selected : ACB_Blocks; CModelTypeListArray& List = TagTrees.GetList(); for (int i=0; i<List.GetSize(); i++) if (List[i]->GetSize()>0) m_ModelCombo.AddString(List[i]->ModelName()); if (m_ModelCombo.GetCount()>0) { i = m_ModelCombo.FindStringExact(-1, sModelClass()); if (i<0) { i = 0; CString Txt; m_ModelCombo.GetLBText(i, Txt); sModelClass = (const char*)Txt; } m_ModelCombo.SetCurSel(i); } BuildUnitsList(); i = m_UnitsCombo.FindStringExact(-1, sTag()); if (i<0 || sTag.Len()==0) { i = 0; CString Txt; m_UnitsCombo.GetLBText(i, Txt); sTag = (const char*)Txt; } m_UnitsCombo.SetCurSel(i); BuildTree(); BuildOtherUnitsList(); UpdateDescriptors(); BuildBlockList(); CRect WinRect,Rect; GetWindowRect(&WinRect); GetDlgItem(IDC_CPYMORE)->GetWindowRect(&Rect); iWinMoreWidth = WinRect.right - Rect.right - 6; CProfINIFile PF(PrjIniFile()); bShowMore = (PF.RdInt("General", "DataXFer_ShowMore", 0)!=0); if (!bShowMore) { bShowMore = !bShowMore; OnMoreLess(); } UpdateDialogControls(this, FALSE); return TRUE; }
void CCopyTagBlkDlg::OnTransfer() { UpdateData(TRUE); const int SelCnt = OtherUnitsList.GetSelCount(); const int LBlkSelIndex = LBlksList.GetCurSel(); const int RBlkSelIndex = RBlksList.GetCurSel(); if ( (iSrc==ACB_Selected) && ( (iDst==ACB_Others && SelCnt>0) || (iDst==ACB_Blocks && RBlkSelIndex>=0) ) && (m_CopyTree.IsAnItemSelected(m_CopyTree.GetRootItem())) ) { CString Txt; CSVector TreeList; const int TreeSelCnt = BuildTreeSelList(TreeList); if (TreeSelCnt>0) { CCopyBlock CB(sModelClass(), pEO); CB.SetSrcTag(sTag()); ASSERT(iSrc==ACB_Selected); if (iDst==ACB_Others) { int* pSelItems = new int[SelCnt]; CSVector DstList(SelCnt); OtherUnitsList.GetSelItems(SelCnt, pSelItems); for (int i=0; i<SelCnt; i++) { OtherUnitsList.GetText(pSelItems[i], Txt); DstList[i] = (const char*)Txt; } CB.SetDstList(DstList); delete []pSelItems; } else if (iDst==ACB_Blocks) { RBlksList.GetText(RBlkSelIndex, Txt); CB.SetDstBlock((char*)(const char*)Txt, RBlksList.GetCheck(RBlkSelIndex)); } int Cnt = CB.WriteTagValues(TreeList); if (Cnt>0) { Cnt = CB.CopyTagBlocks(); if (iDst==ACB_Others) LogNote("BlockCopy", 0, "%d tag%s copied", Cnt, Cnt>0 ? "s" : ""); } } } else if ( (iSrc==ACB_Blocks) && (LBlkSelIndex>=0) && ( (iDst==ACB_Others && SelCnt>0) || (iDst==ACB_Blocks && RBlkSelIndex>=0) ) ) { CString LTxt; LBlksList.GetText(LBlkSelIndex, LTxt); CCopyBlock CB(sModelClass(), pEO); CB.SetSrcBlock((char*)(const char*)LTxt, LBlksList.GetCheck(LBlkSelIndex)); ASSERT(iSrc==ACB_Blocks); BOOL Valid = TRUE; if (iDst==ACB_Blocks) { CString RTxt; RBlksList.GetText(RBlkSelIndex, RTxt); if (LTxt==RTxt) Valid = FALSE; else CB.SetDstBlock((char*)(const char*)RTxt, RBlksList.GetCheck(RBlkSelIndex)); } else { CString Txt; int* pSelItems = new int[SelCnt]; CSVector DstList(SelCnt); OtherUnitsList.GetSelItems(SelCnt, pSelItems); for (int i=0; i<SelCnt; i++) { OtherUnitsList.GetText(pSelItems[i], Txt); DstList[i] = (const char*)Txt; } CB.SetDstList(DstList); delete []pSelItems; } if (Valid) { int Cnt = CB.CopyTagBlocks(); if (iDst==ACB_Others) LogNote("BlockCopy", 0, "%d tag%s copied", Cnt, Cnt>0 ? "s" : ""); } } /*AccDataBlk* pSrc = NULL; switch (iSrc) { case ACB_Selected: pSrc = CopyFromNode(); break; case ACB_Blocks: pSrc = pDefault;//CopyFromNode(); break; } if (pSrc) { switch (iDst) { case ACB_Selected: CopyToNode(pSrc); break; case ACB_Blocks: pDefault=pSrc;//CopyFromNode(); break; case ACB_Others: break; } }*/ }