diff options
| author | Baptiste Lepilleur <gaiacrtn@free.fr> | 2002-05-22 16:27:26 +0000 |
|---|---|---|
| committer | Baptiste Lepilleur <gaiacrtn@free.fr> | 2002-05-22 16:27:26 +0000 |
| commit | 7edd0684368ed3c43fe2707d1d34d6b7590d9fd6 (patch) | |
| tree | 7da10dc7bf683242741009a71fd216a3390c650b /src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp | |
| parent | a882d92fce563e1d0612f16cfa48956fe904d92b (diff) | |
| download | cppunit-7edd0684368ed3c43fe2707d1d34d6b7590d9fd6.tar.gz | |
Src/msvc6/testrunner/MsDevCallerListCtrl.
src/msvc6/testrunner/MsDevCallerListCtrl.h:
* src/msvc6/testrunner/MsDevCallerListCtrl.cpp:
* src/msvc6/testrunner/Resource.h:
* src/msvc6/testrunner/TestRunner.rc:
* src/msvc6/testrunner/TestRunnerDlg.cpp:
* src/msvc6/testrunner/TestRunnerModel.h:
* src/msvc6/testpluginrunner/TestPlugInRunner.rc:
* src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp:
* src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h:
* src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp: integrated patch from
Marco Welti (Welti@GretagMacbeth.ch) with a few clean up.
Display the name of the test being run during above the progress bar. Allow the
VC++ add-ins to works with TestPlugInRunner (COM init). DLL name can be specified
on the command line after flag '-testsuite'. Display wait cursor, clear and reload
history when reloading DLL.
* THANKS: added Marco Welti to the list.
Diffstat (limited to 'src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp')
| -rw-r--r-- | src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp | 159 |
1 files changed, 106 insertions, 53 deletions
diff --git a/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp b/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp index 0f1aaba..cf8d566 100644 --- a/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp +++ b/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp @@ -5,6 +5,7 @@ #include "TestPlugInRunnerDlg.h" #include "TestPlugIn.h" #include "TestPlugInException.h" +#include <algorithm> #ifdef _DEBUG #define new DEBUG_NEW @@ -16,31 +17,33 @@ static char THIS_FILE[] = __FILE__; // TestPlugInRunnerDlg dialog TestPlugInRunnerDlg::TestPlugInRunnerDlg( TestPlugInRunnerModel *model, - CWnd* pParent ) : - TestRunnerDlg( model, IDD_TEST_PLUG_IN_RUNNER, pParent ) + CWnd* pParent ) + : TestRunnerDlg( model, IDD_TEST_PLUG_IN_RUNNER, pParent ) { - //{{AFX_DATA_INIT(TestPlugInRunnerDlg) - // NOTE: the ClassWizard will add member initialization here - //}}AFX_DATA_INIT - // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 - m_hIcon = AfxGetApp()->LoadIcon(IDR_TEST_PLUGIN_RUNNER); + //{{AFX_DATA_INIT(TestPlugInRunnerDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 + m_hIcon = AfxGetApp()->LoadIcon(IDR_TEST_PLUGIN_RUNNER); } -void TestPlugInRunnerDlg::DoDataExchange(CDataExchange* pDX) + +void +TestPlugInRunnerDlg::DoDataExchange( CDataExchange* pDX ) { - TestRunnerDlg::DoDataExchange(pDX); - //{{AFX_DATA_MAP(TestPlugInRunnerDlg) - // NOTE: the ClassWizard will add DDX and DDV calls here - //}}AFX_DATA_MAP + TestRunnerDlg::DoDataExchange(pDX); + //{{AFX_DATA_MAP(TestPlugInRunnerDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(TestPlugInRunnerDlg, TestRunnerDlg) - //{{AFX_MSG_MAP(TestPlugInRunnerDlg) - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - ON_BN_CLICKED(IDC_CHOOSE_DLL, OnChooseDll) - ON_BN_CLICKED(IDC_RELOAD_DLL, OnReloadDll) - //}}AFX_MSG_MAP + //{{AFX_MSG_MAP(TestPlugInRunnerDlg) + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_CHOOSE_DLL, OnChooseDll) + ON_BN_CLICKED(IDC_RELOAD_DLL, OnReloadDll) + //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// @@ -48,16 +51,17 @@ END_MESSAGE_MAP() BOOL TestPlugInRunnerDlg::OnInitDialog() { - TestRunnerDlg::OnInitDialog(); - - // Set the icon for this dialog. The framework does this automatically - // when the application's main window is not a dialog - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon - - // TODO: Add extra initialization here - - return TRUE; // return TRUE unless you set the focus to a control + TestRunnerDlg::OnInitDialog(); + + // Set the icon for this dialog. The framework does this automatically + // when the application's main window is not a dialog + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + // TODO: Add extra initialization here + loadPluginIfNesseccary(); + + 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 @@ -66,34 +70,35 @@ BOOL TestPlugInRunnerDlg::OnInitDialog() void TestPlugInRunnerDlg::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 - { - TestRunnerDlg::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 + { + TestRunnerDlg::OnPaint(); + } } + // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR TestPlugInRunnerDlg::OnQueryDragIcon() { - return (HCURSOR) m_hIcon; + return (HCURSOR) m_hIcon; } @@ -115,9 +120,7 @@ TestPlugInRunnerDlg::OnChooseDll() try { - TestPlugIn *plugIn = new TestPlugIn( std::string( dlg.GetPathName() ) ); - plugInModel().setPlugIn( plugIn ); - updateHistoryCombo(); + loadDll(std::string(dlg.GetPathName())); } catch ( TestPlugInException &e ) { @@ -129,5 +132,55 @@ TestPlugInRunnerDlg::OnChooseDll() void TestPlugInRunnerDlg::OnReloadDll() { + reset(); plugInModel().reloadPlugIn(); } + + +std::list<std::string> +TestPlugInRunnerDlg::getCommandLineArguments() +{ + int argc; + LPWSTR *argv = ::CommandLineToArgvW( ::GetCommandLineW(), &argc ); + + std::list<std::string> arguments; + for( int index = 0; index < argc; index++ ) + arguments.push_back( std::string( CString( argv[index] ) ) ); + + ::GlobalFree( argv ); + + return arguments; +} + + +void +TestPlugInRunnerDlg::loadPluginIfNesseccary() +{ + std::list<std::string> argv = getCommandLineArguments(); + std::list<std::string>::iterator iter = std::find( argv.begin(), + argv.end(), + std::string( "-testsuite" ) ); + + if ( iter == argv.end() ) + return; + + try + { + loadDll( *++iter ); + } + catch( std::exception &e ) + { + AfxMessageBox( e.what() ); + } +} + + +void +TestPlugInRunnerDlg::loadDll( std::string path ) +{ + TestPlugIn *plugIn = new TestPlugIn( path ); + plugInModel().setPlugIn( plugIn ); + + m_model->selectHistoryTest( plugInModel().rootTest() ); + updateHistoryCombo(); +} |
