예제 #1
0
bool nuiEventTargetBase::CallEvent(void* pTarget, nuiDelegateMemento pFunc, const nuiEvent& rEvent)
{
  Delegate del;
  del.SetMemento(pFunc);
  del(rEvent);
  return rEvent.IsCanceled();
}
예제 #2
0
bool nuiEventSource::SendEvent(const nuiEvent& rEvent)
{
  if (IsEnabled() && !mpTargets.empty())
  {
    rEvent.SetSource(this);
    std::vector<nuiEventTargetBase*> targets(mpTargets);
    std::vector<nuiEventTargetBase*>::const_iterator it = targets.begin();
    std::vector<nuiEventTargetBase*>::const_iterator end = targets.end();

    mEnumerating++;
    bool handled = false;
    while (it != end && !handled)
    {
      nuiEventTargetBase* pETB = *it;
      if (mGraveYard.find(pETB) == mGraveYard.end())
      {
        pETB->OnEvent(rEvent);
        handled = rEvent.IsCanceled();
      }
      ++it;
    }

    mEnumerating--;
    mGraveYard.clear();
    return handled;
  }

  return false;
}
예제 #3
0
void ProjectGenerator::OnTargetSelected(const nuiEvent& rEvent)
{
  nuiDialogSelectDirectory* pDialog = (nuiDialogSelectDirectory*)rEvent.mpUser;
  mProjectTargetPath = pDialog->GetSelectedDirectory();
  mpProjectTarget->SetText(mProjectTargetPath);
  
  nglPath path(mProjectTargetPath);
  
  OnTargetTextChanged(rEvent);
  if (!rEvent.IsCanceled())
  {
    rEvent.Cancel();
    return;
  }
  
  GetPreferences().SetString(PREFERENCES_PROJECTGENERATOR, _T("nuiTargetPath"), path.GetParent().GetPathName());  
}
예제 #4
0
bool nuiEventSource::SendEvent(const nuiEvent& rEvent)
{
  if (IsEnabled() && !mpTargets.empty())
  {
    rEvent.SetSource(this);
    std::vector<nuiEventTargetBase*> targets(mpTargets);
    std::vector<nuiEventTargetBase*>::const_iterator it = targets.begin();
    std::vector<nuiEventTargetBase*>::const_iterator end = targets.end();

    bool handled = false;
    while (it != end && !handled)
    {
      ((*it)->OnEvent(rEvent));
      handled = rEvent.IsCanceled();
      ++it;
    }

    return handled;
  }

  return false;
}