267 lines
8.4 KiB
C++
267 lines
8.4 KiB
C++
|
|
||
|
#include "stdafx.h"
|
||
|
#include "pbrush.h"
|
||
|
#include "settings.h"
|
||
|
|
||
|
#include <atlbase.h>
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#undef THIS_FILE
|
||
|
static CHAR BASED_CODE THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
#include "memtrace.h"
|
||
|
|
||
|
extern BOOL NEAR g_bDriverCanStretch;
|
||
|
extern BOOL NEAR g_bShowAllFiles;
|
||
|
|
||
|
/***************************************************************************/
|
||
|
|
||
|
static TCHAR NEAR mszView[] = TEXT("View");
|
||
|
static TCHAR NEAR mszNoStretching[] = TEXT("NoStretching");
|
||
|
static TCHAR NEAR mszShowAllFiles[] = TEXT("ShowAllFiles");
|
||
|
|
||
|
static TCHAR NEAR mszShowThumbnail[] = TEXT("ShowThumbnail");
|
||
|
static TCHAR NEAR mszShowText[] = TEXT("ShowTextTool");
|
||
|
|
||
|
|
||
|
static TCHAR NEAR mszSnapToGrid[] = TEXT("SnapToGrid");
|
||
|
static TCHAR NEAR mszGridExtent[] = TEXT("GridExtent");
|
||
|
static TCHAR NEAR mszBMPWidth[] = TEXT("BMPWidth");
|
||
|
static TCHAR NEAR mszBMPHeight[] = TEXT("BMPHeight");
|
||
|
|
||
|
static TCHAR NEAR mszThumbXPos[] = TEXT("ThumbXPos");
|
||
|
static TCHAR NEAR mszThumbYPos[] = TEXT("ThumbYPos");
|
||
|
static TCHAR NEAR mszThumbWidth[] = TEXT("ThumbWidth");
|
||
|
static TCHAR NEAR mszThumbHeight[] = TEXT("ThumbHeight");
|
||
|
static TCHAR NEAR mszCurrentUnits[] = TEXT("UnitSetting");
|
||
|
|
||
|
static TCHAR NEAR mszText[] = TEXT("Text");
|
||
|
static TCHAR NEAR mszFaceName[] = TEXT("TypeFaceName");
|
||
|
static TCHAR NEAR mszPointSize[] = TEXT("PointSize");
|
||
|
static TCHAR NEAR mszCharSet[] = TEXT("CharSet");
|
||
|
static TCHAR NEAR mszBold[] = TEXT("Bold");
|
||
|
static TCHAR NEAR mszUnderline[] = TEXT("Underline");
|
||
|
static TCHAR NEAR mszItalic[] = TEXT("Italic");
|
||
|
|
||
|
static TCHAR NEAR mszVertEdit[] = TEXT("VerticalEdit");
|
||
|
|
||
|
static TCHAR NEAR mszPositionX[] = TEXT("PositionX");
|
||
|
static TCHAR NEAR mszPositionY[] = TEXT("PositionY");
|
||
|
static TCHAR NEAR mszTextPen[] = TEXT("TextPen");
|
||
|
|
||
|
static TCHAR NEAR mszColors[] = TEXT("Colors");
|
||
|
static TCHAR NEAR mszNumberOfColors[] = TEXT("NumberOfColors");
|
||
|
|
||
|
static TCHAR NEAR mszSoftware[] = TEXT("Software");
|
||
|
static TCHAR NEAR mszWindowPlacement[] = TEXT("WindowPlacement");
|
||
|
|
||
|
/***************************************************************************/
|
||
|
|
||
|
void OpenAppKey(LPCTSTR pszKeyName, HKEY *phk)
|
||
|
{
|
||
|
*phk = NULL;
|
||
|
|
||
|
CRegKey rkSoftware;
|
||
|
|
||
|
if (rkSoftware.Create(HKEY_CURRENT_USER, mszSoftware) != ERROR_SUCCESS)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
CString cszSubKey;
|
||
|
|
||
|
if (!cszSubKey.LoadString(IDS_REGISTRY_PATH))
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
CRegKey rkSubKey;
|
||
|
|
||
|
if (rkSubKey.Create(rkSoftware, cszSubKey) != ERROR_SUCCESS)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// use the app's profile name instead of the
|
||
|
// localizable app name
|
||
|
//
|
||
|
CRegKey rkAppKey;
|
||
|
|
||
|
if (rkAppKey.Create(rkSubKey, theApp.m_pszProfileName) != ERROR_SUCCESS)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (RegOpenKey(rkAppKey, pszKeyName, phk) != ERROR_SUCCESS)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CPBApp::LoadProfileSettings()
|
||
|
{
|
||
|
CWinApp::LoadStdProfileSettings( );
|
||
|
|
||
|
BOOL bNoStretch = (BOOL)GetProfileInt( mszView, mszNoStretching, FALSE );
|
||
|
|
||
|
g_bDriverCanStretch = ! bNoStretch;
|
||
|
|
||
|
m_bShowThumbnail = (BOOL)GetProfileInt( mszView, mszShowThumbnail , FALSE );
|
||
|
|
||
|
g_bShowAllFiles = (BOOL)GetProfileInt( mszView, mszShowAllFiles, FALSE );
|
||
|
|
||
|
int iX = GetProfileInt( mszView, mszBMPWidth , 0 );
|
||
|
int iY = GetProfileInt( mszView, mszBMPHeight, 0 );
|
||
|
|
||
|
if (! iX || ! iY)
|
||
|
{
|
||
|
iX = 0;
|
||
|
iY = 0;
|
||
|
}
|
||
|
m_sizeBitmap = CSize( iX, iY );
|
||
|
|
||
|
HKEY hkView;
|
||
|
|
||
|
OpenAppKey(mszView, &hkView);
|
||
|
if (hkView)
|
||
|
{
|
||
|
DWORD dwType = REG_BINARY;
|
||
|
DWORD dwSize = sizeof(m_wpPlacement);;
|
||
|
|
||
|
if (RegQueryValueEx(hkView, mszWindowPlacement, 0, &dwType, (LPBYTE)&m_wpPlacement,
|
||
|
&dwSize)!= ERROR_SUCCESS || dwType!=REG_BINARY || dwSize!=sizeof(m_wpPlacement))
|
||
|
{
|
||
|
memset((LPVOID)&m_wpPlacement, 0, sizeof(m_wpPlacement));
|
||
|
}
|
||
|
RegCloseKey(hkView);
|
||
|
}
|
||
|
|
||
|
int iW;
|
||
|
int iH;
|
||
|
CPoint ptPos;
|
||
|
CSize size;
|
||
|
|
||
|
iX = GetProfileInt( mszView, mszThumbXPos , 0 );
|
||
|
iY = GetProfileInt( mszView, mszThumbYPos , 0 );
|
||
|
iW = GetProfileInt( mszView, mszThumbWidth , 0 );
|
||
|
iH = GetProfileInt( mszView, mszThumbHeight, 0 );
|
||
|
|
||
|
if (iX && iY && iW && iH)
|
||
|
{
|
||
|
size = CSize( iW, iH );
|
||
|
ptPos = CheckWindowPosition( CPoint( iX, iY ), size );
|
||
|
m_rectFloatThumbnail = CRect( ptPos, size );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
m_iCurrentUnits = GetProfileInt( mszView, mszCurrentUnits, 0 );
|
||
|
|
||
|
m_bShowTextToolbar = (BOOL)GetProfileInt ( mszText, mszShowText , TRUE );
|
||
|
m_iPointSize = GetProfileInt ( mszText, mszPointSize, 0 );
|
||
|
m_iBoldText = GetProfileInt ( mszText, mszBold , 0 );
|
||
|
m_iUnderlineText = GetProfileInt ( mszText, mszUnderline, 0 );
|
||
|
m_iItalicText = GetProfileInt ( mszText, mszItalic , 0 );
|
||
|
|
||
|
m_iVertEditText = GetProfileInt ( mszText, mszVertEdit, -1 );
|
||
|
|
||
|
m_iPosTextX = GetProfileInt ( mszText, mszPositionX, 0 );
|
||
|
m_iPosTextY = GetProfileInt ( mszText, mszPositionY, 0 );
|
||
|
m_strTypeFaceName = GetProfileString( mszText, mszFaceName , NULL);
|
||
|
|
||
|
m_iCharSet = GetProfileInt ( mszText, mszCharSet , -1 );
|
||
|
if (m_iCharSet == -1)
|
||
|
{
|
||
|
CHARSETINFO csi;
|
||
|
if (!TranslateCharsetInfo((DWORD*)UIntToPtr(GetACP()), &csi, TCI_SRCCODEPAGE))
|
||
|
csi.ciCharset=ANSI_CHARSET;
|
||
|
m_iCharSet = csi.ciCharset;
|
||
|
}
|
||
|
|
||
|
m_iPenText = GetProfileInt ( mszText, mszTextPen , 0 );
|
||
|
|
||
|
m_iSnapToGrid = GetProfileInt( mszView, mszSnapToGrid, 0 );
|
||
|
m_iGridExtent = GetProfileInt( mszView, mszGridExtent, 1 );
|
||
|
|
||
|
m_pColors = new COLORREF[16];
|
||
|
|
||
|
if (m_pColors != NULL)
|
||
|
{
|
||
|
TCHAR szNumber[8];
|
||
|
int iColors = GetProfileInt( mszColors, mszNumberOfColors, 0 );
|
||
|
|
||
|
for (int i = 0; i < iColors; i++)
|
||
|
{
|
||
|
_Itoa( i, szNumber, 10 );
|
||
|
|
||
|
m_pColors[i] = (COLORREF)GetProfileInt( mszColors, szNumber, 0 );
|
||
|
}
|
||
|
m_iColors = i;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/***************************************************************************/
|
||
|
|
||
|
void CPBApp::SaveProfileSettings()
|
||
|
{
|
||
|
HKEY hkView;
|
||
|
|
||
|
OpenAppKey(mszView, &hkView);
|
||
|
if (hkView)
|
||
|
{
|
||
|
RegSetValueEx(hkView, mszWindowPlacement, 0, REG_BINARY, (LPBYTE)&m_wpPlacement,
|
||
|
sizeof(m_wpPlacement));
|
||
|
RegCloseKey(hkView);
|
||
|
}
|
||
|
|
||
|
WriteProfileInt( mszView, mszShowThumbnail , m_bShowThumbnail );
|
||
|
|
||
|
WriteProfileInt( mszView, mszBMPWidth , m_sizeBitmap.cx );
|
||
|
WriteProfileInt( mszView, mszBMPHeight , m_sizeBitmap.cy );
|
||
|
WriteProfileInt( mszView, mszThumbXPos , m_rectFloatThumbnail.left );
|
||
|
WriteProfileInt( mszView, mszThumbYPos , m_rectFloatThumbnail.top );
|
||
|
WriteProfileInt( mszView, mszThumbWidth , m_rectFloatThumbnail.Width() );
|
||
|
WriteProfileInt( mszView, mszThumbHeight , m_rectFloatThumbnail.Height() );
|
||
|
WriteProfileInt( mszView, mszCurrentUnits , m_iCurrentUnits );
|
||
|
WriteProfileInt( mszView, mszNoStretching , ! g_bDriverCanStretch );
|
||
|
|
||
|
WriteProfileInt( mszText, mszShowText , m_bShowTextToolbar );
|
||
|
WriteProfileInt( mszText, mszPointSize , m_iPointSize );
|
||
|
WriteProfileInt( mszText, mszPositionX , m_iPosTextX );
|
||
|
WriteProfileInt( mszText, mszPositionY , m_iPosTextY );
|
||
|
WriteProfileInt( mszText, mszBold , m_iBoldText );
|
||
|
WriteProfileInt( mszText, mszUnderline , m_iUnderlineText );
|
||
|
WriteProfileInt( mszText, mszItalic , m_iItalicText );
|
||
|
|
||
|
WriteProfileInt( mszText, mszVertEdit , m_iVertEditText );
|
||
|
|
||
|
WriteProfileInt( mszText, mszTextPen , m_iPenText );
|
||
|
WriteProfileString( mszText, mszFaceName, m_strTypeFaceName );
|
||
|
WriteProfileInt( mszText, mszCharSet , m_iCharSet );
|
||
|
|
||
|
WriteProfileInt( mszView, mszSnapToGrid, m_iSnapToGrid);
|
||
|
WriteProfileInt( mszView, mszGridExtent, m_iGridExtent);
|
||
|
|
||
|
if (m_pColors != NULL)
|
||
|
{
|
||
|
TCHAR szNumber[8];
|
||
|
int iColor;
|
||
|
|
||
|
WriteProfileInt( mszColors, mszNumberOfColors, m_iColors );
|
||
|
|
||
|
for (int i = 0; i < m_iColors; i++)
|
||
|
{
|
||
|
iColor = (int)(m_pColors[i] & (COLORREF)0x00FFFFFF);
|
||
|
_Itoa( i, szNumber, 10 );
|
||
|
|
||
|
WriteProfileInt( mszColors, szNumber, iColor );
|
||
|
}
|
||
|
delete [] m_pColors;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/***************************************************************************/
|