[GME-commit] GMESRC/GME/XmlBackEnd SvnBench.cpp, 1.1, 1.2 SvnBench.h, 1.1, 1.2 svauto.idl, 1.2, 1.3 resource.h, 1.6, 1.7 SvnTester.cpp, 1.4, 1.5 SvnTester.h, 1.2, 1.3 XmlBackEnd.rc, 1.8, 1.9

Log messages of CVS commits gme-commit at list.isis.vanderbilt.edu
Fri Apr 18 11:31:54 CDT 2008


Update of /project/gme-repository/GMESRC/GME/XmlBackEnd
In directory escher:/tmp/cvs-serv6266

Modified Files:
	SvnBench.cpp SvnBench.h svauto.idl resource.h SvnTester.cpp 
	SvnTester.h XmlBackEnd.rc 
Log Message:
Update and TestConn commands implemented on Svn Bench.

Bench dlg is auto-resizing, provides tooltips.






CVS User: Zoltan Molnar, ISIS (zolmol)

Index: XmlBackEnd.rc
===================================================================
RCS file: /project/gme-repository/GMESRC/GME/XmlBackEnd/XmlBackEnd.rc,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** XmlBackEnd.rc	15 Feb 2008 21:06:43 -0000	1.8
--- XmlBackEnd.rc	18 Apr 2008 16:31:51 -0000	1.9
***************
*** 186,190 ****
  END
  
! IDD_SVN_BENCH_DIALOG DIALOGEX 0, 0, 246, 108
  STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | 
      WS_THICKFRAME
--- 186,190 ----
  END
  
! IDD_SVN_BENCH_DIALOG DIALOGEX 0, 0, 246, 126
  STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | 
      WS_THICKFRAME
***************
*** 192,196 ****
  FONT 8, "MS Shell Dlg", 400, 0, 0x1
  BEGIN
!     PUSHBUTTON      "Close",IDC_CLOSE_BUTTON,178,84,50,14
      COMBOBOX        IDC_COMBO_URL_AND_PATH,7,26,232,55,CBS_DROPDOWN | 
                      CBS_SORT | WS_VSCROLL | WS_TABSTOP
--- 192,196 ----
  FONT 8, "MS Shell Dlg", 400, 0, 0x1
  BEGIN
!     PUSHBUTTON      "Close",IDC_CLOSE_BUTTON,178,104,50,14
      COMBOBOX        IDC_COMBO_URL_AND_PATH,7,26,232,55,CBS_DROPDOWN | 
                      CBS_SORT | WS_VSCROLL | WS_TABSTOP
***************
*** 203,212 ****
      PUSHBUTTON      "&Info",IDC_INFO_BUTTON,13,62,50,14
      PUSHBUTTON      "&Status",IDC_STATUS_BUTTON,68,62,50,14
!     PUSHBUTTON      "&Commit",IDC_COMMIT_BUTTON,123,62,50,14
!     PUSHBUTTON      "Clean&Up",IDC_CLEANUP_BUTTON,178,62,50,14
!     PUSHBUTTON      "&Resolve",IDC_RESOLVE_BUTTON,13,84,50,14
!     PUSHBUTTON      "Cmd.e&xe",IDC_CMDEXE_BUTTON,68,84,50,14
!     PUSHBUTTON      "Check&Out",IDC_CHECKOUT_BUTTON,123,84,50,14
!     LTEXT           "Url or Path",IDC_STATIC,11,14,35,8
  END
  
--- 203,214 ----
      PUSHBUTTON      "&Info",IDC_INFO_BUTTON,13,62,50,14
      PUSHBUTTON      "&Status",IDC_STATUS_BUTTON,68,62,50,14
!     PUSHBUTTON      "Co&mmit",IDC_COMMIT_BUTTON,123,62,50,14
!     PUSHBUTTON      "&CleanUp",IDC_CLEANUP_BUTTON,178,62,50,14
!     PUSHBUTTON      "&Resolve",IDC_RESOLVE_BUTTON,13,83,50,14
!     PUSHBUTTON      "Cmd.e&xe",IDC_CMDEXE_BUTTON,68,83,50,14
!     PUSHBUTTON      "Check&Out",IDC_CHECKOUT_BUTTON,123,83,50,14
!     LTEXT           "Url or Path Parameter:",IDC_STATIC,11,14,73,8
!     PUSHBUTTON      "&Update",IDC_UPDATE_BUTTON,178,83,50,14
!     PUSHBUTTON      "&Test Setup",IDC_TESTCONN_BUTTON,13,104,50,14
  END
  
