Exemplo n.º 1
0
void MkWindowBaseNode::LostFocus(void)
{
	if (IsDualForm())
	{
		SetFormState(MkWindowThemeFormData::eS_Back);
	}
}
void MkBodyFrameControlNode::_SetBodyFrame
(const MkHashStr& themeName, MkWindowThemeData::eComponentType componentType, const MkHashStr& customFormName,
 bool useShadow, eHangingType hangingType, const MkFloat2& clientSize)
{
	SetThemeName(themeName);

	if (componentType == MkWindowThemeData::eCT_CustomForm)
	{
		SetCustomForm(customFormName);
	}
	else
	{
		SetComponentType(componentType);
	}

	SetFormState(MkWindowThemeFormData::eS_Default);
	SetShadowUsage(useShadow);

	m_HangingType = hangingType;
	SetClientSize(clientSize);

	SetLocalDepth(0.1f); // title과 겹치는 것을 피하기 위해 0.1f만큼 뒤에 위치

	_ApplyHangingType();
}
Exemplo n.º 3
0
void MkWindowBaseNode::OnFocus(void)
{
	if (IsDualForm())
	{
		SetFormState(MkWindowThemeFormData::eS_Front);
	}
}
Exemplo n.º 4
0
void MkWindowBaseNode::SetEnable(bool enable)
{
	if (IsQuadForm())
	{
		bool oldEnable = GetEnable();
		if (oldEnable && (!enable)) // turn off
		{
			SetFormState(MkWindowThemeFormData::eS_Disable);
		}
		else if ((!oldEnable) && enable) // turn on
		{
			SetFormState(MkWindowThemeFormData::eS_Normal);
		}
	}

	m_Attribute.Assign(ePA_SNA_Enable, enable);
}
Exemplo n.º 5
0
void MkWindowThemedNode::SetComponentType(MkWindowThemeData::eComponentType componentType)
{
	if ((componentType != MkWindowThemeData::eCT_CustomForm) && (componentType != m_ComponentType))
	{
		m_ComponentType = componentType;
		m_UpdateCommand.Set(eUC_ThemeComponent);
		SetFormState(MkWindowThemeFormData::eS_Default); // component가 변경되면 form type도 변경이 일어날 수 있기 때문에 form state 초기화

		m_CustomFormName.Clear();
	}
}
Exemplo n.º 6
0
bool MkWindowThemedNode::SetCustomForm(const MkHashStr& customFormName)
{
	const MkWindowThemeFormData* formData = MK_STATIC_RES.GetWindowThemeSet().GetFormData(m_ThemeName, MkWindowThemeData::eCT_CustomForm, customFormName);
	bool ok = (formData != NULL);
	if (ok && (customFormName != m_CustomFormName))
	{
		m_ComponentType = MkWindowThemeData::eCT_CustomForm;
		m_CustomFormName = customFormName;
		m_UpdateCommand.Set(eUC_ThemeComponent);
		SetFormState(MkWindowThemeFormData::eS_Default); // component가 변경되면 form type도 변경이 일어날 수 있기 때문에 form state 초기화
	}
	return ok;
}
Exemplo n.º 7
0
void MkWindowThemedNode::LoadObject(const MkDataNode& node)
{
	MkVisualPatternNode::LoadObject(node);

	// theme name
	MkHashStr themeName;
	if (node.GetDataEx(ObjKey_ThemeName, themeName, 0) && (!themeName.Empty()))
	{
		SetThemeName(themeName);
	}

	// component
	MkHashStr componentBuffer;
	if (node.GetDataEx(ObjKey_ComponentType, componentBuffer, 0) && (!componentBuffer.Empty()))
	{
		SetComponentType(MkWindowThemeData::ConvertComponentNameToType(componentBuffer));
	}
	else if (node.GetDataEx(ObjKey_CustomFormName, componentBuffer, 0) && (!componentBuffer.Empty()))
	{
		SetComponentType(MkWindowThemeData::eCT_CustomForm);
		SetCustomForm(componentBuffer);
	}

	// shadow
	bool useShadow;
	if (node.GetData(ObjKey_UseShadow, useShadow, 0))
	{
		SetShadowUsage(useShadow);
	}

	// client size
	MkFloat2 clientSize;
	if (node.GetDataEx(ObjKey_ClientSize, clientSize, 0))
	{
		SetClientSize(clientSize);
	}

	// frame type
	MkHashStr frameTypeName;
	if (node.GetDataEx(ObjKey_FrameType, frameTypeName, 0) && (!frameTypeName.Empty()))
	{
		m_FrameType = MkWindowThemeData::ConvertFrameNameToType(frameTypeName);
	}

	// form state -> default
	SetFormState(MkWindowThemeFormData::eS_Default);
}
void MkCheckBoxControlNode::_SetCheckBox
(const MkHashStr& themeName, MkWindowThemeData::eFrameType frameType, const MkArray<MkHashStr>& textNode, const MkStr& caption, bool onCheck)
{
	m_FrameType = frameType;
	float frameSize = MK_STATIC_RES.GetWindowThemeSet().GetFrameSize(themeName, m_FrameType);

	// check box
	SetThemeName(themeName);
	SetComponentType(MkWindowThemeData::eCT_CheckBoxBtn);
	SetClientSize(MkFloat2(frameSize, frameSize));
	SetFormState(MkWindowThemeFormData::eS_Normal);

	// caption
	_SetCaption(textNode, caption);

	// on check
	_SetCheck(onCheck, false);
}
Exemplo n.º 9
0
void MkWindowBaseNode::UpdateCursorInput
(const MkInt2& position, const MkInt2& movement, bool cursorInside, eButtonState leftBS, eButtonState middleBS, eButtonState rightBS, int wheelDelta)
{
	if (cursorInside)
	{
		if (IsQuadForm())
		{
			switch (leftBS)
			{
			case eBS_None:
			case eBS_Released:
				SetFormState(MkWindowThemeFormData::eS_Focus);
				break;

			case eBS_Pushing:
			case eBS_Pressed:
			case eBS_DoubleClicked:
				SetFormState(MkWindowThemeFormData::eS_Pushing);
				break;
			}
		}

		if (!m_CursorInside)
		{
			StartNodeReportTypeEvent(ePA_SNE_CursorEntered, NULL);
		}

		switch (leftBS)
		{
		case eBS_Released:
			_StartCursorReport(ePA_SNE_CursorLBtnReleased, position);
			m_HoldingEventType = ePA_SNE_None;
			break;
		case eBS_Pressed:
			_StartCursorReport(ePA_SNE_CursorLBtnPressed, position);
			_StartHoldingCheck(ePA_SNE_CursorLBtnHold, position);
			break;
		case eBS_DoubleClicked:
			_StartCursorReport(ePA_SNE_CursorLBtnDBClicked, position);
			_StartHoldingCheck(ePA_SNE_CursorLBtnHold, position);
			break;
		}

		switch (middleBS)
		{
		case eBS_Released:
			_StartCursorReport(ePA_SNE_CursorMBtnReleased, position);
			m_HoldingEventType = ePA_SNE_None;
			break;
		case eBS_Pressed:
			_StartCursorReport(ePA_SNE_CursorMBtnPressed, position);
			_StartHoldingCheck(ePA_SNE_CursorMBtnHold, position);
			break;
		case eBS_DoubleClicked:
			_StartCursorReport(ePA_SNE_CursorMBtnDBClicked, position);
			_StartHoldingCheck(ePA_SNE_CursorMBtnHold, position);
			break;
		}

		switch (rightBS)
		{
		case eBS_Released:
			_StartCursorReport(ePA_SNE_CursorRBtnReleased, position);
			m_HoldingEventType = ePA_SNE_None;
			break;
		case eBS_Pressed:
			_StartCursorReport(ePA_SNE_CursorRBtnPressed, position);
			_StartHoldingCheck(ePA_SNE_CursorRBtnHold, position);
			break;
		case eBS_DoubleClicked:
			_StartCursorReport(ePA_SNE_CursorRBtnDBClicked, position);
			_StartHoldingCheck(ePA_SNE_CursorRBtnHold, position);
			break;
		}

		// holding check
		if ((m_HoldingEventType == ePA_SNE_CursorLBtnHold) || (m_HoldingEventType == ePA_SNE_CursorMBtnHold) || (m_HoldingEventType == ePA_SNE_CursorRBtnHold))
		{
			MkTimeState ts;
			MK_TIME_MGR.GetCurrentTimeState(ts);

			if (m_HoldingCounter.OnTick(ts))
			{
				_StartCursorReport(m_HoldingEventType, position);

				m_HoldingEventType = ePA_SNE_None;
			}
		}

		if (wheelDelta != 0)
		{
			MkDataNode arg;
			arg.CreateUnit(MkWindowBaseNode::ArgKey_WheelDelta, wheelDelta);
			StartNodeReportTypeEvent(ePA_SNE_WheelMoved, &arg);
		}
	}
	else
	{
		if (IsQuadForm())
		{
			SetFormState(MkWindowThemeFormData::eS_Normal);
		}

		StartNodeReportTypeEvent(ePA_SNE_CursorLeft, NULL);

		m_HoldingEventType = ePA_SNE_None;
	}

	m_CursorInside = cursorInside;
}
Exemplo n.º 10
0
void MkWindowBaseNode::Deactivate(void)
{
	SetFormState(MkWindowThemeFormData::eS_Default);
}