Esempio n. 1
0
void nuiComboBox::SetTree(nuiTreeNode* pTree)
{
  if (mpChoicesTree == pTree)
    return;
  
//  if (mpSelected)
//  {
//    mpSelected->Release();
//    nuiWidgetPtr pWidget = mpSelected->GetElement();
//    NGL_ASSERT(pWidget);
//    DelChild(pWidget);
//  }

//  if (mpOldSelected)
//    mpOldSelected->Release();

  if (mpChoicesTree)
    mpChoicesTree->Release();

  mpSelected = NULL;
  mpOldSelected = NULL;
  
  mpChoicesTree = pTree;
  if (mpChoicesTree)
    mpChoicesTree->Acquire();

  ReparentTree(mpChoicesTree);
  InvalidateLayout();
}
Esempio n. 2
0
void nuiComboBox::ReparentTree(nuiTreeNode* pTree)
{
  NGL_ASSERT(pTree);
  nuiWidgetPtr pWidget = pTree->GetElement();
  NGL_ASSERT(pWidget);

  pWidget->SetLayout(nuiRect(0.f,0.f, GetRect().GetWidth()-mHandleWidth, GetRect().GetHeight()));

  if (pWidget->GetParent() != this)
  {
    AddChild(pWidget);
    pWidget->InvalidateLayout();
  }

  if (GetSelectedWidget() == pWidget)
  {
    if (!pWidget->IsVisible())
      pWidget->SetVisible(true);
  }
  else 
  {
    if (pWidget->IsVisible())
      pWidget->SetVisible(false);
  }

  uint32 count = pTree->GetChildrenCount();
  for (uint32 i = 0; i < count; i++)
  {
    nuiTreeNode* pNode = dynamic_cast<nuiTreeNode*>(pTree->GetChild(i));
    NGL_ASSERT(pNode);
    ReparentTree(pNode);
  }
}
Esempio n. 3
0
void nuiComboBox::SetSelected(const nuiTreeNode* pSelection) 
{ 
//  if (pSelection)
//    pSelection->Acquire();
//  if (mpSelected)
//    mpSelected->Release();
  mpSelected = const_cast<nuiTreeNode*>(pSelection);
  ReparentTree(mpChoicesTree);
  
  SelectionChanged();
  InvalidateLayout();
}
Esempio n. 4
0
nuiPopupMenu::nuiPopupMenu(nuiWidget* pParent, nuiTreeNodePtr pTree, const nuiRect& rRect, bool OwnTree)
: nuiSimpleContainer(),
mPopupTreeSink(this),
mpSelectedNode(NULL),
mpNewSelectedNode(NULL),
mOwnTree(OwnTree),
mSelectionTimer(nglTime(TIMER_PERIOD)),
mScrollTimer(1.0f/15.0f),
mDelayTime(DELAY_TIME),
mpOldFocused(NULL)
{
  mTrashRemoval = false;
  SetObjectClass(_T("nuiPopupMenu"));
  nuiRect r = rRect;

  nuiTopLevel* pTop = NULL;
  if (pParent)
    pTop = pParent->GetTopLevel();
  if (pTop)
    pTop->AddChild(this);

  mpTree = pTree;
  mpTree->Acquire();
  ReparentTree(mpTree);
  mSelectedNodes.push_back(mpTree);
  mXdir = 1;
  mYdir = 1;
  if (pParent)
    pParent->LocalToGlobal(r);
  mInitialPos = r;

  mScrollUp = false;
  mPopupTreeSink.Connect(mScrollTimer.Tick, &nuiPopupMenu::OnScrollTimer);
  mPopupTreeSink.Connect(mSelectionTimer.Tick, &nuiPopupMenu::OnSelectionTimer);

  mScrolledFromKeyboard = false;
  mShowFirstNode = true;
  mWheelMoved = false;
  mFirstClick = false;

  //nuiTopLevel* pTopLevel = GetTopLevel();
  //if (pTopLevel)
  //mpOldFocused = pTopLevel->GetFocus();
  SetWantKeyboardFocus(true);
  Focus();
  //  Grab();
}
Esempio n. 5
0
nuiComboBox::nuiComboBox(nuiTreeNode* pChoicesTree, bool ownTree)
: nuiSimpleContainer(), 
  mpChoicesTree(pChoicesTree), 
  mpSelected(NULL), 
  mpOldSelected(NULL), 
  mHandleWidth(DEFAULT_HANDLE_WIDTH), 
  mHandleHeight(DEFAULT_HANDLE_HEIGHT),
  mHandleOffset(DEFAULT_HANDLE_OFFSET),
  mComboBoxEvents(this)
{
  SetObjectClass(_T("nuiComboBox"));

  if (mpChoicesTree)
    mpChoicesTree->Acquire();
  ReparentTree(mpChoicesTree);
  SetWantKeyboardFocus(true);
}
Esempio n. 6
0
void nuiPopupMenu::ReparentTree(nuiTreeNode* pTree)
{
  NGL_ASSERT(pTree);
  nuiWidgetPtr pWidget = pTree->GetElement();
  NGL_ASSERT(pWidget);
  AddChild(pWidget);
  if (mOwnTree)
    pTree->SetOwnElement(false);
  uint32 count = pTree->GetChildrenCount();
  for (uint32 i = 0; i < count; i++)
  {
    nuiTreeNode* pNode = dynamic_cast<nuiTreeNode*>(pTree->GetChild(i));
    NGL_ASSERT(pNode);
    ReparentTree(pNode);
  }
  NGL_ASSERT(mpTree);
  mPopupTreeSink.Connect(pTree->Changed, &nuiPopupMenu::OnTreeChanged);
  mPopupTreeSink.Connect(pTree->ChildAdded, &nuiPopupMenu::OnTreeChildAdded);
  mPopupTreeSink.Connect(pTree->ChildDeleted, &nuiPopupMenu::OnTreeChildDeleted);
}