***************
*** 306,310 ****
          RIGHTMARGIN, 239
          TOPMARGIN, 7
!         BOTTOMMARGIN, 101
      END
  
--- 308,312 ----
          RIGHTMARGIN, 239
          TOPMARGIN, 7
!         BOTTOMMARGIN, 119
      END
  

Index: SvnBench.h
===================================================================
RCS file: /project/gme-repository/GMESRC/GME/XmlBackEnd/SvnBench.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** SvnBench.h	13 Feb 2008 18:54:57 -0000	1.1
--- SvnBench.h	18 Apr 2008 16:31:51 -0000	1.2
***************
*** 24,27 ****
--- 24,28 ----
  
  protected:
+ 	void save();
  	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  	virtual void OnOK();
***************
*** 40,43 ****
--- 41,50 ----
  	afx_msg void OnBnClickedCommitButton();
  	afx_msg void OnBnClickedCheckoutButton();
+ 	afx_msg void OnBnClickedUpdateButton();
+ 	afx_msg void OnBnClickedTestConnButton();
+ 	afx_msg void OnPaint();
+ 	afx_msg BOOL OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult);
+ 	afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
+ 	afx_msg void OnCbnEditchangeComboUrlAndPath();
  
  	BOOL         m_bRecursive;

Index: SvnTester.cpp
===================================================================
RCS file: /project/gme-repository/GMESRC/GME/XmlBackEnd/SvnTester.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** SvnTester.cpp	15 Feb 2008 21:06:43 -0000	1.4
--- SvnTester.cpp	18 Apr 2008 16:31:51 -0000	1.5
***************
*** 4,7 ****
--- 4,9 ----
  #include "SvnTester.h"
  #include "SvnLoginDlg.h"
+ #include "SvnTestDlg.h"
+ #include "CommonMFC.h"
  
  // CSvnTester
***************
*** 524,527 ****
--- 526,749 ----
  
  	return S_OK;
