Beispiel #1
0
bool TreeNode::OnDoubleClick(int mouse_x, int mouse_y) {
	if (IsExpandable() && icon_label_->IsOver(mouse_x, mouse_y) == true) {
		bool _expanded = !IsExpanded();
		expand_button_->SetPressed(_expanded);
		SetExpanded(_expanded);
	}
	return (false);
}
HRESULT CXTPTaskPanelGroup::AccessibleDoDefaultAction(VARIANT varChild)
{
	SAFE_MANAGE_STATE(m_pModuleState);

	if (GetChildIndex(&varChild) != CHILDID_SELF)
		return E_INVALIDARG;

	SetExpanded(!IsExpanded());

	return S_OK;
}
Beispiel #3
0
bool TreeNode::OnKeyDown(uilepra::InputManager::KeyCode key_code) {
	Parent::OnKeyDown(key_code);

	switch(key_code) {
		case uilepra::InputManager::kInKbdLeft: {
			if (IsExpandable() && IsExpanded()) {
				expand_button_->SetPressed(false);
				SetExpanded(false);
			}
		} break;
		case uilepra::InputManager::kInKbdRight: {
			if (IsExpandable() && IsExpanded() == false) {
				expand_button_->SetPressed(true);
				SetExpanded(true);
			}
		} break;
		default: break;
	}
	return (false);
}
void CXTPReportGroupRow::OnDblClick(CPoint ptClicked)
{
	// do not expand if double clicked on the collapse bitmap - different action (one level only)
	if (!m_rcCollapse.PtInRect(ptClicked))
	{
		// otherwise expand on double click
		SetSelectedChilds();

		SetExpanded(!IsExpanded());

		UpdateSelectedChilds();
	}
	// process parent
	CXTPReportRow::OnDblClick(ptClicked);
}
void CXTPReportGroupRow::OnClick(CPoint ptClicked)
{
	// expand/collapse on single click at the collapse bitmap
	if (m_rcCollapse.PtInRect(ptClicked)
		&& m_rcCollapse.PtInRect(m_pControl->m_ptMouseDown))
	{
		BOOL bExp = IsExpanded();

		SetSelectedMostDeepChilds();
		SetExpanded(!bExp);
		UpdateSelectedMostDeepChilds();

		BOOL bControlKey = (GetKeyState(VK_CONTROL) < 0) || m_pControl->m_bControlKeyAlwaysOn;
		BOOL bShiftKey = (GetKeyState(VK_SHIFT) < 0);

		if ((bControlKey || bShiftKey) && bExp && m_pControl->m_bSelectionExcludeGroupRows)
			m_pControl->UnselectGroupRows();
	}
}
void CXTPReportGroupRow::OnClick(CPoint ptClicked)
{
	// expand/collapse on single click at the collapse bitmap
	if (    m_rcCollapse.PtInRect(m_pControl->m_mouseDownState.ptMouse)
		 &&  m_rcCollapse.PtInRect(ptClicked)
		 && !IsLockExpand())
	{
		BOOL bExpanded = IsExpanded();

		SetSelectedMostDeepChilds();
		SetExpanded(!bExpanded);
		UpdateSelectedMostDeepChilds();

		const BOOL bKeyControl = (::GetKeyState(VK_CONTROL) < 0) || m_pControl->m_bMultiSelectionMode;
		const BOOL bKeyShift   = (::GetKeyState(VK_SHIFT)   < 0);

		if ((bKeyControl || bKeyShift) && bExpanded && m_pControl->m_bSelectionExcludeGroupRows)
		{
			m_pControl->UnselectGroupRows();
		}
	}
}
void CXTPTaskPanelGroup::DoPropExchange(CXTPPropExchange* pPX)
{
	CXTPTaskPanelItem::DoPropExchange(pPX);

	BOOL bExpanded = IsExpanded();

	PX_Bool(pPX, _T("CaptionVisible"), m_bCaptionVisible, TRUE);
	PX_Bool(pPX, _T("Expandable"), m_bExpandable, TRUE);
	PX_Bool(pPX, _T("Expanded"), bExpanded, FALSE);
	PX_Bool(pPX, _T("Special"), m_bSpecial, FALSE);
	PX_Enum(pPX, _T("Layout"), m_itemLayout, xtpTaskItemLayoutDefault);
	PX_Rect(pPX, _T("MarginsInner"), m_rcMarginsInner, CXTPTaskPanelPaintManager::rectDefault);
	PX_Rect(pPX, _T("MarginsOuter"), m_rcMarginsOuter, CXTPTaskPanelPaintManager::rectDefault);
	PX_Size(pPX, _T("IconSize"), m_szItemIcon, CSize(0));

	if (pPX->IsLoading())
	{
		m_pItems->m_pPanel = m_pPanel;
		SetExpanded(bExpanded);
	}

	CXTPPropExchangeSection secItems(pPX->GetSection(_T("Items")));
	m_pItems->DoPropExchange(&secItems);
}
Beispiel #8
0
void CTreeCanvas::OnMouse( wxMouseEvent& event )
{
	if(wxGetApp().m_property_grid_validation)return;

	if(event.Entering()){
		SetFocus(); // so middle wheel works
	}

	if(event.LeftDown())
	{
		const CTreeButton* button = HitTest(event.GetPosition());

		if(button)
		{
			switch(button->type)
			{
			case ButtonTypePlus:
			case ButtonTypeMinus:
				SetExpanded(button->obj, button->type == 0);
				SetVirtualSize(GetRenderSize());
				this->Refresh();
				break;

			case ButtonTypeLabelBefore:
			case ButtonTypeLabel:
			default:
				OnLabelLeftDown(button->obj, event);
				clicked_object = button->obj;
				break;
			}
		}
		else
		{
			wxGetApp().m_marked_list->Clear(true);
		}

		m_button_down_point = event.GetPosition();
	}

	if(event.LeftUp())
	{
		if(m_dragging)
		{
			m_dragging = false;

			// find the object to drop on to
			const CTreeButton* button = HitTest(event.GetPosition());

			if(button == NULL || !wxGetApp().m_marked_list->ObjectMarked(button->obj)) // can only drop on to an item other than one of the items being dragged
			{
				// test drop possible
				bool drag_possible = true;

				HeeksObj* add_to = &wxGetApp();
				if(button && button->paste_into)add_to = button->paste_into;
				for(std::list<HeeksObj*>::iterator It = m_dragged_list.begin(); It != m_dragged_list.end(); It++)
				{
					HeeksObj* object = *It;

					if(!add_to->CanAdd(object) || !object->CanAddTo(add_to))
					{
						drag_possible = false;
						break;
					}
				}

				if(drag_possible)
				{
					wxGetApp().CreateUndoPoint();

					// cut the objects
					wxGetApp().Remove(m_dragged_list);

					// paste the objects
					for(std::list<HeeksObj*>::iterator It = m_dragged_list.begin(); It != m_dragged_list.end(); It++)
					{
						HeeksObj* object = *It;
						{
							if(object->OneOfAKind())
							{
								bool one_found = false;
								for(HeeksObj* child = add_to->GetFirstChild(); child; child = add_to->GetNextChild())
								{
									if(child->GetType() == object->GetType())
									{
										child->CopyFrom(object);
										one_found = true;
										break;
									}
								}
								if(!one_found)
								{
									add_to->Add(object, button ? button->paste_before : NULL);
								}
							}
							else
							{
								add_to->Add(object, button ? button->paste_before : NULL);
							}
						}
					}
					wxGetApp().Changed();
				}
				else
				{
					Refresh();
				}
			}
			else
			{
				Refresh();
			}
		}
		else
		{
			if(m_waiting_until_left_up)
			{
				wxGetApp().m_marked_list->Clear(false);
				wxGetApp().m_marked_list->Add(clicked_object, true);
			}
		}
		m_waiting_until_left_up = false;
	}

	if(event.RightDown())
	{
		const CTreeButton* button = HitTest(event.GetPosition());
		clicked_object = NULL;
		if(button && (button->type == ButtonTypeLabelBefore || button->type == ButtonTypeLabel))
		{
			clicked_object = button->obj;
			OnLabelRightDown(button->obj, event);
		}
	}

	if(event.RightUp())
	{
		// do a context menu
		MarkedObjectOneOfEach marked_object(0, clicked_object, 1, 0, NULL);
		if(m_dragging)
		{
			m_dragging = false;

			// find the object to drop on to
			const CTreeButton* button = HitTest(event.GetPosition());

			if(button == NULL || !wxGetApp().m_marked_list->ObjectMarked(button->obj)) // can only drop on to an item other than one of the items being dragged
			{
				// make a Move or Copy context menu
				HeeksObj* paste_into = NULL;
				HeeksObj* paste_before = NULL;
				if(button)
				{
					paste_into = button->paste_into;
					paste_before = button->paste_before;
				}
				wxGetApp().DoMoveOrCopyDropDownMenu(this, event.GetPosition(), &marked_object, paste_into, paste_before);
			}
			else
			{
				Refresh();
			}
		}
		else
		{
			// do a standard drop down menu
			wxGetApp().DoDropDownMenu(this, event.GetPosition(), &marked_object, true, false);
		}
	}

	if(event.Dragging())
	{
		if(event.LeftIsDown() || event.RightIsDown())
		{
			if(!m_dragging && (abs(m_button_down_point.x - event.GetX())>2 || abs(m_button_down_point.y - event.GetY())>2))
			{
				m_dragging = true;
				m_dragged_list = wxGetApp().m_marked_list->list();
			}
			if(m_dragging)
			{
				m_drag_position = CalcUnscrolledPosition(event.GetPosition());
				const CTreeButton* button = HitTest(event.GetPosition());
				m_drag_paste_rect = wxRect(0, 0, 0, 0);
				if(button && button->type == ButtonTypeLabelBefore)m_drag_paste_rect = button->rect;
				Refresh();
			}
		}
	}

	if(event.LeftDClick())
	{
		const CTreeButton* button = HitTest(event.GetPosition());
		if(button)
		{
			if(button->obj)
			{
				bool(*callback)(HeeksObj*) = NULL;
				button->obj->GetOnEdit(&callback);
				if(callback)
				{
					(*callback)(button->obj);
				}
			}
		}
	}

	event.Skip();
}
Beispiel #9
0
void TreeNode::SetExpanded(bool expanded) {
	ListControl* _list_control = (ListControl*)Parent::GetParentOfType(Parent::kListcontrol);
	if (_list_control != 0) {
		SetExpanded(expanded, _list_control);
	}
}
Beispiel #10
0
void TreeNode::OnExpandButtonUnclicked(Button* /*button*/) {
	SetExpanded(expand_button_->GetPressed());
}