mirror of
https://github.com/dhewm/dhewm3.git
synced 2024-11-30 16:11:11 +00:00
161 lines
3.7 KiB
C++
161 lines
3.7 KiB
C++
// PropTreeItemCheck.cpp : implementation file
|
|
//
|
|
// Copyright (C) 1998-2001 Scott Ramsay
|
|
// sramsay@gonavi.com
|
|
// http://www.gonavi.com
|
|
//
|
|
// This material is provided "as is", with absolutely no warranty expressed
|
|
// or implied. Any use is at your own risk.
|
|
//
|
|
// Permission to use or copy this software for any purpose is hereby granted
|
|
// without fee, provided the above notices are retained on all copies.
|
|
// Permission to modify the code and to distribute modified code is granted,
|
|
// provided the above notices are retained, and a notice that the code was
|
|
// modified is included with the above copyright notice.
|
|
//
|
|
// If you use this code, drop me an email. I'd like to know if you find the code
|
|
// useful.
|
|
|
|
//#include "stdafx.h"
|
|
#include "../../../idlib/precompiled.h"
|
|
#pragma hdrstop
|
|
|
|
#include "proptree.h"
|
|
#include "PropTreeItemCheck.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
#define CHECK_BOX_SIZE 14
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropTreeItemCheck
|
|
|
|
CPropTreeItemCheck::CPropTreeItemCheck()
|
|
{
|
|
checkState = 0;
|
|
}
|
|
|
|
CPropTreeItemCheck::~CPropTreeItemCheck()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPropTreeItemCheck, CButton)
|
|
//{{AFX_MSG_MAP(CPropTreeItemCheck)
|
|
//}}AFX_MSG_MAP
|
|
ON_CONTROL_REFLECT(BN_KILLFOCUS, OnBnKillfocus)
|
|
ON_CONTROL_REFLECT(BN_CLICKED, OnBnClicked)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropTreeItemCheck message handlers
|
|
|
|
void CPropTreeItemCheck::DrawAttribute(CDC* pDC, const RECT& rc)
|
|
{
|
|
ASSERT(m_pProp!=NULL);
|
|
|
|
// verify the window has been created
|
|
if (!IsWindow(m_hWnd))
|
|
{
|
|
TRACE0("CPropTreeItemCombo::DrawAttribute() - The window has not been created\n");
|
|
return;
|
|
}
|
|
|
|
checkRect.left = m_rc.left;
|
|
checkRect.top = m_rc.top + ((m_rc.bottom - m_rc.top)/2)-CHECK_BOX_SIZE/2;
|
|
checkRect.right = checkRect.left + CHECK_BOX_SIZE;
|
|
checkRect.bottom = checkRect.top + CHECK_BOX_SIZE;
|
|
|
|
if(!m_bActivated)
|
|
pDC->DrawFrameControl(&checkRect, DFC_BUTTON, DFCS_BUTTONCHECK | DFCS_FLAT |(checkState ? DFCS_CHECKED : 0));
|
|
}
|
|
|
|
void CPropTreeItemCheck::SetCheckState(BOOL state)
|
|
{
|
|
checkState = state;
|
|
|
|
SetCheck(checkState ? BST_CHECKED : BST_UNCHECKED);
|
|
}
|
|
|
|
|
|
LPARAM CPropTreeItemCheck::GetItemValue()
|
|
{
|
|
return (LPARAM)GetCheckState();
|
|
}
|
|
|
|
|
|
void CPropTreeItemCheck::SetItemValue(LPARAM lParam)
|
|
{
|
|
SetCheckState((BOOL)lParam);
|
|
}
|
|
|
|
|
|
void CPropTreeItemCheck::OnMove()
|
|
{
|
|
if (IsWindow(m_hWnd))
|
|
SetWindowPos(NULL, m_rc.left, m_rc.top, m_rc.Width(), m_rc.Height(), SWP_NOZORDER|SWP_NOACTIVATE);
|
|
}
|
|
|
|
|
|
void CPropTreeItemCheck::OnRefresh()
|
|
{
|
|
}
|
|
|
|
|
|
void CPropTreeItemCheck::OnCommit()
|
|
{
|
|
ShowWindow(SW_HIDE);
|
|
}
|
|
|
|
|
|
void CPropTreeItemCheck::OnActivate(int activateType, CPoint point)
|
|
{
|
|
if(activateType == CPropTreeItem::ACTIVATE_TYPE_MOUSE) {
|
|
//Check where the user clicked
|
|
if(point.x < m_rc.left + CHECK_BOX_SIZE) {
|
|
SetCheckState(!GetCheckState());
|
|
CommitChanges();
|
|
} else {
|
|
SetWindowPos(NULL, m_rc.left, m_rc.top, m_rc.Width(), m_rc.Height(), SWP_NOZORDER|SWP_SHOWWINDOW);
|
|
SetFocus();
|
|
}
|
|
} else {
|
|
SetWindowPos(NULL, m_rc.left, m_rc.top, m_rc.Width(), m_rc.Height(), SWP_NOZORDER|SWP_SHOWWINDOW);
|
|
SetFocus();
|
|
}
|
|
}
|
|
|
|
|
|
bool CPropTreeItemCheck::CreateCheckBox() {
|
|
ASSERT(m_pProp!=NULL);
|
|
|
|
if (IsWindow(m_hWnd))
|
|
DestroyWindow();
|
|
|
|
DWORD dwStyle = (WS_CHILD|BS_CHECKBOX|BS_NOTIFY|BS_FLAT );
|
|
|
|
if (!Create(NULL, dwStyle, CRect(0,0,0,0), m_pProp->GetCtrlParent(), GetCtrlID()))
|
|
{
|
|
TRACE0("CPropTreeItemCombo::CreateComboBox() - failed to create combo box\n");
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CPropTreeItemCheck::OnBnKillfocus()
|
|
{
|
|
CommitChanges();
|
|
}
|
|
|
|
void CPropTreeItemCheck::OnBnClicked()
|
|
{
|
|
int state = GetCheck();
|
|
|
|
SetCheckState(GetCheck() == BST_CHECKED ? FALSE : TRUE);
|
|
CommitChanges();
|
|
}
|