diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /devtools/syncfrommirror/syncfrommirrorDlg.cpp | |
| download | archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip | |
Diffstat (limited to 'devtools/syncfrommirror/syncfrommirrorDlg.cpp')
| -rw-r--r-- | devtools/syncfrommirror/syncfrommirrorDlg.cpp | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/devtools/syncfrommirror/syncfrommirrorDlg.cpp b/devtools/syncfrommirror/syncfrommirrorDlg.cpp new file mode 100644 index 0000000..be5af9c --- /dev/null +++ b/devtools/syncfrommirror/syncfrommirrorDlg.cpp @@ -0,0 +1,275 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +// syncfrommirrorDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "syncfrommirror.h" +#include "syncfrommirrorDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CSyncfrommirrorDlg dialog + +CSyncfrommirrorDlg::CSyncfrommirrorDlg(CWnd* pParent /*=NULL*/) + : CDialog(CSyncfrommirrorDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CSyncfrommirrorDlg) + m_WorkingFolder = _T(""); + m_bHL2 = FALSE; + m_bTF2 = FALSE; + m_bHL1Port = FALSE; + m_bDOD = FALSE; + m_bCSPort = FALSE; + m_bMakeCommandPrompts = FALSE; + //}}AFX_DATA_INIT + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CSyncfrommirrorDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CSyncfrommirrorDlg) + DDX_Control(pDX, IDC_EDIT1, m_Output); + DDX_Text(pDX, IDC_EDIT2, m_WorkingFolder); + DDX_Check(pDX, IDC_CHECK1, m_bHL2); + DDX_Check(pDX, IDC_CHECK2, m_bHL1Port); + DDX_Check(pDX, IDC_CHECK3, m_bCSPort); + DDX_Check(pDX, IDC_CHECK4, m_bTF2); + DDX_Check(pDX, IDC_MAKECOMMANDPROMPTS, m_bMakeCommandPrompts); + DDX_Check(pDX, IDC_DOD, m_bDOD); + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CSyncfrommirrorDlg, CDialog) + //{{AFX_MSG_MAP(CSyncfrommirrorDlg) + ON_WM_PAINT() + ON_WM_SIZE() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_BUTTON1, OnStop) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CSyncfrommirrorDlg message handlers + +BOOL CSyncfrommirrorDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + m_bHL2 = AfxGetApp()->GetProfileInt( "settings", "hl2", 1 ); + m_bHL1Port = AfxGetApp()->GetProfileInt( "settings", "hl1", 0 ); + m_bCSPort = AfxGetApp()->GetProfileInt( "settings", "cstrike", 0 ); + m_bDOD = AfxGetApp()->GetProfileInt( "settings", "dod", 0 ); + m_bMakeCommandPrompts = AfxGetApp()->GetProfileInt( "settings", "makecommandprompts", 0 ); + m_WorkingFolder = AfxGetApp()->GetProfileString( "settings", "working_folder" ); + + // Calculate layout info for resizing. + CRect rectDlg; + GetClientRect( &rectDlg ); + + // Edit control + CRect rectEdit; + GetDlgItem( IDC_EDIT1 )->GetWindowRect( &rectEdit ); + ScreenToClient( rectEdit ); + m_nEditRightMargin = rectDlg.right - rectEdit.right; + m_nEditBottomMargin = rectDlg.bottom - rectEdit.bottom; + + // Buttons + CRect rectButton; + GetDlgItem( IDOK )->GetWindowRect( &rectButton ); + ScreenToClient( rectButton ); + m_nButtonOffset = rectDlg.right - rectButton.left; + +// LoadSettings(); + UpdateData(false); + // TODO: Add extra initialization here + + return TRUE; // return TRUE unless you set the focus to a control +} + +// If you add a minimize button to your dialog, you will need the code below +// to draw the icon. For MFC applications using the document/view model, +// this is automatically done for you by the framework. + +void CSyncfrommirrorDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // device context for painting + + SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); + + // Center icon in client rectangle + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // Draw the icon + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialog::OnPaint(); + } +} + +HCURSOR CSyncfrommirrorDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} + +void CSyncfrommirrorDlg::RunSync( const char *pszType ) +{ + static const char *pszCmdLine = "cmd.exe /c \\\\hl2vss.valvesoftware.com\\hl2vss\\win32\\syncfrommirror.bat %s %s"; + if ( m_bMakeCommandPrompts ) + pszCmdLine = "cmd.exe /k \\\\hl2vss.valvesoftware.com\\hl2vss\\win32\\syncfrommirror.bat %s %s"; + + CString strCmdLine; + + CString &strMain = m_WorkingFolder; + strMain.TrimLeft(" \""); + strMain.TrimRight(" \""); + + CString workingFolder; + workingFolder = "\""; + workingFolder += strMain; + workingFolder += "\""; + + strCmdLine.Format(pszCmdLine, pszType, workingFolder.operator const char *() ); + + GetDlgItem(IDOK)->EnableWindow(FALSE); + GetDlgItem(IDCANCEL)->EnableWindow(FALSE); + GetDlgItem(IDC_BUTTON1)->EnableWindow(); + + if ( m_bMakeCommandPrompts ) + { + RunCommandLine( strCmdLine, "c:\\" ); + } + else + { + m_Redirector.Run( strCmdLine, &m_Output, "c:\\" ); + } + + GetDlgItem(IDOK)->EnableWindow(); + GetDlgItem(IDCANCEL)->EnableWindow(); + GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE); +} + +void CSyncfrommirrorDlg::RunCommandLine( const char *pCmdLine, const char *pWorkingDir ) +{ + STARTUPINFO startupInfo; + memset( &startupInfo, 0, sizeof( startupInfo ) ); + startupInfo.cb = sizeof( startupInfo ); + + PROCESS_INFORMATION pi; + memset( &pi, 0, sizeof( pi ) ); + + CreateProcess( + NULL, + (char*)pCmdLine, + NULL, + NULL, + FALSE, + CREATE_NEW_CONSOLE, + NULL, + pWorkingDir, + &startupInfo, + &pi ); +} + +void CSyncfrommirrorDlg::OnOK() +{ + UpdateData(); + + AfxGetApp()->WriteProfileInt( "settings", "hl2", m_bHL2 ); + AfxGetApp()->WriteProfileInt( "settings", "hl1", m_bHL1Port ); + AfxGetApp()->WriteProfileInt( "settings", "dod", m_bDOD ); + AfxGetApp()->WriteProfileInt( "settings", "cstrike", m_bCSPort ); + AfxGetApp()->WriteProfileInt( "settings", "makecommandprompts", m_bMakeCommandPrompts ); + AfxGetApp()->WriteProfileString( "settings", "working_folder", m_WorkingFolder); + + if ( m_WorkingFolder.GetLength() == 0 ) + { + MessageBox( "You must set your working folder (e.g. u:\\dev)", "Error", MB_ICONWARNING ); + return; + } + + m_Output.SetSel( 0, -1 ); + m_Output.Clear(); + + if (m_bHL2 && m_bHL1Port && m_bCSPort && m_bDOD ) + { + RunSync( "all" ); + } + else + { + if ( m_bHL2 ) + RunSync( "hl2" ); + if ( m_bHL1Port ) + RunSync( "hl1" ); + if ( m_bCSPort ) + RunSync( "cstrike" ); + if ( m_bDOD ) + RunSync( "dod" ); + } + + // If it spawned command prompts, then exit. + if ( m_bMakeCommandPrompts ) + EndDialog( 0 ); + + FlashWindow( TRUE ); + + //CDialog::OnOK(); +} + +void CSyncfrommirrorDlg::OnStop() +{ + m_Redirector.Stop(); + +} + +void CSyncfrommirrorDlg::OnSize( UINT nType, int cx, int cy ) +{ + if ( GetDlgItem( IDC_EDIT1 ) ) + { + CRect rectDlg; + GetClientRect( &rectDlg ); + + CRect rectEdit; + GetDlgItem( IDC_EDIT1 )->GetWindowRect( &rectEdit ); + ScreenToClient( rectEdit ); + GetDlgItem( IDC_EDIT1 )->MoveWindow( rectEdit.left, rectEdit.top, ( rectDlg.right - m_nEditRightMargin ) - rectEdit.left, ( rectDlg.bottom - m_nEditBottomMargin ) - rectEdit.top, TRUE ); + + CRect rectButton; + GetDlgItem( IDOK )->GetWindowRect( &rectButton ); + ScreenToClient( rectButton ); + GetDlgItem( IDOK )->MoveWindow( rectDlg.right - m_nButtonOffset, rectButton.top, rectButton.Width( ), rectButton.Height( ), TRUE ); + + GetDlgItem( IDCANCEL )->GetWindowRect( &rectButton ); + ScreenToClient( rectButton ); + GetDlgItem( IDCANCEL )->MoveWindow( rectDlg.right - m_nButtonOffset, rectButton.top, rectButton.Width( ), rectButton.Height( ), TRUE ); + + GetDlgItem( IDC_BUTTON1 )->GetWindowRect( &rectButton ); + ScreenToClient( rectButton ); + GetDlgItem( IDC_BUTTON1 )->MoveWindow( rectDlg.right - m_nButtonOffset, rectButton.top, rectButton.Width( ), rectButton.Height( ), TRUE ); + } + + CDialog::OnSize( nType, cx, cy ); +} |