예제 #1
0
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);
}
예제 #2
0
파일: FLOT.CPP 프로젝트: abcweizhuo/Test3
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;
    }
  };
예제 #3
0
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));
      }
    }
  }
예제 #4
0
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();
      }
    }
  }
예제 #5
0
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;
  }
예제 #6
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;
  }
예제 #7
0
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;
  }
예제 #8
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;
  }
예제 #9
0
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;
      }
    }*/
  }