+ }
+ 
+ STDMETHODIMP CSvnTester::update(BSTR p_path, VARIANT_BOOL p_byAPI)
+ {
+ 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ 	try {
+ 		if( p_byAPI == VARIANT_TRUE)
+ 		{
+ #if(USESVN)
+ 			if( getLoginData())
+ 			{
+ 				m_apiSvn = new HiClient( m_username, m_password);
+ 				if( !m_apiSvn) {
+ 					AfxMessageBox( "SVN implementation client object could not be created!");
+ 					throw hresult_exception( E_FAIL);
+ 				}
+ 
+ 				std::string path;
+ 				CopyTo( p_path, path);
+ 
+ 				m_apiSvn->getLatest( path);
+ 			}
+ 			else throw hresult_exception(E_FAIL);
+ #else
+ 			return E_NOTIMPL;
+ #endif
+ 		}
+ 		else
+ 		{
+ 			m_cmdSvn = new CmdClient( false /*m_svnShowCmdLineWindows*/, true /*m_svnRedirectOutput*/); 
+ 			if( !m_cmdSvn) {
+ 				AfxMessageBox( "SVN implementation client object could not be created!");
+ 				throw hresult_exception( E_FAIL);
+ 			}
+ 
+ 			std::string path;
+ 			CopyTo( p_path, path);
+ 			
+ 			m_cmdSvn->getLatest( path);
+ 		}
+ 		return S_OK;
+ 
+ 	}catch(hresult_exception &e) {
+ 		ASSERT( 0);
+ 		return E_FAIL;
+ 	}
+ 
+ 	return S_OK;
+ }
+ 
+ bool createFile( CString& p_path, CString& p_res)
+ {
+ const char* data = 
+ "### --File created by GME-- ###\n\
+ ### Section for configuring tunnel agents.\n\
+ [tunnels]\n\
+ ### Configure svn protocol tunnel schemes here.\n\
+ ### the 'ssh' scheme is defined.  You can define other schemes to\n\
+ ### be used with 'svn+scheme://hostname/path' URLs.  A scheme\n\
+ ### definition is simply a command, optionally prefixed by an\n\
+ ### environment variable name which can override the command if it\n\
+ ### is defined.  The command (or environment variable) may contain\n\
+ ### arguments, using standard shell quoting for arguments with\n\
+ ### spaces.  The command will be invoked as:\n\
+ ###   <command> <hostname> svnserve -t\n\
+ ### (If the URL includes a username, then the hostname will be\n\
+ ### passed to the tunnel agent as <user>@<hostname>.)  If the\n\
+ ### built-in ssh scheme were not predefined, it could be defined\n\
+ ### as:\n\
+ #ssh = $SVN_SSH ssh\n\
+ #ssh = c:\\bin\\plink.exe\n\
+ #ssh = c:\\bin\\TortoisePlink.exe";
+ 
+ 	CString &res = p_res; // it is not cleared !!!
+ 	FILE *f = 0;
+ 	f = fopen( (LPCTSTR) p_path, "r");
+ 	if( !f)
+ 	{
+ 		f = fopen( (LPCTSTR) p_path, "w");
+ 		int sz = 0;
+ 		if( f) sz = fwrite( data, strlen(data), 1, f);
+ 
+ 		if( sz == 1)
+ 		{
+ 			res.Append( "OK - Configuration file '");
+ 			res.Append( p_path);
+ 			res.Append( "' created succesfully.\n");
+ 		}
+ 		else
+ 		{
+ 			res.Append( "FAILED - Configuration file '");
+ 			res.Append( p_path);
+ 			res.Append( "' was not found and could not be created.\n");
+ 			return false;
+ 		}
+ 	}
+ 	else
+ 	{
+ 		res.Append( "OK - Configuration file '");
+ 		res.Append( p_path);
+ 		res.Append( "' found.\n");
+ 	}
+ 
+ 	fclose( f);
+ 	return true;
+ }
+ 
+ bool createDir( const CString& p_path, const CString& p_dirFriendlyName, CString& p_res)
+ {
+ 	WIN32_FILE_ATTRIBUTE_DATA attr;
+ 	BOOL    succ = TRUE;
+ 	CString &res = p_res; // it is not cleared !!!
+ 
+ 	succ = GetFileAttributesEx( p_path, GetFileExInfoStandard, &attr);
+ 	if( succ == TRUE && ( FILE_ATTRIBUTE_DIRECTORY == (attr.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))) { 
+ 		res.Append( "OK - ");
+ 		res.Append( p_dirFriendlyName);
+ 		res.Append( " folder found: '");
+ 		res.Append( p_path);
+ 		res.Append( "'.\n");
+ 	} else
+ 	{
+ 		succ = CreateDirectory( p_path, NULL);
+ 		if( succ == TRUE)
+ 		{
+ 			res.Append( "OK - ");
+ 			res.Append( p_dirFriendlyName);
+ 			res.Append( " folder created succesfully: '");
+ 			res.Append( p_path);
+ 			res.Append( "'.\n");
+ 		}
+ 		else
+ 		{
+ 			res.Append( "FAILED - ");
+ 			res.Append( p_dirFriendlyName);
+ 			res.Append( " folder was not found and could not be created: '");
+ 			res.Append( p_path);
+ 			res.Append( "'.\n");
+ 			return false;
+ 		}
+ 	}
+ 
+ 	return true;
+ }
+ 
+ STDMETHODIMP CSvnTester::testSubversionSettingsDir(BSTR* p_resultMsg)
+ {
+ 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ 
+ 	CString str_res;
+ 	CComBSTR res;
+ 
+ 	try 
+ 	{
+ 		char        app_data_path[ _MAX_PATH];
+ 		if( !SHGetSpecialFolderPath( NULL, app_data_path, CSIDL_APPDATA, true)) //most likely C:\Documents and Settings\<username>\Application Data
+ 		{
+ 			res.Append( "FAILED - Application Data folder in user directory could not be found.");
+ 			return S_OK;
+ 		}
+ 		else
+ 		{
+ 			res.Append( "OK - Application Data folder found: '");
+ 			res.Append( app_data_path);
+ 			res.Append( "'.\n");
+ 
+ 			WIN32_FILE_ATTRIBUTE_DATA attr;
+ 			BOOL res;
+ 			CString path;
+ 			
+ 			path = CString( app_data_path) + "\\Subversion";
+ 			if( !createDir( path, "Subversion", str_res))
+ 				throw hresult_exception(E_FAIL); // error
+ 
+ 			path += "\\config";         // a file
+ 			createFile( path, str_res); // retval disregarded here
+ 
+ 			path = CString( app_data_path) + "\\Subversion\\auth";
+ 			if( !createDir( path, "Subversion/auth", str_res))
+ 				throw hresult_exception(E_FAIL); // error
+ 
+ 			path = CString(app_data_path) + "\\Subversion\\auth\\svn.simple";
+ 			if( !createDir( path, "Credential directory [Subversion/auth/svn.simple]", str_res))
+ 				throw hresult_exception(E_FAIL); // error
+ 
+ 			path = CString(app_data_path) + "\\Subversion\\auth\\svn.ssl.server";
+ 			if( !createDir( path, "Certificates directory [Subversion/auth/svn.ssl.server]", str_res))
+ 				throw hresult_exception(E_FAIL); // error
+ 
+ 		}
+ 		
+ 		CopyTo( str_res, &res);
+ 		*p_resultMsg = res.Detach();
+ 	}
+ 	catch(hresult_exception &e) {
+ 		CopyTo( str_res, &res);
+ 		*p_resultMsg = res.Detach();
+ 
+ 		ASSERT( 0);
+ 		return E_FAIL;
+ 	}
+ 
+ 	return S_OK;
+ }
+ STDMETHODIMP CSvnTester::testSubversionSettingsDlg()
+ {
+ 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ 
+ 	CComBSTR res;
+ 	HRESULT hr = testSubversionSettingsDir( &res);
+ 	
+ 	CString rstr;
+ 	CopyTo( res, rstr);
+ 	rstr.Replace( "\n", "\r\n");
+ 
+ 	CSvnTestDlg d;
+ 	d.setContent( rstr);
+ 	d.DoModal();
+ 
+ 	return hr;
  }
  

