mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-25 23:56:50 +00:00
313 lines
8.1 KiB
C++
313 lines
8.1 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//=============================================================================//
|
|
// FolderSelectProps.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "UI.h"
|
|
#include "FolderSelectProps.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CFolderSelectProps dialog
|
|
|
|
|
|
CFolderSelectProps::CFolderSelectProps(CWnd* pParent /*=NULL*/)
|
|
: CPropertyPage(CFolderSelectProps::IDD),
|
|
m_StrSupportHTTPPath("SupportHTTPPath"),
|
|
m_StrPlayerHTTPPath("PlayerHTTPPath"),
|
|
m_StrPlayerDir("PlayerDir"),
|
|
m_StrTFStatsDir("TFStatsDir"),
|
|
m_StrSupportDir("SupportDir"),
|
|
m_StrRuleDir("RuleDir"),
|
|
m_StrOutDir("OutputDir"),
|
|
m_BoolSupportDefault("DefaultSupportDir"),
|
|
m_BoolTFStatsDefault("DefaultTFStatsDir"),
|
|
m_BoolOutputDefault("DefaultOutputDir"),
|
|
m_BoolRuleDefault("DefaultRuleDir"),
|
|
m_BoolPlayerDefault("DefaultPlayerDir")
|
|
{
|
|
//{{AFX_DATA_INIT(CFolderSelectProps)
|
|
//}}AFX_DATA_INIT
|
|
m_psp.dwFlags &= ~PSP_HASHELP;
|
|
|
|
theApp.m_OutDir=m_StrOutDir.toString();
|
|
theApp.m_TFStatsDir=m_StrTFStatsDir.toString();
|
|
theApp.m_RuleDir=m_StrRuleDir.toString();
|
|
theApp.m_SupportDir=m_StrSupportDir.toString();
|
|
theApp.m_SupportHTTPPath=m_StrSupportHTTPPath.toString();
|
|
theApp.m_PlayerDir=m_StrPlayerDir.toString();
|
|
theApp.m_PlayerHTTPPath=m_StrPlayerHTTPPath.toString();
|
|
|
|
alreadyAcknowledged=false;
|
|
lockOutDir=lockTFSDir=false;
|
|
windowInitted=false;
|
|
}
|
|
|
|
|
|
void CFolderSelectProps::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CFolderSelectProps)
|
|
DDX_Control(pDX, IDC_DEFTFSTATS, m_DefTFStats);
|
|
DDX_Control(pDX, IDC_DEFSUPPORT, m_DefSupport);
|
|
DDX_Control(pDX, IDC_DEFRULE, m_DefRule);
|
|
DDX_Control(pDX, IDC_DEFPLAYER, m_DefPlayer);
|
|
DDX_Control(pDX, IDC_DEFOUTPUT, m_DefOutput);
|
|
DDX_Control(pDX, IDC_SUPPORTHTTPPATH, m_SupportHTTPPath);
|
|
DDX_Control(pDX, IDC_PLAYERHTTPPATH, m_PlayerHTTPPath);
|
|
DDX_Control(pDX, IDC_PLAYERDIR, m_PlayerDir);
|
|
DDX_Control(pDX, IDC_TFSTATSDIR, m_TFStatsDir);
|
|
DDX_Control(pDX, IDC_SUPPORTDIR, m_SupportDir);
|
|
DDX_Control(pDX, IDC_RULEDIR, m_RuleDir);
|
|
DDX_Control(pDX, IDC_OUTPUTDIR, m_OutDir);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CFolderSelectProps, CDialog)
|
|
//{{AFX_MSG_MAP(CFolderSelectProps)
|
|
ON_BN_CLICKED(IDC_DEFOUTPUT, OnDefaultCheckBoxClick)
|
|
ON_EN_CHANGE(IDC_TFSTATSDIR, OnChangeTfstatsdir)
|
|
ON_BN_CLICKED(IDC_DEFPLAYER, OnDefaultCheckBoxClick)
|
|
ON_BN_CLICKED(IDC_DEFRULE, OnDefaultCheckBoxClick)
|
|
ON_BN_CLICKED(IDC_DEFSUPPORT, OnDefaultCheckBoxClick)
|
|
ON_BN_CLICKED(IDC_DEFTFSTATS, OnDefaultCheckBoxClick)
|
|
ON_EN_CHANGE(IDC_OUTPUTDIR, OnChangeOutputdir)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CFolderSelectProps message handlers
|
|
#include "propsht.h"
|
|
#include <winerror.h>
|
|
BOOL CFolderSelectProps::OnSetActive()
|
|
{
|
|
//call superclass
|
|
BOOL bRes=this->CPropertyPage::OnSetActive();
|
|
|
|
if (theApp.FirstEverTimeRun && !alreadyAcknowledged)
|
|
{
|
|
alreadyAcknowledged=true;
|
|
m_DefSupport.SetCheck(1);
|
|
m_DefPlayer.SetCheck(1);
|
|
m_DefOutput.SetCheck(1);
|
|
m_DefTFStats.SetCheck(1);
|
|
m_DefRule.SetCheck(1);
|
|
|
|
m_BoolSupportDefault=1;
|
|
m_BoolTFStatsDefault=1;
|
|
m_BoolOutputDefault=1;
|
|
m_BoolRuleDefault=1;
|
|
m_BoolPlayerDefault=1;
|
|
}
|
|
|
|
|
|
m_TFStatsDir.EnableWindow(!m_DefTFStats.GetCheck());
|
|
|
|
m_SupportHTTPPath.EnableWindow(!m_DefSupport.GetCheck());
|
|
m_SupportDir.EnableWindow(!m_DefSupport.GetCheck());
|
|
|
|
m_RuleDir.EnableWindow(!m_DefRule.GetCheck());
|
|
|
|
m_PlayerHTTPPath.EnableWindow(!m_DefPlayer.GetCheck());
|
|
m_PlayerDir.EnableWindow(!m_DefPlayer.GetCheck());
|
|
|
|
m_OutDir.EnableWindow(!m_DefOutput.GetCheck());
|
|
|
|
|
|
m_DefSupport.SetCheck(m_BoolSupportDefault.toBool());
|
|
m_DefTFStats.SetCheck(m_BoolTFStatsDefault.toBool());
|
|
m_DefOutput.SetCheck(m_BoolOutputDefault.toBool());
|
|
m_DefRule.SetCheck(m_BoolRuleDefault.toBool());
|
|
m_DefPlayer.SetCheck(m_BoolPlayerDefault.toBool());
|
|
|
|
m_SupportHTTPPath.SetWindowText(m_StrSupportHTTPPath.toChars());
|
|
m_PlayerHTTPPath.SetWindowText(m_StrPlayerHTTPPath.toChars());
|
|
m_PlayerDir.SetWindowText(m_StrPlayerDir.toChars());
|
|
m_TFStatsDir.SetWindowText(m_StrTFStatsDir.toChars());
|
|
m_SupportDir.SetWindowText(m_StrSupportDir.toChars());
|
|
m_RuleDir.SetWindowText(m_StrRuleDir.toChars());
|
|
m_OutDir.SetWindowText(m_StrOutDir.toChars());
|
|
|
|
char buf[500];
|
|
string sbuf;
|
|
m_TFStatsDir.GetWindowText(buf,500);
|
|
sbuf=buf;
|
|
addSlash(sbuf);
|
|
m_TFStatsDir.SetWindowText(sbuf.c_str());
|
|
|
|
OnDefaultCheckBoxClick() ;
|
|
|
|
windowInitted=true;
|
|
UpdateFolders();
|
|
return bRes;
|
|
}
|
|
|
|
|
|
|
|
BOOL CFolderSelectProps::OnKillActive()
|
|
{
|
|
//call superclass
|
|
BOOL bRes=this->CPropertyPage::OnKillActive();
|
|
|
|
m_BoolSupportDefault=m_DefSupport.GetCheck();
|
|
m_BoolTFStatsDefault=m_DefTFStats.GetCheck();
|
|
m_BoolOutputDefault=m_DefOutput.GetCheck();
|
|
m_BoolRuleDefault=m_DefRule.GetCheck();
|
|
m_BoolPlayerDefault=m_DefPlayer.GetCheck();
|
|
|
|
|
|
|
|
|
|
|
|
DWORD numbytes;
|
|
char tempbuf[1000];
|
|
numbytes=m_OutDir.GetWindowText(tempbuf,1000);
|
|
m_StrOutDir=theApp.m_OutDir=tempbuf;
|
|
|
|
numbytes=m_TFStatsDir.GetWindowText(tempbuf,1000);
|
|
m_StrTFStatsDir=theApp.m_TFStatsDir=(tempbuf);
|
|
|
|
numbytes=m_SupportDir.GetWindowText(tempbuf,1000);
|
|
m_StrSupportDir=theApp.m_SupportDir=(tempbuf);
|
|
|
|
|
|
numbytes=m_SupportHTTPPath.GetWindowText(tempbuf,1000);
|
|
m_StrSupportHTTPPath=theApp.m_SupportHTTPPath=(tempbuf);
|
|
|
|
|
|
numbytes=m_RuleDir.GetWindowText(tempbuf,1000);
|
|
m_StrRuleDir=theApp.m_RuleDir=(tempbuf);
|
|
|
|
numbytes=m_PlayerDir.GetWindowText(tempbuf,1000);
|
|
m_StrPlayerDir=theApp.m_PlayerDir=(tempbuf);
|
|
|
|
|
|
numbytes=m_PlayerHTTPPath.GetWindowText(tempbuf,1000);
|
|
m_StrPlayerHTTPPath=theApp.m_PlayerHTTPPath=(tempbuf);
|
|
|
|
|
|
windowInitted=false;
|
|
return bRes;
|
|
|
|
}
|
|
|
|
void CFolderSelectProps::OnDefaultCheckBoxClick()
|
|
{
|
|
|
|
UpdateFolders();
|
|
}
|
|
|
|
void CFolderSelectProps::UpdateFolders(bool safe)
|
|
{
|
|
|
|
if (!windowInitted)
|
|
return;
|
|
|
|
|
|
char buf[1000];
|
|
|
|
m_TFStatsDir.EnableWindow(!m_DefTFStats.GetCheck());
|
|
//m_SupportHTTPPath.EnableWindow(!m_DefSupport.GetCheck());
|
|
//m_SupportDir.EnableWindow(!m_DefSupport.GetCheck());
|
|
m_RuleDir.EnableWindow(!m_DefRule.GetCheck());
|
|
//m_PlayerHTTPPath.EnableWindow(!m_DefPlayer.GetCheck());
|
|
//m_PlayerDir.EnableWindow(!m_DefPlayer.GetCheck());
|
|
m_OutDir.EnableWindow(!m_DefOutput.GetCheck());
|
|
|
|
this->m_PlayerDir.EnableWindow(theApp.persistPlayerStats && !m_DefPlayer.GetCheck());
|
|
this->m_PlayerHTTPPath.EnableWindow(theApp.persistPlayerStats && !m_DefPlayer.GetCheck());
|
|
this->m_SupportDir.EnableWindow(theApp.useSupportDir && !m_DefSupport.GetCheck());
|
|
this->m_SupportHTTPPath.EnableWindow(theApp.useSupportDir && !m_DefSupport.GetCheck());
|
|
|
|
|
|
|
|
string basedir;
|
|
if (m_DefTFStats.GetCheck())
|
|
{
|
|
//find in registry
|
|
CPersistentString cps("InstallPath","Software\\Valve\\Half-Life");
|
|
basedir=addSlash(cps.toString());
|
|
basedir+="tfc\\TFStats\\";
|
|
if (!lockTFSDir)
|
|
m_TFStatsDir.SetWindowText(basedir.c_str());
|
|
|
|
}
|
|
else
|
|
{
|
|
m_TFStatsDir.GetWindowText(buf,1000);
|
|
basedir=buf;
|
|
addSlash(basedir);
|
|
}
|
|
|
|
|
|
string outputdir;
|
|
if (m_DefOutput.GetCheck())
|
|
{
|
|
outputdir=basedir+"output\\";
|
|
if (!lockOutDir)
|
|
m_OutDir.SetWindowText(outputdir.c_str());
|
|
}
|
|
else
|
|
{
|
|
m_OutDir.GetWindowText(buf,1000);
|
|
outputdir=buf;
|
|
addSlash(outputdir);
|
|
}
|
|
|
|
string supportdir=outputdir+"support\\";
|
|
string playerdir=outputdir+"players\\";
|
|
|
|
|
|
|
|
if (m_DefSupport.GetCheck())
|
|
{
|
|
m_SupportDir.SetWindowText(supportdir.c_str());
|
|
//if (m_DefSupportHTTP.GetCheck())
|
|
m_SupportHTTPPath.SetWindowText("../support");
|
|
}
|
|
if (m_DefRule.GetCheck())
|
|
m_RuleDir.SetWindowText(basedir.c_str());
|
|
if (m_DefPlayer.GetCheck())
|
|
{
|
|
m_PlayerDir.SetWindowText(playerdir.c_str());
|
|
//if (m_DefPlayerHTTP.GetCheck())
|
|
m_PlayerHTTPPath.SetWindowText("../players");
|
|
}
|
|
}
|
|
void CFolderSelectProps::OnChangeTfstatsdir()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if (!lockTFSDir)
|
|
{
|
|
lockTFSDir=true;
|
|
UpdateFolders();
|
|
lockTFSDir=false;
|
|
}
|
|
|
|
}
|
|
|
|
void CFolderSelectProps::OnChangeOutputdir()
|
|
{
|
|
|
|
// TODO: Add your control notification handler code here
|
|
if (!lockOutDir)
|
|
{
|
|
lockOutDir=true;
|
|
UpdateFolders();
|
|
lockOutDir=false;
|
|
}
|
|
}
|