mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-20 20:46:03 +08:00
Update from SDK 2013
This commit is contained in:

committed by
Nicholas Hastings

parent
6d5c024820
commit
94b660e16e
473
utils/vmpi/vmpi_job_search/JobSearchDlg.cpp
Normal file
473
utils/vmpi/vmpi_job_search/JobSearchDlg.cpp
Normal file
@ -0,0 +1,473 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
// JobSearchDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "JobSearchDlg.h"
|
||||
#include "imysqlwrapper.h"
|
||||
#include "tier1/strtools.h"
|
||||
#include "utllinkedlist.h"
|
||||
#include "vmpi_browser_helpers.h"
|
||||
#include "vmpi_defs.h"
|
||||
#include "net_view_thread.h"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
|
||||
// These are stored with jobs to help with sorting and to remember the job ID.
|
||||
class CJobInfo
|
||||
{
|
||||
public:
|
||||
unsigned long m_JobID;
|
||||
CString m_StartTimeUnformatted;
|
||||
CString m_MachineName;
|
||||
CString m_BSPFilename;
|
||||
DWORD m_RunningTimeMS;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CJobSearchDlg dialog
|
||||
|
||||
|
||||
CJobSearchDlg::CJobSearchDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CJobSearchDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CJobSearchDlg)
|
||||
//}}AFX_DATA_INIT
|
||||
m_pSQL = NULL;
|
||||
m_hMySQLDLL = NULL;
|
||||
}
|
||||
|
||||
|
||||
CJobSearchDlg::~CJobSearchDlg()
|
||||
{
|
||||
if ( m_pSQL )
|
||||
{
|
||||
m_pSQL->Release();
|
||||
}
|
||||
|
||||
if ( m_hMySQLDLL )
|
||||
{
|
||||
Sys_UnloadModule( m_hMySQLDLL );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CJobSearchDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CJobSearchDlg)
|
||||
DDX_Control(pDX, IDC_WORKER_LIST, m_WorkerList);
|
||||
DDX_Control(pDX, IDC_USER_LIST, m_UserList);
|
||||
DDX_Control(pDX, IDC_JOBS_LIST, m_JobsList);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CJobSearchDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CJobSearchDlg)
|
||||
ON_NOTIFY(NM_DBLCLK, IDC_JOBS_LIST, OnDblclkJobsList)
|
||||
ON_LBN_DBLCLK(IDC_USER_LIST, OnDblclkUserList)
|
||||
ON_LBN_DBLCLK(IDC_WORKER_LIST, OnDblclkWorkerList)
|
||||
ON_BN_CLICKED(IDC_QUIT, OnQuit)
|
||||
ON_WM_SIZE()
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
int CJobSearchDlg::GetSelectedJobIndex()
|
||||
{
|
||||
POSITION pos = m_JobsList.GetFirstSelectedItemPosition();
|
||||
if ( pos )
|
||||
return m_JobsList.GetNextSelectedItem( pos );
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CJobSearchDlg message handlers
|
||||
|
||||
void CJobSearchDlg::OnDblclkJobsList(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
int iItem = GetSelectedJobIndex();
|
||||
if ( iItem != -1 )
|
||||
{
|
||||
CJobInfo *pInfo = (CJobInfo*)m_JobsList.GetItemData( iItem );
|
||||
|
||||
CString cmdLine;
|
||||
cmdLine.Format( "vmpi_job_watch -JobID %d -dbname \"%s\" -hostname \"%s\" -username \"%s\"",
|
||||
pInfo->m_JobID, (const char*)m_DBName, (const char*)m_HostName, (const char*)m_UserName );
|
||||
|
||||
STARTUPINFO si;
|
||||
memset( &si, 0, sizeof( si ) );
|
||||
si.cb = sizeof( si );
|
||||
|
||||
PROCESS_INFORMATION pi;
|
||||
memset( &pi, 0, sizeof( pi ) );
|
||||
|
||||
if ( !CreateProcess(
|
||||
NULL,
|
||||
(char*)(const char*)cmdLine,
|
||||
NULL, // security
|
||||
NULL,
|
||||
TRUE,
|
||||
0, // flags
|
||||
NULL, // environment
|
||||
NULL, // current directory
|
||||
&si,
|
||||
&pi ) )
|
||||
{
|
||||
CString errStr;
|
||||
errStr.Format( "Error launching '%s'", cmdLine.GetBuffer() );
|
||||
MessageBox( errStr, "Error", MB_OK );
|
||||
}
|
||||
}
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
|
||||
static int CALLBACK JobsSortFn( LPARAM iItem1, LPARAM iItem2, LPARAM lpParam )
|
||||
{
|
||||
CJobInfo *pInfo1 = (CJobInfo*)iItem1;
|
||||
CJobInfo *pInfo2 = (CJobInfo*)iItem2;
|
||||
|
||||
return strcmp( pInfo2->m_StartTimeUnformatted, pInfo1->m_StartTimeUnformatted );
|
||||
}
|
||||
|
||||
|
||||
void CJobSearchDlg::ClearJobsList()
|
||||
{
|
||||
// First, delete all the JobInfo structures we have in it.
|
||||
int nItems = m_JobsList.GetItemCount();
|
||||
for ( int i=0; i < nItems; i++ )
|
||||
{
|
||||
CJobInfo *pInfo = (CJobInfo*)m_JobsList.GetItemData( i );
|
||||
delete pInfo;
|
||||
}
|
||||
|
||||
m_JobsList.DeleteAllItems();
|
||||
}
|
||||
|
||||
|
||||
void CJobSearchDlg::RepopulateJobsList()
|
||||
{
|
||||
// It's assumed coming into this routine that the caller just executed a query that we can iterate over.
|
||||
ClearJobsList();
|
||||
|
||||
CUtlLinkedList<CJobInfo*, int> jobInfos;
|
||||
while ( GetMySQL()->NextRow() )
|
||||
{
|
||||
CJobInfo *pInfo = new CJobInfo;
|
||||
pInfo->m_StartTimeUnformatted = GetMySQL()->GetColumnValue( "StartTime" ).String();
|
||||
pInfo->m_JobID = GetMySQL()->GetColumnValue( "JobID" ).Int32();
|
||||
pInfo->m_MachineName = GetMySQL()->GetColumnValue( "MachineName" ).String();
|
||||
pInfo->m_BSPFilename = GetMySQL()->GetColumnValue( "BSPFilename" ).String();
|
||||
pInfo->m_RunningTimeMS = GetMySQL()->GetColumnValue( "RunningTimeMS" ).Int32();
|
||||
|
||||
jobInfos.AddToTail( pInfo );
|
||||
}
|
||||
|
||||
|
||||
FOR_EACH_LL( jobInfos, j )
|
||||
{
|
||||
CJobInfo *pInfo = jobInfos[j];
|
||||
|
||||
// Add the item.
|
||||
int iItem = m_JobsList.InsertItem( 0, "", NULL );
|
||||
|
||||
// Associate it with the job structure.
|
||||
m_JobsList.SetItemData( iItem, (DWORD)pInfo );
|
||||
|
||||
char dateStr[128];
|
||||
const char *pDate = pInfo->m_StartTimeUnformatted;
|
||||
if ( strlen( pDate ) == 14 ) // yyyymmddhhmmss
|
||||
{
|
||||
Q_snprintf( dateStr, sizeof( dateStr ), "%c%c/%c%c %c%c:%c%c:00",
|
||||
pDate[4], pDate[5],
|
||||
pDate[6], pDate[7],
|
||||
pDate[8], pDate[9],
|
||||
pDate[10], pDate[11] );
|
||||
}
|
||||
|
||||
m_JobsList.SetItemText( iItem, 0, dateStr );
|
||||
m_JobsList.SetItemText( iItem, 1, pInfo->m_MachineName );
|
||||
m_JobsList.SetItemText( iItem, 2, pInfo->m_BSPFilename );
|
||||
|
||||
char timeStr[512];
|
||||
if ( pInfo->m_RunningTimeMS == RUNNINGTIME_MS_SENTINEL )
|
||||
{
|
||||
Q_strncpy( timeStr, "?", sizeof( timeStr ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
FormatTimeString( pInfo->m_RunningTimeMS / 1000, timeStr, sizeof( timeStr ) );
|
||||
}
|
||||
m_JobsList.SetItemText( iItem, 3, timeStr );
|
||||
|
||||
char jobIDStr[512];
|
||||
Q_snprintf( jobIDStr, sizeof( jobIDStr ), "%d", pInfo->m_JobID );
|
||||
m_JobsList.SetItemText( iItem, 4, jobIDStr );
|
||||
}
|
||||
|
||||
m_JobsList.SortItems( JobsSortFn, (LPARAM)&m_JobsList );
|
||||
}
|
||||
|
||||
|
||||
void CJobSearchDlg::OnDblclkUserList()
|
||||
{
|
||||
int sel = m_UserList.GetCurSel();
|
||||
if ( sel != LB_ERR )
|
||||
{
|
||||
CString computerName;
|
||||
m_UserList.GetText( sel, computerName );
|
||||
|
||||
// Look for jobs that this user initiated.
|
||||
char query[4096];
|
||||
Q_snprintf( query, sizeof( query ), "select RunningTimeMS, JobID, BSPFilename, StartTime, MachineName from job_master_start where MachineName=\"%s\"", (const char*)computerName );
|
||||
GetMySQL()->Execute( query );
|
||||
|
||||
RepopulateJobsList();
|
||||
}
|
||||
}
|
||||
|
||||
void CJobSearchDlg::OnDblclkWorkerList()
|
||||
{
|
||||
int sel = m_WorkerList.GetCurSel();
|
||||
if ( sel != LB_ERR )
|
||||
{
|
||||
CString computerName;
|
||||
m_WorkerList.GetText( sel, computerName );
|
||||
|
||||
// This query does:
|
||||
// 1. Take the workers with the specified MachineName.
|
||||
// 2. Only use IsMaster = 0.
|
||||
// 3. Now get all the job_master_start records with the same JobID.
|
||||
char query[4096];
|
||||
Q_snprintf( query, sizeof( query ), "select job_master_start.RunningTimeMS, job_master_start.JobID, job_master_start.BSPFilename, job_master_start.StartTime, job_master_start.MachineName "
|
||||
"from job_master_start, job_worker_start "
|
||||
"where job_worker_start.MachineName = \"%s\" and "
|
||||
"IsMaster = 0 and "
|
||||
"job_master_start.JobID = job_worker_start.JobID",
|
||||
(const char*)computerName );
|
||||
GetMySQL()->Execute( query );
|
||||
|
||||
RepopulateJobsList();
|
||||
}
|
||||
}
|
||||
|
||||
bool ReadStringFromFile( FILE *fp, char *pStr, int strSize )
|
||||
{
|
||||
int i=0;
|
||||
for ( i; i < strSize-2; i++ )
|
||||
{
|
||||
if ( fread( &pStr[i], 1, 1, fp ) != 1 ||
|
||||
pStr[i] == '\n' )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
pStr[i] = 0;
|
||||
return i != 0;
|
||||
}
|
||||
|
||||
const char* FindArg( const char *pArgName, const char *pDefault="" )
|
||||
{
|
||||
for ( int i=1; i < __argc; i++ )
|
||||
{
|
||||
if ( Q_stricmp( pArgName, __argv[i] ) == 0 )
|
||||
{
|
||||
if ( (i+1) < __argc )
|
||||
return __argv[i+1];
|
||||
else
|
||||
return pDefault;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BOOL CJobSearchDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_JobsList.SetExtendedStyle( LVS_EX_FULLROWSELECT );
|
||||
|
||||
char str[512];
|
||||
|
||||
// Init the mysql database.
|
||||
const char *pDBName = FindArg( "-dbname", NULL );
|
||||
const char *pHostName = FindArg( "-hostname", NULL );
|
||||
const char *pUserName = FindArg( "-username", NULL );
|
||||
|
||||
if ( pDBName && pHostName && pUserName )
|
||||
{
|
||||
m_DBName = pDBName;
|
||||
m_HostName = pHostName;
|
||||
m_UserName = pUserName;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Load the dbinfo_browser.txt file to get the database information.
|
||||
const char *pFilename = FindArg( "-dbinfo", NULL );
|
||||
if ( !pFilename )
|
||||
pFilename = "dbinfo_job_search.txt";
|
||||
|
||||
FILE *fp = fopen( pFilename, "rt" );
|
||||
if ( !fp )
|
||||
{
|
||||
Q_snprintf( str, sizeof( str ), "Can't open '%s' for database info.", pFilename );
|
||||
MessageBox( str, "Error", MB_OK );
|
||||
EndDialog( 0 );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
char hostName[512], dbName[512], userName[512];
|
||||
if ( !ReadStringFromFile( fp, hostName, sizeof( hostName ) ) ||
|
||||
!ReadStringFromFile( fp, dbName, sizeof( dbName ) ) ||
|
||||
!ReadStringFromFile( fp, userName, sizeof( userName ) )
|
||||
)
|
||||
{
|
||||
fclose( fp );
|
||||
Q_snprintf( str, sizeof( str ), "'%s' has invalid format.", pFilename );
|
||||
MessageBox( str, "Error", MB_OK );
|
||||
EndDialog( 0 );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
m_DBName = dbName;
|
||||
m_HostName = hostName;
|
||||
m_UserName = userName;
|
||||
|
||||
fclose( fp );
|
||||
}
|
||||
|
||||
// Get the mysql interface.
|
||||
if ( !Sys_LoadInterface( "mysql_wrapper", MYSQL_WRAPPER_VERSION_NAME, &m_hMySQLDLL, (void**)&m_pSQL ) )
|
||||
return false;
|
||||
|
||||
if ( !m_pSQL->InitMySQL( m_DBName, m_HostName, m_UserName ) )
|
||||
{
|
||||
Q_snprintf( str, sizeof( str ), "Can't init MYSQL db (db = '%s', host = '%s', user = '%s')", (const char*)m_DBName, (const char*)m_HostName, (const char*)m_UserName );
|
||||
MessageBox( str, "Error", MB_OK );
|
||||
EndDialog( 0 );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Setup the headers for the job info list.
|
||||
struct
|
||||
{
|
||||
char *pText;
|
||||
int width;
|
||||
} titles[] =
|
||||
{
|
||||
{"Date", 100},
|
||||
{"User", 100},
|
||||
{"BSP Filename", 100},
|
||||
{"Running Time", 100},
|
||||
{"Job ID", 100}
|
||||
};
|
||||
for ( int i=0; i < ARRAYSIZE( titles ); i++ )
|
||||
{
|
||||
m_JobsList.InsertColumn( i, titles[i].pText, LVCFMT_LEFT, titles[i].width, i );
|
||||
}
|
||||
|
||||
|
||||
CUtlVector<char*> computerNames;
|
||||
CNetViewThread netView;
|
||||
netView.Init();
|
||||
DWORD startTime = GetTickCount();
|
||||
while ( 1 )
|
||||
{
|
||||
netView.GetComputerNames( computerNames, true );
|
||||
if ( computerNames.Count() > 0 )
|
||||
break;
|
||||
|
||||
Sleep( 30 );
|
||||
if ( GetTickCount() - startTime > 5000 )
|
||||
{
|
||||
Q_snprintf( str, sizeof( str ), "Unable to get computer names Can't init MYSQL db (db = '%s', host = '%s', user = '%s')", (const char*)m_DBName, (const char*)m_HostName, (const char*)m_UserName );
|
||||
MessageBox( str, "Error", MB_OK );
|
||||
EndDialog( 0 );
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
PopulateWorkerList( computerNames );
|
||||
PopulateUserList( computerNames );
|
||||
|
||||
|
||||
// Auto-select a worker?
|
||||
const char *pSelectWorker = FindArg( "-SelectWorker", NULL );
|
||||
if ( pSelectWorker )
|
||||
{
|
||||
int index = m_WorkerList.FindString( -1, pSelectWorker );
|
||||
if ( index != LB_ERR )
|
||||
{
|
||||
m_WorkerList.SetCurSel( index );
|
||||
OnDblclkWorkerList();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Setup our anchors.
|
||||
m_AnchorMgr.AddAnchor( this, GetDlgItem( IDC_SEARCH_BY_USER_PANEL ), ANCHOR_LEFT, ANCHOR_TOP, ANCHOR_WIDTH_PERCENT, ANCHOR_HEIGHT_PERCENT );
|
||||
m_AnchorMgr.AddAnchor( this, GetDlgItem( IDC_USER_LIST ), ANCHOR_LEFT, ANCHOR_TOP, ANCHOR_WIDTH_PERCENT, ANCHOR_HEIGHT_PERCENT );
|
||||
|
||||
m_AnchorMgr.AddAnchor( this, GetDlgItem( IDC_WORKER_PANEL ), ANCHOR_WIDTH_PERCENT, ANCHOR_TOP, ANCHOR_RIGHT, ANCHOR_HEIGHT_PERCENT );
|
||||
m_AnchorMgr.AddAnchor( this, GetDlgItem( IDC_WORKER_LIST ), ANCHOR_WIDTH_PERCENT, ANCHOR_TOP, ANCHOR_RIGHT, ANCHOR_HEIGHT_PERCENT );
|
||||
|
||||
m_AnchorMgr.AddAnchor( this, GetDlgItem( IDC_JOBS_PANEL ), ANCHOR_LEFT, ANCHOR_HEIGHT_PERCENT, ANCHOR_RIGHT, ANCHOR_BOTTOM );
|
||||
m_AnchorMgr.AddAnchor( this, GetDlgItem( IDC_JOBS_LIST ), ANCHOR_LEFT, ANCHOR_HEIGHT_PERCENT, ANCHOR_RIGHT, ANCHOR_BOTTOM );
|
||||
|
||||
m_AnchorMgr.AddAnchor( this, GetDlgItem( IDC_QUIT ), ANCHOR_WIDTH_PERCENT, ANCHOR_BOTTOM, ANCHOR_WIDTH_PERCENT, ANCHOR_BOTTOM );
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void CJobSearchDlg::PopulateWorkerList( CUtlVector<char*> &computerNames )
|
||||
{
|
||||
m_WorkerList.ResetContent();
|
||||
for ( int i=0; i < computerNames.Count(); i++ )
|
||||
{
|
||||
m_WorkerList.AddString( computerNames[i] );
|
||||
}
|
||||
}
|
||||
|
||||
void CJobSearchDlg::PopulateUserList( CUtlVector<char*> &computerNames )
|
||||
{
|
||||
m_UserList.ResetContent();
|
||||
for ( int i=0; i < computerNames.Count(); i++ )
|
||||
{
|
||||
m_UserList.AddString( computerNames[i] );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CJobSearchDlg::OnQuit()
|
||||
{
|
||||
EndDialog( 0 );
|
||||
}
|
||||
|
||||
void CJobSearchDlg::OnSize(UINT nType, int cx, int cy)
|
||||
{
|
||||
CDialog::OnSize(nType, cx, cy);
|
||||
|
||||
m_AnchorMgr.UpdateAnchors( this );
|
||||
}
|
86
utils/vmpi/vmpi_job_search/JobSearchDlg.h
Normal file
86
utils/vmpi/vmpi_job_search/JobSearchDlg.h
Normal file
@ -0,0 +1,86 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
#if !defined(AFX_JOBSEARCHDLG_H__833A83FF_35CC_42B5_AEB3_AE31C7FDF492__INCLUDED_)
|
||||
#define AFX_JOBSEARCHDLG_H__833A83FF_35CC_42B5_AEB3_AE31C7FDF492__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
// JobSearchDlg.h : header file
|
||||
//
|
||||
|
||||
#include "resource.h"
|
||||
#include "imysqlwrapper.h"
|
||||
#include "window_anchor_mgr.h"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CJobSearchDlg dialog
|
||||
|
||||
class CJobSearchDlg : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CJobSearchDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CJobSearchDlg();
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CJobSearchDlg)
|
||||
enum { IDD = IDD_VMPI_JOB_SEARCH };
|
||||
CListBox m_WorkerList;
|
||||
CListBox m_UserList;
|
||||
CListCtrl m_JobsList;
|
||||
//}}AFX_DATA
|
||||
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CJobSearchDlg)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
|
||||
void ClearJobsList();
|
||||
void RepopulateJobsList();
|
||||
|
||||
void PopulateWorkerList( CUtlVector<char*> &computerNames );
|
||||
void PopulateUserList( CUtlVector<char*> &computerNames );
|
||||
|
||||
int GetSelectedJobIndex();
|
||||
|
||||
|
||||
// Info on how we connected to the database so we can pass it to apps we launch.
|
||||
CString m_DBName, m_HostName, m_UserName;
|
||||
|
||||
|
||||
IMySQL* GetMySQL() { return m_pSQL; }
|
||||
IMySQL *m_pSQL;
|
||||
CSysModule *m_hMySQLDLL;
|
||||
|
||||
CWindowAnchorMgr m_AnchorMgr;
|
||||
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CJobSearchDlg)
|
||||
afx_msg void OnDblclkJobsList(NMHDR* pNMHDR, LRESULT* pResult);
|
||||
afx_msg void OnDblclkUserList();
|
||||
afx_msg void OnDblclkWorkerList();
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnQuit();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_JOBSEARCHDLG_H__833A83FF_35CC_42B5_AEB3_AE31C7FDF492__INCLUDED_)
|
15
utils/vmpi/vmpi_job_search/StdAfx.cpp
Normal file
15
utils/vmpi/vmpi_job_search/StdAfx.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// vmpi_browser_job_search.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
|
36
utils/vmpi/vmpi_job_search/StdAfx.h
Normal file
36
utils/vmpi/vmpi_job_search/StdAfx.h
Normal file
@ -0,0 +1,36 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__2CCE1890_EB30_4887_B493_6CAB022977E4__INCLUDED_)
|
||||
#define AFX_STDAFX_H__2CCE1890_EB30_4887_B493_6CAB022977E4__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||
|
||||
#include "tier0/basetypes.h"
|
||||
|
||||
#include <afxwin.h> // MFC core and standard components
|
||||
#include <afxext.h> // MFC extensions
|
||||
#include <afxdisp.h> // MFC Automation classes
|
||||
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // MFC support for Windows Common Controls
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__2CCE1890_EB30_4887_B493_6CAB022977E4__INCLUDED_)
|
BIN
utils/vmpi/vmpi_job_search/res/vmpi_browser_job_search.ico
Normal file
BIN
utils/vmpi/vmpi_job_search/res/vmpi_browser_job_search.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
13
utils/vmpi/vmpi_job_search/res/vmpi_browser_job_search.rc2
Normal file
13
utils/vmpi/vmpi_job_search/res/vmpi_browser_job_search.rc2
Normal file
@ -0,0 +1,13 @@
|
||||
//
|
||||
// VMPI_BROWSER_JOB_SEARCH.RC2 - resources Microsoft Visual C++ does not edit directly
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error this file is not editable by Microsoft Visual C++
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Add manually edited resources here...
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
32
utils/vmpi/vmpi_job_search/resource.h
Normal file
32
utils/vmpi/vmpi_job_search/resource.h
Normal file
@ -0,0 +1,32 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by vmpi_browser_job_search.rc
|
||||
//
|
||||
#define IDD_VMPI_BROWSER_JOB_SEARCH_DIALOG 102
|
||||
#define IDR_MAINFRAME 128
|
||||
#define IDD_VMPI_JOB_SEARCH 136
|
||||
#define IDC_QUIT 1000
|
||||
#define IDC_SEARCH_BY_USER_PANEL 1001
|
||||
#define IDC_WORKER_PANEL 1002
|
||||
#define IDC_JOBS_PANEL 1003
|
||||
#define IDC_USER_LIST 1015
|
||||
#define IDC_WORKER_LIST 1016
|
||||
#define IDC_JOBS_LIST 1017
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 129
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1004
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
75
utils/vmpi/vmpi_job_search/vmpi_browser_job_search.cpp
Normal file
75
utils/vmpi/vmpi_job_search/vmpi_browser_job_search.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
// vmpi_browser_job_search.cpp : Defines the class behaviors for the application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "vmpi_browser_job_search.h"
|
||||
#include "JobSearchDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CVMPIBrowserJobSearchApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVMPIBrowserJobSearchApp, CWinApp)
|
||||
//{{AFX_MSG_MAP(CVMPIBrowserJobSearchApp)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG
|
||||
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CVMPIBrowserJobSearchApp construction
|
||||
|
||||
CVMPIBrowserJobSearchApp::CVMPIBrowserJobSearchApp()
|
||||
{
|
||||
// TODO: add construction code here,
|
||||
// Place all significant initialization in InitInstance
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// The one and only CVMPIBrowserJobSearchApp object
|
||||
|
||||
CVMPIBrowserJobSearchApp theApp;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CVMPIBrowserJobSearchApp initialization
|
||||
|
||||
BOOL CVMPIBrowserJobSearchApp::InitInstance()
|
||||
{
|
||||
AfxEnableControlContainer();
|
||||
|
||||
// Standard initialization
|
||||
// If you are not using these features and wish to reduce the size
|
||||
// of your final executable, you should remove from the following
|
||||
// the specific initialization routines you do not need.
|
||||
|
||||
CJobSearchDlg dlg;
|
||||
m_pMainWnd = &dlg;
|
||||
int nResponse = dlg.DoModal();
|
||||
if (nResponse == IDOK)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with OK
|
||||
}
|
||||
else if (nResponse == IDCANCEL)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with Cancel
|
||||
}
|
||||
|
||||
// Since the dialog has been closed, return FALSE so that we exit the
|
||||
// application, rather than start the application's message pump.
|
||||
return FALSE;
|
||||
}
|
56
utils/vmpi/vmpi_job_search/vmpi_browser_job_search.h
Normal file
56
utils/vmpi/vmpi_job_search/vmpi_browser_job_search.h
Normal file
@ -0,0 +1,56 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
// vmpi_browser_job_search.h : main header file for the VMPI_BROWSER_JOB_SEARCH application
|
||||
//
|
||||
|
||||
#if !defined(AFX_VMPI_BROWSER_JOB_SEARCH_H__96197957_586A_4F10_ACEA_EBBB9E6FD619__INCLUDED_)
|
||||
#define AFX_VMPI_BROWSER_JOB_SEARCH_H__96197957_586A_4F10_ACEA_EBBB9E6FD619__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error include 'stdafx.h' before including this file for PCH
|
||||
#endif
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CVMPIBrowserJobSearchApp:
|
||||
// See vmpi_browser_job_search.cpp for the implementation of this class
|
||||
//
|
||||
|
||||
class CVMPIBrowserJobSearchApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
CVMPIBrowserJobSearchApp();
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CVMPIBrowserJobSearchApp)
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
|
||||
//{{AFX_MSG(CVMPIBrowserJobSearchApp)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_VMPI_BROWSER_JOB_SEARCH_H__96197957_586A_4F10_ACEA_EBBB9E6FD619__INCLUDED_)
|
184
utils/vmpi/vmpi_job_search/vmpi_browser_job_search.rc
Normal file
184
utils/vmpi/vmpi_job_search/vmpi_browser_job_search.rc
Normal file
@ -0,0 +1,184 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||
"\r\n"
|
||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
|
||||
"#ifdef _WIN32\r\n"
|
||||
"LANGUAGE 9, 1\r\n"
|
||||
"#pragma code_page(1252)\r\n"
|
||||
"#endif //_WIN32\r\n"
|
||||
"#include ""res\\vmpi_browser_job_search.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
|
||||
"#include ""afxres.rc"" // Standard components\r\n"
|
||||
"#endif\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDR_MAINFRAME ICON DISCARDABLE "res\\vmpi_browser_job_search.ico"
|
||||
|
||||
#ifndef _MAC
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904B0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileDescription", "vmpi_browser_job_search MFC Application\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "InternalName", "vmpi_browser_job_search\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2003\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "vmpi_browser_job_search.EXE\0"
|
||||
VALUE "ProductName", "vmpi_browser_job_search Application\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
#endif // !_MAC
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_VMPI_JOB_SEARCH, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 400
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 338
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_VMPI_JOB_SEARCH DIALOGEX 0, 0, 407, 345
|
||||
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "Job Search"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
GROUPBOX "Jobs",IDC_JOBS_PANEL,7,153,393,169
|
||||
LISTBOX IDC_USER_LIST,13,17,180,128,LBS_SORT |
|
||||
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "Search By User",IDC_SEARCH_BY_USER_PANEL,7,7,192,143
|
||||
LISTBOX IDC_WORKER_LIST,211,17,183,128,LBS_SORT |
|
||||
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "Search By Worker",IDC_WORKER_PANEL,205,7,195,143
|
||||
CONTROL "List3",IDC_JOBS_LIST,"SysListView32",LVS_REPORT |
|
||||
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,14,164,380,
|
||||
153
|
||||
PUSHBUTTON "&Quit",IDC_QUIT,192,327,23,14
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#define _AFX_NO_SPLITTER_RESOURCES
|
||||
#define _AFX_NO_OLE_RESOURCES
|
||||
#define _AFX_NO_TRACKER_RESOURCES
|
||||
#define _AFX_NO_PROPERTY_RESOURCES
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE 9, 1
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
#include "res\vmpi_browser_job_search.rc2" // non-Microsoft Visual C++ edited resources
|
||||
#include "afxres.rc" // Standard components
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
97
utils/vmpi/vmpi_job_search/vmpi_job_search.vpc
Normal file
97
utils/vmpi/vmpi_job_search/vmpi_job_search.vpc
Normal file
@ -0,0 +1,97 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// vmpi_job_search.VPC
|
||||
//
|
||||
// Project Script
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Macro SRCDIR "..\..\.."
|
||||
$Macro OUTBINDIR "$SRCDIR\..\game\bin"
|
||||
$Macro OUTBINNAME "vmpi_job_search"
|
||||
|
||||
$Include "$SRCDIR\vpc_scripts\source_exe_base.vpc"
|
||||
|
||||
$Configuration
|
||||
{
|
||||
$Compiler
|
||||
{
|
||||
$AdditionalIncludeDirectories "$BASE,..\,..\mysql\include"
|
||||
$PreprocessorDefinitions "$BASE;PROTECTED_THINGS_DISABLE;WINVER=0x501;NO_WARN_MBCS_MFC_DEPRECATION"
|
||||
$Create/UsePrecompiledHeader "Use Precompiled Header (/Yu)"
|
||||
$PrecompiledHeaderFile "Debug/vmpi_browser_job_search.pch"
|
||||
$EnableC++Exceptions "Yes (/EHsc)"
|
||||
}
|
||||
}
|
||||
|
||||
$Configuration "Debug"
|
||||
{
|
||||
$Linker
|
||||
{
|
||||
// Deprecated MBCS MFC libraries for VS 2013 (nafxcw.lib and nafxcwd.lib) can be downloaded from http://go.microsoft.com/?linkid=9832071
|
||||
$AdditionalDependencies "$BASE nafxcwd.lib"
|
||||
$IgnoreSpecificLibrary "nafxcw.lib libcmt.lib"
|
||||
}
|
||||
}
|
||||
|
||||
$Configuration "Release"
|
||||
{
|
||||
$Linker
|
||||
{
|
||||
// Deprecated MBCS MFC libraries for VS 2013 (nafxcw.lib and nafxcwd.lib) can be downloaded from http://go.microsoft.com/?linkid=9832071
|
||||
$AdditionalDependencies "$BASE nafxcw.lib libcmt.lib"
|
||||
$IgnoreSpecificLibrary "nafxcwd.lib libcmtd.lib"
|
||||
}
|
||||
}
|
||||
|
||||
$Project "vmpi_job_search"
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
-$File "$SRCDIR\public\tier0\memoverride.cpp"
|
||||
|
||||
$File "..\net_view_thread.cpp"
|
||||
$File "vmpi_browser_job_search.cpp"
|
||||
$File "vmpi_browser_job_search.rc"
|
||||
$File "..\window_anchor_mgr.cpp"
|
||||
|
||||
$File "JobSearchDlg.cpp" \
|
||||
"..\vmpi_browser_helpers.cpp"
|
||||
{
|
||||
$Configuration
|
||||
{
|
||||
$Compiler
|
||||
{
|
||||
$Create/UsePrecompiledHeader "Not Using Precompiled Headers"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$File "StdAfx.cpp"
|
||||
{
|
||||
$Configuration
|
||||
{
|
||||
$Compiler
|
||||
{
|
||||
$Create/UsePrecompiledHeader "Create Precompiled Header (/Yc)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$Folder "Header Files"
|
||||
{
|
||||
$File "JobSearchDlg.h"
|
||||
$File "..\mysql_wrapper.h"
|
||||
$File "..\net_view_thread.h"
|
||||
$File "Resource.h"
|
||||
$File "StdAfx.h"
|
||||
$File "..\vmpi_browser_helpers.h"
|
||||
$File "vmpi_browser_job_search.h"
|
||||
$File "..\window_anchor_mgr.h"
|
||||
}
|
||||
|
||||
$Folder "Resource Files"
|
||||
{
|
||||
$File "res\vmpi_browser_job_search.ico"
|
||||
$File "res\vmpi_browser_job_search.rc2"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user