Index: svauto.idl
===================================================================
RCS file: /project/gme-repository/GMESRC/GME/XmlBackEnd/svauto.idl,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** svauto.idl	13 Feb 2008 18:54:57 -0000	1.2
--- svauto.idl	18 Apr 2008 16:31:51 -0000	1.3
***************
*** 53,56 ****
--- 53,59 ----
  	[id(9), helpstring("method lock")]    HRESULT lock    ([in] BSTR path, [in] VARIANT_BOOL force, [in] VARIANT_BOOL byAPI);
  	[id(10), helpstring("method unlock")] HRESULT unlock  ([in] BSTR path, [in] VARIANT_BOOL force, [in] VARIANT_BOOL byAPI);
+ 	[id(11), helpstring("method update")] HRESULT update  ([in] BSTR path, [in] VARIANT_BOOL byAPI);
+ 	[id(12), helpstring("method testSubversionSettingsDir")] HRESULT testSubversionSettingsDir( [out, retval] BSTR* resultMsg);
+ 	[id(13), helpstring("method testSubversionSettingsDlg")] HRESULT testSubversionSettingsDlg();
  };
  

Index: resource.h
===================================================================
RCS file: /project/gme-repository/GMESRC/GME/XmlBackEnd/resource.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** resource.h	15 Feb 2008 21:06:43 -0000	1.6
--- resource.h	18 Apr 2008 16:31:51 -0000	1.7
***************
*** 49,52 ****
--- 49,55 ----
  #define IDC_RADIO_PPK                   234
  #define IDC_EDIT_REALM                  235
+ #define IDC_UPDATE_BUTTON               236
+ #define IDC_TESTCONN_BUTTON             237
+ #define IDC_STATIC2                     238
  
  // Next default values for new objects
***************
*** 56,60 ****
  #define _APS_NEXT_RESOURCE_VALUE        232
  #define _APS_NEXT_COMMAND_VALUE         32768
! #define _APS_NEXT_CONTROL_VALUE         236
  #define _APS_NEXT_SYMED_VALUE           107
  #endif
--- 59,63 ----
  #define _APS_NEXT_RESOURCE_VALUE        232
  #define _APS_NEXT_COMMAND_VALUE         32768
! #define _APS_NEXT_CONTROL_VALUE         239
  #define _APS_NEXT_SYMED_VALUE           107
  #endif

Index: SvnBench.cpp
===================================================================
RCS file: /project/gme-repository/GMESRC/GME/XmlBackEnd/SvnBench.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** SvnBench.cpp	13 Feb 2008 18:54:57 -0000	1.1
--- SvnBench.cpp	18 Apr 2008 16:31:51 -0000	1.2
***************
*** 102,107 ****
--- 102,113 ----
  	ON_BN_CLICKED(IDC_CMDEXE_BUTTON, OnBnClickedCmdexeButton)
  	ON_BN_CLICKED(IDC_CLOSE_BUTTON, OnBnClickedCloseButton)
