leocad/win/Prefsht.cpp
2011-09-07 21:06:51 +00:00

125 lines
4.1 KiB
C++

// PrefSht.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "PrefSht.h"
#include "defines.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
#define IDW_BUTTON 5000
/////////////////////////////////////////////////////////////////////////////
// CPreferencesSheet
IMPLEMENT_DYNAMIC(CPreferencesSheet, CPropertySheet)
CPreferencesSheet::CPreferencesSheet(CWnd* pWndParent)
: CPropertySheet(IDS_PROPSHT_CAPTION, pWndParent)
{
AddPage(&m_PageGeneral);
AddPage(&m_PageDetail);
AddPage(&m_PageDrawing);
AddPage(&m_PageScene);
AddPage(&m_PagePrint);
AddPage(&m_PageKeyboard);
SetActivePage(AfxGetApp()->GetProfileInt("Settings", "Page", 0));
}
CPreferencesSheet::~CPreferencesSheet()
{
}
BEGIN_MESSAGE_MAP(CPreferencesSheet, CPropertySheet)
//{{AFX_MSG_MAP(CPreferencesSheet)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDW_BUTTON, OnDefault)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPreferencesSheet message handlers
BOOL CPreferencesSheet::PreTranslateMessage(MSG* pMsg)
{
if (LOWORD(pMsg->wParam) == IDOK)
AfxGetApp()->WriteProfileInt("Settings", "Page", GetActiveIndex());
return m_tabCtrl.TranslatePropSheetMsg(pMsg) ? TRUE :
CPropertySheet::PreTranslateMessage(pMsg);
}
BOOL CPreferencesSheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
// get HWND of tab control and subclass it
HWND hWnd = (HWND)SendMessage(PSM_GETTABCONTROL);
m_tabCtrl.SubclassDlgItem(::GetDlgCtrlID(hWnd), this);
CRect rectWnd;
CWnd *pWnd = GetDlgItem(ID_APPLY_NOW);
pWnd->GetWindowRect(rectWnd);
pWnd->ShowWindow(FALSE);
ScreenToClient(rectWnd);
hWnd = CreateWindow(_T("BUTTON"), _T("Make Default"),BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE|WS_TABSTOP,
rectWnd.left, rectWnd.top, rectWnd.Width(), rectWnd.Height(), m_hWnd, (HMENU)IDW_BUTTON, AfxGetInstanceHandle(), NULL);
::SendMessage(hWnd, WM_SETFONT, (WPARAM)GetFont()->GetSafeHandle(), TRUE);
::SetWindowPos (hWnd, ::GetDlgItem(m_hWnd, IDCANCEL), 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE);
return bResult;
}
void CPreferencesSheet::OnDefault()
{
if (m_PageGeneral.m_hWnd)
m_PageGeneral.UpdateData();
if (m_PageDetail.m_hWnd)
m_PageDetail.UpdateData();
if (m_PageDrawing.m_hWnd)
m_PageDrawing.UpdateData();
if (m_PageScene.m_hWnd)
m_PageScene.UpdateData();
if (m_PagePrint.m_hWnd)
m_PagePrint.UpdateData();
if (m_PageKeyboard.m_hWnd)
m_PageKeyboard.UpdateData();
char str[LC_MAXPATH], st1[256], st2[256];
int i, j;
float f, cr1[4], cr2[4], cr3[4], cr4[4], cr5[4];
unsigned long l;
unsigned short s1, s2;
m_PageGeneral.GetOptions(&i, &j, str, st1);
AfxGetApp()->WriteProfileInt("Settings", "Autosave", i);
AfxGetApp()->WriteProfileInt("Default", "Mouse", j);
AfxGetApp()->WriteProfileString("Default", "Projects", str);
AfxGetApp()->WriteProfileString("Default", "User", st1);
m_PageDetail.GetOptions(&l, &f);
AfxGetApp()->WriteProfileInt("Default", "Detail", l);
AfxGetApp()->WriteProfileInt("Default", "Line", (int)(f*100));
m_PageDrawing.GetOptions(&l, &s1, &s2);
AfxGetApp()->WriteProfileInt("Default", "Snap", l);
AfxGetApp()->WriteProfileInt("Default", "Angle", s1);
AfxGetApp()->WriteProfileInt("Default", "Grid", s2);
m_PageScene.GetOptions(&l, &f, str, cr1, cr2, cr3, cr4, cr5);
AfxGetApp()->WriteProfileInt("Default", "Scene", l);
AfxGetApp()->WriteProfileInt("Default", "Density", (int)(f*100));
AfxGetApp()->WriteProfileString("Default", "BMP", str);
AfxGetApp()->WriteProfileInt("Default", "Background", RGB(cr1[0]*255, cr1[1]*255, cr1[2]*255));
AfxGetApp()->WriteProfileInt("Default", "Fog", RGB(cr2[0]*255, cr2[1]*255, cr2[2]*255));
AfxGetApp()->WriteProfileInt("Default", "Ambient", RGB(cr3[0]*255, cr3[1]*255, cr3[2]*255));
AfxGetApp()->WriteProfileInt("Default", "Gradient1", RGB(cr4[0]*255, cr4[1]*255, cr4[2]*255));
AfxGetApp()->WriteProfileInt("Default", "Gradient2", RGB(cr5[0]*255, cr5[1]*255, cr5[2]*255));
m_PagePrint.GetOptions(st1, st2);
AfxGetApp()->WriteProfileString("Default", "Header", st1);
AfxGetApp()->WriteProfileString("Default", "Footer", st2);
}