+ 	ON_BN_CLICKED(IDC_UPDATE_BUTTON, OnBnClickedUpdateButton)
+ 	ON_BN_CLICKED(IDC_TESTCONN_BUTTON, OnBnClickedTestConnButton)
  	ON_WM_SIZE()
  	ON_WM_CREATE()
+ 	ON_WM_PAINT()
+ 	ON_WM_HELPINFO()
+ 	ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify)
+ 	ON_CBN_EDITCHANGE(IDC_COMBO_URL_AND_PATH, OnCbnEditchangeComboUrlAndPath)
  END_MESSAGE_MAP()
  
***************
*** 111,114 ****
--- 117,121 ----
  {
  	CDialog::OnInitDialog();
+ 	EnableToolTips(TRUE);
  
  	CRect lst_rect;
***************
*** 166,169 ****
--- 173,177 ----
  
  		m_lst.SetWindowPos( NULL, m_leftPad, lst_rect.top, width > 20? width: 20, lst_rect.Height(), SWP_NOZORDER);
+ 		Invalidate(); // just for the sake of SIZEGRIP, which would leave spots otherwise
  	}
  }
***************
*** 181,184 ****
--- 189,193 ----
  	UpdateData( TRUE);
  	BeginWaitCursor();
+ 	save();
  	try
  	{
***************
*** 193,196 ****
--- 202,206 ----
  	UpdateData( TRUE);
  	BeginWaitCursor();
+ 	save();
  	try
  	{
***************
*** 205,208 ****
--- 215,219 ----
  	UpdateData( TRUE);
  	BeginWaitCursor();
+ 	save();
  	try
  	{
***************
*** 217,220 ****
--- 228,232 ----
  	UpdateData( TRUE);
  	BeginWaitCursor();
+ 	save();
  	try
  	{
***************
*** 230,233 ****
--- 242,246 ----
  	UpdateData( TRUE);
  	BeginWaitCursor();
+ 	save();
  	try
  	{
***************
*** 238,245 ****
--- 251,272 ----
  }
  
+ void CSvnBench::OnBnClickedUpdateButton()
+ {
+ 	UpdateData( TRUE);
+ 	BeginWaitCursor();
+ 	save();
+ 	try
+ 	{
+ 		CSvnHelper::invokeUpdate( (LPCTSTR) m_lstStringVal, !m_bCmdExeOrAPI);
+ 	}
+ 	catch(...) { ASSERT(0); }
+ 	EndWaitCursor();
+ }
+ 
  void CSvnBench::OnBnClickedCheckoutButton()
  {
  	UpdateData( TRUE);
  	BeginWaitCursor();
+ 	save();
  	try
  	{
***************
*** 262,266 ****
  {
  	UpdateData( TRUE);
! 	
  	//CString cmd = "cd /d ";
  	//cmd += m_lstStringVal;
--- 289,293 ----
  {
  	UpdateData( TRUE);
! 	save();
  	//CString cmd = "cd /d ";
  	//cmd += m_lstStringVal;
***************
*** 272,277 ****
--- 299,407 ----
  }
  
+ void CSvnBench::OnBnClickedTestConnButton()
+ {
+ 	CSvnHelper::invokeTestSubDirs();
+ }
+ 
  void CSvnBench::OnBnClickedCloseButton()
  {
  	CDialog::EndDialog(IDOK);
+ }
+ 
+ void CSvnBench::OnPaint()
+ {
+ 	// just for the sake of SIZEGRIP
+ 	CPaintDC dc(this); // device context for painting
+ 	CRect rc;
+ 	GetClientRect(&rc);
+ 
+ 	rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
+ 	rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);
+ 
+ 	dc.DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
+ }
+ 
+ void CSvnBench::save()
+ {
+ 	if( m_lstStringVal == "<<select from paths below>>")
+ 		return;
+ 	if( -1 == m_lst.FindStringExact( 0, m_lstStringVal))
+ 		m_lst.InsertString( 0, /*m_lst.GetCount(),*/ m_lstStringVal);
+ }
+ 
+ BOOL CSvnBench::OnHelpInfo(HELPINFO* pHelpInfo)
+ {
+ 	// TODO: Add your message handler code here and/or call default
+ 
+ 	return CDialog::OnHelpInfo(pHelpInfo);
+ }
+ 
+ //Notification handler
+ BOOL CSvnBench::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
+ {
+ 	// need to handle both ANSI and UNICODE versions of the message
+ 	TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
+ 	TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
+ 	UINT            nID = pNMHDR->idFrom;
+ 	
+ 	CString tip;
+ 
+ 	if( pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
+ 	    pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
+ 	{
+ 		// idFrom is actually the HWND of the tool
+ 		nID = ::GetDlgCtrlID((HWND)nID);
+ 	}
+ 
+ 	if( nID != 0) // will be zero on a separator
+ 	{
+ 		//tip.Format("Control ID = %d", nID);
+ 		switch( nID)
+ 		{
+ 			      case IDC_INFO_BUTTON:    tip = "Information about a given local directory/file or url identified resource";
+ 			break;case IDC_STATUS_BUTTON:  tip = "Status of a local directory/file";
+ 			break;case IDC_CLEANUP_BUTTON: tip = "Resume/continue a suspended operation, including removing locks on directories";
+ 			break;case IDC_RESOLVE_BUTTON: tip = "Indicates to the server that conflict resolution has been finished";
+ 			break;case IDC_COMMIT_BUTTON:  tip = "Send local modifications to the server and save them";
+ 			break;case IDC_CHECKOUT_BUTTON:tip = "Download a versioned directory to a local directory. Two parameters!";
+ 			break;case IDC_CMDEXE_BUTTON:  tip = "Command prompt, parameter indicates startup directory";
+ 			break;case IDC_CLOSE_BUTTON:   tip = "Closes dialog";
+ 			break;case IDC_UPDATE_BUTTON:  tip = "Update your local copy with changes from the server";
+ 			break;case IDC_TESTCONN_BUTTON:tip = "Check and create configuration directories and files for Subversion";
+ 		};
+ 
+ 	}
+ 
+ 	if( pNMHDR->code == TTN_NEEDTEXTA)
+ 		lstrcpyn(pTTTA->szText, tip, sizeof(pTTTA->szText));
+ 	else
+ 		::MultiByteToWideChar( CP_ACP , 0, tip, -1, pTTTW->szText, sizeof(pTTTW->szText));
+ 
+ 	*pResult = 0;
+ 	return TRUE;    // message was handled
+ }
+ 
+ void CSvnBench::OnCbnEditchangeComboUrlAndPath()
+ {
+ 	// this code is responsible for stretching the window horizontally
+ 	// as the dropdown combobox's horizontal edit field is filling up with
+ 	// user typed content, because no more characters allowed than the width :(
+ 	CString url_text;
+ 	m_lst.GetWindowText( url_text); // thus we didn't do UpdateData() here
+ 
+ 	CSize   url_len;
+ 	{
+ 		CClientDC g( this);
+ 		g.SelectObject( m_lst.GetFont());
+ 		url_len = g.GetTextExtent( url_text);
+ 	}
+ 
+ 	CRect r;
+ 	GetWindowRect( r);
+ 
+ 	if( m_leftPad + url_len.cx + m_rightPad + 50 > r.Width()) // the text almost filled up the provided space in the Dropdown list's header box
+ 	{
+ 		r.right += m_leftPad + url_len.cx + m_rightPad + 50 - r.Width(); // increase the width of the window by the overused space
+ 		SetWindowPos( 0, r.left, r.top, r.Width(), r.Height(), SWP_NOZORDER);
+ 	}
  }

Index: SvnTester.h
===================================================================
RCS file: /project/gme-repository/GMESRC/GME/XmlBackEnd/SvnTester.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** SvnTester.h	13 Feb 2008 18:54:57 -0000	1.2
--- SvnTester.h	18 Apr 2008 16:31:51 -0000	1.3
***************
*** 53,56 ****
--- 53,59 ----
  	STDMETHOD(lock)    (BSTR path, VARIANT_BOOL force, VARIANT_BOOL byAPI);
  	STDMETHOD(unlock)  (BSTR path, VARIANT_BOOL force, VARIANT_BOOL byAPI);
+ 	STDMETHOD(update)  (BSTR path, VARIANT_BOOL byApi);
+ 	STDMETHOD(testSubversionSettingsDir) (BSTR* resultMsg);
+ 	STDMETHOD(testSubversionSettingsDlg) ();
  protected:
  	bool        getLoginData();



More information about the GME-commit mailing list