Browse Source

merged in Sqlite Branch

git-svn-id: svn://svn.code.sf.net/p/ditto-cp/code/trunk@339 595ec19a-5cb4-439b-94a8-42fb3063c22c
sabrogden 19 years ago
parent
commit
22d5ce446e
100 changed files with 18180 additions and 2119 deletions
  1. 15 4
      About.cpp
  2. 1 0
      About.h
  3. 50 0
      AccessToSqlite.cpp
  4. 13 0
      AccessToSqlite.h
  5. 366 0
      AccessToSqlite/AccessToSqlite.cpp
  6. 6 0
      AccessToSqlite/AccessToSqlite.def
  7. 55 0
      AccessToSqlite/AccessToSqlite.h
  8. 119 0
      AccessToSqlite/AccessToSqlite.rc
  9. 414 0
      AccessToSqlite/AccessToSqlite.vcproj
  10. 65 0
      AccessToSqlite/AccessToSqlite.vcproj.BROGDEN.Brogdens.user
  11. 469 0
      AccessToSqlite/Clip.cpp
  12. 129 0
      AccessToSqlite/Clip.h
  13. 252 0
      AccessToSqlite/Convert.cpp
  14. 26 0
      AccessToSqlite/Convert.h
  15. 102 0
      AccessToSqlite/DataTable.cpp
  16. 45 0
      AccessToSqlite/DataTable.h
  17. 71 0
      AccessToSqlite/MainTable.cpp
  18. 51 0
      AccessToSqlite/MainTable.h
  19. 311 0
      AccessToSqlite/OpenAccessdatabase.cpp
  20. 83 0
      AccessToSqlite/OpenAccessdatabase.h
  21. 60 0
      AccessToSqlite/ReadMe.txt
  22. 16 0
      AccessToSqlite/Resource.h
  23. 51 0
      AccessToSqlite/TypesTable.cpp
  24. 43 0
      AccessToSqlite/TypesTable.h
  25. 13 0
      AccessToSqlite/res/AccessToSqlite.rc2
  26. 7 0
      AccessToSqlite/stdafx.cpp
  27. 60 0
      AccessToSqlite/stdafx.h
  28. 22 22
      AddType.cpp
  29. 6 3
      AlphaBlend.cpp
  30. 475 219
      CP_Main.cpp
  31. 0 59
      CP_Main.dsw
  32. 33 23
      CP_Main.h
  33. 380 310
      CP_Main.rc
  34. 79 0
      CP_Main.sln
  35. 3292 0
      CP_Main.vcproj
  36. 143 101
      Client.cpp
  37. 8 4
      Client.h
  38. 344 318
      Clip.cpp
  39. 29 29
      Clip.h
  40. 402 0
      ClipIds.cpp
  41. 45 0
      ClipIds.h
  42. 330 0
      Clip_ImportExport.cpp
  43. 21 0
      Clip_ImportExport.h
  44. 86 0
      ClipboardSaveRestore.cpp
  45. 16 0
      ClipboardSaveRestore.h
  46. 50 36
      ClipboardViewer.cpp
  47. 2 3
      ClipboardViewer.h
  48. 117 200
      CopyProperties.cpp
  49. 15 15
      CopyProperties.h
  50. 4 5
      CopyThread.cpp
  51. 78 0
      Crc32Dynamic.cpp
  52. 21 0
      Crc32Dynamic.h
  53. 402 518
      DatabaseUtilities.cpp
  54. 5 84
      DatabaseUtilities.h
  55. 310 0
      Debug/Language/Dutch.xml
  56. 54 7
      Debug/Language/English.xml
  57. 303 0
      Debug/Language/Español.xml
  58. 303 0
      Debug/Language/Français.xml
  59. 303 0
      Debug/Language/Polski.xml
  60. 50 1
      Debug/Language/Portuguese.xml
  61. BIN
      Debug/focus.dll
  62. BIN
      Debug/focus.lib
  63. BIN
      Debug/sqlite3.dll
  64. 319 0
      DittoRulerRichEditCtrl.cpp
  65. 30 0
      DittoRulerRichEditCtrl.h
  66. 0 25
      DittoSetup/DAO_Setup.iss
  67. 0 37
      DittoSetup/DittoBuild.bld
  68. 65 9
      DittoSetup/DittoSetup.iss
  69. 297 0
      DittoSetup/Dutch.isl
  70. 312 0
      DittoSetup/French.isl
  71. 307 0
      DittoSetup/German.isl
  72. 323 0
      DittoSetup/Italian.isl
  73. 0 77
      DittoSetup/Output/Changes.txt
  74. 0 1
      DittoSetup/Output/DittoVersion.txt
  75. 310 0
      DittoSetup/Polish.isl
  76. 301 0
      DittoSetup/Portuguese.isl
  77. 321 0
      DittoSetup/Spanish.isl
  78. 1 0
      DittoSetup/U3/GenSettings.xml
  79. BIN
      DittoSetup/U3/PackageInstaller.exe
  80. BIN
      DittoSetup/U3/U3P2EXE.exe
  81. BIN
      DittoSetup/U3/device/Ditto.exe
  82. 671 0
      DittoSetup/U3/device/Help/DittoConfig.htm
  83. 346 0
      DittoSetup/U3/device/Help/DittoFAQ.htm
  84. 539 0
      DittoSetup/U3/device/Help/DittoGettingStarted.htm
  85. 523 0
      DittoSetup/U3/device/Help/Dutch_DittoConfig.htm
  86. 313 0
      DittoSetup/U3/device/Help/Dutch_DittoFAQ.htm
  87. 488 0
      DittoSetup/U3/device/Help/Dutch_DittoGettingStarted.htm
  88. 165 0
      DittoSetup/U3/device/Help/U3_Install.htm
  89. 310 0
      DittoSetup/U3/device/Language/Dutch.xml
  90. 301 0
      DittoSetup/U3/device/Language/English.xml
  91. 57 8
      DittoSetup/U3/device/Language/French.xml
  92. 301 0
      DittoSetup/U3/device/Language/German.xml
  93. 50 1
      DittoSetup/U3/device/Language/Italiano.xml
  94. 303 0
      DittoSetup/U3/device/Language/Polski.xml
  95. 303 0
      DittoSetup/U3/device/Language/Portuguese.xml
  96. 303 0
      DittoSetup/U3/device/Language/Spanish.xml
  97. BIN
      DittoSetup/U3/device/MFC71.dll
  98. BIN
      DittoSetup/U3/device/focus.dll
  99. BIN
      DittoSetup/U3/device/mfc71u.dll
  100. BIN
      DittoSetup/U3/device/msvcp71.dll

+ 15 - 4
About.cpp

@@ -1,7 +1,7 @@
 // About.cpp : implementation file
 //
 
-//Main branch
+//Main branch test
 
 #include "stdafx.h"
 #include "cp_main.h"
@@ -38,6 +38,7 @@ void CAbout::DoDataExchange(CDataExchange* pDX)
 {
 	CPropertyPage::DoDataExchange(pDX);
 	//{{AFX_DATA_MAP(CAbout)
+	DDX_Control(pDX, IDC_STATIC_LINK, m_Link);
 	DDX_Control(pDX, IDC_HYPER_LINK, m_HyperLink);
 	DDX_Control(pDX, IDC_LIST, m_List);
 	//}}AFX_DATA_MAP
@@ -56,7 +57,7 @@ BOOL CAbout::OnInitDialog()
 {
 	CPropertyPage::OnInitDialog();
 
-	m_List.AddString("Ditto");
+	m_List.AddString(_T("Ditto"));
 
 	CInternetUpdate update;
 
@@ -67,6 +68,11 @@ BOOL CAbout::OnInitDialog()
 	csText = "    Version " + cs;
 	m_List.AddString(csText);
 
+	const char *SqliteVersion = sqlite3_libversion();
+	csText = "    Sqlite Version ";
+	csText += SqliteVersion;
+	m_List.AddString(csText);
+
 	cs = CGetSetOptions::GetExeFileName();;
 	csText = "    Exe Path " + cs;
 	m_List.AddString(csText);
@@ -75,9 +81,9 @@ BOOL CAbout::OnInitDialog()
 	csText = "    DB Path " + cs;
 	m_List.AddString(csText);
 
-	m_List.AddString("");
+	m_List.AddString(_T(""));
 
-	m_List.AddString("Credits");
+	m_List.AddString(_T("Credits"));
 	
 	cs = "    Authors - Scott Brogden, [email protected]";
 	m_List.AddString(cs);
@@ -97,6 +103,11 @@ BOOL CAbout::OnInitDialog()
 	m_HyperLink.MoveWindow(rect);
 
 	m_HyperLink.SetURL(_T("mailto:[email protected]"));
+
+	rect.top = rect.bottom + 5;
+	rect.bottom = rect.top + 5;
+	m_Link.MoveWindow(rect);
+	m_Link.SetURL(_T("ditto-cp.sf.net"));
 		
 	return TRUE;  // return TRUE unless you set the focus to a control
 	              // EXCEPTION: OCX Property Pages should return FALSE

+ 1 - 0
About.h

@@ -24,6 +24,7 @@ public:
 // Dialog Data
 	//{{AFX_DATA(CAbout)
 	enum { IDD = IDD_ABOUT };
+	CHyperLink	m_Link;
 	CHyperLink	m_HyperLink;
 	CListBox	m_List;
 	//}}AFX_DATA

+ 50 - 0
AccessToSqlite.cpp

@@ -0,0 +1,50 @@
+#include "stdafx.h"
+#include "AccessToSqlite.h"
+#include "Options.h"
+#include "Misc.h"
+#include "TextConvert.h"
+
+
+BOOL CAccessToSqlite::ConvertDatabase(const TCHAR *pNewDatabase, const TCHAR *pOldDatabase)
+{
+	BOOL bRet = FALSE;
+
+	CString csFile = CGetSetOptions::GetExeFileName();
+	csFile = GetFilePath(csFile);
+	csFile += "AccessToSqlite.dll";
+
+ 	HMODULE hModule = LoadLibrary(csFile);
+ 	PLUGIN_CONVERT_DATABASE Function;
+ 	if(hModule)
+ 	{
+ 		Function = (PLUGIN_CONVERT_DATABASE)GetProcAddress(hModule, "ConvertDatabase");
+ 
+ 		if(Function)
+ 		{
+			CStringA csNew = CTextConvert::ConvertToChar(pNewDatabase);
+			CStringA csOld = CTextConvert::ConvertToChar(pOldDatabase);
+
+ 			bRet = Function(csNew, csOld);
+ 		}
+		else
+		{
+			MessageBox(NULL, _T("Error loading function from conversion DLL"), _T("Ditto Error"), MB_OK);
+		}
+
+		FreeLibrary(hModule);
+ 	}
+	else
+	{
+		MessageBox(NULL, _T("Error loading conversion DLL"), _T("Ditto Error"), MB_OK);
+	}
+
+	return bRet;
+}
+
+CAccessToSqlite::CAccessToSqlite(void)
+{
+}
+
+CAccessToSqlite::~CAccessToSqlite(void)
+{
+}

+ 13 - 0
AccessToSqlite.h

@@ -0,0 +1,13 @@
+#pragma once
+
+typedef BOOL (*PLUGIN_CONVERT_DATABASE)(const char *, const char *);
+
+class CAccessToSqlite
+{
+public:
+	CAccessToSqlite(void);
+
+	BOOL ConvertDatabase(const TCHAR *pNewDatabase, const TCHAR *pOldDatabase);
+public:
+	~CAccessToSqlite(void);
+};

+ 366 - 0
AccessToSqlite/AccessToSqlite.cpp

@@ -0,0 +1,366 @@
+// AccessToSqlite.cpp : Defines the initialization routines for the DLL.
+//
+
+#include "stdafx.h"
+#include "AccessToSqlite.h"
+#include "OpenAccessdatabase.h"
+#include "Convert.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
+
+//
+//TODO: If this DLL is dynamically linked against the MFC DLLs,
+//		any functions exported from this DLL which call into
+//		MFC must have the AFX_MANAGE_STATE macro added at the
+//		very beginning of the function.
+//
+//		For example:
+//
+//		extern "C" BOOL PASCAL EXPORT ExportedFunction()
+//		{
+//			AFX_MANAGE_STATE(AfxGetStaticModuleState());
+//			// normal function body here
+//		}
+//
+//		It is very important that this macro appear in each
+//		function, prior to any calls into MFC.  This means that
+//		it must appear as the first statement within the 
+//		function, even before any object variable declarations
+//		as their constructors may generate calls into the MFC
+//		DLL.
+//
+//		Please see MFC Technical Notes 33 and 58 for additional
+//		details.
+//
+
+
+// CAccessToSqliteApp
+
+BEGIN_MESSAGE_MAP(CAccessToSqliteApp, CWinApp)
+END_MESSAGE_MAP()
+
+
+// CAccessToSqliteApp construction
+
+CAccessToSqliteApp::CAccessToSqliteApp()
+{
+
+	// TODO: add construction code here,
+	// Place all significant initialization in InitInstance
+}
+
+
+// The one and only CAccessToSqliteApp object
+
+CAccessToSqliteApp theApp;
+
+
+// CAccessToSqliteApp initialization
+
+BOOL CAccessToSqliteApp::InitInstance()
+{
+	CWinApp::InitInstance();
+
+	return TRUE;
+}
+
+int CAccessToSqliteApp::ExitInstance()
+{
+	//cleanup dao
+	AfxDaoTerm();
+
+	return CWinApp::ExitInstance();
+}
+
+// asserts if hDest isn't big enough
+void CopyToGlobalHP( HGLOBAL hDest, LPVOID pBuf, ULONG ulBufLen )
+{
+	ASSERT( hDest && pBuf && ulBufLen );
+	LPVOID pvData = GlobalLock(hDest);
+	ASSERT( pvData );
+	ULONG size = (ULONG)GlobalSize(hDest);
+	ASSERT( size >= ulBufLen );	// assert if hDest isn't big enough
+	memcpy(pvData, pBuf, ulBufLen);
+	GlobalUnlock(hDest);
+}
+
+void CopyToGlobalHH( HGLOBAL hDest, HGLOBAL hSource, ULONG ulBufLen )
+{
+	ASSERT( hDest && hSource && ulBufLen );
+	LPVOID pvData = GlobalLock(hSource);
+	ASSERT( pvData );
+	ULONG size = (ULONG)GlobalSize(hSource);
+	ASSERT( size >= ulBufLen );	// assert if hSource isn't big enough
+	CopyToGlobalHP(hDest, pvData, ulBufLen);
+	GlobalUnlock(hSource);
+}
+
+
+HGLOBAL NewGlobalP( LPVOID pBuf, UINT nLen )
+{
+	ASSERT( pBuf && nLen );
+	HGLOBAL hDest = GlobalAlloc( GMEM_MOVEABLE | GMEM_SHARE, nLen );
+	ASSERT( hDest );
+	CopyToGlobalHP( hDest, pBuf, nLen );
+	return hDest;
+}
+
+HGLOBAL NewGlobal(UINT nLen)
+{
+	ASSERT(nLen);
+	HGLOBAL hDest = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, nLen);
+	return hDest;
+}
+
+HGLOBAL NewGlobalH( HGLOBAL hSource, UINT nLen )
+{
+	ASSERT( hSource && nLen );
+	LPVOID pvData = GlobalLock( hSource );
+	HGLOBAL hDest = NewGlobalP( pvData, nLen );
+	GlobalUnlock( hSource );
+	return hDest;
+}
+
+//Do not change these these are stored in the database
+CLIPFORMAT GetFormatID(LPCSTR cbName)
+{
+	if(STRCMP(cbName, "CF_TEXT") == 0)
+		return CF_TEXT;
+	else if(STRCMP(cbName, _T("CF_METAFILEPICT")) == 0)
+		return CF_METAFILEPICT;
+	else if(STRCMP(cbName, _T("CF_SYLK")) == 0)
+		return CF_SYLK;
+	else if(STRCMP(cbName, _T("CF_DIF")) == 0)
+		return CF_DIF;
+	else if(STRCMP(cbName, _T("CF_TIFF")) == 0)
+		return CF_TIFF;
+	else if(STRCMP(cbName, _T("CF_OEMTEXT")) == 0)
+		return CF_OEMTEXT;
+	else if(STRCMP(cbName, _T("CF_DIB")) == 0)
+		return CF_DIB;
+	else if(STRCMP(cbName, _T("CF_PALETTE")) == 0)
+		return CF_PALETTE;
+	else if(STRCMP(cbName, _T("CF_PENDATA")) == 0)
+		return CF_PENDATA;
+	else if(STRCMP(cbName, _T("CF_RIFF")) == 0)
+		return CF_RIFF;
+	else if(STRCMP(cbName, _T("CF_WAVE")) == 0)
+		return CF_WAVE;
+	else if(STRCMP(cbName, _T("CF_UNICODETEXT")) == 0)
+		return CF_UNICODETEXT;
+	else if(STRCMP(cbName, _T("CF_ENHMETAFILE")) == 0)
+		return CF_ENHMETAFILE;
+	else if(STRCMP(cbName, _T("CF_HDROP")) == 0)
+		return CF_HDROP;
+	else if(STRCMP(cbName, _T("CF_LOCALE")) == 0)
+		return CF_LOCALE;
+	else if(STRCMP(cbName, _T("CF_OWNERDISPLAY")) == 0)
+		return CF_OWNERDISPLAY;
+	else if(STRCMP(cbName, _T("CF_DSPTEXT")) == 0)
+		return CF_DSPTEXT;
+	else if(STRCMP(cbName, _T("CF_DSPBITMAP")) == 0)
+		return CF_DSPBITMAP;
+	else if(STRCMP(cbName, _T("CF_DSPMETAFILEPICT")) == 0)
+		return CF_DSPMETAFILEPICT;
+	else if(STRCMP(cbName, _T("CF_DSPENHMETAFILE")) == 0)
+		return CF_DSPENHMETAFILE;
+
+
+	return ::RegisterClipboardFormat(cbName);
+}
+
+//Do not change these these are stored in the database
+CString GetFormatName(CLIPFORMAT cbType)
+{
+	switch(cbType)
+	{
+	case CF_TEXT:
+		return _T("CF_TEXT");
+	case CF_BITMAP:
+		return _T("CF_BITMAP");
+	case CF_METAFILEPICT:
+		return _T("CF_METAFILEPICT");
+	case CF_SYLK:
+		return _T("CF_SYLK");
+	case CF_DIF:
+		return _T("CF_DIF");
+	case CF_TIFF:
+		return _T("CF_TIFF");
+	case CF_OEMTEXT:
+		return _T("CF_OEMTEXT");
+	case CF_DIB:
+		return _T("CF_DIB");
+	case CF_PALETTE:
+		return _T("CF_PALETTE");
+	case CF_PENDATA:
+		return _T("CF_PENDATA");
+	case CF_RIFF:
+		return _T("CF_RIFF");
+	case CF_WAVE:
+		return _T("CF_WAVE");
+	case CF_UNICODETEXT:
+		return _T("CF_UNICODETEXT");
+	case CF_ENHMETAFILE:
+		return _T("CF_ENHMETAFILE");
+	case CF_HDROP:
+		return _T("CF_HDROP");
+	case CF_LOCALE:
+		return _T("CF_LOCALE");
+	case CF_OWNERDISPLAY:
+		return _T("CF_OWNERDISPLAY");
+	case CF_DSPTEXT:
+		return _T("CF_DSPTEXT");
+	case CF_DSPBITMAP:
+		return _T("CF_DSPBITMAP");
+	case CF_DSPMETAFILEPICT:
+		return _T("CF_DSPMETAFILEPICT");
+	case CF_DSPENHMETAFILE:
+		return _T("CF_DSPENHMETAFILE");
+	default:
+		//Not a default type get the name from the clipboard
+		if (cbType != 0)
+		{
+			TCHAR szFormat[256];
+			GetClipboardFormatName(cbType, szFormat, 256);
+			return szFormat;
+		}
+		break;
+	}
+
+	return _T("ERROR");
+}
+
+CString StrF(const TCHAR * pszFormat, ...)
+{
+	ASSERT( AfxIsValidString( pszFormat ) );
+	CString str;
+	va_list argList;
+	va_start( argList, pszFormat );
+	str.FormatV( pszFormat, argList );
+	va_end( argList );
+	return str;
+}
+
+#define _CRT_SECURE_NO_DEPRECATE 1
+
+void AppendToFile(const TCHAR* fn, const TCHAR* msg)
+{
+#ifdef _UNICODE
+	FILE *file = _wfopen(fn, _T("a"));
+#else
+	FILE *file = fopen(fn, _T("a"));
+#endif
+
+	ASSERT( file );
+
+#ifdef _UNICODE
+	fwprintf(file, msg);
+#else
+	fprintf(file, msg);
+#endif
+
+	fclose(file);
+}
+
+CString GetExeFileName()
+{
+	CString sExeName;
+	GetModuleFileName(NULL, sExeName.GetBuffer(_MAX_PATH),_MAX_PATH);
+	sExeName.ReleaseBuffer();
+	return sExeName;
+}
+
+CString GetFilePath(CString csFileName)
+{
+	long lSlash = csFileName.ReverseFind('\\');
+
+	if(lSlash > -1)
+	{
+		csFileName = csFileName.Left(lSlash + 1);
+	}
+
+	return csFileName;
+}
+
+CString GetFileName(CString csFileName)
+{
+	long lSlash = csFileName.ReverseFind('\\');
+	if(lSlash > -1)
+	{
+		csFileName = csFileName.Right(csFileName.GetLength() - lSlash - 1);
+	}
+
+	return csFileName;
+}
+
+void log(const TCHAR* msg, CString csFile, long lLine)
+{
+	ASSERT(AfxIsValidString(msg));
+	CTime	time = CTime::GetCurrentTime();
+	CString	csText = time.Format("[%Y/%m/%d %I:%M:%S %p - ");
+
+	CString csFileLine;
+	csFile = GetFileName(csFile);
+	csFileLine.Format(_T("%s %d] "), csFile, lLine);
+	csText += csFileLine;
+
+	csText += msg;
+	csText += "\n";
+	OutputDebugString(csText);
+
+	CString csExeFile = GetExeFileName();
+	csExeFile = GetFilePath(csExeFile);
+	csExeFile += "Ditto3Conversion.log";
+
+	AppendToFile(csExeFile, csText);
+}
+
+extern "C" __declspec(dllexport) BOOL ConvertDatabase(const TCHAR *pNewDatabase, const TCHAR *pOldDatabase)
+{
+	BOOL bRet = FALSE;
+	try
+	{
+		AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+		COpenAccessdatabase Verify;
+
+		//make sure that all the updates have been run on the old db
+		if(Verify.ValidDB(pOldDatabase, TRUE) == TRUE)
+		{
+			theApp.m_AccessDatabase.Open(pOldDatabase);
+			theApp.m_db.open(pNewDatabase);
+
+			CConvert Convert;
+
+			Convert.SetupProgressWnd();
+
+			Convert.ConvertGroups(0);
+			Convert.ConvertNonGroups();
+			Convert.ConvertTypes();
+
+			theApp.m_AccessDatabase.Close();
+			theApp.m_db.close();
+
+			bRet = TRUE;
+		}
+	}
+	catch(CDaoException* e)
+	{
+		TCHAR cError[100];
+		e->GetErrorMessage(cError, 100);
+		Log(StrF(_T("CDaoException - %s"), cError));
+
+		ASSERT(FALSE);
+		e->Delete();
+	}
+	catch (CppSQLite3Exception& e)
+	{
+		Log(StrF(_T("SQLITE Exception %d - %s"), e.errorCode(), e.errorMessage()));
+
+		ASSERT(FALSE);
+	}	
+
+	return bRet;
+}

+ 6 - 0
AccessToSqlite/AccessToSqlite.def

@@ -0,0 +1,6 @@
+; AccessToSqlite.def : Declares the module parameters for the DLL.
+
+LIBRARY      "AccessToSqlite"
+
+EXPORTS
+    ; Explicit exports can go here

+ 55 - 0
AccessToSqlite/AccessToSqlite.h

@@ -0,0 +1,55 @@
+// AccessToSqlite.h : main header file for the AccessToSqlite DLL
+//
+
+#pragma once
+
+#ifndef __AFXWIN_H__
+	#error "include 'stdafx.h' before including this file for PCH"
+#endif
+
+#include "resource.h"		// main symbols
+
+#define _CRT_NON_CONFORMING_SWPRINTFS 1
+
+#include "..\sqlite\CppSQLite3.h"
+
+
+#pragma warning(disable : 4995)
+
+extern "C" __declspec(dllexport) BOOL ConvertDatabase(const TCHAR *pNewDatabase, const TCHAR *pOldDatabase);
+
+
+extern class CAccessToSqliteApp theApp;
+
+class CAccessToSqliteApp : public CWinApp
+{
+public:
+	CAccessToSqliteApp();
+
+// Overrides
+public:
+	virtual BOOL InitInstance();
+
+	CppSQLite3DB m_db;
+	CDaoDatabase m_AccessDatabase;
+
+	DECLARE_MESSAGE_MAP()
+public:
+	virtual int ExitInstance();
+};
+
+
+void CopyToGlobalHP(HGLOBAL hDest, LPVOID pBuf, ULONG ulBufLen);
+void CopyToGlobalHH(HGLOBAL hDest, HGLOBAL hSource, ULONG ulBufLen);
+HGLOBAL NewGlobalP(LPVOID pBuf, UINT nLen);
+HGLOBAL NewGlobalH(HGLOBAL hSource, UINT nLen);
+HGLOBAL NewGlobal(UINT nLen);
+
+CString GetFormatName(CLIPFORMAT cbType);
+CLIPFORMAT GetFormatID(LPCTSTR cbName);
+
+CString StrF(const TCHAR * pszFormat, ...);
+
+#define Log(msg) log(msg, __FILE__, __LINE__)
+void log(const TCHAR* msg, CString csFile = _T(""), long lLine = -1);
+

+ 119 - 0
AccessToSqlite/AccessToSqlite.rc

@@ -0,0 +1,119 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE  
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE  
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE  
+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"
+	"LANGUAGE 9, 1\r\n"
+	"#pragma code_page(1252)\r\n"
+    "#include ""res\\AccessToSqlite.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+#ifndef _AFXDLL
+    "#include ""afxres.rc""  	// Standard components\r\n"
+#endif
+    "#endif\r\n"
+    "\0"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // APSTUDIO_INVOKED
+
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE 9, 1
+#pragma code_page(1252)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// 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 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+	BLOCK "StringFileInfo"
+	BEGIN
+        BLOCK "040904e4"
+		BEGIN 
+            VALUE "CompanyName", "TODO: <Company name>"
+            VALUE "FileDescription", "TODO: <File description>"
+			VALUE "FileVersion",     "1.0.0.1"
+			VALUE "InternalName",    "AccessToSqlite.dll"
+            VALUE "LegalCopyright", "TODO: (c) <Company name>.  All rights reserved."
+			VALUE "OriginalFilename","AccessToSqlite.dll"
+            VALUE "ProductName", "TODO: <Product name>"
+			VALUE "ProductVersion",  "1.0.0.1"
+		END
+	END
+	BLOCK "VarFileInfo" 
+	BEGIN 
+		VALUE "Translation", 0x0409, 1252
+    END
+END
+
+#endif
+#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)
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#include "res\\AccessToSqlite.rc2"  // non-Microsoft Visual C++ edited resources
+#ifndef _AFXDLL
+#include "afxres.rc"  	// Standard components
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+

+ 414 - 0
AccessToSqlite/AccessToSqlite.vcproj

@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="AccessToSqlite"
+	RootNamespace="AccessToSqlite"
+	SccProjectName=""
+	SccLocalPath=""
+	Keyword="MFCProj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="2"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/AccessToSqlite.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile=".\Debug/AccessToSqlite.dll"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				ModuleDefinitionFile=".\AccessToSqlite.def"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug/AccessToSqlite.pdb"
+				SubSystem="2"
+				ImportLibrary=".\Debug/AccessToSqlite.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Debug/AccessToSqlite.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(OutDir)&quot;\*.dll ..\Debug"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="2"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/AccessToSqlite.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile=".\Release/AccessToSqlite.dll"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				ModuleDefinitionFile=".\AccessToSqlite.def"
+				ProgramDatabaseFile=".\Release/AccessToSqlite.pdb"
+				SubSystem="2"
+				ImportLibrary=".\Release/AccessToSqlite.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Release/AccessToSqlite.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(OutDir)&quot;\*.dll ..\Release"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="AccessToSqlite.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="AccessToSqlite.def">
+			</File>
+			<File
+				RelativePath="AccessToSqlite.rc">
+			</File>
+			<File
+				RelativePath="Clip.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Convert.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\sqlite\CppSQLite3.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\Crc32Dynamic.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="DataTable.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="MainTable.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OpenAccessdatabase.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\ProgressWnd.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="StdAfx.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="TypesTable.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="AccessToSqlite.h">
+			</File>
+			<File
+				RelativePath="Clip.h">
+			</File>
+			<File
+				RelativePath="Convert.h">
+			</File>
+			<File
+				RelativePath="..\sqlite\CppSQLite3.h">
+			</File>
+			<File
+				RelativePath="..\Crc32Dynamic.h">
+			</File>
+			<File
+				RelativePath="DataTable.h">
+			</File>
+			<File
+				RelativePath="MainTable.h">
+			</File>
+			<File
+				RelativePath="OpenAccessdatabase.h">
+			</File>
+			<File
+				RelativePath="..\ProgressWnd.h">
+			</File>
+			<File
+				RelativePath="Resource.h">
+			</File>
+			<File
+				RelativePath="StdAfx.h">
+			</File>
+			<File
+				RelativePath="TypesTable.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath="res\AccessToSqlite.rc2">
+			</File>
+		</Filter>
+		<File
+			RelativePath="..\sqlite\sqlite3.lib">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

+ 65 - 0
AccessToSqlite/AccessToSqlite.vcproj.BROGDEN.Brogdens.user

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioUserFile
+	ProjectType="Visual C++"
+	Version="8.00"
+	ShowAllFiles="false"
+	>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			>
+			<DebugSettings
+				Command=""
+				WorkingDirectory=""
+				CommandArguments=""
+				Attach="false"
+				DebuggerType="3"
+				Remote="1"
+				RemoteMachine="BROGDEN"
+				RemoteCommand=""
+				HttpUrl=""
+				PDBPath=""
+				SQLDebugging=""
+				Environment=""
+				EnvironmentMerge="true"
+				DebuggerFlavor=""
+				MPIRunCommand=""
+				MPIRunArguments=""
+				MPIRunWorkingDirectory=""
+				ApplicationCommand=""
+				ApplicationArguments=""
+				ShimCommand=""
+				MPIAcceptMode=""
+				MPIAcceptFilter=""
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			>
+			<DebugSettings
+				Command=""
+				WorkingDirectory=""
+				CommandArguments=""
+				Attach="false"
+				DebuggerType="3"
+				Remote="1"
+				RemoteMachine="BROGDEN"
+				RemoteCommand=""
+				HttpUrl=""
+				PDBPath=""
+				SQLDebugging=""
+				Environment=""
+				EnvironmentMerge="true"
+				DebuggerFlavor=""
+				MPIRunCommand=""
+				MPIRunArguments=""
+				MPIRunWorkingDirectory=""
+				ApplicationCommand=""
+				ApplicationArguments=""
+				ShimCommand=""
+				MPIAcceptMode=""
+				MPIAcceptFilter=""
+			/>
+		</Configuration>
+	</Configurations>
+</VisualStudioUserFile>

+ 469 - 0
AccessToSqlite/Clip.cpp

@@ -0,0 +1,469 @@
+// ProcessCopy.cpp: implementation of the CProcessCopy class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "AccessToSqlite.h"
+#include "..\UnicodeMacros.h"
+#include "Clip.h"
+#include "..\Crc32Dynamic.h"
+
+#include <Mmsystem.h>
+
+#define CATCH_SQLITE_EXCEPTION		\
+	catch (CppSQLite3Exception& e)	\
+{								\
+	Log(StrF(_T("SQLITE Exception %d - %s"), e.errorCode(), e.errorMessage()));	\
+	ASSERT(!e.errorMessage());	\
+}								\
+
+#define CATCH_SQLITE_EXCEPTION_AND_RETURN(bRet)		\
+	catch (CppSQLite3Exception& e)	\
+{								\
+	Log(StrF(_T("SQLITE Exception %d - %s"), e.errorCode(), e.errorMessage()));	\
+	ASSERT(!e.errorMessage());	\
+	return bRet;				\
+}								\
+
+#ifdef _DEBUG
+#undef THIS_FILE
+static char THIS_FILE[]=__FILE__;
+#define new DEBUG_NEW
+#endif
+
+
+/*----------------------------------------------------------------------------*\
+CClipFormat - holds the data of one clip format.
+\*----------------------------------------------------------------------------*/
+CClipFormat::CClipFormat(CLIPFORMAT cfType, HGLOBAL hgData)
+{
+	m_cfType = cfType;
+	m_hgData = hgData;
+	bDeleteData = true;
+}
+
+CClipFormat::~CClipFormat() 
+{ 
+	Free(); 
+}
+
+void CClipFormat::Clear()
+{
+	m_cfType = 0;
+	m_hgData = 0;
+}
+
+void CClipFormat::Free()
+{
+	if(bDeleteData)
+	{
+		if(m_hgData)
+		{
+			m_hgData = ::GlobalFree( m_hgData );
+			m_hgData = NULL;
+		}
+	}
+}
+
+
+
+/*----------------------------------------------------------------------------*\
+CClipFormats - holds an array of CClipFormat
+\*----------------------------------------------------------------------------*/
+// returns a pointer to the CClipFormat in this array which matches the given type
+//  or NULL if that type doesn't exist in this array.
+CClipFormat* CClipFormats::FindFormat(UINT cfType)
+{
+	CClipFormat* pCF;
+	int count = (int)GetSize();
+
+	for(int i=0; i < count; i++)
+	{
+		pCF = &ElementAt(i);
+		if(pCF->m_cfType == cfType)
+			return pCF;
+	}
+	return NULL;
+}
+
+
+/*----------------------------------------------------------------------------*\
+CClip - holds multiple CClipFormats and CopyClipboard() statistics
+\*----------------------------------------------------------------------------*/
+
+DWORD CClip::m_LastAddedCRC = 0;
+long CClip::m_LastAddedID = -1;
+
+CClip::CClip() : 
+	m_ID(0), 
+	m_CRC(0),
+	m_lParent(-1),
+	m_lDontAutoDelete(FALSE),
+	m_lShortCut(0),
+	m_bIsGroup(FALSE)
+{
+}
+
+CClip::~CClip()
+{
+	EmptyFormats();
+}
+
+void CClip::Clear()
+{
+	m_ID = -1;
+	m_Time = 0;
+	m_Desc = "";
+	m_CRC = 0;
+	m_lParent = -1;
+	m_lDontAutoDelete = FALSE;
+	m_lShortCut = 0;
+	m_bIsGroup = FALSE;
+	m_csQuickPaste = "";
+	EmptyFormats();
+}
+
+const CClip& CClip::operator=(const CClip &clip)
+{
+	const CClipFormat* pCF;
+
+	m_ID = clip.m_ID;
+	m_Time = clip.m_Time;
+	m_CRC = clip.m_CRC;
+	m_lParent = clip.m_lParent;
+	m_lDontAutoDelete = clip.m_lDontAutoDelete;
+	m_lShortCut = clip.m_lShortCut;
+	m_bIsGroup = clip.m_bIsGroup;
+	m_csQuickPaste = clip.m_csQuickPaste;
+
+	int nCount = (int)clip.m_Formats.GetSize();
+	
+	for(int i = 0; i < nCount; i++)
+	{
+		pCF = &clip.m_Formats.GetData()[i];
+
+		LPVOID pvData = GlobalLock(pCF->m_hgData);
+		if(pvData)
+		{
+			AddFormat(pCF->m_cfType, pvData, (UINT)GlobalSize(pCF->m_hgData));
+		}
+		GlobalUnlock(pCF->m_hgData);
+	}
+
+	//Set this after since in could get the wrong description in AddFormat
+	m_Desc = clip.m_Desc;
+
+	return *this;
+}
+
+void CClip::EmptyFormats()
+{
+	// free global memory in m_Formats
+	for(int i = (int)m_Formats.GetSize()-1; i >= 0; i--)
+	{
+		m_Formats[i].Free();
+		m_Formats.RemoveAt( i );
+	}
+}
+
+// Adds a new Format to this Clip by copying the given data.
+bool CClip::AddFormat(CLIPFORMAT cfType, void* pData, UINT nLen)
+{
+	ASSERT(pData && nLen);
+	HGLOBAL hGlobal = NewGlobalP(pData, nLen);
+	ASSERT(hGlobal);
+
+	// update the Clip statistics
+	m_Time = m_Time.GetCurrentTime();
+	
+	CClipFormat format(cfType,hGlobal);
+	CClipFormat *pFormat;
+	
+	pFormat = m_Formats.FindFormat(cfType);
+	// if the format type already exists as part of this clip, replace the data
+	if(pFormat)
+	{
+		pFormat->Free();
+		pFormat->m_hgData = format.m_hgData;
+	}
+	else
+	{
+		m_Formats.Add(format);
+	}
+	
+	format.m_hgData = 0; // now owned by m_Formats
+	return true;
+}
+
+bool CClip::AddToDB(bool bCheckForDuplicates)
+{
+	bool bResult;
+	
+	m_CRC = GenerateCRC();
+	
+	bResult = false;
+	if(AddToMainTable())
+	{
+		bResult = AddToDataTable();
+	}
+
+	// should be emptied by AddToDataTable
+	ASSERT(m_Formats.GetSize() == 0);
+	
+	return bResult;
+}
+
+DWORD CClip::GenerateCRC()
+{
+	CClipFormat* pCF;
+	DWORD dwCRC = 0xFFFFFFFF;
+
+	CCrc32Dynamic *pCrc32 = new CCrc32Dynamic;
+	if(pCrc32)
+	{
+		//Generate a CRC value for all copied data
+
+		int nSize = (int)m_Formats.GetSize();
+		for(int i = 0; i < nSize ; i++)
+		{
+			pCF = & m_Formats.ElementAt(i);
+			
+			const unsigned char *Data = (const unsigned char *)GlobalLock(pCF->m_hgData);
+			if(Data)
+			{
+				pCrc32->GenerateCrc32((const LPBYTE)Data, (DWORD)GlobalSize(pCF->m_hgData), dwCRC);
+			}
+			GlobalUnlock(pCF->m_hgData);
+		}
+
+		dwCRC = ~dwCRC;
+
+		delete pCrc32;
+	}
+
+	return dwCRC;
+}
+
+// assigns m_ID
+bool CClip::AddToMainTable()
+{
+	try
+	{
+		m_Desc.Replace(_T("'"), _T("''"));
+		m_csQuickPaste.Replace(_T("'"), _T("''"));
+
+		CString cs;
+		cs.Format(_T("insert into Main values(NULL, %d, '%s', %d, %d, %d, %d, %d, '%s');"),
+							(long)m_Time.GetTime(),
+							m_Desc,
+							m_lShortCut,
+							m_lDontAutoDelete,
+							m_CRC,
+							m_bIsGroup,
+							m_lParent,
+							m_csQuickPaste);
+
+		theApp.m_db.execDML(cs);
+
+		m_ID = (long)theApp.m_db.lastRowId();
+
+		m_LastAddedCRC = m_CRC;
+		m_LastAddedID = m_ID;
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+	
+	return true;
+}
+
+// Empties m_Formats as it saves them to the Data Table.
+bool CClip::AddToDataTable()
+{
+	CClipFormat* pCF;
+
+	try
+	{
+		CppSQLite3Statement stmt = theApp.m_db.compileStatement(_T("insert into Data values (NULL, ?, ?, ?);"));
+		
+		for(int i = (int)m_Formats.GetSize()-1; i >= 0 ; i--)
+		{
+			pCF = & m_Formats.ElementAt(i);
+			
+			stmt.bind(1, m_ID);
+			stmt.bind(2, GetFormatName(pCF->m_cfType));
+
+			const unsigned char *Data = (const unsigned char *)GlobalLock(pCF->m_hgData);
+			if(Data)
+			{
+				stmt.bind(3, Data, (int)GlobalSize(pCF->m_hgData));
+			}
+			GlobalUnlock(pCF->m_hgData);
+			
+			stmt.execDML();
+			stmt.reset();
+
+			m_Formats.RemoveAt(i);
+		}
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+		
+	return true;
+}
+
+// changes m_Time to be later than the latest clip entry in the db
+// ensures that pClip's time is not older than the last clip added
+// old times can happen on fast copies (<1 sec).
+void CClip::MakeLatestTime()
+{
+	try
+	{
+		CppSQLite3Query q = theApp.m_db.execQuery(_T("SELECT lDate FROM Main ORDER BY lDate DESC LIMIT 1"));			
+		if(q.eof() == false)
+		{
+			long lLatestDate = q.getIntField(_T("lDate"));
+			if(m_Time.GetTime() <= lLatestDate)
+			{
+				m_Time = lLatestDate + 1;
+			}
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+}
+
+BOOL CClip::LoadMainTable(long lID)
+{
+	try
+	{
+		CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT * FROM Main WHERE lID = %d"), lID);
+
+		if(q.eof() == false)
+		{
+			m_Time = q.getIntField(_T("lDate"));
+			m_Desc = q.getStringField(_T("mText"));
+			m_CRC = q.getIntField(_T("CRC"));
+			m_lParent = q.getIntField(_T("lParentID"));
+			m_lDontAutoDelete = q.getIntField(_T("lDontAutoDelete"));
+			m_lShortCut = q.getIntField(_T("lShortCut"));
+			m_bIsGroup = q.getIntField(_T("bIsGroup"));
+		}
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(FALSE)
+
+	return TRUE;
+}
+
+// STATICS
+
+// Allocates a Global containing the requested Clip Format Data
+HGLOBAL CClip::LoadFormat(long lID, UINT cfType)
+{
+	HGLOBAL hGlobal = 0;
+	try
+	{
+		CString csSQL;
+		
+		csSQL.Format(
+			_T("SELECT Data.ooData FROM Data ")
+			_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+			_T("WHERE Main.lID = %d ")
+			_T("AND Data.strClipBoardFormat = \'%s\'"),
+			lID,
+			GetFormatName(cfType));
+
+		CppSQLite3Query q = theApp.m_db.execQuery(csSQL);
+
+		if(q.eof() == false)
+		{
+			int nDataLen = 0;
+			const unsigned char *cData = q.getBlobField(0, nDataLen);
+			if(cData == NULL)
+			{
+				return false;
+			}
+
+			hGlobal = NewGlobalP((LPVOID)cData, nDataLen);
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+		
+	return hGlobal;
+}
+
+bool CClip::LoadFormats(long lID, bool bOnlyLoad_CF_TEXT)
+{
+	CClipFormat cf;
+	HGLOBAL hGlobal = 0;
+	m_Formats.RemoveAll();
+
+	try
+	{	
+		//Open the data table for all that have the parent id
+
+		//Order by Data.lID so that when generating CRC it's always in the same order as the first time
+		//we generated it
+		CString csSQL;
+		csSQL.Format(
+			_T("SELECT strClipBoardFormat, ooData FROM Data ")
+			_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+			_T("WHERE Main.lID = %d ORDER BY Data.lID desc"), lID);
+
+		CppSQLite3Query q = theApp.m_db.execQuery(csSQL);
+
+		while(q.eof() == false)
+		{
+			cf.m_cfType = GetFormatID(q.getStringField(_T("strClipBoardFormat")));
+			
+			if(bOnlyLoad_CF_TEXT)
+			{
+				if(cf.m_cfType != CF_TEXT && cf.m_cfType != CF_UNICODETEXT)
+				{
+					q.nextRow();
+					continue;
+				}
+			}
+
+			int nDataLen = 0;
+			const unsigned char *cData = q.getBlobField(1, nDataLen);
+			if(cData != NULL)
+			{
+				hGlobal = NewGlobalP((LPVOID)cData, nDataLen);
+			}
+			
+			cf.m_hgData = hGlobal;
+			m_Formats.Add(cf);
+
+			q.nextRow();
+		}
+
+		// formats owns all the data
+		cf.m_hgData = 0;
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+		
+	return m_Formats.GetSize() > 0;
+}
+
+void CClip::LoadTypes(long lID, CClipTypes& types)
+{
+	types.RemoveAll();
+	try
+	{
+		CString csSQL;
+		// get formats for Clip "lID" (Main.lID) using the corresponding Main.lDataID
+		
+		//Order by Data.lID so that when generating CRC it's always in the same order as the first time
+		//we generated it
+		csSQL.Format(
+			_T("SELECT strClipBoardFormat FROM Data ")
+			_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+			_T("WHERE Main.lID = %d ORDER BY Data.lID desc"), lID);
+
+		CppSQLite3Query q = theApp.m_db.execQuery(csSQL);			
+
+		while(q.eof() == false)
+		{		
+			types.Add(GetFormatID(q.getStringField(0)));
+			q.nextRow();
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+}

+ 129 - 0
AccessToSqlite/Clip.h

@@ -0,0 +1,129 @@
+// ProcessCopy.h: classes for saving the clipboard to db
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_PROCESSCOPY_H__185CBB6F_4B63_4397_8FF9_E18D777DA506__INCLUDED_)
+#define AFX_PROCESSCOPY_H__185CBB6F_4B63_4397_8FF9_E18D777DA506__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+#include <afxole.h>
+#include <afxtempl.h>
+
+class CClip;
+class CCopyThread;
+
+typedef CArray<CLIPFORMAT, CLIPFORMAT> CClipTypes;
+
+/*----------------------------------------------------------------------------*\
+	COleDataObjectEx
+\*----------------------------------------------------------------------------*/
+class COleDataObjectEx : public COleDataObject
+{
+public:
+	// creates global from IStream if necessary
+	HGLOBAL GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+};
+
+/*----------------------------------------------------------------------------*\
+	CClipFormat - holds the data of one clip format.
+\*----------------------------------------------------------------------------*/
+class CClipFormat
+{
+public:
+	CLIPFORMAT	m_cfType;
+    HGLOBAL		m_hgData;
+	bool		bDeleteData;
+
+	CClipFormat(CLIPFORMAT cfType = 0, HGLOBAL hgData = 0);
+	~CClipFormat();
+
+	void Clear();
+	void Free();
+};
+
+/*----------------------------------------------------------------------------*\
+	CClipFormats - holds an array of CClipFormat
+\*----------------------------------------------------------------------------*/
+class CClipFormats : public CArray<CClipFormat,CClipFormat&>
+{
+public:
+	// returns a pointer to the CClipFormat in this array which matches the given type
+	//  or NULL if that type doesn't exist in this array.
+	CClipFormat* FindFormat(UINT cfType); 
+};
+
+
+/*----------------------------------------------------------------------------*\
+	CClip - holds multiple CClipFormats and clip statistics
+	- provides static functions for manipulating a Clip as a single unit.
+\*----------------------------------------------------------------------------*/
+class CClip
+{
+public:
+	long			m_ID;
+	CClipFormats	m_Formats;
+
+	const CClip& operator=(const CClip &clip);
+
+	// statistics assigned by LoadFromClipboard
+	CTime	m_Time;	 // time copied from clipboard
+	CString m_Desc;
+	ULONG	m_lTotalCopySize;
+	long	m_lParent;
+	long	m_lDontAutoDelete;
+	long	m_lShortCut;
+	BOOL	m_bIsGroup;
+	DWORD	m_CRC;
+	CString m_csQuickPaste;
+
+	static  DWORD m_LastAddedCRC;
+	static  long m_LastAddedID;
+
+	CClip();
+	~CClip();
+
+	void Clear();
+	void EmptyFormats();
+	
+	bool AddFormat(CLIPFORMAT cfType, void* pData, UINT nLen);
+	bool LoadFromClipboard(CClipTypes* pClipTypes);
+	
+	bool AddToDB(bool bCheckForDuplicates = true);
+
+	void MakeLatestTime();
+
+	BOOL LoadMainTable(long lID);
+
+	DWORD GenerateCRC();
+
+	// Allocates a Global containing the requested Clip's Format Data
+	static HGLOBAL LoadFormat(long lID, UINT cfType);
+	// Fills "formats" with the Data of all Formats in the db for the given Clip ID
+	bool LoadFormats(long lID, bool bOnlyLoad_CF_TEXT = false);
+	// Fills "types" with all Types in the db for the given Clip ID
+	static void LoadTypes(long lID, CClipTypes& types);
+
+protected:
+	bool AddToMainTable();
+	bool AddToDataTable();
+};
+
+
+/*----------------------------------------------------------------------------*\
+	CClipList
+\*----------------------------------------------------------------------------*/
+
+class CClipList : public CList<CClip*,CClip*>
+{
+public:
+	~CClipList();
+	// returns the number of clips actually saved
+	// while this does empty the Format Data, it does not delete the Clips.
+	int AddToDB( bool bLatestTime = false, bool bShowStatus = true );
+
+	const CClipList& operator=(const CClipList &cliplist);
+};
+
+#endif // !defined(AFX_PROCESSCOPY_H__185CBB6F_4B63_4397_8FF9_E18D777DA506__INCLUDED_)

+ 252 - 0
AccessToSqlite/Convert.cpp

@@ -0,0 +1,252 @@
+#include "StdAfx.h"
+#include "Convert.h"
+#include "AccessToSqlite.h"
+#include "DataTable.h"
+#include "TypesTable.h"
+
+CConvert::CConvert(void)
+{
+}
+
+CConvert::~CConvert(void)
+{
+}
+
+bool CConvert::ConvertNonGroups()
+{
+	try
+	{			
+		CMainTable recset;
+		recset.m_pDatabase = &theApp.m_AccessDatabase;
+		recset.m_strFilter.Format(_T("bIsGroup = FALSE"));
+		recset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T(""), 0);
+
+		if(recset.IsEOF() == FALSE)
+		{		
+			while(!recset.IsEOF())
+			{
+				ConvertEntry(recset);
+
+				recset.MoveNext();
+
+				m_Progress.StepIt();
+				m_Progress.PeekAndPump(FALSE);
+			}
+		}
+	}		
+	catch(CDaoException* e)
+	{
+		TCHAR cError[100];
+		e->GetErrorMessage(cError, 100);
+		Log(StrF(_T("CDaoException - %s"), cError));
+
+		ASSERT(FALSE);
+		e->Delete();
+		return false;
+	}	
+
+
+	return true;
+}
+
+bool CConvert::ConvertGroups(long lParentID)
+{	
+	try
+	{			
+		CMainTable recset;
+		recset.m_pDatabase = &theApp.m_AccessDatabase;
+		recset.m_strFilter.Format(_T("bIsGroup = TRUE AND lParentID = %d"), lParentID);
+		recset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T(""), 0);
+
+		while(!recset.IsEOF())
+		{
+			ConvertEntry(recset);
+			
+			ConvertGroups(recset.m_lID);
+
+			recset.MoveNext();
+
+			m_Progress.StepIt();
+			m_Progress.PeekAndPump(FALSE);
+		}
+	}		
+	catch(CDaoException* e)
+	{
+		TCHAR cError[100];
+		e->GetErrorMessage(cError, 100);
+		Log(StrF(_T("CDaoException - %s"), cError));
+
+		ASSERT(FALSE);
+		e->Delete();
+		return false;
+	}	
+
+	return true;
+}
+
+bool CConvert::ConvertEntry(CMainTable &recset)
+{
+	bool bRet = false;
+
+	try
+	{
+		CClip Clip;
+
+		Clip.m_Desc = recset.m_strText;
+		Clip.m_Time = recset.m_lDate;
+		Clip.m_lShortCut = recset.m_lShortCut;
+		Clip.m_lDontAutoDelete = recset.m_lDontAutoDelete;
+		Clip.m_bIsGroup = recset.m_bIsGroup;
+
+		long lParent;
+		if(m_ParentMap.Lookup(recset.m_lParentID, lParent))
+		{
+			Clip.m_lParent = lParent;
+		}
+
+		if(Clip.m_bIsGroup || LoadFormats(recset.m_lID, Clip.m_Formats))
+		{
+			Clip.AddToDB(false);
+
+			if(Clip.m_bIsGroup)
+			{
+				m_ParentMap.SetAt(recset.m_lID, Clip.m_ID);
+			}
+
+			bRet = true;
+		}
+		else
+		{
+			Log(StrF(_T("Error loading formats id = %d"), recset.m_lID));
+		}
+	}
+	catch (CppSQLite3Exception& e)
+	{
+		Log(StrF(_T("SQLITE Exception %d - %s"), e.errorCode(), e.errorMessage()));
+
+		ASSERT(FALSE);
+		bRet = false;
+	}
+
+	return bRet;
+}
+
+bool CConvert::LoadFormats(long lID, CClipFormats& formats)
+{
+	CClipFormat cf;
+	HGLOBAL hGlobal = 0;
+
+	formats.RemoveAll();
+
+	try
+	{
+		CDataTable recset;
+		recset.m_pDatabase = &theApp.m_AccessDatabase;
+
+		//Open the data table for all that have the parent id
+		CString csSQL;
+		csSQL.Format(
+			_T("SELECT Data.* FROM Data ")
+			_T("INNER JOIN Main ON Main.lDataID = Data.lDataID ")
+			_T("WHERE Main.lID = %d"), lID);
+
+		recset.Open(csSQL);
+
+		while( !recset.IsEOF() )
+		{
+			cf.m_cfType = GetFormatID(recset.m_strClipBoardFormat);
+
+			// create a new HGLOBAL duplicate
+			hGlobal = NewGlobalH(recset.m_ooData.m_hData, recset.m_ooData.m_dwDataLength);
+			if(hGlobal)
+			{
+				cf.m_hgData = hGlobal;
+				formats.Add( cf );
+			}
+
+			recset.MoveNext();
+		}
+		cf.m_hgData = 0; // formats owns all the data
+
+		recset.Close();
+	}
+	catch(CDaoException* e)
+	{
+		TCHAR cError[100];
+		e->GetErrorMessage(cError, 100);
+		Log(StrF(_T("CDaoException - %s"), cError));
+
+		ASSERT(FALSE);
+		e->Delete();
+		return false;
+	}
+
+	return formats.GetSize() > 0;
+}
+
+bool CConvert::ConvertTypes()
+{
+	try
+	{
+		CTypesTable recset;
+		recset.m_pDatabase = &theApp.m_AccessDatabase;
+		recset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T("SELECT * FROM Types"), NULL);
+
+		bool bFoundCF_UNICODETEXT = false;
+		bool bAddedOne = false;
+
+		while(!recset.IsEOF())
+		{
+			theApp.m_db.execDMLEx(_T("INSERT INTO Types VALUES(NULL, '%s');"), recset.m_TypeText);
+
+			bAddedOne = true;
+
+			if(recset.m_TypeText == "CF_UNICODETEXT")
+				bFoundCF_UNICODETEXT = true;
+
+			recset.MoveNext();
+		}
+
+		if(bAddedOne && bFoundCF_UNICODETEXT == false)
+		{
+			theApp.m_db.execDML(_T("INSERT INTO Types VALUES(NULL, 'CF_UNICODETEXT');"));
+		}
+	}
+	catch(CDaoException* e)
+	{
+		TCHAR cError[100];
+		e->GetErrorMessage(cError, 100);
+		Log(StrF(_T("CDaoException - %s"), cError));
+
+		ASSERT(FALSE);
+		e->Delete();
+		return false;
+	}
+	catch (CppSQLite3Exception& e)
+	{
+		Log(StrF(_T("SQLITE Exception %d - %s"), e.errorCode(), e.errorMessage()));
+
+		ASSERT(FALSE);
+		return false;
+	}	
+
+	return true;
+}
+
+void CConvert::SetupProgressWnd()
+{
+	CMainTable recset;
+	recset.m_pDatabase = &theApp.m_AccessDatabase;
+	recset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T(""), 0);
+
+	recset.MoveLast();
+
+	m_Progress.Create(NULL, _T("Ditto Conversion"), TRUE);
+	m_Progress.SetRange(0, recset.GetRecordCount());
+	m_Progress.HideCancel();	
+	m_Progress.SetText(_T("Converting version 2 database to version 3 database.\n")
+					_T("     Version 3 now uses sqlite (sqlite.org) as it's database\n")
+					_T("     Version 3 now support Unicode, display international characters"));
+
+	::SetWindowPos(m_Progress.GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
+}

+ 26 - 0
AccessToSqlite/Convert.h

@@ -0,0 +1,26 @@
+#pragma once
+
+#include "Clip.h"
+#include "MainTable.h"
+#include "../progresswnd.h"
+
+class CConvert
+{
+public:
+	CConvert(void);
+	~CConvert(void);
+
+	bool ConvertGroups(long lParentID);
+	bool ConvertNonGroups();
+	bool ConvertTypes();
+
+	void SetupProgressWnd();
+
+protected:
+	bool LoadFormats(long lID, CClipFormats& formats);
+	bool ConvertEntry(CMainTable &recset);
+
+	CMap<long, long, long, long> m_ParentMap;
+
+	CProgressWnd m_Progress;
+};

+ 102 - 0
AccessToSqlite/DataTable.cpp

@@ -0,0 +1,102 @@
+// DataTable.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "AccessToSqlite.h"
+#include "DataTable.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+#pragma warning(disable : 4995)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CDataTable
+
+IMPLEMENT_DYNAMIC(CDataTable, CDaoRecordset)
+
+CDataTable::CDataTable(CDaoDatabase* pdb)
+:CDaoRecordset(pdb)
+{
+	//{{AFX_FIELD_INIT(CDataTable)
+	m_lID = 0;
+	m_lDataID = 0;
+	m_strClipBoardFormat = _T("");
+	m_nFields = 4;
+	//}}AFX_FIELD_INIT
+	m_nDefaultType = dbOpenDynaset;
+}
+
+CString CDataTable::GetDefaultSQL()
+{
+	return _T("[Data]");
+}
+
+void CDataTable::DoFieldExchange(CDaoFieldExchange* pFX)
+{
+	//{{AFX_FIELD_MAP(CDataTable)
+	pFX->SetFieldType(CDaoFieldExchange::outputColumn);
+	DFX_Long(pFX, _T("[lID]"), m_lID);
+	DFX_Long(pFX, _T("[lDataID]"), m_lDataID);
+	DFX_Text(pFX, _T("[strClipBoardFormat]"), m_strClipBoardFormat);
+	DFX_LongBinary(pFX, _T("[ooData]"), m_ooData);
+	//}}AFX_FIELD_MAP
+}
+
+
+// caller must free
+// takes m_ooData's HGLOBAL (do not update recset after calling this)
+// This should be faster than making a copy, but is this SAFE ??
+HGLOBAL CDataTable::TakeData()
+{
+	// if there is nothing to take
+	if( m_ooData.m_hData == 0 || m_ooData.m_dwDataLength == 0 )
+		return 0;
+	
+	// Unlock the handle that was locked by DaoLongBinaryAllocCallback()
+	//  (through DFX_LongBinary()).
+	::GlobalUnlock( m_ooData.m_hData );
+	
+	// we have to do a realloc in order to make the hGlobal m_dwDataLength
+	HGLOBAL hGlobal = ::GlobalReAlloc(m_ooData.m_hData, m_ooData.m_dwDataLength, GMEM_MOVEABLE );
+	if( !hGlobal || ::GlobalSize(hGlobal) == 0 )
+	{
+		//::_RPT0( _CRT_WARN, GetErrorString(::GetLastError()) );
+		ASSERT(FALSE);
+	}
+	// no longer valid
+	m_ooData.m_hData = 0;
+	m_ooData.m_dwDataLength = 0;
+	return hGlobal;
+}
+
+// allocates a new copy of the data
+HGLOBAL CDataTable::LoadData()
+{
+	HGLOBAL hGlobal;
+	ULONG ulBufLen = m_ooData.m_dwDataLength; //Retrieve size of array
+	
+	if( ulBufLen == 0 || m_ooData.m_hData == 0 )
+		return 0;
+	
+	hGlobal = NewGlobalH( m_ooData.m_hData, ulBufLen );
+	
+	return hGlobal;
+}
+
+void CDataTable::Open(LPCTSTR lpszFormat,...) 
+{
+	CString csText;
+	va_list vlist;
+	
+	ASSERT(AfxIsValidString(lpszFormat));
+	va_start(vlist,lpszFormat);
+	csText.FormatV(lpszFormat,vlist);
+	va_end(vlist);
+	
+	CDaoRecordset::Open(AFX_DAO_USE_DEFAULT_TYPE, csText, 0);
+}

+ 45 - 0
AccessToSqlite/DataTable.h

@@ -0,0 +1,45 @@
+#if !defined(AFX_DATATABLE_H__B70F6A02_C464_4FFE_91E8_E7F59765178F__INCLUDED_)
+#define AFX_DATATABLE_H__B70F6A02_C464_4FFE_91E8_E7F59765178F__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+// DataTable.h : header file
+//
+
+#pragma warning(disable : 4995)
+
+
+class CDataTable : public CDaoRecordset
+{
+public:
+	CDataTable(CDaoDatabase* pDatabase = NULL);
+	DECLARE_DYNAMIC(CDataTable)
+
+// Field/Param Data
+	//{{AFX_FIELD(CDataTable, CDaoRecordset)
+	long	m_lID;
+	long	m_lDataID;
+	CString	m_strClipBoardFormat;
+	CLongBinary	m_ooData;
+	//}}AFX_FIELD
+
+// Overrides
+	// ClassWizard generated virtual function overrides
+	//{{AFX_VIRTUAL(CDataTable)
+	public:
+	virtual CString GetDefaultSQL();		// Default SQL for Recordset
+	virtual void DoFieldExchange(CDaoFieldExchange* pFX);  // RFX support
+	//}}AFX_VIRTUAL
+public:
+	
+	HGLOBAL TakeData();
+	HGLOBAL LoadData(); // allocates a new copy of the data
+
+	void Open(LPCTSTR lpszFormat,...);
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_DATATABLE_H__B70F6A02_C464_4FFE_91E8_E7F59765178F__INCLUDED_)

+ 71 - 0
AccessToSqlite/MainTable.cpp

@@ -0,0 +1,71 @@
+// MainTable.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "AccessToSqlite.h"
+#include "MainTable.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+#pragma warning(disable : 4995)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CMainTable
+
+IMPLEMENT_DYNAMIC(CMainTable, CDaoRecordset)
+
+CMainTable::CMainTable(CDaoDatabase* pdb)
+	: CDaoRecordset(pdb)
+{
+	//{{AFX_FIELD_INIT(CMainTable)
+	m_lID = 0;
+	m_lDate = 0;
+	m_strText = _T("");
+	m_lShortCut = 0;
+	m_lDontAutoDelete = 0;
+	m_lTotalCopySize = 0;
+
+	m_bIsGroup = FALSE;
+	m_lParentID = 0;
+	m_dOrder = 0;
+	m_lDataID = 0;
+
+	m_nFieldCount = m_nFields = 10;
+	//}}AFX_FIELD_INIT
+	m_nDefaultType = dbOpenDynaset;
+	m_bBindFields = true;
+}
+
+CString CMainTable::GetDefaultSQL()
+{
+	return _T("[Main]");
+}
+
+void CMainTable::DoFieldExchange(CDaoFieldExchange* pFX)
+{
+	// make sure this isn't called when we aren't using bound fields
+	VERIFY( m_bBindFields == true );
+
+	//{{AFX_FIELD_MAP(CMainTable)
+	pFX->SetFieldType(CDaoFieldExchange::outputColumn);
+	DFX_Long(pFX, _T("[lID]"), m_lID);
+	DFX_Long(pFX, _T("[lDate]"), m_lDate);
+	DFX_Text(pFX, _T("[mText]"), m_strText);
+	DFX_Long(pFX, _T("[lShortCut]"), m_lShortCut);
+	DFX_Long(pFX, _T("[lDontAutoDelete]"), m_lDontAutoDelete);
+	DFX_Long(pFX, _T("[lTotalCopySize]"), m_lTotalCopySize);
+	// GROUPS
+	DFX_Bool(pFX, _T("[bIsGroup]"), m_bIsGroup);
+	DFX_Long(pFX, _T("[lParentID]"), m_lParentID);
+	DFX_Double(pFX, _T("[dOrder]"), m_dOrder);
+	// sharing data
+	DFX_Long(pFX, _T("[lDataID]"), m_lDataID);
+	//}}AFX_FIELD_MAP
+}
+
+

+ 51 - 0
AccessToSqlite/MainTable.h

@@ -0,0 +1,51 @@
+#if !defined(AFX_MAINTABLE_H__F5CFB0A6_A6E1_4C55_A685_AB5F1A0FCF53__INCLUDED_)
+#define AFX_MAINTABLE_H__F5CFB0A6_A6E1_4C55_A685_AB5F1A0FCF53__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#pragma warning(disable : 4995)
+
+
+class CMainTable : public CDaoRecordset
+{
+public:
+	CMainTable(CDaoDatabase* pDatabase = NULL);
+	DECLARE_DYNAMIC(CMainTable)
+
+
+// Field/Param Data
+	//{{AFX_FIELD(CMainTable, CDaoRecordset)
+	long	m_lID;
+	long	m_lDate;
+	CString	m_strText;
+	long	m_lShortCut;
+	long	m_lDontAutoDelete;
+	long	m_lTotalCopySize;
+
+	BOOL	m_bIsGroup;
+	long	m_lParentID;
+	double	m_dOrder;
+	long	m_lDataID;
+	//}}AFX_FIELD
+
+// Overrides
+	// ClassWizard generated virtual function overrides
+	//{{AFX_VIRTUAL(CMainTable)
+	public:
+	virtual CString GetDefaultSQL();		// Default SQL for Recordset
+	virtual void DoFieldExchange(CDaoFieldExchange* pFX);  // RFX support
+	//}}AFX_VIRTUAL
+
+public:
+	CString GetDisplayText( int nMaxLines );
+
+	int		m_nFieldCount;
+	bool	m_bBindFields;
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_MAINTABLE_H__F5CFB0A6_A6E1_4C55_A685_AB5F1A0FCF53__INCLUDED_)

+ 311 - 0
AccessToSqlite/OpenAccessdatabase.cpp

@@ -0,0 +1,311 @@
+#include "StdAfx.h"
+#include "OpenAccessdatabase.h"
+
+
+BOOL Upgrade_mText(CDaoDatabase& db);
+BOOL Upgrade_Groups(CDaoDatabase& db);
+BOOL Upgrade_ShareData(CDaoDatabase& db);
+int GetFieldPos(CDaoRecordset& recs, LPCTSTR fieldName);
+BOOL CreateBackup(CString csPath);
+
+COpenAccessdatabase::COpenAccessdatabase(void)
+{
+}
+
+COpenAccessdatabase::~COpenAccessdatabase(void)
+{
+}
+
+
+// m_pErrorInfo:
+// - m_lErrorCode      0x00000cc1
+// - m_strSource       "DAO.Fields"
+// - m_strDescription  "Item not found in this collection."
+#define ON_FIELD_ABSENT(name,onabsent) \
+	try { table.GetFieldInfo(name,info); } \
+	catch(CDaoException* e) \
+{ \
+	if( !bUpgrade || e->m_pErrorInfo->m_lErrorCode != 0x00000cc1 ) \
+	throw e; \
+	if( bUpgraded == FALSE ) \
+	CreateBackup(csPath); \
+	bResult &= onabsent; \
+	bUpgraded = TRUE; \
+	e->Delete(); \
+}
+
+BOOL COpenAccessdatabase::ValidDB(CString csPath, BOOL bUpgrade)
+{
+	BOOL bResult = TRUE;
+	BOOL bUpgraded = FALSE;
+	try
+	{
+		CDaoDatabase db;
+
+		try
+		{
+			db.Open(csPath);
+		}
+		catch(CDaoException* e)
+		{
+			TCHAR   szErrorMessage[512];
+			UINT    nHelpContext;
+
+			if(e->GetErrorMessage(szErrorMessage, 512, &nHelpContext))
+			{
+				if(STRCMP(szErrorMessage, _T("Unable to initialize DAO/Jet db engine.")) == 0)
+				{
+					e->Delete();
+					return ERROR_OPENING_DATABASE;				
+				}
+			}
+			e->ReportError();
+			e->Delete();
+
+			return FALSE;
+		}
+
+
+		CDaoTableDef table(&db);
+		CDaoFieldInfo info;
+
+		table.Open(_T("Main"));
+		table.GetFieldInfo(_T("lID"), info);
+		table.GetFieldInfo(_T("lDate"), info);
+		ON_FIELD_ABSENT(_T("mText"), Upgrade_mText(db)); // +mText, -strText, -strType
+		table.GetFieldInfo(_T("lShortCut"), info);
+		table.GetFieldInfo(_T("lDontAutoDelete"), info);
+		table.GetFieldInfo(_T("lTotalCopySize"), info);
+		ON_FIELD_ABSENT(_T("bIsGroup"), Upgrade_Groups(db));
+		table.GetFieldInfo(_T("lParentID"), info); // part of Upgrade_Groups
+		table.GetFieldInfo(_T("dOrder"), info);  // part of Upgrade_Groups
+		ON_FIELD_ABSENT(_T("lDataID"), Upgrade_ShareData(db)); // +lDataID, -lParentID
+		table.Close();
+
+		table.Open(_T("Data"));
+		table.GetFieldInfo(_T("lID"), info);
+		table.GetFieldInfo(_T("lDataID"), info); // part of Upgrade_ShareData()
+		table.GetFieldInfo(_T("strClipBoardFormat"), info);
+		table.GetFieldInfo(_T("ooData"), info);
+		table.Close();
+
+		table.Open(_T("Types"));
+		table.GetFieldInfo(_T("ID"), info);
+		table.GetFieldInfo(_T("TypeText"), info);
+		table.Close();
+	}
+	catch(CDaoException* e)
+	{
+		ASSERT(FALSE);
+		e->Delete();
+		return FALSE;
+	}
+
+	// if we upgraded, perform full validation again without upgrading
+	if( bUpgraded )
+		return ValidDB(csPath, FALSE);
+
+	return bResult;
+}
+
+// +mText, -strText, -strType
+BOOL Upgrade_mText(CDaoDatabase& db)
+{
+	try
+	{
+		db.Execute(_T("ALTER TABLE Main ADD COLUMN mText MEMO"), dbFailOnError);
+		db.Execute(_T("UPDATE Main SET mText=strText"), dbFailOnError);
+		db.Execute(_T("ALTER TABLE Main DROP COLUMN strText"), dbFailOnError);
+		db.Execute(_T("ALTER TABLE Main DROP COLUMN strType"), dbFailOnError);
+	}
+	catch(CDaoException* e)
+	{
+		ASSERT(FALSE);
+		e->Delete();
+		return FALSE;
+	}
+	
+	return TRUE;
+}
+
+BOOL Upgrade_Groups(CDaoDatabase& db)
+{
+	try
+	{
+		CDaoTableDefEx table(&db);
+		table.Open(_T("Main"));
+		// Groups
+		table.CreateField(_T("bIsGroup"), dbBoolean, 1, 0, _T("0")); // for Groups
+		table.CreateIndex(FALSE, _T("bIsGroup"));
+		table.CreateField(_T("lParentID"), dbLong, 4, 0, _T("0")); // parent Group Main.lID
+		table.CreateIndex(FALSE, _T("lParentID"));
+		table.CreateField(_T("dOrder"), dbDouble, 8, 0, _T("0")); // for Order within Groups
+		table.CreateIndex(FALSE, _T("dOrder"));
+		table.Close();
+		// set defaults (otherwise might be NULL)
+		db.Execute(_T("UPDATE Main SET bIsGroup = 0, lParentID = 0, dOrder = 0"), dbFailOnError);
+	}
+	catch(CDaoException* e)
+	{
+		ASSERT(FALSE);
+		e->Delete();
+		return FALSE;
+	}
+	
+	return TRUE;
+}
+
+BOOL Upgrade_ShareData(CDaoDatabase& db)
+{
+	try
+	{
+		CDaoTableDefEx table(&db);
+
+		table.Open(_T("Main"));
+		table.CreateField(_T("lDataID"), dbLong, 4, 0, _T("0")); // corresponds to Data.lDataID
+		table.CreateIndex(FALSE, _T("lDataID"));
+		table.Close();
+
+		table.Open(_T("Data"));
+		table.CreateField(_T("lDataID"), dbLong, 4, 0, _T("0")); // parent Group Main.lID
+		table.CreateIndex(FALSE, _T("lDataID"));
+		table.Close();
+
+		// set defaults
+		db.Execute(_T("UPDATE Main SET lDataID = 0"), dbFailOnError);
+		db.Execute(_T("UPDATE Data SET lDataID = 0"), dbFailOnError);
+
+		// update Main.lDataID and Data.lParentID for sharing Data
+		//
+		// - multiple Formats (Data.lID) exist for a single ClipData (Data.lDataID)
+		// - The value of lDataID is arbitrary, but must be unique to the ClipData.
+		//   - In order to ensure uniqueness, lDataID is assigned the lID of
+		//     the first Format in the Clip's set.
+
+		COleVariant var((long)0);
+		CDaoRecordset main(&db);
+		long main_fldID;
+		long main_fldDataID;
+		long main_lID;
+
+		CDaoRecordset data(&db);
+		long data_fldID;
+		long data_fldDataID;
+		long lDataID;
+		int count = 0;
+		int i = 0;
+		int percentPrev = -1;
+		int percent = -1;
+
+		main.Open(dbOpenDynaset, _T("SELECT lID, lDataID FROM Main"));
+
+		main_fldID = GetFieldPos(main, _T("lID"));
+		VERIFY(main_fldID == 0);
+		main_fldDataID = GetFieldPos(main, _T("lDataID"));
+		VERIFY(main_fldDataID == 1);
+
+		if( !main.IsEOF() )
+		{
+			main.MoveLast();
+			count = main.GetRecordCount();
+			main.MoveFirst();
+		}
+
+		// for each record in Main and its corresponding records in Data,
+		//  assign a new unique lDataID.
+		while( !main.IsEOF() )
+		{
+			i++;
+			percentPrev = percent;
+			percent = (i*100)/count;
+
+			main.GetFieldValue(main_fldID,var);
+			main_lID = var.lVal;
+
+			CString cs;
+			cs.Format(_T("SELECT lID, lDataID FROM Data WHERE lParentID = %d"), main_lID);
+
+			data.Open(dbOpenDynaset, cs);
+
+			data_fldID = GetFieldPos(data, _T("lID"));
+			VERIFY(data_fldID == 0);
+			data_fldDataID = GetFieldPos(data, _T("lDataID"));
+			VERIFY(data_fldDataID == 1);
+
+			// lDataID = the first data record lID
+			lDataID = 0;
+			if( !data.IsEOF() )
+			{
+				data.GetFieldValue(0,var); // 0 == lID field
+				lDataID = var.lVal;
+			}
+			// assign all Data records the same lDataID
+			while( !data.IsEOF() )
+			{
+				var.lVal = lDataID;
+				data.Edit();
+				data.SetFieldValue(1,var); // 1 == lDataID field
+				data.Update();
+				data.MoveNext();
+			}
+
+			// assign Main.lDataID
+			var.lVal = lDataID;
+			main.Edit();
+			main.SetFieldValue(1,var); // 1 == lDataID field
+			main.Update();
+			main.MoveNext();
+
+			data.Close();
+		}
+
+		main.Close();
+
+		// delete the old field
+		db.Execute(_T("ALTER TABLE Data DROP CONSTRAINT lParentID"), dbFailOnError);
+		db.Execute(_T("ALTER TABLE Data DROP COLUMN lParentID"), dbFailOnError);
+	}
+	catch(CDaoException* e)
+	{
+		ASSERT(FALSE);
+		e->Delete();
+		return FALSE;
+	}
+	
+	return TRUE;
+}
+
+int GetFieldPos(CDaoRecordset& recs, LPCTSTR fieldName)
+{
+	CDaoFieldInfo fi;
+	int count = recs.GetFieldCount();
+
+	for( int i = 0; i < count; i++ )
+	{
+		recs.GetFieldInfo(i, fi);
+		if( fi.m_strName.Compare( fieldName ) == 0 )
+			return i; // when found a match, return it
+	}
+
+	return -1;
+}
+
+BOOL CreateBackup(CString csPath)
+{
+	CString csOriginal;
+	int count = 0;
+	// create a backup of the existing database
+	do
+	{
+		count++;
+		csOriginal.Format(_T("%s.%03d"), csPath, count);
+		// in case of some weird infinite loop
+		if( count > 50 )
+		{
+			ASSERT(0);
+			return FALSE;
+		}
+	} while( !::CopyFile(csPath, csOriginal, TRUE) );
+
+	return TRUE;
+}

+ 83 - 0
AccessToSqlite/OpenAccessdatabase.h

@@ -0,0 +1,83 @@
+#pragma once
+
+#define ERROR_OPENING_DATABASE -2
+
+#pragma warning(disable : 4995)
+
+class COpenAccessdatabase
+{
+public:
+	COpenAccessdatabase(void);
+	~COpenAccessdatabase(void);
+
+	BOOL ValidDB(CString csPath, BOOL bUpgrade);
+};
+
+
+class CDaoTableDefEx : public CDaoTableDef
+{
+public:
+	CDaoTableDefEx(CDaoDatabase* pDatabase)
+		:CDaoTableDef(pDatabase)
+	{
+	}
+
+	BOOL CreateIndex(BOOL bPrimaryKey, CString csField)
+	{
+		try
+		{
+			CDaoIndexInfo IndexInfo;
+			CDaoIndexFieldInfo IndexFieldInfo[1];
+			IndexFieldInfo[0].m_strName = csField;
+			IndexFieldInfo[0].m_bDescending = TRUE;
+			IndexInfo.m_strName = csField;
+			IndexInfo.m_pFieldInfos = IndexFieldInfo;
+			IndexInfo.m_nFields = 1;
+			IndexInfo.m_bPrimary = bPrimaryKey;
+			IndexInfo.m_bUnique = FALSE;
+			IndexInfo.m_bIgnoreNulls = FALSE;
+			IndexInfo.m_bRequired = FALSE;
+
+			CDaoTableDef::CreateIndex( IndexInfo );
+		}
+		catch(CDaoException *e)
+		{
+			ASSERT(FALSE);
+			e->Delete();
+			return FALSE;
+		}
+
+		return TRUE;
+	}
+
+	BOOL CreateField(LPCTSTR lpszName, short nType, long lSize, long lAttributes = 0, CString csDefault = _T(""))
+	{
+		try
+		{
+			CDaoFieldInfo fieldinfo;
+
+			// Initialize everything so only correct properties will be set
+			fieldinfo.m_strName = lpszName;
+			fieldinfo.m_nType = nType;
+			fieldinfo.m_lSize = lSize;
+			fieldinfo.m_lAttributes = lAttributes;
+			fieldinfo.m_nOrdinalPosition = 0;
+			fieldinfo.m_bRequired = FALSE;
+			fieldinfo.m_bAllowZeroLength = FALSE;
+			fieldinfo.m_lCollatingOrder = 0;
+			fieldinfo.m_strDefaultValue = csDefault;
+
+			CDaoTableDef::CreateField(fieldinfo);
+
+			return TRUE;
+		}
+		catch(CDaoException *e)
+		{
+			e->Delete();
+			ASSERT(FALSE);
+		}
+
+		return FALSE;
+	}
+
+};

+ 60 - 0
AccessToSqlite/ReadMe.txt

@@ -0,0 +1,60 @@
+========================================================================
+    MICROSOFT FOUNDATION CLASS LIBRARY : AccessToSqlite Project Overview
+========================================================================
+
+
+AppWizard has created this AccessToSqlite DLL for you.  This DLL not only
+demonstrates the basics of using the Microsoft Foundation classes but
+is also a starting point for writing your DLL.
+
+This file contains a summary of what you will find in each of the files that
+make up your AccessToSqlite DLL.
+
+AccessToSqlite.vcproj
+    This is the main project file for VC++ projects generated using an Application Wizard. 
+    It contains information about the version of Visual C++ that generated the file, and 
+    information about the platforms, configurations, and project features selected with the
+    Application Wizard.
+
+AccessToSqlite.h
+    This is the main header file for the DLL.  It declares the
+    CAccessToSqliteApp class.
+
+AccessToSqlite.cpp
+    This is the main DLL source file.  It contains the class CAccessToSqliteApp.
+
+AccessToSqlite.rc
+    This is a listing of all of the Microsoft Windows resources that the
+    program uses.  It includes the icons, bitmaps, and cursors that are stored
+    in the RES subdirectory.  This file can be directly edited in Microsoft
+    Visual C++.
+
+res\AccessToSqlite.rc2
+    This file contains resources that are not edited by Microsoft 
+    Visual C++.  You should place all resources not editable by
+    the resource editor in this file.
+
+AccessToSqlite.def
+    This file contains information about the DLL that must be
+    provided to run with Microsoft Windows.  It defines parameters
+    such as the name and description of the DLL.  It also exports
+    functions from the DLL.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named AccessToSqlite.pch and a precompiled types file named StdAfx.obj.
+
+Resource.h
+    This is the standard header file, which defines new resource IDs.
+    Microsoft Visual C++ reads and updates this file.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+/////////////////////////////////////////////////////////////////////////////

+ 16 - 0
AccessToSqlite/Resource.h

@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by AccessToSqlite.RC
+//
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+
+#define _APS_NEXT_RESOURCE_VALUE	1000
+#define _APS_NEXT_CONTROL_VALUE		1000
+#define _APS_NEXT_SYMED_VALUE		1000
+#define _APS_NEXT_COMMAND_VALUE		32771
+#endif
+#endif

+ 51 - 0
AccessToSqlite/TypesTable.cpp

@@ -0,0 +1,51 @@
+// TypesTable.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "AccessToSqlite.h"
+#include "TypesTable.h"
+
+#pragma warning(disable : 4995)
+
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypesTable
+
+IMPLEMENT_DYNAMIC(CTypesTable, CDaoRecordset)
+
+CTypesTable::CTypesTable(CDaoDatabase* pdb)
+	: CDaoRecordset(pdb)
+{
+	//{{AFX_FIELD_INIT(CTypesTable)
+	m_ID = 0;
+	m_TypeText = _T("");
+	m_nFields = 2;
+	//}}AFX_FIELD_INIT
+	m_nDefaultType = dbOpenDynaset;
+}
+
+
+CString CTypesTable::GetDefaultDBName()
+{
+	return _T("C:\\Projects\\Ditto\\CP_Shared\\Release_DLL\\97.mdb");
+}
+
+CString CTypesTable::GetDefaultSQL()
+{
+	return _T("[Types]");
+}
+
+void CTypesTable::DoFieldExchange(CDaoFieldExchange* pFX)
+{
+	//{{AFX_FIELD_MAP(CTypesTable)
+	pFX->SetFieldType(CDaoFieldExchange::outputColumn);
+	DFX_Long(pFX, _T("[ID]"), m_ID);
+	DFX_Text(pFX, _T("[TypeText]"), m_TypeText);
+	//}}AFX_FIELD_MAP
+}

+ 43 - 0
AccessToSqlite/TypesTable.h

@@ -0,0 +1,43 @@
+#if !defined(AFX_TYPESTABLE_H__41C712E1_75EC_4385_ABA3_9749852F63FD__INCLUDED_)
+#define AFX_TYPESTABLE_H__41C712E1_75EC_4385_ABA3_9749852F63FD__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+// TypesTable.h : header file
+//
+
+#pragma warning(disable : 4995)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypesTable DAO recordset
+
+class CTypesTable : public CDaoRecordset
+{
+public:
+	CTypesTable(CDaoDatabase* pDatabase = NULL);
+	DECLARE_DYNAMIC(CTypesTable)
+
+// Field/Param Data
+	//{{AFX_FIELD(CTypesTable, CDaoRecordset)
+	long	m_ID;
+	CString	m_TypeText;
+	//}}AFX_FIELD
+	
+public:
+
+// Overrides
+	// ClassWizard generated virtual function overrides
+	//{{AFX_VIRTUAL(CTypesTable)
+	public:
+	virtual CString GetDefaultDBName();		// Default database name
+	virtual CString GetDefaultSQL();		// Default SQL for Recordset
+	virtual void DoFieldExchange(CDaoFieldExchange* pFX);  // RFX support
+	//}}AFX_VIRTUAL
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_TYPESTABLE_H__41C712E1_75EC_4385_ABA3_9749852F63FD__INCLUDED_)

+ 13 - 0
AccessToSqlite/res/AccessToSqlite.rc2

@@ -0,0 +1,13 @@
+//
+// ACCESSTOSQLITE.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...
+
+/////////////////////////////////////////////////////////////////////////////

+ 7 - 0
AccessToSqlite/stdafx.cpp

@@ -0,0 +1,7 @@
+// stdafx.cpp : source file that includes just the standard includes
+// AccessToSqlite.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+

+ 60 - 0
AccessToSqlite/stdafx.h

@@ -0,0 +1,60 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+
+#pragma once
+
+#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
+#define _CRT_SECURE_NO_DEPRECATE 1
+
+#ifndef VC_EXTRALEAN
+#define VC_EXTRALEAN		// Exclude rarely-used stuff from Windows headers
+#endif
+
+// Modify the following defines if you have to target a platform prior to the ones specified below.
+// Refer to MSDN for the latest info on corresponding values for different platforms.
+#ifndef WINVER				// Allow use of features specific to Windows XP or later.
+#define WINVER 0x0501		// Change this to the appropriate value to target other versions of Windows.
+#endif
+
+#ifndef _WIN32_WINNT		// Allow use of features specific to Windows XP or later.                   
+#define _WIN32_WINNT 0x0501	// Change this to the appropriate value to target other versions of Windows.
+#endif						
+
+#ifndef _WIN32_WINDOWS		// Allow use of features specific to Windows 98 or later.
+#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
+#endif
+
+#ifndef _WIN32_IE			// Allow use of features specific to IE 6.0 or later.
+#define _WIN32_IE 0x0600	// Change this to the appropriate value to target other versions of IE.
+#endif
+
+#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit
+
+#include <afxwin.h>         // MFC core and standard components
+#include <afxext.h>         // MFC extensions
+
+#ifndef _AFX_NO_OLE_SUPPORT
+#include <afxole.h>         // MFC OLE classes
+#include <afxodlgs.h>       // MFC OLE dialog classes
+#include <afxdisp.h>        // MFC Automation classes
+#endif // _AFX_NO_OLE_SUPPORT
+
+#ifndef _AFX_NO_DB_SUPPORT
+#include <afxdb.h>			// MFC ODBC database classes
+#endif // _AFX_NO_DB_SUPPORT
+
+#ifndef _AFX_NO_DAO_SUPPORT
+#include <afxdao.h>			// MFC DAO database classes
+#endif // _AFX_NO_DAO_SUPPORT
+
+#include "..\UnicodeMacros.h"
+
+#ifndef _AFX_NO_OLE_SUPPORT
+#include <afxdtctl.h>		// MFC support for Internet Explorer 4 Common Controls
+#endif
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h>			// MFC support for Windows Common Controls
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+

+ 22 - 22
AddType.cpp

@@ -52,31 +52,31 @@ BOOL CAddType::OnInitDialog()
 {
 	CDialog::OnInitDialog();
 	
-	m_lbDefaultTypes.AddString("CF_TEXT");
-	m_lbDefaultTypes.AddString("CF_BITMAP");
-	m_lbDefaultTypes.AddString("CF_METAFILEPICT");
-	m_lbDefaultTypes.AddString("CF_SYLK");
-	m_lbDefaultTypes.AddString("CF_DIF");
-	m_lbDefaultTypes.AddString("CF_TIFF");
-	m_lbDefaultTypes.AddString("CF_OEMTEXT");
-	m_lbDefaultTypes.AddString("CF_DIB");
-	m_lbDefaultTypes.AddString("CF_PALETTE");
-	m_lbDefaultTypes.AddString("CF_PENDATA");
-	m_lbDefaultTypes.AddString("CF_RIFF");
-	m_lbDefaultTypes.AddString("CF_WAVE");
-	m_lbDefaultTypes.AddString("CF_UNICODETEXT");
-	m_lbDefaultTypes.AddString("CF_ENHMETAFILE");
-	m_lbDefaultTypes.AddString("CF_HDROP");
-	m_lbDefaultTypes.AddString("CF_LOCALE");
-	m_lbDefaultTypes.AddString("CF_OWNERDISPLAY");
-	m_lbDefaultTypes.AddString("CF_DSPTEXT");
-	m_lbDefaultTypes.AddString("CF_DSPBITMAP");
-	m_lbDefaultTypes.AddString("CF_DSPMETAFILEPICT");
-	m_lbDefaultTypes.AddString("CF_DSPENHMETAFILE");
+	m_lbDefaultTypes.AddString(_T("CF_TEXT"));
+	m_lbDefaultTypes.AddString(_T("CF_BITMAP"));
+	m_lbDefaultTypes.AddString(_T("CF_METAFILEPICT"));
+	m_lbDefaultTypes.AddString(_T("CF_SYLK"));
+	m_lbDefaultTypes.AddString(_T("CF_DIF"));
+	m_lbDefaultTypes.AddString(_T("CF_TIFF"));
+	m_lbDefaultTypes.AddString(_T("CF_OEMTEXT"));
+	m_lbDefaultTypes.AddString(_T("CF_DIB"));
+	m_lbDefaultTypes.AddString(_T("CF_PALETTE"));
+	m_lbDefaultTypes.AddString(_T("CF_PENDATA"));
+	m_lbDefaultTypes.AddString(_T("CF_RIFF"));
+	m_lbDefaultTypes.AddString(_T("CF_WAVE"));
+	m_lbDefaultTypes.AddString(_T("CF_UNICODETEXT"));
+	m_lbDefaultTypes.AddString(_T("CF_ENHMETAFILE"));
+	m_lbDefaultTypes.AddString(_T("CF_HDROP"));
+	m_lbDefaultTypes.AddString(_T("CF_LOCALE"));
+	m_lbDefaultTypes.AddString(_T("CF_OWNERDISPLAY"));
+	m_lbDefaultTypes.AddString(_T("CF_DSPTEXT"));
+	m_lbDefaultTypes.AddString(_T("CF_DSPBITMAP"));
+	m_lbDefaultTypes.AddString(_T("CF_DSPMETAFILEPICT"));
+	m_lbDefaultTypes.AddString(_T("CF_DSPENHMETAFILE"));
 	m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RTF)));
 	m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RTFNOOBJS)));
 	m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RETEXTOBJ)));
-	m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat("HTML Format")));
+	m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(_T("HTML Format"))));
 		
 	COleDataObject oleData;
 

+ 6 - 3
AlphaBlend.cpp

@@ -81,8 +81,10 @@ BOOL CAlphaBlend::SetWindowHandle(HWND hWnd)
 
 BOOL CAlphaBlend::SetWindowHandle(CWnd *pWnd)
 {
-	if (pWnd && ::IsWindow(pWnd->GetSafeHwnd())) m_hWnd = pWnd->GetSafeHwnd();
-	else return false;
+	if (pWnd && ::IsWindow(pWnd->GetSafeHwnd())) 
+		m_hWnd = pWnd->GetSafeHwnd();
+	else 
+		return false;
 	return true;
 }
 
@@ -109,7 +111,7 @@ BOOL CAlphaBlend::SetLayeredWindowAttributesEx(HWND hwnd, COLORREF crKey, BYTE b
 	HINSTANCE DLL;
 	fnc setLayeredWindowAttributes;
 	
-	DLL = LoadLibrary("user32.dll");
+	DLL = LoadLibrary(_T("user32.dll"));
 	if(DLL != NULL)
 	{
 		setLayeredWindowAttributes = (fnc)GetProcAddress(DLL,"SetLayeredWindowAttributes");  
@@ -169,6 +171,7 @@ BOOL CAlphaBlend::SetTransparent(HWND hWnd, int nOpacity, BOOL bTransparent)
 	// set members
 	if (!SetWindowHandle(hWnd)) 
 		return false;
+
 	if (!SetOpacity(nOpacity)) 
 		return false;
 

+ 475 - 219
CP_Main.cpp

@@ -2,14 +2,18 @@
 //
 
 #include "stdafx.h"
+//#include "vld.h"
 #include "CP_Main.h"
 #include "MainFrm.h"
 #include "Misc.h"
-#include "SelectDB.h"
 #include ".\cp_main.h"
 #include "server.h"
 #include "Client.h"
+#include "InternetUpdate.h"
 #include <io.h>
+#include "Path.h"
+#include "Clip_ImportExport.h"
+#include "HyperLink.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -20,6 +24,53 @@ static char THIS_FILE[] = __FILE__;
 /////////////////////////////////////////////////////////////////////////////
 // The one and only CCP_MainApp object
 
+class DittoCommandLineInfo : public CCommandLineInfo
+{
+public:
+	DittoCommandLineInfo()
+	{
+		m_bDisconnect = FALSE;
+		m_bConnect = FALSE;
+		m_bU3 = FALSE;
+		m_bU3Stop = FALSE;
+		m_bU3Install = FALSE;
+	}
+
+	virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast)
+	{
+		if(bFlag)
+		{
+			if(STRICMP(pszParam, _T("Connect")) == 0)
+			{
+				m_bConnect = TRUE;
+			}
+			else if(STRICMP(pszParam, _T("Disconnect")) == 0)
+			{
+				m_bDisconnect = TRUE;
+			}
+			else if(STRICMP(pszParam, _T("U3")) == 0)
+			{
+				m_bU3 = TRUE;
+			}
+			else if(STRICMP(pszParam, _T("U3appStop")) == 0)
+			{
+				m_bU3Stop = TRUE;
+			}
+			else if(STRICMP(pszParam, _T("U3Install")) == 0)
+			{
+				m_bU3Install = TRUE;
+			}
+		}
+
+	}
+
+	BOOL m_bDisconnect;
+	BOOL m_bConnect;
+	BOOL m_bU3;
+	BOOL m_bU3Stop;
+	BOOL m_bU3Install;
+};
+
 CCP_MainApp theApp;
 
 /////////////////////////////////////////////////////////////////////////////
@@ -46,20 +97,15 @@ CCP_MainApp::CCP_MainApp()
 
 	m_bShowingQuickPaste = false;
 	m_bShowingOptions = false;
-	m_bShowCopyProperties = false;
 	m_bRemoveOldEntriesPending = false;
 
 	m_IC_bCopy = false;
 
 	m_GroupDefaultID = 0;
-	m_GroupID = 0;
+	m_GroupID = -1;
 	m_GroupParentID = 0;
 	m_GroupText = "History";
-
-	m_FocusID = -1; // -1 == keep previous position, 0 == go to latest ID
-
-	m_pDatabase = NULL;
-	// Place all significant initialization in InitInstance
+	m_FocusID = -1;
 
 	m_bAsynchronousRefreshView = true;
 
@@ -71,9 +117,15 @@ CCP_MainApp::CCP_MainApp()
 
 	m_lLastGoodIndexForNextworkPassword = -2;
 
-	m_HTML_Format = ::RegisterClipboardFormat("HTML Format");
-	m_PingFormat = ::RegisterClipboardFormat("Ditto Ping Format");
-	m_RTF_Format = ::RegisterClipboardFormat("Rich Text Format");
+	m_HTML_Format = ::RegisterClipboardFormat(_T("HTML Format"));
+	m_PingFormat = ::RegisterClipboardFormat(_T("Ditto Ping Format"));
+	m_cfIgnoreClipboard = ::RegisterClipboardFormat(_T("Clipboard Viewer Ignore"));
+	m_cfDelaySavingData = ::RegisterClipboardFormat(_T("Ditto Delay Saving Data"));
+	m_RemoteCF_HDROP = ::RegisterClipboardFormat(_T("Ditto Remote CF_HDROP"));
+
+	m_QuickPasteMode = NONE_QUICK_PASTE;
+	m_pQuickPasteClip = NULL;
+	m_bDittoHasFocus = false;
 
 	::InitializeCriticalSection(&m_CriticalSection);
 }
@@ -88,11 +140,93 @@ CCP_MainApp::~CCP_MainApp()
 
 BOOL CCP_MainApp::InitInstance()
 {
-	Log("InitInstance");
-
 	AfxEnableControlContainer();
+	AfxOleInit();
+	AfxInitRichEditEx();
+
+	DittoCommandLineInfo cmdInfo;
+	ParseCommandLine(cmdInfo);
+	if(cmdInfo.m_strFileName.IsEmpty() == FALSE)
+	{
+		try
+		{
+			CClip_ImportExport Clip;
+			CppSQLite3DB db;
+			db.open(cmdInfo.m_strFileName);
+
+			CClip_ImportExport clip;
+			if(clip.ImportFromSqliteDB(db, false, true))
+			{
+				ShowCommandLineError("Ditto", theApp.m_Language.GetString("Importing_Good", "Clip placed on clipboard"));
+			}
+			else
+			{
+				ShowCommandLineError("Ditto", theApp.m_Language.GetString("Error_Importing", "Error importing exported clip"));
+			}
+		}
+		catch (CppSQLite3Exception& e)
+		{
+			ASSERT(FALSE);
+
+			CString csError;
+			csError.Format(_T("%s - Exception - %d - %s"), theApp.m_Language.GetString("Error_Parsing", "Error parsing exported clip"), e.errorCode(), e.errorMessage());
+			ShowCommandLineError("Ditto", csError);
+		}	
+
+		return FALSE;
+	}
+	else if(cmdInfo.m_bConnect || cmdInfo.m_bDisconnect)
+	{
+		HWND hWnd = (HWND)CGetSetOptions::GetMainHWND();
+		if(hWnd)
+			::SendMessage(hWnd, WM_SET_CONNECTED, cmdInfo.m_bConnect, cmdInfo.m_bDisconnect);
+
+		return FALSE;
+	}
+	else if(cmdInfo.m_bU3Install)
+	{
+		CString csFile = CGetSetOptions::GetPath(PATH_HELP);
+		csFile += "U3_Install.htm";
+		CHyperLink::GotoURL(csFile, SW_SHOW);
+		return FALSE;
+	}
+
+	//if starting from a u3 device we will pass in -U3Start
+	if(cmdInfo.m_bU3)
+		g_Opt.m_bU3 = cmdInfo.m_bU3 ? TRUE : FALSE;
+
+	g_Opt.LoadSettings();
 
-	m_hMutex = CreateMutex(NULL, FALSE, "Ditto Is Now Running");
+	if(cmdInfo.m_bU3Stop)
+	{
+		MessageBox(NULL, _T("recieved Stop"), _T(""), MB_OK);
+		HWND hWnd = (HWND)CGetSetOptions::GetMainHWND();
+		if(hWnd)
+		{
+			MessageBox(NULL, _T("Sending Close"), _T(""), MB_OK);
+			::SendMessage(hWnd, WM_CLOSE, 0, 0);
+		}
+
+		return FALSE;
+	}
+
+	CInternetUpdate update;
+
+	long lRunningVersion = update.GetRunningVersion();
+	CString cs = update.GetVersionString(lRunningVersion);
+	cs.Insert(0, _T("InitInstance  -  Running Version - "));
+	Log(cs);
+
+	CString csMutex("Ditto Is Now Running");
+	if(g_Opt.m_bU3)
+	{
+		//If running from a U3 device then allow other ditto's to run
+		//only prevent Ditto from running from the same device
+		csMutex += " ";
+		csMutex += GETENV(_T("U3_DEVICE_SERIAL"));
+	}
+
+	m_hMutex = CreateMutex(NULL, FALSE, csMutex);
 	DWORD dwError = GetLastError();
 	if(dwError == ERROR_ALREADY_EXISTS)
 	{
@@ -102,50 +236,25 @@ BOOL CCP_MainApp::InitInstance()
 
 		return TRUE;
 	}
-	
-	AfxOleInit();
-	AfxInitRichEdit();
 
 	CString csFile = CGetSetOptions::GetLanguageFile();
 	if(csFile.GetLength() > 0 && !m_Language.LoadLanguageFile(csFile))
 	{
 		CString cs;
-		cs.Format("Error loading language file - %s - \n\n%s", csFile, m_Language.m_csLastError);
-
+		cs.Format(_T("Error loading language file - %s - \n\n%s"), csFile, m_Language.m_csLastError);
 		Log(cs);
 	}
 
-	m_cfIgnoreClipboard = ::RegisterClipboardFormat("Clipboard Viewer Ignore");
+//	if(g_Opt.m_bU3)
+//	{
+//		CopyDownDatabase();
+//	}
 
 	int nRet = CheckDBExists(CGetSetOptions::GetDBPath());
 	if(nRet == FALSE)
 	{
 		AfxMessageBox(theApp.m_Language.GetString("Error_Opening_Database", "Error Opening Database."));
-		return TRUE;
-	}
-	else if(nRet == ERROR_OPENING_DATABASE)
-	{
-		CString csFile = CGetSetOptions::GetExeFileName();
-		csFile = GetFilePath(csFile);
-		csFile += "dao\\Disk1\\SETUP.EXE";
-
-		//If they have downloaded the version with dao in the install
-		if(_access(csFile, 0) == 0)
-		{
-			CString cs = theApp.m_Language.GetString("Error_Init_Dao_Intall", "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO.");
-			MessageBox(NULL, cs, "Ditto", MB_OK);
-			WinExec(csFile, SW_SHOW);
-		}
-		else
-		{
-			CString cs = theApp.m_Language.GetString("Error_Init_Dao", "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO.");
-			if(MessageBox(NULL, cs, "Ditto", MB_YESNO) == IDYES)
-			{
-				ShellExecute(NULL, "open", "http://ditto-cp.sourceforge.net/dao_setup.exe", "", "", SW_SHOW);
-			}
-		}	
-
-		return TRUE;
+		return FALSE;
 	}
 
 	CMainFrame* pFrame = new CMainFrame;
@@ -170,11 +279,24 @@ void CCP_MainApp::AfterMainCreate()
 	ASSERT( ::IsWindow(m_MainhWnd) );
 	g_Opt.SetMainHWND((long)m_MainhWnd);
 
+	//Save the HWND so the stop app can send us a close message
+	if(g_Opt.m_bU3)
+	{
+		CGetSetOptions::WriteU3Hwnd(m_MainhWnd);
+	}
+
 	g_HotKeys.Init(m_MainhWnd);
 
 	// create hotkeys here.  They are automatically deleted on exit
 	m_pDittoHotKey = new CHotKey(CString("DittoHotKey"), 704); //704 is ctrl-tilda
-	m_pCopyHotKey = new CHotKey("CopyHotKey");
+
+	//A U3 device is unable to use the keyboard hooks, so named paste and copy 
+	//can't be used
+	if(!g_Opt.m_bU3)
+	{
+		m_pNamedCopy = new CHotKey("CopyHotKey");
+		m_pNamedPaste = new CHotKey("NamedPaste");
+	}
 	m_pPosOne = new CHotKey("Position1", 0, true);
 	m_pPosTwo = new CHotKey("Position2", 0, true);
 	m_pPosThree = new CHotKey("Position3", 0, true);
@@ -194,8 +316,6 @@ void CCP_MainApp::AfterMainCreate()
 	StartStopServerThread();
 
 	m_bAppRunning = true;
-
-	m_pcpSendRecieveError = NULL;
 }
 
 void CCP_MainApp::StartStopServerThread()
@@ -258,13 +378,21 @@ bool CCP_MainApp::TargetActiveWindow()
 		return true;
 
 	HWND hOld = m_hTargetWnd;
+	GUITHREADINFO guiThreadInfo;
+	guiThreadInfo.cbSize = sizeof(GUITHREADINFO);
 	HWND hNew = ::GetForegroundWindow();
-	if( hNew == m_hTargetWnd || !::IsWindow(hNew) || IsAppWnd(hNew) )
+	DWORD OtherThreadID = GetWindowThreadProcessId(hNew, NULL);
+	if(GetGUIThreadInfo(OtherThreadID, &guiThreadInfo))
+	{
+		hNew = guiThreadInfo.hwndFocus;
+	}
+
+	if(hNew == m_hTargetWnd || !::IsWindow(hNew) || IsAppWnd(hNew))
 		return false;
 
 	m_hTargetWnd = hNew;
 	
-	if( QPasteWnd() )
+	if(QPasteWnd())
 		QPasteWnd()->UpdateStatus(true);
 
 	// Tracking / Debugging
@@ -281,7 +409,6 @@ bool CCP_MainApp::TargetActiveWindow()
 
 bool CCP_MainApp::ActivateTarget()
 {
-//	::ShowWindow(m_hTargetWnd, SW_SHOW);
 	::SetForegroundWindow(m_hTargetWnd);
 	::SetFocus(m_hTargetWnd);
 
@@ -298,8 +425,12 @@ bool CCP_MainApp::ReleaseFocus()
 // sends Ctrl-V to the TargetWnd
 void CCP_MainApp::SendPaste(bool bActivateTarget)
 {
+	Log(_T("SendPaste"));
+
+	char ch;
+
 	//Make sure all the keys are up
-	for(char ch = '0'; ch <= '9'; ch++)
+	for(ch = '0'; ch <= '9'; ch++)
 	{
 		keybd_event(ch, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
 	}
@@ -317,7 +448,7 @@ void CCP_MainApp::SendPaste(bool bActivateTarget)
 
 	if(bActivateTarget && !ActivateTarget())
 	{
-		SetStatus("SendPaste FAILED!",TRUE);
+		SetStatus(_T("SendPaste FAILED!"), TRUE);
 		return;
 	}
 
@@ -337,6 +468,48 @@ void CCP_MainApp::SendPaste(bool bActivateTarget)
 
 	keybd_event('V', 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
 	keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+
+	Log(_T("END SendPaste"));
+}
+
+// sends Ctrl-V to the TargetWnd
+void CCP_MainApp::SendCopy()
+{
+	char ch;
+
+	//Make sure all the keys are up
+	for(ch = '0'; ch <= '9'; ch++)
+	{
+		keybd_event(ch, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+	}
+
+	for(ch = 'A'; ch <= 'Z'; ch++)
+	{
+		keybd_event(ch, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+	}
+	keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+	keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+	keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+	keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+	
+	Sleep(50);
+
+	MSG KeyboardMsg;
+	while (::PeekMessage(&KeyboardMsg, NULL, 0, 0, PM_REMOVE))
+	{
+		::TranslateMessage(&KeyboardMsg);
+		::DispatchMessage(&KeyboardMsg);
+    }
+
+	Sleep(50);
+
+	keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
+	keybd_event('C', 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
+
+	Sleep(50);
+
+	keybd_event('C', 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+	keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
 }
 
 // CopyThread
@@ -368,11 +541,7 @@ void CCP_MainApp::StopCopyThread()
 bool CCP_MainApp::ToggleConnectCV()
 {
 	bool bConnect = !GetConnectCV();
-	SetConnectCV( bConnect );
-	if( bConnect )
-		m_pMainFrame->m_TrayIcon.SetIcon( IDR_MAINFRAME );
-	else
-		m_pMainFrame->m_TrayIcon.SetIcon( IDI_DITTO_NOCOPYCB );
+	SetConnectCV(bConnect);
 	return bConnect;
 }
 
@@ -381,37 +550,23 @@ bool CCP_MainApp::ToggleConnectCV()
 // - a check mark appears in the rare cases that the menu text actually represents
 //   the current state, e.g. if we are supposed to be connected, but we somehow
 //   lose that connection, "Disconnect from Clipboard" will have a check next to it.
-void CCP_MainApp::UpdateMenuConnectCV( CMenu* pMenu, UINT nMenuID )
+void CCP_MainApp::UpdateMenuConnectCV(CMenu* pMenu, UINT nMenuID)
 {
-	if( pMenu == NULL )
+	if(pMenu == NULL)
 		return;
 
 	bool bConnect = theApp.GetConnectCV();
-	bool bIsConnected = theApp.IsClipboardViewerConnected();
-	
 	CString cs;
 
 	if(bConnect)
 	{
 		cs = theApp.m_Language.GetString("Disconnect_Clipboard", "Disconnect from Clipboard.");
-
 		pMenu->ModifyMenu(nMenuID, MF_BYCOMMAND, nMenuID, cs);
-
-		if(!bIsConnected)
-            pMenu->CheckMenuItem(nMenuID, MF_CHECKED);
-		else
-            pMenu->CheckMenuItem(nMenuID, MF_UNCHECKED);
 	}
-	else // CV is disconnected, so provide the option of connecting
+	else
 	{
 		cs = theApp.m_Language.GetString("Connect_Clipboard", "Connect to Clipboard.");
-
 		pMenu->ModifyMenu(nMenuID, MF_BYCOMMAND, nMenuID, cs);
-
-		if(bIsConnected)
-            pMenu->CheckMenuItem(nMenuID, MF_CHECKED);
-		else
-            pMenu->CheckMenuItem(nMenuID, MF_UNCHECKED);
 	}
 }
 
@@ -422,26 +577,27 @@ CClipTypes* CCP_MainApp::LoadTypesFromDB()
 
 	try
 	{
-		CTypesTable recset;
-		recset.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT * FROM Types" ,NULL);
-		while(!recset.IsEOF())
+		CppSQLite3Query q = theApp.m_db.execQuery(_T("SELECT TypeText FROM Types"));			
+		while(q.eof() == false)
 		{
-			pTypes->Add( GetFormatID(recset.m_TypeText) );
-			recset.MoveNext();
+			pTypes->Add(GetFormatID(q.getStringField(_T("TypeText"))));
+
+			q.nextRow();
 		}
-		recset.Close();
-	}
-	catch(CDaoException* e)
-	{
-		ASSERT(FALSE);
-		e->Delete();
 	}
+	CATCH_SQLITE_EXCEPTION
 
-	if( pTypes->GetSize() <= 0 )
+	if(pTypes->GetSize() <= 0)
 	{
 		pTypes->Add(CF_TEXT);
 		pTypes->Add(RegisterClipboardFormat(CF_RTF));
-		pTypes->Add(CF_DIB);
+		pTypes->Add(CF_UNICODETEXT);
+		pTypes->Add(CF_HDROP);
+
+		if(g_Opt.m_bU3 == false)
+		{
+			pTypes->Add(CF_DIB);
+		}
 	}
 
 	return pTypes;
@@ -457,12 +613,11 @@ void CCP_MainApp::ReloadTypes()
 
 long CCP_MainApp::SaveCopyClips()
 {
-	Log("SaveCopyClips START");
 	long lID = 0;
 	int count;
 
 	CClipList* pClips = m_CopyThread.GetClips(); // we now own pClips
-	if( !pClips )
+	if(!pClips)
 		return 0;
 
 	CClipList* pCopyOfClips = NULL;
@@ -477,74 +632,85 @@ long CCP_MainApp::SaveCopyClips()
 	}
 
 	bool bEnteredThread = false;
+	bool bDeletepClips = true;
+
+	if(m_QuickPasteMode == ADDING_QUICK_PASTE)
+	{
+		//this will be added when they are done entering the quick paste text
+		m_pQuickPasteClip = pClips;
+		
+		bDeletepClips = false;
+
+		//go ahead and send the clips out even though it won't be added for a bit
+		count = 1;
+	}
+	else
+	{
+		count = pClips->AddToDB(true);
 
-	count = pClips->AddToDB( true );
-	if( count > 0 )
-	{		
-		lID = pClips->GetTail()->m_ID;
-		OnCopyCompleted(lID, count);
+		if(count > 0)
+		{
+			lID = pClips->GetTail()->m_ID;
+			OnCopyCompleted(lID, count);
+		}
+	}
 
+	if(count > 0)
+	{
 		if(g_Opt.m_lAutoSendClientCount > 0)
 		{
 			AfxBeginThread(SendClientThread, pCopyOfClips);
 			bEnteredThread = true;
 		}
-		
 	}
 	
 	if(bEnteredThread == false)
 		delete pCopyOfClips;
 
-	delete pClips;
-
-	Log("SaveCopyClips END");
+	if(bDeletepClips)
+		delete pClips;
 
 	return lID;
 }
 
 void CCP_MainApp::RefreshView()
 {
-	if( m_bShowingQuickPaste )
+	CQPasteWnd *pWnd = QPasteWnd();
+	if(pWnd)
 	{
-		ASSERT( QPasteWnd() );
 		if(m_bAsynchronousRefreshView)
-			QPasteWnd()->PostMessage(WM_REFRESH_VIEW);
+			pWnd->PostMessage(WM_REFRESH_VIEW);
 		else
-			QPasteWnd()->SendMessage(WM_REFRESH_VIEW);
+			pWnd->SendMessage(WM_REFRESH_VIEW);
 	}
 }
 
 void CCP_MainApp::OnPasteCompleted()
 {
 	// the list only changes if UpdateTimeOnPaste is true (updated time)
-	if( g_Opt.m_bUpdateTimeOnPaste )
+	if(g_Opt.m_bUpdateTimeOnPaste)
 		RefreshView();
 }
 
 void CCP_MainApp::OnCopyCompleted(long lLastID, int count)
 {
-	if( count <= 0 )
+	if(count <= 0)
 		return;
 
 	// queue a message to RemoveOldEntries
-	Delayed_RemoveOldEntries( 60000 );
+	Delayed_RemoveOldEntries(60000);
 
 	// update copy statistics
-	CGetSetOptions::SetTripCopyCount( -count );
-	CGetSetOptions::SetTotalCopyCount( -count );
-
-	// if we are in the History group, focus on the latest copy
-	if( m_GroupID == 0 )
-		m_FocusID = 0;
+	CGetSetOptions::SetTripCopyCount(-count);
+	CGetSetOptions::SetTotalCopyCount(-count);
 
 	RefreshView();
-	ShowCopyProperties( lLastID );
 }
 
 // Internal Clipboard for cut/copy/paste items between Groups
 
 // if NULL, this uses the current QPaste selection
-void CCP_MainApp::IC_Cut( ARRAY* pIDs )
+void CCP_MainApp::IC_Cut(ARRAY* pIDs)
 {
 	if( pIDs == NULL )
 	{
@@ -563,33 +729,33 @@ void CCP_MainApp::IC_Cut( ARRAY* pIDs )
 }
 
 // if NULL, this uses the current QPaste selection
-void CCP_MainApp::IC_Copy( ARRAY* pIDs )
+void CCP_MainApp::IC_Copy(ARRAY* pIDs)
 {
-	if( pIDs == NULL )
+	if(pIDs == NULL)
 	{
-		if( QPasteWnd() )
-			QPasteWnd()->m_lstHeader.GetSelectionItemData( m_IC_IDs );
+		if(QPasteWnd())
+			QPasteWnd()->m_lstHeader.GetSelectionItemData(m_IC_IDs);
 		else
 			m_IC_IDs.SetSize(0);
 	}
 	else
-		m_IC_IDs.Copy( *pIDs );
+		m_IC_IDs.Copy(*pIDs);
 
 	m_IC_bCopy = true;
 
-	if( QPasteWnd() )
+	if(QPasteWnd())
 		QPasteWnd()->UpdateStatus();
 }
 
 void CCP_MainApp::IC_Paste()
 {
-	if( m_IC_IDs.GetSize() <= 0 )
+	if(m_IC_IDs.GetSize() <= 0)
 		return;
 
-	if( m_IC_bCopy )
-		m_IC_IDs.CopyTo( GetValidGroupID() );
+	if(m_IC_bCopy)
+		m_IC_IDs.CopyTo(GetValidGroupID());
 	else // Move
-		m_IC_IDs.MoveTo( GetValidGroupID() );
+		m_IC_IDs.MoveTo(GetValidGroupID());
 
 	// don't process the same items twice.
 	m_IC_IDs.SetSize(0);
@@ -598,63 +764,52 @@ void CCP_MainApp::IC_Paste()
 
 // Groups
 
-BOOL CCP_MainApp::EnterGroupID( long lID )
+BOOL CCP_MainApp::EnterGroupID(long lID)
 {
-BOOL bResult = FALSE;
+	BOOL bResult = FALSE;
 
-	if( m_GroupID == lID )
+	if(m_GroupID == lID)
 		return TRUE;
 
 	// if we are switching to the parent, focus on the previous group
-	if( m_GroupParentID == lID && m_GroupID > 0 )
+	if(m_GroupParentID == lID && m_GroupID > 0)
 		m_FocusID = m_GroupID;
 
-	switch( lID )
+	switch(lID)
 	{
-	case 0:  // History Group "ID"
-		m_FocusID = -2;
-		m_GroupID = 0;
-		m_GroupParentID = 0;
-		m_GroupText = "History";
-		bResult = TRUE;
-		break;
-	case -1: // All Groups "ID"
+	case -1:
+		m_FocusID = -1;
 		m_GroupID = -1;
-		m_GroupParentID = 0;
-		m_GroupText = "Groups";
+		m_GroupParentID = -1;
+		m_GroupText = "History";
 		bResult = TRUE;
 		break;
 	default: // Normal Group
 		try
 		{
-		CMainTable recs;
-		COleVariant varKey( lID, VT_I4 );
-
-			recs.Open( dbOpenTable, "Main" );
-			recs.SetCurrentIndex("lID");
-
-			// Find first record whose [lID] field == lID
-			if( recs.Seek(_T("="), &varKey) && recs.m_bIsGroup )
+			CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT lParentID, mText, bIsGroup FROM Main WHERE lID = %d"), lID);
+			if(q.eof() == false)
 			{
-				m_GroupID = recs.m_lID;
-				m_GroupParentID = recs.m_lParentID;
-//				if( m_GroupParentID == 0 )
-//	                 m_GroupParentID = -1; // back out into "all top-level groups" list.
-				m_GroupText = recs.m_strText;
-				bResult = TRUE;
+				if(q.getIntField(_T("bIsGroup")) > 0)
+				{
+					m_GroupID = lID;
+					m_GroupParentID = q.getIntField(_T("lParentID"));
+//					if( m_GroupParentID == 0 )
+//				      m_GroupParentID = -1; // back out into "all top-level groups" list.
+					m_GroupText = q.getStringField(_T("mText"));
+					bResult = TRUE;
+				}
 			}
-
-			recs.Close();
 		}
-		CATCHDAO
+		CATCH_SQLITE_EXCEPTION
 		break;
 	}
 
-	if( bResult )
+	if(bResult)
 	{
 		theApp.RefreshView();
-		if( QPasteWnd() )
-			QPasteWnd()->UpdateStatus( true );
+		if(QPasteWnd())
+			QPasteWnd()->UpdateStatus(true);
 	}
 
 	return bResult;
@@ -663,8 +818,6 @@ BOOL bResult = FALSE;
 // returns a usable group id (not negative)
 long CCP_MainApp::GetValidGroupID()
 {
-	if( m_GroupID <= 0 )
-		return 0;
 	return m_GroupID;
 }
 
@@ -685,7 +838,7 @@ void CCP_MainApp::SetGroupDefaultID( long lID )
 
 // Window States
 
-void CCP_MainApp::SetStatus( const char* status, bool bRepaintImmediately )
+void CCP_MainApp::SetStatus( const TCHAR* status, bool bRepaintImmediately )
 {
 	m_Status = status;
 	if( QPasteWnd() )
@@ -704,19 +857,6 @@ void CCP_MainApp::ShowPersistent( bool bVal )
 	}
 }
 
-void CCP_MainApp::ShowCopyProperties( long lID )
-{
-	if( m_bShowCopyProperties && lID > 0 )
-	{
-		HWND hWndFocus = ::GetForegroundWindow();
-
-		m_bShowCopyProperties = false;
-		::SendMessage(m_MainhWnd, WM_COPYPROPERTIES, lID, 0); // modal
-
-		::SetForegroundWindow(hWndFocus);
-	}
-}
-
 void CCP_MainApp::Delayed_RemoveOldEntries( UINT delay )
 {
 	if( !m_bRemoveOldEntriesPending )
@@ -731,50 +871,25 @@ void CCP_MainApp::Delayed_RemoveOldEntries( UINT delay )
 
 int CCP_MainApp::ExitInstance() 
 {
-	Log("ExitInstance");
-
-	CloseDB();
+	Log(_T("ExitInstance"));
+
+	m_db.close();
+
+//	if(g_Opt.m_bU3)
+//	{
+//		if(g_Opt.IsU3DeviceAvailable())
+//		{
+//			CopyUpDatabase();
+//		}
+//		else
+//		{
+//			Log(_T("Needed to copy up database but device was not available to copy to"));
+//		}
+//	}
 
 	return CWinApp::ExitInstance();
 }
 
-CDaoDatabase* CCP_MainApp::EnsureOpenDB(CString csName)
-{
-	try
-	{
-		if(!m_pDatabase)
-			m_pDatabase = new CDaoDatabase;
-
-		if(!m_pDatabase->IsOpen())
-		{
-			if(csName == "")
-				m_pDatabase->Open(GetDBName());
-			else
-				m_pDatabase->Open(csName);
-		}
-
-		if(m_pMainWnd)
-			((CMainFrame *)m_pMainWnd)->ResetKillDBTimer();
-	}
-	CATCHDAO
-
-	return m_pDatabase;
-}
-
-BOOL CCP_MainApp::CloseDB()
-{
-	if(m_pDatabase)
-	{
-		if(m_pDatabase->IsOpen())
-			m_pDatabase->Close();
-
-		delete m_pDatabase;
-		m_pDatabase = NULL;
-	}
-
-	return TRUE;
-}
-
 // return TRUE if there is more idle processing to do
 BOOL CCP_MainApp::OnIdle(LONG lCount)
 {
@@ -787,13 +902,14 @@ BOOL CCP_MainApp::OnIdle(LONG lCount)
 
 CString CCP_MainApp::GetTargetName() 
 {
-	char cWindowText[100];
+	TCHAR cWindowText[100];
 	HWND hParent = m_hTargetWnd;
-	int nCount = 0;
 
 	::GetWindowText(hParent, cWindowText, 100);
+
+	int nCount = 0;
 	
-	while(strlen(cWindowText) <= 0)
+	while(STRLEN(cWindowText) <= 0)
 	{
 		hParent = ::GetParent(hParent);
 		if(hParent == NULL)
@@ -804,7 +920,7 @@ CString CCP_MainApp::GetTargetName()
 		nCount++;
 		if(nCount > 100)
 		{
-			Log("GetTargetName reached maximum search depth of 100");
+			Log(_T("GetTargetName reached maximum search depth of 100"));
 			break;
 		}
 	}
@@ -815,10 +931,150 @@ CString CCP_MainApp::GetTargetName()
 void CCP_MainApp::SetConnectCV(bool bConnect)
 { 
 	m_CopyThread.SetConnectCV(bConnect); 
+	
+	if(bConnect)
+		m_pMainFrame->m_TrayIcon.SetIcon(IDR_MAINFRAME);
+	else
+		m_pMainFrame->m_TrayIcon.SetIcon(IDI_DITTO_NOCOPYCB);
 
 	if(QPasteWnd())
 	{
 		QPasteWnd()->SetCaptionColorActive(!g_Opt.m_bShowPersistent, theApp.GetConnectCV());
 		QPasteWnd()->RefreshNc();
 	}
+}
+
+void CCP_MainApp::OnDeleteID(long lID)
+{
+	if(QPasteWnd())
+	{
+		QPasteWnd()->PostMessage(NM_ITEM_DELETED, lID, 0);
+	}
+}
+
+
+bool CCP_MainApp::ImportClips(HWND hWnd)
+{
+	OPENFILENAME	FileName;
+	TCHAR			szFileName[400];
+	TCHAR			szDir[400];
+
+	memset(&FileName, 0, sizeof(FileName));
+	memset(szFileName, 0, sizeof(szFileName));
+	memset(&szDir, 0, sizeof(szDir));
+
+	CString csInitialDir = CGetSetOptions::GetLastImportDir();
+	STRCPY(szDir, csInitialDir);
+
+	FileName.lStructSize = sizeof(FileName);
+	FileName.lpstrTitle = _T("Import Clips");
+	FileName.Flags = OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST;
+	FileName.nMaxFile = 400;
+	FileName.lpstrFile = szFileName;
+	FileName.lpstrInitialDir = szDir;
+	FileName.lpstrFilter = _T("Exported Ditto Clips (.dto)\0*.dto\0\0");
+	FileName.lpstrDefExt = _T("dto");
+
+	if(GetOpenFileName(&FileName) == 0)
+		return false;
+
+	using namespace nsPath;
+	CPath path(FileName.lpstrFile);
+	CString csPath = path.GetPath();
+	CGetSetOptions::SetLastImportDir(csPath);
+	
+	try
+	{
+		CppSQLite3DB db;
+		db.open(FileName.lpstrFile);
+
+		CClip_ImportExport clip;
+		if(clip.ImportFromSqliteDB(db, true, false))
+		{
+			CShowMainFrame Show;
+
+			CString cs;
+			
+			cs.Format(_T("%s %d "), theApp.m_Language.GetString("Import_Successfully", "Successfully imported"), clip.m_lImportCount);
+			if(clip.m_lImportCount = 1)
+				cs += theApp.m_Language.GetString("Clip", "clip");
+			else
+				cs += theApp.m_Language.GetString("Clips", "clips");
+
+			MessageBox(hWnd, cs, _T("Ditto"), MB_OK);
+		}
+		else
+		{
+			CShowMainFrame Show;
+			MessageBox(hWnd, theApp.m_Language.GetString("Error_Importing", "Error importing exported clip"), _T("Ditto"), MB_OK);
+		}
+	}
+	catch (CppSQLite3Exception& e)
+	{
+		ASSERT(FALSE);
+
+		CString csError;
+		csError.Format(_T("%s - Exception - %d - %s"), theApp.m_Language.GetString("Error_Parsing", "Error parsing exported clip"), e.errorCode(), e.errorMessage());
+		MessageBox(hWnd, csError, _T("Ditto"), MB_OK);
+	}	
+
+	return true;
+}
+
+void CCP_MainApp::ShowCommandLineError(CString csTitle, CString csMessage)
+{
+	Log(StrF(_T("ShowCommandLineError %s - %s"), csTitle, csMessage));
+
+	CToolTipEx *pErrorWnd = new CToolTipEx;
+	pErrorWnd->Create(NULL);
+	pErrorWnd->SetToolTipText(csTitle + "\n\n" + csMessage);
+
+	CPoint pt;
+	CRect rcScreen;
+	GetMonitorRect(0, &rcScreen);
+	pt = rcScreen.BottomRight();
+
+	CRect cr = pErrorWnd->GetBoundsRect();
+
+	pt.x -= max(cr.Width()+50, 150);
+	pt.y -= max(cr.Height()+50, 150);
+
+	pErrorWnd->Show(pt);
+	
+	Sleep(4000);
+
+	pErrorWnd->DestroyWindow();
+}
+
+BOOL CCP_MainApp::GetClipData(long lID, CClipFormat &Clip)
+{
+	BOOL bRet = FALSE;
+
+	try
+	{
+		CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT ooData FROM Data WHERE lParentID = %d AND strClipboardFormat = '%s'"), lID, GetFormatName(Clip.m_cfType));
+		if(q.eof() == false)
+		{
+			int nDataLen = 0;
+			const unsigned char *cData = q.getBlobField(_T("ooData"), nDataLen);
+			if(cData != NULL)
+			{
+				Clip.m_hgData = NewGlobal(nDataLen);
+
+				::CopyToGlobalHP(Clip.m_hgData, (LPVOID)cData, nDataLen);
+
+				bRet = TRUE;
+			}
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+
+	return bRet;
+}
+
+bool CCP_MainApp::EditItems(CClipIDs &Ids, bool bShowError)
+{
+	m_pMainFrame->ShowEditWnd(Ids);
+
+	return true;
 }

+ 0 - 59
CP_Main.dsw

@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "CP_Main"=".\CP_Main.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name EncryptDecrypt
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name focus
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "EncryptDecrypt"=".\EncryptDecrypt\EncryptDecrypt.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "focus"=".\focusdll\focus.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-

+ 33 - 23
CP_Main.h

@@ -16,18 +16,14 @@
 #include "Clip.h"
 #include "DatabaseUtilities.h"
 #include "Misc.h"
-#include "DataTable.h"
-#include "MainTable.h"
-#include "TypesTable.h"
+#include "Options.h"
 #include "ArrayEx.h"
 #include "MainFrm.h"
 #include "ProcessPaste.h"
 #include "MultiLanguage.h"
 #include "CopyThread.h"
 
-#define MAIN_WND_TITLE		"Ditto MainWnd"
-//#define GET_APP    ((CCP_MainApp *)AfxGetApp())	
-
+#include "sqlite\CppSQLite3.h"
 
 //#define GET_APP ((CMainWnd*)theApp)
 extern class CCP_MainApp theApp;
@@ -42,6 +38,8 @@ public:
 	CCP_MainApp();
 	~CCP_MainApp();
 
+	CppSQLite3DB m_db;
+
 	HANDLE	m_hMutex; // for singleton app
 	// track stages of startup / shutdown
 	bool	m_bAppRunning;
@@ -57,7 +55,8 @@ public:
 
 // System-wide HotKeys
 	CHotKey*	m_pDittoHotKey; // activate ditto's qpaste window
-	CHotKey*	m_pCopyHotKey;  // named copy
+	CHotKey*	m_pNamedPaste;
+	CHotKey*	m_pNamedCopy;
 
 	CHotKey*	m_pPosOne;
 	CHotKey*	m_pPosTwo;
@@ -77,11 +76,7 @@ public:
 	bool ReleaseFocus(); // activate the target only if we are the active window
 	CString GetTargetName();
 	void SendPaste(bool bActivateTarget); // Activates the Target and sends Ctrl-V
-
-	CLIPFORMAT m_cfIgnoreClipboard; // used by CClip::LoadFromClipboard
-	CLIPFORMAT m_PingFormat;
-	CLIPFORMAT m_HTML_Format;
-	CLIPFORMAT m_RTF_Format;
+	void SendCopy();
 
 // CopyThread and ClipViewer (Copy and Paste Management)
 	CCopyThread	m_CopyThread;
@@ -97,6 +92,13 @@ public:
 	void SetConnectCV(bool bConnect);
 	bool ToggleConnectCV();
 	void UpdateMenuConnectCV(CMenu* pMenu, UINT nMenuID);
+	bool ImportClips(HWND hWnd);
+
+	void OnDeleteID(long lID);
+
+	BOOL GetClipData(long lID, CClipFormat &Clip);
+
+	bool EditItems(CClipIDs &Ids, bool bShowError);
 
 //	CClipList	m_SaveClipQueue; 
 	// Retrieves all clips from CopyThread and Saves them.
@@ -128,7 +130,7 @@ public:
 
 // Window States
 	// the ID given focus by CQPasteWnd::FillList
-	long	m_FocusID; // -1 == keep previous position, 0 == go to latest ID
+	long	m_FocusID;
 
 	bool	m_bShowingOptions;
 	bool	m_bShowingQuickPaste;
@@ -136,27 +138,18 @@ public:
 
 	CString m_Status;
 	CQPasteWnd* QPasteWnd() { return m_pMainFrame->QuickPaste.m_pwndPaste; }
-	void SetStatus(const char* status = NULL, bool bRepaintImmediately = false);
+	void SetStatus(const TCHAR* status = NULL, bool bRepaintImmediately = false);
 
 	void ShowPersistent(bool bVal);
 
-	bool m_bShowCopyProperties;
-	void ShowCopyProperties(long lID);
-
 	bool	m_bRemoveOldEntriesPending;
 	void Delayed_RemoveOldEntries(UINT delay);
 
-// Database
-	CDaoDatabase*	m_pDatabase;
-	CDaoDatabase* EnsureOpenDB(CString csName = "");
-	BOOL CloseDB();
-
 	bool	m_bAsynchronousRefreshView;
 
 	//Socket Info
 	SOCKET	m_sSocket;
 	CRITICAL_SECTION m_CriticalSection;
-	CPopup	 *m_pcpSendRecieveError;
 	void	StartStopServerThread();
 	void	StopServerThread();
 
@@ -165,10 +158,24 @@ public:
 
 	long	m_lLastGoodIndexForNextworkPassword;
 
+	CLIPFORMAT m_cfIgnoreClipboard; // used by CClip::LoadFromClipboard
+	CLIPFORMAT m_cfDelaySavingData;
+	CLIPFORMAT m_PingFormat;
+	CLIPFORMAT m_HTML_Format;
+	CLIPFORMAT m_RemoteCF_HDROP;
+
 	COleDateTime m_oldtStartUp;
 
 	//Mulitlange Support
 	CMultiLanguage m_Language;
+
+	enum eQuickPasteMode{NONE_QUICK_PASTE, ADDING_QUICK_PASTE, PASTING_QUICK_PASTE};
+
+	eQuickPasteMode m_QuickPasteMode;
+	CClipList* m_pQuickPasteClip;
+
+	bool m_bDittoHasFocus;
+
 // Overrides
 	// ClassWizard generated virtual function overrides
 	//{{AFX_VIRTUAL(CCP_MainApp)
@@ -186,6 +193,9 @@ public:
 	//}}AFX_MSG
 	DECLARE_MESSAGE_MAP()
 	virtual BOOL OnIdle(LONG lCount);
+
+protected:
+	void ShowCommandLineError(CString csTitle, CString csMessage);
 };
 
 

File diff suppressed because it is too large
+ 380 - 310
CP_Main.rc


+ 79 - 0
CP_Main.sln

@@ -0,0 +1,79 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AccessToSqlite", "AccessToSqlite\AccessToSqlite.vcproj", "{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CP_Main", "CP_Main.vcproj", "{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}"
+	ProjectSection(ProjectDependencies) = postProject
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067} = {BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD} = {EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C} = {EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79} = {CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EncryptDecrypt", "EncryptDecrypt\EncryptDecrypt.vcproj", "{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "focus", "focusdll\focus.vcproj", "{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "U3DittoStop", "U3Stop\U3Stop.vcproj", "{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+		Unicode Debug = Unicode Debug
+		Unicode Release = Unicode Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Debug.ActiveCfg = Debug|Win32
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Debug.Build.0 = Debug|Win32
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Release.ActiveCfg = Release|Win32
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Release.Build.0 = Release|Win32
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Unicode Debug.ActiveCfg = Debug|Win32
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Unicode Debug.Build.0 = Debug|Win32
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Unicode Release.ActiveCfg = Release|Win32
+		{BCF46FA0-B6AD-4F32-B2B6-7E0695ADE067}.Unicode Release.Build.0 = Release|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Debug.ActiveCfg = Debug|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Debug.Build.0 = Debug|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Release.ActiveCfg = Release|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Release.Build.0 = Release|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Unicode Debug.ActiveCfg = Unicode Debug|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Unicode Debug.Build.0 = Unicode Debug|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Unicode Release.ActiveCfg = Unicode Release|Win32
+		{7C663C32-BC7F-45A9-AE88-CE5A7856D32A}.Unicode Release.Build.0 = Unicode Release|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Debug.ActiveCfg = Debug|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Debug.Build.0 = Debug|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Release.ActiveCfg = Release|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Release.Build.0 = Release|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Unicode Debug.ActiveCfg = Unicode Debug|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Unicode Debug.Build.0 = Unicode Debug|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Unicode Release.ActiveCfg = Unicode Release|Win32
+		{CD0DCFF2-51D3-4BF6-AB59-D87A204FBA79}.Unicode Release.Build.0 = Unicode Release|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Debug.ActiveCfg = Debug|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Debug.Build.0 = Debug|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Release.ActiveCfg = Release|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Release.Build.0 = Release|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Unicode Debug.ActiveCfg = Debug|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Unicode Debug.Build.0 = Debug|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Unicode Release.ActiveCfg = Release|Win32
+		{EDBEA6B3-DD77-41A3-8C97-66FF8684A7FD}.Unicode Release.Build.0 = Release|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Debug.ActiveCfg = Debug|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Debug.Build.0 = Debug|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Release.ActiveCfg = Release|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Release.Build.0 = Release|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Unicode Debug.ActiveCfg = Debug|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Unicode Debug.Build.0 = Debug|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Unicode Release.ActiveCfg = Release|Win32
+		{EDA8DBEE-92A2-4A5D-A9ED-0FC0F037C43C}.Unicode Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal

+ 3292 - 0
CP_Main.vcproj

@@ -0,0 +1,3292 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="CP_Main"
+	RootNamespace="CP_Main"
+	Keyword="MFCProj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="EncryptDecrypt\,TinyXml\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;AFTER_98"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/CP_Main.pch"
+				AssemblerOutput="4"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib riched20.lib kernel32.lib user32.lib gdi32.lib winspool.lib Winmm.lib EncryptDecrypt.lib Version.Lib sqlite\sqlite3.lib"
+				OutputFile="Release/Ditto.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="focusdll\Release"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Release/Ditto.pdb"
+				GenerateMapFile="TRUE"
+				MapFileName=".\Release/Ditto.map"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Release/CP_Main.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="EncryptDecrypt\,TinyXml\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;AFTER_98"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/CP_Main.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib riched20.lib kernel32.lib user32.lib gdi32.lib winspool.lib Winmm.lib Version.Lib Pdh.lib EncryptDecryptD.lib sqlite\sqlite3.lib"
+				OutputFile="Debug/Ditto.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug/Ditto.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Debug/CP_Main.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Unicode Release|Win32"
+			OutputDirectory=".\CP_Main___Win32_Unicode_Release"
+			IntermediateDirectory=".\CP_Main___Win32_Unicode_Release"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="EncryptDecrypt\,TinyXml\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;AFTER_98;UNICODE"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\CP_Main___Win32_Unicode_Release/CP_Main.pch"
+				AssemblerOutput="4"
+				AssemblerListingLocation=".\CP_Main___Win32_Unicode_Release/"
+				ObjectFile=".\CP_Main___Win32_Unicode_Release/"
+				ProgramDataBaseFileName=".\CP_Main___Win32_Unicode_Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib riched20.lib kernel32.lib user32.lib gdi32.lib winspool.lib Winmm.lib UEncryptDecrypt.lib Version.Lib sqlite\sqlite3.lib focus.lib"
+				OutputFile="Release/DittoU.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="focusdll\Release"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\CP_Main___Win32_Unicode_Release/DittoU.pdb"
+				GenerateMapFile="TRUE"
+				MapFileName=".\CP_Main___Win32_Unicode_Release/DittoU.map"
+				SubSystem="2"
+				EntryPointSymbol="wWinMainCRTStartup"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\CP_Main___Win32_Unicode_Release/CP_Main.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Unicode Debug|Win32"
+			OutputDirectory=".\CP_Main___Win32_Unicode_Debug"
+			IntermediateDirectory=".\CP_Main___Win32_Unicode_Debug"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="EncryptDecrypt\,TinyXml\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;AFTER_98;UNICODE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\CP_Main___Win32_Unicode_Debug/CP_Main.pch"
+				AssemblerListingLocation=".\CP_Main___Win32_Unicode_Debug/"
+				ObjectFile=".\CP_Main___Win32_Unicode_Debug/"
+				ProgramDataBaseFileName=".\CP_Main___Win32_Unicode_Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib riched20.lib kernel32.lib user32.lib gdi32.lib winspool.lib Winmm.lib Version.Lib Pdh.lib UEncryptDecryptD.lib sqlite\sqlite3.lib"
+				OutputFile="Debug/DittoU.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\CP_Main___Win32_Unicode_Debug/DittoU.pdb"
+				SubSystem="2"
+				EntryPointSymbol="wWinMainCRTStartup"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\CP_Main___Win32_Unicode_Debug/CP_Main.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="About.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="AccessToSqlite.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="AddType.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="BitmapHelper.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Clip.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\Clip_ImportExport.cpp">
+			</File>
+			<File
+				RelativePath=".\ClipboardSaveRestore.cpp">
+			</File>
+			<File
+				RelativePath="ClipboardViewer.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="ClipIds.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="CopyProperties.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="CopyThread.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="CP_Main.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="CP_Main.rc">
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCResourceCompilerTool"
+						PreprocessorDefinitions="NDEBUG;_AFXDLL;$(NoInherit)"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCResourceCompilerTool"
+						PreprocessorDefinitions="_DEBUG;_AFXDLL;$(NoInherit)"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="sqlite\CppSQLite3.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Crc32Dynamic.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="DatabaseUtilities.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\DittoRulerRichEditCtrl.cpp">
+			</File>
+			<File
+				RelativePath=".\DittoWindow.cpp">
+			</File>
+			<File
+				RelativePath=".\EditFrameWnd.cpp">
+			</File>
+			<File
+				RelativePath=".\EditWnd.cpp">
+			</File>
+			<File
+				RelativePath="FileTransferProgressDlg.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="FormatSQL.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="FriendDetails.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="GroupCombo.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="GroupName.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="GroupTree.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="InternetUpdate.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="MainFrm.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="MainTableFunctions.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Misc.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="MoveToGroupDlg.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="MultiLanguage.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OleClipSource.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OptionFriends.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Options.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OptionsGeneral.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OptionsKeyBoard.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OptionsQuickPaste.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OptionsSheet.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OptionsStats.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="OptionsTypes.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Path.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\PerfTimer.cpp">
+			</File>
+			<File
+				RelativePath="ProcessPaste.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="ProgressWnd.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="QPasteWnd.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="QuickPaste.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\SaveAnimation.cpp">
+			</File>
+			<File
+				RelativePath="StdAfx.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="SystemTray.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\TabCtrl.cpp">
+			</File>
+			<File
+				RelativePath="TextConvert.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"/>
+				</FileConfiguration>
+			</File>
+			<Filter
+				Name="Controls"
+				Filter="">
+				<File
+					RelativePath="AlphaBlend.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="AlphaBlend.h">
+				</File>
+				<File
+					RelativePath="ArrayEx.h">
+				</File>
+				<File
+					RelativePath="DialogResizer.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="FormattedTextDraw.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="FormattedTextDraw.h">
+				</File>
+				<File
+					RelativePath="GroupStatic.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="GroupStatic.h">
+				</File>
+				<File
+					RelativePath="HyperLink.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="memdc.h">
+				</File>
+				<File
+					RelativePath="NumberEdit.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="NumberEdit.h">
+				</File>
+				<File
+					RelativePath="QListCtrl.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="QListCtrl.h">
+				</File>
+				<File
+					RelativePath="RichEditCtrlEx.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="RichEditCtrlEx.h">
+				</File>
+				<File
+					RelativePath="SearchEditBox.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="SearchEditBox.h">
+				</File>
+				<File
+					RelativePath="ToolTipEx.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="ToolTipEx.h">
+				</File>
+				<File
+					RelativePath="WndEx.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="WndEx.h">
+				</File>
+			</Filter>
+			<Filter
+				Name="Network"
+				Filter="">
+				<File
+					RelativePath="Client.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="Client.h">
+				</File>
+				<File
+					RelativePath="FileRecieve.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="FileRecieve.h">
+				</File>
+				<File
+					RelativePath="FileSend.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="FileSend.h">
+				</File>
+				<File
+					RelativePath="RecieveSocket.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="RecieveSocket.h">
+				</File>
+				<File
+					RelativePath="SendSocket.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="SendSocket.h">
+				</File>
+				<File
+					RelativePath="Server.cpp">
+					<FileConfiguration
+						Name="Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Release|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="2"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""/>
+					</FileConfiguration>
+					<FileConfiguration
+						Name="Unicode Debug|Win32">
+						<Tool
+							Name="VCCLCompilerTool"
+							Optimization="0"
+							AdditionalIncludeDirectories=""
+							PreprocessorDefinitions=""
+							BasicRuntimeChecks="3"/>
+					</FileConfiguration>
+				</File>
+				<File
+					RelativePath="Server.h">
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="About.h">
+			</File>
+			<File
+				RelativePath="AccessToSqlite.h">
+			</File>
+			<File
+				RelativePath="AddType.h">
+			</File>
+			<File
+				RelativePath="BitmapHelper.h">
+			</File>
+			<File
+				RelativePath="Clip.h">
+			</File>
+			<File
+				RelativePath=".\Clip_ImportExport.h">
+			</File>
+			<File
+				RelativePath=".\ClipboardSaveRestore.h">
+			</File>
+			<File
+				RelativePath="ClipboardViewer.h">
+			</File>
+			<File
+				RelativePath="ClipIds.h">
+			</File>
+			<File
+				RelativePath="CopyProperties.h">
+			</File>
+			<File
+				RelativePath="CopyThread.h">
+			</File>
+			<File
+				RelativePath="CP_Main.h">
+			</File>
+			<File
+				RelativePath="sqlite\CppSQLite3.h">
+			</File>
+			<File
+				RelativePath="Crc32Dynamic.h">
+			</File>
+			<File
+				RelativePath="DatabaseUtilities.h">
+			</File>
+			<File
+				RelativePath="DialogResizer.h">
+			</File>
+			<File
+				RelativePath=".\DittoRulerRichEditCtrl.h">
+			</File>
+			<File
+				RelativePath=".\DittoWindow.h">
+			</File>
+			<File
+				RelativePath=".\EditFrameWnd.h">
+			</File>
+			<File
+				RelativePath=".\EditWnd.h">
+			</File>
+			<File
+				RelativePath="FileTransferProgressDlg.h">
+			</File>
+			<File
+				RelativePath="FormatSQL.h">
+			</File>
+			<File
+				RelativePath="FriendDetails.h">
+			</File>
+			<File
+				RelativePath="GroupCombo.h">
+			</File>
+			<File
+				RelativePath="GroupName.h">
+			</File>
+			<File
+				RelativePath="GroupTree.h">
+			</File>
+			<File
+				RelativePath="HyperLink.h">
+			</File>
+			<File
+				RelativePath="InternetUpdate.h">
+			</File>
+			<File
+				RelativePath="MainFrm.h">
+			</File>
+			<File
+				RelativePath="MainTableFunctions.h">
+			</File>
+			<File
+				RelativePath="Misc.h">
+			</File>
+			<File
+				RelativePath="MoveToGroupDlg.h">
+			</File>
+			<File
+				RelativePath="MultiLanguage.h">
+			</File>
+			<File
+				RelativePath="OleClipSource.h">
+			</File>
+			<File
+				RelativePath="OptionFriends.h">
+			</File>
+			<File
+				RelativePath="Options.h">
+			</File>
+			<File
+				RelativePath="OptionsGeneral.h">
+			</File>
+			<File
+				RelativePath="OptionsKeyBoard.h">
+			</File>
+			<File
+				RelativePath="OptionsQuickPaste.h">
+			</File>
+			<File
+				RelativePath="OptionsSheet.h">
+			</File>
+			<File
+				RelativePath="OptionsStats.h">
+			</File>
+			<File
+				RelativePath="OptionsTypes.h">
+			</File>
+			<File
+				RelativePath="Path.h">
+			</File>
+			<File
+				RelativePath=".\PerfTimer.h">
+			</File>
+			<File
+				RelativePath="ProcessPaste.h">
+			</File>
+			<File
+				RelativePath="ProgressWnd.h">
+			</File>
+			<File
+				RelativePath="QPasteWnd.h">
+			</File>
+			<File
+				RelativePath="QuickPaste.h">
+			</File>
+			<File
+				RelativePath="Resource.h">
+			</File>
+			<File
+				RelativePath=".\SaveAnimation.h">
+			</File>
+			<File
+				RelativePath="ServerDefines.h">
+			</File>
+			<File
+				RelativePath="sqlite\sqlite3.h">
+			</File>
+			<File
+				RelativePath="StdAfx.h">
+			</File>
+			<File
+				RelativePath="SystemTray.h">
+			</File>
+			<File
+				RelativePath=".\TabCtrl.h">
+			</File>
+			<File
+				RelativePath="TextConvert.h">
+			</File>
+			<File
+				RelativePath="UnicodeMacros.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath="res\back.bmp">
+			</File>
+			<File
+				RelativePath="res\back1.bmp">
+			</File>
+			<File
+				RelativePath="res\back2.bmp">
+			</File>
+			<File
+				RelativePath="res\bitmap1.bmp">
+			</File>
+			<File
+				RelativePath="res\bmp00001.bmp">
+			</File>
+			<File
+				RelativePath="res\bmp00002.bmp">
+			</File>
+			<File
+				RelativePath="res\bmp00003.bmp">
+			</File>
+			<File
+				RelativePath=".\res\bmp00004.bmp">
+			</File>
+			<File
+				RelativePath="res\closed_f.bmp">
+			</File>
+			<File
+				RelativePath="res\CP_Main.ico">
+			</File>
+			<File
+				RelativePath="res\CP_Main.rc2">
+			</File>
+			<File
+				RelativePath="res\CP_MainDoc.ico">
+			</File>
+			<File
+				RelativePath="res\Ditto.ico">
+			</File>
+			<File
+				RelativePath="res\Ditto_NoCopyCb.ico">
+			</File>
+			<File
+				RelativePath="res\HorizontalScrollBarLeftArrow.bmp">
+			</File>
+			<File
+				RelativePath="res\HorizontalScrollBarRightArrow.bmp">
+			</File>
+			<File
+				RelativePath="res\HorizontalScrollBarSpan.bmp">
+			</File>
+			<File
+				RelativePath="res\HorizontalScrollBarThumb.bmp">
+			</File>
+			<File
+				RelativePath=".\res\mainfram.bmp">
+			</File>
+			<File
+				RelativePath="res\open_fol.bmp">
+			</File>
+			<File
+				RelativePath="res\Toolbar.bmp">
+			</File>
+			<File
+				RelativePath=".\res\toolbar1.bmp">
+			</File>
+			<File
+				RelativePath="res\VerticleScrollBarDownArrow.bmp">
+			</File>
+			<File
+				RelativePath="res\VerticleScrollBarSpan.bmp">
+			</File>
+			<File
+				RelativePath="res\VerticleScrollBarThumb.bmp">
+			</File>
+			<File
+				RelativePath="res\VerticleScrollBarUpArrow.bmp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Exclude From Build"
+			Filter="">
+			<File
+				RelativePath="EncryptDecrypt.lib">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="EncryptDecryptD.lib">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Debug\focus.dll">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Release\focus.dll">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RulerRichEditCtrl.rc">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCResourceCompilerTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCResourceCompilerTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCResourceCompilerTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCResourceCompilerTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Release\sqlite3.dll">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Debug\sqlite3.dll">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="sqlite\sqlite3.lib">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\toolbar.bmp">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="UEncryptDecrypt.lib">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="UEncryptDecryptD.lib">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\zlib\zlib1.dll">
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Release|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Unicode Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="TinyXml"
+			Filter="">
+			<File
+				RelativePath="TinyXml\tinystr.h">
+			</File>
+			<File
+				RelativePath="TinyXml\tinyxml.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="zlib"
+			Filter="">
+			<File
+				RelativePath=".\zlib\zconf.h">
+			</File>
+			<File
+				RelativePath=".\zlib\zlib.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="RulerRichEditCtrl"
+			Filter="">
+			<File
+				RelativePath=".\RulerRichEditCtrl\FontComboBox.cpp">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\FontComboBox.h">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\ids.h">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RRECRuler.cpp">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RRECRuler.h">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RRECToolbar.cpp">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RRECToolbar.h">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RulerRichEdit.cpp">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RulerRichEdit.h">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RulerRichEditCtrl.cpp">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\RulerRichEditCtrl.h">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\SizeComboBox.cpp">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\SizeComboBox.h">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\StdGrfx.cpp">
+			</File>
+			<File
+				RelativePath=".\RulerRichEditCtrl\StdGrfx.h">
+			</File>
+			<Filter
+				Name="External"
+				Filter="">
+				<File
+					RelativePath=".\RulerRichEditCtrl\External\ColourPicker.cpp">
+				</File>
+				<File
+					RelativePath=".\RulerRichEditCtrl\External\ColourPicker.h">
+				</File>
+				<File
+					RelativePath=".\RulerRichEditCtrl\External\ColourPopup.cpp">
+				</File>
+				<File
+					RelativePath=".\RulerRichEditCtrl\External\ColourPopup.h">
+				</File>
+				<File
+					RelativePath=".\RulerRichEditCtrl\External\StdioFileEx.cpp">
+				</File>
+				<File
+					RelativePath=".\RulerRichEditCtrl\External\StdioFileEx.h">
+				</File>
+			</Filter>
+			<Filter
+				Name="TextFile"
+				Filter="">
+				<File
+					RelativePath=".\RulerRichEditCtrl\TextFile\TextFile.cpp">
+				</File>
+				<File
+					RelativePath=".\RulerRichEditCtrl\TextFile\TextFile.h">
+				</File>
+			</Filter>
+		</Filter>
+		<File
+			RelativePath="res\FILECOPY.AVI">
+		</File>
+		<File
+			RelativePath="focusdll\Release\focus.lib">
+		</File>
+		<File
+			RelativePath="ReadMe.txt">
+		</File>
+		<File
+			RelativePath=".\tinyxml.lib">
+		</File>
+		<File
+			RelativePath=".\zlib\zdll.lib">
+		</File>
+	</Files>
+	<Globals>
+		<Global
+			Name="RESOURCE_FILE"
+			Value="CP_Main.rc"/>
+	</Globals>
+</VisualStudioProject>

+ 143 - 101
Client.cpp

@@ -5,6 +5,10 @@
 #include "stdafx.h"
 #include "cp_main.h"
 #include "Client.h"
+#include "TextConvert.h"
+#include "RecieveSocket.h"
+#include "FileRecieve.h"
+#include "FileTransferProgressDlg.h"
 
 
 #ifdef _DEBUG
@@ -27,17 +31,17 @@ BOOL SendToFriend(CSendToFriendInfo &Info)
 	}
 	else
 	{
-		Info.m_csErrorText = StrF("ERROR getting ip position - %d", Info.m_lPos);
+		Info.m_csErrorText = StrF(_T("ERROR getting ip position - %d"), Info.m_lPos);
 		LogSendRecieveInfo(Info.m_csErrorText);
 		return FALSE;
 	}
 
-	LogSendRecieveInfo(StrF("Sending clip to %s", Info.m_csIP));
+	LogSendRecieveInfo(StrF(_T("Sending clip to %s"), Info.m_csIP));
 	CClient client;
 
 	if(client.OpenConnection(Info.m_csIP) == FALSE)
 	{
-		Info.m_csErrorText = StrF("ERROR opening connection to %s", Info.m_csIP);
+		Info.m_csErrorText = StrF(_T("ERROR opening connection to %s"), Info.m_csIP);
 		LogSendRecieveInfo(Info.m_csErrorText);
 		return FALSE;
 	}
@@ -60,7 +64,7 @@ BOOL SendToFriend(CSendToFriendInfo &Info)
 
 		if(Info.m_pPopup)
 		{
-			Info.m_pPopup->SendToolTipText(StrF("Sending %d of %d", i+1, lCount));
+			Info.m_pPopup->SendToolTipText(StrF(_T("Sending %d of %d"), i+1, lCount));
 		}
 
 		MSG	msg;
@@ -70,7 +74,7 @@ BOOL SendToFriend(CSendToFriendInfo &Info)
 			DispatchMessage(&msg);
 		}
 
-		LogSendRecieveInfo(StrF("Sending %d of %d clip to %s", i+1, lCount, Info.m_csIP));
+		LogSendRecieveInfo(StrF(_T("Sending %d of %d clip to %s"), i+1, lCount, Info.m_csIP));
 
 		if(client.SendItem(pClip) == FALSE)
 		{
@@ -101,7 +105,7 @@ UINT  SendClientThread(LPVOID pParam)
 
 	long lCount = pClipList->GetCount();
 
-	LogSendRecieveInfo(StrF("Start of Send ClientThread Count - %d", lCount));
+	LogSendRecieveInfo(StrF(_T("Start of Send ClientThread Count - %d"), lCount));
 	
 	for(int nClient = 0; nClient < MAX_SEND_CLIENTS; nClient++)
 	{
@@ -111,12 +115,12 @@ UINT  SendClientThread(LPVOID pParam)
 			CClient client;
 			if(client.OpenConnection(g_Opt.m_SendClients[nClient].csIP) == FALSE)
 			{
-				LogSendRecieveInfo(StrF("ERROR opening connection to %s", g_Opt.m_SendClients[nClient].csIP));
+				LogSendRecieveInfo(StrF(_T("ERROR opening connection to %s"), g_Opt.m_SendClients[nClient].csIP));
 
 				if(g_Opt.m_SendClients[nClient].bShownFirstError == FALSE)
 				{
 					CString cs;
-					cs.Format("Error opening connection to %s",g_Opt.m_SendClients[nClient].csIP);
+					cs.Format(_T("Error opening connection to %s"), g_Opt.m_SendClients[nClient].csIP);
 					::SendMessage(theApp.m_MainhWnd, WM_SEND_RECIEVE_ERROR, (WPARAM)cs.GetBuffer(cs.GetLength()), 0);
 					cs.ReleaseBuffer();
 
@@ -128,7 +132,7 @@ UINT  SendClientThread(LPVOID pParam)
 
 			//We were connected successfully show an error next time we can't connect
 			g_Opt.m_SendClients[nClient].bShownFirstError = FALSE;
-			
+
 			CClip* pClip;
 			POSITION pos;
 			pos = pClipList->GetHeadPosition();
@@ -142,12 +146,12 @@ UINT  SendClientThread(LPVOID pParam)
 					break;
 				}
 
-				LogSendRecieveInfo(StrF("Sending clip to %s", g_Opt.m_SendClients[nClient].csIP));
+				LogSendRecieveInfo(StrF(_T("Sending clip to %s"), g_Opt.m_SendClients[nClient].csIP));
 				
 				if(client.SendItem(pClip) == FALSE)
 				{
 					CString cs;
-					cs.Format("Error sending clip to %s",g_Opt.m_SendClients[nClient].csIP);
+					cs.Format(_T("Error sending clip to %s"), g_Opt.m_SendClients[nClient].csIP);
 					::SendMessage(theApp.m_MainhWnd, WM_SEND_RECIEVE_ERROR, (WPARAM)cs.GetBuffer(cs.GetLength()), 0);
 					cs.ReleaseBuffer();
 					break;
@@ -171,18 +175,11 @@ UINT  SendClientThread(LPVOID pParam)
 CClient::CClient()
 {
 	m_Connection = NULL;
-
-	m_pEncryptor = new CEncryption; //CreateEncryptionInterface("encryptdecrypt.dll");
 }
 
 CClient::~CClient()
 {			
 	CloseConnection();
-
-	delete m_pEncryptor;
-	m_pEncryptor = NULL;
-
-//	ReleaseEncryptionInterface(m_pEncryptor);
 }
 
 BOOL CClient::CloseConnection()
@@ -190,7 +187,7 @@ BOOL CClient::CloseConnection()
 	if(m_Connection != NULL && m_Connection != 0)
 	{
 		CSendInfo Info;
-		SendCSendData(Info, MyEnums::EXIT);
+		m_SendSocket.SendCSendData(Info, MyEnums::EXIT);
 
 		closesocket(m_Connection);
 		WSACleanup();
@@ -201,7 +198,7 @@ BOOL CClient::CloseConnection()
 	return TRUE;
 }
 
-BOOL CClient::OpenConnection(const char* servername)
+BOOL CClient::OpenConnection(const TCHAR* servername)
 {
 	WSADATA wsaData;
 	struct hostent *hp;
@@ -224,17 +221,19 @@ BOOL CClient::OpenConnection(const char* servername)
 		return FALSE;
 	}
 
-	if(inet_addr(servername)==INADDR_NONE)
+	CStringA csServerNameA = CTextConvert::ConvertToChar(servername);
+
+	if(inet_addr(csServerNameA)==INADDR_NONE)
 	{
-		hp=gethostbyname(servername);
+		hp = gethostbyname(csServerNameA);
 	}
 	else
 	{
-		addr=inet_addr(servername);
-		hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);
+		addr = inet_addr(csServerNameA);
+		hp = gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);
 	}
 
-	if(hp==NULL)
+	if(hp == NULL)
 	{
 		LogSendRecieveInfo("ERROR - if(hp==NULL)");
 
@@ -249,7 +248,7 @@ BOOL CClient::OpenConnection(const char* servername)
 	if(connect(m_Connection, (struct sockaddr*)&server, sizeof(server)))
 	{
 		int nWhy = WSAGetLastError();
-		LogSendRecieveInfo(StrF("ERROR if(connect(m_Connection,(struct sockaddr*)&server,sizeof(server))) why = %d", nWhy));
+		LogSendRecieveInfo(StrF(_T("ERROR if(connect(m_Connection,(struct sockaddr*)&server,sizeof(server))) why = %d"), nWhy));
 		closesocket(m_Connection);
 		m_Connection = NULL;
 		return FALSE;	
@@ -261,16 +260,31 @@ BOOL CClient::OpenConnection(const char* servername)
 BOOL CClient::SendItem(CClip *pClip)
 {
 	CSendInfo Info;
-	
-	strncpy(Info.m_cComputerName, GetComputerName(), sizeof(Info.m_cComputerName));
-	strncpy(Info.m_cIP, GetIPAddress(), sizeof(Info.m_cIP));
-	strncpy(Info.m_cDesc, pClip->m_Desc, sizeof(Info.m_cDesc));
+
+	//Send all text over as UTF-8
+	CStringA dest;
+	if(CTextConvert::ConvertToUTF8(GetComputerName(), dest))
+	{
+		strncpy(Info.m_cComputerName, dest, sizeof(Info.m_cComputerName));
+	}
+
+	if(CTextConvert::ConvertToUTF8(GetIPAddress(), dest))
+	{
+		strncpy(Info.m_cIP, dest, sizeof(Info.m_cIP));	
+	}
+
+	if(CTextConvert::ConvertToUTF8(pClip->m_Desc, dest))
+	{
+		strncpy(Info.m_cDesc, dest, sizeof(Info.m_cDesc));
+	}
 	
 	Info.m_cDesc[sizeof(Info.m_cDesc)-1] = 0;
 	Info.m_cComputerName[sizeof(Info.m_cComputerName)-1] = 0;
 	Info.m_cIP[sizeof(Info.m_cIP)-1] = 0;
 
-	if(SendCSendData(Info, MyEnums::START) == FALSE)
+	m_SendSocket.SetSocket(m_Connection);
+
+	if(m_SendSocket.SendCSendData(Info, MyEnums::START) == FALSE)
 		return FALSE;
 	
 	CClipFormat* pCF;
@@ -282,108 +296,136 @@ BOOL CClient::SendItem(CClip *pClip)
 	{
 		pCF = &pClip->m_Formats.GetData()[i];
 		
-		LPVOID pvData = GlobalLock(pCF->m_hgData);
-		long lLength = GlobalSize(pCF->m_hgData);
+		SendClipFormat(pCF);
+	}
+	
+	if(m_SendSocket.SendCSendData(Info, MyEnums::END) == FALSE)
+		return FALSE;
+
+	theApp.m_lClipsSent++;
+	
+	return TRUE;
+}
 
-		UCHAR* pOutput = NULL;
-		int nLenOutput = 0;
+BOOL CClient::SendClipFormat(CClipFormat* pCF)
+{
+	CSendInfo Info;
+	LPVOID pvData = GlobalLock(pCF->m_hgData);
+	long lLength = GlobalSize(pCF->m_hgData);
+	UCHAR* pOutput = NULL;
+	int nLenOutput = 0;
+	CTextConvert Convert;
+	BOOL bRet = FALSE;
 
-		LogSendRecieveInfo(StrF("BEFORE Encrypt clip data %d", lLength));
+	LogSendRecieveInfo(StrF(_T("BEFORE Encrypt clip data %d"), lLength));
 
-		if(m_pEncryptor)
+	if(m_SendSocket.m_pEncryptor)
+	{
+		if(m_SendSocket.m_pEncryptor->Encrypt((UCHAR*)pvData, lLength, g_Opt.m_csPassword, pOutput, nLenOutput))
 		{
-			if(m_pEncryptor->Encrypt((UCHAR*)pvData, lLength, g_Opt.m_csPassword, pOutput, nLenOutput))
-			{
-				LogSendRecieveInfo(StrF("AFTER Encrypt clip data %d", nLenOutput));
+			LogSendRecieveInfo(StrF(_T("AFTER Encrypt clip data %d"), nLenOutput));
+
+			Info.m_lParameter1 = nLenOutput;
 
-				Info.m_lParameter1 = nLenOutput;
-				strncpy(Info.m_cDesc, GetFormatName(pCF->m_cfType), sizeof(Info.m_cDesc));
+			//Send over as UTF-8
+			CStringA dest;
+			if(CTextConvert::ConvertToUTF8(GetFormatName(pCF->m_cfType), dest))
+			{
+				strncpy(Info.m_cDesc, dest, sizeof(Info.m_cDesc));
 				Info.m_cDesc[sizeof(Info.m_cDesc)-1] = 0;
+			}
 
-				if(SendCSendData(Info, MyEnums::DATA_START) == FALSE)
-					return FALSE;
+			if(m_SendSocket.SendCSendData(Info, MyEnums::DATA_START) == FALSE)
+				return FALSE;
 
-				SendExactSize((char*)pOutput, nLenOutput, false);
+			m_SendSocket.SendExactSize((char*)pOutput, nLenOutput, false);
 
-				m_pEncryptor->FreeBuffer(pOutput);
-			}
-			else
-			{
-				LogSendRecieveInfo("Failed to encrypt data");
-				return FALSE;
-			}
+			m_SendSocket.m_pEncryptor->FreeBuffer(pOutput);
+
+			bRet = TRUE;
 		}
 		else
 		{
-			ASSERT(!"SendItem::Encryption not initialized");
-			LogSendRecieveInfo("SendItem::Encryption not initialized");	
-		}
-
-		GlobalUnlock(pCF->m_hgData);
-		
-		if(SendCSendData(Info, MyEnums::DATA_END) == FALSE)
+			LogSendRecieveInfo("Failed to encrypt data");
 			return FALSE;
+		}
+	}
+	else
+	{
+		ASSERT(!"SendItem::Encryption not initialized");
+		LogSendRecieveInfo("SendItem::Encryption not initialized");	
 	}
-	
-	if(SendCSendData(Info, MyEnums::END) == FALSE)
-		return FALSE;
 
-	theApp.m_lClipsSent++;
+	GlobalUnlock(pCF->m_hgData);
 	
-	return TRUE;
-}
+	if(m_SendSocket.SendCSendData(Info, MyEnums::DATA_END) == FALSE)
+		return FALSE;
 
-BOOL CClient::SendCSendData(CSendInfo &data, MyEnums::eSendType type)
-{
-	data.m_Type = type;
-	return SendExactSize((char *)&data, sizeof(CSendInfo));
+	return bRet;
 }
 
-BOOL CClient::SendExactSize(char *pData, long lLength, bool bEncrypt)
+HGLOBAL CClient::RequestCopiedFiles(CClipFormat &HDropFormat, CString csIP, CString csComputerName)
 {
-	BOOL bRet = FALSE;
-	if(!m_pEncryptor && bEncrypt)
-	{
-		ASSERT(!"Encryption not initialized");
-		LogSendRecieveInfo("SendExactSize::Encryption not initialized");
-		return bRet;
-	}
+	CSendInfo Info;
+	bool bBreak = false;
+	HGLOBAL hReturn = NULL;
+	CString csErrorString;
 
-	LogSendRecieveInfo(StrF("START SendExactSize Total %d", lLength));
+	CFileTransferProgressDlg *pProgress = new CFileTransferProgressDlg;
+	if(pProgress == NULL)
+		return NULL;
 
-	UCHAR* pOutput = (UCHAR*)pData;
-	int nLenOutput = lLength;
-	long lBytesRead = 0;
+	pProgress->Create(IDD_DIALOG_REMOTE_FILE);
+	pProgress->ShowWindow(SW_SHOW);
+	pProgress->SetMessage(StrF(_T("Opening Connection to %s (%s)"), csComputerName, csIP));
+	pProgress->PumpMessages();
 
-	if(bEncrypt == false || m_pEncryptor->Encrypt((UCHAR*)pData, lLength, g_Opt.m_csPassword, pOutput, nLenOutput))
+	do 
 	{
-		long lExpected = nLenOutput;
+		if(OpenConnection(csIP) == FALSE)
+		{
+			csErrorString.Format(_T("Error Opening Connection to %s (%s)"), csComputerName, csIP);
+			break;
+		}
+
+		m_SendSocket.SetSocket(m_Connection);
+
+		if(m_SendSocket.SendCSendData(Info, MyEnums::START) == FALSE)
+			break;
 
-		while(lBytesRead < lExpected)
+		if(SendClipFormat(&HDropFormat) == FALSE)
 		{
-			long lSize = send(m_Connection, (char*)pOutput + lBytesRead, lExpected - lBytesRead, 0);
-		
-			if(lSize == SOCKET_ERROR || lSize == 0)
-			{
-				LogSendRecieveInfo(StrF("lSize == SOCKET_ERROR, %d", WSAGetLastError()));
-				break;
-			}
-			lBytesRead += lSize;
+			csErrorString = _T("Error sending data request.");
+			break;
+		}
 
-			LogSendRecieveInfo(StrF("SendExactSize Last Size %d - Total %d", lSize, lBytesRead));
+		if(m_SendSocket.SendCSendData(Info, MyEnums::END) == FALSE)
+			break;
+			
+		if(m_SendSocket.SendCSendData(Info, MyEnums::REQUEST_FILES) == FALSE)
+			break;
+
+		CFileRecieve Recieve;
+		long lRet = Recieve.RecieveFiles(m_Connection, csIP, pProgress);
+		if(lRet == TRUE)
+		{
+			hReturn = Recieve.CreateCF_HDROPBuffer();
+		}
+		else if(lRet == FALSE)
+		{
+			csErrorString = _T("Error recieving files.");
 		}
 
-		bRet = TRUE;
+	} while(false);
 
-		if(pOutput != (UCHAR*)pData)
-			m_pEncryptor->FreeBuffer(pOutput);
-	}
-	else
+	CloseConnection();
+
+	if(hReturn == NULL && csErrorString.IsEmpty() == FALSE)
 	{
-		LogSendRecieveInfo("SendExactSize::Failed to encrypt data");
+		MessageBox(pProgress->m_hWnd, csErrorString, _T("Ditto"), MB_OK|MB_ICONEXCLAMATION);
 	}
 
-	LogSendRecieveInfo(StrF("END SendExactSize Total %d", lBytesRead));
+	pProgress->DestroyWindow();
 
-	return bRet;
+	return hReturn;
 }

+ 8 - 4
Client.h

@@ -11,6 +11,7 @@
 
 #include "Server.h"
 #include "Encryption.h"
+#include "SendSocket.h"
 
 class CSendToFriendInfo
 {
@@ -46,17 +47,20 @@ public:
 
 	BOOL SendItem(CClip *pClip);
 	
-	BOOL OpenConnection(const char* servername);
+	BOOL OpenConnection(const TCHAR* servername);
 	BOOL CloseConnection();
 
+	HGLOBAL RequestCopiedFiles(CClipFormat &HDropFormat, CString csIP, CString csComputerName);
+
 protected:
 	SOCKET m_Connection;
 
-	BOOL SendCSendData(CSendInfo &data, MyEnums::eSendType type);
-	BOOL SendExactSize(char *pData, long lLength, bool bEncrypt = true);
+	CSendSocket m_SendSocket;
 
+	BOOL SendClipFormat(CClipFormat* pCF);
+	
 protected:
-	CEncryption *m_pEncryptor;
+	
 };
 
 BOOL SendToFriend(CSendToFriendInfo &Info);

+ 344 - 318
Clip.cpp

@@ -6,9 +6,15 @@
 #include "CP_Main.h"
 #include "Clip.h"
 #include "DatabaseUtilities.h"
+#include "Crc32Dynamic.h"
+#include "sqlite\CppSQLite3.h"
+#include "TextConvert.h"
+#include "zlib/zlib.h"
 
 #include <Mmsystem.h>
 
+#include "Path.h"
+
 #ifdef _DEBUG
 #undef THIS_FILE
 static char THIS_FILE[]=__FILE__;
@@ -22,13 +28,14 @@ COleDataObjectEx
 
 HGLOBAL COleDataObjectEx::GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc)
 {
-    HGLOBAL hGlobal = COleDataObject::GetGlobalData(cfFormat, lpFormatEtc);
+	HGLOBAL hGlobal = ::GetClipboardData(cfFormat);
+    hGlobal = COleDataObject::GetGlobalData(cfFormat, lpFormatEtc);
 	if(hGlobal)
 	{
 		if(!::IsValid(hGlobal))
 		{
 			Log( StrF(
-				"COleDataObjectEx::GetGlobalData(\"%s\"): ERROR: Invalid (NULL) data returned.",
+				_T("COleDataObjectEx::GetGlobalData(\"%s\"): ERROR: Invalid (NULL) data returned."),
 				GetFormatName(cfFormat) ) );
 			::GlobalFree( hGlobal );
 			hGlobal = NULL;
@@ -79,7 +86,7 @@ HGLOBAL COleDataObjectEx::GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpForma
 	if(hGlobal && !::IsValid(hGlobal))
 	{
 		Log( StrF(
-			"COleDataObjectEx::GetGlobalData(\"%s\"): ERROR: Invalid (NULL) data returned.",
+			_T("COleDataObjectEx::GetGlobalData(\"%s\"): ERROR: Invalid (NULL) data returned."),
 			GetFormatName(cfFormat)));
 		::GlobalFree(hGlobal);
 		hGlobal = NULL;
@@ -91,11 +98,12 @@ HGLOBAL COleDataObjectEx::GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpForma
 /*----------------------------------------------------------------------------*\
 CClipFormat - holds the data of one clip format.
 \*----------------------------------------------------------------------------*/
-CClipFormat::CClipFormat(CLIPFORMAT cfType, HGLOBAL hgData)
+CClipFormat::CClipFormat(CLIPFORMAT cfType, HGLOBAL hgData, long lDBID)
 {
 	m_cfType = cfType;
 	m_hgData = hgData;
 	bDeleteData = true;
+	m_lDBID = lDBID;
 }
 
 CClipFormat::~CClipFormat() 
@@ -107,6 +115,7 @@ void CClipFormat::Clear()
 {
 	m_cfType = 0;
 	m_hgData = 0;
+	m_lDBID = -1;
 }
 
 void CClipFormat::Free()
@@ -147,10 +156,16 @@ CClipFormat* CClipFormats::FindFormat(UINT cfType)
 CClip - holds multiple CClipFormats and CopyClipboard() statistics
 \*----------------------------------------------------------------------------*/
 
+DWORD CClip::m_LastAddedCRC = 0;
+long CClip::m_LastAddedID = -1;
+
 CClip::CClip() : 
 	m_ID(0), 
-	m_DataID(0), 
-	m_lTotalCopySize(0)
+	m_CRC(0),
+	m_lParent(-1),
+	m_lDontAutoDelete(FALSE),
+	m_lShortCut(0),
+	m_bIsGroup(FALSE)
 {
 }
 
@@ -161,11 +176,15 @@ CClip::~CClip()
 
 void CClip::Clear()
 {
-	m_ID = 0;
+	m_ID = -1;
 	m_Time = 0;
 	m_Desc = "";
-	m_lTotalCopySize = 0;
-	m_DataID = 0;
+	m_CRC = 0;
+	m_lParent = -1;
+	m_lDontAutoDelete = FALSE;
+	m_lShortCut = 0;
+	m_bIsGroup = FALSE;
+	m_csQuickPaste = "";
 	EmptyFormats();
 }
 
@@ -174,9 +193,13 @@ const CClip& CClip::operator=(const CClip &clip)
 	const CClipFormat* pCF;
 
 	m_ID = clip.m_ID;
-	m_DataID = clip.m_DataID;
 	m_Time = clip.m_Time;
-	m_lTotalCopySize = clip.m_lTotalCopySize;
+	m_CRC = clip.m_CRC;
+	m_lParent = clip.m_lParent;
+	m_lDontAutoDelete = clip.m_lDontAutoDelete;
+	m_lShortCut = clip.m_lShortCut;
+	m_bIsGroup = clip.m_bIsGroup;
+	m_csQuickPaste = clip.m_csQuickPaste;
 
 	int nCount = clip.m_Formats.GetSize();
 	
@@ -217,7 +240,7 @@ bool CClip::AddFormat(CLIPFORMAT cfType, void* pData, UINT nLen)
 
 	// update the Clip statistics
 	m_Time = m_Time.GetCurrentTime();
-	m_lTotalCopySize += nLen;
+
 	if(!SetDescFromText(hGlobal))
 		SetDescFromType();
 	
@@ -255,7 +278,14 @@ bool CClip::LoadFromClipboard(CClipTypes* pClipTypes)
 	{
 		return false;
 	}
-	
+
+	//If we are saving a multi paste then delay us connecting to the clipboard
+	//to allow the ctrl-v to do a paste
+	if(::IsClipboardFormatAvailable(theApp.m_cfDelaySavingData))
+	{
+		Sleep(1500);
+	}
+		
 	//Attach to the clipboard
 	if(!oleData.AttachClipboard())
 	{
@@ -278,8 +308,6 @@ bool CClip::LoadFromClipboard(CClipTypes* pClipTypes)
 		pTypes = &defaultTypes;
 	}
 	
-	// reset copy stats
-	m_lTotalCopySize = 0;
 	m_Desc = "[Ditto Error] BAD DESCRIPTION";
 	
 	// Get Description String
@@ -288,7 +316,12 @@ bool CClip::LoadFromClipboard(CClipTypes* pClipTypes)
 	//  for both... i.e. we only fetch the description format type once.
 	CClipFormat cfDesc;
 	bool bIsDescSet = false;
-	cfDesc.m_cfType = CF_TEXT;
+#ifdef _UNICODE
+	cfDesc.m_cfType = CF_UNICODETEXT;	
+#else
+	cfDesc.m_cfType = CF_TEXT;	
+#endif
+
 	if(oleData.IsDataAvailable(cfDesc.m_cfType))
 	{
 		cfDesc.m_hgData = oleData.GetGlobalData(cfDesc.m_cfType);
@@ -320,19 +353,13 @@ bool CClip::LoadFromClipboard(CClipTypes* pClipTypes)
 		
 		if(cf.m_hgData)
 		{
-//			if(g_Opt.m_bPrePendDateToClip && 
-//				cf.m_cfType == CF_TEXT || cf.m_cfType == theApp.m_RTF_Format)
-//			{
-//				PrependDateToFormat(cf);
-//			}
-
 			nSize = GlobalSize(cf.m_hgData);
 			if(nSize > 0)
 			{
-				if(g_Opt.m_lMaxClipSizeInBytes > 0 && nSize > g_Opt.m_lMaxClipSizeInBytes)
+				if(g_Opt.m_lMaxClipSizeInBytes > 0 && (int)nSize > g_Opt.m_lMaxClipSizeInBytes)
 				{
 					CString cs;
-					cs.Format("Maximum clip size reached max size = %d, clip size = %d", g_Opt.m_lMaxClipSizeInBytes, nSize);
+					cs.Format(_T("Maximum clip size reached max size = %d, clip size = %d"), g_Opt.m_lMaxClipSizeInBytes, nSize);
 					Log(cs);
 
 					oleData.Release();
@@ -342,7 +369,6 @@ bool CClip::LoadFromClipboard(CClipTypes* pClipTypes)
 				ASSERT(::IsValid(cf.m_hgData));
 				
 				m_Formats.Add(cf);
-				m_lTotalCopySize += nSize;
 			}
 			else
 			{
@@ -383,23 +409,15 @@ bool CClip::SetDescFromText(HGLOBAL hgData)
 		return false;
 	
 	bool bRet = false;
-	char* text = (char *) GlobalLock(hgData);
+	TCHAR* text = (TCHAR *) GlobalLock(hgData);
 	long ulBufLen = GlobalSize(hgData);
 	
-	ASSERT(text != NULL);
-	
+	m_Desc = text;
+	bRet = true;
+		
 	if(ulBufLen > g_Opt.m_bDescTextSize)
 	{
-		ulBufLen = g_Opt.m_bDescTextSize;
-	}
-	
-	if(ulBufLen > 0)
-	{
-		char* buf = m_Desc.GetBuffer(ulBufLen);
-		memcpy(buf, text, ulBufLen); // in most cases, last char == null
-		buf[ulBufLen-1] = '\0'; // just in case not null terminated
-		m_Desc.ReleaseBuffer(); // scans for the null
-		bRet = m_Desc.GetLength() > 0;
+		m_Desc = m_Desc.Left(g_Opt.m_bDescTextSize);
 	}
 	
 	//Unlock the data
@@ -410,12 +428,53 @@ bool CClip::SetDescFromText(HGLOBAL hgData)
 
 bool CClip::SetDescFromType()
 {
-	if(m_Formats.GetSize() <= 0)
+	int nSize = m_Formats.GetSize();
+	if(nSize <= 0)
 	{
 		return false;
 	}
 
-	m_Desc = GetFormatName(m_Formats[0].m_cfType);
+	int nCF_HDROPIndex = -1;
+	for(int i = 0; i < nSize; i++)
+	{
+		if(m_Formats[i].m_cfType == CF_HDROP)
+		{
+			nCF_HDROPIndex = i;
+		}
+	}
+
+	if(nCF_HDROPIndex >= 0)
+	{
+		using namespace nsPath;
+
+		HDROP drop = (HDROP)GlobalLock(m_Formats[nCF_HDROPIndex].m_hgData);
+		int nNumFiles = min(5, DragQueryFile(drop, -1, NULL, 0));
+
+		if(nNumFiles > 1)
+			m_Desc = "Copied Files - ";
+		else
+			m_Desc = "Copied File - ";
+
+		TCHAR file[MAX_PATH];
+		
+		for(int nFile = 0; nFile < nNumFiles; nFile++)
+		{
+			if(DragQueryFile(drop, nFile, file, sizeof(file)) > 0)
+			{
+				CPath path(file);
+				m_Desc += path.GetName();
+				m_Desc += " - ";
+				m_Desc += file;
+				m_Desc += "\n";
+			}
+		}
+		
+		GlobalUnlock(m_Formats[nCF_HDROPIndex].m_hgData);
+	}
+	else
+	{
+		m_Desc = GetFormatName(m_Formats[0].m_cfType);
+	}
 
 	return m_Desc.GetLength() > 0;
 }
@@ -425,33 +484,43 @@ bool CClip::AddToDB(bool bCheckForDuplicates)
 	bool bResult;
 	try
 	{
+		m_CRC = GenerateCRC();
+
 		if(bCheckForDuplicates)
-		{
-			CMainTable recset;
-			
-			if(FindDuplicate(recset, g_Opt.m_bAllowDuplicates))
+		{	
+			int nID = FindDuplicate();
+			if(nID >= 0)
 			{
-				m_ID = recset.m_lID;
-				recset.Edit();
-				recset.m_lDate = (long) m_Time.GetTime(); // update the copy Time
-				recset.Update();
-				recset.Close();
-				EmptyFormats(); // delete this clip's data from memory.
+				m_csQuickPaste.Replace(_T("'"), _T("''"));
+
+				if(m_csQuickPaste.IsEmpty())
+				{
+					theApp.m_db.execDMLEx(_T("UPDATE Main SET lDate = %d where lID = %d;"), 
+											(long)m_Time.GetTime(), nID);
+				}
+				else
+				{		
+					theApp.m_db.execDMLEx(_T("UPDATE Main SET lDate = %d, QuickPasteText = '%s' where lID = %d;"), 
+											(long)m_Time.GetTime(), m_csQuickPaste, nID);
+				}
+				
+				EmptyFormats();
+
 				return true;
 			}
-			
-			if(recset.IsOpen())
-				recset.Close();
 		}
 	}
-	CATCHDAO
-		
-	// AddToDataTable must go first in order to assign m_DataID
-	bResult = AddToDataTable() && AddToMainTable();
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+	
+	bResult = false;
+	if(AddToMainTable())
+	{
+		bResult = AddToDataTable();
+	}
 
 	if(bResult)
 	{
-		if(g_Opt.m_csPlaySoundOnCopy.GetLength() > 0)
+		if(g_Opt.m_csPlaySoundOnCopy.IsEmpty() == FALSE)
 			PlaySound(g_Opt.m_csPlaySoundOnCopy, NULL, SND_FILENAME|SND_ASYNC);
 	}
 	
@@ -462,109 +531,61 @@ bool CClip::AddToDB(bool bCheckForDuplicates)
 }
 
 // if a duplicate exists, set recset to the duplicate and return true
-bool CClip::FindDuplicate(CMainTable& recset, BOOL bCheckLastOnly)
+int CClip::FindDuplicate()
 {
-	ASSERT(m_lTotalCopySize > 0);
 	try
 	{
-		recset.m_strSort = "lDate DESC";
-		
-		if(bCheckLastOnly)
+		//If they are allowing duplicates still check 
+		//the last copied item
+		if(g_Opt.m_bAllowDuplicates)
 		{
-			recset.Open("SELECT * FROM Main");
-			if(recset.IsEOF())
-			{
-				return false;
-			}
-
-			recset.MoveFirst();
-			// if an entry exists and they are the same size and the format data matches
-			if(!recset.IsBOF() && !recset.IsEOF() &&
-				m_lTotalCopySize == recset.m_lTotalCopySize &&
-				(CompareFormatDataTo(recset.m_lDataID) == 0))
-			{	
-				return true; 
-			}
-			return false;
+			if(m_CRC == m_LastAddedCRC)
+				return m_LastAddedID;
 		}
-		
-		// Look for any other entries that have the same size
-		recset.Open("SELECT * FROM Main WHERE lTotalCopySize = %d", m_lTotalCopySize);
-		while(!recset.IsEOF())
+		else
 		{
-			//if there is any then look if it is an exact match
-			if(CompareFormatDataTo(recset.m_lDataID) == 0)
+			CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT lID FROM Main WHERE CRC = %d"), m_CRC);
+				
+			if(q.eof() == false)
 			{
-				return true;
+				return q.getIntField(_T("lID"));
 			}
-			
-			recset.MoveNext();
 		}
 	}
-	CATCHDAO
+	CATCH_SQLITE_EXCEPTION
 		
-	return false;
+	return -1;
 }
 
-int CClip::CompareFormatDataTo(long lDataID)
+DWORD CClip::GenerateCRC()
 {
-	int nRet = 0;
-	int nRecs=0, nFormats=0;
-	CClipFormat* pFormat = NULL;
-	try
+	CClipFormat* pCF;
+	DWORD dwCRC = 0xFFFFFFFF;
+
+	CCrc32Dynamic *pCrc32 = new CCrc32Dynamic;
+	if(pCrc32)
 	{
-		CDataTable recset;
-		recset.Open("SELECT * FROM Data WHERE lDataID = %d", lDataID);
-		
-		if( !recset.IsBOF() && !recset.IsEOF() )
-		{
-			// Verify the same number of saved types
-			recset.MoveLast();
-			nRecs = recset.GetRecordCount();
-		}
+		//Generate a CRC value for all copied data
 
-		nFormats = m_Formats.GetSize();
-		nRet = nFormats - nRecs;
-		if(nRet != 0 || nRecs == 0)
-		{	
-			recset.Close();	
-			return nRet; 
-		}
-		
-		// For each format type in the db
-		
-		for(recset.MoveFirst(); !recset.IsEOF(); recset.MoveNext())
+		int nSize = m_Formats.GetSize();
+		for(int i = 0; i < nSize ; i++)
 		{
-			pFormat = m_Formats.FindFormat(GetFormatID(recset.m_strClipBoardFormat));
-			
-			// Verify the format exists
-			if(!pFormat)
-			{	
-				recset.Close(); 
-				return -1; 
-			}
-			
-			// Compare the size
-			nRet = ::GlobalSize(pFormat->m_hgData) - recset.m_ooData.m_dwDataLength;
-			if( nRet != 0 )
-			{	
-				recset.Close(); 
-				return nRet; 
-			}
+			pCF = & m_Formats.ElementAt(i);
 			
-			// Binary compare
-			nRet = CompareGlobalHH(recset.m_ooData.m_hData,	pFormat->m_hgData, recset.m_ooData.m_dwDataLength);
-			if(nRet != 0)
-			{	
-				recset.Close(); 
-				return nRet; 
+			const unsigned char *Data = (const unsigned char *)GlobalLock(pCF->m_hgData);
+			if(Data)
+			{
+				pCrc32->GenerateCrc32((const LPBYTE)Data, GlobalSize(pCF->m_hgData), dwCRC);
 			}
+			GlobalUnlock(pCF->m_hgData);
 		}
-		recset.Close();
+
+		dwCRC = ~dwCRC;
+
+		delete pCrc32;
 	}
-	CATCHDAO
-		
-	return 0;
+
+	return dwCRC;
 }
 
 // assigns m_ID
@@ -572,82 +593,92 @@ bool CClip::AddToMainTable()
 {
 	try
 	{
-		CMainTable recset;
-		
-		//		recset.m_strSort = "lDate DESC";
-		recset.Open("SELECT * FROM Main");
-		
-		long lDate = (long) m_Time.GetTime();
-		
-		recset.AddNew();  // overridden to set m_lID to the new autoincr number
-		
-		m_ID = recset.m_lID;
-		
-		recset.m_lDate = lDate;
-		recset.m_strText = m_Desc;
-		recset.m_lTotalCopySize = m_lTotalCopySize;
-		
-		recset.m_bIsGroup = FALSE;
-		recset.m_lParentID = theApp.m_GroupDefaultID;
-		
-		VERIFY(m_DataID > 0); // AddToDataTable must be called first to assign this
-		recset.m_lDataID = m_DataID;
-		
-		recset.Update();
-		
-		//		recset.SetBookmark( recset.GetLastModifiedBookmark() );
-		//		m_ID = recset.m_lID;
-		
-		recset.Close();
-	}
-	catch(CDaoException* e)
-	{
-		ASSERT(FALSE);
-		e->Delete();
-		return false;
+		m_Desc.Replace(_T("'"), _T("''"));
+		m_csQuickPaste.Replace(_T("'"), _T("''"));
+
+		CString cs;
+		cs.Format(_T("insert into Main values(NULL, %d, '%s', %d, %d, %d, %d, %d, '%s');"),
+							(long)m_Time.GetTime(),
+							m_Desc,
+							m_lShortCut,
+							m_lDontAutoDelete,
+							m_CRC,
+							m_bIsGroup,
+							m_lParent,
+							m_csQuickPaste);
+
+		theApp.m_db.execDML(cs);
+
+		m_ID = (long)theApp.m_db.lastRowId();
+
+		m_LastAddedCRC = m_CRC;
+		m_LastAddedID = m_ID;
 	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
 	
 	return true;
 }
 
+bool CClip::ModifyMainTable()
+{
+	bool bRet = false;
+	try
+	{
+		m_Desc.Replace(_T("'"), _T("''"));
+		m_csQuickPaste.Replace(_T("'"), _T("''"));
+
+		theApp.m_db.execDMLEx(_T("UPDATE Main SET lShortCut = %d, ")
+			_T("mText = '%s', ")
+			_T("lParentID = %d, ")
+			_T("lDontAutoDelete = %d, ")
+			_T("QuickPasteText = '%s' ")
+			_T("WHERE lID = %d;"), 
+			m_lShortCut, 
+			m_Desc, 
+			m_lParent, 
+			m_lDontAutoDelete, 
+			m_csQuickPaste,
+			m_ID);
+
+		bRet = true;
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+
+	return bRet;
+}
+
 // Empties m_Formats as it saves them to the Data Table.
 bool CClip::AddToDataTable()
 {
-	VERIFY( m_DataID <= 0 ); // this func will assign m_DataID
+	CClipFormat* pCF;
+
 	try
 	{
-		CClipFormat* pCF;
-		CDataTable recset;
-		recset.Open(dbOpenTable,"Data");
+		CppSQLite3Statement stmt = theApp.m_db.compileStatement(_T("insert into Data values (NULL, ?, ?, ?);"));
 		
 		for(int i = m_Formats.GetSize()-1; i >= 0 ; i--)
 		{
 			pCF = & m_Formats.ElementAt(i);
 			
-			recset.AddNew(); // overridden to assign new autoincr ID to m_lID
-			
-			if( m_DataID <= 0 )
+			stmt.bind(1, m_ID);
+			stmt.bind(2, GetFormatName(pCF->m_cfType));
+
+			const unsigned char *Data = (const unsigned char *)GlobalLock(pCF->m_hgData);
+			if(Data)
 			{
-				VERIFY( recset.m_lID > 0 );
-				m_DataID = recset.m_lID;
+				stmt.bind(3, Data, GlobalSize(pCF->m_hgData));
 			}
+			GlobalUnlock(pCF->m_hgData);
 			
-			recset.m_lDataID = m_DataID;
-			recset.m_strClipBoardFormat = GetFormatName(pCF->m_cfType);
-			// the recset takes ownership of the HGLOBAL
-			recset.ReplaceData(pCF->m_hgData, GlobalSize(pCF->m_hgData));
-			
-			recset.Update();
-			
-			m_Formats.RemoveAt(i); // the recset now owns the global
+			stmt.execDML();
+			stmt.reset();
+  
+			m_Formats.RemoveAt(i);
 		}
-		
-		recset.Close();
-		return true;
 	}
-	CATCHDAO
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
 		
-	return false;
+	return true;
 }
 
 // changes m_Time to be later than the latest clip entry in the db
@@ -655,27 +686,43 @@ bool CClip::AddToDataTable()
 // old times can happen on fast copies (<1 sec).
 void CClip::MakeLatestTime()
 {
-	long lDate;
 	try
 	{
-		CMainTable recset;
-		
-		recset.m_strSort = "lDate DESC";
-		recset.Open("SELECT * FROM Main");
-		if(!recset.IsEOF())
+		CppSQLite3Query q = theApp.m_db.execQuery(_T("SELECT lDate FROM Main ORDER BY lDate DESC LIMIT 1"));			
+		if(q.eof() == false)
 		{
-			recset.MoveFirst();
-			
-			lDate = (long) m_Time.GetTime();
-			if( lDate <= recset.m_lDate )
+			long lLatestDate = q.getIntField(_T("lDate"));
+			if(m_Time.GetTime() <= lLatestDate)
 			{
-				lDate = recset.m_lDate + 1;
-				m_Time = lDate;
+				m_Time = lLatestDate + 1;
 			}
 		}
-		recset.Close();
 	}
-	CATCHDAO
+	CATCH_SQLITE_EXCEPTION
+}
+
+BOOL CClip::LoadMainTable(long lID)
+{
+	try
+	{
+		CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT * FROM Main WHERE lID = %d"), lID);
+
+		if(q.eof() == false)
+		{
+			m_Time = q.getIntField(_T("lDate"));
+			m_Desc = q.getStringField(_T("mText"));
+			m_CRC = q.getIntField(_T("CRC"));
+			m_lParent = q.getIntField(_T("lParentID"));
+			m_lDontAutoDelete = q.getIntField(_T("lDontAutoDelete"));
+			m_lShortCut = q.getIntField(_T("lShortCut"));
+			m_bIsGroup = q.getIntField(_T("bIsGroup"));
+			m_csQuickPaste = q.getStringField(_T("QuickPasteText"));
+			m_ID = lID;
+		}
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(FALSE)
+
+	return TRUE;
 }
 
 // STATICS
@@ -686,95 +733,88 @@ HGLOBAL CClip::LoadFormat(long lID, UINT cfType)
 	HGLOBAL hGlobal = 0;
 	try
 	{
-		CDataTable recset;
 		CString csSQL;
 		
 		csSQL.Format(
-			"SELECT Data.* FROM Data "
-			"INNER JOIN Main ON Main.lDataID = Data.lDataID "
-			"WHERE Main.lID = %d "
-			"AND Data.strClipBoardFormat = \'%s\'",
+			_T("SELECT Data.ooData FROM Data ")
+			_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+			_T("WHERE Main.lID = %d ")
+			_T("AND Data.strClipBoardFormat = \'%s\'"),
 			lID,
 			GetFormatName(cfType));
-		
-		recset.Open(AFX_DAO_USE_DEFAULT_TYPE, csSQL);
-		
-		if( !recset.IsBOF() && !recset.IsEOF() )
+
+		CppSQLite3Query q = theApp.m_db.execQuery(csSQL);
+
+		if(q.eof() == false)
 		{
-			// create a new HGLOBAL duplicate
-			hGlobal = NewGlobalH( recset.m_ooData.m_hData, recset.m_ooData.m_dwDataLength );
-			// XOR take the recset's HGLOBAL... is this SAFE??
-			//			hGlobal = recset.TakeData();
-			if( !hGlobal || ::GlobalSize(hGlobal) == 0 )
+			int nDataLen = 0;
+			const unsigned char *cData = q.getBlobField(0, nDataLen);
+			if(cData == NULL)
 			{
-				TRACE0( GetErrorString(::GetLastError()) );
-				//::_RPT0( _CRT_WARN, GetErrorString(::GetLastError()) );
-				ASSERT(FALSE);
+				return false;
 			}
+
+			hGlobal = NewGlobalP((LPVOID)cData, nDataLen);
 		}
-		
-		recset.Close();
 	}
-	CATCHDAO
+	CATCH_SQLITE_EXCEPTION
 		
 	return hGlobal;
 }
 
-bool CClip::LoadFormats(long lID, CClipFormats& formats, bool bOnlyLoad_CF_TEXT)
+bool CClip::LoadFormats(long lID, bool bOnlyLoad_CF_TEXT)
 {
 	CClipFormat cf;
 	HGLOBAL hGlobal = 0;
-	
-	formats.RemoveAll();
-	
+	m_Formats.RemoveAll();
+
 	try
-	{
-		CDataTable recset;
-		
+	{	
 		//Open the data table for all that have the parent id
+
+		//Order by Data.lID so that when generating CRC it's always in the same order as the first time
+		//we generated it
 		CString csSQL;
 		csSQL.Format(
-			"SELECT Data.* FROM Data "
-			"INNER JOIN Main ON Main.lDataID = Data.lDataID "
-			"WHERE Main.lID = %d", lID);
-		
-		recset.Open(AFX_DAO_USE_DEFAULT_TYPE, csSQL);
-		
-		while( !recset.IsEOF() )
+			_T("SELECT Data.lID, strClipBoardFormat, ooData FROM Data ")
+			_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+			_T("WHERE Main.lID = %d ORDER BY Data.lID desc"), lID);
+
+		CppSQLite3Query q = theApp.m_db.execQuery(csSQL);
+
+		while(q.eof() == false)
 		{
-			cf.m_cfType = GetFormatID( recset.m_strClipBoardFormat );
+			cf.m_lDBID = q.getIntField(_T("lID"));
+			cf.m_cfType = GetFormatID(q.getStringField(_T("strClipBoardFormat")));
 			
 			if(bOnlyLoad_CF_TEXT)
 			{
-				if(cf.m_cfType != CF_TEXT)
+				if(cf.m_cfType != CF_TEXT && cf.m_cfType != CF_UNICODETEXT)
 				{
-					recset.MoveNext();
+					q.nextRow();
 					continue;
 				}
 			}
-			
-			// create a new HGLOBAL duplicate
-			hGlobal = NewGlobalH( recset.m_ooData.m_hData, recset.m_ooData.m_dwDataLength );
-			// XOR take the recset's HGLOBAL... is this SAFE??
-			//			hGlobal = recset.TakeData();
-			if( !hGlobal || ::GlobalSize(hGlobal) == 0 )
+
+			int nDataLen = 0;
+			const unsigned char *cData = q.getBlobField(_T("ooData"), nDataLen);
+			if(cData != NULL)
 			{
-				TRACE0( GetErrorString(::GetLastError()) );
-				//::_RPT0( _CRT_WARN, GetErrorString(::GetLastError()) );
-				ASSERT(FALSE);
+				hGlobal = NewGlobalP((LPVOID)cData, nDataLen);
 			}
 			
 			cf.m_hgData = hGlobal;
-			formats.Add( cf );
-			recset.MoveNext();
+			m_Formats.Add(cf);
+
+			q.nextRow();
 		}
-		cf.m_hgData = 0; // formats owns all the data
-		
-		recset.Close();
+
+		// formats owns all the data
+		cf.m_hgData = 0;
 	}
-	CATCHDAO
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
 		
-	return formats.GetSize() > 0;
+	return m_Formats.GetSize() > 0;
 }
 
 void CClip::LoadTypes(long lID, CClipTypes& types)
@@ -782,66 +822,53 @@ void CClip::LoadTypes(long lID, CClipTypes& types)
 	types.RemoveAll();
 	try
 	{
-		CDataTable recset;
 		CString csSQL;
 		// get formats for Clip "lID" (Main.lID) using the corresponding Main.lDataID
-		csSQL.Format(
-			"SELECT Data.* FROM Data "
-			"INNER JOIN Main ON Main.lDataID = Data.lDataID "
-			"WHERE Main.lID = %d", lID);
 		
-		recset.Open(AFX_DAO_USE_DEFAULT_TYPE, csSQL);
-		
-		while(!recset.IsEOF())
-		{
-			types.Add(GetFormatID( recset.m_strClipBoardFormat));
-			recset.MoveNext();
+		//Order by Data.lID so that when generating CRC it's always in the same order as the first time
+		//we generated it
+		csSQL.Format(
+			_T("SELECT strClipBoardFormat FROM Data ")
+			_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+			_T("WHERE Main.lID = %d ORDER BY Data.lID desc"), lID);
+
+		CppSQLite3Query q = theApp.m_db.execQuery(csSQL);			
+
+		while(q.eof() == false)
+		{		
+			types.Add(GetFormatID(q.getStringField(0)));
+			q.nextRow();
 		}
-		
-		recset.Close();
 	}
-	CATCHDAO
+	CATCH_SQLITE_EXCEPTION
 }
 
-//void CClip::PrependDateToFormat(CClipFormat &cf)
-//{
-//	char *cData = (char*)GlobalLock(cf.m_hgData);
-//	if(cData)
-//	{
-//		CString csText(cData);
-//
-//		GlobalUnlock(cf.m_hgData);
-//
-//		COleDateTime Date = COleDateTime::GetCurrentTime();
-//
-//		CString csDate;
-//		CString csYear;
-//		
-//		csYear.Format("%d", Date.GetYear());
-//		csYear = csYear.Mid(2);
-//
-//		long lInsertPos = 0;
-//		if(cf.m_cfType == theApp.m_RTF_Format)
-//			lInsertPos = 6;
-//
-//		csDate.Format("%d%s%s ", Date.GetDay(), GetMonthAbb(Date.GetMonth()), csYear);
-//		csText.Insert(lInsertPos, csDate);
-//
-//		char *cData = csText.GetBuffer(csText.GetLength());
-//		
-//		//free the old data
-//		cf.Free();
-//
-//		cf.m_hgData = NewGlobalP(cData, csText.GetLength());
-//		csText.ReleaseBuffer();
-//
-//		if(cf.m_cfType == CF_TEXT)
-//		{
-//			m_Desc.Insert(0, csDate);
-//		}
-//	}
-//}
+bool CClip::SaveFromEditWnd(BOOL bUpdateDesc)
+{
+	bool bRet = false;
+
+	try
+	{
+		theApp.m_db.execDMLEx(_T("DELETE FROM Data WHERE lParentID = %d;"), m_ID);
+
+		DWORD CRC = GenerateCRC();
 
+		AddToDataTable();
+
+		theApp.m_db.execDMLEx(_T("UPDATE Main SET CRC = %d WHERE lID = %d"), CRC, m_ID);
+		
+		if(bUpdateDesc)
+		{
+			m_Desc.Replace(_T("'"), _T("''"));
+			theApp.m_db.execDMLEx(_T("UPDATE Main SET mText = '%s' WHERE lID = %d"), m_Desc, m_ID);
+		}
+
+		bRet = true;
+	}
+	CATCH_SQLITE_EXCEPTION
+
+	return bRet;
+}
 
 /*----------------------------------------------------------------------------*\
 CClipList
@@ -853,7 +880,7 @@ CClipList::~CClipList()
 	while(GetCount())
 	{
 		pClip = RemoveHead();
-		DELETE_PTR( pClip );
+		DELETE_PTR(pClip);
 	}
 }
 
@@ -873,7 +900,7 @@ int CClipList::AddToDB(bool bLatestTime, bool bShowStatus)
 	{
 		if(bShowStatus)
 		{
-			theApp.SetStatus(StrF("%d",nRemaining), true);
+			theApp.SetStatus(StrF(_T("%d"),nRemaining), true);
 			nRemaining--;
 		}
 		
@@ -915,5 +942,4 @@ const CClipList& CClipList::operator=(const CClipList &cliplist)
 	}
 	
 	return *this;
-}
-
+}

+ 29 - 29
Clip.h

@@ -10,7 +10,7 @@
 #endif // _MSC_VER > 1000
 #include <afxole.h>
 #include <afxtempl.h>
-#include "MainTable.h"
+#include "tinyxml.h"
 
 class CClip;
 class CCopyThread;
@@ -36,8 +36,9 @@ public:
 	CLIPFORMAT	m_cfType;
     HGLOBAL		m_hgData;
 	bool		bDeleteData;
+	long		m_lDBID;
 
-	CClipFormat(CLIPFORMAT cfType = 0, HGLOBAL hgData = 0);
+	CClipFormat(CLIPFORMAT cfType = 0, HGLOBAL hgData = 0, long lDBID = -1);
 	~CClipFormat();
 
 	void Clear();
@@ -63,51 +64,50 @@ public:
 class CClip
 {
 public:
-	long			m_ID; // 0 if it hasn't yet been saved or is unknown
-	long			m_DataID;
-	CClipFormats	m_Formats; // actual format data
-
+	CClip();
+	~CClip();
 	const CClip& operator=(const CClip &clip);
 
-	// statistics assigned by LoadFromClipboard
-	CTime	m_Time;	 // time copied from clipboard
-	CString m_Desc;
-	ULONG	m_lTotalCopySize;
+	static DWORD m_LastAddedCRC;
+	static long m_LastAddedID;
 
-	CClip();
-	~CClip();
+	long m_ID;
+	CClipFormats m_Formats;
+	CTime m_Time;
+	CString m_Desc;
+	ULONG m_lTotalCopySize;
+	long m_lParent;
+	long m_lDontAutoDelete;
+	long m_lShortCut;
+	BOOL m_bIsGroup;
+	DWORD m_CRC;
+	CString m_csQuickPaste;
 
 	void Clear();
 	void EmptyFormats();
-	
-	// Adds a new Format to this Clip by copying the given data.
 	bool AddFormat(CLIPFORMAT cfType, void* pData, UINT nLen);
-	// Fills this CClip with the contents of the clipboard.
 	bool LoadFromClipboard(CClipTypes* pClipTypes);
 	bool SetDescFromText(HGLOBAL hgData);
 	bool SetDescFromType();
-
-	// Immediately save this clip to the db (empties m_Formats due to AddToDataTable).
 	bool AddToDB(bool bCheckForDuplicates = true);
-	bool AddToMainTable();
-	bool AddToDataTable();
-
-	// if a duplicate exists, set recset to the duplicate and return true
-	bool FindDuplicate(CMainTable& recset, BOOL bCheckLastOnly = FALSE);
-	int  CompareFormatDataTo(long lDataID);
-
-	// changes m_Time to be later than the latest clip entry in the db
+	bool ModifyMainTable();
+	bool SaveFromEditWnd(BOOL bUpdateDesc);
 	void MakeLatestTime();
+	BOOL LoadMainTable(long lID);
+	DWORD GenerateCRC();
 
-//	void PrependDateToFormat(CClipFormat &cf);
-
-// STATICS
 	// Allocates a Global containing the requested Clip's Format Data
 	static HGLOBAL LoadFormat(long lID, UINT cfType);
 	// Fills "formats" with the Data of all Formats in the db for the given Clip ID
-	static bool LoadFormats(long lID, CClipFormats& formats, bool bOnlyLoad_CF_TEXT = false);
+	bool LoadFormats(long lID, bool bOnlyLoad_CF_TEXT = false);
 	// Fills "types" with all Types in the db for the given Clip ID
 	static void LoadTypes(long lID, CClipTypes& types);
+
+	
+protected:
+	bool AddToMainTable();
+	bool AddToDataTable();
+	int FindDuplicate();
 };
 
 

+ 402 - 0
ClipIds.cpp

@@ -0,0 +1,402 @@
+#include "stdafx.h"
+#include "CP_Main.h"
+#include "ClipIds.h"
+#include "tinyxml.h"
+#include "TextConvert.h"
+#include "Clip_ImportExport.h"
+
+// allocate an HGLOBAL of the given Format Type representing these Clip IDs.
+HGLOBAL CClipIDs::Render(UINT cfType)
+{
+	int count = GetSize();
+	if(count <= 0)
+	{
+		return 0;
+	}
+
+	if(count == 1)
+	{
+		return CClip::LoadFormat(ElementAt(0), cfType);
+	}
+
+	CStringA csText;
+	if(AggregateText(CF_TEXT, "\r\n", g_Opt.m_bMultiPasteReverse && g_Opt.m_bHistoryStartTop, csText))
+	{
+		long lLen = csText.GetLength();
+		HGLOBAL h = NewGlobalP(csText.GetBuffer(lLen), lLen+1);
+		return h;
+	}
+	return NULL;
+}
+
+void CClipIDs::GetTypes(CClipTypes& types)
+{
+	int count = GetSize();
+	types.RemoveAll();
+	if(count > 1)
+	{
+		types.Add(CF_TEXT);
+	}
+	else if(count == 1)
+	{
+		CClip::LoadTypes(ElementAt(0), types);
+	}
+}
+
+// Aggregates the cfType Format Data of the Clip IDs in this array, assuming
+//  each Format is NULL terminated and placing pSeparator between them.
+// This assumes that the given cfType is a null terminated text type.
+bool CClipIDs::AggregateText(UINT cfType, LPCSTR lpSep, BOOL bReverse, CStringA &csNewText)
+{
+	CString csSQL;
+	int numIDs = GetSize();
+	int* pIDs = GetData();
+	bool bRet = false;
+	
+	try
+	{
+		int nIndex;
+		for(int i=0; i < numIDs; i++)
+		{
+			nIndex = i;
+			if(bReverse)
+			{
+				nIndex = numIDs - i - 1;
+			}
+
+			csSQL.Format(_T("SELECT Data.ooData FROM Data ")
+							_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+							_T("WHERE Data.strClipBoardFormat = '%s' ")
+							_T("AND Main.lID = %d"),
+							GetFormatName(cfType),
+							pIDs[nIndex]);
+
+			CppSQLite3Query q = theApp.m_db.execQuery(csSQL);
+
+			if(q.eof() == false)
+			{
+				int nDataLen = 0;
+				const unsigned char *cData = q.getBlobField(_T("ooData"), nDataLen);
+				if(cData == NULL)
+				{
+					continue;
+				}
+
+				//Ensure it's null terminated
+				if(cData[nDataLen-1] != '\0')
+				{
+					int len = 0;
+					for(len = 0; len < nDataLen && cData[len] != '\0'; len++ )
+					{
+					}
+					// if it is not null terminated, skip this item
+					if(len >= nDataLen)
+						continue;
+				}
+
+				csNewText += (LPSTR)cData;
+				csNewText += lpSep;
+
+				bRet = true;
+			}
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+	catch(...  ) 
+	{
+	}
+
+	return bRet;
+}
+ 
+bool CClipIDs::AggregateUnicodeText(UINT cfType, CStringW cWSep, BOOL bReverse, CStringW &csWNewString)
+{
+	CString csSQL;
+	LPWSTR Text = NULL;
+	int nTextSize = 0;
+	int numIDs = GetSize();
+	int* pIDs = GetData();
+	bool bRet = false;
+	
+	try
+	{
+		int nIndex;
+		for(int i=0; i < numIDs; i++)
+		{
+			nIndex = i;
+			if(bReverse)
+			{
+				nIndex = numIDs - i - 1;
+			}
+			
+			csSQL.Format(_T("SELECT * FROM Data ")
+				_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+				_T("WHERE Data.strClipBoardFormat = '%s' ")
+				_T("AND Main.lID = %d"),
+				GetFormatName(cfType),
+				pIDs[nIndex]);
+			
+			CppSQLite3Query q = theApp.m_db.execQuery(csSQL);
+			
+			if(q.eof() == false)
+			{
+				int nDataLen = 0;
+				const unsigned char *cData = q.getBlobField(_T("ooData"), nDataLen);
+				if(cData == NULL)
+				{
+					continue;
+				}
+				
+				//Ensure it's null terminated
+				if(cData[nDataLen-1] != '\0')
+				{
+					int len = 0;
+					for(len = 0; len < nDataLen && cData[len] != '\0'; len++ )
+					{
+					}
+					// if it is not null terminated, skip this item
+					if(len >= nDataLen)
+						continue;
+				}
+				
+				nTextSize += nDataLen;
+
+				csWNewString += (LPWSTR)cData;
+				csWNewString += cWSep;
+
+				bRet = true;
+			}
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+	catch(...)
+	{
+
+	}
+		
+	return bRet;
+}
+
+//----------------------------------------------
+// ELEMENT (Clip or Group) MANAGEMENT FUNCTIONS
+//----------------------------------------------
+
+// returns the address of the given id in this array or NULL.
+long* CClipIDs::FindID(long lID)
+{
+	int count = GetSize();
+	long* pID = (long*) GetData();
+
+	for(int i=0; i < count; i++)
+	{
+		if(*pID == lID)
+		{
+			return pID;
+		}
+		pID++;
+	}
+	return NULL;
+}
+
+// Blindly Moves IDs into the lParentID Group sequentially with the given order
+BOOL CClipIDs::MoveTo(long lParentID, double dFirst, double dIncrement)
+{
+	try
+	{
+		int nCount = GetSize();
+		for(int i = 0; i < nCount; i++)
+		{
+			theApp.m_db.execDMLEx(_T("UPDATE Main SET lParentID = %d, ")
+									_T("lDontAutoDelete = %d WHERE lID = %d AND lID <> %d;"), 
+									lParentID, 
+									(long)CTime::GetCurrentTime().GetTime(),
+									ElementAt(i),
+									lParentID);
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+		
+	return (TRUE);
+}
+
+// Empties this array and fills it with the elements of the given group ID
+BOOL CClipIDs::LoadElementsOf(long lGroupID)
+{
+	SetSize(0);
+	
+	try
+	{
+		CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT lID FROM Main WHERE lParentID = %d"), lGroupID);
+		while(q.eof() == false)
+		{
+			Add(q.getIntField(_T("lID")));
+			q.nextRow();
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+		
+	return GetSize();
+}
+
+// Creates copies (duplicates) of all items in this array and assigns the
+// lParentID of the copies to the given "lParentID" group.
+// - if lParentID <= 0, then the copies have the same parent as the source
+// - pCopies is filled with the corresponding duplicate IDs.
+// - pAddNewTable and pSeekTable are used for more efficient recursion.
+// - the primary overhead for recursion is one ID array per level deep.
+//   an alternative design would be to have one CMainTable per level deep,
+//   but I thought that might be too costly, so I implemented it this way.
+
+BOOL CClipIDs::CopyTo(long lParentID)
+{
+	int count = GetSize();
+	if(count == 0)
+		return TRUE;
+		
+	try
+	{
+		theApp.m_db.execDML(_T("begin transaction;"));
+
+		for(int i = 0; i < count; i++)
+		{
+			int nID = ElementAt(i);
+
+			CClip clip;
+
+			if(clip.LoadMainTable(nID))
+			{
+				if(clip.LoadFormats(nID))
+				{
+					clip.MakeLatestTime();
+
+					clip.m_lShortCut = 0;
+					clip.m_lParent = lParentID;
+					clip.m_csQuickPaste = "";
+
+					if(clip.AddToDB(false) == false)
+					{
+						Log(_T("failed to add copy to database"));
+					}
+				}
+			}
+		}
+
+		theApp.m_db.execDML(_T("commit transaction;"));
+	}
+	CATCH_SQLITE_EXCEPTION
+		
+	return TRUE;
+}
+
+BOOL CClipIDs::DeleteIDs()
+{
+	CPopup status(0, 0, ::GetForegroundWindow());
+	bool bAllowShow;
+	bAllowShow = IsAppWnd(::GetForegroundWindow());
+	
+	BOOL bRet = TRUE;
+	int count = GetSize();
+	
+	if(count <= 0)
+		return FALSE;
+
+	try
+	{
+		theApp.m_db.execDML(_T("begin transaction;"));
+		for(int i=0; i < count; i++)
+		{
+			if(bAllowShow)
+				status.Show(StrF(_T("Deleting %d out of %d..."), i+1, count));
+
+			if(i && i % 50)
+			{
+				theApp.m_db.execDML(_T("commit transaction;"));
+				theApp.m_db.execDML(_T("begin transaction;"));
+			}
+
+			bRet = bRet && DeleteID(ElementAt(i));
+		}
+
+		theApp.m_db.execDML(_T("commit transaction;"));
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(FALSE)
+	
+	return bRet;
+}
+
+BOOL CClipIDs::CreateExportSqliteDB(CppSQLite3DB &db)
+{
+	BOOL bRet = FALSE;
+	try
+	{
+		db.execDML(_T("CREATE TABLE Main(")
+			_T("lID INTEGER PRIMARY KEY AUTOINCREMENT, ")
+			_T("lVersion INTEGER, ")
+			_T("mText TEXT);"));
+
+		db.execDML(_T("CREATE TABLE Data(")
+			_T("lID INTEGER PRIMARY KEY AUTOINCREMENT, ")
+			_T("lParentID INTEGER, ")
+			_T("strClipBoardFormat TEXT, ")
+			_T("lOriginalSize INTEGER, ")
+			_T("ooData BLOB);"));
+
+		db.execDML(_T("CREATE UNIQUE INDEX Main_ID on Main(lID ASC)"));
+		db.execDML(_T("CREATE UNIQUE INDEX Data_ID on Data(lID ASC)"));
+
+		db.execDML(_T("CREATE TRIGGER delete_data_trigger BEFORE DELETE ON Main FOR EACH ROW\n")
+			_T("BEGIN\n")
+			_T("DELETE FROM Data WHERE lParentID = old.lID;\n")
+			_T("END\n"));
+
+		bRet = TRUE;
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(FALSE)
+
+	return bRet;
+}
+
+BOOL CClipIDs::Export(CString csFilePath)
+{    
+	int count = GetSize();
+	if(count == 0)
+		return TRUE;
+
+	BOOL bRet = FALSE;
+
+	if(FileExists(csFilePath) && DeleteFile(csFilePath) == FALSE)
+	{
+		Log(StrF(_T("Export::Error deleting the file %s"), csFilePath));
+		return FALSE;
+	}
+
+	try
+	{		
+		CppSQLite3DB db;
+		db.open(csFilePath);
+
+		if(CreateExportSqliteDB(db) == FALSE)
+			return FALSE;
+	
+		for(int i = 0; i < count; i++)
+		{
+			int nID = ElementAt(i);
+
+			CClip_ImportExport clip;
+			
+			if(clip.LoadMainTable(nID))
+			{
+				if(clip.LoadFormats(nID))
+				{
+					clip.ExportToSqliteDB(db);
+					bRet = TRUE;
+				}
+			}
+		}
+
+		db.close();
+	}
+	CATCH_SQLITE_EXCEPTION
+
+	return bRet;
+}

+ 45 - 0
ClipIds.h

@@ -0,0 +1,45 @@
+#pragma once
+
+class CClipIDs : public CArrayEx<int>
+{
+public:
+// PASTING FUNCTIONS
+
+	// allocate an HGLOBAL of the given Format Type representing the Clip IDs in this array.
+	HGLOBAL	Render(UINT cfType);
+	// Fills "types" with the Format Types corresponding to the Clip IDs in this array.
+	void GetTypes(CClipTypes& types);
+	// Aggregates the cfType Format Data of the Clip IDs in this array, assuming
+	//  each Format is NULL terminated and placing pSeparator between them.
+	bool AggregateText(UINT cfType, LPCSTR lpSep, BOOL bReverse, CStringA &csNewText);
+	bool AggregateUnicodeText(UINT cfType, CStringW Separator, BOOL bReverse, CStringW &csWNewString);
+
+// MANAGEMENT FUNCTIONS
+
+	// returns the address of the given id in this array or NULL.
+	long* FindID(long lID);
+
+	// Blindly Moves IDs into the lParentID Group sequentially with the given order
+	// (i.e. this does not check to see if the IDs' order conflict)
+	// if( dIncrement < 0 ), this does not change the order
+	BOOL MoveTo(long lParentID, double dFirst = 0, double dIncrement = -1);
+
+	// reorders the "lParentID" Group, inserting before the given id.
+	//  if the id cannot be found, this appends the IDs.
+//	BOOL ReorderGroupInsert( long lParentID, long lInsertBeforeID = 0 );
+
+	// Empties this array and fills it with the elements of the given group ID
+	BOOL LoadElementsOf(long lGroupID);
+
+	BOOL CopyTo(long lParentID);
+
+	BOOL DeleteIDs();
+
+	BOOL Export(CString csFilePath);
+	
+protected:
+	BOOL CreateExportSqliteDB(CppSQLite3DB &db);
+
+protected:
+	
+};

+ 330 - 0
Clip_ImportExport.cpp

@@ -0,0 +1,330 @@
+#include "stdafx.h"
+#include "CP_Main.h"
+#include ".\clip_importexport.h"
+#include "TextConvert.h"
+#include "sqlite/CppSQLite3.h"
+#include "zlib/zlib.h"
+#include "Misc.h"
+
+#define CURRENT_EXPORT_VERSION 1
+
+CClip_ImportExport::CClip_ImportExport(void) :
+	m_lImportCount(0)
+{
+
+}
+
+CClip_ImportExport::~CClip_ImportExport(void)
+{
+}
+
+bool CClip_ImportExport::ExportToSqliteDB(CppSQLite3DB &db)
+{
+	bool bRet = false;
+	try
+	{
+		//Add to Main Table
+		m_Desc.Replace(_T("'"), _T("''"));
+		db.execDMLEx(_T("insert into Main values(NULL, %d, '%s');"), CURRENT_EXPORT_VERSION, m_Desc);
+		long lId = (long)db.lastRowId();
+
+		//Add to Data table
+		CClipFormat* pCF;
+		CppSQLite3Statement stmt = db.compileStatement(_T("insert into Data values (NULL, ?, ?, ?, ?);"));
+
+		for(int i = m_Formats.GetSize()-1; i >= 0 ; i--)
+		{
+			pCF = & m_Formats.ElementAt(i);
+
+			stmt.bind(1, lId);
+			stmt.bind(2, GetFormatName(pCF->m_cfType));
+			long lOriginalSize = GlobalSize(pCF->m_hgData);
+			stmt.bind(3, lOriginalSize);
+
+			const unsigned char *Data = (const unsigned char *)GlobalLock(pCF->m_hgData);
+			if(Data)
+			{
+				//First compress the data
+				long lZippedSize = compressBound(lOriginalSize);
+				Bytef *pZipped = new Bytef[lZippedSize];
+				if(pZipped)
+				{				
+					int nZipReturn = compress(pZipped, (uLongf *)&lZippedSize, (const Bytef *)Data, lOriginalSize);
+					if(nZipReturn == Z_OK)
+					{
+						stmt.bind(4, pZipped, lZippedSize);
+					}
+
+					delete []pZipped;
+					pZipped = NULL;
+				}
+			}
+			GlobalUnlock(pCF->m_hgData);
+
+			stmt.execDML();
+			stmt.reset();
+
+			m_Formats.RemoveAt(i);
+		}
+
+		bRet = true;
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+
+	return bRet;
+}
+
+bool CClip_ImportExport::ImportFromSqliteDB(CppSQLite3DB &db, bool bAddToDB, bool bPutOnClipboard)
+{
+	bool bRet = false;
+	CStringA csCF_TEXT;
+	CStringW csCF_UNICODETEXT;
+
+	try
+	{
+		CppSQLite3Query q = db.execQuery(_T("Select * from Main"));
+		while(q.eof() == false)
+		{
+			Clear();
+
+			int nVersion = q.getIntField(_T("lVersion"));
+			if(nVersion == 1)
+			{
+				if(ImportFromSqliteV1(db, q))
+				{
+					if(bAddToDB)
+					{
+						MakeLatestTime();
+						AddToDB(true);
+						bRet = true;
+					}
+					else if(bPutOnClipboard)
+					{
+						bRet = true;
+					}
+				}
+			}
+
+			m_lImportCount++;
+
+			//If putting on the clipboard and there are multiple
+			//then append cf_text and cf_unicodetext
+			if(bPutOnClipboard)
+			{
+				Append_CF_TEXT_AND_CF_UNICODETEXT(csCF_TEXT, csCF_UNICODETEXT);
+			}
+
+			q.nextRow();
+		}
+
+		if(bRet && bAddToDB)
+		{
+			theApp.RefreshView();
+		}
+		else if(bRet && m_lImportCount == 1 && bPutOnClipboard)
+		{
+			PlaceFormatsOnclipboard();
+		}
+		else if(bRet && bPutOnClipboard)
+		{
+			PlaceCF_TEXT_AND_CF_UNICODETEXT_OnClipboard(csCF_TEXT, csCF_UNICODETEXT);
+		}
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+
+	return bRet;
+}
+
+bool CClip_ImportExport::PlaceCF_TEXT_AND_CF_UNICODETEXT_OnClipboard(CStringA &csCF_TEXT, CStringW &csCF_UNICODETEXT)
+{
+	bool bRet = false;
+
+	if(OpenClipboard(theApp.m_MainhWnd))
+	{
+		EmptyClipboard();
+
+		if(csCF_TEXT.IsEmpty() == FALSE)
+		{
+			long lLen = csCF_TEXT.GetLength();
+			HGLOBAL hGlobal = NewGlobalP(csCF_TEXT.GetBuffer(lLen), lLen+1);
+			csCF_TEXT.ReleaseBuffer();
+			SetClipboardData(CF_TEXT, hGlobal);
+
+			bRet = true;
+		}
+		if(csCF_UNICODETEXT.IsEmpty() == FALSE)
+		{
+			long lLen = csCF_UNICODETEXT.GetLength() * sizeof(wchar_t);
+			HGLOBAL hGlobal = NewGlobalP(csCF_UNICODETEXT.GetBuffer(lLen), lLen+1);
+			csCF_UNICODETEXT.ReleaseBuffer();
+			SetClipboardData(CF_UNICODETEXT, hGlobal);
+
+			bRet = true;
+		}
+
+		CloseClipboard();
+	}
+	else
+	{
+		Log(_T("Error opening clipboard"));
+	}
+
+	return bRet;
+}
+
+bool CClip_ImportExport::PlaceFormatsOnclipboard()
+{
+	bool bRet = false;
+
+	if(OpenClipboard(theApp.m_MainhWnd))
+	{
+		EmptyClipboard();
+
+		int nFormatCount = m_Formats.GetSize();
+		for(int i = 0; i < nFormatCount; i++)
+		{
+			CClipFormat *pCF;
+			pCF = &m_Formats.ElementAt(i);
+			LPVOID Data = (LPVOID)GlobalLock(pCF->m_hgData);
+			if(Data)
+			{
+				HGLOBAL hGlobal = NewGlobalP(Data, GlobalSize(pCF->m_hgData));			
+				if(hGlobal)
+				{
+					SetClipboardData(pCF->m_cfType, hGlobal);
+				}
+
+				GlobalUnlock(pCF->m_hgData);
+			}
+		}
+
+		CloseClipboard();
+
+		bRet = true;
+	}
+	else
+	{
+		Log(_T("PlaceFormatsOnclipboard::Error opening clipboard"));
+	}
+
+	return bRet;
+}
+
+bool CClip_ImportExport::ImportFromSqliteV1(CppSQLite3DB &db, CppSQLite3Query &qMain)
+{
+	try
+	{
+		//Load the Main Table
+		m_Desc = qMain.getStringField(_T("mText"));
+		long lID = qMain.getIntField(_T("lID"));
+
+		//Load the data Table
+		CClipFormat cf;
+		HGLOBAL hGlobal = 0;
+		m_Formats.RemoveAll();
+
+		CString csSQL;
+		csSQL.Format(
+			_T("SELECT Data.* FROM Data ")
+			_T("INNER JOIN Main ON Main.lID = Data.lParentID ")
+			_T("WHERE Main.lID = %d ORDER BY Data.lID desc"), lID);
+
+		CppSQLite3Query qData = db.execQuery(csSQL);
+		while(qData.eof() == false)
+		{
+			cf.m_cfType = GetFormatID(qData.getStringField(_T("strClipBoardFormat")));
+			long lOriginalSize = qData.getIntField(_T("lOriginalSize"));
+
+			int nDataLen = 0;
+			const unsigned char *cData = qData.getBlobField(_T("ooData"), nDataLen);
+			if(cData != NULL)
+			{
+				Bytef *pUnZippedData = new Bytef[lOriginalSize];
+				if(pUnZippedData)
+				{
+					//the data in the exported file is compressed so uncompress it now
+					int nRet = uncompress(pUnZippedData, (uLongf *)&lOriginalSize, (Bytef *)cData, nDataLen);
+					if(nRet == Z_OK)
+					{
+						cf.m_hgData = NewGlobalP(pUnZippedData, lOriginalSize);
+						if(cf.m_hgData)
+						{
+							m_Formats.Add(cf);
+							cf.m_hgData = NULL; //m_format owns m_hgData now
+						}
+						else
+						{
+							Log(StrF(_T("Error allocating NewGlobalP size = %d"), lOriginalSize));
+							ASSERT(FALSE);
+						}
+					}
+					else
+					{
+						Log(_T("Error uncompressing data from zlib"));
+						ASSERT(FALSE);
+					}
+
+					delete []pUnZippedData;
+					pUnZippedData = NULL;
+				}
+				else
+				{
+					Log(StrF(_T("Error allocating memory to unzip size = %d"), lOriginalSize));
+					ASSERT(FALSE);
+				}
+			}
+
+			qData.nextRow();
+		}
+	}
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(false)
+
+	return m_Formats.GetSize() > 0;
+}
+
+bool CClip_ImportExport::Append_CF_TEXT_AND_CF_UNICODETEXT(CStringA &csCF_TEXT, CStringW &csCF_UNICODETEXT)
+{
+	bool bRet = false;
+	CClipFormat *pCF;
+	int nCount = m_Formats.GetSize();
+	for(int i = 0; i < nCount; i++)
+	{
+		pCF = &m_Formats.ElementAt(i);
+
+		switch(pCF->m_cfType)
+		{
+		case CF_TEXT:
+			{	
+				const char *Data = (const char *)GlobalLock(pCF->m_hgData);
+				if(Data)
+				{
+					if(csCF_TEXT.IsEmpty() == FALSE)
+						csCF_TEXT += "\r\n";
+
+					csCF_TEXT += Data;
+					bRet = true;
+
+					GlobalUnlock(pCF->m_hgData);
+				}
+			}
+			break;
+		case CF_UNICODETEXT:
+			{	
+				const wchar_t *Data = (const wchar_t *)GlobalLock(pCF->m_hgData);
+				if(Data)
+				{
+					if(csCF_UNICODETEXT.IsEmpty() == FALSE)
+						csCF_UNICODETEXT += _T("\r\n");
+
+					csCF_UNICODETEXT += Data;
+					bRet = true;
+
+					GlobalUnlock(pCF->m_hgData);
+				}
+			}
+			break;
+		}
+	}
+
+	return bRet;
+}

+ 21 - 0
Clip_ImportExport.h

@@ -0,0 +1,21 @@
+#pragma once
+#include "clip.h"
+
+class CClip_ImportExport :	public CClip
+{
+public:
+	CClip_ImportExport(void);
+	~CClip_ImportExport(void);
+
+	bool ExportToSqliteDB(CppSQLite3DB &m_db);
+	bool ImportFromSqliteDB(CppSQLite3DB &db, bool bAddToDB, bool bPutOnClipboard);
+	
+	long m_lImportCount;
+
+protected:
+	bool ImportFromSqliteV1(CppSQLite3DB &db, CppSQLite3Query &qMain);
+	bool Append_CF_TEXT_AND_CF_UNICODETEXT(CStringA &csCF_TEXT, CStringW &csCF_UNICODETEXT);
+
+	bool PlaceFormatsOnclipboard();
+	bool PlaceCF_TEXT_AND_CF_UNICODETEXT_OnClipboard(CStringA &csCF_TEXT, CStringW &csCF_UNICODETEXT);
+};

+ 86 - 0
ClipboardSaveRestore.cpp

@@ -0,0 +1,86 @@
+#include "stdafx.h"
+#include "CP_Main.h"
+#include ".\clipboardsaverestore.h"
+
+CClipboardSaveRestore::CClipboardSaveRestore(void)
+{
+}
+
+CClipboardSaveRestore::~CClipboardSaveRestore(void)
+{
+}
+
+bool CClipboardSaveRestore::Save()
+{
+	bool bRet = false;
+	COleDataObjectEx oleData;
+	CClipFormat cf;
+	FORMATETC fm;
+	
+	//Attach to the clipboard
+	if(!oleData.AttachClipboard())
+	{
+		ASSERT(0);
+		return bRet;
+	}
+
+	oleData.EnsureClipboardObject();
+
+	oleData.BeginEnumFormats();
+
+	while(oleData.GetNextFormat(&fm))
+	{
+		cf.m_hgData = oleData.GetGlobalData(fm.cfFormat);
+		cf.m_cfType = fm.cfFormat;
+
+		if(cf.m_hgData)
+		{
+			int nSize = GlobalSize(cf.m_hgData);
+			if(nSize > 0)
+			{
+				m_Clipboard.Add(cf);
+				bRet = true;
+			}
+			else
+			{
+				ASSERT(FALSE); // a valid GlobalMem with 0 size is strange
+				cf.Free();
+			}
+			cf.m_hgData = 0; // m_Formats owns it now
+		}
+	}
+
+	oleData.Release();
+
+	return bRet;
+}
+
+bool CClipboardSaveRestore::Restore()
+{
+	bool bRet = false;
+	if(::OpenClipboard(NULL))
+	{
+		::EmptyClipboard();
+
+		int nSize = m_Clipboard.GetSize();
+		for(int nPos = 0; nPos < nSize; nPos++)
+		{
+			CClipFormat cf = m_Clipboard[nPos];
+			if(cf.m_hgData)
+			{
+				::SetClipboardData(cf.m_cfType, cf.m_hgData);
+				cf.m_hgData = NULL;//clipboard now owns the data
+
+				bRet = TRUE;
+			}
+		}
+
+		SetClipboardData(theApp.m_cfIgnoreClipboard, NewGlobalP("Ignore", sizeof("Ignore")));
+
+		::CloseClipboard();
+	}
+
+	m_Clipboard.RemoveAll();
+
+	return bRet;
+}

+ 16 - 0
ClipboardSaveRestore.h

@@ -0,0 +1,16 @@
+#pragma once
+
+#include "Clip.h"
+
+class CClipboardSaveRestore
+{
+public:
+	CClipboardSaveRestore(void);
+	~CClipboardSaveRestore(void);
+
+	bool Save();
+	bool Restore();
+	void Clear()	{ m_Clipboard.RemoveAll(); }
+
+	CClipFormats m_Clipboard;
+};

+ 50 - 36
ClipboardViewer.cpp

@@ -22,7 +22,7 @@ CClipboardViewer::CClipboardViewer(CCopyThread* pHandler) :
 	m_bHandlingClipChange(false),
 	m_bIsConnected(false),
 	m_bConnect(false),
-	m_lLastCopy(0)
+	m_dwLastCopy(0)
 {
 
 }
@@ -49,13 +49,15 @@ END_MESSAGE_MAP()
 void CClipboardViewer::Create()
 {
 	CString strParentClass = AfxRegisterWndClass(0);
-	CWnd::CreateEx(0, strParentClass, "Ditto Clipboard Viewer", 0, -1, -1, 0, 0, 0, 0);
+	CWnd::CreateEx(0, strParentClass, _T("Ditto Clipboard Viewer"), 0, -1, -1, 0, 0, 0, 0);
+
+	SetConnect(true);
 }
 
 // connects as a clipboard viewer
 void CClipboardViewer::Connect()
 {
-	Log("Connect to Clipboard");
+	Log(_T("Connect to Clipboard"));
 	
 	//Set up the clip board viewer
 	m_bCalling_SetClipboardViewer = true;
@@ -74,17 +76,28 @@ void CClipboardViewer::SetEnsureConnectedTimer()
 }
 
 // disconnects as a clipboard viewer
-void CClipboardViewer::Disconnect()
+void CClipboardViewer::Disconnect(bool bSendPing)
 {
-	Log("Disconnect From Clipboard");
+	Log(_T("Disconnect From Clipboard"));
 
 	KillTimer(TIMER_ENSURE_VIEWER_IN_CHAIN);
 
-	CWnd::ChangeClipboardChain(m_hNextClipboardViewer);
+	BOOL bRet = CWnd::ChangeClipboardChain(m_hNextClipboardViewer);
+	if(!bRet)
+	{
+		Log(_T("Error disconnecting from clipboard"));
+		bRet = CWnd::ChangeClipboardChain(m_hNextClipboardViewer);
+		if(!bRet)
+		{
+			Log(_T("Error disconnecting from clipboard2"));
+		}
+	}
+
 	m_hNextClipboardViewer = 0;
 	m_bConnect = false;
 	m_bIsConnected = false;
-	SendPing();
+	if(bSendPing)
+		SendPing();
 }
 
 void CClipboardViewer::SendPing()
@@ -93,8 +106,6 @@ void CClipboardViewer::SendPing()
 	{
 		if(OpenClipboard())
 		{
-			Log("Sending Ping");
-
 			m_bPinging = true;
 			SetClipboardData(theApp.m_PingFormat, NewGlobalP("Ditto Ping", sizeof("Ditto Ping")));
 			SetClipboardData(theApp.m_cfIgnoreClipboard , NewGlobalP("Ignore", sizeof("Ignore")));
@@ -108,7 +119,6 @@ void CClipboardViewer::SendPing()
 void CClipboardViewer::SetConnect(bool bConnect)
 {
 	m_bConnect = bConnect;
-
 	if(bConnect)
 	{
 		if(m_bIsConnected == false)
@@ -148,8 +158,8 @@ void CClipboardViewer::OnDestroy()
 
 void CClipboardViewer::OnChangeCbChain(HWND hWndRemove, HWND hWndAfter) 
 {
-	Log("OnChangeCbChain");
-
+	Log(_T("OnChangeCbChain"));
+	
 	// If the next window is closing, repair the chain. 
 	if(m_hNextClipboardViewer == hWndRemove)
     {
@@ -160,7 +170,7 @@ void CClipboardViewer::OnChangeCbChain(HWND hWndRemove, HWND hWndAfter)
     {
 		if(m_hNextClipboardViewer != m_hWnd)
 		{
-			::PostMessage(m_hNextClipboardViewer, WM_CHANGECBCHAIN, (WPARAM) hWndRemove, (LPARAM) hWndAfter);
+			::SendMessage(m_hNextClipboardViewer, WM_CHANGECBCHAIN, (WPARAM) hWndRemove, (LPARAM) hWndAfter);
 		}
 		else
 		{
@@ -175,30 +185,34 @@ void CClipboardViewer::OnDrawClipboard()
 	if(::IsClipboardFormatAvailable(theApp.m_PingFormat))
 	{
 		m_bPinging = false;
-		Log("ping suscessfull");
 		return;
 	}
 
 	// don't process the event when we first attach
 	if(m_pHandler && !m_bCalling_SetClipboardViewer)
 	{
-		if(!::IsClipboardFormatAvailable(theApp.m_cfIgnoreClipboard))
+		if(m_bIsConnected)
 		{
-			Log(StrF("OnDrawClipboard:: *** SetTimer *** %d", GetTickCount()));
-			
-			KillTimer(TIMER_DRAW_CLIPBOARD);
-			SetTimer(TIMER_DRAW_CLIPBOARD, g_Opt.m_lProcessDrawClipboardDelay, NULL);		
-
-			SetEnsureConnectedTimer();
+			if(!::IsClipboardFormatAvailable(theApp.m_cfIgnoreClipboard))
+			{
+				Log(StrF(_T("OnDrawClipboard:: *** SetTimer *** %d"), GetTickCount()));
+				
+				KillTimer(TIMER_DRAW_CLIPBOARD);
+				SetTimer(TIMER_DRAW_CLIPBOARD, g_Opt.m_lProcessDrawClipboardDelay, NULL);		
+			}
+		}
+		else
+		{
+			Log(_T("Not connected, ignore clipboard change"));
 		}
 	}
 
 	// pass the event to the next Clipboard viewer in the chain
-	if(m_hNextClipboardViewer != NULL && !m_bCalling_SetClipboardViewer)
+	if(m_hNextClipboardViewer != NULL)
 	{
 		if(m_hNextClipboardViewer != m_hWnd)
 		{
-			::PostMessage(m_hNextClipboardViewer, WM_DRAWCLIPBOARD, 0, 0);	
+			::SendMessage(m_hNextClipboardViewer, WM_DRAWCLIPBOARD, 0, 0);	
 		}
 		else
 		{
@@ -221,33 +235,30 @@ void CClipboardViewer::OnTimer(UINT nIDEvent)
 		if(m_bHandlingClipChange == false)
 		{
 			m_bHandlingClipChange = true;
+			DWORD dwNow = GetTickCount();
 
-			if((GetTickCount() - m_lLastCopy) > g_Opt.m_lSaveClipDelay)
+			if(dwNow - m_dwLastCopy > g_Opt.m_dwSaveClipDelay || m_dwLastCopy > dwNow)
 			{
 				if(!::IsClipboardFormatAvailable(theApp.m_cfIgnoreClipboard))
 				{
-					Log(StrF("OnDrawClipboard::OnTimer %d", GetTickCount()));
+					Log(StrF(_T("OnDrawClipboard::OnTimer %d"), dwNow));
 
 					m_pHandler->OnClipboardChange();
 
-					m_lLastCopy = GetTickCount();
-
-					Log(StrF("OnDrawClipboard::OnTimer END %d", GetTickCount()));
+					m_dwLastCopy = dwNow;
 				}
 			}
 			else
 			{
-				Log(StrF("Clip copy to fast difference from last copy = %d", (GetTickCount() - m_lLastCopy)));
+				Log(StrF(_T("Clip copy to fast difference from last copy = %d"), (dwNow - m_dwLastCopy)));
 			}
 
 			m_bHandlingClipChange = false;
 		}
 		else
 		{
-			Log("HandlingClipChange is Set, ERROR");
+			Log(_T("HandlingClipChange is Set, ERROR"));
 		}
-
-		break;
 	case TIMER_PING:
 		KillTimer(TIMER_PING);
 
@@ -255,21 +266,24 @@ void CClipboardViewer::OnTimer(UINT nIDEvent)
 		//if so reconnect
 		if(m_bPinging)
 		{
-			m_bIsConnected = false;
 			if(m_bConnect)
 			{
-				Log("Ping Failed Reconnecting to clipboard");
+				Log(_T("Ping Failed Reconnecting to clipboard"));
 				Connect();
 			}
 			else
 			{
-				Log("Ping Failed but Connected set to FALSE so this is ok");
+				Log(_T("Ping Failed but Connected set to FALSE so this is ok"));
 			}
 		}
 		else
 		{
-			m_bIsConnected = true;
+			if(m_bConnect)
+			{
+				m_bIsConnected = true;
+			}
 		}
+
 		break;
 	}
 	

+ 2 - 3
ClipboardViewer.h

@@ -36,16 +36,15 @@ public:
 	CCopyThread*	m_pHandler;
 
 	void Connect();    // connects as a clipboard viewer
-	void Disconnect(); // disconnects as a clipboard viewer
+	void Disconnect(bool bSendPing = true); // disconnects as a clipboard viewer
 
 	void SendPing();
 
 	bool GetConnect()				{ return m_bConnect; }
 	void SetConnect(bool bConnect);
-
 	void SetEnsureConnectedTimer();
 
-	long m_lLastCopy;
+	DWORD m_dwLastCopy;
 	bool m_bHandlingClipChange;
 
 	// Generated message map functions

+ 117 - 200
CopyProperties.cpp

@@ -16,7 +16,7 @@ static char THIS_FILE[] = __FILE__;
 // CCopyProperties dialog
 
 
-CCopyProperties::CCopyProperties(long lCopyID, CWnd* pParent /*=NULL*/)
+CCopyProperties::CCopyProperties(long lCopyID, CWnd* pParent, CClip *pMemoryClip)
 	: CDialog(CCopyProperties::IDD, pParent)
 {
 	m_lCopyID = lCopyID;
@@ -24,7 +24,11 @@ CCopyProperties::CCopyProperties(long lCopyID, CWnd* pParent /*=NULL*/)
 	m_bChangedText = false;
 	m_bHandleKillFocus = false;
 	m_bHideOnKillFocus = false;
+	m_bInGroup = false;
 	m_lGroupChangedTo = -1;
+	m_pMemoryClip = pMemoryClip;
+	m_bSetToTopMost = true;
+
 	//{{AFX_DATA_INIT(CCopyProperties)
 	m_eDate = _T("");
 	m_bNeverAutoDelete = FALSE;
@@ -36,6 +40,7 @@ void CCopyProperties::DoDataExchange(CDataExchange* pDX)
 {
 	CDialog::DoDataExchange(pDX);
 	//{{AFX_DATA_MAP(CCopyProperties)
+	DDX_Control(pDX, IDC_EDIT_QUICK_PASTE, m_QuickPasteText);
 	DDX_Control(pDX, IDC_RICHEDIT1, m_RichEdit);
 	DDX_Control(pDX, IDC_COMBO1, m_GroupCombo);
 	DDX_Control(pDX, IDC_HOTKEY, m_HotKey);
@@ -43,8 +48,6 @@ void CCopyProperties::DoDataExchange(CDataExchange* pDX)
 	DDX_Text(pDX, IDC_DATE, m_eDate);
 	DDX_Check(pDX, IDC_NEVER_AUTO_DELETE, m_bNeverAutoDelete);
 	//}}AFX_DATA_MAP
-	DDX_Control(pDX, IDC_PARSE_EDIT, m_ParseEdit);
-	DDX_Control(pDX, IDC_PARSE_BUTTON, m_ParseButton);
 }
 
 
@@ -54,7 +57,6 @@ BEGIN_MESSAGE_MAP(CCopyProperties, CDialog)
 	ON_WM_ACTIVATE()
 	ON_WM_SIZE()
 	//}}AFX_MSG_MAP
-	ON_BN_CLICKED(IDC_PARSE_BUTTON, OnBnClickedParseButton)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
@@ -64,59 +66,39 @@ BOOL CCopyProperties::OnInitDialog()
 {
 	CDialog::OnInitDialog();
 
-	m_ParseEdit.SetWindowText("\\r\\n");
 	m_GroupCombo.FillCombo();
 
-	m_MainTable.Open("SELECT * FROM Main WHERE lID = %d", m_lCopyID);
-	if(!m_MainTable.IsEOF())
+	try
 	{
-		CTime time(m_MainTable.m_lDate);
-		m_eDate = time.Format("%m/%d/%Y %I:%M %p");
-
-		m_RichEdit.SetText(m_MainTable.m_strText);
-
-		if(m_MainTable.m_lDontAutoDelete)
+		if(m_lCopyID == -1 && m_pMemoryClip != NULL)
 		{
-			m_bNeverDelete = TRUE;
-			m_bNeverAutoDelete = TRUE;
+			LoadDataFromCClip(*m_pMemoryClip);
 		}
 		else
 		{
-			m_bNeverAutoDelete = FALSE;
-			m_bNeverDelete = FALSE;
-		}
-
-		m_GroupCombo.SetCurSelOnItemData(m_MainTable.m_lParentID);
-
-		m_HotKey.SetHotKey(LOBYTE(m_MainTable.m_lShortCut), HIBYTE(m_MainTable.m_lShortCut));
-		m_HotKey.SetRules(HKCOMB_A, 0);
-
-		CString cs;
-		cs.Format("SELECT * FROM Data WHERE lDataID = %d", m_MainTable.m_lDataID);
-
-		m_DataTable.Open(AFX_DAO_USE_DEFAULT_TYPE, cs ,NULL);
-
-		while(!m_DataTable.IsEOF())
-		{
-			cs.Format("%s, %d", m_DataTable.m_strClipBoardFormat, m_DataTable.m_ooData.m_dwDataLength);
-			int nIndex = m_lCopyData.AddString(cs);
-			m_lCopyData.SetItemData(nIndex, m_DataTable.m_lID);
-
-			m_DataTable.MoveNext();
+			CClip Clip;
+			if(Clip.LoadMainTable(m_lCopyID))
+			{
+				Clip.LoadFormats(m_lCopyID);
+				LoadDataFromCClip(Clip);			
+			}
 		}
 	}
-
-	
+	CATCH_SQLITE_EXCEPTION
 
 	UpdateData(FALSE);
 
-	SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
+	if(m_bSetToTopMost)
+		SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
 
-	// if this is a result of a NamedCopy, focus on the hotkey
-	if( theApp.m_bShowCopyProperties )
-		m_HotKey.SetFocus();
+	if(m_lCopyID == -1 && m_pMemoryClip != NULL)
+	{
+		GetDlgItem(IDOK)->SetFocus();
+	}
 	else
+	{
 		m_RichEdit.SetFocus();
+	}
 
 	m_Resize.SetParent(m_hWnd);
 	m_Resize.AddControl(IDC_RICHEDIT1, DR_SizeHeight | DR_SizeWidth);
@@ -131,6 +113,49 @@ BOOL CCopyProperties::OnInitDialog()
 	return FALSE;
 }
 
+void CCopyProperties::LoadDataFromCClip(CClip &Clip)
+{
+	m_eDate = Clip.m_Time.Format("%m/%d/%Y %I:%M %p");
+	m_RichEdit.SetText(Clip.m_Desc);
+
+	if(Clip.m_lDontAutoDelete)
+	{
+		m_bNeverAutoDelete = TRUE;
+	}
+	else
+	{
+		m_bNeverAutoDelete = FALSE;
+	}
+
+	m_GroupCombo.SetCurSelOnItemData(Clip.m_lParent);
+
+	if(Clip.m_lParent >= 0)
+		m_bInGroup = true;
+
+	m_HotKey.SetHotKey(LOBYTE(Clip.m_lShortCut), HIBYTE(Clip.m_lShortCut));
+	m_HotKey.SetRules(HKCOMB_A, 0);
+
+	m_QuickPasteText.SetWindowText(Clip.m_csQuickPaste);
+
+	CString cs;
+	CClipFormat* pCF;
+	int nCount = Clip.m_Formats.GetSize();
+	for(int i = 0; i < nCount; i++)
+	{
+		pCF = &Clip.m_Formats.GetData()[i];
+		if(pCF)
+		{
+			cs.Format(_T("%s, %d"), GetFormatName(pCF->m_cfType), GlobalSize(pCF->m_hgData));
+			int nIndex = m_lCopyData.AddString(cs);
+			
+			if(m_lCopyID == -1 && pCF->m_lDBID == -1)
+				m_lCopyData.SetItemData(nIndex, i);
+			else
+				m_lCopyData.SetItemData(nIndex, pCF->m_lDBID);
+		}
+	}
+}
+
 void CCopyProperties::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
 {
 	CDialog::OnActivate(nState, pWndOther, bMinimized);
@@ -157,100 +182,77 @@ void CCopyProperties::OnOK()
 {
 	UpdateData();
 
-	bool bUpdate = false;
-
-	long lHotKey = m_HotKey.GetHotKey();
-		
-	if(lHotKey != m_MainTable.m_lShortCut)
+	try
 	{
-		if(lHotKey > 0)
+		if(m_lCopyID == -1 && m_pMemoryClip != NULL)
 		{
-			CMainTable recset;
-			recset.Open("SELECT * FROM Main WHERE lShortCut = %d", lHotKey);
-			if(!recset.IsEOF())
-			{
-				CString cs;
-				cs.Format("The shortcut is currently assigned to \n\n%s\n\nAssign to new copy item?", recset.m_strText);
-
-				if(MessageBox(cs, "Ditto", MB_YESNO) == IDNO)
-					return;
+			LoadDataIntoCClip(*m_pMemoryClip);
 
-				recset.Edit();
-				recset.m_lShortCut = 0;
-				recset.Update();
+			m_DeletedData.SortDescending();
+			int nCount = m_DeletedData.GetSize();
+			for(int i = 0; i < nCount; i++)
+			{
+				m_pMemoryClip->m_Formats.RemoveAt(m_DeletedData[i], 1);
+			}
+		}
+		else
+		{
+			CClip Clip;
+			if(Clip.LoadMainTable(m_lCopyID))
+			{
+				LoadDataIntoCClip(Clip);
+
+				Clip.ModifyMainTable();
+			
+				if(m_bDeletedData)
+				{
+					DeleteFormats(m_lCopyID, m_DeletedData);
+				}
 			}
 		}
 
-		if(!bUpdate)
-			m_MainTable.Edit();
-
-		m_MainTable.m_lShortCut = lHotKey;
-
-		bUpdate = true;
+		m_bHandleKillFocus = true;
 	}
+	CATCH_SQLITE_EXCEPTION
 
-	CString csDisplayText;
-	csDisplayText = m_RichEdit.GetText();
-	if(csDisplayText != m_MainTable.m_strText)
-	{
-		if(!bUpdate)
-			m_MainTable.Edit();
-
-		m_bChangedText = true;
+	CDialog::OnOK();
+}
 
-		m_MainTable.m_strText = csDisplayText;
+void CCopyProperties::LoadDataIntoCClip(CClip &Clip)
+{
+	Clip.m_lShortCut = m_HotKey.GetHotKey();
 
-		bUpdate = true;
+	//remove any others that have the same hot key
+	if(Clip.m_lShortCut > 0)
+	{
+		theApp.m_db.execDMLEx(_T("UPDATE Main SET lShortCut = 0 where lShortCut = %d AND lID <> %d;"), Clip.m_lShortCut, m_lCopyID);
 	}
 
-	if(m_bNeverAutoDelete != m_bNeverDelete)
-	{
-		if(!bUpdate)
-			m_MainTable.Edit();
+	Clip.m_Desc = m_RichEdit.GetText();
+	Clip.m_Desc.Replace(_T("'"), _T("''"));
 
-		if(m_bNeverAutoDelete)
-			m_MainTable.m_lDontAutoDelete = (long)CTime::GetCurrentTime().GetTime();
-		else
-			m_MainTable.m_lDontAutoDelete = 0;
+	m_QuickPasteText.GetWindowText(Clip.m_csQuickPaste);
+	Clip.m_csQuickPaste.MakeUpper();
+	Clip.m_csQuickPaste.Replace(_T("'"), _T("''"));
 
-		bUpdate = true;
+	//remove any other that have the same quick paste text
+	if(Clip.m_csQuickPaste.IsEmpty() == FALSE)
+	{
+		theApp.m_db.execDMLEx(_T("UPDATE Main SET QuickPasteText = '' WHERE QuickPasteText = '%s' AND lID <> %d;"), Clip.m_csQuickPaste, m_lCopyID);
 	}
 
-	int nParentID = m_GroupCombo.GetItemDataFromCursel();
+	Clip.m_lParent = m_GroupCombo.GetItemDataFromCursel();
 
-	if(nParentID != m_MainTable.m_lParentID)
+	//If we are going from no group to a group or the
+	//don't auto delete check box is checked
+	if(m_bInGroup == false && Clip.m_lParent >= 0 || m_bNeverAutoDelete)
 	{
-		bool bCont = true;
-		if(m_MainTable.m_bIsGroup)
-		{
-			if(nParentID == m_MainTable.m_lID)
-				bCont = false;
-		}
-		if(bCont)
-		{
-			if(!bUpdate)
-				m_MainTable.Edit();
-		
-			m_MainTable.m_lParentID = nParentID;
-			m_MainTable.m_lDontAutoDelete = (long)CTime::GetCurrentTime().GetTime();
-
-			m_lGroupChangedTo = nParentID;
-
-			bUpdate = true;
-		}
+		Clip.m_lDontAutoDelete = (long)CTime::GetCurrentTime().GetTime();
 	}
-
-	if(bUpdate)
-		m_MainTable.Update();
-	
-	if(m_bDeletedData)
+	else if(m_bNeverAutoDelete == FALSE)
 	{
-		DeleteFormats( m_MainTable.m_lDataID, m_DeletedData );
+		Clip.m_lDontAutoDelete = FALSE;
 	}
-
-	m_bHandleKillFocus = true;
-
-	CDialog::OnOK();
 }
 
 void CCopyProperties::OnDeleteCopyData() 
@@ -283,91 +285,6 @@ void CCopyProperties::OnCancel()
 	CDialog::OnCancel();
 }
 
-void CCopyProperties::OnBnClickedParseButton()
-{
-CPopup status(0,0,m_hWnd);
-	status.Show("Parsing...");
-
-CString delims;
-	m_ParseEdit.GetWindowText(delims);
-	delims = RemoveEscapes( delims );
-
-	// validate delimiters
-int nDelims = delims.GetLength();
-	if( nDelims <= 0 )
-	{
-		::MessageBox( m_hWnd, "Token Delimiters are not valid.", "Parse Failure", MB_OK|MB_ICONINFORMATION );
-		return;
-	}
-
-	// load the text
-HGLOBAL hGlobal = CClip::LoadFormat( m_lCopyID, CF_TEXT );
-	if( !hGlobal )
-	{
-		::MessageBox( m_hWnd, "No CF_TEXT Format Data could be found.", "Parse Failure", MB_OK|MB_ICONINFORMATION );
-		return;
-	}
-
-	// copy the text from the global into a string
-int nDataSize = ::GlobalSize( hGlobal );
-char* pData = (char*) ::GlobalLock( hGlobal );
-
-char* pDataEnd = pData + nDataSize;
-char* p = pData;
-	ASSERT( pData != NULL && nDataSize > 0 );
-	// Find the terminating NULL
-	while( *p != '\0' && p < pDataEnd ) { p++; }
-	// there was no NULL in the string!
-	if( p >= pDataEnd )
-	{
-		ASSERT(0);
-		return;
-	}
-	// copy the data into a string
-CString text = pData;
-	// free the global
-	::GlobalUnlock( hGlobal );
-	::GlobalFree(hGlobal);
-
-	// tokenize the text
-CString token;
-CStringArray tokens;
-CTokenizer tokenizer(text,delims);
-	while( tokenizer.Next( token ) )
-	{
-		tokens.Add( token );
-	}
-
-	// save the tokens to the db
-CClip clip;
-int len;
-long lDate = (long) CTime::GetCurrentTime().GetTime();
-int count = tokens.GetSize();
-
-	for( int i = 0; i < count; i++ )
-	{
-		status.Show( StrF("Saving Token %d out of %d", i+1, count) );
-		len = tokens[i].GetLength();
-		// ignore 0 length tokens
-		if( len <= 0 )
-			continue;
-		clip.AddFormat( CF_TEXT, (void*) (LPCTSTR) tokens[i], len+1 );
-		clip.m_Time = lDate;
-		clip.AddToDB( false ); // false = don't check for duplicates
-		clip.Clear();
-		lDate++; // make sure they are sequential
-	}
-
-	if( count <= 0 )
-		::MessageBox( m_hWnd, "No new tokens found by parsing", "Parse Failed", MB_OK|MB_ICONINFORMATION );
-	else
-	{
-		::MessageBox( m_hWnd, StrF("Successfully parsed %d tokens.", tokens.GetSize()), "Parse Completed", MB_OK|MB_ICONINFORMATION );
-		theApp.RefreshView();
-	}
-}
-
-
 void CCopyProperties::OnSize(UINT nType, int cx, int cy) 
 {
 	CDialog::OnSize(nType, cx, cy);

+ 15 - 15
CopyProperties.h

@@ -19,11 +19,12 @@ class CCopyProperties : public CDialog
 {
 // Construction
 public:
-	CCopyProperties(long lCopyID, CWnd* pParent = NULL);   // standard constructor
+	CCopyProperties(long lCopyID, CWnd* pParent = NULL, CClip *pMemoryClip = NULL);   // standard constructor
 
 // Dialog Data
 	//{{AFX_DATA(CCopyProperties)
 	enum { IDD = IDD_COPY_PROPERTIES };
+	CEdit	m_QuickPasteText;
 	CRichEditCtrlEx	m_RichEdit;
 	CGroupCombo	m_GroupCombo;
 	CHotKeyCtrl	m_HotKey;
@@ -43,21 +44,25 @@ public:
 public:
 	bool m_bChangedText;
 	long m_lGroupChangedTo;
-	void	SetHideOnKillFocus(bool bVal)	{ m_bHideOnKillFocus = bVal;	}
+	void SetHideOnKillFocus(bool bVal)	{ m_bHideOnKillFocus = bVal; }
+	void SetHandleKillFocus(bool bVal)	{ m_bHandleKillFocus = bVal; }
+	void SetToTopMost(bool bVal)		{ m_bSetToTopMost = bVal; }
 
 // Implementation
 protected:
 
-	long		m_lCopyID;
-	CDataTable	m_DataTable;
-	CMainTable	m_MainTable;
-	ARRAY		m_DeletedData;
-	bool		m_bDeletedData;
-	BOOL		m_bNeverDelete;
-	bool		m_bHideOnKillFocus;
+	long m_lCopyID;
+	ARRAY m_DeletedData;
+	bool m_bDeletedData;
+	bool m_bHideOnKillFocus;
 	CDialogResizer m_Resize;
+	bool m_bInGroup;
+	bool m_bHandleKillFocus;
+	bool m_bSetToTopMost;
+	CClip *m_pMemoryClip;
 
-	bool		m_bHandleKillFocus;
+	void LoadDataIntoCClip(CClip &Clip);
+	void LoadDataFromCClip(CClip &Clip);
 
 	// Generated message map functions
 	//{{AFX_MSG(CCopyProperties)
@@ -69,11 +74,6 @@ protected:
 	afx_msg void OnSize(UINT nType, int cx, int cy);
 	//}}AFX_MSG
 	DECLARE_MESSAGE_MAP()
-public:
-	CEdit m_ParseEdit;
-	CButton m_ParseButton;
-	afx_msg void OnBnClickedParseButton();
-	CEdit m_DisplayTextEdit;
 };
 
 //{{AFX_INSERT_LOCATION}}

+ 4 - 5
CopyThread.cpp

@@ -38,8 +38,6 @@ CCopyThread::~CCopyThread()
 
 BOOL CCopyThread::InitInstance()
 {
-	SetThreadName(m_nThreadID, "COPY");
-
 	m_pClipboardViewer = new CClipboardViewer(this);
 
 	// the window is created within this thread and therefore uses its message queue
@@ -50,7 +48,7 @@ BOOL CCopyThread::InitInstance()
 
 int CCopyThread::ExitInstance()
 {
-	m_pClipboardViewer->Disconnect();
+	m_pClipboardViewer->Disconnect(false);
 
 	return CWinThread::ExitInstance();
 }
@@ -71,7 +69,7 @@ void CCopyThread::OnClipboardChange()
 	SyncConfig(); // synchronize with the main thread's copy configuration
 	
 	// if we are told not to copy on change, then we have nothing to do.
-	if( !m_LocalConfig.m_bCopyOnChange )
+	if(!m_LocalConfig.m_bCopyOnChange)
 		return;
 	
 	CClip* pClip = new CClip;
@@ -145,7 +143,7 @@ bool CCopyThread::GetConnectCV()
 void CCopyThread::SetConnectCV(bool bConnect)
 {
 	ASSERT( m_pClipboardViewer && m_pClipboardViewer->m_hWnd );
-	::SendMessage(m_pClipboardViewer->m_hWnd, WM_SETCONNECT, bConnect, 0);
+	::SendMessage( m_pClipboardViewer->m_hWnd, WM_SETCONNECT, bConnect, 0 );
 }
 
 CClipList* CCopyThread::GetClips()
@@ -158,6 +156,7 @@ CClipList* CCopyThread::GetClips()
 	Release();
 	return pRet;
 }
+
 void CCopyThread::SetSupportedTypes( CClipTypes* pTypes )
 {
 	Hold();

+ 78 - 0
Crc32Dynamic.cpp

@@ -0,0 +1,78 @@
+#include "stdafx.h"
+#include "Crc32Dynamic.h"
+//#include <fstream.h>
+
+CCrc32Dynamic::CCrc32Dynamic() : m_pdwCrc32Table(NULL)
+{
+	Init();
+}
+
+CCrc32Dynamic::~CCrc32Dynamic()
+{
+	Free();
+}
+
+void CCrc32Dynamic::Init()
+{
+	// This is the official polynomial used by CRC32 in PKZip.
+	// Often times the polynomial shown reversed as 0x04C11DB7.
+	DWORD dwPolynomial = 0xEDB88320;
+	int i, j;
+
+	Free();
+	m_pdwCrc32Table = new DWORD[256];
+
+	DWORD dwCrc;
+	for(i = 0; i < 256; i++)
+	{
+		dwCrc = i;
+		for(j = 8; j > 0; j--)
+		{
+			if(dwCrc & 1)
+				dwCrc = (dwCrc >> 1) ^ dwPolynomial;
+			else
+				dwCrc >>= 1;
+		}
+		m_pdwCrc32Table[i] = dwCrc;
+	}
+}
+
+void CCrc32Dynamic::Free()
+{
+	delete m_pdwCrc32Table;
+	m_pdwCrc32Table = NULL;
+}
+
+inline void CCrc32Dynamic::CalcCrc32(const BYTE byte, DWORD &dwCrc32) const
+{
+	dwCrc32 = ((dwCrc32) >> 8) ^ m_pdwCrc32Table[(byte) ^ ((dwCrc32) & 0x000000FF)];
+}
+
+DWORD CCrc32Dynamic::GenerateCrc32(const LPBYTE lpbArray, DWORD dSize, DWORD &dwCrc32)
+{
+	DWORD dwErrorCode = NO_ERROR;
+
+//	dwCrc32 = 0xFFFFFFFF;
+
+	try
+	{
+		// Is the table initialized?
+		if(m_pdwCrc32Table == NULL)
+			throw 0;
+
+		for(DWORD i = 0; i < dSize; i++)
+		{
+			CalcCrc32(lpbArray[i], dwCrc32);
+		}
+	}
+	catch(...)
+	{
+		// An unknown exception happened, or the table isn't initialized
+		dwErrorCode = ERROR_CRC;
+	}
+
+//	dwCrc32 = ~dwCrc32;
+
+	return dwErrorCode;
+}
+

+ 21 - 0
Crc32Dynamic.h

@@ -0,0 +1,21 @@
+#ifndef _CRC32DYNAMIC_H_
+#define _CRC32DYNAMIC_H_
+
+class CCrc32Dynamic
+{
+public:
+	CCrc32Dynamic();
+	virtual ~CCrc32Dynamic();
+
+	DWORD GenerateCrc32(const LPBYTE lpbArray, DWORD dSize, DWORD &dwCrc32);
+
+protected:
+	inline void CalcCrc32(const BYTE byte, DWORD &dwCrc32) const;
+	
+	void Init();
+	void Free();
+
+	DWORD *m_pdwCrc32Table;
+};
+
+#endif

+ 402 - 518
DatabaseUtilities.cpp

@@ -7,6 +7,7 @@
 #include "DatabaseUtilities.h"
 #include "ProcessPaste.h"
 #include <io.h>
+#include "AccessToSqlite.h"
 
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
@@ -20,14 +21,14 @@ BOOL CreateBackup(CString csPath)
 	do
 	{
 		count++;
-		csOriginal = csPath + StrF(".%03d",count);
+		csOriginal = csPath + StrF(_T(".%03d"), count);
 		// in case of some weird infinite loop
 		if( count > 50 )
 		{
 			ASSERT(0);
 			return FALSE;
 		}
-	} while( !::CopyFile(csPath, csOriginal, TRUE) );
+	} while( !::CopyFile(csPath, csOriginal, TRUE));
 	
 	return TRUE;
 }
@@ -37,565 +38,384 @@ CString GetDBName()
 	return CGetSetOptions::GetDBPath();
 }
 
-CString GetDefaultDBName()
+CString GetOLDDefaultDBName()
 {
 	CString csDefaultPath;
 	LPMALLOC pMalloc;
-	
+
 	if(SUCCEEDED(::SHGetMalloc(&pMalloc))) 
 	{ 
 		LPITEMIDLIST pidlPrograms;
-		
+
 		SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &pidlPrograms);
-		
-		char string[MAX_PATH];
+
+		TCHAR string[MAX_PATH];
 		SHGetPathFromIDList(pidlPrograms, string);
-		
+
 		pMalloc->Free(pidlPrograms);
 		pMalloc->Release();
-		
+
 		csDefaultPath = string;		
 		csDefaultPath += "\\Ditto\\";
-		
-		if(_access(csDefaultPath, 0) == -1)
-			CreateDirectory(csDefaultPath, NULL);
-		
-		csDefaultPath += DEFAULT_DB_NAME;
+
+		csDefaultPath += "DittoDB.mdb";
 	}
-	
+
 	return csDefaultPath;
 }
 
-BOOL CheckDBExists(CString csDBPath)
+CString GetDefaultDBName()
 {
-	if(_access(csDBPath, 0) == -1)
+	CString csDefaultPath = _T("c:\\program files\\Ditto\\");
+
+	if(g_Opt.m_bU3)
 	{
-		//Database didn't exist
-		CGetSetOptions::SetDBPath("");
+		csDefaultPath = CGetSetOptions::GetPath(PATH_DATABASE);
+	}
+	else
+	{	
+		LPMALLOC pMalloc;
 		
-		// -- create a new one
-		return CreateDB(GetDefaultDBName());
+		if(SUCCEEDED(::SHGetMalloc(&pMalloc))) 
+		{ 
+			LPITEMIDLIST pidlPrograms;
+			
+			SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &pidlPrograms);
+			
+			TCHAR string[MAX_PATH];
+			SHGetPathFromIDList(pidlPrograms, string);
+			
+			pMalloc->Free(pidlPrograms);
+			pMalloc->Release();
+			
+			csDefaultPath = string;		
+		}
+
+		FIX_CSTRING_PATH(csDefaultPath);
+		csDefaultPath += "Ditto\\";
 	}
-	
-	BOOL bRet = FALSE;
 
-	int nRet = ValidDB(csDBPath);
-	
-	if(nRet == FALSE)
+	if(FileExists(csDefaultPath) == FALSE)
+		CreateDirectory(csDefaultPath, NULL);
+
+	CString csTempName = csDefaultPath + "Ditto.db";
+	int i = 1;
+	while(FileExists(csTempName))
 	{
-		theApp.CloseDB();
-		
-		CGetSetOptions::SetDBPath("");
-		
-		//Db existed but was bad
-		
-		CString csMarkAsBad;
-		
-		csMarkAsBad = csDBPath;
-		csMarkAsBad.Replace(".", "_BAD.");
-		
-		CString csPath = GetDefaultDBName();
-		
-		CString cs;
-		cs.Format("%s \"%s\",\n"
-			"%s \"%s\",\n"
-			"%s,\n"
-			"\"%s\"",
-			theApp.m_Language.GetString("Database_Format", "Unrecognized Database Format"),
-			csDBPath, 
-			theApp.m_Language.GetString("File_Renamed", "the file will be renamed"),
-			csMarkAsBad, 
-			theApp.m_Language.GetString("New_Database", "and a new database will be created"),
-			csPath);
-		
-		AfxMessageBox(cs);
-		
-		CFile::Rename(csDBPath, csMarkAsBad);
-		
-		bRet = CreateDB(csPath);
+		csTempName.Format(_T("%sDitto_%d.db"), csDefaultPath, i);
+		i++;
 	}
-	else if(nRet == ERROR_OPENING_DATABASE)
-		bRet = ERROR_OPENING_DATABASE;
-	else
-		bRet = TRUE;
+	csDefaultPath = csTempName;
 	
-	return bRet;
-}
-
-// m_pErrorInfo:
-// - m_lErrorCode      0x00000cc1
-// - m_strSource       "DAO.Fields"
-// - m_strDescription  "Item not found in this collection."
-#define ON_FIELD_ABSENT(name,onabsent) \
-	try { table.GetFieldInfo(name,info); } \
-	catch(CDaoException* e) \
-{ \
-	if( !bUpgrade || e->m_pErrorInfo->m_lErrorCode != 0x00000cc1 ) \
-	throw e; \
-	if( bUpgraded == FALSE ) \
-	CreateBackup(csPath); \
-	bResult &= onabsent; \
-	bUpgraded = TRUE; \
-	e->Delete(); \
+	return csDefaultPath;
 }
 
-BOOL ValidDB(CString csPath, BOOL bUpgrade)
+BOOL CheckDBExists(CString csDBPath)
 {
-	BOOL bResult = TRUE;
-	BOOL bUpgraded = FALSE;
-	try
+	//If this is the first time running this version then convert the old database to the new db
+	if(csDBPath.IsEmpty() && g_Opt.m_bU3 == false)
 	{
-		CDaoDatabase db;
+		csDBPath = GetDefaultDBName();
 
-		try
-		{
-			db.Open(csPath);
-		}
-		catch(CDaoException* e)
+		if(FileExists(csDBPath) == FALSE)
 		{
-			TCHAR   szErrorMessage[512];
-			UINT    nHelpContext;
+			CString csOldDB = CGetSetOptions::GetDBPathOld();
+			if(csOldDB.IsEmpty())
+			{
+				csOldDB = GetOLDDefaultDBName();
+			}
 
-			if(e->GetErrorMessage(szErrorMessage, 512, &nHelpContext))
+			if(FileExists(csOldDB))
 			{
-				if(strcmp(szErrorMessage, "Unable to initialize DAO/Jet db engine.") == 0)
-				{
-					e->Delete();
-					return ERROR_OPENING_DATABASE;				
-				}
+				//create the new sqlite db
+				CreateDB(csDBPath);
+
+				CAccessToSqlite Convert;
+				Convert.ConvertDatabase(csDBPath, csOldDB);
 			}
-			e->ReportError();
-			e->Delete();
 		}
-		
-		
-		CDaoTableDef table(&db);
-		CDaoFieldInfo info;
-		
-		table.Open("Main");
-		table.GetFieldInfo("lID", info);
-		table.GetFieldInfo("lDate", info);
-		ON_FIELD_ABSENT("mText", Upgrade_mText(db)); // +mText, -strText, -strType
-		table.GetFieldInfo("lShortCut", info);
-		table.GetFieldInfo("lDontAutoDelete", info);
-		table.GetFieldInfo("lTotalCopySize", info);
-		ON_FIELD_ABSENT("bIsGroup", Upgrade_Groups(db));
-		table.GetFieldInfo("lParentID", info); // part of Upgrade_Groups
-		table.GetFieldInfo("dOrder", info);  // part of Upgrade_Groups
-		ON_FIELD_ABSENT("lDataID", Upgrade_ShareData(db)); // +lDataID, -lParentID
-		table.Close();
-		
-		table.Open("Data");
-		table.GetFieldInfo("lID", info);
-		table.GetFieldInfo("lDataID", info); // part of Upgrade_ShareData()
-		table.GetFieldInfo("strClipBoardFormat", info);
-		table.GetFieldInfo("ooData", info);
-		table.Close();
-		
-		table.Open("Types");
-		table.GetFieldInfo("ID", info);
-		table.GetFieldInfo("TypeText", info);
-		table.Close();
 	}
-	catch(CDaoException* e)
-	{
-		e->ReportError();
-		ASSERT(FALSE);
-		e->Delete();
-		return FALSE;
-	}
-	
-	// if we upgraded, perform full validation again without upgrading
-	if( bUpgraded )
-		return ValidDB( csPath, FALSE);
-	
-	return bResult;
-}
 
-BOOL CreateDB(CString csPath)
-{
-	try
+	BOOL bRet = FALSE;
+	if(FileExists(csDBPath) == FALSE)
 	{
-		CDaoDatabase db;
-		EnsureDirectory(csPath);
-
-		try
-		{
-			db.Create(csPath);
-		}
-		catch(CDaoException* e)
-		{
-			TCHAR   szErrorMessage[512];
-			UINT    nHelpContext;
-
-			if(e->GetErrorMessage(szErrorMessage, 512, &nHelpContext))
-			{
-				if(strcmp(szErrorMessage, "Unable to initialize DAO/Jet db engine.") == 0)
-				{
-					e->Delete();
-					return ERROR_OPENING_DATABASE;	
-				}
-			}
+		csDBPath = GetDefaultDBName();
 
-			e->ReportError();
-			e->Delete();
+		// -- create a new one
+		bRet = CreateDB(csDBPath);
+	}
+	else
+	{
+		if(ValidDB(csDBPath) == FALSE)
+		{		
+			//Db existed but was bad
+			CString csMarkAsBad;
+			
+			csMarkAsBad = csDBPath;
+			csMarkAsBad.Replace(_T("."), _T("_BAD."));
+			
+			CString csPath = GetDefaultDBName();
+			
+			CString cs;
+			cs.Format(_T("%s \"%s\",\n")
+				_T("%s \"%s\",\n")
+				_T("%s,\n")
+				_T("\"%s\""),
+				theApp.m_Language.GetString("Database_Format", "Unrecognized Database Format"),
+				csDBPath, 
+				theApp.m_Language.GetString("File_Renamed", "the file will be renamed"),
+				csMarkAsBad, 
+				theApp.m_Language.GetString("New_Database", "and a new database will be created"),
+				csPath);
+			
+			AfxMessageBox(cs);
+			
+			CFile::Rename(csDBPath, csMarkAsBad);
 
-			return FALSE;
+			csDBPath = csPath;
+			
+			bRet = CreateDB(csDBPath);
 		}
-		
-		CDaoTableDefEx table(&db);
-		//Create the Main table
-		table.Create("Main");
-		table.CreateField("lID", dbLong, 4, dbAutoIncrField);
-		table.CreateIndex(TRUE, "lID");
-		table.CreateField("lDate", dbLong, 4, 0, "0");
-		table.CreateIndex(FALSE, "lDate");
-		table.CreateField("mText", dbMemo, 0, dbVariableField);
-		table.CreateField("lShortCut", dbLong, 4, 0, "0");
-		table.CreateIndex(FALSE, "lShortCut");
-		table.CreateField("lDontAutoDelete", dbLong, 4, 0, "0");
-		table.CreateField("lTotalCopySize", dbLong, 4, 0, "0");
-		// GROUPS
-		table.CreateField("bIsGroup", dbBoolean, 1, 0, "0"); // for Groups
-		table.CreateIndex(FALSE, "bIsGroup");
-		table.CreateField("lParentID", dbLong, 4, 0, "0"); // parent Group Main.lID
-		table.CreateIndex(FALSE, "lParentID");
-		table.CreateField("dOrder", dbDouble, 8, 0, "0"); // for Order within Groups
-		table.CreateIndex(FALSE, "dOrder");
-		// for sharing data amongst multiple clips
-		table.CreateField("lDataID", dbLong, 4, 0, "0"); // corresponds to Data.lDataID
-		table.CreateIndex(FALSE, "lDataID");
-		
-		table.Append();
-		table.Close();
-		
-		//Create the Data Table
-		table.Create("Data");
-		
-		table.CreateField("lID", dbLong, 4, dbAutoIncrField);
-		table.CreateIndex(TRUE, "lID");
-		table.CreateField("lDataID", dbLong, 4, 0, "0");
-		table.CreateIndex(FALSE, "lDataID");
-		table.CreateField("strClipBoardFormat", dbText, 50, dbVariableField);
-		table.CreateField("ooData", dbLongBinary, 0);
-		
-		table.Append();
-		table.Close();
-		
-		//Create the Types table
-		table.Create("Types");
-		table.CreateField("ID", dbLong, 4, dbAutoIncrField);
-		table.CreateField("TypeText", dbText, 50, dbVariableField);
-		
-		table.Append();
-		table.Close();
-		
-		db.Close();
-		
-		return TRUE;
+		else
+			bRet = TRUE;
 	}
-	catch(CDaoException *e)
+
+	if(bRet)
 	{
-		e->ReportError();
-		ASSERT(FALSE);
-		e->Delete();
+		bRet = OpenDatabase(csDBPath);
 	}
 	
-	return FALSE;
+	return bRet;
 }
 
-// +mText, -strText, -strType
-BOOL Upgrade_mText(CDaoDatabase& db)
+BOOL OpenDatabase(CString csDB)
 {
 	try
 	{
-		db.Execute("ALTER TABLE Main ADD COLUMN mText MEMO", dbFailOnError);
-		db.Execute("UPDATE Main SET mText=strText", dbFailOnError);
-		db.Execute("ALTER TABLE Main DROP COLUMN strText", dbFailOnError);
-		db.Execute("ALTER TABLE Main DROP COLUMN strType", dbFailOnError);
-	}
-	CATCHDAO
+		theApp.m_db.close();
+		theApp.m_db.open(csDB);
+		CGetSetOptions::SetDBPath(csDB);
+
 		return TRUE;
+	}
+	CATCH_SQLITE_EXCEPTION
+
+	return FALSE;
 }
 
-BOOL Upgrade_Groups(CDaoDatabase& db)
+BOOL ValidDB(CString csPath, BOOL bUpgrade)
 {
 	try
 	{
-		CDaoTableDefEx table(&db);
-		table.Open("Main");
-		// Groups
-		table.CreateField("bIsGroup", dbBoolean, 1, 0, "0"); // for Groups
-		table.CreateIndex(FALSE, "bIsGroup");
-		table.CreateField("lParentID", dbLong, 4, 0, "0"); // parent Group Main.lID
-		table.CreateIndex(FALSE, "lParentID");
-		table.CreateField("dOrder", dbDouble, 8, 0, "0"); // for Order within Groups
-		table.CreateIndex(FALSE, "dOrder");
-		table.Close();
-		// set defaults (otherwise might be NULL)
-		db.Execute("UPDATE Main SET bIsGroup = 0, lParentID = 0, dOrder = 0", dbFailOnError);
+		CppSQLite3DB db;
+		db.open(csPath);
+
+		db.execQuery(_T("SELECT lID, lDate, mText, lShortCut, lDontAutoDelete, ")
+								_T("CRC, bIsGroup, lParentID, QuickPasteText ")
+								_T("FROM Main"));
+
+		db.execQuery(_T("SELECT lID, lParentID, strClipBoardFormat, ooData FROM Data"));
+
+		db.execQuery(_T("SELECT lID, TypeText FROM Types"));
+
+		//This was added later so try to add each time and catch the exception here
+ 		try
+ 		{
+ 			db.execDML(_T("CREATE TRIGGER delete_data_trigger BEFORE DELETE ON Main FOR EACH ROW\n")
+ 						_T("BEGIN\n")
+ 							_T("DELETE FROM Data WHERE lParentID = old.lID;\n")
+ 						_T("END\n"));
+ 		}
+ 		catch(CppSQLite3Exception& e)
+ 		{
+ 			e.errorCode();
+ 		}
 	}
-	CATCHDAO
-		return TRUE;
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(FALSE)
+
+	return TRUE;                                                     
 }
 
-BOOL Upgrade_ShareData(CDaoDatabase& db)
+BOOL CreateDB(CString csPath)
 {
-	CPopup status(10000,10000); // peg at the bottom-right corner of screen
 	try
 	{
-		CDaoTableDefEx table(&db);
-		
-		table.Open("Main");
-		table.CreateField("lDataID", dbLong, 4, 0, "0"); // corresponds to Data.lDataID
-		table.CreateIndex(FALSE, "lDataID");
-		table.Close();
-		
-		table.Open("Data");
-		table.CreateField("lDataID", dbLong, 4, 0, "0"); // parent Group Main.lID
-		table.CreateIndex(FALSE, "lDataID");
-		table.Close();
-		
-		// set defaults
-		db.Execute(	"UPDATE Main SET lDataID = 0", dbFailOnError );
-		db.Execute( "UPDATE Data SET lDataID = 0", dbFailOnError );
-		
-		// update Main.lDataID and Data.lParentID for sharing Data
-		//
-		// - multiple Formats (Data.lID) exist for a single ClipData (Data.lDataID)
-		// - The value of lDataID is arbitrary, but must be unique to the ClipData.
-		//   - In order to ensure uniqueness, lDataID is assigned the lID of
-		//     the first Format in the Clip's set.
-		
-		COleVariant var((long)0);
-		CDaoRecordset main(&db);
-		long main_fldID;
-		long main_fldDataID;
-		long main_lID;
-		
-		CDaoRecordset data(&db);
-		long data_fldID;
-		long data_fldDataID;
-		long lDataID;
-		int count = 0;
-		int i = 0;
-		int percentPrev = -1;
-		int percent = -1;
-		
-		main.Open(dbOpenDynaset,"SELECT lID, lDataID FROM Main");
-		
-		main_fldID = GetFieldPos(main,"lID");
-		VERIFY(main_fldID == 0);
-		main_fldDataID = GetFieldPos(main,"lDataID");
-		VERIFY(main_fldDataID == 1);
-		
-		if( !main.IsEOF() )
-		{
-			main.MoveLast();
-			count = main.GetRecordCount();
-			main.MoveFirst();
-		}
-		
-		// for each record in Main and its corresponding records in Data,
-		//  assign a new unique lDataID.
-		while( !main.IsEOF() )
-		{
-			i++;
-			percentPrev = percent;
-			percent = (i*100)/count;
-			if( percent != percentPrev )
-				status.Show(StrF("Ditto: Upgrading database (%d%%)",percent));
-			
-			main.GetFieldValue(main_fldID,var);
-			main_lID = var.lVal;
-			
-			data.Open(dbOpenDynaset, StrF(
-				"SELECT lID, lDataID "
-				"FROM Data WHERE lParentID = %d", main_lID) );
-			
-			data_fldID = GetFieldPos(data,"lID");
-			VERIFY(data_fldID == 0);
-			data_fldDataID = GetFieldPos(data,"lDataID");
-			VERIFY(data_fldDataID == 1);
-			
-			// lDataID = the first data record lID
-			lDataID = 0;
-			if( !data.IsEOF() )
-			{
-				data.GetFieldValue(0,var); // 0 == lID field
-				lDataID = var.lVal;
-			}
-			// assign all Data records the same lDataID
-			while( !data.IsEOF() )
-			{
-				var.lVal = lDataID;
-				data.Edit();
-				data.SetFieldValue(1,var); // 1 == lDataID field
-				data.Update();
-				data.MoveNext();
-			}
-			
-			// assign Main.lDataID
-			var.lVal = lDataID;
-			main.Edit();
-			main.SetFieldValue(1,var); // 1 == lDataID field
-			main.Update();
-			main.MoveNext();
-			
-			data.Close();
-		}
-		
-		main.Close();
-		
-		// delete the old field
-		db.Execute("ALTER TABLE Data DROP CONSTRAINT lParentID", dbFailOnError);
-		db.Execute("ALTER TABLE Data DROP COLUMN lParentID", dbFailOnError);
+		CppSQLite3DB db;
+		db.open(csPath);
+
+		db.execDML(_T("CREATE TABLE Main(")
+								_T("lID INTEGER PRIMARY KEY AUTOINCREMENT, ")
+								_T("lDate INTEGER, ")
+								_T("mText TEXT, ")
+								_T("lShortCut INTEGER, ")
+								_T("lDontAutoDelete INTEGER, ")
+								_T("CRC INTEGER, ")
+								_T("bIsGroup INTEGER, ")
+								_T("lParentID INTEGER, ")
+								_T("QuickPasteText TEXT);"));
+
+		db.execDML(_T("CREATE TABLE Data(")
+							_T("lID INTEGER PRIMARY KEY AUTOINCREMENT, ")
+							_T("lParentID INTEGER, ")
+							_T("strClipBoardFormat TEXT, ")
+							_T("ooData BLOB);"));
+
+		db.execDML(_T("CREATE TABLE Types(")
+							_T("lID INTEGER PRIMARY KEY AUTOINCREMENT, ")
+							_T("TypeText TEXT)"));
+
+		db.execDML(_T("CREATE UNIQUE INDEX Main_ID on Main(lID ASC)"));
+		db.execDML(_T("CREATE UNIQUE INDEX Data_ID on Data(lID ASC)"));
+		db.execDML(_T("CREATE INDEX Main_Date on Main(lDate DESC)"));
+
+		db.execDML(_T("CREATE TRIGGER delete_data_trigger BEFORE DELETE ON Main FOR EACH ROW\n")
+						_T("BEGIN\n")
+							_T("DELETE FROM Data WHERE lParentID = old.lID;\n")
+						_T("END\n"));
+		db.close();
 	}
-	CATCHDAO
-		return TRUE;
+	CATCH_SQLITE_EXCEPTION_AND_RETURN(FALSE)
+
+	return TRUE;
 }
 
 BOOL CompactDatabase()
 {
-	if(!theApp.CloseDB())
-		return FALSE;
-
-	CString csDBName = GetDBName();
-	CString csTempDBName = csDBName;
-	csTempDBName.Replace(".mdb", "TempDBName.mdb");
-	
-	//Compact the database			
-	try
-	{
-		CDaoWorkspace::CompactDatabase(csDBName, csTempDBName);//, dbLangGeneral, 0, "andrew");//DATABASE_PASSWORD);
-	}
-	catch(CDaoException* e)
-	{
-		AfxMessageBox(e->m_pErrorInfo->m_strDescription);
-		DeleteFile(csTempDBName);
-		e->Delete();
-		return FALSE;
-	}
-	catch(CMemoryException* e) 
-	{
-		AfxMessageBox("Memory Exception");
-		DeleteFile(csTempDBName);
-		e->Delete();
-		return FALSE;
-	}
-	
-	//Since compacting the database creates a new db delete the old one and replace it
-	//with the compacted db
-	if(DeleteFile(csDBName))
-	{
-		try
-		{
-			CFile::Rename(csTempDBName, csDBName);
-		}
-		catch(CFileException *e)
-		{
-			e->ReportError();
-			e->Delete();
-			return FALSE;
-		}
-	}
-	else
-		AfxMessageBox("Error Compacting Database");
+//	if(!theApp.CloseDB())
+//		return FALSE;
+//
+//	CString csDBName = GetDBName();
+//	CString csTempDBName = csDBName;
+//	csTempDBName.Replace(".mdb", "TempDBName.mdb");
+//	
+//	//Compact the database			
+//	try
+//	{
+//		CDaoWorkspace::CompactDatabase(csDBName, csTempDBName);//, dbLangGeneral, 0, "andrew");//DATABASE_PASSWORD);
+//	}
+//	catch(CDaoException* e)
+//	{
+//		AfxMessageBox(e->m_pErrorInfo->m_strDescription);
+//		DeleteFile(csTempDBName);
+//		e->Delete();
+//		return FALSE;
+//	}
+//	catch(CMemoryException* e) 
+//	{
+//		AfxMessageBox("Memory Exception");
+//		DeleteFile(csTempDBName);
+//		e->Delete();
+//		return FALSE;
+//	}
+//	
+//	//Since compacting the database creates a new db delete the old one and replace it
+//	//with the compacted db
+//	if(DeleteFile(csDBName))
+//	{
+//		try
+//		{
+//			CFile::Rename(csTempDBName, csDBName);
+//		}
+//		catch(CFileException *e)
+//		{
+//			e->ReportError();
+//			e->Delete();
+//			return FALSE;
+//		}
+//	}
+//	else
+//		AfxMessageBox("Error Compacting Database");
 	
 	return TRUE;
 }
 
 BOOL RepairDatabase()
 {
-	if(!theApp.CloseDB())
-		return FALSE;
+//	if(!theApp.CloseDB())
+//		return FALSE;
 	
-	try
-	{
-		CDaoWorkspace::RepairDatabase(GetDBName());
-	}
-	catch(CDaoException *e)
-	{
-		AfxMessageBox(e->m_pErrorInfo->m_strDescription);
-		e->Delete();
-		return FALSE;
-	}
+//	try
+//	{
+//		CDaoWorkspace::RepairDatabase(GetDBName());
+//	}
+//	catch(CDaoException *e)
+//	{
+//		AfxMessageBox(e->m_pErrorInfo->m_strDescription);
+//		e->Delete();
+//		return FALSE;
+//	}
 	
 	return TRUE;
 }
 
 BOOL RemoveOldEntries()
 {
-	if(CGetSetOptions::GetCheckForMaxEntries())
+	try
 	{
-		long lMax = CGetSetOptions::GetMaxEntries();
-		
-		CMainTable recset;
-		recset.Open("SELECT * FROM Main ORDER BY lDate DESC");
-		if(!recset.IsEOF())
+		if(CGetSetOptions::GetCheckForMaxEntries())
 		{
-			recset.MoveLast();
-			
-			long lCount = recset.GetRecordCount();
-			
-			CClipIDs IDs;
-			
-			while((lCount > lMax) && (!recset.IsBOF()))
+			long lMax = CGetSetOptions::GetMaxEntries();
+			if(lMax >= 0)
 			{
-				//Only delete entries that have no shortcut and don't have the flag set
-				if(recset.m_lShortCut == 0 && recset.m_lDontAutoDelete == 0)
-					IDs.Add(recset.m_lID);
+				CClipIDs IDs;
 				
-				lCount--;
-				recset.MovePrev();
+				CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT lID, lShortCut, lDontAutoDelete FROM Main ORDER BY lDate DESC LIMIT -1 OFFSET %d"), lMax);			
+				while(q.eof() == false)
+				{
+					//Only delete entries that have no shortcut and don't have the flag set
+					if(q.getIntField(_T("lShortCut")) == 0 && q.getIntField(_T("lDontAutoDelete")) == 0)
+						IDs.Add(q.getIntField(_T("lID")));
+
+					q.nextRow();
+				}
+
+				IDs.DeleteIDs();
 			}
-			
-			IDs.DeleteIDs();
 		}
-	}
-	
-	if(CGetSetOptions::GetCheckForExpiredEntries())
-	{
-		long lExpire = CGetSetOptions::GetExpiredEntries();
 		
-		if(lExpire)
+		if(CGetSetOptions::GetCheckForExpiredEntries())
 		{
-			CTime now = CTime::GetCurrentTime();
-			now -= CTimeSpan(lExpire, 0, 0, 0);
-			
-			CMainTable recset;
-			recset.Open("SELECT * FROM Main "
-				"WHERE lDate < %d AND "
-				"lShortCut = 0 AND lDontAutoDelete = 0", now.GetTime());
-			
-			CClipIDs IDs;
+			long lExpire = CGetSetOptions::GetExpiredEntries();
 			
-			while(!recset.IsEOF())
+			if(lExpire)
 			{
-				IDs.Add(recset.m_lID);
-				recset.MoveNext();
+				CTime now = CTime::GetCurrentTime();
+				now -= CTimeSpan(lExpire, 0, 0, 0);
+				
+				CClipIDs IDs;
+				
+				CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT lID FROM Main ")
+													_T("WHERE lDate < %d AND ")
+													_T("lShortCut = 0 AND lDontAutoDelete = 0"), now.GetTime());
+
+				while(q.eof() == false)
+				{
+					IDs.Add(q.getIntField(_T("lID")));
+					q.nextRow();
+				}
+				
+				IDs.DeleteIDs();
 			}
-			
-			IDs.DeleteIDs();
 		}
 	}
+	CATCH_SQLITE_EXCEPTION
 	
 	return TRUE;
 }
 
 BOOL EnsureDirectory(CString csPath)
 {
-	char drive[_MAX_DRIVE];
-	char dir[_MAX_DIR];
-	char fname[_MAX_FNAME];
-	char ext[_MAX_EXT];
+	TCHAR drive[_MAX_DRIVE];
+	TCHAR dir[_MAX_DIR];
+	TCHAR fname[_MAX_FNAME];
+	TCHAR ext[_MAX_EXT];
 	
-	_splitpath(csPath, drive, dir, fname, ext);
+	SPLITPATH(csPath, drive, dir, fname, ext);
 	
 	CString csDir(drive);
 	csDir += dir;
 	
-	if(_access(csDir, 0) == -1)
+	if(FileExists(csDir) == FALSE)
 	{
 		if(CreateDirectory(csDir, NULL))
 			return TRUE;
@@ -606,66 +426,130 @@ BOOL EnsureDirectory(CString csPath)
 	return FALSE;
 }
 
-BOOL ExecuteSQL( CString csSQL, BOOL bReportError, CDaoException** ppEx )
-{
-	try
-	{
-		theApp.EnsureOpenDB();
-		theApp.m_pDatabase->Execute(csSQL, dbFailOnError);
-	}
-	catch(CDaoException* e)
-	{
-		if( bReportError )
-			e->ReportError();
-		
-		if( ppEx )
-			*ppEx = e;
-		else
-			e->Delete();
-		
-		return FALSE;
-	}
-	
-	return TRUE;
-}
+// BOOL RunZippApp(CString csCommandLine)
+// {
+// 	CString csLocalPath = GETENV(_T("U3_HOST_EXEC_PATH"));
+// 	FIX_CSTRING_PATH(csLocalPath);
+// 
+// 	CString csZippApp = GETENV(_T("U3_DEVICE_EXEC_PATH"));
+// 	FIX_CSTRING_PATH(csZippApp);
+// 	csZippApp += "7za.exe";
+// 
+// 	csZippApp += " ";
+// 	csZippApp += csCommandLine;
+// 
+// 	Log(csZippApp);
+// 
+// 	STARTUPINFO			StartupInfo;
+// 	PROCESS_INFORMATION	ProcessInformation;
+// 
+// 	ZeroMemory(&StartupInfo, sizeof(StartupInfo));
+// 	StartupInfo.cb = sizeof(StartupInfo);
+// 	ZeroMemory(&ProcessInformation, sizeof(ProcessInformation));
+// 
+// 	StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
+// 	StartupInfo.wShowWindow = SW_HIDE;
+// 
+// 	BOOL bRet = CreateProcess(NULL, csZippApp.GetBuffer(csZippApp.GetLength()), NULL, NULL, FALSE,
+// 			CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS, NULL, csLocalPath,
+// 			&StartupInfo, &ProcessInformation);
+// 
+// 	if(bRet)
+// 	{
+// 		WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
+// 
+// 		DWORD dwExitCode;
+// 		GetExitCodeProcess(ProcessInformation.hProcess, &dwExitCode);
+// 
+// 		CString cs;
+// 		cs.Format(_T("Exit code from unzip = %d"), dwExitCode);
+// 		Log(cs);
+// 
+// 		if(dwExitCode != 0)
+// 		{
+// 			bRet = FALSE;
+// 		}
+// 	}
+// 	else
+// 	{
+// 		bRet = FALSE;
+// 		Log(_T("Create Process Failed"));
+// 	}
+// 
+// 	csZippApp.ReleaseBuffer();
+// 
+// 	return bRet;
+// }
 
-int GetFieldPos(CDaoRecordset& recs, LPCTSTR fieldName)
-{
-	CDaoFieldInfo fi;
-	int count = recs.GetFieldCount();
-	
-	for( int i = 0; i < count; i++ )
-	{
-		recs.GetFieldInfo(i, fi);
-		if( fi.m_strName.Compare( fieldName ) == 0 )
-			return i; // when found a match, return it
-	}
-	
-	return -1;
-}
+// BOOL CopyDownDatabase()
+// {
+// 	BOOL bRet = FALSE;
+// 
+// 	CString csZippedPath = GETENV(_T("U3_APP_DATA_PATH"));
+// 	FIX_CSTRING_PATH(csZippedPath);
+// 	
+// 	CString csUnZippedPath = csZippedPath;
+// 	csUnZippedPath += "Ditto.db";
+// 
+// 	csZippedPath += "Ditto.7z";
+// 	
+// 	CString csLocalPath = GETENV(_T("U3_HOST_EXEC_PATH"));
+// 	FIX_CSTRING_PATH(csLocalPath);
+// 
+// 	if(FileExists(csZippedPath))
+// 	{
+// 		CString csCommandLine;
+// 
+// 		//e = extract
+// 		//surround command line arguments with quotes
+// 		//-aoa = overight files with extracted files
+// 
+// 		csCommandLine += "e ";
+// 		csCommandLine += "\"";
+// 		csCommandLine += csZippedPath;
+// 		csCommandLine += "\"";
+// 		csCommandLine += " -o";
+// 		csCommandLine += "\"";
+// 		csCommandLine += csLocalPath;
+// 		csCommandLine += "\"";
+// 		csCommandLine += " -aoa";
+// 
+// 		bRet = RunZippApp(csCommandLine);
+// 
+// 		csLocalPath += "Ditto.db";
+// 	}
+// 	else if(FileExists(csUnZippedPath))
+// 	{
+// 		csLocalPath += "Ditto.db";
+// 		bRet = CopyFile(csUnZippedPath, csLocalPath, FALSE);
+// 	}
+// 
+// 	if(FileExists(csLocalPath) == FALSE)
+// 	{
+// 		Log(_T("Failed to copy files from device zip file"));
+// 	}
+// 
+// 	g_Opt.nLastDbWriteTime = GetLastWriteTime(csLocalPath);
+// 
+// 	return bRet;
+// }
 
-void VerifyFieldPos(CDaoRecordset& recs, LPCTSTR fieldName, int index)
-{
-	CDaoFieldInfo fi;
-	int count = recs.GetFieldCount();
-	VERIFY( index >= 0 && index < count );
-	recs.GetFieldInfo(index, fi);
-	VERIFY( fi.m_strName.Compare( fieldName ) == 0 );
-}
+//BOOL CopyUpDatabase()
+//{
+//	CStringA csZippedPath = "C:\\";//getenv("U3_APP_DATA_PATH");
+//	FIX_CSTRING_PATH(csZippedPath);
+//	csZippedPath += "Ditto.zip";
 
-CString GetFieldList(CDaoRecordset& recs)
-{
-	CString field;
-	CString list;
-	CDaoFieldInfo fi;
-	int count = recs.GetFieldCount();
-	
-	for( int i = 0; i < count; i++ )
-	{
-		recs.GetFieldInfo(i, fi);
-		field = StrF("\n%d: ",i) + fi.m_strName;
-		list += field;
-	}
-	
-	return list;
-}
+//	CStringA csLocalPath = GetDBName();//getenv("U3_HOST_EXEC_PATH");
+//	//FIX_CSTRING_PATH(csLocalPath);
+//	//csLocalPath += "Ditto.db";
+//
+//	CZipper Zip;
+//
+//	if(Zip.OpenZip(csZippedPath))
+//	{
+//		Zip.AddFileToZip(csLocalPath);
+//	}
+//
+//	return TRUE;
+//}

+ 5 - 84
DatabaseUtilities.h

@@ -9,104 +9,25 @@
 #pragma once
 #endif // _MSC_VER > 1000
 
-#define DEFAULT_DB_NAME "DittoDB.mdb"
+#define DEFAULT_DB_NAME "Ditto.db"
 #define ERROR_OPENING_DATABASE	2
 
-#define CATCHDAO \
-	catch(CDaoException* e) \
-	{                       \
-		e->ReportError();   \
-		ASSERT(0);          \
-		e->Delete();        \
-	}
-
-class CDaoTableDefEx : public CDaoTableDef
-{
-public:
-	CDaoTableDefEx(CDaoDatabase* pDatabase)
-		:CDaoTableDef(pDatabase)
-	{
-	}
-
-	BOOL CreateIndex(BOOL bPrimaryKey, CString csField)
-	{
-		try
-		{
-			CDaoIndexInfo IndexInfo;
-			CDaoIndexFieldInfo IndexFieldInfo[1];
-			IndexFieldInfo[0].m_strName = csField;
-			IndexFieldInfo[0].m_bDescending = TRUE;
-			IndexInfo.m_strName = csField;
-			IndexInfo.m_pFieldInfos = IndexFieldInfo;
-			IndexInfo.m_nFields = 1;
-			IndexInfo.m_bPrimary = bPrimaryKey;
-			IndexInfo.m_bUnique = FALSE;
-			IndexInfo.m_bIgnoreNulls = FALSE;
-			IndexInfo.m_bRequired = FALSE;
-
-			CDaoTableDef::CreateIndex( IndexInfo );
-		}
-		catch(CDaoException *e)
-		{
-			ASSERT(FALSE);
-			e->Delete();
-			return FALSE;
-		}
-
-		return TRUE;
-	}
-
-	BOOL CreateField(LPCTSTR lpszName, short nType, long lSize, long lAttributes = 0, CString csDefault = "")
-	{
-		try
-		{
-			CDaoFieldInfo fieldinfo;
-
-			// Initialize everything so only correct properties will be set
-			fieldinfo.m_strName = lpszName;
-			fieldinfo.m_nType = nType;
-			fieldinfo.m_lSize = lSize;
-			fieldinfo.m_lAttributes = lAttributes;
-			fieldinfo.m_nOrdinalPosition = 0;
-			fieldinfo.m_bRequired = FALSE;
-			fieldinfo.m_bAllowZeroLength = FALSE;
-			fieldinfo.m_lCollatingOrder = 0;
-			fieldinfo.m_strDefaultValue = csDefault;
-
-			CDaoTableDef::CreateField(fieldinfo);
-
-			return TRUE;
-		}
-		catch(CDaoException *e)
-		{
-			e->Delete();
-			ASSERT(FALSE);
-		}
-
-		return FALSE;
-	}
-	
-};
-
 BOOL CreateBackup(CString csPath);
 CString GetDBName();
 CString GetDefaultDBName();
+BOOL OpenDatabase(CString csDB);
 
 BOOL CheckDBExists(CString csDBPath);
 BOOL ValidDB(CString csPath, BOOL bUpgrade=TRUE);
 BOOL CreateDB(CString csPath);
-BOOL Upgrade_mText(CDaoDatabase& db);
-BOOL Upgrade_Groups(CDaoDatabase& db);
-BOOL Upgrade_ShareData(CDaoDatabase& db);
 
 BOOL CompactDatabase();
 BOOL RepairDatabase();
 BOOL RemoveOldEntries();
 
 BOOL EnsureDirectory(CString csPath);
-BOOL ExecuteSQL(CString csSQL, BOOL bReportError = TRUE, CDaoException** ppEx = NULL);
-int GetFieldPos(CDaoRecordset& recs, LPCTSTR fieldName);
-void VerifyFieldPos(CDaoRecordset& recs, LPCTSTR fieldName, int index);
-CString GetFieldList(CDaoRecordset& recs);
+
+//BOOL CopyDownDatabase();
+//BOOL CopyUpDatabase();
 
 #endif // !defined(AFX_DATABASEUTILITES_H__039F53EB_228F_4640_8009_3D2B1FF435D4__INCLUDED_)

+ 310 - 0
Debug/Language/Dutch.xml

@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "2" Author = "Rob Meijer" Notes = "[email protected]">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Groepen</Item>		
+		<Item English_Text = "New Group Ctrl-F7" ID = "32811">Nieuwe Groep</Item>		
+		<Item English_Text = "New Group Selection F7" ID = "32812">Nieuwe Groep selectie</Item>		
+		<Item English_Text = "Move to Group" ID = "32840">Verplaats naar Groep</Item>		
+		<Item English_Text = "Quick Options" ID = "-1">Spoed Opties</Item>		
+		<Item English_Text = "Lines Per Row" ID = "-1">Regels per Rij</Item>		
+		<Item English_Text = "1" ID = "32807">1</Item>		
+		<Item English_Text = "2" ID = "32786">2</Item>		
+		<Item English_Text = "3" ID = "32787">3</Item>		
+		<Item English_Text = "4" ID = "32788">4</Item>		
+		<Item English_Text = "5" ID = "32789">5</Item>		
+		<Item English_Text = "Transparency" ID = "-1">Transparantie</Item>		
+		<Item English_Text = "None" ID = "32800">Geen</Item>		
+		<Item English_Text = "5 " ID = "32808">5</Item>		
+		<Item English_Text = "10 " ID = "32792">10</Item>		
+		<Item English_Text = "15 " ID = "32794">15</Item>		
+		<Item English_Text = "20 " ID = "32796">20</Item>		
+		<Item English_Text = "25 " ID = "32798">25</Item>		
+		<Item English_Text = "30 " ID = "32799">30</Item>		
+		<Item English_Text = "40 " ID = "32790">40</Item>		
+		<Item English_Text = "Positioning" ID = "-1">Positie</Item>		
+		<Item English_Text = "At Caret" ID = "32802">Bij letter/leesteken</Item>		
+		<Item English_Text = "At Cursor" ID = "32803">Bij de cursor</Item>		
+		<Item English_Text = "At Previous Position" ID = "32804">Bij vorige positie</Item>		
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Eerste 10 Sneltoetsen</Item>		
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Gebruik Ctrl - Num</Item>		
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Toon sneltoetsTekst</Item>		
+		<Item English_Text = "View Caption Bar On" ID = "-1">Positie Titelbalk</Item>		
+		<Item English_Text = "Top" ID = "32783">Boven</Item>		
+		<Item English_Text = "Right" ID = "32780">Rechts</Item>		
+		<Item English_Text = "Bottom" ID = "32781">Onder</Item>		
+		<Item English_Text = "Left" ID = "32782">Links</Item>		
+		<Item English_Text = "Sort" ID = "-1">Sorteren</Item>		
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Opklimmend (Laatste boven)</Item>		
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Afdalend Laatste onder)</Item>		
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Dubbelklik op Titelbalk</Item>		
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Altijd op de Voorgrond: aan/uit</Item>		
+		<Item English_Text = "Rolls-up Window" ID = "32815">Venster omhoog scrollen</Item>		
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">Omschrijving aan/uit</Item>		
+		<Item English_Text = "Always on Top Ctrl-Space" ID = "32784">Altijd op de Voorgrond</Item>		
+		<Item English_Text = "Auto Roll-up" ID = "32791">Altijd naar boven scrollen</Item>		
+		<Item English_Text = "Always Show Description" ID = "32813">Altijd omschrijving tonen</Item>		
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Naar nieuwe groepnamen vragen</Item>		
+		<Item English_Text = "Select Font" ID = "32844">Lettertype kiezen</Item>		
+		<Item English_Text = "Show Thumbnails" ID = "32845">Miniatuur afbeeldingen tonen</Item>		
+		<Item English_Text = "Draw RTF Text" ID = "32846">Gebruik RTF Tekst</Item>		
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Clip plakken na selecteren</Item>		
+		<Item English_Text = "Find As You Type" ID = "32848">Tijdens invoer gelijkwaardige vinden</Item>		
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Gehele venster is zichtbaar</Item>		
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Toon groeps-clip van de gemeenschappelijke lijst </Item>		
+		<Item English_Text = "Sent To" ID = "-1">Verzenden naar</Item>		
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - dezelfde computer</Item>		
+		<Item English_Text = "View Full Description	F3" ID = "32793">Complete omschrijving tonen F3</Item>		
+		<Item English_Text = "View Groups Ctrl-G" ID = "32819">Toon groepen</Item>		
+		<Item English_Text = "Paste Plain Text Only Shift-Enter" ID = "32841">Alleen platte tekst tonen</Item>		
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">HTML als platte tekst tonen</Item>		
+		<Item English_Text = "Delete Entry Del" ID = "32801">Wis toegang</Item>		
+		<Item English_Text = "Properties Alt-Enter" ID = "32776">Eigenschappen</Item>		
+		<Item English_Text = "Quick Properties" ID = "-1">Snelle instellingen</Item>		
+		<Item English_Text = "Never Auto Delete" ID = "32820">Nooit automatisch wissen aanzetten</Item>		
+		<Item English_Text = "Auto Delete" ID = "32821">Automatisch wissen</Item>		
+		<Item English_Text = "Remove Hot Key" ID = "32822">Sneltoets verwijderen</Item>		
+		<Item English_Text = "Options..." ID = "32805">Opties</Item>		
+		<Item English_Text = "Help" ID = "32842">Help</Item>		
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Verbinding met Klembord verbreken </Item>		
+		<Item English_Text = "Exit Program" ID = "32806">Programma afsluiten</Item>		
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852">Waarschuwen bij wissen</Item>	
+		<Item English_Text = "Import" ID = "32855">Importeren</Item>
+		<Item English_Text = "Export" ID = "32853">Exporteren</Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856">Verwijder benoemde clips</Item>	
+		<Item English_Text = "Edit Clip" ID = "32860">Clip bewerken</Item>
+		<Item English_Text = "New Clip" ID = "32867">Nieuwe Clip</Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>		
+		<Item English_Text = "Hot Key" ID = "2039">Sneltoets</Item>		
+		<Item English_Text = "Hot Key" ID = "2039">Sneltoets</Item>		
+		<Item English_Text = "Date" ID = "2040">Datum</Item>		
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Nooit automatisch wissen</Item>		
+		<Item English_Text = "Parse" ID = "1040">Analyseren</Item>		
+		<Item English_Text = "Move To Group" ID = "2041">Verplaatsen naar Groep</Item>		
+		<Item English_Text = "Item Title" ID = "2042">Titel clip</Item>		
+		<Item English_Text = "Copy Formats" ID = "2029">Kopiëer tekstformaat</Item>	
+		<Item English_Text = "Delete" ID = "1021">Wissen</Item>		
+		<Item English_Text = "OK" ID = "1">OK</Item>		
+		<Item English_Text = "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text = "Copy Properties" ID = "-1">Kopiëer Eigenschappen</Item>	
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>			
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Start Ditto als systeem start</Item>		
+		<Item English_Text = "Display Icon in Systeem Tray" ID = "2003">Toon pictogram in System Tray </Item>		
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Maximum aantal opgeslagen clips</Item>		
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Opgeslagen clips lopen af na</Item>	
+		<Item English_Text = "Days" ID = "2043">Dagen</Item>		
+		<Item English_Text = "Compact and Repair" ID = "1028">Komprimeren en repareren</Item>		
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Updates automatisch online zoeken</Item>		
+		<Item English_Text = "Check Now" ID = "1030">Check Nu</Item>		
+		<Item English_Text = "Allow Duplicates" ID = "1037">Duplicaten toestaan</Item>		
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Tijdstip van plakken bepaalt volgorde cliplijst</Item>		
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Diverse geslecteerde clips gelijktijdig plakken</Item>		
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Verberg Ditto met een sneltoets</Item>		
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Hoeveel tekst opslaan in de omschrijving? </Item>		
+		<Item English_Text = "On copy play the sound" ID = "2045">Speel geluidje af bij kopiëren</Item>		
+		<Item English_Text = "Play" ID = "2034">Speel</Item>		
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Geselecteerde clip plakken in het actieve venster</Item>		
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Maximale clipgrootte in bytes</Item>		
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(Onbeperkt: leeg laten)</Item>		
+		<Item English_Text = "Set Database Path" ID = "1034">Pad Database aangeven</Item>		
+		<Item English_Text = "Language" ID = "2069">Taal</Item>		
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Clips negeren, die X Milliseconden (1000 ms = 1 Sec) na de laatste clip optreden</Item>		
+		<Item English_Text = "About Language" ID = "2073">Kommentaar vertaling</Item>		
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Verkrijg zekerheid dat Ditto altijd verbinding maakt met het klembord</Item>		
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true">Algemeen</Item>	
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>			
+		<Item English_Text = "&Add" ID = "1015">&Toevoegen</Item>		
+		<Item English_Text = "&Delete" ID = "1016">&Wissen</Item>		
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Ondersteunde Formaten</Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>				
+		<Item English_Text = "Activate Ditto" ID = "2048">Ditto aktiveren</Item>		
+		<Item English_Text = "Win" ID = "2035">Win</Item>		
+		<Item English_Text = "Named Copy" ID = "2049">Benoemde Clip</Item>		
+		<Item English_Text = "Win" ID = "2036">Win</Item>		
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Globale sneltoetsen voor de laatste tien clips</Item>		
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Stuur ''plakken'' (anders wordt alleen de clip op het klembord geladen)</Item>		
+		<Item English_Text = "Position 1" ID = "2052">Positie 1</Item>		
+		<Item English_Text = "Position 2" ID = "2053">Positie 2</Item>		
+		<Item English_Text = "Position 3" ID = "2054">Positie 3</Item>		
+		<Item English_Text = "Position 4" ID = "2055">Positie 4</Item>		
+		<Item English_Text = "Position 5" ID = "2056">Positie 5</Item>		
+		<Item English_Text = "Position 6" ID = "2057">Positie 6</Item>		
+		<Item English_Text = "Position 7" ID = "2058">Positie 7</Item>		
+		<Item English_Text = "Position 8" ID = "2059">Positie 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Positie 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Positie 10</Item>	
+		<Item English_Text = "Win" ID = "2042">Win</Item>		
+		<Item English_Text = "Win" ID = "2043">Win</Item>		
+		<Item English_Text = "Win" ID = "2044">Win</Item>		
+		<Item English_Text = "Win" ID = "2045">Win</Item>		
+		<Item English_Text = "Win" ID = "2046">Win</Item>		
+		<Item English_Text = "Win" ID = "2037">Win</Item>		
+		<Item English_Text = "Win" ID = "2038">Win</Item>		
+		<Item English_Text = "Win" ID = "2039">Win</Item>		
+		<Item English_Text = "Win" ID = "2040">Win</Item>		
+		<Item English_Text = "Win" ID = "2041">Win</Item>		
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Vink de  Win-knop aan om de windowstoets te betrekken bij de sneltoetsen. </Item>		
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Sneltoetsen</Item>	
+
+		<Item English_Text = "Named Paste" ID = "2062">Benoemd Plakken</Item>	
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>			
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">Historie begint bovenaan de lijst (vs. onderaan)</Item>		
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Gebruik Ctrl - Num  voor de laatste 10 clips</Item>			
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Toon nummers voor de bovenste 10 clips</Item>		
+		<Item English_Text = "Show leading whitespace" ID = "2021">Toon eventuele voorloop spaties</Item>		
+		<Item English_Text = "Text Lines per Row" ID = "2062">Regels per rij</Item>		
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Transparantie van Cliplijst instellen</Item>		
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Toon miniatuur afbeeldingen (voor CF_DIB types) (kan PC langzamer maken)</Item>		
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Schrijf RTF Tekst in de clips (voor RTF types) (kan PC langzamer maken)</Item>		
+		<Item English_Text = "Find As You Type" ID = "2036">Zoek letterlijk</Item>		
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Gehele venster moet zichtbaar zijn</Item>		
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Toon Groepclips</Item>		
+		<Item English_Text = "Font" ID = "1040">Letterset</Item>		
+		<Item English_Text = "Default Font" ID = "2031">Vaste letterset</Item>		
+		<Item English_Text = "Popup Positioning" ID = "2063">Popup Positie</Item>		
+		<Item English_Text = "At Caret" ID = "2015">Bij letter/leesteken</Item>		
+		<Item English_Text = "At Cursor" ID = "2016">Bij de cursor</Item>		
+		<Item English_Text = "At Previous Position" ID = "2017">Bij de vorige positie</Item>		
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Uitleg van de tekens in het venster</Item>		
+		<Item English_Text = "  * = Don't Auto Delete\\n  s = Shortcut exists\\n G = Item is a Group\\n  ! = Item is attached to a Group" ID = "2065">* = Niet automatisch wissen\\n G = Clip is een groep\\n  ! =Clip behoort tot een groep</Item>		
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Snel Menu</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Waarschuwen bij wissen clips</Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>			
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Bij ontvangst van een IP of een computernaam uit deze lijst, wordt deze op het klembord gezet. In andere gevallen wordt de IP opgeslagen bij de bestaande clips, voor later gebruik.</Item>		
+		<Item English_Text =  "IP/Computer Names seperated by commas" ID = "2053">IP/Computernamen gescheiden door komma's </Item>	
+		<Item English_Text =  "Disable Recieving Clips" ID = "2026">Ontvangst clips uitschakelen </Item>	
+		<Item English_Text =  "Network Password" ID = "2054">Netwerk Wachtwoord </Item>	
+		<Item English_Text =  "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Verzoeke bij ontvangst van clips van een computer waarvan het netwerkwachtwoord niet deugt, extra netwerkwachtwoorden in te voeren, gescheiden door komma's </Item>	
+		<Item English_Text =  "Clips received" ID = "2067">Wachtwoorden ontvangen </Item>	
+		<Item English_Text =  "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Als ''Send all Copies'' geselecteerd is, zullen alle clips van deze computer worden verzonden naar de andere computer. Is dat commando niet geselecteerd, dan staat het alsnog in het rechtermuisklikmenu. </Item>	
+		<Item English_Text =  "Log Send Receive Commands" ID = "1042">Overzicht (log) van verzonden en ontvangen opdrachten </Item>	
+		<Item English_Text = "Receive Passwords" ID = "2056">Wachtwoorden ontvangen</Item>
+		<Item English_Text =  "Friends" ID = "-1" PropertyPage = "true"> Vrienden </Item>	
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>		
+		<Item English_Text =  "Send All Copies to this friend" ID = "1015">Alle clips verzenden</Item>	
+		<Item English_Text =  "IP/Name" ID = "2052">IP/Naam </Item>	
+		<Item English_Text =  "Description" ID = "2053"> Omschrijving </Item>	
+		<Item English_Text =  "Friend Details" ID = "-1"> Vriend </Item>	
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>		
+		<Item English_Text =  "Odometer" ID = "2052"> Odometer </Item>	
+		<Item English_Text =  "Trip Odometer" ID = "2053"> Sessie Odometer </Item>	
+		<Item English_Text =  "Copies" ID = "2054">Clips </Item>	
+		<Item English_Text =  "Pastes" ID = "2055">Plaksels </Item>	
+		<Item English_Text =  "Copies" ID = "2056">Clips </Item>	
+		<Item English_Text =  "Pastes" ID = "2057"> Plaksels </Item>	
+		<Item English_Text =  "Reset" ID = "1006"> Terugzetten </Item>	
+		<Item English_Text =  "Saved Copies" ID = "2058">Opgeslagen Clips</Item>	
+		<Item English_Text =  "Saved Copy Data" ID = "2059">Data van opgeslagen clips </Item>\f0\fs20		
+        <Item English_Text =  "Remove All" ID = "1013">Alles verwijderen </Item>	
+		<Item English_Text =  "Last Started" ID = "2060">Laatste start </Item>	
+		<Item English_Text =  "Database Size" ID = "2061"> Grootte Database </Item>	
+		<Item English_Text =  "Clips Sent" ID = "2066">Clips verzonden </Item>	
+		<Item English_Text =  "Clips received" ID = "2067">Clips ontvangen </Item>	
+		<Item English_Text =  "Since Last Start" ID = "2068">Sinds laatste start </Item>		
+	    <Item English_Text =  "Stats" ID = "-1" PropertyPage = "true"> statistiek</Item>	
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text =  "Main Types" ID = "2052">hoofd types </Item>	
+		<Item English_Text =  "Custom Type" ID = "2053">door gebruiker bepaald type </Item>		
+		<Item English_Text =  "Add" ID = "1020"> Toevoegen </Item>	
+		<Item English_Text =  "Currently on the Clipboard" ID = "2054">Momenteel op het klembord </Item>		
+		<Item English_Text =  "Add" ID = "1019"> Toevoegen </Item>	
+		<Item English_Text =  "Add" ID = "1021"> Toevoegen </Item>	
+		<Item English_Text =  "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text =  "Add Supported Type" ID = "-1">Ondersteund type toevoegen </Item>	
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>		
+		<Item English_Text = "New Group" ID = "1040">Nieuwe groep</Item>		
+		<Item English_Text = "OK" ID = "1">OK</Item>		
+		<Item English_Text = "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text = "Move to Group" ID = "-1">Verplaatsen naar groep</Item>
+	</Ditto_Move_To_Groups>
+	
+	<Ditto_String_Table>				
+		<Item English_Text = "General" ID = "GeneralTitle">Algemeen</Item>		
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Ondersteunde formaten</Item>		
+		<Item English_Text = "Stats" ID = "StatsTitle">Statistiek</Item>		
+		<Item English_Text = "Friends" ID = "FriendsTitle">Vrienden</Item>		
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Snel Menu</Item>		
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Sneltoetsen</Item>		
+		<Item English_Text = "About" ID = "AboutTitle">Over Ditto</Item>		
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Fout bij openen database</Item>		
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\\n\\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">Niet in staat DAO/Jet te initialiseren\\n Selecteer YES om DAO te downloaden van http://ditto-cp.sourceforge.net/dao_setup.exe\\n\\nHerstart DittO na installatie van DAO. </Item>		
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Onbekend database formaat</Item>		
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">bestand wordt opnieuw benoemd</Item>		
+		<Item English_Text = "and a new database will be created" ID = "New_Database">en een nieuwe database wordt aangemaakt</Item>		
+		<Item English_Text = "Updates available for Ditto.\\nVisit ditto-cp.sourceforge.net for details\\n\\nRunning Version" ID = "Updates_Available">Updates beschikbaar voor Ditto.\\nBezoek ditto-cp.sourceforge.net voor details\\n\\nhuidige versie </Item>		
+		<Item English_Text = "Update Version" ID = "Update_Version">Update Versie</Item>		
+		<Item English_Text = "Download updated version?" ID = "Download_Update">downloade update versie</Item>		
+		<Item English_Text = "No updates available" ID = "No_Updates">Geen updates beschikbaar</Item>		
+		<Item English_Text = "This will remove all Copy Entries!\\n\\nContinue?" ID = "Remove_All">Alle clip ingangen worden verwijderd</Item>		
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Verbinding met klembord beëindigd</Item>		
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Met klembord verbinden</Item>		
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Niet mogenlijk DAO/Jet db machine te initialiseren. DAO wordt nu geinstalleerd.\\n\\n Herstart Ditto na installatie van DAO.</Item>		
+		<Item English_Text = "NO TARGET" ID = "No_Target">geen bestemming</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Waarschuwen wanneer clips gewist worden</Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip">Geselecteerde clips wissen?</Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing">Foute import van geëxporteerde clip</Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing">Foute analyse van geëxporteerde clip</Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good">Clip op klembord geplaatst </Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully">Importeren geslaagd</Item>
+		<Item English_Text = "clip" ID = "Clip">Clip</Item>
+		<Item English_Text = "clips" ID = "Clips">Clips</Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc">Bij opslaan clip-omschrijving aanpassen?</Item>
+		<Item English_Text = "New Clip" ID = "New_Clip">Nieuwe clip</Item>
+		<Item English_Text = "Save" ID = "Save">Opslaan</Item>
+		<Item English_Text = "Save All" ID = "Save_All">Alles opslaan</Item>
+		<Item English_Text = "Close Current Tab" ID = "Close">Huidig tabblad sluiten</Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable">Deze clip kan niet bewerkt worden. Een clip moet voorkomen in de lijst van ondersteunde formaten</Item>
+		<Item English_Text = "to be editable" ID = "Editable">bewerkbaar</Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges">Wijzigingen opslaan?</Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving">Fout tijdens opslaan clip</Item>
+		<Item English_Text = "New" ID = "New">Nieuw</Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close">Opslaan, afsluiten en plaatsen op klembord</Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit">Ditto textverwerker</Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title">Ditto - Benoemd plakken</Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1">Fout tijdens laden van data</Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2">Tijdens benoemd plakken, clip onvindbaar</Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3">Bij uitzondering benoemde clip niet gevonden</Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title">Ditto - Clip benoemen</Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1">Opslaan benoemde clip in database mislukt</Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2">Bij uitzondering benoemde clip niet opgeslagen</Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3">Benoemde Clip niet ontvangen</Item> 
+		
+		<Item English_Text = "Send All Copies" ID = "Send_All_Copies">Zendt alle clips</Item>
+		<Item English_Text = "IP/Name" ID = "IP_Name">IP_Naam</Item>
+		<Item English_Text = "Descriptions" ID = "Descriptions">Omschrijvingen</Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>			
+		<Item English_Text = "OK" ID = "1">OK</Item>		
+		<Item English_Text = "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text = "Apply" ID = "12321">Toepassen</Item>	
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>			
+		<Item English_Text = "Show Quick Paste" ID = "32773">Toon Snelplakken</Item>		
+		<Item English_Text = "Options" ID = "32771">Opties</Item>		
+		<Item English_Text = "Help" ID = "32843">Help</Item>		
+		<Item English_Text = "Exit" ID = "32772">Exit</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854">Importeren</Item>
+		<Item English_Text = "New Clip" ID = "32868">Nieuwe Clip</Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 54 - 7
Debug/Language/English.xml

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="Ascii"?>
 <Ditto_Language_File Version = "1" Author = "Scott Brogden" Notes = "">
 	<Ditto_Right_Click_Menu>
 		<Item English_Text = "Groups" ID = "-1"></Item>
@@ -67,13 +67,21 @@
 		<Item English_Text = "Help" ID = "32842"></Item>
 		<Item English_Text = "Disconnect from Clipboard" ID = "32775"></Item>
 		<Item English_Text = "Exit Program" ID = "32806"></Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852"></Item>	
+		<Item English_Text = "Import" ID = "32855"></Item>
+		<Item English_Text = "Export" ID = "32853"></Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856"></Item>	
+		<Item English_Text = "Edit Clip" ID = "32860"></Item>
+		<Item English_Text = "New Clip" ID = "32867"></Item>	
+		
 	</Ditto_Right_Click_Menu>
 	<Ditto_Clip_Properties>
 		<Item English_Text = "Hot Key" ID = "2039"></Item>
 		<Item English_Text = "Hot Key" ID = "2039"></Item>
 		<Item English_Text = "Date" ID = "2040"></Item>
 		<Item English_Text = "&Never Auto Delete" ID = "1025"></Item>
-		<Item English_Text = "Parse" ID = "1040"></Item>
 		<Item English_Text = "Move To Group" ID = "2041"></Item>
 		<Item English_Text = "Item Title" ID = "2042"></Item>
 		<Item English_Text = "Copy Formats" ID = "2029"></Item>
@@ -164,6 +172,10 @@
 		<Item English_Text = "List Item Prefix Legend" ID = "2064"></Item>
 		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065"></Item>
 		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true"></Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		
 	</Ditto_Options_Quick_Paste>	
 	<Ditto_Options_Friends>
 		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052"></Item>
@@ -216,7 +228,6 @@
 		<Item English_Text = "Cancel" ID = "2"></Item>
 		<Item English_Text = "Move to Group" ID = "-1"></Item>
 	</Ditto_Move_To_Groups>
-	
 	<Ditto_String_Table>
 		<Item English_Text = "General" ID = "GeneralTitle"></Item>
 		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle"></Item>
@@ -235,10 +246,41 @@
 		<Item English_Text = "Download updated version?" ID = "Download_Update"></Item>			
 		<Item English_Text = "No updates available" ID = "No_Updates"></Item>			
 		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All"></Item>
-		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard"></Item>			
-		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard"></Item>			
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard"></Item>
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard"></Item>
 		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall"></Item>
-		<Item English_Text = "NO TARGET" ID = "No_Target"></Item>		
+		<Item English_Text = "NO TARGET" ID = "No_Target"></Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip"></Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing"></Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing"></Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good"></Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully"></Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc"></Item>
+		<Item English_Text = "New Clip" ID = "New_Clip"></Item>
+		<Item English_Text = "Save" ID = "Save"></Item>
+		<Item English_Text = "Save All" ID = "Save_All"></Item>
+		<Item English_Text = "Close Current Tab" ID = "Close"></Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable"></Item>
+		<Item English_Text = "to be editable" ID = "Editable"></Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges"></Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving"></Item>
+		<Item English_Text = "New" ID = "New"></Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close"></Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+				
 	</Ditto_String_Table>
 	<Ditto_Options_Sheet>
 		<Item English_Text = "OK" ID = "1"></Item>
@@ -249,6 +291,11 @@
 		<Item English_Text = "Show Quick Paste" ID = "32773"></Item>
 		<Item English_Text = "Options" ID = "32771"></Item>
 		<Item English_Text = "Help" ID = "32843"></Item>
-		<Item English_Text = "Exit" ID = "32772"></Item>	
+		<Item English_Text = "Exit" ID = "32772"></Item>
+
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854"></Item>
+		<Item English_Text = "New Clip" ID = "32868"></Item>
+		
 	</Ditto_Tray_Icon_Menu>
 </Ditto_Language_File>

+ 303 - 0
Debug/Language/Español.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "1" Author = "Victor Gascon" Notes = "http://www.vgascon.com">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Grupos</Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811">Nuevo Grupo</Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812">Elejir Nuevo Grupo -- F7</Item>
+		<Item English_Text = "Move to Group" ID = "32840">Mover al Grupo</Item>
+		<Item English_Text = "Quick Options" ID = "-1">Opciones Rapidas</Item>
+		<Item English_Text = "Lines Per Row" ID = "-1">Lineas por Fila</Item>
+		<Item English_Text = "1" ID = "32807"></Item>
+		<Item English_Text = "2" ID = "32786"></Item>
+		<Item English_Text = "3" ID = "32787"></Item>
+		<Item English_Text = "4" ID = "32788"></Item>
+		<Item English_Text = "5" ID = "32789"></Item>
+		<Item English_Text = "Transparency" ID = "-1">Transparencia</Item>
+		<Item English_Text = "None" ID = "32800">Nada</Item>
+		<Item English_Text = "5 " ID = "32808"></Item>
+		<Item English_Text = "10 " ID = "32792"></Item>
+		<Item English_Text = "15 " ID = "32794"></Item>
+		<Item English_Text = "20 " ID = "32796"></Item>
+		<Item English_Text = "25 " ID = "32798"></Item>
+		<Item English_Text = "30 " ID = "32799"></Item>
+		<Item English_Text = "40 " ID = "32790"></Item>
+		<Item English_Text = "Positioning" ID = "-1">Posicion</Item>
+		<Item English_Text = "At Caret" ID = "32802">Al Caret</Item>
+		<Item English_Text = "At Cursor" ID = "32803">Al Cursor</Item>
+		<Item English_Text = "At Previous Position" ID = "32804">La Posicion Anterior</Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Primeras Diez Teclas Rapidas</Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Usar Ctrl - Num</Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Mostrar Texto de Teclas Rapidas</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Ver Barra de Capcion</Item>
+		<Item English_Text = "Top" ID = "32783">Arriba</Item>
+		<Item English_Text = "Right" ID = "32780">Derecha</Item>
+		<Item English_Text = "Bottom" ID = "32781">Abajo</Item>
+		<Item English_Text = "Left" ID = "32782">Izquierda</Item>
+		<Item English_Text = "Sort" ID = "-1">Ordenar</Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Ascendiendo</Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Descendiendo</Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Doble Click en la Capcion</Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Palancas Siempre Arriba</Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815">Ventana Enredadora</Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">Palancas Siempre Muestran Descripcion</Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784">Siempre Visible	Ctrl-Espacio</Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791">Enredacion Automatica</Item>
+		<Item English_Text = "Always Show Description" ID = "32813">Siempre Mostrar Descripcion</Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Preguntar el Nombre de Nuevos Grupos</Item>
+		<Item English_Text = "Select Font" ID = "32844">Elejir Fuente</Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845">Mostrar Imajen</Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846">Dibujar Texto RTF</Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Incluir Clip Despues de la Seleccion</Item>
+		<Item English_Text = "Find As You Type" ID = "32848">Encontrar al Teclear</Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Asegurar Ventana Completa es Visible</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Mostrar Clips en los Grupos de la Lista Principal</Item>
+		<Item English_Text = "Sent To" ID = "-1">Mandar A</Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - mismo computador</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Ver Descripcion Completa -- F3</Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Ver Grupos -- Ctrl-G</Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Anadir Solo Texto Simple -- Shift-Enter</Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">Anadir HTML como Texto Simple</Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801">Remover Entrada</Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776">Propiedades	Alt-Enter</Item>
+		<Item English_Text = "Quick Properties" ID = "-1">Propiedades Rapidas</Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820">Nunca Remover Automaticamente</Item>
+		<Item English_Text = "Auto Delete" ID = "32821">Remover Automaticamente</Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822">Remover Tecla Rapida</Item>
+		<Item English_Text = "Options..." ID = "32805">Opciones...</Item>
+		<Item English_Text = "Help" ID = "32842">Ayuda</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Desconecatar del Clipboard</Item>
+		<Item English_Text = "Exit Program" ID = "32806">Salir del Programa</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852">Confirmar Remover el Clip</Item>	
+		<Item English_Text = "Import" ID = "32855">Importar</Item>
+		<Item English_Text = "Export" ID = "32853">Exportar</Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856">Remover Agregado Rapido</Item>	
+		<Item English_Text = "Edit Clip" ID = "32860">Editar Clip</Item>
+		<Item English_Text = "New Clip" ID = "32867">Nuevo Clip</Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039">Tecla Rapida</Item>
+		<Item English_Text = "Hot Key" ID = "2039">Tecla Rapida</Item>
+		<Item English_Text = "Date" ID = "2040">Fecha</Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Nunca Remover Automaticamente</Item>
+		<Item English_Text = "Move To Group" ID = "2041">Mover a Grupo</Item>
+		<Item English_Text = "Item Title" ID = "2042">Titulo</Item>
+		<Item English_Text = "Copy Formats" ID = "2029">Copiar Forma</Item>
+		<Item English_Text = "Delete" ID = "1021">Remover</Item>
+		
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Copy Properties" ID = "-1">Copiar Propiedades</Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Empezar Ditto con el Sistema</Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Mostrar Icon en la Bandeja</Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Maximo Numero de Copias Salvadas</Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Entradas Expiran despues de</Item>
+		<Item English_Text = "Days" ID = "2043">Dias</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Compactar y Reparar</Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Automaticament Detectar Actualizaciones</Item>
+		<Item English_Text = "Check Now" ID = "1030">Dectar Ahora</Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037">Permitir Duplicados</Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Actualizar Hora Cada Introduccion</Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Salvar Introducciones Multiples</Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Esconder Ditto con Teclas Rapidas si esta Visible</Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Cantidad de texto salvado para la descripcion</Item>
+		<Item English_Text = "On copy play the sound" ID = "2045">Al copiar usar sonido</Item>
+		<Item English_Text = "Play" ID = "2034">Sonar</Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Anadir Clip en Ventana Activa tras la seleccion</Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Maximo Dimension del Clip en Bytes</Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(En blanco para no limite)</Item>
+		<Item English_Text = "Set Database Path" ID = "1034">Entrar Database Path</Item>
+		<Item English_Text = "Language" ID = "2069">Idioma</Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Ignorar copias que ocurren X milisegundos de la ultima copia (1000 ms = 1 segundo)</Item>
+		<Item English_Text = "About Language" ID = "2073">Del Idioma</Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Aseguar que Ditto siempre esta conectado al clipboard</Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true"></Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015">&Anadir</Item>
+		<Item English_Text = "&Delete" ID = "1016">&Remover</Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Tipos Soportados</Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048">Activar Ditto</Item>
+		<Item English_Text = "Win" ID = "2035"></Item>
+		<Item English_Text = "Named Copy" ID = "2049">Copia Nombrada</Item>
+		<Item English_Text = "Win" ID = "2036"></Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Teclas Rapidas de las diez ultimas copias</Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Mandar Copia (O se mandara al clipboard)</Item>
+		<Item English_Text = "Position 1" ID = "2052">Posicion 1</Item>
+		<Item English_Text = "Position 2" ID = "2053">Posicion 2</Item>
+		<Item English_Text = "Position 3" ID = "2054">Posicion 3</Item>
+		<Item English_Text = "Position 4" ID = "2055">Posicion 4</Item>
+		<Item English_Text = "Position 5" ID = "2056">Posicion 5</Item>
+		<Item English_Text = "Position 6" ID = "2057">Posicion 6</Item>
+		<Item English_Text = "Position 7" ID = "2058">Posicion 7</Item>
+		<Item English_Text = "Position 8" ID = "2059">Posicion 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Posicion 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Posicion 10</Item>
+		<Item English_Text = "Win" ID = "2042"></Item>
+		<Item English_Text = "Win" ID = "2043"></Item>
+		<Item English_Text = "Win" ID = "2044"></Item>
+		<Item English_Text = "Win" ID = "2045"></Item>
+		<Item English_Text = "Win" ID = "2046"></Item>
+		<Item English_Text = "Win" ID = "2037"></Item>
+		<Item English_Text = "Win" ID = "2038"></Item>
+		<Item English_Text = "Win" ID = "2039"></Item>
+		<Item English_Text = "Win" ID = "2040"></Item>
+		<Item English_Text = "Win" ID = "2041"></Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Seleccionar el boton 'Win' para incluir la tecla Win en la tecla rapida.</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Atajo de Tecleado</Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">Historia Empieza al Tope de la lista (vs. al Fondo)</Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Usar Ctrl - Num para las primeras diez teclas rapidas</Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Mostrar texto de las primeras diez teclas rapidas</Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021">Mostrar espacio al principio</Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062">Lineas de texto por Fila</Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Permitir Transparencia en Copia Rapida</Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Mostrar Imajenes (para tipos RTF)  (Puede Incrementar Uso de Memoria y Velocidad de Exhibicion)</Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Dibujar Texto RTF en la Lista (para tipos RTF)  (Puede Incrementar Uso de Memoria y Velocidad de Exhibicion)</Item>
+		<Item English_Text = "Find As You Type" ID = "2036">Encontrar al Teclear</Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Asegurar Ventana Completa es Visible</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Mostrar Clips en los Grupos de la Lista Principal</Item>
+		<Item English_Text = "Font" ID = "1040">Fuente</Item>
+		<Item English_Text = "Default Font" ID = "2031">Fuente Normal</Item>
+		<Item English_Text = "Popup Positioning" ID = "2063">Posicion del Popup</Item>
+		<Item English_Text = "At Caret" ID = "2015">Al Caret</Item>
+		<Item English_Text = "At Cursor" ID = "2016">Al Cursos</Item>
+		<Item English_Text = "At Previous Position" ID = "2017">A la Posicion Anterior</Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Listar Leyenda Prefijo del Articulo</Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">* = No Remover Automaticamente\n  s = Ataj existe\n G = Articulo en Grupo\n  ! = Articulo Anadido a un Grupo</Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Anadir Rapidamente</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Avisar al remover clips</Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Cuando reciba una copia, si el IP o nomber de computador esta en esta lista, se pondra en el clipboard. De otra forma se pondra en los clips salvados para usarse mas tarde.</Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053">IP/Computadores separados por comas</Item>
+		<Item English_Text = "Disable Recieving Clips" ID = "2026">No Recibir Clips</Item>
+		<Item English_Text = "Network Password" ID = "2054">Contrasena de la Red</Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Contrasenas adicionales, separadas con comas, si recibe clips de computadores donde su contrasena no corresponde.</Item>
+		<Item English_Text = "Receive Passwords" ID = "2056">Recibir Contrasuenas</Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Si se elije 'Mandar Todas Copias' todas las copias de este computador se enviaran a la otra maquina. Si no solo estara en el click derecho el mandar una copia a el computador.</Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042">Registrar Comandos de Envios y Llegadas</Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true">Amigos</Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015">Mandar Todas Copias a este amigo</Item>
+		<Item English_Text = "IP/Name" ID = "2052">IP/Nombre</Item>
+		<Item English_Text = "Description" ID = "2053">Descripcion</Item>
+		<Item English_Text = "Friend Details" ID = "-1">Detallos</Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052">Odometro</Item>
+		<Item English_Text = "Trip Odometer" ID = "2053">Odometro de Viaje</Item>
+		<Item English_Text = "Copies" ID = "2054">Copias</Item>
+		<Item English_Text = "Pastes" ID = "2055">Introducciones</Item>
+		<Item English_Text = "Copies" ID = "2056">Copias</Item>
+		<Item English_Text = "Pastes" ID = "2057">Introducciones</Item>
+		<Item English_Text = "Reset" ID = "1006">Reajustar</Item>
+		<Item English_Text = "Saved Copies" ID = "2058">Copias Salvadas</Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059">Informacion de Copias Salvadas</Item>
+		<Item English_Text = "Remove All" ID = "1013">Remover Todas</Item>
+		<Item English_Text = "Last Started" ID = "2060">Ultimo Empiezo</Item>
+		<Item English_Text = "Database Size" ID = "2061">Tamano de Base de Datos</Item>
+		<Item English_Text = "Clips Sent" ID = "2066">Clips Mandados</Item>
+		<Item English_Text = "Clips received" ID = "2067">Clips Recibidos</Item>
+		<Item English_Text = "Since Last Start" ID = "2068">Desde Ultimo Empiezo</Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true">Stadisticas</Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052">Tipos Principales</Item>
+		<Item English_Text = "Custom Type" ID = "2053">Tipos Especiales</Item>
+		<Item English_Text = "Add" ID = "1020">Anadir</Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054">En el Clipboard Ahora</Item>
+		<Item English_Text = "Add" ID = "1019">Anadir</Item>
+		<Item English_Text = "Add" ID = "1021">Anadir</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Add Supported Type" ID = "-1">Anadir Tipo Soportado</Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040">Nuevo Grupo</Item>
+		<Item English_Text = "OK" ID = "1"></Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Move to Group" ID = "-1">Mover a Grupo</Item>
+	</Ditto_Move_To_Groups>
+	
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle"></Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Tipos Soportados</Item>
+		<Item English_Text = "Stats" ID = "StatsTitle">Statisticas</Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle">Amigos</Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Adicion Rapida</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Atayos de Teclado</Item>
+		<Item English_Text = "About" ID = "AboutTitle">Acerca</Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Error al Abrir la Base</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">No se puede inicializar la maquina de DAO/Jet.\nElija SI para recibir desde http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRe-empieze Ditto tras la instalacion de DAO.</Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Formato de Datos Irreconocible</Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">el archivo se nombrara</Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database">y una nueva base se creara</Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available">Hay una nueva version de Ditto.\nVisite ditto-cp.sourceforge.net para mas informacion\n\nVersion Actual</Item>
+		<Item English_Text = "Update Version" ID = "Update_Version">Actualizar la Version</Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update">Baje version actual?</Item>			
+		<Item English_Text = "No updates available" ID = "No_Updates">No hay novedades</Item>			
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All">Esto removera todas las Entradas!\n\nContinuar?</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Desconectar del Clipboard</Item>			
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Conectar al Clipboard</Item>			
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">No se puede inicializar la maquina de DAO/Jet. El DAO se instalara.\n\nRe-empieze Ditto tras la instalacion de DAO.</Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target">SIN BLANCO</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Avisar cuando remova clips</Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip">Remover Clips Seleccionados?</Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing">Error al importar clip exportado</Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing">Error pasando clip exportado</Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good">Clip puesto en el clipboard</Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully">Importado</Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc">Actualizar descripcion del clip al salvar?</Item>
+		<Item English_Text = "New Clip" ID = "New_Clip">Nuevo Clip</Item>
+		<Item English_Text = "Save" ID = "Save">Salvar Clip</Item>
+		<Item English_Text = "Save All" ID = "Save_All">Salvar Todos</Item>
+		<Item English_Text = "Close Current Tab" ID = "Close">Cerrar Esta Tab</Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable">Este articulo no es editable. El clip necesita un tipo de clip</Item>
+		<Item English_Text = "to be editable" ID = "Editable">para ser editable</Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges">Quiere salvar los cambios a</Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving">Error al salvar el clip</Item>
+		<Item English_Text = "New" ID = "New">Nuevo</Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close">Salvar, Cerrar y poner en el clipboard</Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit">Editor Ditto</Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1"></Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Apply" ID = "12321">Usar</Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773">Ensenar Anado Rapido</Item>
+		<Item English_Text = "Options" ID = "32771">Opciones</Item>
+		<Item English_Text = "Help" ID = "32843">Ayuda</Item>
+		<Item English_Text = "Exit" ID = "32772">Salir</Item>
+
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854">Importe</Item>
+		<Item English_Text = "New Clip" ID = "32868">Nuevo Clip</Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 303 - 0
Debug/Language/Français.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Ditto_Language_File Version = "1" Author = "Alain AUPEIX" Notes = "http://perso.wanadoo.fr/jujuland/">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Groupes</Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811">Nouveau Groupe Ctrl-F7</Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812">Sélection d'un nouveau groupe F7</Item>
+		<Item English_Text = "Move to Group" ID = "32840">Déplacer vers le groupe</Item>
+		<Item English_Text = "Quick Options" ID = "-1">Options rapides</Item>
+		<Item English_Text = "Lines Per Row" ID = "-1">Lignes x Colonnes</Item>
+		<Item English_Text = "1" ID = "32807">1</Item>
+		<Item English_Text = "2" ID = "32786">2</Item>
+		<Item English_Text = "3" ID = "32787">3</Item>
+		<Item English_Text = "4" ID = "32788">4</Item>
+		<Item English_Text = "5" ID = "32789">5</Item>
+		<Item English_Text = "Transparency" ID = "-1">Transparence</Item>
+		<Item English_Text = "None" ID = "32800">Aucun</Item>
+		<Item English_Text = "5 " ID = "32808">5</Item>
+		<Item English_Text = "10 " ID = "32792">10</Item>
+		<Item English_Text = "15 " ID = "32794">15</Item>
+		<Item English_Text = "20 " ID = "32796">20</Item>
+		<Item English_Text = "25 " ID = "32798">25</Item>
+		<Item English_Text = "30 " ID = "32799">30</Item>
+		<Item English_Text = "40 " ID = "32790">40</Item>
+		<Item English_Text = "Positioning" ID = "-1">Positionnement</Item>
+		<Item English_Text = "At Caret" ID = "32802">Au Caret</Item>
+		<Item English_Text = "At Cursor" ID = "32803">Au curseur</Item>
+		<Item English_Text = "At Previous Position" ID = "32804">A la position précédente</Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Dix premiers raccourcis clavier</Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Utiliser Ctrl-Num</Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Voir le libellé des raccourcis clavier</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Affichage de la barre de titre</Item>
+		<Item English_Text = "Top" ID = "32783">Haut</Item>
+		<Item English_Text = "Right" ID = "32780">Droite</Item>
+		<Item English_Text = "Bottom" ID = "32781">Bas</Item>
+		<Item English_Text = "Left" ID = "32782">Gauche</Item>
+		<Item English_Text = "Sort" ID = "-1">Tri</Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Ascendant</Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Descendant</Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Double-click sur la barre de titre</Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814">(Dés)Active le mode premier-plan</Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815">Déplier la fenêtre</Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">(Dés)Active l'affichage des descriptions</Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784">Toujours au premier-plan Ctrl-Space</Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791">(Dé)Pliage automatique de la fenêtre</Item>
+		<Item English_Text = "Always Show Description" ID = "32813">Toujours afficher les descriptions</Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Saisie des noms de nouveaux groupes</Item>
+		<Item English_Text = "Select Font" ID = "32844">Choix de la fonte</Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845">Voir les vignettes</Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846">Ecrire du texte RTF</Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Coller la copie après la sélection</Item>
+		<Item English_Text = "Find As You Type" ID = "32848">Rechercher le texte saisi</Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">S'assurer de l'entière visibilité de la fenêtre</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Montrer les copies des groupes de la liste principale</Item>
+		<Item English_Text = "Sent To" ID = "-1">Envoyer à  </Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - même machine</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Voir la description complete F3</Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Voir les groupes Ctrt-G</Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Coller en texte Shift-Enter</Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">Coller le HTML en texte</Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801">Supprimer l'entrée Suppr</Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776">Propriétés Alt-Enter</Item>
+		<Item English_Text = "Quick Properties" ID = "-1">Propriétés rapides</Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820">Pas de suppression automatique</Item>
+		<Item English_Text = "Auto Delete" ID = "32821">Suppression automatique</Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822">Supprimer le raccourci clavier</Item>
+		<Item English_Text = "Options..." ID = "32805">Options</Item>
+		<Item English_Text = "Help" ID = "32842">Aide</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Déconnecter le presse-papier</Item>
+		<Item English_Text = "Exit Program" ID = "32806">Quitter Ditto</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852">Confirmer les suppressions</Item>	
+		<Item English_Text = "Import" ID = "32855">Importer</Item>
+		<Item English_Text = "Export" ID = "32853">Exporter</Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856">Effacer le collage rapide</Item>	
+		<Item English_Text = "Edit Clip" ID = "32860">Editer la capture</Item>
+		<Item English_Text = "New Clip" ID = "32867">Nouvelle capture</Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039">Raccourci</Item>
+		<Item English_Text = "Hot Key" ID = "2039">Raccourci</Item>
+		<Item English_Text = "Date" ID = "2040">Date</Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Pas de suppression automatique</Item>
+		<Item English_Text = "Parse" ID = "1040">Parse</Item>
+		<Item English_Text = "Move To Group" ID = "2041">Déplacer vers un groupe</Item>
+		<Item English_Text = "Item Title" ID = "2042">Titre de l'élément</Item>
+		<Item English_Text = "Copy Formats" ID = "2029">Formats de copie</Item>
+		<Item English_Text = "Delete" ID = "1021">Supprimer</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Annuler</Item>
+		<Item English_Text = "Copy Properties" ID = "-1">Propriétés de la copie</Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Lancer Ditto au démarrage</Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Afficher l'icône dans la barre systeme</Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Nombre maxi de copies sauvegardées</Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Les entrées de collage expirent après </Item>
+		<Item English_Text = "Days" ID = "2043">jours</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Compacter et Réparer la base</Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Vérification automatique des mises à jour en ligne</Item>
+		<Item English_Text = "Check Now" ID = "1030">Vérifier maintenant</Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037">Autoriser les doublons</Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Mettre à jour la date de la copie au collage</Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Enregistrer les collages multiples</Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Cacher Ditto sur un raccourci si Ditto est visible</Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Quantité de texte à sauver pour les descriptions</Item>
+		<Item English_Text = "On copy play the sound" ID = "2045">Jouer un son à la copie</Item>
+		<Item English_Text = "Play" ID = "2034">Jouer</Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Coller la copie dans la fenêtre active après sélection</Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Taille maximale des copies en octets</Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(Laisser vide pour ne pas limiter)</Item>
+		<Item English_Text = "Set Database Path" ID = "1034">Définir le chemin de la base de données</Item>
+		<Item English_Text = "Language" ID = "2069">Langage</Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Ignorer les copies qui surviennent moins de X millisecondes après la dernière copie</Item>
+		<Item English_Text = "About Language" ID = "2073">A propos de la traduction</Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">S'assurer que Dito est toujours connecté au presse-papier</Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true">Général</Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015">Ajouter</Item>
+		<Item English_Text = "&Delete" ID = "1016">Supprimer</Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Types supportés </Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048">Activer Ditto</Item>
+		<Item English_Text = "Win" ID = "2035">Win</Item>
+		<Item English_Text = "Named Copy" ID = "2049">Copie nommée </Item>
+		<Item English_Text = "Win" ID = "2036">Win</Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Raccourci global pour les 10 dernières entrées copiées</Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Envoyer le collage (ou celui-ci sera juste chargé dans le presse-papier)</Item>
+		<Item English_Text = "Position 1" ID = "2052">Position 1</Item>
+		<Item English_Text = "Position 2" ID = "2053">Position 2</Item>
+		<Item English_Text = "Position 3" ID = "2054">Position 3</Item>
+		<Item English_Text = "Position 4" ID = "2055">Position 4</Item>
+		<Item English_Text = "Position 5" ID = "2056">Position 5</Item>
+		<Item English_Text = "Position 6" ID = "2057">Position 6</Item>
+		<Item English_Text = "Position 7" ID = "2058">Position 7</Item>
+		<Item English_Text = "Position 8" ID = "2059">Position 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Position 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Position 10</Item>
+		<Item English_Text = "Win" ID = "2042">Win</Item>
+		<Item English_Text = "Win" ID = "2043">Win</Item>
+		<Item English_Text = "Win" ID = "2044">Win</Item>
+		<Item English_Text = "Win" ID = "2045">Win</Item>
+		<Item English_Text = "Win" ID = "2046">Win</Item>
+		<Item English_Text = "Win" ID = "2037">Win</Item>
+		<Item English_Text = "Win" ID = "2038">Win</Item>
+		<Item English_Text = "Win" ID = "2039">Win</Item>
+		<Item English_Text = "Win" ID = "2040">Win</Item>
+		<Item English_Text = "Win" ID = "2041">Win</Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Cochez le bouton 'Win' pour utiliser la touche Windows dans vos raccourcis</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Raccourcis clavier</Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">L'historique débute en haut de la liste</Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Utiliser Ctrl-Num pour les raccourcis des 10 premières copies</Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Voir le texte pour les raccourcis des 10 premières copies</Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021">Voir les espaces en tête</Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062">Lignes de texte x Colonne</Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Valider la transparence du collage rapide</Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Voir les vignettes CF_DIB (Attention à la quantité mémoire utilisée et au temps d'affichage)</Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Dessiner les textes RTF dans la liste (Attention à la quantité mémoire utilisée et au temps d'affichage)</Item>
+		<Item English_Text = "Find As You Type" ID = "2036">Rechercher le texte saisi</Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">S'assurer de l'entière visibilité de la fenêtre</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Montrer les copies des groupes de la liste principale</Item>
+		<Item English_Text = "Font" ID = "1040">Fonte</Item>
+		<Item English_Text = "Default Font" ID = "2031">Fonte par défaut</Item>
+		<Item English_Text = "Popup Positioning" ID = "2063">Positionnement de la fenêtre</Item>
+		<Item English_Text = "At Caret" ID = "2015">au curseur souris</Item>
+		<Item English_Text = "At Cursor" ID = "2016">au curseur texte</Item>
+		<Item English_Text = "At Previous Position" ID = "2017">à la position précédente</Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Légende des préfixes dans la liste des éléments</Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">.    *      = Pas de suppression automatique\n.  s   = Le raccourci existe\n G = L'élement est un groupe\n.        !      = L'élément est rattaché à un groupe</Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Collage rapide</Item>
+		
+		//New strings added in 3.6 6-9-06
+<Item English_Text = "Prompt when deleting clips" ID = "2039">Confirmer les suppressions de copies</Item>
+				
+	</Ditto_Options_Quick_Paste>
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you receive a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Quand vous recevez une copie, si l'adresse IP ou le nom de l'ordinateur est dans la liste, celle-ci sera mise dans le presse-papier.  Sinon, elle sera enregistrée pour utilisation ultérieure.</Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053">IP/Nom des ordinateurs séparés par des virgules</Item>
+		<Item English_Text = "Disable Recieving Clips" ID = "2026">Désactiver la réception de copies</Item>
+		<Item English_Text = "Network Password" ID = "2054">Mot de passe réseau</Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Si vous recevez des copies d'ordinateurs pour lesquels, le mot de passe réseau ne convient pas, entrez des mots de passe additionnels séparés par des virgules</Item>
+		<Item English_Text = "Receive Passwords" ID = "2056">Recevoir des mots de passe</Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Si 'Envoyer toutes les copies' est sélectionné, alors toutes les copies de votre ordinateur seront envoyées au contact concerné.  Si cette option n'est pas sélectionnée, il sera alors possible, à l'aide du menu de clic-droit, de l'envoyer à ce contact.</Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042">Enregistrement dans un log des commandes d'envoi et de réception</Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true">Contacts</Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015">Envoyer toutes les copies à ce contact</Item>
+		<Item English_Text = "IP/Name" ID = "2052">IP/Nom</Item>
+		<Item English_Text = "Description" ID = "2053">Description</Item>
+		<Item English_Text = "Friend Details" ID = "-1">Détails du contact</Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052">Compteur</Item>
+		<Item English_Text = "Trip Odometer" ID = "2053">Compteur de session</Item>
+		<Item English_Text = "Copies" ID = "2054">Copies</Item>
+		<Item English_Text = "Pastes" ID = "2055">Collages</Item>
+		<Item English_Text = "Copies" ID = "2056">Copies</Item>
+		<Item English_Text = "Pastes" ID = "2057">Collages</Item>
+		<Item English_Text = "Reset" ID = "1006">Réinitialiser</Item>
+		<Item English_Text = "Saved Copies" ID = "2058">Copies sauvegardées</Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059">Données de copie sauvegardées</Item>
+		<Item English_Text = "Remove All" ID = "1013">Tout supprimer</Item>
+		<Item English_Text = "Last Started" ID = "2060">Dernier lancement</Item>
+		<Item English_Text = "Database Size" ID = "2061">Taille de la base de données</Item>
+		<Item English_Text = "Clips Sent" ID = "2066">Copies envoyées</Item>
+		<Item English_Text = "Clips received" ID = "2067">Copies reçues</Item>
+		<Item English_Text = "Since Last Start" ID = "2068">depuis le dernier lancement</Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true">Statistiques</Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052">Types principaux</Item>
+		<Item English_Text = "Custom Type" ID = "2053">Type personnalisé  </Item>
+		<Item English_Text = "Add" ID = "1020">Ajouter</Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054">En place dans le presse-papier</Item>
+		<Item English_Text = "Add" ID = "1019">Ajouter</Item>
+		<Item English_Text = "Add" ID = "1021">Ajouter</Item>
+		<Item English_Text = "Cancel" ID = "2">Annuler</Item>
+		<Item English_Text = "Add Supported Type" ID = "-1">Ajouter un type de copie</Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040">Nouveau groupe</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Annuler</Item>
+		<Item English_Text = "Move to Group" ID = "-1">Déplacer vers le groupe</Item>
+	</Ditto_Move_To_Groups>
+
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle">Général</Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Types supportés </Item>
+		<Item English_Text = "Stats" ID = "StatsTitle">Statistiques</Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle">Contacts</Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Collage rapide</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Raccourcis clavier</Item>
+		<Item English_Text = "About" ID = "AboutTitle">A propos</Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Erreur d'ouverture de la base de données.</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">Impossible d'initialiser le moteur de base DAO/Jet.\nSélectionnez OUI pour télécharger DAO depuis http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRedémarrez Ditto après installation de DAO.</Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Format de base de données inconnu</Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">le fichier sera renommé  </Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database">et une nouvelle base de données sera créée </Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available">Des mises à jour de Ditto sont disponibles.\nVisiter ditto-cp.sourceforge.net pour les détails\n\nVersion executée </Item>
+		<Item English_Text = "Update Version" ID = "Update_Version">Mise à jour de la version</Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update">Télécharger une mise a jour?</Item>
+		<Item English_Text = "No updates available" ID = "No_Updates">Aucune mise à jour n'est disponible</Item>
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All">Ceci effacera toutes vos copies!\n\nContinuer?</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Déconnecter le presse-papier</Item>
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Connecter le presse-papier</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Impossible d'initialiser le moteur de base DAO/Jet. DAO sera installé.\n\nRedémarrez Ditto après installation de DAO.</Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target">AUCUNE DESTINATION</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Confirmer les suppressions de copies</Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip">Effacer les copies sélectionnées?</Item>		
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing">Erreur lors de l'export de copie</Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing">Erreur d'analyse lors de l'export de copie</Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good">Copie placée dans le presse-papier</Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully">Import terminé avec succes</Item>
+		<Item English_Text = "clip" ID = "Clip">copie</Item>
+		<Item English_Text = "clips" ID = "Clips">copies</Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc">Mettre à jour la description de la copie lors de la sauvegarde?</Item>
+		<Item English_Text = "New Clip" ID = "New_Clip">Nouvelle copie</Item>
+		<Item English_Text = "Save" ID = "Save">Enregistrer</Item>
+		<Item English_Text = "Save All" ID = "Save_All">Enregistrer tout</Item>
+		<Item English_Text = "Close Current Tab" ID = "Close">Fermer l'onglet courant</Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable">L'élément courant n'est pas éditable. Une copie doit avoir un des types reconnus de copie</Item>
+		<Item English_Text = "to be editable" ID = "Editable">pour être éditable</Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges">Voulez-vous enregistrer les modifications de</Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving">Erreur à la sauvegarde de la copie</Item>
+		<Item English_Text = "New" ID = "New">Nouveau</Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close">Enregistrer, Fermer et placer dans le presse-papier</Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Annuler</Item>
+		<Item English_Text = "Apply" ID = "12321">Appliquer</Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773">Voir le collage rapide</Item>
+		<Item English_Text = "Options" ID = "32771">Options</Item>
+		<Item English_Text = "Help" ID = "32843">Aide</Item>
+		<Item English_Text = "Exit" ID = "32772">Quitter</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854">Importer</Item>
+		<Item English_Text = "New Clip" ID = "32868">Nouvelle copie</Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 303 - 0
Debug/Language/Polski.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "0.1" Author = "Radoslaw Szambelan" Notes = "Draft">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Grupy</Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811">Nowa Grupa	Ctrl-F7</Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812">Wybranie nowej grupy	F7</Item>
+		<Item English_Text = "Move to Group" ID = "32840">Przenies do grupy</Item>
+		<Item English_Text = "Quick Options" ID = "-1">Opcje</Item>
+		<Item English_Text = "Lines Per Row" ID = "-1">Ilosc linii w wierszu</Item>
+		<Item English_Text = "1" ID = "32807">1</Item>
+		<Item English_Text = "2" ID = "32786">2</Item>
+		<Item English_Text = "3" ID = "32787">3</Item>
+		<Item English_Text = "4" ID = "32788">4</Item>
+		<Item English_Text = "5" ID = "32789">5</Item>
+		<Item English_Text = "Transparency" ID = "-1">Przejrzystosc</Item>
+		<Item English_Text = "None" ID = "32800">Zaden</Item>
+		<Item English_Text = "5 " ID = "32808">5</Item>
+		<Item English_Text = "10 " ID = "32792">10</Item>
+		<Item English_Text = "15 " ID = "32794">15</Item>
+		<Item English_Text = "20 " ID = "32796">20</Item>
+		<Item English_Text = "25 " ID = "32798">25</Item>
+		<Item English_Text = "30 " ID = "32799">30</Item>
+		<Item English_Text = "40 " ID = "32790">40</Item>
+		<Item English_Text = "Positioning" ID = "-1">Pozycjonowanie</Item>
+		<Item English_Text = "At Caret" ID = "32802">Przy znaku karetki</Item>
+		<Item English_Text = "At Cursor" ID = "32803">Przy znaku kursora</Item>
+		<Item English_Text = "At Previous Position" ID = "32804">Na poprzedniej pozycji</Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Pierwsze 10 klawiszy skrotow</Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Uzyj Ctrl - numer</Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Pokaz opis klawiszy skrotow</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Pokaz pasek naglowka</Item>
+		<Item English_Text = "Top" ID = "32783">Gora</Item>
+		<Item English_Text = "Right" ID = "32780">Prawo</Item>
+		<Item English_Text = "Bottom" ID = "32781">Dol</Item>
+		<Item English_Text = "Left" ID = "32782">Lewo</Item>
+		<Item English_Text = "Sort" ID = "-1">Sortuj</Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Rosnaco (Ostatni na gorze)</Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Malejaco (Ostatni na dole)</Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Dwukrotne klikniecie na naglowek</Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Przelacza: Zawsze na wierzchu</Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815">Przewija okienko</Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">Przelacza: Pokaz zawsze opis</Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784">Zawsze na wierzchu	Ctrl-Space</Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791">Automatyczne przewijanie</Item>
+		<Item English_Text = "Always Show Description" ID = "32813">Zawsze pokazuj opis</Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Pytaj o nowe nazwy grup</Item>
+		<Item English_Text = "Select Font" ID = "32844">Wybierz czcionke</Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845">Pokaz miniatury</Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846">Pokazuj tekst RTF</Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Wklej klip po wybraniu </Item>
+		<Item English_Text = "Find As You Type" ID = "32848">Wyszukuj podczas pisania</Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Zapewnij widocznosc calego okienka</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Pokaz klipy bedace w grupach na liscie glownej</Item>
+		<Item English_Text = "Sent To" ID = "-1">Wyslij do</Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">192.168.1.101) - ten sam komputer</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Pokaz pelny opis	F3</Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Pokaz grupy	Ctrl-G</Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Wklej tylko tekst	Shift-Enter</Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">Wklej HTML jako tekst</Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801">Usun wpis	Del</Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776">Wlasciwosci</Item>
+		<Item English_Text = "Quick Properties" ID = "-1">Krotkie wlasciwosci</Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820">Nigdy nie usuwaj automatycznie</Item>
+		<Item English_Text = "Auto Delete" ID = "32821">Usuwanie automatyczne </Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822">Usun klawisz skrotu</Item>
+		<Item English_Text = "Options..." ID = "32805">Opcje...</Item>
+		<Item English_Text = "Help" ID = "32842">Pomoc</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Odlacz od schowka</Item>
+		<Item English_Text = "Exit Program" ID = "32806">Zakoncz program</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852"></Item>	
+		<Item English_Text = "Import" ID = "32855"></Item>
+		<Item English_Text = "Export" ID = "32853"></Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856"></Item>	
+		<Item English_Text = "Edit Clip" ID = "32860"></Item>
+		<Item English_Text = "New Clip" ID = "32867"></Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039">Klawisz skrotu</Item>
+		<Item English_Text = "Hot Key" ID = "2039">Klawisz skrotu</Item>
+		<Item English_Text = "Date" ID = "2040">Data</Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Nigdy nie usuwaj automatycznie</Item>
+		<Item English_Text = "Parse" ID = "1040">Parsuj</Item>
+		<Item English_Text = "Move To Group" ID = "2041">Przenies do grupy</Item>
+		<Item English_Text = "Item Title" ID = "2042">Tytul elementu</Item>
+		<Item English_Text = "Copy Formats" ID = "2029">Kopiuj formaty</Item>
+		<Item English_Text = "Delete" ID = "1021">Usun</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Anuluj</Item>
+		<Item English_Text = "Copy Properties" ID = "-1">Kopiuj wlasciwosci</Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Startuj Ditto przy starcie systemu</Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Pokaz ikone w Sytem Tray</Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Maksymalna ilosc skopiowanych elementow</Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Wklejone elementy staja sie niewazne po</Item>
+		<Item English_Text = "Days" ID = "2043">Dni</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Konsoliduj i naprawiaj</Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Sprawdz automatycznie dostepnosc nowych wersji online</Item>
+		<Item English_Text = "Check Now" ID = "1030">Sprawdz teraz</Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037">Pozwol na duplikaty</Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Aktualizuj czas klipu przy wklejeniu</Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Zachowuj multi-wklejenia</Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Ukryj Ditto klawiszem skrotu jezeli jest widoczny</Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Ilosc tektu do zachowania dla opisu</Item>
+		<Item English_Text = "On copy play the sound" ID = "2045">Odtwarzaj dzwiek przy kopiowaniu</Item>
+		<Item English_Text = "Play" ID = "2034">Odtwarzaj</Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Wklej klip do aktywnego okna po wybraniu</Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Maksymalna wielkosc klipu w bajtach</Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(Pozostaw puste jezeli bez limitu)</Item>
+		<Item English_Text = "Set Database Path" ID = "1034">Ustaw sciezke do bazy danych</Item>
+		<Item English_Text = "Language" ID = "2069">Jezyk</Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Ignoruj kopie ktore nastapily po X milisekundach od ostatniej kopii (1000 ms = 1 sec)</Item>
+		<Item English_Text = "About Language" ID = "2073">O jezyku</Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Zapewnij stale podlaczenie Ditto do schowka</Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true">Ogolne</Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015">$&Dodaj</Item>
+		<Item English_Text = "&Delete" ID = "1016">&Usun</Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Obslugiwane typy</Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048">Uaktywnij Ditto</Item>
+		<Item English_Text = "Win" ID = "2035">Win</Item>
+		<Item English_Text = "Named Copy" ID = "2049">Kopia z nazwa</Item>
+		<Item English_Text = "Win" ID = "2036">Win</Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Globalne skroty dla ostatnich dziesiecu skopiowanych elementow</Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Wyslij wklej (w innym wypadku po prostu zaladuj element to schowka)</Item>
+		<Item English_Text = "Position 1" ID = "2052">Pozycja 1</Item>
+		<Item English_Text = "Position 2" ID = "2053">Pozycja 2</Item>
+		<Item English_Text = "Position 3" ID = "2054">Pozycja 3</Item>
+		<Item English_Text = "Position 4" ID = "2055">Pozycja 4</Item>
+		<Item English_Text = "Position 5" ID = "2056">Pozycja 5</Item>
+		<Item English_Text = "Position 6" ID = "2057">Pozycja 6</Item>
+		<Item English_Text = "Position 7" ID = "2058">Pozycja 7</Item>
+		<Item English_Text = "Position 8" ID = "2059">Pozycja 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Pozycja 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Pozycja 10</Item>
+		<Item English_Text = "Win" ID = "2042">Win</Item>
+		<Item English_Text = "Win" ID = "2043">Win</Item>
+		<Item English_Text = "Win" ID = "2044">Win</Item>
+		<Item English_Text = "Win" ID = "2045">Win</Item>
+		<Item English_Text = "Win" ID = "2046">Win</Item>
+		<Item English_Text = "Win" ID = "2037">Win</Item>
+		<Item English_Text = "Win" ID = "2038">Win</Item>
+		<Item English_Text = "Win" ID = "2039">Win</Item>
+		<Item English_Text = "Win" ID = "2040">Win</Item>
+		<Item English_Text = "Win" ID = "2041">Win</Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Zaznacz 'Win' zeby dolaczyc klawisz windows do skrotu</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Skroty klawiaturowe</Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">Historia zaczyna sie na gorze listy</Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Uzyj Ctrl - Num zeby skorzytac z pierwszych dziesieciu skrotow kopiwania</Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Pokaz tekt dla pierwszych dziesieciu skrotow kopiwania</Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021">Pokazuj poczatkowe spacje</Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062">Ilosc linii tekstu w wierszu</Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Wlacz przejrzystosc szybkiego kopiowania</Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Pokaz miniatury (dla typu CF_DIB (moze zwiekszyc zuzycie pamieci i predkosc wyswetlania)</Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Pokazuj tekst RTF na liscie (for typu RTF) (moze zwiekszyc zuzycie pamieci i predkosc wyswetlania)</Item>
+		<Item English_Text = "Find As You Type" ID = "2036">Wyszukuj podczas pisania</Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Zapewnij widocznosc calego okna</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Pokazuj klipy bedace w grupach, na liscie glownej</Item>
+		<Item English_Text = "Font" ID = "1040">Czcionka</Item>
+		<Item English_Text = "Default Font" ID = "2031">Czcionka domyslna</Item>
+		<Item English_Text = "Popup Positioning" ID = "2063">Pozycjonowanie okienka wyskakujacego</Item>
+		<Item English_Text = "At Caret" ID = "2015">Przy karetce</Item>
+		<Item English_Text = "At Cursor" ID = "2016">Przy kursorze</Item>
+		<Item English_Text = "At Previous Position" ID = "2017">Na poprzedniej pozycji</Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Pokaz legende prefiksow elementow</Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">  * = Nie usuwaj automatycznie\n  s = Skrot istnieje\n G = Element to grupa\n  ! = Element nalezy do grupy</Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Szybkie wklejanie</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Jezeli otrzymujesz lub wysylasz kopie, jezeli jest na liscie ich IP, wtedy bedzie to umieszczone w schowku.  W przeciwnym wypadku bedzie umieszczone w zachowanych klipach do pozniejszego uzycia.</Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053">IP/Nazwy komputerow rozdzielone przecinkami</Item>
+		<Item English_Text = "Disable Recieving Clips" ID = "2026">Wylacz otrzymywanie klipow</Item>
+		<Item English_Text = "Network Password" ID = "2054">Haslo siecowe</Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Jezeli otrzymujsze klipy z komputerow gdzie nie pasuje twoje haslo sieciowe, wpisz dodatkowe hasla sieciowe oddzielone przecinkami</Item>
+		<Item English_Text = "Receive Passwords" ID = "2056">Otrzymuj hasla</Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Jezeli wyslij wszystkie kopie jest wybrane wtedy wszystkie kopie z tego komputera beda wyslane do innego komputera.  Jezeli to nie jest wybrane to wysylanie kopii do innego komputera bedzie tylko mozliwe przez menu pod prawym klawiszem myszki.</Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042">Rejestruj komendy wyslij/odbierz.</Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true">Przyjaciele</Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015">Wyslij wszystkie kopie do tego Przyjaciela</Item>
+		<Item English_Text = "IP/Name" ID = "2052">IP/Nazwa</Item>
+		<Item English_Text = "Description" ID = "2053">Opis</Item>
+		<Item English_Text = "Friend Details" ID = "-1">Detale przyjaciela</Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052">Odleglosciomierz</Item>
+		<Item English_Text = "Trip Odometer" ID = "2053">Odleglosciomierz dla wycieczki</Item>
+		<Item English_Text = "Copies" ID = "2054">Kopii</Item>
+		<Item English_Text = "Pastes" ID = "2055">Wklejen</Item>
+		<Item English_Text = "Copies" ID = "2056">Kopii</Item>
+		<Item English_Text = "Pastes" ID = "2057">Wklejen</Item>
+		<Item English_Text = "Reset" ID = "1006">Kasuj</Item>
+		<Item English_Text = "Saved Copies" ID = "2058">Zachowanych kopii</Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059">Zachowanych skopiowanych danych</Item>
+		<Item English_Text = "Remove All" ID = "1013">Usun wszystkie</Item>
+		<Item English_Text = "Last Started" ID = "2060">Ostatnio uruchmiony</Item>
+		<Item English_Text = "Database Size" ID = "2061">Wielkosc bazy danych</Item>
+		<Item English_Text = "Clips Sent" ID = "2066">Ilosc wyslanych klipow</Item>
+		<Item English_Text = "Clips received" ID = "2067">Ilosc odebranych klipow</Item>
+		<Item English_Text = "Since Last Start" ID = "2068">Od ostatniego startu</Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true">Statystyki</Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052">Glowne typy</Item>
+		<Item English_Text = "Custom Type" ID = "2053">Typy uzytkownika</Item>
+		<Item English_Text = "Add" ID = "1020">Dodaj</Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054">Obecnie w schowku</Item>
+		<Item English_Text = "Add" ID = "1019">Dodaj</Item>
+		<Item English_Text = "Add" ID = "1021">Dodaj</Item>
+		<Item English_Text = "Cancel" ID = "2">Usun</Item>
+		<Item English_Text = "Add Supported Type" ID = "-1">Dodaj obslugiwany typ</Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040">Nowa grupa</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Anuluj</Item>
+		<Item English_Text = "Move to Group" ID = "-1">Przenies do grupy</Item>
+	</Ditto_Move_To_Groups>
+	
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle">Ogolny</Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Obslugiwane typy</Item>
+		<Item English_Text = "Stats" ID = "StatsTitle">Statystyki</Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle">Przyjaciele</Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Szybkie wklejanie</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Skroty klawiaturowe</Item>
+		<Item English_Text = "About" ID = "AboutTitle">O programie</Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Blad otwarcia bazy danych</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">Nie mozna zainicjalizowac DAO/Jet db engine.\nWybierz Yes zeby sciagnac DAO z http://ditto-cp.sourceforge.net/dao_setup.exe\n\nZrestartuj Ditto po instalacji DAO.</Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Nierozpoznany format bazy danych</Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">nazwa pliku zostanie zmieniona</Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database">i nowa baza danych bedzie utworzona</Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available">Dostepne nowa wersja Ditto.\nOdwiedz ditto-cp.sourceforge.net zeby dowiedzec sie wiecej\n\nAktualna wersja</Item>
+		<Item English_Text = "Update Version" ID = "Update_Version">Nowa wersja</Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update">Sciagnac nowa wersje?</Item>			
+		<Item English_Text = "No updates available" ID = "No_Updates">Nie ma nowych wersji</Item>			
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All">Ta operacja usunie wszystkie skopiowane elementy!\n\nKontynuowac?</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Odlacz od schowka</Item>			
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Podlacz do schowka</Item>			
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Nie mozna zainicjalizowac DAO/Jet db engine.  DAO zostanie teraz zainstalowane.\n\nZrestartuj Ditto po instalacji DAO.</Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target"></Item>		
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip"></Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing"></Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing"></Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good"></Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully"></Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc"></Item>
+		<Item English_Text = "New Clip" ID = "New_Clip"></Item>
+		<Item English_Text = "Save" ID = "Save"></Item>
+		<Item English_Text = "Save All" ID = "Save_All"></Item>
+		<Item English_Text = "Close Current Tab" ID = "Close"></Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable"></Item>
+		<Item English_Text = "to be editable" ID = "Editable"></Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges"></Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving"></Item>
+		<Item English_Text = "New" ID = "New"></Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close"></Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Anuluj</Item>
+		<Item English_Text = "Apply" ID = "12321">Zastosuj</Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773">Pokaz szybkie wklejanie</Item>
+		<Item English_Text = "Options" ID = "32771">Opcje</Item>
+		<Item English_Text = "Help" ID = "32843">Pomoc</Item>
+		<Item English_Text = "Exit" ID = "32772">Wyjscie</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854"></Item>
+		<Item English_Text = "New Clip" ID = "32868"></Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 50 - 1
Debug/Language/Portuguese.xml

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="Ascii"?>
 <Ditto_Language_File Version = "1" Author = "Hélder Podence" Notes = "">
 	<Ditto_Right_Click_Menu>
 		<Item English_Text = "Groups" ID = "-1">Grupos</Item>
@@ -67,6 +67,15 @@
 		<Item English_Text = "Help" ID = "32842">Ajuda</Item>
 		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Desligar do clipboard</Item>
 		<Item English_Text = "Exit Program" ID = "32806">Saír do Ditto</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852"></Item>	
+		<Item English_Text = "Import" ID = "32855"></Item>
+		<Item English_Text = "Export" ID = "32853"></Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856"></Item>	
+		<Item English_Text = "Edit Clip" ID = "32860"></Item>
+		<Item English_Text = "New Clip" ID = "32867"></Item>	
+		
 	</Ditto_Right_Click_Menu>
 	<Ditto_Clip_Properties>
 		<Item English_Text = "Hot Key" ID = "2039">Atalho</Item>
@@ -164,6 +173,10 @@
 		<Item English_Text = "List Item Prefix Legend" ID = "2064">Convenção dos sinais por baixo da janela</Item>
 		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">* = Sem supressão automática\n s = Atalho associado\n G = Este item é um grupo\n ! = Esta cópia faz parte dum grupo\n </Item>
 		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Regularizações rápidas</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		
 	</Ditto_Options_Quick_Paste>	
 	<Ditto_Options_Friends>
 		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Quando recebe uma cópia deste computador, se o IP está na lista, a cópia será aceita. No caso oposto, ficara no PC de origem para ser utilizada mais tarde. Nomeia os IP separados por vírgulas. </Item>
@@ -239,6 +252,37 @@
 		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Ligar ao clipboard</Item>
 		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Incapaz de inicializar o motor DAO/Jet. O DAO vaí ser instalado.\n\nArranque novamente o Ditto depois da instalação do DAO.</Item>
 		<Item English_Text = "NO TARGET" ID = "No_Target">Sem alvo</Item>		
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip"></Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing"></Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing"></Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good"></Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully"></Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc"></Item>
+		<Item English_Text = "New Clip" ID = "New_Clip"></Item>
+		<Item English_Text = "Save" ID = "Save"></Item>
+		<Item English_Text = "Save All" ID = "Save_All"></Item>
+		<Item English_Text = "Close Current Tab" ID = "Close"></Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable"></Item>
+		<Item English_Text = "to be editable" ID = "Editable"></Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges"></Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving"></Item>
+		<Item English_Text = "New" ID = "New"></Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close"></Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
 	</Ditto_String_Table>
 	<Ditto_Options_Sheet>
 		<Item English_Text = "OK" ID = "1">OK</Item>
@@ -250,5 +294,10 @@
 		<Item English_Text = "Options" ID = "32771">Opções</Item>
 		<Item English_Text = "Help" ID = "32843">Ajuda</Item>
 		<Item English_Text = "Exit" ID = "32772">Saír </Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854"></Item>
+		<Item English_Text = "New Clip" ID = "32868"></Item>
+		
 	</Ditto_Tray_Icon_Menu>
 </Ditto_Language_File>

BIN
Debug/focus.dll


BIN
Debug/focus.lib


BIN
Debug/sqlite3.dll


+ 319 - 0
DittoRulerRichEditCtrl.cpp

@@ -0,0 +1,319 @@
+#include "stdafx.h"
+#include "clip.h"
+#include "CP_Main.h"
+#include "TextConvert.h"
+#include ".\dittorulerricheditctrl.h"
+#include "CopyProperties.h"
+
+CDittoRulerRichEditCtrl::CDittoRulerRichEditCtrl(void)
+{
+	m_SaveTypes = stNONE;
+	m_lID = -1;
+}
+
+CDittoRulerRichEditCtrl::~CDittoRulerRichEditCtrl(void)
+{
+}
+
+bool CDittoRulerRichEditCtrl::LoadItem(long lID, CString csDesc)
+{	
+	bool bSetText = false;
+	CClipFormat Clip;
+	m_lID = lID;
+	m_csDescription = csDesc;
+	
+	//If creating a new clip
+	if(m_lID < 0)
+	{
+		m_SaveTypes = stCF_UNICODETEXT|stRTF;
+		m_rtf.SetModify(FALSE);
+		return false;
+	}
+
+	m_SaveTypes = GetTypeFlags(m_lID);
+
+	if(m_SaveTypes == stNONE)
+	{
+		CString csFirst = theApp.m_Language.GetString("NotEditable", "Current Item is not editable.  A clip must have one of the clip types");
+		CString csSecond = theApp.m_Language.GetString("Editable", "to be editable");
+
+		CString cs;
+		cs.Format(_T("%s\n\n")
+					_T("- Rich Text\n")
+					_T("- CF_TEXT\n")
+					_T("- CF_UNICODETEXT\n\n")
+					_T("%s."), csFirst, csSecond);
+		SetText(cs);
+		SetReadOnly(TRUE);
+		m_rtf.SetModify(FALSE);
+		return false;
+	}
+
+	Clip.m_cfType = RegisterClipboardFormat(CF_RTF);
+	if(theApp.GetClipData(lID, Clip) && Clip.m_hgData)
+	{
+		LPVOID pvData = GlobalLock(Clip.m_hgData);
+		if(pvData)
+		{
+			SetRTF((char*)pvData);
+			bSetText = true;
+		}
+
+		GlobalUnlock(Clip.m_hgData);
+
+		Clip.Free();
+		Clip.Clear();
+	}
+
+	if(bSetText == false)
+	{
+		Clip.m_cfType = CF_UNICODETEXT;
+		if(theApp.GetClipData(lID, Clip) && Clip.m_hgData)
+		{
+			LPVOID pvData = GlobalLock(Clip.m_hgData);
+			if(pvData)
+			{
+				CString csText = (WCHAR*)pvData;
+				SetText(csText);
+				bSetText = true;
+			}
+
+			GlobalUnlock(Clip.m_hgData);
+
+			Clip.Free();
+			Clip.Clear();
+		}
+	}
+
+	if(bSetText == false)
+	{
+		Clip.m_cfType = CF_TEXT;
+		if(theApp.GetClipData(lID, Clip) && Clip.m_hgData)
+		{
+			LPVOID pvData = GlobalLock(Clip.m_hgData);
+			if(pvData)
+			{
+				CString csText = (char*)pvData;
+				SetText(csText);
+
+				bSetText = true;
+			}
+
+			GlobalUnlock(Clip.m_hgData);
+
+			Clip.Free();
+			Clip.Clear();
+		}
+	}
+
+	m_rtf.SetModify(FALSE);
+
+	return bSetText;
+}
+
+long CDittoRulerRichEditCtrl::GetTypeFlags(long lID)
+{
+	long lRet = stNONE;
+
+	try
+	{
+		CLIPFORMAT cfType = CF_TEXT;
+		CppSQLite3Query q = theApp.m_db.execQueryEx(_T("SELECT lID FROM Data WHERE lParentID = %d AND strClipboardFormat = '%s'"), lID, GetFormatName(cfType));
+		if(q.eof() == false)
+		{
+			lRet |= stCF_TEXT;
+		}
+
+		cfType = CF_UNICODETEXT;
+		q = theApp.m_db.execQueryEx(_T("SELECT lID FROM Data WHERE lParentID = %d AND strClipboardFormat = '%s'"), lID, GetFormatName(cfType));
+		if(q.eof() == false)
+		{
+			lRet |= stCF_UNICODETEXT;
+		}
+
+		cfType = RegisterClipboardFormat(_T("Rich Text Format"));
+		q = theApp.m_db.execQueryEx(_T("SELECT lID FROM Data WHERE lParentID = %d AND strClipboardFormat = '%s'"), lID, GetFormatName(cfType));
+		if(q.eof() == false)
+		{
+			lRet |= stRTF;
+		}
+	}
+	CATCH_SQLITE_EXCEPTION
+
+	return lRet;
+}
+
+void CDittoRulerRichEditCtrl::d()
+{
+	CString cs = m_rtf.GetText();
+	CString s;
+	s.Format(_T("error = %d, %s"), GetLastError(), cs);
+	MessageBox(s);
+}
+
+int CDittoRulerRichEditCtrl::SaveToDB(BOOL bUpdateDesc)
+{
+	int nRet = FALSE;
+	if(m_SaveTypes == stNONE && m_lID >= 0)
+	{
+		return DIDNT_NEED_TO_SAVE;
+	}
+
+	if(m_rtf.GetModify() == FALSE)
+	{
+		Log(_T("Clip has not been modified"));
+		return DIDNT_NEED_TO_SAVE;
+	}
+
+	bool bSetModifyToFalse = true;
+	try
+	{
+		CClip Clip;
+		Clip.m_ID = m_lID;
+		if(m_SaveTypes & stRTF)
+		{
+			LoadRTFData(Clip);
+		}
+
+		if(m_SaveTypes & stCF_TEXT || m_SaveTypes & stCF_UNICODETEXT)
+		{
+			LoadTextData(Clip);
+		}
+
+		if(Clip.m_Formats.GetSize() <= 0)
+		{
+			return FALSE;
+		}
+
+		theApp.m_db.execDML(_T("begin transaction;"));
+
+		if(m_lID >= 0)
+		{
+			Clip.SaveFromEditWnd(bUpdateDesc);
+		}
+		else
+		{
+			bSetModifyToFalse = false;
+			Clip.MakeLatestTime();
+			CCopyProperties Prop(-1, this, &Clip);
+			Prop.SetHandleKillFocus(true);
+			Prop.SetToTopMost(false);
+			if(Prop.DoModal() == IDOK)
+			{
+				Clip.AddToDB();
+				m_csDescription = Clip.m_Desc;
+				m_lID = Clip.m_ID;
+				bUpdateDesc = TRUE;
+				bSetModifyToFalse = true;
+			}
+		}
+
+		nRet = SAVED_CLIP_TO_DB;
+
+		theApp.m_db.execDML(_T("commit transaction;"));
+
+		if(bUpdateDesc)
+			theApp.RefreshView();
+	}
+	CATCH_SQLITE_EXCEPTION
+
+	if(bSetModifyToFalse)
+		m_rtf.SetModify(FALSE);
+
+	return nRet;
+}
+
+bool CDittoRulerRichEditCtrl::LoadRTFData(CClip &Clip)
+{
+	CString csRTFOriginal = GetRTF();
+	if(csRTFOriginal.IsEmpty())
+	{
+		Log(_T("Rtf is empty, returning"));
+		return false;
+	}
+
+	CStringA csRTF = CTextConvert::ConvertToChar(csRTFOriginal);
+	CClipFormat format;
+	format.m_cfType = RegisterClipboardFormat(_T("Rich Text Format"));
+	int nLength = csRTF.GetLength() + 1;
+	format.m_hgData = NewGlobalP(csRTF.GetBuffer(nLength), nLength);
+	Clip.m_Formats.Add(format);
+	format.m_hgData = NULL; //Clip.m_formats owns data now
+
+	return true;
+}
+
+bool CDittoRulerRichEditCtrl::LoadTextData(CClip &Clip)
+{
+	CString csText = GetText();
+	if(csText.IsEmpty())
+	{
+		for(int i = 0; i < 20; i++)
+		{
+			Sleep(100);
+			csText = GetText();
+			if(csText.IsEmpty() == FALSE)
+				break;
+
+			Log(StrF(_T("Get Text still empty pass = %d"), i));
+		}
+		if(csText.IsEmpty())
+		{
+			Log(_T("Get Text still empty pass returning"));
+			return false;
+		}
+	}
+
+	CClipFormat format;
+
+#ifdef _UNICODE
+	format.m_cfType = CF_UNICODETEXT;
+#else
+	format.m_cfType = CF_TEXT;
+#endif
+
+	int nLength = csText.GetLength() * sizeof(TCHAR) + sizeof(TCHAR);
+	format.m_hgData = NewGlobalP(csText.GetBuffer(nLength), nLength);
+
+	Clip.SetDescFromText(format.m_hgData);
+	m_csDescription = Clip.m_Desc;
+	m_csDescription = m_csDescription.Left(15);
+
+	Clip.m_Formats.Add(format);
+	format.m_hgData = NULL; //Clip.m_formats owns data now
+
+	return true;
+}
+
+bool CDittoRulerRichEditCtrl::CloseEdit(bool bPrompt, BOOL bUpdateDesc)
+{
+	if(m_rtf.GetModify())
+	{		
+		int nRet = IDYES;
+		
+		if(bPrompt)
+		{
+			CString cs;
+			cs.Format(_T("%s '%s'"), theApp.m_Language.GetString("SaveChanges", "Do you want to save changes to"), m_csDescription);
+
+			::SetForegroundWindow(m_hWnd);
+			nRet = MessageBox(cs, _T("Ditto"), MB_YESNOCANCEL);
+		}
+
+		if(nRet == IDYES)
+		{
+			if(SaveToDB(bUpdateDesc) == false)
+			{
+				CString cs;
+				cs.Format(_T("%s '%s'"), theApp.m_Language.GetString("ErrorSaving", "Error saving clip"), m_csDescription);
+				MessageBox(cs, _T("Ditto"), MB_OK);
+			}
+		}
+		else if(nRet == IDCANCEL)
+		{
+			return false;
+		}
+	}
+
+	return true;
+}

+ 30 - 0
DittoRulerRichEditCtrl.h

@@ -0,0 +1,30 @@
+#pragma once
+#include "rulerricheditctrl\rulerricheditctrl.h"
+
+#define SAVED_CLIP_TO_DB	1
+#define DIDNT_NEED_TO_SAVE	2
+class CDittoRulerRichEditCtrl :	public CRulerRichEditCtrl
+{
+public:
+	CDittoRulerRichEditCtrl(void);
+	~CDittoRulerRichEditCtrl(void);
+
+	enum eSaveTypes{stNONE = 0x1, stCF_TEXT = 0x2, stCF_UNICODETEXT = 0x4, stRTF = 0x8};
+
+	bool LoadItem(long lID, CString csDesc);
+	int SaveToDB(BOOL bUpdateDesc);
+	long GetTypeFlags(long lID);
+	bool CloseEdit(bool bPrompt, BOOL bUpdateDesc);
+	long GetDBID()		{ return m_lID; }
+	CString GetDesc()	{ return m_csDescription; }
+
+	void d();
+	    
+protected:
+	long m_lID;
+	long m_SaveTypes;
+	CString m_csDescription;
+
+	bool LoadRTFData(CClip &Clip);
+	bool LoadTextData(CClip &Clip);
+};

+ 0 - 25
DittoSetup/DAO_Setup.iss

@@ -1,25 +0,0 @@
-; Script generated by the Inno Setup Script Wizard.
-; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-
-[Setup]
-AppName=Instalation for DAO
-AppVerName=DAO
-AppPublisher=DAO
-AppPublisherURL=www.microsoft.com/data
-AppSupportURL=www.microsoft.com/data
-AppUpdatesURL=www.microsoft.com/data
-DefaultDirName={pf}\Ditto
-DisableDirPage=yes
-DefaultGroupName=Instalation for DAO
-DisableProgramGroupPage=yes
-OutputBaseFilename=DAO_Setup
-
-[Files]
-Source: "C:\Documents and Settings\Scott\Desktop\ditto\DittoSetup\dao\Disk1\*"; DestDir: "{app}\dao\Disk1";
-Source: "C:\Documents and Settings\Scott\Desktop\ditto\DittoSetup\dao\Disk2\*"; DestDir: "{app}\dao\Disk2";
-Source: "C:\Documents and Settings\Scott\Desktop\ditto\DittoSetup\dao\Disk3\*"; DestDir: "{app}\dao\Disk3";
-
-[Run]
-Filename: "{app}\dao\disk1\setup.exe"; Description: "Install DAO (For Database Access)"; StatusMsg: "Installing DAO"; Flags: skipifdoesntexist nowait
-
-

+ 0 - 37
DittoSetup/DittoBuild.bld

@@ -1,37 +0,0 @@
-<?xml version='1.0'?>
-<project version='5'>
-	<step action='Group' type='0'>
-		<name>Project steps</name>
-	</step>
-	<step action='CVS' type='0'>
-		<Command>checkout</Command>
-		<Compress>3</Compress>
-		<Database>/cvsroot/ditto-cp</Database>
-		<Exe>%CVS_EXE%</Exe>
-		<Files>ditto</Files>
-		<Host>cvs.sourceforge.net:</Host>
-		<LocalPath>%BASE_DIR%</LocalPath>
-		<Method>pserver</Method>
-		<Quiet type='11'>-1</Quiet>
-		<ShowCmd>%SHOWCMD%</ShowCmd>
-		<Username>anonymous</Username>
-		<description>Retrieve the latest ditto code</description>
-		<indent type='3'>1</indent>
-		<name>checkout Ditto</name>
-	</step>
-	<step action='Make VC6' type='0'>
-		<Attr type='11'>-1</Attr>
-		<Config>Win32 Release</Config>
-		<FileVer type='11'>-1</FileVer>
-		<Filename>C:\Ditto_Build\ditto\CP_Main.dsw</Filename>
-		<FixLibDep type='11'>-1</FixLibDep>
-		<indent type='3'>1</indent>
-		<name>Build Ditto</name>
-	</step>
-	<step action='Inno Setup' type='0'>
-		<Filename>C:\Ditto_Build\ditto\DittoSetup\DittoSetup.iss</Filename>
-		<ISPPCompat type='11'>-1</ISPPCompat>
-		<indent type='3'>1</indent>
-		<name>Make the Ditto Setup</name>
-	</step>
-</project>

+ 65 - 9
DittoSetup/DittoSetup.iss

@@ -3,8 +3,8 @@
 
 [Setup]
 AppName=Ditto
-AppVerName=Ditto 2.5.1.0
-OutputBaseFilename=DittoSetup_2_5_1_0
+AppVerName=Ditto 3.10.0.0
+OutputBaseFilename=DittoSetup_3_10_0_0
 AppPublisher=Scott Brogden
 AppPublisherURL=ditto-cp.sourceforge.net
 AppSupportURL=ditto-cp.sourceforge.net
@@ -13,20 +13,46 @@ DefaultDirName={pf}\Ditto
 DefaultGroupName=Ditto
 AppMutex=Ditto Is Now Running
 UsePreviousTasks=no
+DisableDirPage=yes
+DisableProgramGroupPage=yes
+DisableReadyPage=yes
 DirExistsWarning=no
+UninstallLogMode=overwrite
+ChangesAssociations=yes
+
+[Languages]
+Name: "English"; MessagesFile: "compiler:Default.isl"
+Name: "German"; MessagesFile: "German.isl"
+Name: "Italiano"; MessagesFile: "Italian.isl"
+Name: "French"; MessagesFile: "French.isl"
+Name: "Portuguese"; MessagesFile: "Portuguese.isl"
+Name: "Spanish"; MessagesFile: "Spanish.isl"
+Name: "Polski"; MessagesFile: "Polish.isl"
+Name: "Dutch"; MessagesFile: "Dutch.isl"
 
 [Tasks]
 Name: RunAtStartup; Description: "Run Ditto on Windows Startup";
 
 [Files]
+;Unicode for 2000 and later
+Source: "Release\DittoU.exe"; DestDir: "{app}"; DestName: "Ditto.exe"; Flags: ignoreversion; MinVersion: 0, 4.0
+
+;Non unicode for pre 2000
+Source: "Release\Ditto.exe"; DestDir: "{app}"; DestName: "Ditto.exe"; Flags: ignoreversion; MinVersion: 4.0, 0
+
+Source: "Release\focus.dll"; DestDir: "{app}"; BeforeInstall: BeforeFocusInstall(); Flags: ignoreversion restartreplace
+Source: "Release\sqlite3.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "Release\AccessToSqlite.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "Release\zlib1.dll"; DestDir: "{app}"; Flags: ignoreversion
 
-Source: "..\Release\Ditto.exe"; DestDir: "{app}"; DestName: "Ditto.exe"; Flags: ignoreversion
-Source: "..\Release\focus.dll"; DestDir: "{app}";  Flags: ignoreversion onlyifdoesntexist
+Source: "Release\Changes.txt"; DestDir: "{app}"
 
-Source: "Output\Changes.txt"; DestDir: "{app}"
+Source: "Language\*"; DestDir: "{app}\Language"; BeforeInstall: BeforeLanguageInstall();
+
+Source: "Release\mfc-crt\*"; DestDir: "{app}"
 
 ;Add help files
-Source: "..\Help\*.htm"; DestDir: "{app}\Help"; Flags: ignoreversion
+Source: "Help\*.htm"; DestDir: "{app}\Help"; Flags: ignoreversion
 
 [Icons]
 Name: "{group}\Ditto"; Filename: "{app}\Ditto.exe";
@@ -40,7 +66,37 @@ Filename: "{app}\Changes.txt"; Description: "View Change History"; Flags: nowait
 
 [Registry]
 Root: HKCU; Subkey: "Software\Ditto"; Flags: uninsdeletekey
-Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "Ditto"; flags: uninsdeletekey; ValueData: "{app}\Ditto.exe"; Tasks: RunAtStartup
+Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "Ditto"; flags: uninsdeletevalue; ValueData: "{app}\Ditto.exe"; Tasks: RunAtStartup
+Root: HKCU; Subkey: "Software\Ditto"; ValueType: string; ValueName: "LanguageFile"; ValueData: {language}
+
+Root: HKCR; Subkey: ".dto"; ValueType: string; ValueName: ""; ValueData: "Ditto"; Flags: uninsdeletevalue
+Root: HKCR; Subkey: "Ditto"; ValueType: string; ValueName: ""; ValueData: "Ditto"; Flags: uninsdeletekey
+Root: HKCR; Subkey: "Ditto\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Ditto.exe,0"
+Root: HKCR; Subkey: "Ditto\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\Ditto.exe"" ""%1"""
+
+
+[Code]
+procedure BeforeFocusInstall();
+var
+  sDir: String;
+begin
+    sDir := ExpandConstant('{app}');
+
+    DeleteFile(sDir+'\focus.dll')
+    DeleteFile(sDir+'\focus.dll.old')
+    DeleteFile(sDir+'\focus.dll.old.old')
+    DeleteFile(sDir+'\focus.dll.old.old.old')
+
+    RenameFile(sDir+'\focus.dll', sDir+'\focus.dll.old')
+    RenameFile(sDir+'\focus.dll', sDir+'\focus.dll.old.old')
+    RenameFile(sDir+'\focus.dll', sDir+'\focus.dll.old.old.old')
+end;
+
+procedure BeforeLanguageInstall();
+var
+  sDir: String;
+begin
+    sDir := ExpandConstant('{app}');
 
-[UninstallDelete]
-Type: filesandordirs; Name: "{userappdata}\Ditto"
+    RenameFile(sDir+'\Language\Italian.xml', sDir+'\Language\Italian.xml.old')
+end;

+ 297 - 0
DittoSetup/Dutch.isl

@@ -0,0 +1,297 @@
+; *** Inno Setup version 5.1.0+ Dutch messages ***
+;
+; This file is based on a user-contributed translations by various authors
+;
+; Maintained by Martijn Laan ([email protected])
+;
+; $jrsoftware: issrc/Files/Languages/Dutch.isl,v 1.18 2005/02/25 23:07:04 mlaan Exp $
+                                     
+[LangOptions]                
+LanguageName=Nederlands      
+LanguageID=$0413 
+LanguageCodePage=1252
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Setup
+SetupWindowTitle=Setup - %1
+UninstallAppTitle=Verwijderen
+UninstallAppFullTitle=%1 verwijderen
+
+; *** Misc. common
+InformationTitle=Informatie
+ConfirmTitle=Bevestigen
+ErrorTitle=Fout
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=Hiermee wordt %1 geïnstalleerd. Wilt u doorgaan?
+LdrCannotCreateTemp=Kan geen tijdelijk bestand maken. Setup wordt afgesloten
+LdrCannotExecTemp=Kan een bestand in de tijdelijke map niet uitvoeren. Setup wordt afgesloten
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nFout %2: %3
+SetupFileMissing=Het bestand %1 ontbreekt in de installatiemap. Corrigeer dit probleem of gebruik een andere kopie van het programma.
+SetupFileCorrupt=De installatiebestanden zijn beschadigd. Gebruik een andere kopie van het programma.
+SetupFileCorruptOrWrongVer=De installatiebestanden zijn beschadigd, of zijn niet compatibel met deze versie van Setup. Corrigeer dit probleem of gebruik een andere kopie van het programma.
+NotOnThisPlatform=Dit programma kan niet worden uitgevoerd onder %1.
+OnlyOnThisPlatform=Dit programma moet worden uitgevoerd onder %1.
+OnlyOnTheseArchitectures=Dit programma kan alleen geïnstalleerd worden onder versies van Windows ontworpen voor de volgende processor architecturen:%n%n%1
+MissingWOW64APIs=De versie van Windows die u gebruikt bevat niet de door Setup benodige functionaliteit om een 64-bit installatie uit te voeren. Installeer Service Pack %1 om dit probleem te corrigeren.
+WinVersionTooLowError=Dit programma vereist %1 versie %2 of hoger.
+WinVersionTooHighError=Dit programma kan niet worden geïnstalleerd onder %1 versie %2 of hoger.
+AdminPrivilegesRequired=U moet aangemeld zijn als een systeembeheerder om dit programma te kunnen installeren.
+PowerUserPrivilegesRequired=U moet ingelogd zijn als systeembeheerder of als gebruiker met systeembeheerders rechten om dit programma te kunnen installeren.
+SetupAppRunningError=Setup heeft vastgesteld dat %1 op dit moment actief is.%n%nSluit alle vensters van dit programma, en klik daarna op OK om verder te gaan, of op Annuleren om Setup af te sluiten.
+UninstallAppRunningError=Het verwijderprogramma heeft vastgesteld dat %1 op dit moment actief is.%n%nSluit alle vensters van dit programma, en klik daarna op OK om verder te gaan, of op Annuleren om het verwijderen af te breken.
+
+; *** Misc. errors
+ErrorCreatingDir=Setup kan de map "%1" niet maken
+ErrorTooManyFilesInDir=Kan geen bestand maken in de map "%1" omdat deze te veel bestanden bevat
+
+; *** Setup common messages
+ExitSetupTitle=Setup afsluiten
+ExitSetupMessage=Setup is niet voltooid. Als u nu afsluit, wordt het programma niet geïnstalleerd.%n%nU kunt Setup later opnieuw uitvoeren om de installatie te voltooien.%n%nSetup afsluiten?
+AboutSetupMenuItem=&Over Setup...
+AboutSetupTitle=Over Setup
+AboutSetupMessage=%1 versie %2%n%3%n%n%1-homepage:%n%4
+AboutSetupNote=
+TranslatorNote=Dutch translation maintained by Martijn Laan ([email protected])
+
+; *** Buttons
+ButtonBack=< Vo&rige
+ButtonNext=&Volgende >
+ButtonInstall=&Installeren
+ButtonOK=OK
+ButtonCancel=Annuleren
+ButtonYes=&Ja
+ButtonYesToAll=Ja op &alles
+ButtonNo=&Nee
+ButtonNoToAll=N&ee op alles
+ButtonFinish=&Voltooien
+ButtonBrowse=&Bladeren...
+ButtonWizardBrowse=B&laderen...
+ButtonNewFolder=&Nieuwe map maken
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Taalkeuze voor Setup
+SelectLanguageLabel=Selecteer de taal welke Setup gebruikt tijdens de installatie:
+
+; *** Common wizard text
+ClickNext=Klik op Volgende om verder te gaan of op Annuleren om Setup af te sluiten.
+BeveledLabel=
+BrowseDialogTitle=Map Selecteren
+BrowseDialogLabel=Selecteer een map in onderstaande lijst en klik daarna op OK.
+NewFolderName=Nieuwe map
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Welkom bij het installatieprogramma van [name].
+WelcomeLabel2=Hiermee wordt [name/ver] geïnstalleerd op deze computer.%n%nU wordt aanbevolen alle actieve programma's af te sluiten voordat u verder gaat.
+
+; *** "Password" wizard page
+WizardPassword=Wachtwoord
+PasswordLabel1=Deze installatie is beveiligd met een wachtwoord.
+PasswordLabel3=Voer het wachtwoord in en klik op Volgende om verder te gaan. Wachtwoorden zijn hoofdlettergevoelig.
+PasswordEditLabel=&Wachtwoord:
+IncorrectPassword=Het ingevoerde wachtwoord is niet correct. Probeer het opnieuw.
+
+; *** "License Agreement" wizard page
+WizardLicense=Licentieovereenkomst
+LicenseLabel=Lees de volgende belangrijke informatie voordat u verder gaat.
+LicenseLabel3=Lees de volgende licentieovereenkomst. Gebruik de schuifbalk of druk op de knop Page Down om de rest van de overeenkomst te zien.
+LicenseAccepted=Ik &accepteer de licentieovereenkomst
+LicenseNotAccepted=Ik accepteer de licentieovereenkomst &niet
+
+; *** "Information" wizard pages
+WizardInfoBefore=Informatie
+InfoBeforeLabel=Lees de volgende belangrijke informatie voordat u verder gaat.
+InfoBeforeClickLabel=Klik op Volgende als u gereed bent om verder te gaan met Setup.
+WizardInfoAfter=Informatie
+InfoAfterLabel=Lees de volgende belangrijke informatie voordat u verder gaat.
+InfoAfterClickLabel=Klik op Volgende als u gereed bent om verder te gaan met Setup.
+
+; *** "User Information" wizard page
+WizardUserInfo=Gebruikersinformatie
+UserInfoDesc=Vul hier uw informatie in.
+UserInfoName=&Gebruikersnaam:
+UserInfoOrg=&Organisatie:
+UserInfoSerial=&Serienummer:
+UserInfoNameRequired=U moet een naam invullen.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Kies de doelmap
+SelectDirDesc=Waar moet [name] geïnstalleerd worden?
+SelectDirLabel3=Setup zal [name] in de volgende map installeren.
+SelectDirBrowseLabel=Klik op Volgende om door te gaan. Klik op Bladeren om een andere map te kiezen.
+DiskSpaceMBLabel=Er is tenminste [mb] MB vrije schijfruimte vereist.
+ToUNCPathname=Setup kan niet installeren naar een UNC-padnaam. Als u wilt installeren naar een netwerk, moet u een netwerkverbinding maken.
+InvalidPath=U moet een volledig pad met stationsletter invoeren; bijvoorbeeld:%nC:\APP%n%nof een UNC pad zoals:%n%n\\server\share
+InvalidDrive=Het geselecteerde station bestaat niet. Kies een ander station.
+DiskSpaceWarningTitle=Onvoldoende schijfruimte
+DiskSpaceWarning=Setup vereist ten minste %1 kB vrije schijfruimte voor het installeren, maar het geselecteerde station heeft slechts %2 kB beschikbaar.%n%nWilt u toch doorgaan?
+DirNameTooLong=De mapnaam of het pad is te lang.
+InvalidDirName=De mapnaam is ongeldig.
+BadDirName32=Mapnamen mogen geen van de volgende tekens bevatten:%n%n%1
+DirExistsTitle=Map bestaat al
+DirExists=De map:%n%n%1%n%nbestaat al. Wilt u toch naar die map installeren?
+DirDoesntExistTitle=Map bestaat niet
+DirDoesntExist=De map:%n%n%1%n%nbestaat niet. Wilt u de map aanmaken?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Selecteer componenten
+SelectComponentsDesc=Welke componenten moeten geïnstalleerd worden?
+SelectComponentsLabel2=Selecteer de componenten die u wilt installeren. Klik op Volgende als u klaar bent om verder te gaan.
+FullInstallation=Volledige installatie
+CompactInstallation=Compacte installatie
+CustomInstallation=Aangepaste installatie
+NoUninstallWarningTitle=Component bestaat
+NoUninstallWarning=Setup heeft gedetecteerd dat de volgende componenten al geïnstalleerd zijn op uw computer:%n%n%1%n%nAls u de selectie van deze componenten ongedaan maakt, worden ze niet verwijderd.%n%nWilt u toch doorgaan?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceMBLabel=De huidige selectie vereist ten minste [mb] MB vrije schijfruimte.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Selecteer extra taken
+SelectTasksDesc=Welke extra taken moeten uitgevoerd worden?
+SelectTasksLabel2=Selecteer de extra taken die u door Setup wilt laten uitvoeren bij het installeren van [name], en klik vervolgens op Volgende.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Selecteer menu Start map
+SelectStartMenuFolderDesc=Waar moeten de snelkoppelingen van het programma geplaatst worden?
+SelectStartMenuFolderLabel3=Setup plaatst de snelkoppelingen van het programma in de volgende menu Start map.
+SelectStartMenuFolderBrowseLabel=Klik op Volgende om door te gaan. Klik op Bladeren om een andere map te kiezen.
+MustEnterGroupName=U moet een mapnaam invoeren.
+GroupNameTooLong=De mapnaam of het pad is te lang. 
+InvalidGroupName=De mapnaam is ongeldig.
+BadGroupName=De mapnaam mag geen van de volgende tekens bevatten:%n%n%1
+NoProgramGroupCheck2=&Geen menu Start map maken
+
+; *** "Ready to Install" wizard page
+WizardReady=Het voorbereiden van de installatie is gereed
+ReadyLabel1=Setup is nu gereed om te beginnen met het installeren van [name] op deze computer.
+ReadyLabel2a=Klik op Installeren om verder te gaan met installeren, of klik op Vorige als u instellingen wilt terugzien of veranderen.
+ReadyLabel2b=Klik op Installeren om verder te gaan met installeren.
+ReadyMemoUserInfo=Gebruikersinformatie:
+ReadyMemoDir=Doelmap:
+ReadyMemoType=Installatietype:
+ReadyMemoComponents=Geselecteerde componenten:
+ReadyMemoGroup=Menu Start map:
+ReadyMemoTasks=Extra taken:
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Bezig met het voorbereiden van de installatie
+PreparingDesc=Bezig met het voorbereiden van [name] installatie.
+PreviousInstallNotCompleted=De installatie/verwijdering van een vorig programma is niet voltooid. U moet uw computer opnieuw opstarten om die installatie te voltooien.%n%nStart [name] Setup nogmaals als uw computer opnieuw is opgetart .
+CannotContinue=Setup kan niet doorgaan. Klik op annuleren om af te sluiten.
+
+; *** "Installing" wizard page
+WizardInstalling=Bezig met installeren
+InstallingLabel=Setup installeert [name] op uw computer. Een ogenblik geduld...
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Setup heeft het installeren van [name] op deze computer voltooid.
+FinishedLabelNoIcons=Setup heeft het installeren van [name] op deze computer voltooid.
+FinishedLabel=Setup heeft het installeren van [name] op deze computer voltooid. U kunt het programma uitvoeren met de geïnstalleerde snelkoppelingen.
+ClickFinish=Klik op Voltooien om Setup te beëindigen.
+FinishedRestartLabel=Setup moet de computer opnieuw opstarten om de installatie van [name] te voltooien. Wilt u nu opnieuw opstarten?
+FinishedRestartMessage=Setup moet uw computer opnieuw opstarten om de installatie van [name] te voltooien.%n%nWilt u nu opnieuw opstarten?
+ShowReadmeCheck=Ja, ik wil het bestand Leesmij zien
+YesRadio=&Ja, start de computer nu opnieuw op
+NoRadio=&Nee, ik start de computer later opnieuw op
+RunEntryExec=Start %1
+RunEntryShellExec=Bekijk %1
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=Setup heeft de volgende diskette nodig
+SelectDiskLabel2=Voer diskette %1 in en klik op OK.%n%nAls de bestanden op deze diskette in een andere map gevonden kunnen worden dan die hieronder wordt getoond, voer dan het juiste pad in of klik op Bladeren.
+PathLabel=&Pad:
+FileNotInDir2=Kan het bestand "%1" niet vinden in "%2". Voer de juiste diskette in of kies een andere map.
+SelectDirectoryLabel=Geef de locatie van de volgende diskette.
+
+; *** Installation phase messages
+SetupAborted=Setup is niet voltooid.%n%nCorrigeer het probleem en voer Setup opnieuw uit.
+EntryAbortRetryIgnore=Klik op Opnieuw om het opnieuw te proberen, op Negeren om toch door te gaan, of op Afbreken om de installatie af te breken.
+
+; *** Installation status messages
+StatusCreateDirs=Mappen maken...
+StatusExtractFiles=Bestanden uitpakken...
+StatusCreateIcons=Snelkoppelingen maken...
+StatusCreateIniEntries=INI-gegevens instellen...
+StatusCreateRegistryEntries=Registergegevens instellen...
+StatusRegisterFiles=Bestanden registreren...
+StatusSavingUninstall=Verwijderingsinformatie opslaan...
+StatusRunProgram=Installatie voltooien...
+StatusRollback=Veranderingen ongedaan maken...
+
+; *** Misc. errors
+ErrorInternal2=Interne fout: %1
+ErrorFunctionFailedNoCode=%1 mislukt
+ErrorFunctionFailed=%1 mislukt; code %2
+ErrorFunctionFailedWithMessage=%1 mislukt; code %2.%n%3
+ErrorExecutingProgram=Kan bestand niet uitvoeren:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Fout bij het openen van registersleutel:%n%1\%2
+ErrorRegCreateKey=Fout bij het maken van registersleutel:%n%1\%2
+ErrorRegWriteKey=Fout bij het schrijven naar registersleutel:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Fout bij het maken van een INI-instelling in bestand "%1".
+
+; *** File copying errors
+FileAbortRetryIgnore=Klik op Opnieuw om het opnieuw te proberen, op Negeren om toch door te gaan (niet aanbevolen), of op Afbreken om de installatie af te breken.
+FileAbortRetryIgnore2=Klik op Opnieuw om het opnieuw te proberen, op Negeren om toch door te gaan (niet aanbevolen), of op Afbreken om de installatie af te breken.
+SourceIsCorrupted=Het bronbestand is beschadigd
+SourceDoesntExist=Het bronbestand "%1" bestaat niet
+ExistingFileReadOnly=Het bestaande bestand is gemarkeerd als alleen-lezen.%n%nKlik op Opnieuw om het kenmerk alleen-lezen te verwijderen en opnieuw te proberen, op Negeren om dit bestand over te slaan, of op Afbreken om de installatie af te breken.
+ErrorReadingExistingDest=Er is een fout opgetreden bij het lezen van het bestaande bestand:
+FileExists=Het bestand bestaat al.%n%nWilt u dat Setup het overschrijft?
+ExistingFileNewer=Het bestaande bestand is nieuwer dan het bestand dat Setup probeert te installeren. U wordt aanbevolen het bestaande bestand te behouden.%n%nWilt u het bestaande bestand behouden?
+ErrorChangingAttr=Er is een fout opgetreden bij het wijzigen van de kenmerken van het bestaande bestand:
+ErrorCreatingTemp=Er is een fout opgetreden bij het maken van een bestand in de doelmap:
+ErrorReadingSource=Er is een fout opgetreden bij het lezen van het bronbestand:
+ErrorCopying=Er is een fout opgetreden bij het kopiëren van een bestand:
+ErrorReplacingExistingFile=Er is een fout opgetreden bij het vervangen van het bestaande bestand:
+ErrorRestartReplace=Vervangen na opnieuw starten is mislukt:
+ErrorRenamingTemp=Er is een fout opgetreden bij het hernoemen van een bestand in de doelmap:
+ErrorRegisterServer=Kan de DLL/OCX niet registreren: %1
+ErrorRegisterServerMissingExport=DllRegisterServer export niet gevonden
+ErrorRegisterTypeLib=Kan de type library niet registreren: %1
+
+; *** Post-installation errors
+ErrorOpeningReadme=Er is een fout opgetreden bij het openen van het Leesmij-bestand.
+ErrorRestartingComputer=Setup kan de computer niet opnieuw opstarten. Doe dit handmatig.
+
+; *** Uninstaller messages
+UninstallNotFound=Bestand "%1" bestaat niet. Kan het programma niet verwijderen.
+UninstallUnsupportedVer=Het installatie-logbestand "%1" heeft een formaat dat niet herkend wordt door deze versie van het verwijderprogramma. Kan het programma niet verwijderen
+UninstallUnknownEntry=Er is een onbekend gegeven (%1) aangetroffen in het installatie-logbestand
+ConfirmUninstall=Weet u zeker dat u %1 en alle bijbehorende componenten wilt verwijderen?
+UninstallOnlyOnWin64=Deze installatie kan alleen worden verwijderd onder 64-bit Windows.
+OnlyAdminCanUninstall=Deze installatie kan alleen worden verwijderd door een gebruiker met administratieve rechten.
+UninstallStatusLabel=%1 wordt verwijderd van uw computer. Een ogenblik geduld.
+UninstallOpenError=Bestand "%1" kon niet worden geopend. Kan het verwijderen niet voltooien.
+UninstalledAll=%1 is met succes van deze computer verwijderd.
+UninstalledMost=Het verwijderen van %1 is voltooid.%n%nEnkele elementen konden niet verwijderd worden. Deze kunnen handmatig verwijderd worden.
+UninstalledAndNeedsRestart=Om het verwijderen van %1 te voltooien, moet uw computer opnieuw worden opgestart.%n%nWilt u nu opnieuw opstarten?
+UninstallDataCorrupted="%1" bestand is beschadigd. Kan verwijderen niet voltooien
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Gedeeld bestand verwijderen?
+ConfirmDeleteSharedFile2=Het systeem geeft aan dat het volgende gedeelde bestand niet langer gebruikt wordt door enig programma. Wilt u dat dit gedeelde bestand verwijderd wordt?%n%nAls dit bestand toch nog gebruikt wordt door een programma en het verwijderd wordt, werkt dat programma misschien niet meer correct. Als u het niet zeker weet, kies dan Nee. Bewaren van het bestand op dit systeem is niet schadelijk.
+SharedFileNameLabel=Bestandsnaam:
+SharedFileLocationLabel=Locatie:
+WizardUninstalling=Verwijderingsstatus
+StatusUninstalling=Verwijderen van %1...
+
+[CustomMessages]
+
+NameAndVersion=%1 versie %2
+AdditionalIcons=Extra snelkoppelingen:
+CreateDesktopIcon=Maak een snelkoppeling op het &bureaublad
+CreateQuickLaunchIcon=Maak een snelkoppeling op de &Snel starten werkbalk
+ProgramOnTheWeb=%1 op het Web
+UninstallProgram=Verwijder %1
+LaunchProgram=&Start %1
+AssocFileExtension=&Koppel %1 aan de %2 bestandsextensie
+AssocingFileExtension=Bezig met koppelen van %1 aan de %2 bestandsextensie...

+ 312 - 0
DittoSetup/French.isl

@@ -0,0 +1,312 @@
+; *** Inno Setup version 5.1.0+ French messages ***
+;
+; To download user-contributed translations of this file, go to:
+;   http://www.jrsoftware.org/is3rdparty.php
+;
+; Note: When translating this text, do not add periods (.) to the end of
+; messages that didn't have them already, because on those messages Inno
+; Setup adds the periods automatically (appending a period would result in
+; two periods being displayed).
+;
+; Maintained by Pierre Yager ([email protected])
+;
+; Contributors : Frédéric Bonduelle, Francis Pallini
+;
+; $jrsoftware: issrc/Files/Languages/French.isl,v 1.13 2005/02/26 09:50:47 pierrey Exp $
+
+[LangOptions]
+LanguageName=Fran<00E7>ais
+LanguageID=$040C
+LanguageCodePage=1252
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Installation
+SetupWindowTitle=Installation - %1
+UninstallAppTitle=Désinstallation
+UninstallAppFullTitle=Désinstallation - %1
+
+; *** Misc. common
+InformationTitle=Information
+ConfirmTitle=Confirmation
+ErrorTitle=Erreur
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=Cet assistant va installer %1. Voulez-vous continuer ?
+LdrCannotCreateTemp=Impossible de créer un fichier temporaire. Abandon de l'installation
+LdrCannotExecTemp=Impossible d'exécuter un fichier depuis le dossier temporaire. Abandon de l'installation
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nErreur %2 : %3
+SetupFileMissing=Le fichier %1 est absent du dossier d'installation. Veuillez corriger le problème ou vous procurer une nouvelle copie du programme.
+SetupFileCorrupt=Les fichiers d'installation sont altérés. Veuillez vous procurer une nouvelle copie du programme.
+SetupFileCorruptOrWrongVer=Les fichiers d'installation sont altérés ou ne sont pas compatibles avec cette version de l'assistant d'installation. Veuillez corriger le problème ou vous procurer une nouvelle copie du programme.
+NotOnThisPlatform=Ce programme ne fonctionne pas sous %1.
+OnlyOnThisPlatform=Ce programme ne peut fonctionner que sous %1.
+OnlyOnTheseArchitectures=Ce programme ne peut être installé que sur des versions de Windows qui supportent ces architectures : %n%n%1
+MissingWOW64APIs=La version de Windows que vous utilisez ne dispose pas des fonctionnalités nécessaires pour que l'assistant puisse réaliser une installation 64 bits. Pour corriger ce problème vous devez installer le Service Pack %1.
+WinVersionTooLowError=Ce programme requiert la version %2 ou supérieure de %1.
+WinVersionTooHighError=Ce programme ne peut pas être installé sous %1 version %2 ou supérieure.
+AdminPrivilegesRequired=Vous devez disposer des droits d'administration de cet ordinateur pour installer ce programme.
+PowerUserPrivilegesRequired=Vous devez disposer des droits d'administration ou faire partie du groupe "Utilisateurs avec pouvoir" de cet ordinateur pour installer ce programme.
+SetupAppRunningError=L'assistant d'installation a détecté que %1 est actuellement en cours d'exécution.%n%nVeuillez fermer toutes les instances de cette application puis appuyer sur OK pour continuer, ou bien appuyer sur Annuler pour abandonner l'installation.
+UninstallAppRunningError=La procédure de désinstallation a détecté que %1 est actuellement en cours d'exécution.%n%nVeuillez fermer toutes les instances de cette application  puis appuyer sur OK pour continuer, ou bien appuyer sur Annuler pour abandonner la désinstallation.
+
+; *** Misc. errors
+ErrorCreatingDir=L'assistant d'installation n'a pas pu créer le dossier "%1"
+ErrorTooManyFilesInDir=L'assistant d'installation n'a pas pu créer un fichier dans le dossier "%1" car celui-ci contient trop de fichiers
+
+; *** Setup common messages
+ExitSetupTitle=Quitter l'installation
+ExitSetupMessage=L'installation n'est pas terminée. Si vous abandonnez maintenant, le programme ne sera pas installé.%n%nVous devrez relancer cet assistant pour finir l'installation.%n%nVoulez-vous quand même quitter l'assistant d'installation ?
+AboutSetupMenuItem=&A propos...
+AboutSetupTitle=A Propos de l'assistant d'installation
+AboutSetupMessage=%1 version %2%n%3%n%nPage d'accueil de %1 :%n%4
+AboutSetupNote=
+TranslatorNote=French translation maintained by Pierre Yager ([email protected])
+
+; *** Buttons
+ButtonBack=< &Précédent
+ButtonNext=&Suivant >
+ButtonInstall=&Installer
+ButtonOK=OK
+ButtonCancel=Annuler
+ButtonYes=&Oui
+ButtonYesToAll=Oui pour &Tout
+ButtonNo=&Non
+ButtonNoToAll=N&on pour Tout
+ButtonFinish=&Terminer
+ButtonBrowse=Pa&rcourir...
+ButtonWizardBrowse=Pa&rcourir...
+ButtonNewFolder=Nouveau &Dossier
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Langue de l'assistant d'installation
+SelectLanguageLabel=Veuillez sélectionner la langue qui sera utilisée par l'assistant d'installation :
+
+; *** Common wizard text
+ClickNext=Appuyez sur Suivant pour continuer ou sur Annuler pour abandonner l'installation.
+BeveledLabel=
+BrowseDialogTitle=Parcourir les dossiers
+BrowseDialogLabel=Veuillez choisir un dossier de destination, puis appuyez sur OK.
+NewFolderName=Nouveau dossier
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Bienvenue dans l'assistant d'installation de [name]
+WelcomeLabel2=Cet assistant va vous guider dans l'installation de [name/ver] sur votre ordinateur.%n%nIl est recommandé de fermer toutes les applications actives avant de continuer.
+
+; *** "Password" wizard page
+WizardPassword=Mot de passe
+PasswordLabel1=Cette installation est protégée par un mot de passe.
+PasswordLabel3=Veuillez saisir le mot de passe (attention à la distinction entre majuscules et minuscules) puis appuyez sur Suivant pour continuer.
+PasswordEditLabel=&Mot de passe :
+IncorrectPassword=Le mot de passe saisi n'est pas valide. Veuillez essayer à nouveau.
+
+; *** "License Agreement" wizard page
+WizardLicense=Accord de licence
+LicenseLabel=Les informations suivantes sont importantes. Veuillez les lire avant de continuer.
+LicenseLabel3=Veuillez lire le contrat de licence suivant. Vous devez en accepter tous les termes avant de continuer l'installation.
+LicenseAccepted=Je comprends et j'&accepte les termes du contrat de licence
+LicenseNotAccepted=Je &refuse les termes du contrat de licence
+
+; *** "Information" wizard pages
+WizardInfoBefore=Information
+InfoBeforeLabel=Les informations suivantes sont importantes. Veuillez les lire avant de continuer.
+InfoBeforeClickLabel=Lorsque vous êtes prêt à continuer, appuyez sur Suivant.
+WizardInfoAfter=Information
+InfoAfterLabel=Les informations suivantes sont importantes. Veuillez les lire avant de continuer.
+InfoAfterClickLabel=Lorsque vous êtes prêt à continuer, appuyez sur Suivant.
+
+; *** "User Information" wizard page
+WizardUserInfo=Informations sur l'Utilisateur
+UserInfoDesc=Veuillez saisir les informations qui vous concernent.
+UserInfoName=&Nom d'utilisateur :
+UserInfoOrg=&Organisation :
+UserInfoSerial=Numéro de &série :
+UserInfoNameRequired=Vous devez au moins saisir un nom.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Dossier de destination
+SelectDirDesc=Où [name] doit-il être installé ?
+SelectDirLabel3=L'assistant va installer [name] dans le dossier suivant.
+SelectDirBrowseLabel=Pour continuer, appuyez sur Suivant. Si vous souhaitez choisir un dossier différent, appuyez sur Parcourir.
+DiskSpaceMBLabel=Le programme requiert au moins [mb] Mo d'espace disque disponible.
+ToUNCPathname=L'assistant d'installation ne supporte pas les chemins réseau. Si vous souhaitez effectuer cette installation sur un réseau, vous devez d'abord connecter un lecteur réseau.
+InvalidPath=Vous devez saisir un chemin complet avec sa lettre de lecteur ; par exemple :%n%nC:\APP%n%nou un chemin réseau de la forme :%n%n\\serveur\partage
+InvalidDrive=L'unité ou l'emplacement réseau que vous avez sélectionné n'existe pas ou n'est pas accessible. Veuillez choisir une autre destination.
+DiskSpaceWarningTitle=Espace disponible insuffisant
+DiskSpaceWarning=L'assistant a besoin d'au moins %1 ko d'espace disponible pour effectuer l'installation, mais l'unité que vous avez sélectionnée ne dispose que de %2 ko d'espace disponible.%n%nSouhaitez-vous continuer malgré tout ?
+DirNameTooLong=Le nom ou le chemin du dossier est trop long.
+InvalidDirName=Le nom du dossier est invalide.
+BadDirName32=Le nom du dossier ne doit contenir aucun des caractères suivants :%n%n%1
+DirExistsTitle=Dossier existant
+DirExists=Le dossier :%n%n%1%n%nexiste déjà. Souhaitez-vous installer dans ce dossier malgré tout ?
+DirDoesntExistTitle=Le dossier n'existe pas
+DirDoesntExist=Le dossier %n%n%1%n%nn'existe pas. Souhaitez-vous que ce dossier soit créé ?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Composants à installer
+SelectComponentsDesc=Quels composants de l'application souhaitez-vous installer ?
+SelectComponentsLabel2=Sélectionnez les composants que vous désirez installer ; décochez les composants que vous ne désirez pas installer. Appuyez ensuite sur Suivant pour continuer l'installation.
+FullInstallation=Installation complète
+; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
+CompactInstallation=Installation compacte
+CustomInstallation=Installation personnalisée
+NoUninstallWarningTitle=Composants existants
+NoUninstallWarning=L'assistant d'installation a détecté que les composants suivants sont déjà installés sur votre système :%n%n%1%n%nDésélectionner ces composants ne les désinstallera pas pour autant.%n%nVoulez-vous continuer malgré tout ?
+ComponentSize1=%1 ko
+ComponentSize2=%1 Mo
+ComponentsDiskSpaceMBLabel=Les composants sélectionnés nécessitent au moins [mb] Mo d'espace disponible.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Tâches supplémentaires
+SelectTasksDesc=Quelles sont les tâches supplémentaires qui doivent être effectuées ?
+SelectTasksLabel2=Sélectionnez les tâches supplémentaires que l'assistant d'installation doit effectuer pendant l'installation de [name], puis appuyez sur Suivant.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Sélection du dossier du menu Démarrer
+SelectStartMenuFolderDesc=Où l'assistant d'installation doit-il placer les raccourcis du programme ?
+SelectStartMenuFolderLabel3=L'assistant va créer les raccourcis du programme dans le dossier du menu Démarrer indiqué ci-dessous.
+SelectStartMenuFolderBrowseLabel=Appuyez sur Suivant pour continuer. Appuyez sur Parcourir si vous souhaitez sélectionner un autre dossier du menu Démarrer.
+MustEnterGroupName=Vous devez saisir un nom de dossier du menu Démarrer.
+GroupNameTooLong=Le nom ou le chemin du dossier est trop long.
+InvalidGroupName=Le nom du dossier n'est pas valide.
+BadGroupName=Le nom du dossier ne doit contenir aucun des caractères suivants :%n%n%1
+NoProgramGroupCheck2=Ne pas créer de &dossier dans le menu Démarrer
+
+; *** "Ready to Install" wizard page
+WizardReady=Prêt à installer
+ReadyLabel1=L'assistant dispose à présent de toutes les informations pour installer [name] sur votre ordinateur.
+ReadyLabel2a=Appuyez sur Installer pour procéder à l'installation ou sur Précédent pour revoir ou modifier une option d'installation.
+ReadyLabel2b=Appuyez sur Installer pour procéder à l'installation.
+ReadyMemoUserInfo=Informations sur l'utilisateur :
+ReadyMemoDir=Dossier de destination :
+ReadyMemoType=Type d'installation :
+ReadyMemoComponents=Composants sélectionnés :
+ReadyMemoGroup=Dossier du menu Démarrer :
+ReadyMemoTasks=Tâches supplémentaires :
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Préparation de l'installation
+PreparingDesc=L'assistant d'installation prépare l'installation de [name] sur votre ordinateur.
+PreviousInstallNotCompleted=L'installation ou la suppression d'un programme précédent n'est pas totalement achevée. Veuillez redémarrer votre ordinateur pour achever cette installation ou suppression.%n%nUne fois votre ordinateur redémarré, veuillez relancer cet assistant pour reprendre l'installation de [name].
+CannotContinue=L'assistant ne peut pas continuer. Veuillez appuyer sur Annuler pour abandonner l'installation.
+
+; *** "Installing" wizard page
+WizardInstalling=Installation en cours
+InstallingLabel=Veuillez patienter pendant que l'assistant installe [name] sur votre ordinateur.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Fin de l'installation de [name]
+FinishedLabelNoIcons=L'assistant a terminé l'installation de [name] sur votre ordinateur.
+FinishedLabel=L'assistant a terminé l'installation de [name] sur votre ordinateur. L'application peut être lancée à l'aide des icônes créées sur le Bureau par l'installation.
+ClickFinish=Veuillez appuyer sur Terminer pour quitter l'assistant d'installation.
+FinishedRestartLabel=L'assistant doit redémarrer votre ordinateur pour terminer l'installation de [name].%n%nVoulez-vous redémarrer maintenant ?
+FinishedRestartMessage=L'assistant doit redémarrer votre ordinateur pour terminer l'installation de [name].%n%nVoulez-vous redémarrer maintenant ?
+ShowReadmeCheck=Oui, je souhaite lire le fichier LISEZMOI
+YesRadio=&Oui, redémarrer mon ordinateur maintenant
+NoRadio=&Non, je préfère redémarrer mon ordinateur plus tard
+; used for example as 'Run MyProg.exe'
+RunEntryExec=Exécuter %1
+; used for example as 'View Readme.txt'
+RunEntryShellExec=Voir %1
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=L'assistant a besoin du disque suivant
+SelectDiskLabel2=Veuillez insérer le disque %1 et appuyer sur OK.%n%nSi les fichiers de ce disque se trouvent à un emplacement différent de celui indiqué ci-dessous, veuillez saisir le chemin correspondant ou appuyez sur Parcourir.
+PathLabel=&Chemin :
+FileNotInDir2=Le fichier "%1" ne peut pas être trouvé dans "%2". Veuillez insérer le bon disque ou sélectionner un autre dossier.
+SelectDirectoryLabel=Veuillez indiquer l'emplacement du disque suivant.
+
+; *** Installation phase messages
+SetupAborted=L'installation n'est pas terminée.%n%nVeuillez corriger le problème et relancer l'installation.
+EntryAbortRetryIgnore=Appuyez sur Réessayer pour essayer à nouveau, Ignorer pour continuer malgré tout, ou Abandonner pour annuler l'installation.
+
+; *** Installation status messages
+StatusCreateDirs=Création des dossiers...
+StatusExtractFiles=Extraction des fichiers...
+StatusCreateIcons=Création des raccourcis...
+StatusCreateIniEntries=Création des entrées du fichier INI...
+StatusCreateRegistryEntries=Création des entrées de registre...
+StatusRegisterFiles=Enregistrement des fichiers...
+StatusSavingUninstall=Sauvegarde des informations de désinstallation...
+StatusRunProgram=Finalisation de l'installation...
+StatusRollback=Annulation des modifications...
+
+; *** Misc. errors
+ErrorInternal2=Erreur interne : %1
+ErrorFunctionFailedNoCode=%1 a échoué
+ErrorFunctionFailed=%1 a échoué ; code %2
+ErrorFunctionFailedWithMessage=%1 a échoué ; code %2.%n%3
+ErrorExecutingProgram=Impossible d'exécuter le fichier :%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Erreur lors de l'ouverture de la clé de registre :%n%1\%2
+ErrorRegCreateKey=Erreur lors de la création de la clé de registre :%n%1\%2
+ErrorRegWriteKey=Erreur lors de l'écriture de la clé de registre :%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Erreur d'écriture d'une entrée dans le fichier INI "%1".
+
+; *** File copying errors
+FileAbortRetryIgnore=Appuyez sur Réessayer pour essayer à nouveau, Ignorer pour passer ce fichier (déconseillé), ou Abandonner pour annuler l'installation.
+FileAbortRetryIgnore2=Appuyez sur Réessayer pour essayer à nouveau, Ignorer pour continuer malgré tout (déconseillé), ou Abandonner pour annuler l'installation.
+SourceIsCorrupted=Le fichier source est altéré
+SourceDoesntExist=Le fichier source "%1" n'existe pas
+ExistingFileReadOnly=Le fichier existant est protégé en lecture seule.%n%nAppuyez sur Réessayer pour enlever la protection et essayer à nouveau, Ignorer pour passer ce fichier, ou Abandonner pour annuler l'installation.
+ErrorReadingExistingDest=Une erreur s'est produite lors de la tentative de lecture du fichier existant :
+FileExists=Le fichier existe déjà.%n%nSouhaitez-vous que l'installation le remplace ?
+ExistingFileNewer=Le fichier existant est plus récent que celui que l'assistant essaie d'installer. Il est recommandé de conserver le fichier existant.%n%nSouhaitez-vous conserver le fichier existant ?
+ErrorChangingAttr=Une erreur est survenue en essayant de modifier les attributs du fichier existant :
+ErrorCreatingTemp=Une erreur est survenue en essayant de créer un fichier dans le dossier de destination :
+ErrorReadingSource=Une erreur est survenue lors de la lecture du fichier source :
+ErrorCopying=Une erreur est survenue lors de la copie d'un fichier :
+ErrorReplacingExistingFile=Une erreur est survenue lors du remplacement d'un fichier existant :
+ErrorRestartReplace=Le marquage d'un fichier pour remplacement au redémarrage de l'ordinateur a échoué :
+ErrorRenamingTemp=Une erreur est survenue en essayant de renommer un fichier dans le dossier de destination :
+ErrorRegisterServer=Impossible d'enregistrer la bibliothèque DLL/OCX : %1
+ErrorRegisterServerMissingExport=La fonction exportée DllRegisterServer n'a pas été trouvée
+ErrorRegisterTypeLib=Impossible d'enregistrer la bibliothèque de type : %1
+
+; *** Post-installation errors
+ErrorOpeningReadme=Une erreur est survenue à l'ouverture du fichier LISEZMOI.
+ErrorRestartingComputer=L'installation n'a pas pu redémarrer l'ordinateur. Merci de bien vouloir le faire vous-même.
+
+; *** Uninstaller messages
+UninstallNotFound=Le fichier "%1" n'existe pas. Impossible de désinstaller.
+UninstallOpenError=Le fichier "%1" n'a pas pu être ouvert. Impossible de désinstaller
+UninstallUnsupportedVer=Le format du fichier journal de désinstallation "%1" n'est pas reconnu par cette version de la procédure de désinstallation. Impossible de désinstaller
+UninstallUnknownEntry=Une entrée inconnue (%1) a été rencontrée dans le fichier journal de désinstallation
+ConfirmUninstall=Voulez-vous vraiment désinstaller complètement %1 ainsi que tous ses composants ?
+UninstallOnlyOnWin64=La désinstallation de ce programme ne fonctionne qu'avec une version 64 bits de Windows.
+OnlyAdminCanUninstall=Ce programme ne peut être désinstallé que par un utilisateur disposant des droits d'administration.
+UninstallStatusLabel=Veuillez patienter pendant que %1 est retiré de votre ordinateur.
+UninstalledAll=%1 a été correctement désinstallé de cet ordinateur.
+UninstalledMost=La désinstallation de %1 est terminée.%n%nCertains éléments n'ont pas pu être supprimés automatiquement. Vous pouvez les supprimer manuellement.
+UninstalledAndNeedsRestart=Vous devez redémarrer l'ordinateur pour terminer la désinstallation de %1.%n%nVoulez-vous redémarrer maintenant ?
+UninstallDataCorrupted=Le ficher "%1" est altéré. Impossible de désinstaller
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Supprimer les fichiers partagés ?
+ConfirmDeleteSharedFile2=Le système indique que le fichier partagé suivant n'est plus utilisé par aucun programme. Souhaitez-vous que la désinstallation supprime ce fichier partagé ?%n%nSi des programmes utilisent encore ce fichier et qu'il est supprimé, ces programmes ne pourront plus fonctionner correctement. Si vous n'êtes pas sûr, choisissez Non. Laisser ce fichier dans votre système ne posera pas de problème.
+SharedFileNameLabel=Nom du fichier :
+SharedFileLocationLabel=Emplacement :
+WizardUninstalling=Etat de la désinstallation
+StatusUninstalling=Désinstallation de %1...
+
+; Les messages personnalisés suivants ne sont pas utilisé par l'installation
+; elle-même, mais si vous les utilisez dans vos scripts, vous devez les
+; traduire
+
+[CustomMessages]
+
+NameAndVersion=%1 version %2
+AdditionalIcons=Icônes supplémentaires :
+CreateDesktopIcon=Créer une icône sur le &Bureau
+CreateQuickLaunchIcon=Créer une icône dans la barre de &Lancement rapide
+ProgramOnTheWeb=Page d'accueil de %1
+UninstallProgram=Désinstaller %1
+LaunchProgram=Exécuter %1
+AssocFileExtension=&Associer %1 avec l'extension de fichier %2
+AssocingFileExtension=Associe %1 avec l'extension de fichier %2...

+ 307 - 0
DittoSetup/German.isl

@@ -0,0 +1,307 @@
+; ******************************************************
+; ***                                                ***
+; *** Inno Setup version 5.1.0+ German messages      ***
+; ***                                                ***
+; *** Original Author:                               ***
+; ***                                                ***
+; ***   Michael Reitz ([email protected])      ***
+; ***                                                ***
+; *** Contributors:                                  ***
+; ***                                                ***
+; ***   Roland Ruder ([email protected])                  ***
+; ***                                                ***
+; ******************************************************
+;
+; Diese Übersetzung hält sich an die neue deutsche Rechtschreibung.
+;
+; $jrsoftware: issrc/Files/Languages/German.isl,v 1.10 2005/03/22 11:01:49 mreitz Exp $
+
+[LangOptions]
+LanguageName=German
+LanguageID=$0407
+LanguageCodePage=1252
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Setup
+SetupWindowTitle=Setup - %1
+UninstallAppTitle=Entfernen
+UninstallAppFullTitle=%1 entfernen
+
+; *** Misc. common
+InformationTitle=Information
+ConfirmTitle=Bestätigen
+ErrorTitle=Fehler
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=%1 wird jetzt installiert. Möchten Sie fortfahren?
+LdrCannotCreateTemp=Es konnte keine temporäre Datei erstellt werden. Setup abgebrochen
+LdrCannotExecTemp=Die Datei konnte nicht im temporären Ordner ausgeführt werden. Setup abgebrochen
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nFehler %2: %3
+SetupFileMissing=Die Datei %1 fehlt im Installations-Ordner. Bitte beheben Sie das Problem, oder besorgen Sie sich eine neue Kopie des Programms.
+SetupFileCorrupt=Die Setup-Dateien sind beschädigt. Besorgen Sie sich bitte eine neue Kopie des Programms.
+SetupFileCorruptOrWrongVer=Die Setup-Dateien sind beschädigt oder inkompatibel zu dieser Version des Setups. Bitte beheben Sie das Problem, oder besorgen Sie sich eine neue Kopie des Programms.
+NotOnThisPlatform=Dieses Programm kann nicht unter %1 ausgeführt werden.
+OnlyOnThisPlatform=Dieses Programm muss unter %1 ausgeführt werden.
+OnlyOnTheseArchitectures=Dieses Programm kann nur auf Windows-Versionen installiert werden, die folgende Prozessor-Architekturen unterstützen:%n%n%1
+MissingWOW64APIs=Ihre Windows-Version enthält nicht die Funktionen, die vom Setup für eine 64-bit Installation benötigt werden. Installieren Sie bitte Service Pack %1, um dieses Problem zu beheben.
+WinVersionTooLowError=Dieses Programm benötigt %1 Version %2 oder höher.
+WinVersionTooHighError=Dieses Programm kann nicht unter %1 Version %2 oder höher installiert werden.
+AdminPrivilegesRequired=Sie müssen als Administrator angemeldet sein, um dieses Programm zu installieren.
+PowerUserPrivilegesRequired=Sie müssen als Administrator oder als Mitglied der Hauptbenutzer-Gruppe angemeldet sein, um dieses Programm zu installieren.
+SetupAppRunningError=Das Setup hat entdeckt, dass %1 zur Zeit ausgeführt wird.%n%nBitte schließen Sie jetzt alle laufenden Instanzen, und klicken Sie auf "OK", um fortzufahren, oder auf "Abbrechen", um zu beenden.
+UninstallAppRunningError=Die Deinstallation hat entdeckt, dass %1 zur Zeit ausgeführt wird.%n%nBitte schließen Sie jetzt alle laufenden Instanzen, und klicken Sie auf "OK", um fortzufahren, oder auf "Abbrechen", um zu beenden.
+
+; *** Misc. errors
+ErrorCreatingDir=Das Setup konnte den Ordner "%1" nicht erstellen
+ErrorTooManyFilesInDir=Das Setup konnte eine Datei im Ordner "%1" nicht erstellen, weil er zu viele Dateien enthält
+
+; *** Setup common messages
+ExitSetupTitle=Setup verlassen
+ExitSetupMessage=Das Setup ist noch nicht abgeschlossen. Wenn Sie jetzt beenden, wird das Programm nicht installiert.%n%nSie können das Setup zu einem späteren Zeitpunkt nochmals ausführen, um die Installation zu vervollständigen.%n%nSetup verlassen?
+AboutSetupMenuItem=&Über Setup ...
+AboutSetupTitle=Über Setup
+AboutSetupMessage=%1 Version %2%n%3%n%n%1 Internet-Seite:%n%4
+AboutSetupNote=
+TranslatorNote=German translation maintained by Michael Reitz ([email protected])
+
+; *** Buttons
+ButtonBack=< &Zurück
+ButtonNext=&Weiter >
+ButtonInstall=&Installieren
+ButtonOK=OK
+ButtonCancel=Abbrechen
+ButtonYes=&Ja
+ButtonYesToAll=J&a für Alle
+ButtonNo=&Nein
+ButtonNoToAll=N&ein für Alle
+ButtonFinish=&Fertigstellen
+ButtonBrowse=&Durchsuchen ...
+ButtonWizardBrowse=Du&rchsuchen ...
+ButtonNewFolder=&Neuen Ordner anlegen
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Setup-Sprache auswählen
+SelectLanguageLabel=Wählen Sie die Sprache aus, die während der Installation benutzt werden soll:
+
+; *** Common wizard text
+ClickNext="Weiter" zum Fortfahren, "Abbrechen" zum Verlassen.
+BeveledLabel=
+BrowseDialogTitle=Ordner suchen
+BrowseDialogLabel=Wählen Sie einen Ordner aus, und klicken Sie danach auf "OK".
+NewFolderName=Neuer Ordner
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Willkommen zum [name] Setup-Assistenten
+WelcomeLabel2=Dieser Assistent wird jetzt [name/ver] auf Ihrem Computer installieren.%n%nSie sollten alle anderen Anwendungen beenden, bevor Sie mit dem Setup fortfahren.
+
+; *** "Password" wizard page
+WizardPassword=Passwort
+PasswordLabel1=Diese Installation wird durch ein Passwort geschützt.
+PasswordLabel3=Bitte geben Sie das Passwort ein, und klicken Sie danach auf "Weiter". Achten Sie auf korrekte Groß-/Kleinschreibung.
+PasswordEditLabel=&Passwort:
+IncorrectPassword=Das eingegebene Passwort ist nicht korrekt. Bitte versuchen Sie es noch einmal.
+
+; *** "License Agreement" wizard page
+WizardLicense=Lizenzvereinbarung
+LicenseLabel=Lesen Sie bitte folgende, wichtige Informationen bevor Sie fortfahren.
+LicenseLabel3=Lesen Sie bitte die folgenden Lizenzvereinbarungen. Benutzen Sie bei Bedarf die Bildlaufleiste oder drücken Sie die "Bild Ab"-Taste.
+LicenseAccepted=Ich &akzeptiere die Vereinbarung
+LicenseNotAccepted=Ich &lehne die Vereinbarung ab
+
+; *** "Information" wizard pages
+WizardInfoBefore=Information
+InfoBeforeLabel=Lesen Sie bitte folgende, wichtige Informationen bevor Sie fortfahren.
+InfoBeforeClickLabel=Klicken Sie auf "Weiter", sobald Sie bereit sind mit dem Setup fortzufahren.
+WizardInfoAfter=Information
+InfoAfterLabel=Lesen Sie bitte folgende, wichtige Informationen bevor Sie fortfahren.
+InfoAfterClickLabel=Klicken Sie auf "Weiter", sobald Sie bereit sind mit dem Setup fortzufahren.
+
+; *** "User Information" wizard page
+WizardUserInfo=Benutzerinformationen
+UserInfoDesc=Bitte tragen Sie Ihre Daten ein.
+UserInfoName=&Name:
+UserInfoOrg=&Organisation:
+UserInfoSerial=&Seriennummer:
+UserInfoNameRequired=Sie müssen einen Namen eintragen.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Ziel-Ordner wählen
+SelectDirDesc=Wohin soll [name] installiert werden?
+SelectDirLabel3=Das Setup wird [name] in den folgenden Ordner installieren.
+SelectDirBrowseLabel=Klicken Sie auf "Weiter", um fortzufahren. Klicken Sie auf "Durchsuchen", falls Sie einen anderen Ordner auswählen möchten.
+DiskSpaceMBLabel=Mindestens [mb] MB freier Speicherplatz ist erforderlich.
+ToUNCPathname=Das Setup kann nicht in einen UNC-Pfad installieren. Wenn Sie auf ein Netzlaufwerk installieren möchten, müssen Sie dem Netzwerkpfad einen Laufwerksbuchstaben zuordnen.
+InvalidPath=Sie müssen einen vollständigen Pfad mit einem Laufwerksbuchstaben angeben; z.B.:%n%nC:\Beispiel%n%noder einen UNC-Pfad in der Form:%n%n\\Server\Freigabe
+InvalidDrive=Das angegebene Laufwerk bzw. der UNC-Pfad existiert nicht oder es kann nicht darauf zugegriffen werden. Wählen Sie bitte einen anderen Ordner.
+DiskSpaceWarningTitle=Nicht genug freier Speicherplatz
+DiskSpaceWarning=Das Setup benötigt mindestens %1 KB freien Speicherplatz zum Installieren, aber auf dem ausgewählten Laufwerk sind nur %2 KB verfügbar.%n%nMöchten Sie trotzdem fortfahren?
+DirNameTooLong=Der Ordnername/Pfad ist zu lang.
+InvalidDirName=Der Ordnername ist nicht gültig.
+BadDirName32=Ordnernamen dürfen keine der folgenden Zeichen enthalten:%n%n%1
+DirExistsTitle=Ordner existiert bereits
+DirExists=Der Ordner:%n%n%1%n%n existiert bereits. Möchten Sie trotzdem in diesen Ordner installieren?
+DirDoesntExistTitle=Ordner ist nicht vorhanden
+DirDoesntExist=Der Ordner:%n%n%1%n%nist nicht vorhanden. Soll der Ordner erstellt werden?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Komponenten auswählen
+SelectComponentsDesc=Welche Komponenten sollen installiert werden?
+SelectComponentsLabel2=Wählen Sie die Komponenten aus, die Sie installieren möchten. Klicken Sie auf "Weiter", wenn sie bereit sind fortzufahren.
+FullInstallation=Vollständige Installation
+CompactInstallation=Kompakte Installation
+CustomInstallation=Benutzerdefinierte Installation
+NoUninstallWarningTitle=Komponenten vorhanden
+NoUninstallWarning=Das Setup hat festgestellt, dass die folgenden Komponenten bereits auf Ihrem Computer installiert sind:%n%n%1%n%nDiese nicht mehr ausgewählten Komponenten werden nicht vom Computer entfernt.%n%nMöchten Sie trotzdem fortfahren?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceMBLabel=Die aktuelle Auswahl erfordert min. [mb] MB Speicherplatz.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Zusätzliche Aufgaben auswählen
+SelectTasksDesc=Welche zusätzlichen Aufgaben sollen ausgeführt werden?
+SelectTasksLabel2=Wählen Sie die zusätzlichen Aufgaben aus, die das Setup während der Installation von [name] ausführen soll, und klicken Sie danach auf "Weiter".
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Startmenü-Ordner auswählen
+SelectStartMenuFolderDesc=Wo soll das Setup die Programm-Verknüpfungen anlegen?
+SelectStartMenuFolderLabel3=Das Setup wird die Programm-Verknüpfungen im folgenden Startmenü-Ordner anlegen.
+SelectStartMenuFolderBrowseLabel=Klicken Sie auf "Weiter", um fortzufahren. Klicken Sie auf "Durchsuchen", falls Sie einen anderen Ordner auswählen möchten.
+MustEnterGroupName=Sie müssen einen Ordnernamen eingeben.
+GroupNameTooLong=Der Ordnername/Pfad ist zu lang.
+InvalidGroupName=Der Ordnername ist nicht gültig.
+BadGroupName=Der Ordnername darf keine der folgenden Zeichen enthalten:%n%n%1
+NoProgramGroupCheck2=&Keinen Ordner im Startmenü erstellen
+
+; *** "Ready to Install" wizard page
+WizardReady=Installation durchführen
+ReadyLabel1=Das Setup ist jetzt bereit, [name] auf Ihrem Computer zu installieren.
+ReadyLabel2a=Klicken Sie auf "Installieren", um mit der Installation zu beginnen, oder auf "Zurück", um Ihre Einstellungen zu überprüfen oder zu ändern.
+ReadyLabel2b=Klicken Sie auf "Installieren", um mit der Installation zu beginnen.
+ReadyMemoUserInfo=Benutzerinformationen:
+ReadyMemoDir=Ziel-Ordner:
+ReadyMemoType=Setup-Typ:
+ReadyMemoComponents=Ausgewählte Komponenten:
+ReadyMemoGroup=Startmenü-Ordner:
+ReadyMemoTasks=Zusätzliche Aufgaben:
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Vorbereitung der Installation
+PreparingDesc=Das Setup bereitet die Installation von [name] auf diesen Computer vor.
+PreviousInstallNotCompleted=Eine vorherige Installation/Deinstallation eines Programms wurde nicht abgeschlossen. Der Computer muss neu gestartet werden, um die Installation/Deinstallation zu beenden.%n%nStarten Sie das Setup nach dem Neustart Ihres Computers erneut, um die Installation von [name] durchzuführen.
+CannotContinue=Das Setup kann nicht fortfahren. Bitte klicken Sie auf "Abbrechen" zum Verlassen.
+
+; *** "Installing" wizard page
+WizardInstalling=Installiere ...
+InstallingLabel=Warten Sie bitte während [name] auf Ihrem Computer installiert wird.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Beenden des [name] Setup-Assistenten
+FinishedLabelNoIcons=Setup hat die Installation von [name] auf Ihrem Computer abgeschlossen.
+FinishedLabel=Setup hat die Installation von [name] auf Ihrem Computer abgeschlossen. Die Anwendung kann über die installierten Programm-Verknüpfungen gestartet werden.
+ClickFinish=Klicken Sie auf "Fertigstellen", um das Setup zu beenden.
+FinishedRestartLabel=Um die Installation von [name] abzuschließen, muss das Setup Ihren Computer neu starten. Möchten Sie jetzt neu starten?
+FinishedRestartMessage=Um die Installation von [name] abzuschließen, muss das Setup Ihren Computer neu starten.%n%nMöchten Sie jetzt neu starten?
+ShowReadmeCheck=Ja, ich möchte die LIESMICH-Datei sehen
+YesRadio=&Ja, Computer jetzt neu starten
+NoRadio=&Nein, ich werde den Computer später neu starten
+RunEntryExec=%1 starten
+RunEntryShellExec=%1 anzeigen
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=Nächste Diskette einlegen
+SelectDiskLabel2=Legen Sie bitte Diskette %1 ein, und klicken Sie auf "OK".%n%nWenn sich die Dateien von dieser Diskette in einem anderen als dem angezeigten Ordner befinden, dann geben Sie bitte den korrekten Pfad ein oder klicken auf "Durchsuchen".
+PathLabel=&Pfad:
+FileNotInDir2=Die Datei "%1" befindet sich nicht in "%2". Bitte Ordner ändern oder richtige Diskette einlegen.
+SelectDirectoryLabel=Geben Sie bitte an, wo die nächste Diskette eingelegt wird.
+
+; *** Installation phase messages
+SetupAborted=Setup konnte nicht abgeschlossen werden.%n%nBeheben Sie bitte das Problem, und starten Sie das Setup erneut.
+EntryAbortRetryIgnore=Klicken Sie auf "Wiederholen" für einen weiteren Versuch, "Ignorieren", um trotzdem fortzufahren, oder "Abbrechen", um die Installation abzubrechen.
+
+; *** Installation status messages
+StatusCreateDirs=Ordner werden erstellt ...
+StatusExtractFiles=Dateien werden ausgepackt ...
+StatusCreateIcons=Verknüpfungen werden erstellt ...
+StatusCreateIniEntries=INI-Einträge werden erstellt ...
+StatusCreateRegistryEntries=Registry-Einträge werden erstellt ...
+StatusRegisterFiles=Dateien werden registriert ...
+StatusSavingUninstall=Deinstallations-Informationen werden gespeichert ...
+StatusRunProgram=Installation wird beendet ...
+StatusRollback=Änderungen werden rückgängig gemacht ...
+
+; *** Misc. errors
+ErrorInternal2=Interner Fehler: %1
+ErrorFunctionFailedNoCode=%1 schlug fehl
+ErrorFunctionFailed=%1 schlug fehl; Code %2
+ErrorFunctionFailedWithMessage=%1 schlug fehl; Code %2.%n%3
+ErrorExecutingProgram=Datei kann nicht ausgeführt werden:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Registry-Schlüssel konnte nicht geöffnet werden:%n%1\%2
+ErrorRegCreateKey=Registry-Schlüssel konnte nicht erstellt werden:%n%1\%2
+ErrorRegWriteKey=Fehler beim Schreiben des Registry-Schlüssels:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Fehler beim Erstellen eines INI-Eintrages in die Datei "%1".
+
+; *** File copying errors
+FileAbortRetryIgnore=Klicken Sie auf "Wiederholen" für einen weiteren Versuch, "Ignorieren", um diese Datei zu überspringen (nicht empfohlen), oder "Abbrechen", um die Installation abzubrechen.
+FileAbortRetryIgnore2=Klicken Sie auf "Wiederholen" für einen weiteren Versuch, "Ignorieren", um trotzdem fortzufahren (nicht empfohlen), oder "Abbrechen", um die Installation abzubrechen.
+SourceIsCorrupted=Die Quelldatei ist beschädigt
+SourceDoesntExist=Die Quelldatei "%1" existiert nicht
+ExistingFileReadOnly=Die vorhandene Datei ist schreibgeschützt.%n%nKlicken Sie auf "Wiederholen", um den Schreibschutz zu entfernen, "Ignorieren", um die Datei zu überspringen, oder "Abbrechen", um die Installation abzubrechen.
+ErrorReadingExistingDest=Lesefehler in Datei:
+FileExists=Die Datei ist bereits vorhanden.%n%nSoll sie überschrieben werden?
+ExistingFileNewer=Die vorhandene Datei ist neuer als die Datei, die installiert werden soll. Es wird empfohlen die vorhandene Datei beizubehalten.%n%n Möchten Sie die vorhandene Datei beibehalten?
+ErrorChangingAttr=Fehler beim Ändern der Datei-Attribute:
+ErrorCreatingTemp=Fehler beim Erstellen einer Datei im Ziel-Ordner:
+ErrorReadingSource=Fehler beim Lesen der Quelldatei:
+ErrorCopying=Fehler beim Kopieren einer Datei:
+ErrorReplacingExistingFile=Fehler beim Ersetzen einer vorhandenen Datei:
+ErrorRestartReplace="Ersetzen nach Neustart" fehlgeschlagen:
+ErrorRenamingTemp=Fehler beim Umbenennen einer Datei im Ziel-Ordner:
+ErrorRegisterServer=DLL/OCX konnte nicht registriert werden: %1
+ErrorRegisterServerMissingExport="DllRegisterServer Export" nicht gefunden
+ErrorRegisterTypeLib=Typen-Bibliothek konnte nicht registriert werden: %1
+
+; *** Post-installation errors
+ErrorOpeningReadme=Fehler beim Öffnen der LIESMICH-Datei.
+ErrorRestartingComputer=Setup konnte den Computer nicht neu starten. Bitte führen Sie den Neustart selbst durch.
+
+; *** Uninstaller messages
+UninstallNotFound=Die Datei "%1" existiert nicht. Entfernen der Anwendung fehlgeschlagen.
+UninstallOpenError=Die Datei "%1" konnte nicht geöffnet werden. Entfernen der Anwendung fehlgeschlagen.
+UninstallUnsupportedVer=Das Format der Deinstallations-Datei "%1" konnte nicht erkannt werden. Entfernen der Anwendung fehlgeschlagen
+UninstallUnknownEntry=In der Deinstallations-Datei wurde ein unbekannter Eintrag (%1) gefunden
+ConfirmUninstall=Sind Sie sicher, dass Sie %1 und alle zugehörigen Komponenten entfernen möchten?
+UninstallOnlyOnWin64=Diese Installation kann nur unter 64-bit Windows-Versionen entfernt werden.
+OnlyAdminCanUninstall=Diese Installation kann nur von einem Benutzer mit Administrator-Rechten entfernt werden.
+UninstallStatusLabel=Warten Sie bitte während %1 von Ihrem Computer entfernt wird.
+UninstalledAll=%1 wurde erfolgreich von Ihrem Computer entfernt.
+UninstalledMost=Entfernen von %1 beendet.%n%nEinige Komponenten konnten nicht entfernt werden. Diese können von Ihnen gelöscht werden.
+UninstalledAndNeedsRestart=Um die Deinstallation von %1 abzuschließen, muss Ihr Computer neu gestartet werden.%n%nMöchten Sie jetzt neu starten?
+UninstallDataCorrupted="%1"-Datei ist beschädigt. Entfernen der Anwendung fehlgeschlagen.
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Gemeinsame Datei entfernen?
+ConfirmDeleteSharedFile2=Das System zeigt an, dass die folgende gemeinsame Datei von keinem anderen Programm mehr benutzt wird. Möchten Sie diese Datei entfernen lassen?%nSollte es doch noch Programme geben, die diese Datei benutzen, und sie wird entfernt, funktionieren diese Programme vielleicht nicht mehr richtig. Wenn Sie unsicher sind, wählen Sie "Nein" um die Datei im System zu belassen. Es schadet Ihrem System nicht, wenn Sie die Datei behalten.
+SharedFileNameLabel=Dateiname:
+SharedFileLocationLabel=Ordner:
+WizardUninstalling=Entfernen (Status)
+StatusUninstalling=Entferne %1 ...
+
+[CustomMessages]
+
+NameAndVersion=%1 Version %2
+AdditionalIcons=Zusätzliche Symbole:
+CreateDesktopIcon=&Desktop-Symbol anlegen
+CreateQuickLaunchIcon=Symbol in der Schnellstartleiste anlegen
+ProgramOnTheWeb=%1 im Internet
+UninstallProgram=%1 entfernen
+LaunchProgram=%1 starten
+AssocFileExtension=&Registriere %1 mit der %2-Dateierweiterung
+AssocingFileExtension=%1 wird mit der %2-Dateierweiterung registriert...

+ 323 - 0
DittoSetup/Italian.isl

@@ -0,0 +1,323 @@
+; *** Inno Setup versione 5.1.0+ lingua Italiana ***
+;
+; To download user-contributed translations of this file, go to:
+;   http://www.jrsoftware.org/is3rdparty.php
+;
+; Note: When translating this text, do not add periods (.) to the end of
+; messages that didn't have them already, because on those messages Inno
+; Setup adds the periods automatically (appending a period would result in
+; two periods being displayed).
+;
+; $jrsoftware: issrc/Files/Default.isl,v 1.67 2005/03/30 08:32:47 mlaan Exp $
+; Italian.isl revisione 27 - 2005/04/03
+;
+; Tradotto da ale5000 - [email protected] - http://digilander.libero.it/kazaaita/
+; Segnalatemi via e-mail eventuali errori o suggerimenti
+
+[LangOptions]
+; The following three entries are very important. Be sure to read and 
+; understand the '[LangOptions] section' topic in the help file.
+LanguageName=Italiano
+LanguageID=$0410
+LanguageCodePage=1252
+; If the language you are translating to requires special font faces or
+; sizes, uncomment any of the following entries and change them accordingly.
+;DialogFontName=
+;DialogFontSize=8
+;WelcomeFontName=Verdana
+;WelcomeFontSize=12
+;TitleFontName=Arial
+;TitleFontSize=29
+;CopyrightFontName=Arial
+;CopyrightFontSize=8
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Installazione
+SetupWindowTitle=Installazione di %1
+UninstallAppTitle=Disinstallazione
+UninstallAppFullTitle=Disinstallazione di %1
+
+; *** Misc. common
+InformationTitle=Informazioni
+ConfirmTitle=Conferma
+ErrorTitle=Errore
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=Questa è l'installazione di %1. Vuoi continuare?
+LdrCannotCreateTemp=Impossibile creare un file temporaneo. Installazione annullata
+LdrCannotExecTemp=Impossibile eseguire un file nella cartella temporanea. Installazione annullata
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nErrore %2: %3
+SetupFileMissing=File %1 non trovato nella cartella di installazione. Correggere il problema o richiedere una nuova copia del software.
+SetupFileCorrupt=I file di installazione sono danneggiati. Richiedere una nuova copia del software.
+SetupFileCorruptOrWrongVer=I file di installazione sono danneggiati, o sono incompatibili con questa versione del programma di installazione. Correggere il problema o richiedere una nuova copia del software.
+NotOnThisPlatform=Questo programma non è compatibile con %1.
+OnlyOnThisPlatform=Questo programma richiede %1.
+OnlyOnTheseArchitectures=Questo programma può essere installato solo su versioni di Windows progettate per le seguenti architetture del processore:%n%n%1
+MissingWOW64APIs=La versione di Windows che stai utilizzando non include la funzionalità richiesta dal programma di installazione per realizzare un'installazione a 64-bit. Per correggere questo problema, installa il Service Pack %1.
+WinVersionTooLowError=Questo programma richiede %1 versione %2 o successiva.
+WinVersionTooHighError=Questo programma non può essere installato su %1 versione %2 o successiva.
+AdminPrivilegesRequired=Devi accedere come amministratore per installare questo programma.
+PowerUserPrivilegesRequired=Devi accedere come amministratore o come membro del gruppo Power Users per poter installare questo programma.
+SetupAppRunningError=%1 è attualmente in esecuzione.%n%nChiudere adesso tutte le istanze del programma e poi premere OK, oppure premere Annulla per uscire.
+UninstallAppRunningError=%1 è attualmente in esecuzione.%n%nChiudere adesso tutte le istanze del programma e poi premere OK, oppure premere Annulla per uscire.
+
+; *** Misc. errors
+ErrorCreatingDir=Impossibile creare la cartella "%1"
+ErrorTooManyFilesInDir=Impossibile creare i file nella cartella "%1" perché contiene troppi file
+
+; *** Setup common messages
+ExitSetupTitle=Uscita dall'installazione
+ExitSetupMessage=L'installazione non è completa. Uscendo dall'installazione in questo momento, il programma non sarà installato.%n%nÈ possibile eseguire l'installazione in un secondo tempo.%n%nUscire dall'installazione?
+AboutSetupMenuItem=&Informazioni sull'installazione...
+AboutSetupTitle=Informazioni sull'installazione
+AboutSetupMessage=%1 versione %2%n%3%n%n%1 sito web:%n%4
+AboutSetupNote=
+TranslatorNote=
+
+; *** Buttons
+ButtonBack=< &Indietro
+ButtonNext=&Avanti >
+ButtonInstall=&Installa
+ButtonOK=OK
+ButtonCancel=Annulla
+ButtonYes=&Si
+ButtonYesToAll=Si a &tutto
+ButtonNo=&No
+ButtonNoToAll=N&o a tutto
+ButtonFinish=&Fine
+ButtonBrowse=&Sfoglia...
+ButtonWizardBrowse=S&foglia...
+ButtonNewFolder=&Crea nuova cartella
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Selezionare la lingua dell'installazione
+SelectLanguageLabel=Selezionare la lingua da utilizzare durante l'installazione:
+
+; *** Common wizard text
+ClickNext=Premere Avanti per continuare, o Annulla per uscire.
+BeveledLabel=
+BrowseDialogTitle=Sfoglia per cartelle
+BrowseDialogLabel=Selezionare una cartella dalla lista, poi premere OK.
+NewFolderName=Nuova cartella
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Benvenuti nel programma di installazione di [name]
+WelcomeLabel2=[name/ver] sarà installato sul computer.%n%nSi consiglia di chiudere tutte le applicazioni attive prima di procedere.
+
+; *** "Password" wizard page
+WizardPassword=Password
+PasswordLabel1=Questa installazione è protetta da password.
+PasswordLabel3=Inserire la password, poi premere Avanti per continuare. Le password sono case-sensitive.
+PasswordEditLabel=&Password:
+IncorrectPassword=La password inserita non è corretta, riprovare.
+
+; *** "License Agreement" wizard page
+WizardLicense=Contratto di licenza
+LicenseLabel=Leggere con attenzione le informazioni che seguono prima di procedere.
+LicenseLabel3=Leggere il seguente contratto di licenza. È necessario accettare tutti i termini del contratto per procedere con l'installazione.
+LicenseAccepted=&Accetto i termini del contratto di licenza 
+LicenseNotAccepted=&Non accetto i termini del contratto di licenza
+
+; *** "Information" wizard pages
+WizardInfoBefore=Informazioni
+InfoBeforeLabel=Leggere le importanti informazioni che seguono prima di procedere.
+InfoBeforeClickLabel=Quando sei pronto per proseguire, premi Avanti.
+WizardInfoAfter=Informazioni
+InfoAfterLabel=Leggere le importanti informazioni che seguono prima di procedere.
+InfoAfterClickLabel=Quando sei pronto per proseguire, premi Avanti.
+
+; *** "User Information" wizard page
+WizardUserInfo=Informazioni utente
+UserInfoDesc=Inserire le seguenti informazioni.
+UserInfoName=&Nome:
+UserInfoOrg=&Società:
+UserInfoSerial=&Numero di serie:
+UserInfoNameRequired=È necessario inserire un nome.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Selezione della cartella di installazione
+SelectDirDesc=Dove vuoi installare [name]?
+SelectDirLabel3=[name] sarà installato nella seguente cartella.
+SelectDirBrowseLabel=Per continuare, premere Avanti. Per scegliere un'altra cartella, premere Sfoglia.
+DiskSpaceMBLabel=Sono richiesti almeno [mb] MB di spazio sul disco.
+ToUNCPathname=Non è possiblie installare su un percorso UNC. Se stai installando attraverso una rete, devi connettere la risorsa come una unità di rete.
+InvalidPath=Devi inserire un percorso completo di lettera di unità; per esempio:%n%nC:\APP%n%no un percorso UNC nella forma:%n%n\\server\condivisione
+InvalidDrive=L'unità o il percorso UNC selezionato non esiste o non è accessibile. Selezionarne un'altro.
+DiskSpaceWarningTitle=Spazio su disco insufficiente
+DiskSpaceWarning=L'installazione richiede almeno %1 KB di spazio libero per eseguire l'installazione, ma l'unità selezionata ha solo %2 KB disponibili.%n%nVuoi continuare comunque?
+DirNameTooLong=Il nome della cartella o il percorso sono troppo lunghi.
+InvalidDirName=Il nome della cartella non è valido.
+BadDirName32=Il nome della cartella non può includere nessuno dei caratteri seguenti:%n%n%1
+DirExistsTitle=Cartella già esistente
+DirExists=La cartella:%n%n%1 esiste già.%n%nVuoi utilizzarla comunque?
+DirDoesntExistTitle=Cartella inesistente
+DirDoesntExist=La cartella:%n%n%1 non esiste.%n%nVuoi crearla?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Selezione componenti
+SelectComponentsDesc=Quali componenti devono essere installati?
+SelectComponentsLabel2=Selezionare i componenti da installare, deselezionare quelli che non vuoi installare. Premere Avanti per continuare.
+FullInstallation=Installazione completa
+; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
+CompactInstallation=Installazione compatta
+CustomInstallation=Installazione personalizzata
+NoUninstallWarningTitle=Componente esistente
+NoUninstallWarning=I seguenti componenti sono già installati sul computer:%n%n%1%n%nDeselezionando questi componenti non verranno disinstallati.%n%nVuoi continuare comunque?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceMBLabel=La selezione corrente richiede almeno [mb] MB di spazio su disco.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Selezione processi addizionali
+SelectTasksDesc=Quali processi aggiuntivi vuoi avviare?
+SelectTasksLabel2=Selezionare i processi aggiuntivi che verranno eseguiti durante l'installazione di [name], poi premere Avanti.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Selezione della cartella nel Menu Avvio/Start
+SelectStartMenuFolderDesc=Dove vuoi che l'installazione inserisca i collegamenti al programma?
+SelectStartMenuFolderLabel3=Saranno creati i collegamenti al programma nella seguente cartella del Menu Avvio/Start.
+SelectStartMenuFolderBrowseLabel=Per continuare, premere Avanti. Per selezionare un'altra cartella, premere Sfoglia.
+MustEnterGroupName=Devi inserire il nome della cartella.
+GroupNameTooLong=Il nome della cartella o il percorso sono troppo lunghi.
+InvalidGroupName=Il nome della cartella non è valido.
+BadGroupName=Il nome della cartella non può includere nessuno dei caratteri seguenti:%n%n%1
+NoProgramGroupCheck2=&Non creare una cartella nel Menu Avvio/Start
+
+; *** "Ready to Install" wizard page
+WizardReady=Pronto per l'installazione
+ReadyLabel1=Il programma di installazione è pronto per iniziare l'installazione di [name] sul computer.
+ReadyLabel2a=Premere Installa per continuare con l'installazione, o Indietro per rivedere o modificare le impostazioni.
+ReadyLabel2b=Premere Installa per procedere con l'installazione.
+ReadyMemoUserInfo=Informazioni utente:
+ReadyMemoDir=Cartella di installazione:
+ReadyMemoType=Tipo di installazione:
+ReadyMemoComponents=Componenti selezionati:
+ReadyMemoGroup=Cartella del menu Avvio/Start:
+ReadyMemoTasks=Processi addizionali:
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Preparazione all'installazione
+PreparingDesc=Preparazione all'installazione di [name] sul computer.
+PreviousInstallNotCompleted=L'installazione/disinstallazione precedente del programma non è stata completata. È necessario riavviare il sistema per completare l'installazione.%n%nAl successivo riavvio del sistema eseguire di nuovo l'installazione di [name].
+CannotContinue=L'installazione non può continuare. Premere Annulla per uscire.
+
+; *** "Installing" wizard page
+WizardInstalling=Installazione in corso
+InstallingLabel=Attendere il completamento dell'installazione di [name] sul computer.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Completamento dell'installazione di [name]
+FinishedLabelNoIcons=L'installazione di [name] è stata completata con successo.
+FinishedLabel=L'installazione di [name] è stata completata con successo. L'applicazione può essere eseguita selezionando le relative icone.
+ClickFinish=Premere Fine per uscire dall'installazione.
+FinishedRestartLabel=Per completare l'installazione di [name], è necessario riavviare il sistema. Vuoi riavviare ora?
+FinishedRestartMessage=Per completare l'installazione di [name], è necessario riavviare il sistema.%n%nVuoi riavviare ora?
+ShowReadmeCheck=Si, desidero vedere il file LEGGIMI adesso
+YesRadio=&Si, riavvia il sistema adesso
+NoRadio=&No, riavvia il sistema più tardi
+; used for example as 'Run MyProg.exe'
+RunEntryExec=Avvia %1
+; used for example as 'View Readme.txt'
+RunEntryShellExec=Visualizza %1
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=L'installazione necessita del disco successivo
+SelectDiskLabel2=Inserire il disco %1 e premere OK.%n%nSe i file su questo disco si trovano in una cartella diversa da quella visualizzata sotto, inserire il percorso corretto o premere Sfoglia.
+PathLabel=&Percorso:
+FileNotInDir2=Il file "%1" non è stato trovato in "%2". Inserire il disco corretto o selezionare un'altra cartella.
+SelectDirectoryLabel=Specificare il percorso del prossimo disco.
+
+; *** Installation phase messages
+SetupAborted=L'installazione non è stata completata.%n%nCorreggere il problema e rieseguire nuovamente l'installazione.
+EntryAbortRetryIgnore=Premere Riprova per ritentare nuovamente, Ignora per procedere in ogni caso, o Interrompi per terminare l'installazione.
+
+; *** Installation status messages
+StatusCreateDirs=Creazione cartelle...
+StatusExtractFiles=Estrazione file...
+StatusCreateIcons=Creazione icone...
+StatusCreateIniEntries=Creazione voci nei file INI...
+StatusCreateRegistryEntries=Creazione voci di registro...
+StatusRegisterFiles=Registrazione file...
+StatusSavingUninstall=Salvataggio delle informazioni di disinstallazione...
+StatusRunProgram=Termine dell'installazione...
+StatusRollback=Recupero delle modifiche...
+
+; *** Misc. errors
+ErrorInternal2=Errore Interno %1
+ErrorFunctionFailedNoCode=%1 fallito
+ErrorFunctionFailed=%1 fallito; codice %2
+ErrorFunctionFailedWithMessage=%1 fallito; codice %2.%n%3
+ErrorExecutingProgram=Impossibile eseguire il file:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Errore di apertura della chiave di registro:%n%1\%2
+ErrorRegCreateKey=Errore di creazione della chiave di registro:%n%1\%2
+ErrorRegWriteKey=Errore di scrittura della chiave di registro:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Errore nella creazione delle voci INI nel file "%1".
+
+; *** File copying errors
+FileAbortRetryIgnore=Premere Riprova per tentare di nuovo, Ignora per saltare questo file (sconsigliato), o Interrompi per terminare l'installazione.
+FileAbortRetryIgnore2=Premere Riprova per tentare di nuovo, Ignora per proseguire comunque (sconsigliato), o Interrompi per terminare l'installazione.
+SourceIsCorrupted=Il file sorgente è danneggiato
+SourceDoesntExist=Il file sorgente "%1" non esiste
+ExistingFileReadOnly=Il file esistente ha l'attributo di sola lettura.%n%nPremere Riprova per rimuovere l'attributo di sola lettura e ritentare, Ignora per saltare questo file, o Interrompi per terminare l'installazione.
+ErrorReadingExistingDest=Si è verificato un errore durante la lettura del file esistente:
+FileExists=Il file esiste già.%n%nDesideri sovrascriverlo?
+ExistingFileNewer=Il file esistente è più recente di quello che si stà installando. Si raccomanda di mantenere il file esistente.%n%nVuoi mantenere il file esistente?
+ErrorChangingAttr=Si è verificato un errore durante il tentativo di modifica dell'attributo del file esistente:
+ErrorCreatingTemp=Si è verificato un errore durante la creazione di un file nella cartella di installazione:
+ErrorReadingSource=Si è verificato un errore durante la lettura del file sorgente:
+ErrorCopying=Si è verificato un errore durante la copia di un file:
+ErrorReplacingExistingFile=Si è verificato un errore durante la sovrascrittura del file esistente:
+ErrorRestartReplace=Errore durante Riavvio-Sostituzione:
+ErrorRenamingTemp=Si è verificato un errore durante il tentativo di rinominare un file nella cartella di installazione:
+ErrorRegisterServer=Impossibile registrare la DLL/OCX: %1
+ErrorRegisterServerMissingExport=DllRegisterServer esportazione mancante
+ErrorRegisterTypeLib=Impossibile registrare la libreria di tipo: %1
+
+; *** Post-installation errors
+ErrorOpeningReadme=Si è verificato un errore durante l'apertura del file LEGGIMI.
+ErrorRestartingComputer=Impossibile riavviare il sistema. Riavviare manualmente.
+
+; *** Uninstaller messages
+UninstallNotFound=Il file "%1" non esiste. Impossibile disinstallare.
+UninstallOpenError=Il file "%1" non può essere aperto. Impossibile disinstallare
+UninstallUnsupportedVer=Il file log di disinstallazione "%1" è in un formato non riconosciuto da questa versione del programma di disinstallazione. Impossibile disinstallare
+UninstallUnknownEntry=Trovata una voce sconosciuta (%1) nel file di log della disinstallazione
+ConfirmUninstall=Sei sicuro di voler rimuovere completamente %1 e tutti i suoi componenti?
+UninstallOnlyOnWin64=Questo programma può essere disinstallato solo su Windows a 64-bit.
+OnlyAdminCanUninstall=Questa applicazione può essere disinstallata solo da un utente con privilegi di Amministratore.
+UninstallStatusLabel=Attendere fino a che %1 è stato rimosso dal computer.
+UninstalledAll=%1 è stato rimosso con successo dal computer.
+UninstalledMost=Disinstallazione di %1 completata.%n%nAlcuni elementi non possono essere rimossi. Dovranno essere rimossi manualmente.
+UninstalledAndNeedsRestart=Per completare la disinstallazione di %1, è necessario riavviare il sistema.%n%nVuoi riavviare adesso?
+UninstallDataCorrupted=Il file "%1" è danneggiato. Impossibile disinstallare
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Rimuovere il file condiviso?
+ConfirmDeleteSharedFile2=Il sistema indica che il seguente file condiviso non è più usato da nessun programma. Vuoi rimuovere questo file condiviso?%n%nSe qualche programma usasse questo file, potrebbe non funzionare più correttamente. Se non sei sicuro, scegli No. Lasciare il file nel sistema non può causare danni.
+SharedFileNameLabel=Nome del file:
+SharedFileLocationLabel=Percorso:
+WizardUninstalling=Stato della disinstallazione
+StatusUninstalling=Disinstallazione di %1 in corso...
+
+; The custom messages below aren't used by Setup itself, but if you make
+; use of them in your scripts, you'll want to translate them.
+
+[CustomMessages]
+
+NameAndVersion=%1 versione %2
+AdditionalIcons=Icone aggiuntive:
+CreateDesktopIcon=Crea un'icona sul &desktop
+CreateQuickLaunchIcon=Crea un'icona nella barra &Avvio veloce
+ProgramOnTheWeb=%1 sul Web
+UninstallProgram=Disinstalla %1
+LaunchProgram=Avvia %1
+AssocFileExtension=&Associa l'estensione %2 a %1
+AssocingFileExtension=Associazione dell'estensione %2 a %1 in corso...

+ 0 - 77
DittoSetup/Output/Changes.txt

@@ -1,77 +0,0 @@
-2.6.0.0 7-24-05
-	[ENHANCMENTS]
-	- Add suport for mulitple languages
-	- Added delay time for saving clips, if copies happen to fast Ditto will ignore them.  Settable on General Tab in Options.
-	- When focus is on the search combo, copy and delete will now work.
-
-2.5.1.0
-	[ENHANCMENTS]
-	- Added size limit on a clip, if a clip is over that limit the clip will not be saved
-	
-	[BUG FIXES]
-	- Back button will refresh the screen and go back to parent group
-	- When focus is on the description window then you click on another window, Ditto will hide it's window correctly
-
-2.5.0.0
-	[ENHANCMENTS]
-	- Show full Rich Text or Text in description window
-	- Added option to paste html format as plain text
-	
-
-2.4.0.2 02-27-05
-	[ENHANCMENTS]
-	- Added option to 'Find as you Type'
-	- Added option to always display ditto so the entire window is visible
-	- Added option to not show clips that are in Groups in the main list
-	
-2.4.0.1 02-08-05
-	[ENHANCMENTS]
-	- Clips are encrypted when sending accross the network
-		- Ditto must be updated on both sides for the network transfer to work
-	- Added the ability to draw RTF text in the clip list
-	- Added option to send Paste to active Window
-	- Can specify a sound to play when Ditto saves a clip from the clipboard
-	- Added shortcut key Shift - Enter to put only CF_TEXT on the clipboard and send a paste
-	- Can use the windows keys in shortcuts
-
-2.4  -  11-30-04
-	[ENHANCMENTS]
-	- Added Help file (Right-Click -> Help)
-	- If CF_DIB (bitmaps) is saved a thumbnail of the image will be displayed in the list and in the description (option to display image or not, Options -> Quick Paste)
-	- Added option to not start up the server thread (Options -> Friends -> Disable Receiving Clips)
-	- Set the font of the list control (Options -> Quick Paste, Right-Click -> Quick Options)
-	- Properties window is resizable
-	- When searching Spaces are treated as OR unless in quotes
-	- Added a move to group dialog (Right-Click -> Groups -> Move To Group)
-	- Added menu option to paste CF_TEXT(Paint Text) only (Right-Click -> Paste Plain Text Only)
-	- Check if ditto window is in a valid monitor when showing ditto
-
-	[BUG FIXES]
-	- Fixed memory leak due to improper termination of MTServerThread.
-	- Fixed "corrupted QuickPaste position when closing while minimized".
-	- Fixed auto internet update, it was being checked properly.
-	- Fixed bug if you used global hot keys to paste the last item in the list it would not paste.
-
-2.3  -  7-2-04
-	- Keep multiple Computers' clipboards in sync (Friends Tab)
-	- Send copied data automatically to other machines (Friends Tab)
-	- Right click and send individual clips to other machines
-	- Single click on the icon opens ditto
-	- New method for getting the current active window to paste into
-	- Option to close ditto on hot key if ditto is already active (General Tab, On by default)
-	- Menu option to disconnect/connect ditto to the clipboard chain
-	- If DAO is not installed you will be prompted to download the DAO redistribution package from http://ditto-cp.sourceforge.net/dao_setup.exe
-
-2.2  -  2-29-04
-	- Added global hot keys for the last 10 items copied
-	- Added back button when viewing groups
-	- Added menu options to set to
-		- Never Auto Delete
-		- Auto Delete
-		- Remove Hot key
-	- Fixed bug, when setting the group in the properties screen it was not setting the item to Never Auto Delete
-	- Fixed bug, checking the wrong url for update
-
-2.1  -  2-15-04
-	- Improved drawing speed
-

+ 0 - 1
DittoSetup/Output/DittoVersion.txt

@@ -1 +0,0 @@
-33882368

+ 310 - 0
DittoSetup/Polish.isl

@@ -0,0 +1,310 @@
+; *** Inno Setup version 5.1.0+ Polish messages ***
+; Krzysztof Cynarski <krzysztof at cynarski.net>
+;
+; To download user-contributed translations of this file, go to:
+;   http://www.jrsoftware.org/is3rdparty.php
+;
+; Note: When translating this text, do not add periods (.) to the end of
+; messages that didn't have them already, because on those messages Inno
+; Setup adds the periods automatically (appending a period would result in
+; two periods being displayed).
+;
+; $jrsoftware: issrc/Files/Languages/Polish.isl,v 1.15 2005/02/27 19:09:39 jr Exp $
+
+[LangOptions]
+LanguageName=Polski
+LanguageID=$0415
+LanguageCodePage=0
+
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Instalator
+SetupWindowTitle=Instalacja - %1
+UninstallAppTitle=Deinstalacja
+UninstallAppFullTitle=Odinstaluj %1
+
+; *** Misc. common
+InformationTitle=Informacja
+ConfirmTitle=Potwierdź
+ErrorTitle=Błąd
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=Ten program zainstaluje aplikację %1. Czy chcesz kontynuować?
+LdrCannotCreateTemp=Nie można utworzyć pliku tymczasowego. Instalacja przerwana
+LdrCannotExecTemp=Nie można uruchomić pliku w folderze tymczasowym. Instalacja przerwana
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nBłąd %2: %3
+SetupFileMissing=W folderze instalacyjnym brak pliku %1.%nProszę usunąć problem lub uzyskać nową kopię programu instalacyjnego.
+SetupFileCorrupt=Pliki składowe Instalatora są uszkodzone. Proszę uzyskać nową kopię Instalatora od producenta.
+SetupFileCorruptOrWrongVer=Pliki składowe instalatora są uszkodzone lub niezgodne z tą wersją Instalatora. Proszę rozwiązać ten problem lub uzyskać nową kopię Instalatora od producenta.
+NotOnThisPlatform=Tego programu nie można uruchomić w systemie %1.
+OnlyOnThisPlatform=Ten program wymaga systemu %1.
+OnlyOnTheseArchitectures=Ten program może być uruchomiony tylko w systemie Windows zaprojektowanym na procesory o architekturach:%n%n%1
+MissingWOW64APIs=Ta wersja systemu Windows nie zawiera komponentów niezbędnych do przeprowadzenia 64 bitowej instalacji. Aby usunąć ten problem, proszę zainstalować Service Pack %1.
+WinVersionTooLowError=Ten program wymaga %1 w wersji %2 lub późniejszej.
+WinVersionTooHighError=Ten program nie może być zainstalowany w wersji %2 lub późniejszej systemu %1.
+AdminPrivilegesRequired=Aby przeprowadzić instalację tego programu, Użytkownik musi być zalogowany z uprawnieniami administratora.
+PowerUserPrivilegesRequired=Aby przeprowadzić instalację tego programu, Użytkownik musi być zalogowany z uprawnieniami administratora lub użytkownika zaawansowanego.
+SetupAppRunningError=Instalator wykrył, że %1 jest aktualnie uruchomiony.%n%nZamknij wszystkie okienka tej aplikacji, a potem wybierz przycisk OK, aby kontynuować, lub Anuluj, aby przerwać instalację.
+UninstallAppRunningError=Deinstalator wykrył, że %1 jest aktualnie uruchomiony.%n%nZamknij teraz wszystkie okna tej aplikacji, a następnie wybierz przycisk OK, aby kontynuować, lub Anuluj, aby przerwać deinstalacje.
+
+; *** Misc. errors
+ErrorCreatingDir=Instalator nie mógł utworzyć foldera "%1"
+ErrorTooManyFilesInDir=Nie można utworzyć pliku w folderze %1, ponieważ zawiera on za dużo plików
+
+; *** Setup common messages
+ExitSetupTitle=Zakończ instalację
+ExitSetupMessage=Instalacja nie jest zakończona. Jeżeli przerwiesz ją teraz, program nie zostanie zainstalowany. Można ponowić instalację później, uruchamiając pakiet Instalatora.%n%nCzy chcesz przerwać instalację ?
+AboutSetupMenuItem=&O Instalatorze...
+AboutSetupTitle=O Instalatorze
+AboutSetupMessage=%1 wersja %2%n%3%n%n Strona domowa %1:%n%4
+AboutSetupNote=
+TranslatorNote=Wersja Polska: Krzysztof Cynarski%n<krzysztof at cynarski.net>
+
+; *** Buttons
+ButtonBack=< &Wstecz
+ButtonNext=&Dalej >
+ButtonInstall=&Instaluj
+ButtonOK=OK
+ButtonCancel=Anuluj
+ButtonYes=&Tak
+ButtonYesToAll=Tak na &wszystkie
+ButtonNo=&Nie
+ButtonNoToAll=N&ie na wszystkie
+ButtonFinish=&Zakończ
+ButtonBrowse=&Przeglądaj...
+ButtonWizardBrowse=P&rzeglądaj...
+ButtonNewFolder=&Utwórz nowy folder
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Wybierz język instalacji
+SelectLanguageLabel=Wybierz język używany podczas instalacji:
+
+; *** Common wizard text
+ClickNext=Wybierz przycisk Dalej, aby kontynuować, lub Anuluj, aby zakończyć instalację.
+BeveledLabel=
+BrowseDialogTitle=Wskaż folder
+BrowseDialogLabel=Wybierz folder z poniższej listy, a następnie wybierz przycisk OK.
+NewFolderName=Nowy folder
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Witamy w Kreatorze instalacji programu [name].
+WelcomeLabel2=Instalator zainstaluje teraz program [name/ver] na Twoim komputerze.%n%nZalecane jest zamknięcie wszystkich innych uruchomionych programów przed rozpoczęciem procesu instalacji.
+
+; *** "Password" wizard page
+WizardPassword=Hasło
+PasswordLabel1=Ta instalacja jest zabezpieczona hasłem.
+PasswordLabel3=Podaj hasło, potem wybierz przycisk Dalej, aby kontynuować. W hasłach rozróżniane są duże i małe litery.
+PasswordEditLabel=&Hasło:
+IncorrectPassword=Wprowadzone hasło nie jest poprawne. Spróbuj ponownie.
+
+; *** "License Agreement" wizard page
+WizardLicense=Umowa Licencyjna
+LicenseLabel=Przed kontynuacją proszę przeczytać poniższe ważne informacje.
+LicenseLabel3=Proszę przeczytać tekst Umowy Licencyjnej. Musisz zgodzić się na warunki tej umowy przed kontynuacją instalacji.
+LicenseAccepted=&Akceptuję warunki umowy
+LicenseNotAccepted=&Nie akceptuję warunków umowy
+
+; *** "Information" wizard pages
+WizardInfoBefore=Informacja
+InfoBeforeLabel=Przed przejściem do dalszego etapu instalacji, proszę przeczytać poniższą informację.
+InfoBeforeClickLabel=Kiedy będziesz gotowy do instalacji, kliknij przycisk Dalej.
+WizardInfoAfter=Informacja
+InfoAfterLabel=Przed przejściem do dalszego etapu instalacji, proszę przeczytać poniższą informację.
+InfoAfterClickLabel=Gdy będziesz gotowy do zakończenia instalacji, kliknij przycisk Dalej.
+
+; *** "User Information" wizard page
+WizardUserInfo=Dane Użytkownika
+UserInfoDesc=Proszę podać swoje dane.
+UserInfoName=&Nazwisko:
+UserInfoOrg=&Organizacja:
+UserInfoSerial=Numer &seryjny:
+UserInfoNameRequired=Musisz podać nazwisko.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Wybierz docelową lokalizację
+SelectDirDesc=Gdzie ma być zainstalowany program [name]?
+SelectDirLabel3=Instalator zainstaluje program [name] do poniższego folderu.
+SelectDirBrowseLabel=Kliknij przycisk Dalej, aby kontynuować. Jeśli chcesz określić inny folder, kliknij przycisk Przeglądaj.
+DiskSpaceMBLabel=Potrzeba przynajmniej [mb] MB wolnego miejsca na dysku.
+ToUNCPathname=Instalator nie może instalować do ścieżki UNC. Jeśli próbujesz zainstalować program na dysku sieciowym, najpierw zmapuj ten dysk.
+InvalidPath=Musisz wprowadzić pełną ścieżkę wraz z literą dysku, np.:%n%nC:\PROGRAM%n%nlub scieżkę sieciową (UNC) w formacie:%n%n\\serwer\udział
+InvalidDrive=Wybrany dysk lub udostępniony folder sieciowy nie istnieje. Proszę wybrać inny.
+DiskSpaceWarningTitle=Niewystarczająca ilość wolnego miejsca na dysku
+DiskSpaceWarning=Instalator wymaga co najmniej %1 KB wolnego miejsca na dysku. Wybrany dysk posiada tylko %2 KB dostępnego miejsca.%n%nCzy pomimo to chcesz kontynuować?
+DirNameTooLong=Nazwa folderu lub ścieżki jest za długa.
+InvalidDirName=Niepoprawna nazwa folderu.
+BadDirName32=Nazwa folderu nie może zawierać żadnego z następujących znaków:%n%n%1
+DirExistsTitle=Ten folder już istnieje
+DirExists=Folder%n%n%1%n%njuż istnieje. Czy pomimo to chcesz zainstalować program w tym folderze?
+DirDoesntExistTitle=Nie ma takiego folderu
+DirDoesntExist=Folder:%n%n%1%n%nnie istnieje. Czy chcesz, aby został utworzony?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Zaznacz komponenty
+SelectComponentsDesc=Które komponenty mają być zainstalowane?
+SelectComponentsLabel2=Zaznacz komponenty, które chcesz zainstalować, odznacz te, których nie chcesz zainstalować. Kliknij przycisk Dalej, aby kontynuować.
+FullInstallation=Instalacja pełna
+; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
+CompactInstallation=Instalacja podstawowa
+CustomInstallation=Instalacja użytkownika
+NoUninstallWarningTitle=Zainstalowane komponenty
+NoUninstallWarning=Instalator wykrył, że w twoim komputerze są już zainstalowane następujące komponenty:%n%n%1%n%nOdznaczenie któregokolwiek z nich nie spowoduje ich deinstalacji.%n%nCzy pomimo tego chcesz kontynuować?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceMBLabel=Wybrane komponenty wymagają co najmniej [mb] MB na dysku.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Zaznacz dodatkowe zadania
+SelectTasksDesc=Które dodatkowe zadania mają być wykonane?
+SelectTasksLabel2=Zaznacz dodatkowe zadania, które Instalator ma wykonać podczas instalacji programu [name], a następnie kliknij przycisk Dalej, aby kontynuować.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Wybierz folder Menu Start
+SelectStartMenuFolderDesc=Gdzie mają być umieszczone skróty do programu?
+SelectStartMenuFolderLabel3=Instalator stworzy skróty do programu w poniższym folderze Menu Start.
+SelectStartMenuFolderBrowseLabel=Kliknij przycisk Dalej, aby kontynuować. Jeśli chcesz określić inny folder, kliknij przycisk Przeglądaj.
+MustEnterGroupName=Musisz wprowadzić nazwę folderu.
+GroupNameTooLong=Nazwa folderu lub ścieżki jest za długa.
+InvalidGroupName=Niepoprawna nazwa folderu.
+BadGroupName=Nazwa folderu nie może zawierać żadnego z następujących znaków:%n%n%1
+NoProgramGroupCheck2=Nie twórz folderu w &Menu Start
+
+; *** "Ready to Install" wizard page
+WizardReady=Gotowy do rozpoczęcia instalacji
+ReadyLabel1=Instalator jest już gotowy do rozpoczęcia instalacji programu [name] na twoim komputerze.
+ReadyLabel2a=Kliknij przycisk Instaluj, aby rozpocząć instalację lub Wstecz, jeśli chcesz przejrzeć lub zmienić ustawienia.
+ReadyLabel2b=Kliknij przycisk Instaluj, aby kontynuować instalację.
+ReadyMemoUserInfo=Informacje użytkownika:
+ReadyMemoDir=Lokalizacja docelowa:
+ReadyMemoType=Rodzaj instalacji:
+ReadyMemoComponents=Wybrane komponenty:
+ReadyMemoGroup=Folder w Menu Start:
+ReadyMemoTasks=Dodatkowe zadania:
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Przygotowanie do instalacji
+PreparingDesc=Instalator przygotowuje instalację programu [name] na Twoim komputerze.
+PreviousInstallNotCompleted=Instalacja (usunięcie) poprzedniej wersji programu nie została zakończona. Będziesz musiał ponownie uruchomić komputer, aby zakończyć instalację. %n%nPo ponownym uruchomieniu komputera uruchom ponownie instalatora, aby zakończyć instalację aplikacji [name].
+CannotContinue=Instalator nie może kontynuować. Kliknij przycisk Anuluj, aby przerwać instalację.
+
+
+; *** "Installing" wizard page
+WizardInstalling=Instalacja
+InstallingLabel=Poczekaj, aż instalator zainstaluje aplikację [name] na Twoim komputerze.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Zakończono instalację programu [name]
+FinishedLabelNoIcons=Instalator zakończył instalację programu [name] na Twoim komputerze.
+FinishedLabel=Instalator zakończył instalację programu [name] na Twoim komputerze. Aplikacja może być uruchomiona poprzez użycie zainstalowanych skrótów.
+ClickFinish=Kliknij przycisk Zakończ, aby zakończyć instalację.
+FinishedRestartLabel=Aby zakończyć instalację programu [name], Instalator musi ponownie uruchomić Twój komputer. Czy chcesz teraz wykonać restart komputera?
+FinishedRestartMessage=Aby zakończyć instalację programu [name], Instalator musi ponownie uruchomić Twój komputer.%n%nCzy chcesz teraz wykonać restart komputera?
+ShowReadmeCheck=Tak, chcę przeczytać dodatkowe informacje
+YesRadio=&Tak, teraz uruchom ponownie
+NoRadio=&Nie, sam zrestartuję później
+; used for example as 'Run MyProg.exe'
+RunEntryExec=Uruchom %1
+; used for example as 'View Readme.txt'
+RunEntryShellExec=Pokaż %1
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=Instalator potrzebuje następnej dyskietki
+SelectDiskLabel2=Proszę włożyć dyskietkę %1 i kliknąć przycisk OK.%n%nJeśli pokazany poniżej folder nie określa położenia plików z tej dyskietki, wprowadź poprawną ścieżkę lub kliknij przycisk Przeglądaj.
+PathLabel=Ś&cieżka:
+FileNotInDir2=Plik "%1" nie został znaleziony na dyskietce "%2". Proszę włożyć właściwą dyskietkę lub wybrać inny folder.
+SelectDirectoryLabel=Proszę określić lokalizację następnej dyskietki.
+
+; *** Installation phase messages
+SetupAborted=Instalacja nie została zakończona.%n%nProszę rozwiązać problem i ponownie rozpocząć instalację.
+EntryAbortRetryIgnore=Możesz ponowić nieudaną czynność, zignorować ją (nie zalecane) lub przerwać instalację.
+
+; *** Installation status messages
+StatusCreateDirs=Tworzenie folderów...
+StatusExtractFiles=Dekompresja plików...
+StatusCreateIcons=Tworzenie ikon aplikacji...
+StatusCreateIniEntries=Tworzenie zapisów w plikach INI...
+StatusCreateRegistryEntries=Tworzenie zapisów w rejestrze...
+StatusRegisterFiles=Rejestracja plików...
+StatusSavingUninstall=Zachowanie informacji deinstalatora...
+StatusRunProgram=Kończenie instalacji...
+StatusRollback=Cofanie zmian...
+
+; *** Misc. errors
+ErrorInternal2=Wewnętrzny błąd: %1
+ErrorFunctionFailedNoCode=Błąd podczas wykonywania %1
+ErrorFunctionFailed=Błąd podczas wykonywania %1; kod %2
+ErrorFunctionFailedWithMessage=Błąd podczas wykonywania %1; code %2.%n%3
+ErrorExecutingProgram=Nie można uruchomić:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Błąd podczas otwierania klucza rejestru:%n%1\%2
+ErrorRegCreateKey=Błąd podczas tworzenia klucza rejestru:%n%1\%2
+ErrorRegWriteKey=Błąd podczas zapisu do klucza rejestru:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Błąd podczas tworzenia pozycji w pliku INI: "%1".
+
+; *** File copying errors
+FileAbortRetryIgnore=Możesz ponowić nieudaną czynność, zignorować ją, aby ominąć ten plik (nie zalecane), lub przerwać instalację.
+FileAbortRetryIgnore2=Możesz ponowić nieudaną czynność, zignorować ją (nie zalecane) lub przerwać instalację.
+SourceIsCorrupted=Plik źródłowy jest uszkodzony
+SourceDoesntExist=Plik źródłowy "%1" nie istnieje
+ExistingFileReadOnly=Istniejący plik jest oznaczony jako tylko-do-odczytu.%n%nMożesz ponowić (aby usunąć oznaczenie) zignorować (aby ominąć ten plik) lub przerwać instalację.
+ErrorReadingExistingDest=Wystąpił błąd podczas próby odczytu istniejącego pliku:
+FileExists=Plik już istnieje.%n%nCzy chcesz, aby Instalator zamienił go na nowy?
+ExistingFileNewer=Istniejący plik jest nowszy niż ten, który Instalator próbuje skopiować. Zalecanym jest zachowanie istniejącego pliku.%n%nCzy chcesz zachować istniejący plik?
+ErrorChangingAttr=Wystąpił błąd podczas próby zmiany atrybutów docelowego pliku:
+ErrorCreatingTemp=Wystąpił błąd podczas próby utworzenia pliku w folderze docelowym:
+ErrorReadingSource=Wystąpił błąd podczas próby odczytu pliku źródłowego:
+ErrorCopying=Wystąpił błąd podczas próby kopiowania pliku:
+ErrorReplacingExistingFile=Wystąpił błąd podczas próby zamiany istniejącego pliku:
+ErrorRestartReplace=Próba zastąpienia plików podczas restartu komputera nie powiodła się.
+ErrorRenamingTemp=Wystąpił błąd podczas próby zmiany nazwy pliku w folderze docelowym:
+ErrorRegisterServer=Nie można zarejestrować DLL/OCX: %1
+ErrorRegisterServerMissingExport=Eksportowana funkcja DllRegisterServer nie została znaleziona
+ErrorRegisterTypeLib=Nie mogę zarejestrować biblioteki typów: %1
+
+; *** Post-installation errors
+ErrorOpeningReadme=Wystąpił błąd podczas próby otwarcia pliku README.
+ErrorRestartingComputer=Instalator nie mógł zrestartować tego komputera. Proszę zrobić to samodzielnie.
+
+; *** Uninstaller messages
+UninstallNotFound=Plik "%1" nie istnieje. Nie można go odinstalować.
+UninstallOpenError=Plik "%1" nie mógł być otwarty. Nie można odinstalować
+UninstallUnsupportedVer=Ta wersja programu deinstalacyjnego nie rozpoznaje formatu logu deinstalacji. Nie można odinstalować
+UninstallUnknownEntry=W logu deinstalacji wystąpiła nieznana pozycja (%1)
+ConfirmUninstall=Czy na pewno chcesz usunąć program %1 i wszystkie jego składniki?
+UninstallOnlyOnWin64=Ten program moze być odinstalowany tylo w 64 bitowej wersji systemu Windows.
+OnlyAdminCanUninstall=Ta instalacja może być odinstalowana tylko przez użytkownika z prawami administratora.
+UninstallStatusLabel=Poczekaj aż program %1 zostanie usunięty z Twojego komputera.
+UninstalledAll=%1 został usunięty z Twojego komputera.
+UninstalledMost=Odinstalowywanie programu %1 zakończone.%n%nNiektóre elementy nie mogły być usunięte. Możesz je usunąć ręcznie.
+UninstalledAndNeedsRestart=Twój komputer musi być ponownie uruchomiony, aby zakończyć odinstalowywanie %1.%n%nCzy chcesz teraz ponownie uruchomić komputer?
+UninstallDataCorrupted=Plik "%1" jest uszkodzony. Nie można odinstalować
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Usunąć plik współdzielony?
+ConfirmDeleteSharedFile2=System wykrył, że następujący plik nie jest już używany przez żaden program. Czy chcesz odinstalować ten plik współdzielony?%n%nJeśli inne programy nadal używają tego pliku, a zostanie on usunięty, mogą one przestać działać prawidłowo. Jeśli nie jesteś pewny, wybierz przycisk Nie. Pozostawienie tego pliku w Twoim systemie nie spowoduje żadnych szkód.
+SharedFileNameLabel=Nazwa pliku:
+SharedFileLocationLabel=Położenie:
+WizardUninstalling=Stan deinstalacji
+StatusUninstalling=Deinstalacja %1...
+
+; The custom messages below aren't used by Setup itself, but if you make
+; use of them in your scripts, you'll want to translate them.
+
+[CustomMessages]
+
+NameAndVersion=%1 wersja %2
+AdditionalIcons=Dodatkowe ikony:
+CreateDesktopIcon=Utwórz ikonę na &pulpicie
+CreateQuickLaunchIcon=Utwórz ikonę na pasku &szybkiego uruchamiania
+ProgramOnTheWeb=Strona WWW programu %1
+UninstallProgram=Deinstalacja programu %1
+LaunchProgram=Uruchom program %1
+AssocFileExtension=&Przypisz program %1 do rozszerzenia pliku %2
+AssocingFileExtension=Przypisywanie programu %1 do rozszerzenia pliku %2...

+ 301 - 0
DittoSetup/Portuguese.isl

@@ -0,0 +1,301 @@
+; *** Inno Setup version 5.1.0+ Portuguese (Standard) messages ***
+;
+; Maintained by NARS ([email protected])
+;
+; $jrsoftware: issrc/Files/Languages/PortugueseStd.isl,v 1.7 2005/03/01 05:16:13 nars Exp $
+
+[LangOptions]
+LanguageName=Portugu<00EA>s (Standard)
+LanguageID=$0816
+LanguageCodePage=1252
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Instalação
+SetupWindowTitle=%1 - Instalação
+UninstallAppTitle=Desinstalação
+UninstallAppFullTitle=%1 - Desinstalação
+
+; *** Misc. common
+InformationTitle=Informação
+ConfirmTitle=Confirmação
+ErrorTitle=Erro
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=Irá ser instalado o %1. Deseja continuar?
+LdrCannotCreateTemp=Não foi possível criar um ficheiro temporário. Instalação cancelada
+LdrCannotExecTemp=Não foi possível executar um ficheiro na directoria temporária. Instalação cancelada
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nErro %2: %3
+SetupFileMissing=O ficheiro %1 não foi encontrado na pasta de instalação. Corrija o problema ou obtenha uma nova cópia do programa.
+SetupFileCorrupt=Os ficheiros de instalação estão corrompidos. Obtenha uma nova cópia do programa.
+SetupFileCorruptOrWrongVer=Os ficheiros de instalação estão corrompidos, ou são incompatíveis com esta versão do Assistente de Instalação. Corrija o problema ou obtenha uma nova cópia do programa.
+NotOnThisPlatform=Este programa não pode ser executado no %1.
+OnlyOnThisPlatform=Este programa deve ser executado no %1.
+OnlyOnTheseArchitectures=Este programa só pode ser instalado em versões do Windows preparadas para as seguintes arquitecturas:%n%n%1
+MissingWOW64APIs=A versão do Windows que está a utilizar não dispõe das funcionalidades necessárias para o Assistente de Instalação poder realizar uma instalação de 64-bit's. Para corrigir este problema, por favor instale o Service Pack %1.
+WinVersionTooLowError=Este programa necessita do %1 versão %2 ou mais recente.
+WinVersionTooHighError=Este programa não pode ser instalado no %1 versão %2 ou mais recente.
+AdminPrivilegesRequired=Deve iniciar sessão como administrador para instalar este programa.
+PowerUserPrivilegesRequired=Deve iniciar sessão como administrador ou membro do grupo de Super Utilizadores para instalar este programa.
+SetupAppRunningError=O Assistente de Instalação detectou que o %1 está em execução. Feche-o e de seguida clique em OK para continuar, ou clique em Cancelar para cancelar a instalação.
+UninstallAppRunningError=O Assistente de Desinstalação detectou que o %1 está em execução. Feche-o e de seguida clique em OK para continuar, ou clique em Cancelar para cancelar a desinstalação.
+
+; *** Misc. errors
+ErrorCreatingDir=O Assistente de Instalação não consegue criar a directoria "%1"
+ErrorTooManyFilesInDir=Não é possível criar um ficheiro na directoria "%1" porque esta contém demasiados ficheiros
+
+; *** Setup common messages
+ExitSetupTitle=Terminar a instalação
+ExitSetupMessage=A instalação não está completa. Se terminar agora, o programa não será instalado.%n%nMais tarde poderá executar novamente este Assistente de Instalação e concluir a instalação.%n%nDeseja terminar a instalação?
+AboutSetupMenuItem=&Acerca de...
+AboutSetupTitle=Acerca do Assistente de Instalação
+AboutSetupMessage=%1 versão %2%n%3%n%n%1 home page:%n%4
+AboutSetupNote=
+TranslatorNote=Portuguese translation maintained by NARS ([email protected])
+
+; *** Buttons
+ButtonBack=< &Anterior
+ButtonNext=&Seguinte >
+ButtonInstall=&Instalar
+ButtonOK=OK
+ButtonCancel=Cancelar
+ButtonYes=&Sim
+ButtonYesToAll=Sim para &todos
+ButtonNo=&Não
+ButtonNoToAll=Nã&o para todos
+ButtonFinish=&Concluir
+ButtonBrowse=&Procurar...
+ButtonWizardBrowse=P&rocurar...
+ButtonNewFolder=&Criar Nova Pasta
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Seleccione o Idioma do Assistente de Instalação
+SelectLanguageLabel=Seleccione o idioma para usar durante a Instalação:
+
+; *** Common wizard text
+ClickNext=Clique em Seguinte para continuar ou em Cancelar para cancelar a instalação.
+BeveledLabel=
+BrowseDialogTitle=Procurar Pasta
+BrowseDialogLabel=Seleccione uma pasta na lista abaixo e clique em OK.
+NewFolderName=Nova Pasta
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Bem-vindo ao Assistente de Instalação do [name]
+WelcomeLabel2=O Assistente de Instalação irá instalar o [name/ver] no seu computador.%n%nÉ recomendado que feche todas as outras aplicações antes de continuar.
+
+; *** "Password" wizard page
+WizardPassword=Palavra-passe
+PasswordLabel1=Esta instalação está protegida por palavra-passe.
+PasswordLabel3=Insira a palavra-passe e de seguida clique em Seguinte para continuar. Na palavra-passe existe diferença entre maiúsculas e minúsculas.
+PasswordEditLabel=&Palavra-passe:
+IncorrectPassword=A palavra-passe que introduziu não está correcta. Tente novamente.
+
+; *** "License Agreement" wizard page
+WizardLicense=Contrato de licença
+LicenseLabel=É importante que leia as seguintes informações antes de continuar.
+LicenseLabel3=Leia atentamente o seguinte contrato de licença. Deve aceitar os termos do contrato antes de continuar a instalação.
+LicenseAccepted=A&ceito o contrato
+LicenseNotAccepted=&Não aceito o contrato
+
+; *** "Information" wizard pages
+WizardInfoBefore=Informação
+InfoBeforeLabel=É importante que leia as seguintes informações antes de continuar.
+InfoBeforeClickLabel=Quando estiver pronto para continuar clique em Seguinte.
+WizardInfoAfter=Informação
+InfoAfterLabel=É importante que leia as seguintes informações antes de continuar.
+InfoAfterClickLabel=Quando estiver pronto para continuar clique em Seguinte.
+
+; *** "User Information" wizard page
+WizardUserInfo=Informações do utilizador
+UserInfoDesc=Introduza as suas informações.
+UserInfoName=Nome do &utilizador:
+UserInfoOrg=&Organização:
+UserInfoSerial=Número de &série:
+UserInfoNameRequired=Deve introduzir um nome.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Seleccione a localização de destino
+SelectDirDesc=Onde deverá ser instalado o [name]?
+SelectDirLabel3=O [name] será instalado na seguinte pasta.
+SelectDirBrowseLabel=Para continuar, clique em Seguinte. Se desejar seleccionar uma pasta diferente, clique em Procurar.
+DiskSpaceMBLabel=É necessário pelo menos [mb] MB de espaço livre em disco.
+ToUNCPathname=O Assistente de Instalação não pode instalar num caminho do tipo UNC. Se está a tentar fazer a instalação numa rede, precisa de mapear a unidade de rede.
+InvalidPath=É necessário indicar o caminho completo com a letra de unidade; por exemplo:%n%nC:\APP%n%nou um caminho UNC no formato:%n%n\\servidor\partilha
+InvalidDrive=A unidade ou partilha UNC seleccionada não existe ou não está acessível. Seleccione outra.
+DiskSpaceWarningTitle=Não há espaço suficiente no disco
+DiskSpaceWarning=O Assistente de Instalação necessita de pelo menos %1 KB de espaço livre, mas a unidade seleccionada tem apenas %2 KB disponíveis.%n%nDeseja continuar de qualquer forma?
+DirNameTooLong=O nome ou caminho para a pasta é demasiado longo.
+InvalidDirName=O nome da pasta não é válido.
+BadDirName32=O nome da pasta não pode conter nenhum dos seguintes caracteres:%n%n%1
+DirExistsTitle=A pasta já existe
+DirExists=A pasta:%n%n%1%n%njá existe. Pretende instalar nesta pasta?
+DirDoesntExistTitle=A pasta não existe
+DirDoesntExist=A pasta:%n%n%1%n%nnão existe. Pretende que esta pasta seja criada?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Seleccione os componentes
+SelectComponentsDesc=Que componentes deverão ser instalados?
+SelectComponentsLabel2=Seleccione os componentes que quer instalar e desseleccione os componentes que não quer instalar. Clique em Seguinte quando estiver pronto para continuar.
+FullInstallation=Instalação Completa
+; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
+CompactInstallation=Instalação Compacta
+CustomInstallation=Instalação Personalizada
+NoUninstallWarningTitle=Componentes Encontrados
+NoUninstallWarning=O Assistente de Instalação detectou que os seguintes componentes estão instalados no seu computador:%n%n%1%n%nSe desseleccionar estes componentes eles não serão desinstalados.%n%nDeseja continuar?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceMBLabel=A selecção actual necessita de pelo menos [mb] MB de espaço em disco.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Seleccione tarefas adicionais
+SelectTasksDesc=Que tarefas adicionais deverão ser executadas?
+SelectTasksLabel2=Seleccione as tarefas adicionais que deseja que o Assistente de Instalação execute na instalação do [name] e em seguida clique em Seguinte.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Seleccione a pasta do Menu Iniciar
+SelectStartMenuFolderDesc=Onde deverão ser colocados os ícones de atalho do programa?
+SelectStartMenuFolderLabel3=Os ícones de atalho do programa serão criados na seguinte pasta do Menu Iniciar.
+SelectStartMenuFolderBrowseLabel=Para continuar, clique em Seguinte. Se desejar seleccionar uma pasta diferente, clique em Procurar.
+MustEnterGroupName=É necessário introduzir um nome para a pasta.
+GroupNameTooLong=O nome ou caminho para a pasta é demasiado longo.
+InvalidGroupName=O nome da pasta não é válido.
+BadGroupName=O nome da pasta não pode conter nenhum dos seguintes caracteres:%n%n%1
+NoProgramGroupCheck2=&Não criar nenhuma pasta no Menu Iniciar
+
+; *** "Ready to Install" wizard page
+WizardReady=Pronto para Instalar
+ReadyLabel1=O Assistente de Instalação está pronto para instalar o [name] no seu computador.
+ReadyLabel2a=Clique em Instalar para continuar a instalação, ou clique em Anterior se desejar rever ou alterar alguma das configurações.
+ReadyLabel2b=Clique em Instalar para continuar a instalação.
+ReadyMemoUserInfo=Informações do utilizador:
+ReadyMemoDir=Localização de destino:
+ReadyMemoType=Tipo de instalação:
+ReadyMemoComponents=Componentes seleccionados:
+ReadyMemoGroup=Pasta do Menu Iniciar:
+ReadyMemoTasks=Tarefas adicionais:
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Preparando-se para instalar
+PreparingDesc=Preparando-se para instalar o [name] no seu computador.
+PreviousInstallNotCompleted=A instalação/remoção de um programa anterior não foi completada. Necessitará de reiniciar o computador para completar essa instalação.%n%nDepois de reiniciar o computador, execute novamente este Assistente de Instalação para completar a instalação do [name].
+CannotContinue=A Instalação não pode continuar. Clique em Cancelar para sair.
+
+; *** "Installing" wizard page
+WizardInstalling=A instalar
+InstallingLabel=Aguarde enquanto o Assistente de Instalação instala o [name] no seu computador.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Instalação do [name] concluída
+FinishedLabelNoIcons=O Assistente de Instalação concluiu a instalação do [name] no seu computador.
+FinishedLabel=O Assistente de Instalação concluiu a instalação do [name] no seu computador. A aplicação pode ser iniciada através dos ícones instalados.
+ClickFinish=Clique em Concluir para finalizar o Assistente de Instalação.
+FinishedRestartLabel=Para completar a instalação do [name], o Assistente de Instalação deverá reiniciar o seu computador. Deseja reiniciar agora?
+FinishedRestartMessage=Para completar a instalação do [name], o Assistente de Instalação deverá reiniciar o seu computador.%n%nDeseja reiniciar agora?
+ShowReadmeCheck=Sim, desejo ver o ficheiro LEIAME
+YesRadio=&Sim, desejo reiniciar o computador agora
+NoRadio=&Não, desejo reiniciar o computador mais tarde
+; used for example as 'Run MyProg.exe'
+RunEntryExec=Executar %1
+; used for example as 'View Readme.txt'
+RunEntryShellExec=Visualizar %1
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=O Assistente de Instalação precisa do disco seguinte
+SelectDiskLabel2=Introduza o disco %1 e clique em OK.%n%nSe os ficheiros deste disco estiverem num local diferente do mostrado abaixo, indique o caminho correcto ou clique em Procurar.
+PathLabel=&Caminho:
+FileNotInDir2=O ficheiro "%1" não foi encontrado em "%2". Introduza o disco correcto ou seleccione outra pasta.
+SelectDirectoryLabel=Indique a localização do disco seguinte.
+
+; *** Installation phase messages
+SetupAborted=A instalação não está completa.%n%nCorrija o problema e execute o Assistente de Instalação novamente.
+EntryAbortRetryIgnore=Clique em Repetir para tentar novamente, Ignorar para continuar de qualquer forma, ou Abortar para cancelar a instalação.
+
+; *** Installation status messages
+StatusCreateDirs=A criar directorias...
+StatusExtractFiles=A extrair ficheiros...
+StatusCreateIcons=A criar atalhos...
+StatusCreateIniEntries=A criar entradas em INI...
+StatusCreateRegistryEntries=A criar entradas no registo...
+StatusRegisterFiles=A registar ficheiros...
+StatusSavingUninstall=A guardar informações para desinstalação...
+StatusRunProgram=A concluir a instalação...
+StatusRollback=A anular as alterações...
+
+; *** Misc. errors
+ErrorInternal2=Erro interno: %1
+ErrorFunctionFailedNoCode=%1 falhou
+ErrorFunctionFailed=%1 falhou; código %2
+ErrorFunctionFailedWithMessage=%1 falhou; código %2.%n%3
+ErrorExecutingProgram=Não é possível executar o ficheiro:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Erro ao abrir a chave de registo:%n%1\%2
+ErrorRegCreateKey=Erro ao criar a chave de registo:%n%1\%2
+ErrorRegWriteKey=Erro ao escrever na chave de registo:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Erro ao criar entradas em INI no ficheiro "%1".
+
+; *** File copying errors
+FileAbortRetryIgnore=Clique em Repetir para tentar novamente, Ignorar para ignorar este ficheiro (não recomendado), ou Abortar para cancelar a instalação.
+FileAbortRetryIgnore2=Clique em Repetir para tentar novamente, Ignorar para continuar de qualquer forma (não recomendado), ou Abortar para cancelar a instalação.
+SourceIsCorrupted=O ficheiro de origem está corrompido
+SourceDoesntExist=O ficheiro de origem "%1" não existe
+ExistingFileReadOnly=O ficheiro existente tem o atributo "só de leitura".%n%nClique em Repetir para remover o atributo "só de leitura" e tentar novamente, Ignorar para ignorar este ficheiro, ou Abortar para cancelar a instalação.
+ErrorReadingExistingDest=Ocorreu um erro ao tentar ler o ficheiro existente:
+FileExists=O ficheiro já existe.%n%nDeseja substituí-lo?
+ExistingFileNewer=O ficheiro existente é mais recente que o que está a ser instalado. É recomendado que mantenha o ficheiro existente.%n%nDeseja manter o ficheiro existente?
+ErrorChangingAttr=Ocorreu um erro ao tentar alterar os atributos do ficheiro existente:
+ErrorCreatingTemp=Ocorreu um erro ao tentar criar um ficheiro na directoria de destino:
+ErrorReadingSource=Ocorreu um erro ao tentar ler o ficheiro de origem:
+ErrorCopying=Ocorreu um erro ao tentar copiar um ficheiro:
+ErrorReplacingExistingFile=Ocorreu um erro ao tentar substituir o ficheiro existente:
+ErrorRestartReplace=RestartReplace failed:
+ErrorRenamingTemp=Ocorreu um erro ao tentar mudar o nome de um ficheiro na directoria de destino:
+ErrorRegisterServer=Não é possível registar o DLL/OCX: %1
+ErrorRegisterServerMissingExport=DllRegisterServer export not found
+ErrorRegisterTypeLib=Unable to register the type library: %1
+
+; *** Post-installation errors
+ErrorOpeningReadme=Ocorreu um erro ao tentar abrir o ficheiro LEIAME.
+ErrorRestartingComputer=O Assistente de Instalação não consegue reiniciar o computador. Por favor reinicie manualmente.
+
+; *** Uninstaller messages
+UninstallNotFound=O ficheiro "%1" não existe. Não é possível desinstalar.
+UninstallOpenError=Não foi possível abrir o ficheiro "%1". Não é possível desinstalar.
+UninstallUnsupportedVer=O ficheiro log de desinstalação "%1" está num formato que não é reconhecido por esta versão do desinstalador. Não é possível desinstalar
+UninstallUnknownEntry=Foi encontrada uma entrada desconhecida (%1) no ficheiro log de desinstalação
+ConfirmUninstall=Tem a certeza que deseja remover completamente o %1 e todos os seus componentes?
+UninstallOnlyOnWin64=Esta desinstalação só pode ser realizada na versão de 64-bit's do Windows.
+OnlyAdminCanUninstall=Esta desinstalação só pode ser realizada por um utilizador com privilégios administrativos.
+UninstallStatusLabel=Por favor aguarde enquanto o %1 está a ser removido do seu computador.
+UninstalledAll=O %1 foi removido do seu computador com sucesso.
+UninstalledMost=A desinstalação do %1 está concluída.%n%nAlguns elementos não puderam ser removidos. Estes elementos podem ser removidos manualmente.
+UninstalledAndNeedsRestart=Para completar a desinstalação do %1, o computador deve ser reiniciado.%n%nDeseja reiniciar agora?
+UninstallDataCorrupted=O ficheiro "%1" está corrompido. Não é possível desinstalar
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Remover ficheiro partilhado?
+ConfirmDeleteSharedFile2=O sistema indica que o seguinte ficheiro partilhado já não está a ser utilizado por nenhum programa. Deseja removê-lo?%n%nSe algum programa ainda necessitar deste ficheiro, poderá não funcionar correctamente depois de o remover. Se não tiver a certeza, seleccione Não. Manter o ficheiro não causará nenhum problema.
+SharedFileNameLabel=Nome do ficheiro:
+SharedFileLocationLabel=Localização:
+WizardUninstalling=Estado da desinstalação
+StatusUninstalling=A desinstalar o %1...
+
+; The custom messages below aren't used by Setup itself, but if you make
+; use of them in your scripts, you'll want to translate them.
+
+[CustomMessages]
+
+NameAndVersion=%1 versão %2
+AdditionalIcons=Ícones adicionais:
+CreateDesktopIcon=Criar ícone no &Ambiente de Trabalho
+CreateQuickLaunchIcon=Criar ícone na barra de Iniciação &Rápida
+ProgramOnTheWeb=%1 na Web
+UninstallProgram=Desinstalar o %1
+LaunchProgram=Executar o %1
+AssocFileExtension=&Associar o %1 aos ficheiros com a extensão %2
+AssocingFileExtension=A associar o %1 aos ficheiros com a extensão %2...

+ 321 - 0
DittoSetup/Spanish.isl

@@ -0,0 +1,321 @@
+; *** Inno Setup version 5.1.0+ Spanish messages ***
+;
+; To download user-contributed translations of this file, go to:
+;   http://www.jrsoftware.org/is3rdparty.php
+;
+; Note: When translating this text, do not add periods (.) to the end of
+; messages that didn't have them already, because on those messages Inno
+; Setup adds the periods automatically (appending a period would result in
+; two periods being displayed).
+;
+; $jrsoftware: issrc/Files/Default.isl,v 1.66 2005/02/25 20:23:48 mlaan Exp $
+; Translated by Emiliano Llano Díaz
+; [email protected]
+
+[LangOptions]
+LanguageName=Espa<00f1>ol
+LanguageID=$0c0a
+LanguageCodePage=0
+; If the language you are translating to requires special font faces or
+; sizes, uncomment any of the following entries and change them accordingly.
+;DialogFontName=verdana
+;DialogFontSize=8
+;WelcomeFontName=Verdana
+;WelcomeFontSize=12
+;TitleFontName=Arial
+;TitleFontSize=29
+;CopyrightFontName=Arial
+;CopyrightFontSize=8
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Instalar
+SetupWindowTitle=Instalar - %1
+UninstallAppTitle=Eliminar
+UninstallAppFullTitle=Eliminar - %1
+
+; *** Misc. common
+InformationTitle=Información
+ConfirmTitle=Confirmar
+ErrorTitle=Error
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=Este programa instalará %1 en su sistema. ¿Desea continuar?
+LdrCannotCreateTemp=Imposible crear un archivo temporal. Instalación cancelada
+LdrCannotExecTemp=Imposible ejecutar archivo en el directorio temporal. Instalación interrumpida
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nError %2: %3
+SetupFileMissing=El archivo %1 no se encuentra en la carpeta de instalación. Por favor corrija el problema u obtenga una nueva copia del programa.
+SetupFileCorrupt=Los archivos de instalación están dañados. Por favor obtenga una copia nueva del programa.
+SetupFileCorruptOrWrongVer=Los archivos de instalación están dañados, o son incompatibles con esta versión del Instalador. Por favor corrija el problema u obtenga una nueva copia del programa.
+NotOnThisPlatform=Este programa no funcionará en un sistema %1.
+OnlyOnThisPlatform=Este programa debe ejecutarse en un sistema %1.
+OnlyOnTheseArchitectures=Este programa sólo puede instalarse en versiones de Windows diseñadas para las siguientes arquitecturas de procesadores:%n%n%1
+MissingWOW64APIs=La versión de Windows que usa no tiene la funcionalidad requerida para realizar instalaciones de 64 bits. Para corregir este problema, por favor instale el Service Pack %1.
+WinVersionTooLowError=Este programa requiere %1 versión %2 o posterior.
+WinVersionTooHighError=Este programa no puede instalarse en %1 versión %2 o posterior.
+AdminPrivilegesRequired=Debe iniciar la sesión como un administrador cuando instale este programa.
+PowerUserPrivilegesRequired=Debe ser el administrador o equivalente para poder instalar este programa.
+SetupAppRunningError=El Instalador ha detectado que %1 está en ejecución.%n%nPor favor cierre todas sus instancias, luego seleccione Aceptar para continuar, o Cancelar para salir.
+UninstallAppRunningError=El Instalador ha detectado que %1 está en ejecución.%n%nPor favor cierre todas sus instancias, luego seleccione Aceptar para continuar, o Cancelar para salir.
+
+; *** Misc. errors
+ErrorCreatingDir=Imposible crear la carpeta "%1"
+ErrorTooManyFilesInDir=Imposible crear un archivo en la carpeta "%1" porque contiene demasiados archivos
+
+; *** Setup common messages
+ExitSetupTitle=Salir de la Instalación
+ExitSetupMessage=La instalación no se completó. Si abandona ahora, el programa no se instalará.%n%nPodrá ejecutar de nuevo este programa para completar el proceso.%n%n¿Salir de la Instalación?
+AboutSetupMenuItem=&Acerca del Instalador...
+AboutSetupTitle=Acerca del Instalador
+AboutSetupMessage=%1 versión %2%n%3%n%n%1 página Web:%n%4
+AboutSetupNote=
+TranslatorNote=
+
+
+; *** Buttons
+ButtonBack=< &Atrás
+ButtonNext=&Siguiente >
+ButtonInstall=&Instalar
+ButtonOK=Aceptar
+ButtonCancel=Cancelar
+ButtonYes=&Sí
+ButtonYesToAll=Sí a &Todo
+ButtonNo=&No
+ButtonNoToAll=N&o a Todo
+ButtonFinish=&Terminar
+ButtonBrowse=&Examinar...
+ButtonWizardBrowse=E&xaminar...
+ButtonNewFolder=&Crear nueva carpeta
+
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Seleccione el idioma de la instalación
+SelectLanguageLabel=Seleccione el idioma que desea usar durante la instalación:
+
+; *** Common wizard text
+ClickNext=Haga clic sobre Siguiente para continuar o sobre Cancelar para salir.
+BeveledLabel=
+BrowseDialogTitle=Buscar carpeta
+BrowseDialogLabel=Seleccione una carpeta de la lista y luego haga clic en Aceptar.
+NewFolderName=Nueva carpeta
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Bienvenido a la instalación de [name].
+WelcomeLabel2=Este programa instalará [name/ver] en su computadora.%n%nSe recomienda cerrar todos los programas en ejecución antes de continuar.  Esto ayudará a prevenir conflictos durante el proceso.
+
+; *** "Password" wizard page
+WizardPassword=Contraseña
+PasswordLabel1=Esta instalación está protegida por contraseña.
+PasswordLabel3=Por favor suministre su contraseña.%n%nUse mayúsculas y minúsculas.
+PasswordEditLabel=&Contraseña:
+IncorrectPassword=La contraseña suministrada no es correcta. Por favor intente de nuevo.
+
+; *** "License Agreement" wizard page
+WizardLicense=Acuerdo de Licencia
+LicenseLabel=Por favor lea la siguiente información importante antes de continuar.
+LicenseLabel3=Por favor lea el siguiente Acuerdo de Licencia.  Use la barra de desplazamiento o presione la tecla Av Pág para ver el resto de la licencia.
+LicenseAccepted=&Acepto los términos del Acuerdo
+LicenseNotAccepted=&No acepto los términos del Acuerdo
+
+; *** "Information" wizard pages
+WizardInfoBefore=Información
+InfoBeforeLabel=Por favor lea la siguiente información importante antes de continuar.
+InfoBeforeClickLabel=Cuando esté listo para continuar con la instalación, haga clic sobre el botón Siguiente.
+WizardInfoAfter=Información
+InfoAfterLabel=Por favor lea la siguiente información importante antes de continuar.
+InfoAfterClickLabel=Cuando esté listo para continuar, haga clic sobre el botón Siguiente.
+
+; *** "User Information" wizard page
+WizardUserInfo=Información de usuario
+UserInfoDesc=Por favor proporcione su información.
+UserInfoName=Nombre de &usuario:
+UserInfoOrg=&Organización:
+UserInfoSerial=Número de &Serie:
+UserInfoNameRequired=Debe proporcionar su nombre.
+
+; *** "Select Destination Directory" wizard page
+WizardSelectDir=Seleccione la Carpeta Destino
+SelectDirDesc=¿En dónde se instalará [name]?
+SelectDirLabel3=Se instalará [name] en la siguiente carpeta.
+SelectDirBrowseLabel=Para continuar haga clic en Siguiente. Si quiere seleccionar otra carpeta, haga clic en Examinar.
+DiskSpaceMBLabel=Se requiere un mínimo de [mb] MB de espacio en el disco.
+ToUNCPathname=No se puede instalar en un directorio UNC. Si está tratando de instalar en una red, necesitará asignarlo a una unidad de red.
+InvalidPath=Debe proporcionar una ruta completa con la letra de la unidad; por ejemplo:%nC:\APP
+InvalidDrive=La unidad que seleccionó no existe. Por favor seleccione otra.
+DiskSpaceWarningTitle=No hay espacio suficiente en el disco
+DiskSpaceWarning=Se requiere al menos %1 KB de espacio libre para la instalación, pero la unidad seleccionada solamente tiene %2 KB disponibles.%n%n¿Desea continuar de todas formas?
+DirNameTooLong=El nombre de la carpeta o ruta es demasiado largo.
+InvalidDirName=El nombre de la carpeta no es válido.
+BadDirName32=El nombre de una carpeta no puede incluir los siguientes caracteres:%n%n%1
+DirExistsTitle=La carpeta ya existe
+DirExists=La carpeta:%n%n%1%n%nya existe. ¿Desea instalar en esta carpeta de todas formas?
+DirDoesntExistTitle=La carpeta no existe
+DirDoesntExist=La carpeta:%n%n%1%n%n no existe. ¿Desea crear la carpeta?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Selección de Componentes
+SelectComponentsDesc=¿Qué componentes desea instalar?
+SelectComponentsLabel2=Seleccione los componentes que desea instalar; desactive aquellos que no desea.  Haga clic sobre Siguiente cuando esté listo para continuar.
+FullInstallation=Instalación Completa
+; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
+CompactInstallation=Instalación Compacta
+CustomInstallation=Instalación Personalizada
+NoUninstallWarningTitle=Componentes Existentes
+NoUninstallWarning=La Instalación ha detectado que los siguientes componentes ya están instalados en su computadora:%n%n%1%n%nAl desactivarlos, no se instalarán.%n%n¿Desea continuar de todos modos?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceMBLabel=La selección actual requiere al menos [mb] MB de espacio en disco.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=Seleccione las Tareas Adicionales
+SelectTasksDesc=¿Qué tareas adicionales deberán ejecutarse?
+SelectTasksLabel2=Seleccione las tareas adicionales que desea ejecutar mientras se instala [name], luego haga clic sobre el botón Siguiente.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Seleccione la carpeta del Menú de Inicio
+SelectStartMenuFolderDesc=¿En dónde deberán colocarse los iconos de acceso directo al programa?
+SelectStartMenuFolderLabel3=La instalación creará los atajos del programa en el siguiente menú de Inicio.
+SelectStartMenuFolderBrowseLabel=Para continuar haga clic en Siguiente. Si quiere cambiar el menú haga clic en Examinar.
+MustEnterGroupName=Debe proporcionar un nombre de carpeta.
+GroupNameTooLong=El nombre de la carpeta o ruta es demasiado largo.
+InvalidGroupName=Nombre de carpeta inválido.
+BadGroupName=El nombre de la carpeta no puede incluir ninguno de los siguientes caracteres:%n%n%1
+NoProgramGroupCheck2=&No crear carpeta en el menú Inicio
+
+; *** "Ready to Install" wizard page
+WizardReady=Listo para Instalar
+ReadyLabel1=El programa está listo para iniciar la instalación de [name] en su computadora.
+ReadyLabel2a=Haga clic sobre Instalar para continuar con el proceso o sobre Atrás si desea revisar o cambiar la configuración.
+ReadyLabel2b=Haga clic sobre Instalar para continuar con el proceso.
+ReadyMemoUserInfo=Información del usuario:
+ReadyMemoDir=Carpeta Destino:
+ReadyMemoType=Tipo de Instalación:
+ReadyMemoComponents=Componentes Seleccionados:
+ReadyMemoGroup=Carpeta del Menú de Inicio:
+ReadyMemoTasks=Tareas adicionales:
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Preparándose a Instalar 
+PreparingDesc=El programa de instalación está preparándose para copiar [name] en su computadora.
+PreviousInstallNotCompleted=La instalación/ eliminación previa del programa no se completó. Deberá reiniciar la computadora para completar el proceso.%n%nUna vez reiniciada la computadora ejecute de nuevo este programa para completar la instalación de [name].
+CannotContinue=No se pudo continuar con la instalación. Haga clic sobre el botón Cancelar para salir.
+
+; *** "Installing" wizard page
+WizardInstalling=Instalando
+InstallingLabel=Por favor espere mientras se instala [name] en su computadora.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=Finalizando el asistente de instalación de [name]
+FinishedLabelNoIcons=El programa terminó la instalación de [name] en su computadora.
+FinishedLabel=El programa terminó la instalación de [name] en su computadora.  El programa puede ejecutarse seleccionando el icono creado.
+ClickFinish=Haga clic sobre Terminar para concluir la Instalación.
+FinishedRestartLabel=Para completar la instalación de [name], debe reiniciar su computadora.  ¿Desea reiniciar ahora?
+FinishedRestartMessage=Para completar la instalación de [name], debe reiniciar su computadora.%n%n¿Desea reiniciar ahora?
+ShowReadmeCheck=Sí, deseo ver el archivo LEAME
+YesRadio=&Sí, deseo reiniciar la computadora ahora
+NoRadio=&No, reiniciaré la computadora más tarde
+; used for example as 'Run MyProg.exe'
+RunEntryExec=Ejecutar %1
+; used for example as 'View Readme.txt'
+RunEntryShellExec=Ver %1
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=La Instalación necesita el siguiente disco
+SelectDiskLabel2=Por favor inserte el Disco %1 y haga clic sobre Aceptar.%n%nSi los archivos se localizan en una carpeta diferente a la mostrada abajo, proporcione la ruta correcta o haga clic sobre Examinar.
+PathLabel=&Ruta:
+FileNotInDir2=El archivo "%1" no se encuentra en "%2".  Por favor inserte el disco correcto o seleccione otra carpeta.
+SelectDirectoryLabel=Por favor especifique la ubicación del siguiente disco.
+
+; *** Installation phase messages
+SetupAborted=La instalación no fue terminada.%n%nPor favor corrija el problema y ejecute Instalar de nuevo.
+EntryAbortRetryIgnore=Haga clic sobre Reintentar para intentar de nuevo, Ignorar para proceder de cualquier forma o sobre Cancelar para interrumpir la instalación.
+
+; *** Installation status messages
+StatusCreateDirs=Creando carpetas...
+StatusExtractFiles=Copiando archivos...
+StatusCreateIcons=Creando iconos del programa...
+StatusCreateIniEntries=Creando entradas INI...
+StatusCreateRegistryEntries=Creando entradas en el registro...
+StatusRegisterFiles=Registrando archivos...
+StatusSavingUninstall=Guardando información para eliminar el programa...
+StatusRunProgram=Terminando la instalación...
+StatusRollback=Deshaciendo los cambios...
+
+; *** Misc. errors
+ErrorInternal2=Error Interno %1
+ErrorFunctionFailedNoCode=%1 falló
+ErrorFunctionFailed=%1 falló; código %2
+ErrorFunctionFailedWithMessage=%1 falló; código %2.%n%3
+ErrorExecutingProgram=Imposible ejecutar el archivo:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Error abriendo la clave de registro:%n%1\%2
+ErrorRegCreateKey=Error creando la clave de registro:%n%1\%2
+ErrorRegWriteKey=Error escribiendo en la clave de registro:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Error creando entrada en archivo INI "%1".
+
+; *** File copying errors
+FileAbortRetryIgnore=Haga clic sobre Reintentar para probar de nuevo, Ignorar para omitir este archivo (no recomendado) o Cancelar para interrumpir la instalación.
+FileAbortRetryIgnore2=Haga clic sobre Reintentar para probar de nuevo, Ignorar para proceder de cualquier forma (no se recomienda) o Cancelar para interrumpir la instalación.
+SourceIsCorrupted=El archivo de origen está dañado
+SourceDoesntExist=El archivo de origen "%1" no existe
+ExistingFileReadOnly=El archivo existente está marcado como de sólo lectura.%n%nHaga clic sobre Reintentar para quitar el atributo de sólo lectura y probar de nuevo, Ignorar para saltar este archivo o Cancelar para interrumpir la instalación.
+ErrorReadingExistingDest=Ocurrió un error al tratar de leer el archivo:
+FileExists=El archivo ya existe.%n%n¿Desea sobrescribirlo?
+ExistingFileNewer=El archivo existente es más reciente que el que está tratando de instalar.  Se recomienda conservarlo.%n%n¿Desea mantener el archivo existente?
+ErrorChangingAttr=Ocurrió un error al tratar de cambiar los atributos del archivo:
+ErrorCreatingTemp=Ocurrió un error al tratar de crear un archivo en la carpeta destino:
+ErrorReadingSource=Ocurrió un error al tratar de leer el archivo origen:
+ErrorCopying=Ocurrió un error al tratar de copiar el archivo:
+ErrorReplacingExistingFile=Ocurrió un error al tratar de reemplazar el archivo existente:
+ErrorRestartReplace=Falló el reintento de reemplazar:
+ErrorRenamingTemp=Ocurrió un error al tratar de renombrar un archivo en la carpeta destino:
+ErrorRegisterServer=Imposible registrar la librería DLL/OCX: %1
+ErrorRegisterServerMissingExport=No se encontró DllRegisterServer export
+ErrorRegisterTypeLib=Imposible registrar la biblioteca de tipo: %1
+
+; *** Post-installation errors
+ErrorOpeningReadme=Ocurrió un error al tratar de abrir el archivo LEAME.
+ErrorRestartingComputer=El programa de Instalación no puede reiniciar la computadora. Por favor hágalo manualmente.
+
+; *** Uninstaller messages
+UninstallNotFound=El archivo "%1" no existe. No se puede eliminar.
+UninstallOpenError=No se pudo abrir el archivo "%1". No es posible eliminar el programa
+UninstallUnsupportedVer=El archivo de bitácora para eliminar "%1" está en un formato no reconocido por esta versión del programa. No se puede continuar
+UninstallUnknownEntry=Se encontró un registro desconocido (%1 en la bitácora de eliminación
+ConfirmUninstall=¿Está seguro que desea eliminar completamente %1 y todos sus componentes?
+UninstallOnlyOnWin64=Esta instalación sólo puede eliminarse en un sistema Windows de 64 bits.
+OnlyAdminCanUninstall=Este programa sólo puede eliminarlo un usuario con privilegios administrativos.
+UninstallStatusLabel=Por favor espere mientras se elimina %1 de su computadora.
+UninstalledAll=%1 se eliminó con éxito de su computadora.
+UninstalledMost=Finalizó la eliminación de %1.%n%nAlgunos elementos no pudieron quitarse. Estos pueden borrarse manualmente.
+UninstalledAndNeedsRestart=Para completar la eliminación de %1 se requiere reiniciar la computadora.%n%n¿Desea reiniciarla en este momento?
+UninstallDataCorrupted=El archivo "%1" está dañado. No se puede eliminar
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=¿Eliminar Archivos Compartidos?
+ConfirmDeleteSharedFile2=El sistema informa que el siguiente archivo compartido no es utilizado por otros programas.  ¿Desea eliminar este archivo?%n%nSi otros programas están usándolo y es eliminado, éstos podrían no funcionar correctamente. Si no está seguro, elija No.  Dejar el archivo en su sistema no causa ningún daño.
+SharedFileNameLabel=Nombre del archivo:
+SharedFileLocationLabel=Ubicación:
+WizardUninstalling=Estado de la Eliminación
+StatusUninstalling=Eliminando %1...
+
+; The custom messages below aren't used by Setup itself, but if you make
+; use of them in your scripts, you'll want to translate them.
+
+[CustomMessages]
+
+NameAndVersion=%1 versión %2
+AdditionalIcons=Iconos adicionales:
+CreateDesktopIcon=Crear un atajo en el &Escritorio
+CreateQuickLaunchIcon=Crear un icono de acceso &rápido
+ProgramOnTheWeb=%1 en la Web
+UninstallProgram=Eliminar %1
+LaunchProgram=Ejecutar %1
+AssocFileExtension=&Asociar %1 con la extensión de archivo %2
+AssocingFileExtension=Asociar %1 con la extensión de archivo %2...

+ 1 - 0
DittoSetup/U3/GenSettings.xml

@@ -0,0 +1 @@
+<PackageInstallerGenerator version="1, 0, 0, 8"><installer sourceFile="C:\Documents and Settings\Brogdens\Desktop\Ditto_3\U3\Ditto.u3p" targetPath="C:\Documents and Settings\Brogdens\Desktop\Ditto_3\U3" targetFile="Ditto_3_10_U3.exe"><displayName>Ditto</displayName><version>5.10.0.0</version><iconPath/><i18n><location lcid="1031"><displayName/></location><location lcid="3082"><displayName/></location><location lcid="1036"><displayName/></location><location lcid="1040"><displayName/></location><location lcid="1041"><displayName/></location><location lcid="2052"><displayName/></location></i18n></installer></PackageInstallerGenerator>

BIN
DittoSetup/U3/PackageInstaller.exe


BIN
DittoSetup/U3/U3P2EXE.exe


BIN
DittoSetup/U3/device/Ditto.exe


+ 671 - 0
DittoSetup/U3/device/Help/DittoConfig.htm

@@ -0,0 +1,671 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=FrontPage.Editor.Document>
+<meta name=Generator content="Microsoft FrontPage 4.0">
+<meta name=Originator content="Microsoft Word 10">
+<title>Ditto - Configuration</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="date"/>
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman"; margin-left:0in; margin-right:0in; margin-top:0in}
+h1
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:16.0pt;
+	font-family:Arial;}
+h2
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:14.0pt;
+	font-family:Arial;
+	font-style:italic;}
+h3
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:3;
+	font-size:13.0pt;
+	font-family:Arial;}
+p.MsoToc1, li.MsoToc1, div.MsoToc1
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc2, li.MsoToc2, div.MsoToc2
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:12.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc3, li.MsoToc3, div.MsoToc3
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:24.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:purple;
+	text-decoration:underline;
+	text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	background:navy;
+	font-size:12.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+p.dittoheading3, li.dittoheading3, div.dittoheading3
+	{mso-style-name:dittoheading3;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	background:#C5EAFF;
+	font-size:13.0pt;
+	font-family:Arial;
+	mso-fareast-font-family:"Times New Roman";
+	font-weight:bold;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:173151551;
+	mso-list-template-ids:-1937352976;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:218371223;
+	mso-list-template-ids:346302308;}
+@list l1:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l2
+	{mso-list-id:1205799385;
+	mso-list-template-ids:-236683026;}
+@list l2:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l3
+	{mso-list-id:1296569793;
+	mso-list-template-ids:1644715520;}
+@list l3:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l4
+	{mso-list-id:1319530778;
+	mso-list-template-ids:-1797593814;}
+@list l4:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l5
+	{mso-list-id:1551574264;
+	mso-list-template-ids:-264747546;}
+@list l5:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l6
+	{mso-list-id:1675568833;
+	mso-list-template-ids:-595700404;}
+@list l6:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman"}
+table.MsoTableGrid
+	{mso-style-name:"Table Grid";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	border:solid windowtext 1.0pt;
+	mso-border-alt:solid windowtext .5pt;
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-border-insideh:.5pt solid windowtext;
+	mso-border-insidev:.5pt solid windowtext;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1 align=center style='text-align:center'><a name="_Toc84106074">Ditto -
+Configuration</a></h1>
+
+<p class=MsoNormal align="right"><a href="Dutch_DittoGettingStarted.htm"><font size="5">Dutch
+Help File</font></a></p>
+
+<p class=MsoNormal><b>Table of Contents:</b><o:p></o:p><b>&nbsp;</b></p>
+
+<p class=MsoToc1><a href="DittoGettingStarted.htm">Ditto - Getting Started</a></p>
+
+<p class=MsoToc1><span class=MsoHyperlink>
+<a href="#_Toc84106074" style="color: blue; text-decoration: underline; text-underline: single">Ditto -
+Configuration</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#bm_SendTo" style="color: blue; text-decoration: underline; text-underline: single">Right Click
+Menu -&gt; Quick Options</a></span></p>
+
+<p class=MsoToc3><span class="MsoHyperlink">
+<a href="#bm_SendTo" style="color: blue; text-decoration: underline; text-underline: single">
+Right Click Menu -&gt; Send To</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#bm_General" style="color: blue; text-decoration: underline; text-underline: single">Options -&gt;
+General</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#mb_SupportedTypes" style="color: blue; text-decoration: underline; text-underline: single">Options -&gt;
+Supported Types</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#mb_KeyboardShortcuts" style="color: blue; text-decoration: underline; text-underline: single">Options -&gt;
+Keyboard Shortcuts</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#mb_QuickPaste" style="color: blue; text-decoration: underline; text-underline: single">Options -&gt;
+Quick Paste</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#bm_Friends" style="color: blue; text-decoration: underline; text-underline: single">Options -&gt;
+Friends</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#Option-Status" style="color: blue; text-decoration: underline; text-underline: single">Options -&gt;
+Stats</a></span></p>
+
+<p class=MsoToc1><a href="DittoFAQ.htm">Ditto - FAQ</a></p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105483'><a name="bm_QuickOptions"></a></span><span
+style='mso-bookmark:_Toc84105483'>Right Click Menu -&gt; Quick Options</span></p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>View
+     Caption bar on – </b>Shows the title bar on the top, left, bottom or
+     right.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Always
+     on Top – </b>Ditto is always the top most window.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Auto
+     Roll up – </b>Only works if Always on Top is set.&nbsp; Will hide the main
+     list and only show the header when focus leaves ditto.&nbsp; The list will
+     be shown again if the mouse if moved over the header.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Always
+     show description – </b>If set it will show the full text in a tool tip of
+     the currently selected item.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Prompt
+     for new Group names –</b> If you create a new group it will prompt you for
+     the name.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>
+ Paste HTML as Plain Text </b>- If html format is on the clipboard then the 
+ actual html code will be pasted as text.</li>
+</ul>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Double
+     Clicking on the Caption bar –</b> Controls the action ditto will take when
+     you double click on its header:</li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Toggles Always on Top</b></p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Rolls up the window</b></p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Toggles Always Show Description</b></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105483'><a name="bm_SendTo"></a>Right Click Menu -&gt; </span>
+Send To</p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Send 
+ To – </b>List all friends (set up in config - friends tab), when selected the 
+ selected clips will be sent to that friend</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105484'><a name="bm_General"></a>Options -&gt; General</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Start
+     ditto on System Startup</b> <b>–</b> When windows starts up, Ditto will
+     automatically be started.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Display
+     Icon in the System Tray – </b>Shows the icon in the system tray (or not).
+     Ditto can be activated by clicking its icon in the system tray.&nbsp; If
+     the icon is not shown, you can activate Ditto using its hot key.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Maximum
+     number of Saved Copies <a name="OLE_LINK1">–</a> </b>The maximum number of
+     saved copies that can be in the database.&nbsp; After the maximum has been
+     reached, the oldest item will be removed.&nbsp; Items that are marked as
+     “Never Delete” do not count toward this total.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Paste
+     Entries Expire after X Days –</b> After X days have past, items older than
+     that will be removed.&nbsp; Items that are marked as “Never Delete” will
+     not be deleted.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Compact
+     and Repair Database on Exit –</b> Ditto uses an Access Database to store
+     data.&nbsp; If you delete many entries and the database is still large in
+     size, this will reduce the size.&nbsp; Or if there is slowness in the
+     database it could be because of errors in the database, then run this.&nbsp;
+     If this is checked it will compact and repair on exit.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Set
+     Database Path –</b> Use this if you want to put the database in a
+     different location.&nbsp; If this is checked it will let you select a
+     database in a different location.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Automatically
+     check for updates online –</b> Every 15 days Ditto downloads a file from
+     “ditto-cp.sourceforge.net/Update/DittoVersion.txt”.&nbsp; This contains
+     the version of the current Ditto.&nbsp; If this version is greater than
+     the running version you will be prompted to download the current version from
+     “ditto-cp.sourceforge.net/Update/DittoSetup.exe”.&nbsp; <u>Absolutely no
+     data is sent back</u>.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Allow
+     Duplicates –</b> If this is checked it does not check previous entries to
+     see if it was already added to the database.&nbsp; If it is not checked
+     ditto searches previous entries: if the exact same data is found, the copy
+     date is updated so it will show up first in the list.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Update
+     Clip Time on Paste –</b> If checked when you paste an item, it will set
+     the date to the current time then show up first in the list.&nbsp;
+     Otherwise the clip stays at the same position in the list.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Save
+     Multi-Pastes – </b>If checked and you select multiple items and paste them
+     it will create a new entry with the concatenated data in it.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Hide
+     Ditto on Hot Key if Ditto is Visible –</b> If checked, the hot key toggles
+     the Ditto Window.&nbsp; i.e. if you activate Ditto with the hot key then
+     hit the hot key again it will hide ditto.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Amount
+     of text to save for description –</b> This is the amount of text that
+     shows in the list of past copies.&nbsp; This is also the text that is
+     searched in the edit box filter.&nbsp; Data from a copy is stored in
+     binary format (not easily searched).&nbsp;&nbsp; Ditto stores a subset of
+     the data (the default is 250 bytes) in plain text to allow for easy
+     searching.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>On 
+ copy play the sound</b> - When ditto saves a clip it will play the sound 
+ specified here.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>
+ Paste Clip in active window after selection</b> - If this is unselected then 
+ when you select a clip in the main list it will just place the clip on the 
+ clipboard, it will NOT paste the clip.&nbsp; If this is selected then it will 
+ paste the clip in the active window.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105485'><a name="mb_SupportedTypes"></a>Options -&gt; Supported Types</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>When you copy something to the clipboard, the active program
+can place multiple Formats on the clipboard, including: text, rich text,
+pictures, xml, links, etc.&nbsp; Ditto only saves the Format Types you tell it
+to.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Click “Add” to add more types using the “Add Supported
+Types” dialog: the built-in Types are listed on the left, Types currently on
+the clipboard are on the right.&nbsp; Click the small “Add” button below each
+list to add the selected Types from that list.&nbsp; To add a custom Format
+Type, enter the text name in the Custom Type edit box and click the “Add”
+button next to it.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>By default, Ditto saves text (CF_TEXT) and rich text (“Rich
+Text Format”).</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105486'><a name="mb_KeyboardShortcuts"></a>Options -&gt; Keyboard Shortcuts</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l5 level1 lfo3;tab-stops:list .5in'><b>Activate
+     Ditto – </b>Shows the main list of past copies, same as clicking on the
+     taskbar icon.</li>
+ <li class=MsoNormal style='mso-list:l5 level1 lfo3;tab-stops:list .5in'><b>Named
+     Copy – </b>Copies the currently selected data then pops up the item
+     properties window so you can set a hot key or set it to “Never
+     Delete”.&nbsp; This is the same as hitting Ctrl-C, but it also shows the
+     copy properties window of the copied data.</li>
+ <li class=MsoNormal style='mso-list:l5 level1 lfo3;tab-stops:list .5in'><b>Global
+     Hot Keys for last Ten items – </b>These are global hot keys that can be
+     assigned to the last ten copies.&nbsp; Because these are global keys, the
+     main Ditto window does not need to be shown to use these hot keys.</li>
+</ul>
+
+<p>Note:&nbsp; The &quot;Win&quot; check box next to each indicates that the Windows key 
+will be included in the short cut.</p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105487'><a name="mb_QuickPaste"></a>Options -&gt; Quick Paste</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>These can also be set from the right click menu in the main
+copy list.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>History
+     Starts at the Top of the list (vs. Bottom) – </b>If checked, new entries
+     will be at the top, otherwise new entries will show at the bottom of the
+     window.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Use
+     Ctrl – Num for first ten copy hot keys – </b>When the list of past copies
+     is shown the last ten entries can be pasted by the number 1 – 10(0).&nbsp;
+     If checked, the Ctrl key must be down for this to work.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Shows
+     text for first ten copy hot keys – </b>Shows the numbers 1 – 10 in the
+     main list (or not).</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Show
+     Leading whitespace – </b>If checked, the text will be shown as it was
+     copied, otherwise the leading white space of each line will be removed.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Text
+     Lines per Row – </b>Number of rows of text to show per row in the list
+     box.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Enable
+     Quick Paste Transparency – </b>Shows the list window as transparent at the
+     percent entered.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Show 
+ thumbnails </b>- If checked then when the clipboard type CF_DIB is saved then a 
+ thumbnail of the bitmap will be drawn in the list.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Draw 
+ RTF text in List -</b> If checked then if RFT text is in a saved clip then the 
+ rich text will be drawn in the list.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Find 
+ As You Type -</b> If checked then when you start typing then it will filter the 
+ list as you type, if it is not checked then it will not filter the list until 
+ you hit the enter key.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>
+ Ensure Entire Window is Visible -</b> If checked then when ditto is shown it 
+ will ensure that the entire window is visible.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Show 
+ Clips that are in Groups in Main List</b> - If checked then when a clip is in a 
+ group it will be shown in the main list.&nbsp; If not checked then the clip 
+ will ONLY be shown in the group it is assigned to.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Popup
+     Positioning</b></li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+At Caret –</b> Ditto will pop up at the blinking caret.</p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+At Cursor –</b> Ditto will pop up at the current position of the mouse cursor.</p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+At Previous Position –</b> Ditto will pop up at the last position it was
+closed.</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l4 level1 lfo5;tab-stops:list .5in'><b>List
+     Item Prefix – </b>Legend of what the leading text means in the list of
+     past copies.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105488'><a name="bm_Friends"></a>Options -&gt; Friends</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>Friends Table -</b> Ditto can automatically send any or
+all copies to up to 15 other computers.&nbsp; Double-Click an entry in the to
+open the “Friend Details” dialog box.&nbsp; Enter in the IP/name of the
+computer you want to send copies to.&nbsp; If “Send All Copies” is set then
+every copy will be sent.&nbsp; Otherwise the Friend will be listed in the right
+click menu to send them copies individually.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>IP/Computer Names Text Edit Box - </b>When a copy is
+received over the network and the source’s IP or computer name is in this list
+then the copy will be put directly onto the clipboard.&nbsp; Otherwise it will
+only be in the Saved Clips List to use at a later time.&nbsp; Enter the IP or
+Computer Names separated by commas into the edit box.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>Network Password</b> - When clips are sent over the 
+network the data is encrypted using this password.&nbsp; On the receiving side 
+the data is unencrypted using their network password.&nbsp; So when sending a 
+clip across the network, both sides Network Password must be the same.&nbsp; If 
+this you want to receive clips from multiple people with different passwords 
+then you can enter the registry keys</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>Receive Passwords - </b>If you are receiving clips from 
+computers where your network password does not match, enter additional network 
+passwords separated by commas.&nbsp; When a clip is received the network 
+password will be tried first, if that doesn't work the list of &quot;Receive 
+Passwords&quot; will be used to decrypt the clip.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>NB: When a clip is received from a Friend, the Friend’s
+computer name is appended to the end of the Description text.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l1 level1 lfo6;tab-stops:list .5in'><b>Log
+     Send Receive Commands</b> – is used to view what is happing with the send
+     and receive code.&nbsp; This is to only be used if there are problems and
+     the Ditto team asks for the file to debug.</li>
+ <li class=MsoNormal style='mso-list:l1 level1 lfo6;tab-stops:list .5in'><b>Disable
+     Receiving Clips – </b>This will prevent the server thread from starting
+     and the socket from listening for clips over the network.&nbsp; If other
+     people send you data you will NOT receive the clips!</li>
+</ul>
+
+<p>By Default Ditto opens port 23443, to change this add a DWORD registry entry 
+&quot;SendRecvPort&quot; to &quot;HKCU\Programs\Ditto&quot;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105488'><a name="Option-Status"></a></span><span
+style='mso-bookmark:_Toc84105488'>Options -&gt; Status</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Odometer
+     – </b>Date and the number of copies and pastes you have made since you
+     installed Ditto.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Trip
+     Odometer –</b> Same as the odometer but you can reset this to track how
+     much you are using Ditto.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Saved
+     Copies, Save Copy Data –</b> This is the number of tables in the database.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Remove
+     All </b>button<b> –</b> WARNING!&nbsp; This will delete ALL data in the
+     database.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Last
+     Started –</b> Shows the date Ditto was last started along with the length
+     of time Ditto has been running.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Database
+     Size –</b> Shows the Database size.&nbsp; Choose Compact and Repair
+     database on the General tab to reduce this size.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Clips
+     Sent –</b> Total clips sent to the people listed in the Friends tab.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Clips
+     Received –</b> Total clips received from others</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in'>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+<script language="Javascript"><!--
+
+var dateModified = document.lastModified;
+
+document.write("<b>Last updated: " + dateModified + "</b>");
+
+//-->
+</script>
+
+</div>
+
+</body>
+
+</html>

+ 346 - 0
DittoSetup/U3/device/Help/DittoFAQ.htm

@@ -0,0 +1,346 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=FrontPage.Editor.Document>
+<meta name=Generator content="Microsoft FrontPage 4.0">
+<meta name=Originator content="Microsoft Word 10">
+<title>Ditto - FAQ</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="date"/>
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman"; margin-left:0in; margin-right:0in; margin-top:0in}
+h1
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:16.0pt;
+	font-family:Arial;}
+h2
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:14.0pt;
+	font-family:Arial;
+	font-style:italic;}
+h3
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:3;
+	font-size:13.0pt;
+	font-family:Arial;}
+p.MsoToc1, li.MsoToc1, div.MsoToc1
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc2, li.MsoToc2, div.MsoToc2
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:12.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc3, li.MsoToc3, div.MsoToc3
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:24.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:purple;
+	text-decoration:underline;
+	text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	background:navy;
+	font-size:12.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+p.dittoheading3, li.dittoheading3, div.dittoheading3
+	{mso-style-name:dittoheading3;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	background:#C5EAFF;
+	font-size:13.0pt;
+	font-family:Arial;
+	mso-fareast-font-family:"Times New Roman";
+	font-weight:bold;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman"}
+table.MsoTableGrid
+	{mso-style-name:"Table Grid";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	border:solid windowtext 1.0pt;
+	mso-border-alt:solid windowtext .5pt;
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-border-insideh:.5pt solid windowtext;
+	mso-border-insidev:.5pt solid windowtext;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1 align=center style='text-align:center'><a name="_Toc84105802">Ditto - FAQ</a></h1>
+
+<p class=MsoNormal align="right"><a href="Dutch_DittoGettingStarted.htm"><font size="5">Dutch
+Help File</font></a></p>
+
+<p class=MsoNormal><b>Table of Contents:</b><o:p></o:p></p>
+
+<p class=MsoToc1><a href="DittoGettingStarted.htm">Ditto - Getting Started</a></p>
+
+<p class=MsoToc1><a href="DittoConfig.htm">Ditto - Config</a></p>
+
+<p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc84105802">Ditto - FAQ</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_WhatIsDitto">1) What is
+Ditto?</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_Data">2) By
+default, where does Ditto store its data?</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_DidntPasteAnything">3) I pasted a
+past item with Ditto, but it didn’t paste anything.</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_Excel">4) I copied a
+cell in Microsoft Excel and it only pastes back the text not the formulas.</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_Search">5) I searched
+for something I know I copied but it’s not showing in the search results.</a></span></p>
+
+<p class=MsoToc3><span class="MsoHyperlink"><a href="#bm_Searching">6) How does searching work?</a></span></p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84104799'><a name="bm_WhatIsDitto"></a>1) What is Ditto?</span></p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>Ditto is an extension to the Windows Clipboard.&nbsp; You
+copy something to the Clipboard and Ditto takes what you copied and stores it
+in a database to retrieve at a later time. </p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Data"></a>2) By default, where does Ditto
+store its data?</p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>Settings are stored in “HKCU\programs\Ditto”</p>
+
+<p class=MsoNormal>The database is stored in “Documents and Settings\[Current User]\Application
+Data\Ditto\DittoDB.mdb”</p>
+
+<p class=MsoNormal>Application files are stored in “Program Files\Ditto\”</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_DidntPasteAnything"></a>3) I pasted a past item with
+Ditto, but it didn’t paste anything.</p>
+
+<p class=MsoNormal style='text-indent:.5in'>&nbsp;</p>
+
+<p class=MsoNormal>Sometimes, Ditto cannot find the currently focused (target)
+window, so Ditto cannot paste to it.&nbsp; When this happens, the clip is still
+placed onto the Clipboard, so you can hit Ctrl-V to paste the data wherever you
+like.</p>
+
+<p class=MsoNormal style='text-indent:.5in'>&nbsp;</p>
+
+<p class=MsoNormal>We have seen this happen more in Internet Explorer windows.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Excel"></a>4) I copied a cell in Microsoft
+Excel and it only pastes back the text not the formulas.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Excel generally prevents copying and pasting of the underlying
+formulas using external sources like Ditto.&nbsp; Presumably, Excel requires
+that proper pasting be sequential to the copying.&nbsp; In fact, it appears
+that the Office Clipboard also doesn’t paste the underlying formulas.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>The following specific information / exceptions are known:</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>1) If the block of copied cells are self-contained (i.e. any
+formulas within the block only refer to other cells within the block), then the
+“XML Spreadsheet” Clipboard Format contains the formulas and can be properly
+pasted back into Excel from Ditto.&nbsp; Otherwise, “XML Spreadsheet” just
+contains the values of the copied cells.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>2) The CF_SYLK Clipboard Format does appear to contain cell
+formulas in relative form, but Excel does not make use of them when it is
+pasted back.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>3) The following Clipboard Formats are used when pasting
+cell links: “Embed Source”, “Link Source”, “Link Source Descriptor”.&nbsp; In
+some unknown cases, “Link” and “Object Descriptor” may also be required.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Search"></a>5) I searched for something I
+know I copied but it’s not showing in the search results.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>When searching, you are actually searching through each
+Clip’s “Description”, not their content.&nbsp; The Description is extracted
+from the beginning of the Clip’s text Format.&nbsp; The default amount of text
+saved in the Description is 250 bytes but this can be changed in [Options -&gt;
+General -&gt; &quot;Amount of text to save for description&quot;].</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Searching"></a>6) How does searching work?</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>On all searches, search are treated as Clip Text contains the 
+search words.</p>
+
+<p class=MsoNormal>When searching spaces are treated as &quot;and&quot; unless they are 
+contained in quotes (&quot;&quot;)</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>ex.&nbsp;&nbsp;&nbsp; search for - right click -</p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+this would find anything with &quot;right&quot; and &quot;click&quot; in the text, not necessarily 
+next to each other</p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; search for - 
+&quot;right click&quot;</p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+this would find all text containing the exact text &quot;right click&quot; </p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in'>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+<script language="Javascript"><!--
+
+var dateModified = document.lastModified;
+
+document.write("<b>Last updated: " + dateModified + "</b>");
+
+//-->
+</script>
+
+</div>
+
+</body>
+
+</html>

+ 539 - 0
DittoSetup/U3/device/Help/DittoGettingStarted.htm

@@ -0,0 +1,539 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=FrontPage.Editor.Document>
+<meta name=Generator content="Microsoft FrontPage 4.0">
+<meta name=Originator content="Microsoft Word 10">
+<title>Ditto - Getting Started</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="date"/>
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman"; margin-left:0in; margin-right:0in; margin-top:0in}
+h1
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:16.0pt;
+	font-family:Arial;}
+h2
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:14.0pt;
+	font-family:Arial;
+	font-style:italic;}
+h3
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:3;
+	font-size:13.0pt;
+	font-family:Arial;}
+p.MsoToc1, li.MsoToc1, div.MsoToc1
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc3, li.MsoToc3, div.MsoToc3
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:24.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:purple;
+	text-decoration:underline;
+	text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	background:navy;
+	font-size:12.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+p.dittoheading3, li.dittoheading3, div.dittoheading3
+	{mso-style-name:dittoheading3;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	background:#C5EAFF;
+	font-size:13.0pt;
+	font-family:Arial;
+	mso-fareast-font-family:"Times New Roman";
+	font-weight:bold;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:570778419;
+	mso-list-template-ids:-561473982;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:835192420;
+	mso-list-template-ids:-1120895494;}
+@list l1:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l2
+	{mso-list-id:1677616686;
+	mso-list-template-ids:-1655268998;}
+@list l2:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l3
+	{mso-list-id:2062316516;
+	mso-list-template-ids:-2102618902;}
+@list l3:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman"}
+table.MsoTableGrid
+	{mso-style-name:"Table Grid";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	border:solid windowtext 1.0pt;
+	mso-border-alt:solid windowtext .5pt;
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-border-insideh:.5pt solid windowtext;
+	mso-border-insidev:.5pt solid windowtext;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1 style="width: 892; height: 1425">
+
+<h1 align=center style='text-align:center'><a name="_Toc84105232">Ditto -
+Getting Started</a></h1>
+
+<p class=MsoNormal align="right"><a href="Dutch_DittoGettingStarted.htm"><font size="5">Dutch
+Help File</font></a></p>
+
+<p class=MsoNormal><b>Table of Contents:</b></p>
+
+<p class=MsoToc1><span class=MsoHyperlink>
+<a href="#_Toc84105232" style="color: blue; text-decoration: underline; text-underline: single">Ditto -
+Getting Started</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105233" style="color: blue; text-decoration: underline; text-underline: single">What is
+Ditto?</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105234" style="color: blue; text-decoration: underline; text-underline: single">Basic Usage</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105235" style="color: blue; text-decoration: underline; text-underline: single">Terminology</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105236" style="color: blue; text-decoration: underline; text-underline: single">Ditto’s Main
+Window</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105237" style="color: blue; text-decoration: underline; text-underline: single">Features</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105238" style="color: blue; text-decoration: underline; text-underline: single">Key bindings</a></span></p>
+
+<p class=MsoNormal><a href="DittoConfig.htm">Ditto - Config</a></p>
+
+<p class=MsoNormal><a href="DittoFAQ.htm">Ditto - FAQ</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105233">What is Ditto?</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Ditto is an extension to the Windows Clipboard.&nbsp; You
+copy something to the Clipboard and Ditto takes what you copied and stores it
+in a database to retrieve at a later time. </p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105234">Basic Usage</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Run
+     Ditto.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Copy
+     things to the clipboard, e.g. using Ctrl-C with text selected in a text
+     editor.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Open
+     Ditto by clicking its icon in the system tray or by pressing its Hot Key
+     which defaults to Ctrl + ` – i.e. hold down Ctrl and press the back-quote
+     (tilde ~) key.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Double
+     click or press enter on the item to paste it to the previous window.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105235">Terminology</a></p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>Clip</b> = <b>Copy</b> =
+Something copied to the Clipboard (e.g. using Ctrl-C).&nbsp; These appear as
+items in Ditto’s Main Window list.</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l1 level1 lfo2;tab-stops:list .5in'>Every
+     Clip is composed of one or more <b>Formats</b>, each having its own <b>Type</b>,&nbsp;&nbsp;&nbsp;
+     e.g. ANSI text, Unicode, BMP images, html, xml, etc.&nbsp; Each Format
+     represents a different aspect of the object you copied onto the Clipboard.</li>
+ <li class=MsoNormal style='mso-list:l1 level1 lfo2;tab-stops:list .5in'>Every
+     Clip also has a <b>Description</b> that is extracted from the beginning of
+     the Clip’s CF_TEXT Format.&nbsp; The Description is used to represent the
+     Clip in Ditto’s list and is searchable using the Filter Box</li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>Target or Focus Window</b> =
+the window that Ditto pastes to.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105236">Ditto’s Main Window</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><b>Title
+     Bar</b> = <b>Caption</b> = Displays the number of Clips selected and the
+     current Target window.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><b>Saved
+     Items List</b> = <b>History List</b> = Lists the Clips saved from the
+     Clipboard.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><b>Filter
+     Edit Box</b> = Filters the List by Description.&nbsp; After searching, a
+     &quot;C&quot; button appears to the right of the edit box (also triggered
+     by Alt-C), which Clears the filter and resets the list to its default
+     view.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105237">Features</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Global
+     versus Local Hot Keys</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Properties</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Filter
+     Box</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Groups</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Transferring
+     Clips over a Network</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105238">Key bindings</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
+ style='border-collapse:collapse;mso-padding-alt:0in 0in 0in 0in'>
+ <tr style='mso-yfti-irow:0'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-`</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Default Ditto window activation Global Hot Key</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:1'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>&nbsp;</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>&nbsp;</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:2'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Esc</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Close Window</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:3'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Tab</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Move focus to the next control in the current window</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:4'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-Space</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Toggle Ditto window between normal and always showing on
+  top (persistent)</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:5'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>&nbsp;</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>&nbsp;</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:6'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Enter</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Paste Selected Items in the Target Window, or Enter Group
+  (if the item is a Group)</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:7'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Alt-Enter</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Open the Clip Properties Dialog</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:8'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p align="right"><font size="3">Shift-Enter</font></td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <font size="3">Past CF_TEXT (plain text with no formatting) only </font>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:8'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>F3</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Show Full Description in a tooltip</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:9'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-A</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Select All</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:10'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Alt-C</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Clear the search filter</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:11'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>&nbsp;</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>&nbsp;</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:12'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-G</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Show the hierarchy of Groups in a treeview</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:13'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Backspace</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Go to the Parent Group</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:14'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Alt-Home</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Go to the History Group (all Clips)</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:15'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Alt-End</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Go to the list of all Groups (no Clips)</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:16'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>F7</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Create a New Group and place the currently selected Clips
+  in that Group</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:17'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-F7</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>New Group</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:18;mso-yfti-lastrow:yes'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-X,C,V</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Cut, Copy, Paste Clips between Groups (this does not use
+  the Windows Clipboard)</p>
+  </td>
+ </tr>
+</table>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in'>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+<script language="Javascript"><!--
+
+var dateModified = document.lastModified;
+
+document.write("<b>Last updated: " + dateModified + "</b>");
+
+//-->
+</script>
+
+</div>
+
+</body>
+
+</html>

+ 523 - 0
DittoSetup/U3/device/Help/Dutch_DittoConfig.htm

@@ -0,0 +1,523 @@
+ <html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=FrontPage.Editor.Document>
+<meta name=Generator content="Microsoft FrontPage 4.0">
+<meta name=Originator content="Microsoft Word 10">
+<title>Ditto - Configuration</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="date"/>
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman"; margin-left:0in; margin-right:0in; margin-top:0in}
+h1
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:16.0pt;
+	font-family:Arial;}
+h2
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:14.0pt;
+	font-family:Arial;
+	font-style:italic;}
+h3
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:3;
+	font-size:13.0pt;
+	font-family:Arial;}
+p.MsoToc1, li.MsoToc1, div.MsoToc1
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc2, li.MsoToc2, div.MsoToc2
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:12.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc3, li.MsoToc3, div.MsoToc3
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:24.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:purple;
+	text-decoration:underline;
+	text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	background:navy;
+	font-size:12.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+p.dittoheading3, li.dittoheading3, div.dittoheading3
+	{mso-style-name:dittoheading3;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	background:#C5EAFF;
+	font-size:13.0pt;
+	font-family:Arial;
+	mso-fareast-font-family:"Times New Roman";
+	font-weight:bold;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:173151551;
+	mso-list-template-ids:-1937352976;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:218371223;
+	mso-list-template-ids:346302308;}
+@list l1:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l2
+	{mso-list-id:1205799385;
+	mso-list-template-ids:-236683026;}
+@list l2:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l3
+	{mso-list-id:1296569793;
+	mso-list-template-ids:1644715520;}
+@list l3:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l4
+	{mso-list-id:1319530778;
+	mso-list-template-ids:-1797593814;}
+@list l4:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l5
+	{mso-list-id:1551574264;
+	mso-list-template-ids:-264747546;}
+@list l5:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l6
+	{mso-list-id:1675568833;
+	mso-list-template-ids:-595700404;}
+@list l6:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman"}
+table.MsoTableGrid
+	{mso-style-name:"Table Grid";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	border:solid windowtext 1.0pt;
+	mso-border-alt:solid windowtext .5pt;
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-border-insideh:.5pt solid windowtext;
+	mso-border-insidev:.5pt solid windowtext;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+</style>
+ <![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1 align=center style='text-align:center'><a name="_Toc84106074">Ditto -
+Configuratie</a></h1>
+
+<p class=MsoNormal align="right"><a href="DittoGettingStarted.htm"><font size="5">English
+Help File</font></a></p>
+
+<p class=MsoNormal><b>Inhoud:</b><o:p></o:p><b>&nbsp;</b></p>
+
+<p class=MsoToc1><a href="Dutch_DittoGettingStarted.htm">Ditto - Beginnen</a></p>
+
+<p class=MsoToc1><span class=MsoHyperlink>
+<a href="#_Toc84106074" style="color: blue; text-decoration: underline; text-underline: single">Ditto -
+Configuratie/a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#bm_SendTo" style="color: blue; text-decoration: underline; text-underline: single">Rechter Muisklik
+Menu -&gt; Spoed Opties</a></span></p>
+
+<p class=MsoToc3><span class="MsoHyperlink">
+<a href="#bm_SendTo" style="color: blue; text-decoration: underline; text-underline: single">
+Rechter Muisklik Menu -&gt; Verzenden naar</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#bm_General" style="color: blue; text-decoration: underline; text-underline: single">Opties -&gt;
+Algemeen</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#mb_SupportedTypes" style="color: blue; text-decoration: underline; text-underline: single">Opties -&gt;
+Ondersteunde Formaten</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#mb_KeyboardShortcuts" style="color: blue; text-decoration: underline; text-underline: single">Opties -&gt;
+Sneltoetsen</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#mb_QuickPaste" style="color: blue; text-decoration: underline; text-underline: single">Opties -&gt;
+Snel Menu</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#bm_Friends" style="color: blue; text-decoration: underline; text-underline: single">Opties -&gt;
+Vrienden</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#Option-Status" style="color: blue; text-decoration: underline; text-underline: single">Opties -&gt;
+Statistiek</a></span></p>
+
+<p class=MsoToc1><a href="Dutch_DittoFAQ.htm">Ditto - FAQ</a></p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105483'><a name="bm_QuickOptions"></a></span><span
+style='mso-bookmark:_Toc84105483'>Rechter Muisklik Menu -&gt; Spoed Opties</span></p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Positie Titelbalk – </b>Toont de titelbalk boven, links, onder of rechts .</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Altijd op de Voorgrond – </b>Ditto is het bovenste venster.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Altijd naar boven scrollen – </b>Werkt alleen als Altijd op de Voorgrond ook aan staat.&nbsp; Verbergt de cliplijst en toont alleen het kopje nadat ditto verlaten is.&nbsp; De cliplijst komt weer te voorschijn als de muis boven het kopje wordt bewogen.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Altijd omschrijving tonen – </b>De volle tekst van de geselecteerde clip wordt getoond in een tool tip.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Naar nieuwe groepnamen vragen –</b> Bij het aanmaken van een nieuwe groep wordt gevraagd naar de groepnaam.</li>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>HTML als platte tekst tonen </b>- Als het HTML formaat op het klembord staat wordt dat getoond als platte tekst.</li>
+</ul>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Dubbelklik op titelbalk –</b> Geeft aan wat Ditto doet als er dubbel geklikt wordt op de titelbalk:</li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Altijd op de Voorond aan/uit</b></p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Venster omhoog scrollen</b></p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Omschrijving aan/uit</b></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105483'><a name="bm_SendTo"></a>Rechter Muisklik Menu -&gt; </span>
+Verzenden Naar</p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l6 level1 lfo1;tab-stops:list .5in'><b>Verzenden Naar – </b>Maakt een lijst van alle vrienden (zie tabblad vrienden), 
+ verzendt de geselecteerde clip naar een geselecteerde vriend.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84105484'><a name="bm_General"></a>Opties -&gt; Algemeen</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Start Ditto als system start</b> <b>–</b> Als Windows start wordt Ditto eveneens gestart.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Toon pictogram in systeemvak – </b>Toont het pictogram in het systeemvak (of niet).
+     Ditto kan aangeroepen worden door op het pictogtam in het systeemvak te klikken.&nbsp; Geen pictogram: gebruik de Ditto sneltoets.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Maximum aantal opgeslagen clips <a name="OLE_LINK1">–</a> </b>Het maximaal aantalopgeslagen clips in de database.&nbsp; Als dit maximaal aantal is bereikt worden de oudste clips verwijderd.&nbsp; Clips gemarkeerd met “Nooit wissen” zijn niet in dit totaal meeberekend.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Opgeslagen clips lopen af na X dagen –</b> Na X dagen worden oudere clips verwijderd.&nbsp;Clips gemarkeerd met “Nooit wissen”worden niet verwijderd.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Bij afsluiten van Ditto wordt de database gekomprimeerd en gerepareerd –</b> Ditto gebruikt een Access Database om data op te slaan.&nbsp; Als vele clips gewist zijn en de database alsnog te groot is, wordt zo de grootte gereduceerd.&nbsp; Mocht de database te langzaam zijn geworden tengevolge van fouten, gebruik dan deze mogelijkheid.&nbsp; </li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Pad Database aangeven–</b> Gebruik dit om de database elders op te slaan.&nbsp; Indien aangevinkt wordt de database opgeslagen in het aangegeven pad.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Updates automatisch online zoeken –</b> Iedere 14 dagen wordt een bestand gedownload van “Ditto-cp.sourceforge.net/Update/DittoVersion.txt”.&nbsp; Hierin zit de laatste versie van Ditto.&nbsp; Mocht deze versie groter zijn dan de laatste versie, dan komt er een melding de laatste versie te downloaden via “Ditto-cp.sourceforge.net/Update/DittoSetup.exe”.&nbsp; <u>Data worden absoluut niet aangetast.</u>.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Duplicaten toestaan –</b> Indien aangevinkt wordt niet onderzocht of deze clip al in de database voorkomt.&nbsp; Indien niet aangevinkt, kijkt Ditto of een gelijke clip al eerder is opgenomen; is dit het geval dan wordt deze clip boven aan de cliplijst geplaatst.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Tijdstip van plakken bepaalt volgorde cliplijst –</b>Indien aangevinkt wordt een clip, waar deze ook in de cliplijst staat, na plakken bovenaan gezet. Niet aangevinkt, behoudt de clip dezelfde positie in de lijst. De tijd van plakken staat vermeld in de tooltip.</li> <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>
+ Diverse geselecteerde clips gelijktijdig plakken – </b> Selecteer diverse clips en toets Enter. Indien aangevinkt worden deze clips, na plakken, met behoud van volgorde samengevoegd in een nieuwe clip. Deze nieuwe clip staat nu boven aan de lijst</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Verberg Ditto met een sneltoets –</b>Indien aangevinkt zet de sneltoets het Ditto venster aan of uit.&nbsp; </li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Hoeveel tekst opslaan in de omschrijving? –</b> Dit is de hoeveelheid tekst die wordt getoond in de cliplijst.&nbsp; Dit is tevens de tekst waarnaar in het zoekveld wordt gezocht.&nbsp; Clipdata worden binair opgeslagen, hetgeen moeilijk zoeken is.&nbsp; Ditto slaat ook een set data op  (de norm is 250 bytes) in platte tekst voor gemakkelijk zoeken.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>Speel muziekje tijdens kopieren</b> - Als Ditto een clip opslaat wordt een gekozen muziekje gespeeld.</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo2;tab-stops:list .5in'><b>
+ Geselecteerde clip plakken in het actieve venster</b> - Indien aangevinkt wordt een geselecteerde clip geplakt in het actieve venster; niet aangevinkt wordt de clip uitsluitend op het klembord gezet.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=Dittoheading3><span
+style='mso-bookmark:_Toc84105485'><a name="mb_SupportedTypes"></a>Opties -&gt; Ondersteunde Formaten</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Het actieve programma kan diverse formaten op het klembord plaatsen, zoals tekst, "rich text", plaatjes, xml, snelkoppelingen etc..&nbsp; Ditto slaat uitsluitend het aangegeven formaat op.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Klik "Toevoegen" om met behulp van de hooftype-lijst meer formaten toe te voegen; de meegegeven formaten staan links. Huidige formaten op het klembord staan rechts.&nbsp; Klik op de knoppen "toevoegen" onder aan iedere lijst om een geselecteerd formaat toe te voegen. &nbsp; Zelf een formaat toevoegen: voer de tekstnaam in in het "door gebruiker bepaalde" veld en klik op de knop "toevoegen" daar naast.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Normaliter slaat Ditto tekst (CF_TEXT) en "rich tekst" (RichText Format) op.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=Dittoheading3><span
+style='mso-bookmark:_Toc84105486'><a name="mb_KeyboardShortcuts"></a>Opties -&gt; Sneltoetsen</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l5 level1 lfo3;tab-stops:list .5in'><b>Ditto aanroepen – </b>Toont de cliplijst; hetzelfde dus als klikken op het pictogram in het systeemvak.</li>
+ <li class=MsoNormal style='mso-list:l5 level1 lfo3;tab-stops:list .5in'><b>Clip benoemen– </b>Een aan te maken clip een naam geven: selecteer de te kopi&eumlren data, druk sneltoets-combinatie van "Clip benoemen"; vul een naam in in het popup venster dat verschijnt en toets Enter. De selektie wordt nu opgeslagen als een clip met die naam., Deze naam is terug te vinden in het eigenschappenvenster (Alt-Enter) van deze klip. De klip is nu klaar voor  "Benoemd plakken".</li>
+
+  <li class=MsoNormal style='mso-list:l5 level1 lfo3;tab-stops:list .5in'><b>Benoemd plakken – </b>Stel dat een bepaalde clip veel gebruikt zal worden. Kies dan een gemakkelijk te onthouden naam voor die clip, wanneer die wordt aangemaakt (zie hier boven). Druk op de sneltoets combinatie van "Benoemd plakken; vul de naam van de clip in in het popup venster dat verschijnt en toets Enter. De clip is nu geplakt in het focus venster.</li>
+
+ <li class=MsoNormal style='mso-list:l5 level1 lfo3;tab-stops:list .5in'><b>Globale sneltoetsen voor de laatste tien clips – </b>Dit zijn globale sneltoetsen die kunnen worden toebedeeld aan de laatste tien clips.&nbsp; Globale sneltoetsen kunnen worden gebruikt zonder dat Ditto actief is.<br>
+ Werkt alleen met de"qwerty" - nummertoetsen, nadat wel "stuur plakken" op het sneltoets tabblad is aangevinkt! </li>
+<p> NB:&nbsp; De &quot;Win&quot; checkbox naast iedere sneltoets betekent dat de WIN-toets ook gebruikt kan worden voor een sneltoets combinatie.</p>
+</ul>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<p class=Dittoheading3><span
+style='mso-bookmark:_Toc84105487'><a name="mb_QuickPaste"></a>Opties -&gt; Snel Menu</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Het Snel Menu kan ook worden opgeroepen met een rechter muisklik op de cliplijst.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Historie begint bovenaan de lijst (vs. onderaan) – </b>Indien aangevinkt verschijnen nieuwe clips bovenaan het venster, anders onderaan.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Gebruik Ctrl – Num  –  </b>Als de cliplijst geopend en aktief is kunnen de bovenste 10 clips geplakt worden met de combinatie Ctrl + 1-10(0);&nbsp; de clip verhuist naar de bovenste plaats op de cliplijst</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Toon nummers voor de bovenste 10 clips – </b>Zet de nummers 1 – 10 in de cliplijst aan of uit.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Toon eventuele voorloop spaties – </b>Indien aangevinkt wordt de cliptekst getoond met voorloop spaties, anders zonder.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Regels per rij – </b>Aantal regels per clip in de cliplijst.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Transparantie van Cliplijst instellen – </b>De transparantie van de lijst wordt bepaald door de instelling in percentages in "Transparantie" onder "Spoed Opties".</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Toon miniatuur afbeeldingen -</b>Indien aangevinkt, wordt, wanneer een plaatje van het type CF_DIB op het klembord wordt gezet, een miniatuur van het plaatje opgenomen in de clip.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Schrijf RTF Tekst in de clips -</b> Indien aangevinkt, wordt tekst, indien opgeslagen als "rich tekst", ook als "rich tekst" in een clip opgenomen.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Zoek letterlijk -</b>Indien aangevinkt, wordt tekst al uitgefilterd tijdens het typen,  anders moet na het typen eerst de entertoets worden ingedrukt..</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Toon Groepclips - </b>Indien aangevinkt, wordt een clip uit een groep getoond in de cliplijst; anders kan de clip alleen benaderd worden in de betreffende groep.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo4;tab-stops:list .5in'><b>Popup Positie</b></li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Bij letter/leesteken –</b> Ditto komt te voorschijn bij de knipperende letter-cursor.</p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Bij de cursor –</b> Ditto komt te voorschijn bij de muis-cursor.</p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Bij de vorige positie –</b> Ditto komt te voorschijn op de laatst positie.</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l4 level1 lfo5;tab-stops:list .5in'><b>Uitleg van de tekens in het venster – </b>Uitleg over wat de voorlooptekens in de cliplijst beduiden.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=Dittoheading3><span
+style='mso-bookmark:_Toc84105488'><a name="bm_Friends"></a>Opties -&gt; Vrienden</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>Vrienden lijst -</b> Ditto kan automatisch iedere of alle clips verzenden naar tot wel 15 computers.&nbsp; Dubbelklik op een vriend in de "Vrienden Detail" dialoogbox; &nbsp;voer de IP-naam van de betreffende computer in.&nbsp; Als  “Alle clips verzenden ” is gekozen dan worden alle btereffende clips tegelijk verzonden; anders wordt de betrokken computer geplaatst in het rechter muisklik menu om de clips een voor een te verzenden.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>IP/ComputerNaam Tekstverwerker-box - </b>Als een clip is ontvangen via het netwerk en de IP van de bron, of de computernaam staat in de lijst, dan wordt de clip direct op het klembord gezet, anders wordt hij alleen opgeslagen in de cliplijst om op een later tijdstip gebruikt te worden.&nbsp; Voer IP nummers of computernamen in in de bewerkbox en scheidt ze met een komma.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>Netwerk Wachtwoord</b> - Als een clip is ontvangen via het netwerk zijn de data versleuteld met behulp van dit wachtwoord.&nbsp; Aan de kant van de ontvanger worden de data ook weer ontsleuteld met dit wachtwoord.&nbsp; Dus aan beide zijden van het netwerk moet het wachtwoord hetzelfde zijn.&nbsp; Voor het ontvangen van clips van diverse mensen met diverse wachtwoorden, moeten de registersleutels aangepast worden.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal><b>Ontvang Wachtwoorden - </b>Als clips ontvangen worden van computers waarbij het netwerk wachtwoord niet deugt, moeten diverse netwerk wachtwoorden worden ingevuld, gescheiden door komma's.&nbsp;Als een clip binnenkomt wordt eerst het netwerk wachtwoord geprobeerd, daarna wordt de lijst van &quotOntvangen Wachtwoorden&quot; gebruikt om de clip te ontsleutelen.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>NB: Als een clip wordt ontvangen van een vriend, wordt die vriend's computernaam toegevoegd aan het eind van de omschrijving.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l1 level1 lfo6;tab-stops:list .5in'><b>Overzicht (log) van verzonden en ontvangen opdrachten</b> – wordt alleen op verzoek van het Ditto team opgevraagd om na te gaan wat er met een verzonden of onvangen clip is gebeurd.</li>
+	 
+	 <li class=MsoNormal style='mso-list:l1 level1 lfo6;tab-stops:list .5in'><b>Ontvangst clips uitschakelen– </b>De server neemt clips over het netwerk niet meer aan; clips verzonden door wie dan ook worden dus niet meer ontvangen !</li>
+</ul>
+
+<p>Normaliter opent Ditto poort 23443; om dit te wijzigen voeg de DWORD register-ingang &quot;SendRecvPort&quot; toe aan &quot; HKCU\Programs\Ditto&quot;</p>
+
+<p class=Dittoheading3><span
+style='mso-bookmark:_Toc84105488'><a name="Option-Status"></a></span><span
+style='mso-bookmark:_Toc84105488'>Opties -&gt; Statistiek</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Odometer
+     – </b>Registreert datum en aantal ontvangen en verwerkte clips sinds de installatie van Ditto.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Sessie Odometer –</b> Hetzelfde als de odometer, maar hier kan de teller teruggezet worden om vast te leggen hoe vaak Ditto gebruikt wordt.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Opgeslagen Clips, Data van opgeslagen Clips –</b> Dit is het aantal tabellen in de database.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Alles verwijderen –</b> WAARSCHUWING!&nbsp; ALLE data in de database worden verwijderd !</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Laatste start –</b> Toont de datum dat Ditto voor het laatst was gestart, samen met de tijdsduur dat Ditto actief was.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Grootte database –</b> Toont de grootte van de database.&nbsp; Klik 'Komprimeren en Repareren'' op het tabblad Algemeen, om de grootte wat te reduceren.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Clips verzonden –</b> Totaal aantal clips verzonden naar de personen verzameld op het vrienden tabblad.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo7;tab-stops:list .5in'><b>Clips ontvangen –</b> Totaal aantal clips ontvangen van anderen.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in'>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+<script language="Javascript"><!--
+
+var dateModified = document.lastModified;
+
+document.write("<b>Laatste wijziging: " + dateModified + "</b>");
+
+//-->
+</script>
+
+</div>
+
+</body>
+
+</html>

+ 313 - 0
DittoSetup/U3/device/Help/Dutch_DittoFAQ.htm

@@ -0,0 +1,313 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=FrontPage.Editor.Document>
+<meta name=Generator content="Microsoft FrontPage 4.0">
+<meta name=Originator content="Microsoft Word 10">
+<title>Ditto - FAQ</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="date"/>
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman"; margin-left:0in; margin-right:0in; margin-top:0in}
+h1
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:16.0pt;
+	font-family:Arial;}
+h2
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:14.0pt;
+	font-family:Arial;
+	font-style:italic;}
+h3
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:3;
+	font-size:13.0pt;
+	font-family:Arial;}
+p.MsoToc1, li.MsoToc1, div.MsoToc1
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc2, li.MsoToc2, div.MsoToc2
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:12.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc3, li.MsoToc3, div.MsoToc3
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:24.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:purple;
+	text-decoration:underline;
+	text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	background:navy;
+	font-size:12.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+p.dittoheading3, li.dittoheading3, div.dittoheading3
+	{mso-style-name:dittoheading3;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	background:#C5EAFF;
+	font-size:13.0pt;
+	font-family:Arial;
+	mso-fareast-font-family:"Times New Roman";
+	font-weight:bold;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman"}
+table.MsoTableGrid
+	{mso-style-name:"Table Grid";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	border:solid windowtext 1.0pt;
+	mso-border-alt:solid windowtext .5pt;
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-border-insideh:.5pt solid windowtext;
+	mso-border-insidev:.5pt solid windowtext;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1 align=center style='text-align:center'><a name="_Toc84105802">Ditto - FAQ</a></h1>
+
+<p class=MsoNormal align="right"><a href="DittoGettingStarted.htm"><font size="5">English
+Help File</font></a></p>
+
+<p class=MsoNormal><b>Inhoud:</b><o:p></o:p></p>
+
+<p class=MsoToc1><a href="Dutch_DittoGettingStarted.htm">Ditto - Beginnen</a></p>
+
+<p class=MsoToc1><a href="Dutch_DittoConfig.htm">Ditto - Config</a></p>
+
+<p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc84105802">Ditto - FAQ</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_WhatIsDitto">1) Wat is Ditto?</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_Data">2) Waar slaat Ditto normaliter zijn data op?</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_DidntPasteAnything">3) Ik plakte een clip, maar er gebeurde niets.</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_Excel">4) Ik kopi&eumlerde een cel in Microsoft Excel; alleen de text werd overgenomen, niet de formules.</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink><a href="#bm_Search">5) Ik zocht naar iets waarvan ik zeker wist dat ik het had gekopi&eumlerd, maar het staat niet in de cliplijst.</a></span></p>
+
+<p class=MsoToc3><span class="MsoHyperlink"><a href="#bm_Searching">6) Hoe  werkt het zoeken?</a></span></p>
+
+<p class=dittoheading3><span
+style='mso-bookmark:_Toc84104799'><a name="bm_WhatIsDitto"></a>1) Wat is Ditto?</span></p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>Ditto is een uitbereiding van Window's klembord.&nbsp; Je kopi&eumlert iets (vanaf nu noemen we dat een clip) naar het klembord en Ditto verzamelt die clips en slaat ze op in een database om het later weer te kunnen gebruiken. </p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Data"></a>2) Waar slaat Ditto normaliter zijn data op?</p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>Instellingen zijn opgeslagen in “HKCU\programs\Ditto”</p>
+
+<p class=MsoNormal>De database is opgeslagen in “Documents and Settings\[Current User]\ApplicationData\Ditto\DittoDB.mdb”</p>
+
+<p class=MsoNormal>De programmabestanden zijn opgeslagen in “Program Files\Ditto\”</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_DidntPasteAnything"></a>3) Ik plakte een clip, maar er gebeurde niets.</p>
+
+<p class=MsoNormal style='text-indent:.5in'>&nbsp;</p>
+
+<p class=MsoNormal>Soms kan Ditto het beoogde doel niet vinden, dus wordt er niets geplakt. Als dit voorkomt blijft de clip op het klembord staan, zodat met Ctrl-V de clip alsnog overal geplakt kan worden.</p>
+
+<p class=MsoNormal style='text-indent:.5in'>&nbsp;</p>
+
+<p class=MsoNormal>Soms kan dit voorkomen bij gebruik van de Internet Explorer.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Excel"></a>4) Ik kopi&eumlerde een cel in Microsoft Excel; alleen de text werd overgenomen, niet de formules.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>In het algemeen houdt Excel het kopi&eumlren en plakken van de gebruikte formules tegen en gebruikt externe bronnen zoals Ditto.&nbsp; Vanzelfsprekend verwacht Excel een juist plakken na kopi&eumlren.&nbsp; In feite is het zo, dat MS Office's klembord eveneens het overnemen van de gebruikte formules niet toestaat.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>De volgende specifieke informatie / uitzonderingen zijn bekend:</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>1) Als het blok gekopi&eumlerde cellen autonoom is (dwz. dat iedere formule binnen dat blok verwijst naar cellen binnen dat blok), dan bevat het “XML Spreadsheet” Clipboard Format de formules en kan vanuit Ditto keurig terug geplakt worden in Excel.&nbsp; In het andere geval bevat “XML Spreadsheet” alleen maar de waarde van de gekopi&eumlerde cellen.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>2) Het CF_SYLK Clipboard Format schijnt werkelijk relatieve cel-formules te bevatten, maar Excel gebruikt die niet nadat ze terug gezet zijn.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>3) De volgende klembord formaten worden gebruikt bij het plakken van cel-verwijzingen: “Embed Source”, “Link Source”, “Link Source Descriptor”.&nbsp; In enkele onbekende gevallen kunnen “Link” en “Object Descriptor” ook nog vereist zijn.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Search"></a>5) Ik zocht naar iets waarvan ik zeker wist dat ik het had gekopi&eumlerd, maar het staat niet in de cliplijst.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Tijdens het zoeken wordt elke clip's omschrijving doorzocht, niet de inhoud.&nbsp; De omschrijving wordt verkregen vanuit het begin van de cliptekst.&nbsp; De standaard hoeveelheid tekst opgeslagen in de omschrijving is 250 bytes, maar dit kan gewijzigd worden in [Opties -&gt;Algemeen -&gt; &quot;Hoeveel tekst opslaan in de omschrijving?&quot;].</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="bm_Searching"></a>6) Hoe  werkt het zoeken?</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Er wordt in iedere cliptekst gezocht naar de zoekopdracht.</p>
+
+<p class=MsoNormal>Bij het zoeken worden spaties beschouwd als &quot;en&quot;, tenzij de opdracht is gevat binnen aanhalingstekens (&quot;&quot;)</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>bv.&nbsp;&nbsp;&nbsp; zoekopdracht:  klik rechts </p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+dit zou van alles opleveren met &quot;klik&quot; en &quot;rechts&quot;, ongeacht waar deze woorden in de tekst staan.</p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zoekopdracht:  &quot;klik rechts&quot;</p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+nu wordt alleen die combinatie gevonden die exact overeenkomt met de zoekopdracht: &quot;klik rechts&quot; </p>
+
+<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in'>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+<script language="Javascript"><!--
+
+var dateModified = document.lastModified;
+
+//-->document.write("<b>Last updated: " + dateModified + "</b>");
+document.write("<b>Laatste wijziging: " + dateModified + "</b>");
+
+//-->
+</script>
+
+</div>
+
+</body>
+
+</html>

+ 488 - 0
DittoSetup/U3/device/Help/Dutch_DittoGettingStarted.htm

@@ -0,0 +1,488 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=FrontPage.Editor.Document>
+<meta name=Generator content="Microsoft FrontPage 4.0">
+<meta name=Originator content="Microsoft Word 10">
+<title>Ditto - Beginnen</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="date"/>
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman"; margin-left:0in; margin-right:0in; margin-top:0in}
+h1
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:1;
+	font-size:16.0pt;
+	font-family:Arial;}
+h2
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:2;
+	font-size:14.0pt;
+	font-family:Arial;
+	font-style:italic;}
+h3
+	{margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	mso-outline-level:3;
+	font-size:13.0pt;
+	font-family:Arial;}
+p.MsoToc1, li.MsoToc1, div.MsoToc1
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.MsoToc3, li.MsoToc3, div.MsoToc3
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:0in;
+	margin-left:24.0pt;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:purple;
+	text-decoration:underline;
+	text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+	{margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	background:navy;
+	font-size:12.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+p.dittoheading3, li.dittoheading3, div.dittoheading3
+	{mso-style-name:dittoheading3;
+	margin-top:12.0pt;
+	margin-right:0in;
+	margin-bottom:3.0pt;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	page-break-after:avoid;
+	background:#C5EAFF;
+	font-size:13.0pt;
+	font-family:Arial;
+	mso-fareast-font-family:"Times New Roman";
+	font-weight:bold;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:570778419;
+	mso-list-template-ids:-561473982;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:835192420;
+	mso-list-template-ids:-1120895494;}
+@list l1:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l2
+	{mso-list-id:1677616686;
+	mso-list-template-ids:-1655268998;}
+@list l2:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l3
+	{mso-list-id:2062316516;
+	mso-list-template-ids:-2102618902;}
+@list l3:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman"}
+table.MsoTableGrid
+	{mso-style-name:"Table Grid";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	border:solid windowtext 1.0pt;
+	mso-border-alt:solid windowtext .5pt;
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-border-insideh:.5pt solid windowtext;
+	mso-border-insidev:.5pt solid windowtext;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1 style="width: 892; height: 1425">
+
+<h1 align=center style='text-align:center'><a name="_Toc84105232">Ditto -
+Beginnen</a></h1>
+
+<p class=MsoNormal align="right"><a href="DittoGettingStarted.htm"><font size="5">English
+Help File</font></a></p>
+
+<p class=MsoNormal><b>Inhoud:</b></p>
+
+<p class=MsoToc1><span class=MsoHyperlink>
+<a href="#_Toc84105232" style="color: blue; text-decoration: underline; text-underline: single">Ditto - Beginnen</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105233" style="color: blue; text-decoration: underline; text-underline: single">Wat is Ditto?</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105234" style="color: blue; text-decoration: underline; text-underline: single">Basaal Gebruik</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105235" style="color: blue; text-decoration: underline; text-underline: single">Terminologie</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105236" style="color: blue; text-decoration: underline; text-underline: single">Ditto’s Hoofd Venster</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105237" style="color: blue; text-decoration: underline; text-underline: single">Kenmerken</a></span></p>
+
+<p class=MsoToc3><span class=MsoHyperlink>
+<a href="#_Toc84105238" style="color: blue; text-decoration: underline; text-underline: single">Toetsakties</a></span></p>
+
+<p class=MsoNormal><a href="Dutch_DittoConfig.htm">Ditto - Configiguratie</a></p>
+
+<p class=MsoNormal><a href="Dutch_DittoFAQ.htm">Ditto - FAQ</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105233">Wat is Ditto?</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>Ditto is een uitbereiding van Window's klembord.&nbsp; Je kopi&eumlert iets (vanaf nu noemen we dat een clip) naar het klembord en Ditto verzamelt die clips en slaat ze op in een database om het later weer te kunnen gebruiken. </p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105234">Basaal Gebruik</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Start Ditto.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Kopi&eumler iets naar het klembord, bv. met gebruik van Ctrl-C en geselecteerde tekst in een tekstverwerker.</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Open Ditto door op het pictogram in het systeemvak te klikken of door de sneltoets aan te slaan, welke ingesteld kan worden in<br> &quotOpties/Sneltoetsen/Ditto aktiveren&quot;; is bv. gekozen voor de &quotdown&quot-toets, houdt dan de Ctrl-toets ingedrukt en druk op de toets met het pijltje naar beneden. Standaard wordt Ditto geinstalleerd met Ctrl-` [= Ctrl + tilde(~)toets]</li>
+ <li class=MsoNormal style='mso-list:l2 level1 lfo1;tab-stops:list .5in'>Dubbelklik of klik Enter om de clip te plakken in het gewenste openstaande venster.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105235">Terminologie</a></p>
+
+<p class=MsoNormal><b>&nbsp;</b></p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>Clip</b> = <b>Kopi&eumlren</b> =Iets kopi&eumlren naar het klembord (en wel met gebruik van Ctrl-C).&nbsp; Dit iets verschijnt als clip in Ditto's Cliplijst.</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l1 level1 lfo2;tab-stops:list .5in'>Iedere clip bestaat uit een of meer  <b>Formaten</b>, ieder van een eigen <b>Type</b>,&nbsp;&nbsp;&nbsp;  e.g. ANSI tekst, Unicode, BMP-plaatjes, html, xml, etc.<br>Ieder Formaat geeft een ander aspect weer van het gekopi&eumlerde object.</li>
+ <li class=MsoNormal style='mso-list:l1 level1 lfo2;tab-stops:list .5in'>Iedere clip heeft ook een<b> Omschrijving</b> welke wordt verkregen vanuit het begin van de clip’s CF_TEXT Formaat.&nbsp; De omschrijving wordt gebruikt in het in het zoekveld, onderaan de cliplijst, wanneer daarin wordt gezocht naar een bepaalde zoekopdracht..</li>
+</ul>
+
+<p class=MsoNormal style='margin-left:.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.25in'><b>Het Doel of Focus venster</b> = het venster waar Ditto in moet plakken.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105236">Ditto’s Hoofd Venster</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><b>Titelbalk</b> = <b>Caption</b> = Toont aantal geselecteerde clips / totaal aantal clips en het open focus venster; bv: Ditto - 2/144 - Notepad</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><b>Opgeslagen clips</b> = <b>Clip Lijst</b> = Lijst van alle clips opgeslagen vanaf het klembord.</li>
+ <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><b>Filter Box</b> = Filtert de clips naar hun omschrijving.&nbsp; Na het doorzoeken verschijnt er een &quot;C&quot; knop, rechts van de box, welke de box leeg maakt en de cliplijst herstelt. Deze herstelprocedure kan ook worden uitgevoerd door ALT-C te toetsen.</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105237">Kenmerken</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<ul style='margin-top:0in' type=disc>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Globale versus Locale sneltoetsen</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Eigenschappen</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Filter Box</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Groepen</li>
+ <li class=MsoNormal style='mso-list:l3 level1 lfo4;tab-stops:list .5in'>Clips over het Netwerk verzenden</li>
+</ul>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=dittoheading3><a name="_Toc84105238">Toetsakties</a></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
+ style='border-collapse:collapse;mso-padding-alt:0in 0in 0in 0in'>
+ <tr style='mso-yfti-irow:0'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-`</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Standaard globale sneltoets voor het aanroepen van de Ditto's cliplijst</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:1'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>&nbsp;</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>&nbsp;</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:2'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Esc</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Sluit ieder Ditto venster</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:3'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Tab</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Verzet het focus naar de volgende optie in Opties</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:4'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-Space</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Schakelt tussen normaal en permanent &quotAltijd op de Voorgrond&quot</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:5'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>&nbsp;</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>&nbsp;</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:6'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Enter</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Plakt geselecteerde clip in het focus venster, of, indien het om een geselecteerde groep gaat, opent de groep.</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:7'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Alt-Enter</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Opent de clip's eigenschappen dialoogbox</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:8'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p align="right"><font size="3">Shift-Enter</font></td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <font size="3">Plakt alleen CF_TEXT als platte, pure tekst, zonder extra tekst-informatie </font>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:8'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>F3</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Toont de complete omschrijving in een tooltip</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:9'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-A</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Selecteer Alles</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:10'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Alt-C</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Maakt de filterbox leeg en herstelt de cliplijst</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:11'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>&nbsp;</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>&nbsp;</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:12'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-G</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Toont de groeps-hi&eumlrarchie in boomstructuur</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:13'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Backspace</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Open de Ouder Groep</p>
+  </td>
+ 
+ </tr>
+ <tr style='mso-yfti-irow:16'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>F7</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Maakt een nieuwe groep aan en plaatst de geselecteerde clip in die groep</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:17'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-F7</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Nieuwe Groep</p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:18;mso-yfti-lastrow:yes'>
+  <td width=91 valign=top style='width:.95in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal align=right style='text-align:right'>Ctrl-X,C,V</p>
+  </td>
+  <td width=547 valign=top style='width:5.7in;padding:0in 5.4pt 0in 5.4pt'>
+  <p class=MsoNormal>Knipt, kopi&eumlert, plakt Clips tussen groepen, zonder tussenkomst van het klembord.</p>
+  </td>
+ </tr>
+</table>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in'>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+<script language="Javascript"><!--
+
+var dateModified = document.lastModified;
+
+document.write("<b>Laatste wijziging: " + dateModified + "</b>");
+
+//-->
+</script>
+
+</div>
+
+</body>
+
+</html>

+ 165 - 0
DittoSetup/U3/device/Help/U3_Install.htm

@@ -0,0 +1,165 @@
+<html>
+
+<HEAD>
+<TITLE>Ditto, Clipboard Extension</TITLE>
+<META NAME="Keywords" CONTENT="Win32, Clipboard, Manager, Extension, Enhanced, Multi-Clipboard, MultiClipboard, OpenSource, open-source, free, copy, cut, paste, multiclip, clipmagic">
+<META NAME="Description" CONTENT="Ditto is an extension to the standard windows clipboard. It saves each item placed on the clipboard allowing you access to any of those items at a later time. Ditto allows you to specify what gets saved, text, images or html.">
+<META NAME="Author" CONTENT="[email protected]">
+</HEAD>
+
+
+<body>
+
+<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1" height="563">
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="21">&nbsp;</td>
+    <td width="98%" bgcolor="#3C6496" align="right" bordercolor="#FFFFFF" height="21" colspan="2">
+    &nbsp;</td>
+  </tr>
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="59">&nbsp;</td>
+    <td width="45%" height="59">
+    <b><font size="7">Ditto - U3 Device</font></b>
+
+    </td>
+    <td width="53%" height="59" align="right" valign="top">
+    <span class=MsoHyperlink>
+<a href="DittoGettingStarted.htm" style="color: blue; text-decoration: underline; text-underline: single">Getting Started</a>&nbsp;&nbsp;
+- &nbsp; <a href="DittoConfig.htm">Config</a> &nbsp; -&nbsp;&nbsp; </span><a href="DittoFAQ.htm">FAQ</a>&nbsp;
+    &nbsp;- &nbsp; <a href="http://sourceforge.net/forum/?group_id=84084">Public
+    Forums</a>
+
+<br><br>
+    </td>
+  </tr>
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="81">&nbsp;</td>
+    <td width="98%" height="81" colspan="2" valign="top">
+<br>
+<b><font size="4">Thank you for installing Ditto for U3 Devices.</font></b>
+<p>&nbsp;
+
+    </td>
+  </tr>
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="25">&nbsp;</td>
+    <td height="25" colspan="2" valign="middle" bgcolor="#3C6496">
+<b><font color="#FFFFFF">&nbsp;</font></b><a name="_Toc84105233"><b><font color="#FFFFFF">What
+is Ditto?</font></b></a>
+
+    </td>
+  </tr>
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="83">&nbsp;</td>
+    <td width="98%" height="83" colspan="2" valign="top">
+<br>
+Ditto is an extension to the Windows Clipboard.&nbsp; You copy something to the
+Clipboard and Ditto takes what you copied and stores it in a database to
+retrieve at a later time.
+
+    </td>
+  </tr>
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="27">&nbsp;</td>
+    <td height="27" colspan="2" valign="middle" bgcolor="#3C6496">
+<font color="#FFFFFF">&nbsp;<b>U3 Device Specific</b></font>
+
+    </td>
+  </tr>
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="91">&nbsp;</td>
+    <td height="91" colspan="2" valign="top">
+<br>
+Due to speed and space limitations Ditto's database of clips is stored on the
+host machine while Ditto is running and on the device in a zipped format when
+Ditto is not running.&nbsp; The database is copied down from the
+U3 device on startup and copied back to the U3 device on exit.&nbsp; If the
+device is yanked out of the USB drive <u>your data will be lost</u>.&nbsp; It is
+verify important to eject the device properly.&nbsp; While Ditto is running
+Ditto will copy its database to the device once an hour so all is not lost if
+the device is ejected improperly.&nbsp; Ditto's database can be manually copied
+to the device by right click on the task tray icon and selecting 'copy database
+to device'.
+<p><b>Changes from standard Ditto</b></p>
+<ul>
+  <li>Settings are now stored in a .ini file on the device&nbsp;</li>
+  <li>Database is stored on the device&nbsp;in a zipped format, copied down on
+    startup and zipped back up on exit.</li>
+  <li>Name copy and Paste are not supported&nbsp;</li>
+  <li>New method for tracking focused window</li>
+  <li>Defaulted maximum clips to 250</li>
+</ul>
+<p>&nbsp;
+
+    </td>
+  </tr>
+  <tr>
+    <td width="2%" bgcolor="#3C6496" height="176" rowspan="2">&nbsp;</td>
+    <td width="98%" height="27" colspan="2" valign="middle" bgcolor="#3C6496">
+<font color="#FFFFFF"><b>&nbsp;</b></font>
+<a name="_Toc84105234"><font color="#FFFFFF"><b>Basic Usage</b></font></a>
+
+    </td>
+  </tr>
+  <tr>
+    <td width="98%" height="149" colspan="2" valign="top">
+&nbsp;
+<ul style="margin-top: 0in;" type="disc">
+  <li class="MsoNormal">Run Ditto.</li>
+  <li class="MsoNormal">Copy things to the clipboard, e.g. using Ctrl-C with
+    text selected in a text editor.</li>
+  <li class="MsoNormal">Open Ditto by clicking its icon in the system tray or by
+    pressing its Hot Key which defaults to Ctrl + ` – i.e. hold down Ctrl and
+    press the back-quote (tilde ~) key.</li>
+  <li class="MsoNormal">Double click or press enter on the item to paste it to
+    the previous window.</li>
+</ul>
+
+    </td>
+  </tr>
+</table>
+
+
+<p align="center">
+
+
+<!-- ADDFREESTATS.COM AUTOCODE V4.0 -->
+<script type="text/javascript">
+<!--
+var AFS_Account="00413915";
+var AFS_Tracker="auto";
+var AFS_Server="www4";
+var AFS_Page="DetectName";
+var AFS_Url="DetectUrl";
+// -->
+</script>
+<script type="text/javascript" src="http://www4.addfreestats.com/cgi-bin/afstrack.cgi?usr=00413915">
+</script>
+<noscript>
+<p align="center">
+<a href="http://www.addfreestats.com" target="_blank">
+<img src="http://www4.addfreestats.com/cgi-bin/connect.cgi?usr=00413915Pauto" border=0 title="AddFreeStats.com Free Web Stats!" width="25" height="27" align="left"></a>
+ 
+</p>
+ 
+<p align="left">
+
+&nbsp;
+
+<p align="left">
+
+&nbsp;
+
+<p align="left">
+
+</noscript>
+ <p align="left">&nbsp;</p>
+<p>&nbsp;</p>
+<p>
+<!-- ENDADDFREESTATS.COM AUTOCODE V4.0  -->
+
+</body>
+
+
+
+</html>

+ 310 - 0
DittoSetup/U3/device/Language/Dutch.xml

@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "2" Author = "Rob Meijer" Notes = "[email protected]">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Groepen</Item>		
+		<Item English_Text = "New Group Ctrl-F7" ID = "32811">Nieuwe Groep</Item>		
+		<Item English_Text = "New Group Selection F7" ID = "32812">Nieuwe Groep selectie</Item>		
+		<Item English_Text = "Move to Group" ID = "32840">Verplaats naar Groep</Item>		
+		<Item English_Text = "Quick Options" ID = "-1">Spoed Opties</Item>		
+		<Item English_Text = "Lines Per Row" ID = "-1">Regels per Rij</Item>		
+		<Item English_Text = "1" ID = "32807">1</Item>		
+		<Item English_Text = "2" ID = "32786">2</Item>		
+		<Item English_Text = "3" ID = "32787">3</Item>		
+		<Item English_Text = "4" ID = "32788">4</Item>		
+		<Item English_Text = "5" ID = "32789">5</Item>		
+		<Item English_Text = "Transparency" ID = "-1">Transparantie</Item>		
+		<Item English_Text = "None" ID = "32800">Geen</Item>		
+		<Item English_Text = "5 " ID = "32808">5</Item>		
+		<Item English_Text = "10 " ID = "32792">10</Item>		
+		<Item English_Text = "15 " ID = "32794">15</Item>		
+		<Item English_Text = "20 " ID = "32796">20</Item>		
+		<Item English_Text = "25 " ID = "32798">25</Item>		
+		<Item English_Text = "30 " ID = "32799">30</Item>		
+		<Item English_Text = "40 " ID = "32790">40</Item>		
+		<Item English_Text = "Positioning" ID = "-1">Positie</Item>		
+		<Item English_Text = "At Caret" ID = "32802">Bij letter/leesteken</Item>		
+		<Item English_Text = "At Cursor" ID = "32803">Bij de cursor</Item>		
+		<Item English_Text = "At Previous Position" ID = "32804">Bij vorige positie</Item>		
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Eerste 10 Sneltoetsen</Item>		
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Gebruik Ctrl - Num</Item>		
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Toon sneltoetsTekst</Item>		
+		<Item English_Text = "View Caption Bar On" ID = "-1">Positie Titelbalk</Item>		
+		<Item English_Text = "Top" ID = "32783">Boven</Item>		
+		<Item English_Text = "Right" ID = "32780">Rechts</Item>		
+		<Item English_Text = "Bottom" ID = "32781">Onder</Item>		
+		<Item English_Text = "Left" ID = "32782">Links</Item>		
+		<Item English_Text = "Sort" ID = "-1">Sorteren</Item>		
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Opklimmend (Laatste boven)</Item>		
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Afdalend Laatste onder)</Item>		
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Dubbelklik op Titelbalk</Item>		
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Altijd op de Voorgrond: aan/uit</Item>		
+		<Item English_Text = "Rolls-up Window" ID = "32815">Venster omhoog scrollen</Item>		
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">Omschrijving aan/uit</Item>		
+		<Item English_Text = "Always on Top Ctrl-Space" ID = "32784">Altijd op de Voorgrond</Item>		
+		<Item English_Text = "Auto Roll-up" ID = "32791">Altijd naar boven scrollen</Item>		
+		<Item English_Text = "Always Show Description" ID = "32813">Altijd omschrijving tonen</Item>		
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Naar nieuwe groepnamen vragen</Item>		
+		<Item English_Text = "Select Font" ID = "32844">Lettertype kiezen</Item>		
+		<Item English_Text = "Show Thumbnails" ID = "32845">Miniatuur afbeeldingen tonen</Item>		
+		<Item English_Text = "Draw RTF Text" ID = "32846">Gebruik RTF Tekst</Item>		
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Clip plakken na selecteren</Item>		
+		<Item English_Text = "Find As You Type" ID = "32848">Tijdens invoer gelijkwaardige vinden</Item>		
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Gehele venster is zichtbaar</Item>		
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Toon groeps-clip van de gemeenschappelijke lijst </Item>		
+		<Item English_Text = "Sent To" ID = "-1">Verzenden naar</Item>		
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - dezelfde computer</Item>		
+		<Item English_Text = "View Full Description	F3" ID = "32793">Complete omschrijving tonen F3</Item>		
+		<Item English_Text = "View Groups Ctrl-G" ID = "32819">Toon groepen</Item>		
+		<Item English_Text = "Paste Plain Text Only Shift-Enter" ID = "32841">Alleen platte tekst tonen</Item>		
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">HTML als platte tekst tonen</Item>		
+		<Item English_Text = "Delete Entry Del" ID = "32801">Wis toegang</Item>		
+		<Item English_Text = "Properties Alt-Enter" ID = "32776">Eigenschappen</Item>		
+		<Item English_Text = "Quick Properties" ID = "-1">Snelle instellingen</Item>		
+		<Item English_Text = "Never Auto Delete" ID = "32820">Nooit automatisch wissen aanzetten</Item>		
+		<Item English_Text = "Auto Delete" ID = "32821">Automatisch wissen</Item>		
+		<Item English_Text = "Remove Hot Key" ID = "32822">Sneltoets verwijderen</Item>		
+		<Item English_Text = "Options..." ID = "32805">Opties</Item>		
+		<Item English_Text = "Help" ID = "32842">Help</Item>		
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Verbinding met Klembord verbreken </Item>		
+		<Item English_Text = "Exit Program" ID = "32806">Programma afsluiten</Item>		
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852">Waarschuwen bij wissen</Item>	
+		<Item English_Text = "Import" ID = "32855">Importeren</Item>
+		<Item English_Text = "Export" ID = "32853">Exporteren</Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856">Verwijder benoemde clips</Item>	
+		<Item English_Text = "Edit Clip" ID = "32860">Clip bewerken</Item>
+		<Item English_Text = "New Clip" ID = "32867">Nieuwe Clip</Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>		
+		<Item English_Text = "Hot Key" ID = "2039">Sneltoets</Item>		
+		<Item English_Text = "Hot Key" ID = "2039">Sneltoets</Item>		
+		<Item English_Text = "Date" ID = "2040">Datum</Item>		
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Nooit automatisch wissen</Item>		
+		<Item English_Text = "Parse" ID = "1040">Analyseren</Item>		
+		<Item English_Text = "Move To Group" ID = "2041">Verplaatsen naar Groep</Item>		
+		<Item English_Text = "Item Title" ID = "2042">Titel clip</Item>		
+		<Item English_Text = "Copy Formats" ID = "2029">Kopiëer tekstformaat</Item>	
+		<Item English_Text = "Delete" ID = "1021">Wissen</Item>		
+		<Item English_Text = "OK" ID = "1">OK</Item>		
+		<Item English_Text = "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text = "Copy Properties" ID = "-1">Kopiëer Eigenschappen</Item>	
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>			
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Start Ditto als systeem start</Item>		
+		<Item English_Text = "Display Icon in Systeem Tray" ID = "2003">Toon pictogram in System Tray </Item>		
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Maximum aantal opgeslagen clips</Item>		
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Opgeslagen clips lopen af na</Item>	
+		<Item English_Text = "Days" ID = "2043">Dagen</Item>		
+		<Item English_Text = "Compact and Repair" ID = "1028">Komprimeren en repareren</Item>		
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Updates automatisch online zoeken</Item>		
+		<Item English_Text = "Check Now" ID = "1030">Check Nu</Item>		
+		<Item English_Text = "Allow Duplicates" ID = "1037">Duplicaten toestaan</Item>		
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Tijdstip van plakken bepaalt volgorde cliplijst</Item>		
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Diverse geslecteerde clips gelijktijdig plakken</Item>		
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Verberg Ditto met een sneltoets</Item>		
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Hoeveel tekst opslaan in de omschrijving? </Item>		
+		<Item English_Text = "On copy play the sound" ID = "2045">Speel geluidje af bij kopiëren</Item>		
+		<Item English_Text = "Play" ID = "2034">Speel</Item>		
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Geselecteerde clip plakken in het actieve venster</Item>		
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Maximale clipgrootte in bytes</Item>		
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(Onbeperkt: leeg laten)</Item>		
+		<Item English_Text = "Set Database Path" ID = "1034">Pad Database aangeven</Item>		
+		<Item English_Text = "Language" ID = "2069">Taal</Item>		
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Clips negeren, die X Milliseconden (1000 ms = 1 Sec) na de laatste clip optreden</Item>		
+		<Item English_Text = "About Language" ID = "2073">Kommentaar vertaling</Item>		
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Verkrijg zekerheid dat Ditto altijd verbinding maakt met het klembord</Item>		
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true">Algemeen</Item>	
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>			
+		<Item English_Text = "&Add" ID = "1015">&Toevoegen</Item>		
+		<Item English_Text = "&Delete" ID = "1016">&Wissen</Item>		
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Ondersteunde Formaten</Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>				
+		<Item English_Text = "Activate Ditto" ID = "2048">Ditto aktiveren</Item>		
+		<Item English_Text = "Win" ID = "2035">Win</Item>		
+		<Item English_Text = "Named Copy" ID = "2049">Benoemde Clip</Item>		
+		<Item English_Text = "Win" ID = "2036">Win</Item>		
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Globale sneltoetsen voor de laatste tien clips</Item>		
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Stuur ''plakken'' (anders wordt alleen de clip op het klembord geladen)</Item>		
+		<Item English_Text = "Position 1" ID = "2052">Positie 1</Item>		
+		<Item English_Text = "Position 2" ID = "2053">Positie 2</Item>		
+		<Item English_Text = "Position 3" ID = "2054">Positie 3</Item>		
+		<Item English_Text = "Position 4" ID = "2055">Positie 4</Item>		
+		<Item English_Text = "Position 5" ID = "2056">Positie 5</Item>		
+		<Item English_Text = "Position 6" ID = "2057">Positie 6</Item>		
+		<Item English_Text = "Position 7" ID = "2058">Positie 7</Item>		
+		<Item English_Text = "Position 8" ID = "2059">Positie 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Positie 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Positie 10</Item>	
+		<Item English_Text = "Win" ID = "2042">Win</Item>		
+		<Item English_Text = "Win" ID = "2043">Win</Item>		
+		<Item English_Text = "Win" ID = "2044">Win</Item>		
+		<Item English_Text = "Win" ID = "2045">Win</Item>		
+		<Item English_Text = "Win" ID = "2046">Win</Item>		
+		<Item English_Text = "Win" ID = "2037">Win</Item>		
+		<Item English_Text = "Win" ID = "2038">Win</Item>		
+		<Item English_Text = "Win" ID = "2039">Win</Item>		
+		<Item English_Text = "Win" ID = "2040">Win</Item>		
+		<Item English_Text = "Win" ID = "2041">Win</Item>		
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Vink de  Win-knop aan om de windowstoets te betrekken bij de sneltoetsen. </Item>		
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Sneltoetsen</Item>	
+
+		<Item English_Text = "Named Paste" ID = "2062">Benoemd Plakken</Item>	
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>			
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">Historie begint bovenaan de lijst (vs. onderaan)</Item>		
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Gebruik Ctrl - Num  voor de laatste 10 clips</Item>			
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Toon nummers voor de bovenste 10 clips</Item>		
+		<Item English_Text = "Show leading whitespace" ID = "2021">Toon eventuele voorloop spaties</Item>		
+		<Item English_Text = "Text Lines per Row" ID = "2062">Regels per rij</Item>		
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Transparantie van Cliplijst instellen</Item>		
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Toon miniatuur afbeeldingen (voor CF_DIB types) (kan PC langzamer maken)</Item>		
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Schrijf RTF Tekst in de clips (voor RTF types) (kan PC langzamer maken)</Item>		
+		<Item English_Text = "Find As You Type" ID = "2036">Zoek letterlijk</Item>		
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Gehele venster moet zichtbaar zijn</Item>		
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Toon Groepclips</Item>		
+		<Item English_Text = "Font" ID = "1040">Letterset</Item>		
+		<Item English_Text = "Default Font" ID = "2031">Vaste letterset</Item>		
+		<Item English_Text = "Popup Positioning" ID = "2063">Popup Positie</Item>		
+		<Item English_Text = "At Caret" ID = "2015">Bij letter/leesteken</Item>		
+		<Item English_Text = "At Cursor" ID = "2016">Bij de cursor</Item>		
+		<Item English_Text = "At Previous Position" ID = "2017">Bij de vorige positie</Item>		
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Uitleg van de tekens in het venster</Item>		
+		<Item English_Text = "  * = Don't Auto Delete\\n  s = Shortcut exists\\n G = Item is a Group\\n  ! = Item is attached to a Group" ID = "2065">* = Niet automatisch wissen\\n G = Clip is een groep\\n  ! =Clip behoort tot een groep</Item>		
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Snel Menu</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Waarschuwen bij wissen clips</Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>			
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Bij ontvangst van een IP of een computernaam uit deze lijst, wordt deze op het klembord gezet. In andere gevallen wordt de IP opgeslagen bij de bestaande clips, voor later gebruik.</Item>		
+		<Item English_Text =  "IP/Computer Names seperated by commas" ID = "2053">IP/Computernamen gescheiden door komma's </Item>	
+		<Item English_Text =  "Disable Recieving Clips" ID = "2026">Ontvangst clips uitschakelen </Item>	
+		<Item English_Text =  "Network Password" ID = "2054">Netwerk Wachtwoord </Item>	
+		<Item English_Text =  "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Verzoeke bij ontvangst van clips van een computer waarvan het netwerkwachtwoord niet deugt, extra netwerkwachtwoorden in te voeren, gescheiden door komma's </Item>	
+		<Item English_Text =  "Clips received" ID = "2067">Wachtwoorden ontvangen </Item>	
+		<Item English_Text =  "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Als ''Send all Copies'' geselecteerd is, zullen alle clips van deze computer worden verzonden naar de andere computer. Is dat commando niet geselecteerd, dan staat het alsnog in het rechtermuisklikmenu. </Item>	
+		<Item English_Text =  "Log Send Receive Commands" ID = "1042">Overzicht (log) van verzonden en ontvangen opdrachten </Item>	
+		<Item English_Text = "Receive Passwords" ID = "2056">Wachtwoorden ontvangen</Item>
+		<Item English_Text =  "Friends" ID = "-1" PropertyPage = "true"> Vrienden </Item>	
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>		
+		<Item English_Text =  "Send All Copies to this friend" ID = "1015">Alle clips verzenden</Item>	
+		<Item English_Text =  "IP/Name" ID = "2052">IP/Naam </Item>	
+		<Item English_Text =  "Description" ID = "2053"> Omschrijving </Item>	
+		<Item English_Text =  "Friend Details" ID = "-1"> Vriend </Item>	
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>		
+		<Item English_Text =  "Odometer" ID = "2052"> Odometer </Item>	
+		<Item English_Text =  "Trip Odometer" ID = "2053"> Sessie Odometer </Item>	
+		<Item English_Text =  "Copies" ID = "2054">Clips </Item>	
+		<Item English_Text =  "Pastes" ID = "2055">Plaksels </Item>	
+		<Item English_Text =  "Copies" ID = "2056">Clips </Item>	
+		<Item English_Text =  "Pastes" ID = "2057"> Plaksels </Item>	
+		<Item English_Text =  "Reset" ID = "1006"> Terugzetten </Item>	
+		<Item English_Text =  "Saved Copies" ID = "2058">Opgeslagen Clips</Item>	
+		<Item English_Text =  "Saved Copy Data" ID = "2059">Data van opgeslagen clips </Item>\f0\fs20		
+        <Item English_Text =  "Remove All" ID = "1013">Alles verwijderen </Item>	
+		<Item English_Text =  "Last Started" ID = "2060">Laatste start </Item>	
+		<Item English_Text =  "Database Size" ID = "2061"> Grootte Database </Item>	
+		<Item English_Text =  "Clips Sent" ID = "2066">Clips verzonden </Item>	
+		<Item English_Text =  "Clips received" ID = "2067">Clips ontvangen </Item>	
+		<Item English_Text =  "Since Last Start" ID = "2068">Sinds laatste start </Item>		
+	    <Item English_Text =  "Stats" ID = "-1" PropertyPage = "true"> statistiek</Item>	
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text =  "Main Types" ID = "2052">hoofd types </Item>	
+		<Item English_Text =  "Custom Type" ID = "2053">door gebruiker bepaald type </Item>		
+		<Item English_Text =  "Add" ID = "1020"> Toevoegen </Item>	
+		<Item English_Text =  "Currently on the Clipboard" ID = "2054">Momenteel op het klembord </Item>		
+		<Item English_Text =  "Add" ID = "1019"> Toevoegen </Item>	
+		<Item English_Text =  "Add" ID = "1021"> Toevoegen </Item>	
+		<Item English_Text =  "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text =  "Add Supported Type" ID = "-1">Ondersteund type toevoegen </Item>	
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>		
+		<Item English_Text = "New Group" ID = "1040">Nieuwe groep</Item>		
+		<Item English_Text = "OK" ID = "1">OK</Item>		
+		<Item English_Text = "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text = "Move to Group" ID = "-1">Verplaatsen naar groep</Item>
+	</Ditto_Move_To_Groups>
+	
+	<Ditto_String_Table>				
+		<Item English_Text = "General" ID = "GeneralTitle">Algemeen</Item>		
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Ondersteunde formaten</Item>		
+		<Item English_Text = "Stats" ID = "StatsTitle">Statistiek</Item>		
+		<Item English_Text = "Friends" ID = "FriendsTitle">Vrienden</Item>		
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Snel Menu</Item>		
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Sneltoetsen</Item>		
+		<Item English_Text = "About" ID = "AboutTitle">Over Ditto</Item>		
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Fout bij openen database</Item>		
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\\n\\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">Niet in staat DAO/Jet te initialiseren\\n Selecteer YES om DAO te downloaden van http://ditto-cp.sourceforge.net/dao_setup.exe\\n\\nHerstart DittO na installatie van DAO. </Item>		
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Onbekend database formaat</Item>		
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">bestand wordt opnieuw benoemd</Item>		
+		<Item English_Text = "and a new database will be created" ID = "New_Database">en een nieuwe database wordt aangemaakt</Item>		
+		<Item English_Text = "Updates available for Ditto.\\nVisit ditto-cp.sourceforge.net for details\\n\\nRunning Version" ID = "Updates_Available">Updates beschikbaar voor Ditto.\\nBezoek ditto-cp.sourceforge.net voor details\\n\\nhuidige versie </Item>		
+		<Item English_Text = "Update Version" ID = "Update_Version">Update Versie</Item>		
+		<Item English_Text = "Download updated version?" ID = "Download_Update">downloade update versie</Item>		
+		<Item English_Text = "No updates available" ID = "No_Updates">Geen updates beschikbaar</Item>		
+		<Item English_Text = "This will remove all Copy Entries!\\n\\nContinue?" ID = "Remove_All">Alle clip ingangen worden verwijderd</Item>		
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Verbinding met klembord beëindigd</Item>		
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Met klembord verbinden</Item>		
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Niet mogenlijk DAO/Jet db machine te initialiseren. DAO wordt nu geinstalleerd.\\n\\n Herstart Ditto na installatie van DAO.</Item>		
+		<Item English_Text = "NO TARGET" ID = "No_Target">geen bestemming</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Waarschuwen wanneer clips gewist worden</Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip">Geselecteerde clips wissen?</Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing">Foute import van geëxporteerde clip</Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing">Foute analyse van geëxporteerde clip</Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good">Clip op klembord geplaatst </Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully">Importeren geslaagd</Item>
+		<Item English_Text = "clip" ID = "Clip">Clip</Item>
+		<Item English_Text = "clips" ID = "Clips">Clips</Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc">Bij opslaan clip-omschrijving aanpassen?</Item>
+		<Item English_Text = "New Clip" ID = "New_Clip">Nieuwe clip</Item>
+		<Item English_Text = "Save" ID = "Save">Opslaan</Item>
+		<Item English_Text = "Save All" ID = "Save_All">Alles opslaan</Item>
+		<Item English_Text = "Close Current Tab" ID = "Close">Huidig tabblad sluiten</Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable">Deze clip kan niet bewerkt worden. Een clip moet voorkomen in de lijst van ondersteunde formaten</Item>
+		<Item English_Text = "to be editable" ID = "Editable">bewerkbaar</Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges">Wijzigingen opslaan?</Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving">Fout tijdens opslaan clip</Item>
+		<Item English_Text = "New" ID = "New">Nieuw</Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close">Opslaan, afsluiten en plaatsen op klembord</Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit">Ditto textverwerker</Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title">Ditto - Benoemd plakken</Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1">Fout tijdens laden van data</Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2">Tijdens benoemd plakken, clip onvindbaar</Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3">Bij uitzondering benoemde clip niet gevonden</Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title">Ditto - Clip benoemen</Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1">Opslaan benoemde clip in database mislukt</Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2">Bij uitzondering benoemde clip niet opgeslagen</Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3">Benoemde Clip niet ontvangen</Item> 
+		
+		<Item English_Text = "Send All Copies" ID = "Send_All_Copies">Zendt alle clips</Item>
+		<Item English_Text = "IP/Name" ID = "IP_Name">IP_Naam</Item>
+		<Item English_Text = "Descriptions" ID = "Descriptions">Omschrijvingen</Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>			
+		<Item English_Text = "OK" ID = "1">OK</Item>		
+		<Item English_Text = "Cancel" ID = "2">Cancel</Item>		
+		<Item English_Text = "Apply" ID = "12321">Toepassen</Item>	
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>			
+		<Item English_Text = "Show Quick Paste" ID = "32773">Toon Snelplakken</Item>		
+		<Item English_Text = "Options" ID = "32771">Opties</Item>		
+		<Item English_Text = "Help" ID = "32843">Help</Item>		
+		<Item English_Text = "Exit" ID = "32772">Exit</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854">Importeren</Item>
+		<Item English_Text = "New Clip" ID = "32868">Nieuwe Clip</Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 301 - 0
DittoSetup/U3/device/Language/English.xml

@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "1" Author = "Scott Brogden" Notes = "">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1"></Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811"></Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812"></Item>
+		<Item English_Text = "Move to Group" ID = "32840"></Item>
+		<Item English_Text = "Quick Options" ID = "-1"></Item>
+		<Item English_Text = "Lines Per Row" ID = "-1"></Item>
+		<Item English_Text = "1" ID = "32807"></Item>
+		<Item English_Text = "2" ID = "32786"></Item>
+		<Item English_Text = "3" ID = "32787"></Item>
+		<Item English_Text = "4" ID = "32788"></Item>
+		<Item English_Text = "5" ID = "32789"></Item>
+		<Item English_Text = "Transparency" ID = "-1"></Item>
+		<Item English_Text = "None" ID = "32800"></Item>
+		<Item English_Text = "5 " ID = "32808"></Item>
+		<Item English_Text = "10 " ID = "32792"></Item>
+		<Item English_Text = "15 " ID = "32794"></Item>
+		<Item English_Text = "20 " ID = "32796"></Item>
+		<Item English_Text = "25 " ID = "32798"></Item>
+		<Item English_Text = "30 " ID = "32799"></Item>
+		<Item English_Text = "40 " ID = "32790"></Item>
+		<Item English_Text = "Positioning" ID = "-1"></Item>
+		<Item English_Text = "At Caret" ID = "32802"></Item>
+		<Item English_Text = "At Cursor" ID = "32803"></Item>
+		<Item English_Text = "At Previous Position" ID = "32804"></Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1"></Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777"></Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778"></Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1"></Item>
+		<Item English_Text = "Top" ID = "32783"></Item>
+		<Item English_Text = "Right" ID = "32780"></Item>
+		<Item English_Text = "Bottom" ID = "32781"></Item>
+		<Item English_Text = "Left" ID = "32782"></Item>
+		<Item English_Text = "Sort" ID = "-1"></Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795"></Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797"></Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1"></Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814"></Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815"></Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816"></Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784"></Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791"></Item>
+		<Item English_Text = "Always Show Description" ID = "32813"></Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817"></Item>
+		<Item English_Text = "Select Font" ID = "32844"></Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845"></Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846"></Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847"></Item>
+		<Item English_Text = "Find As You Type" ID = "32848"></Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849"></Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850"></Item>
+		<Item English_Text = "Sent To" ID = "-1"></Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824"></Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793"></Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819"></Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841"></Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851"></Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801"></Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776"></Item>
+		<Item English_Text = "Quick Properties" ID = "-1"></Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820"></Item>
+		<Item English_Text = "Auto Delete" ID = "32821"></Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822"></Item>
+		<Item English_Text = "Options..." ID = "32805"></Item>
+		<Item English_Text = "Help" ID = "32842"></Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775"></Item>
+		<Item English_Text = "Exit Program" ID = "32806"></Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852"></Item>	
+		<Item English_Text = "Import" ID = "32855"></Item>
+		<Item English_Text = "Export" ID = "32853"></Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856"></Item>	
+		<Item English_Text = "Edit Clip" ID = "32860"></Item>
+		<Item English_Text = "New Clip" ID = "32867"></Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039"></Item>
+		<Item English_Text = "Hot Key" ID = "2039"></Item>
+		<Item English_Text = "Date" ID = "2040"></Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025"></Item>
+		<Item English_Text = "Move To Group" ID = "2041"></Item>
+		<Item English_Text = "Item Title" ID = "2042"></Item>
+		<Item English_Text = "Copy Formats" ID = "2029"></Item>
+		<Item English_Text = "Delete" ID = "1021"></Item>
+		<Item English_Text = "OK" ID = "1"></Item>
+		<Item English_Text = "Cancel" ID = "2"></Item>
+		<Item English_Text = "Copy Properties" ID = "-1"></Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004"></Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003"></Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008"></Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009"></Item>
+		<Item English_Text = "Days" ID = "2043"></Item>
+		<Item English_Text = "Compact and Repair" ID = "1028"></Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029"></Item>
+		<Item English_Text = "Check Now" ID = "1030"></Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037"></Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038"></Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039"></Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040"></Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044"></Item>
+		<Item English_Text = "On copy play the sound" ID = "2045"></Item>
+		<Item English_Text = "Play" ID = "2034"></Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041"></Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046"></Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047"></Item>
+		<Item English_Text = "Set Database Path" ID = "1034"></Item>
+		<Item English_Text = "Language" ID = "2069"></Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072"></Item>
+		<Item English_Text = "About Language" ID = "2073"></Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042"></Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true"></Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015"></Item>
+		<Item English_Text = "&Delete" ID = "1016"></Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true"></Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048"></Item>
+		<Item English_Text = "Win" ID = "2035"></Item>
+		<Item English_Text = "Named Copy" ID = "2049"></Item>
+		<Item English_Text = "Win" ID = "2036"></Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051"></Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042"></Item>
+		<Item English_Text = "Position 1" ID = "2052"></Item>
+		<Item English_Text = "Position 2" ID = "2053"></Item>
+		<Item English_Text = "Position 3" ID = "2054"></Item>
+		<Item English_Text = "Position 4" ID = "2055"></Item>
+		<Item English_Text = "Position 5" ID = "2056"></Item>
+		<Item English_Text = "Position 6" ID = "2057"></Item>
+		<Item English_Text = "Position 7" ID = "2058"></Item>
+		<Item English_Text = "Position 8" ID = "2059"></Item>
+		<Item English_Text = "Position 9" ID = "2060"></Item>
+		<Item English_Text = "Position 10" ID = "2061"></Item>
+		<Item English_Text = "Win" ID = "2042"></Item>
+		<Item English_Text = "Win" ID = "2043"></Item>
+		<Item English_Text = "Win" ID = "2044"></Item>
+		<Item English_Text = "Win" ID = "2045"></Item>
+		<Item English_Text = "Win" ID = "2046"></Item>
+		<Item English_Text = "Win" ID = "2037"></Item>
+		<Item English_Text = "Win" ID = "2038"></Item>
+		<Item English_Text = "Win" ID = "2039"></Item>
+		<Item English_Text = "Win" ID = "2040"></Item>
+		<Item English_Text = "Win" ID = "2041"></Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050"></Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true"></Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042"></Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033"></Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034"></Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021"></Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062"></Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006"></Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022"></Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023"></Item>
+		<Item English_Text = "Find As You Type" ID = "2036"></Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037"></Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038"></Item>
+		<Item English_Text = "Font" ID = "1040"></Item>
+		<Item English_Text = "Default Font" ID = "2031"></Item>
+		<Item English_Text = "Popup Positioning" ID = "2063"></Item>
+		<Item English_Text = "At Caret" ID = "2015"></Item>
+		<Item English_Text = "At Cursor" ID = "2016"></Item>
+		<Item English_Text = "At Previous Position" ID = "2017"></Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064"></Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065"></Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true"></Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052"></Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053"></Item>
+		<Item English_Text = "Disable Recieving Clips" ID = "2026"></Item>
+		<Item English_Text = "Network Password" ID = "2054"></Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055"></Item>
+		<Item English_Text = "Receive Passwords" ID = "2056"></Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057"></Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042"></Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true"></Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015"></Item>
+		<Item English_Text = "IP/Name" ID = "2052"></Item>
+		<Item English_Text = "Description" ID = "2053"></Item>
+		<Item English_Text = "Friend Details" ID = "-1"></Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052"></Item>
+		<Item English_Text = "Trip Odometer" ID = "2053"></Item>
+		<Item English_Text = "Copies" ID = "2054"></Item>
+		<Item English_Text = "Pastes" ID = "2055"></Item>
+		<Item English_Text = "Copies" ID = "2056"></Item>
+		<Item English_Text = "Pastes" ID = "2057"></Item>
+		<Item English_Text = "Reset" ID = "1006"></Item>
+		<Item English_Text = "Saved Copies" ID = "2058"></Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059"></Item>
+		<Item English_Text = "Remove All" ID = "1013"></Item>
+		<Item English_Text = "Last Started" ID = "2060"></Item>
+		<Item English_Text = "Database Size" ID = "2061"></Item>
+		<Item English_Text = "Clips Sent" ID = "2066"></Item>
+		<Item English_Text = "Clips received" ID = "2067"></Item>
+		<Item English_Text = "Since Last Start" ID = "2068"></Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true"></Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052"></Item>
+		<Item English_Text = "Custom Type" ID = "2053"></Item>
+		<Item English_Text = "Add" ID = "1020"></Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054"></Item>
+		<Item English_Text = "Add" ID = "1019"></Item>
+		<Item English_Text = "Add" ID = "1021"></Item>
+		<Item English_Text = "Cancel" ID = "2"></Item>
+		<Item English_Text = "Add Supported Type" ID = "-1"></Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040"></Item>
+		<Item English_Text = "OK" ID = "1"></Item>
+		<Item English_Text = "Cancel" ID = "2"></Item>
+		<Item English_Text = "Move to Group" ID = "-1"></Item>
+	</Ditto_Move_To_Groups>
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle"></Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle"></Item>
+		<Item English_Text = "Stats" ID = "StatsTitle"></Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle"></Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle"></Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle"></Item>
+		<Item English_Text = "About" ID = "AboutTitle"></Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database"></Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao"></Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format"></Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed"></Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database"></Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available"></Item>
+		<Item English_Text = "Update Version" ID = "Update_Version"></Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update"></Item>			
+		<Item English_Text = "No updates available" ID = "No_Updates"></Item>			
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All"></Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard"></Item>
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard"></Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall"></Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target"></Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip"></Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing"></Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing"></Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good"></Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully"></Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc"></Item>
+		<Item English_Text = "New Clip" ID = "New_Clip"></Item>
+		<Item English_Text = "Save" ID = "Save"></Item>
+		<Item English_Text = "Save All" ID = "Save_All"></Item>
+		<Item English_Text = "Close Current Tab" ID = "Close"></Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable"></Item>
+		<Item English_Text = "to be editable" ID = "Editable"></Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges"></Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving"></Item>
+		<Item English_Text = "New" ID = "New"></Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close"></Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+				
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1"></Item>
+		<Item English_Text = "Cancel" ID = "2"></Item>
+		<Item English_Text = "Apply" ID = "12321"></Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773"></Item>
+		<Item English_Text = "Options" ID = "32771"></Item>
+		<Item English_Text = "Help" ID = "32843"></Item>
+		<Item English_Text = "Exit" ID = "32772"></Item>
+
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854"></Item>
+		<Item English_Text = "New Clip" ID = "32868"></Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 57 - 8
Debug/Language/French.xml → DittoSetup/U3/device/Language/French.xml

@@ -13,7 +13,7 @@
 		<Item English_Text = "4" ID = "32788">4</Item>
 		<Item English_Text = "5" ID = "32789">5</Item>
 		<Item English_Text = "Transparency" ID = "-1">Transparence</Item>
-		<Item English_Text = "None" ID = "32800">Vide</Item>
+		<Item English_Text = "None" ID = "32800">Aucun</Item>
 		<Item English_Text = "5 " ID = "32808">5</Item>
 		<Item English_Text = "10 " ID = "32792">10</Item>
 		<Item English_Text = "15 " ID = "32794">15</Item>
@@ -28,7 +28,7 @@
 		<Item English_Text = "First Ten Hot Keys" ID = "-1">Dix premiers raccourcis clavier</Item>
 		<Item English_Text = "Use Ctrl - Num" ID = "32777">Utiliser Ctrl-Num</Item>
 		<Item English_Text = "Show Hot Key Text" ID = "32778">Voir le libellé des raccourcis clavier</Item>
-		<Item English_Text = "View Caption Bar On" ID = "-1">Voir la barre de titre</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Affichage de la barre de titre</Item>
 		<Item English_Text = "Top" ID = "32783">Haut</Item>
 		<Item English_Text = "Right" ID = "32780">Droite</Item>
 		<Item English_Text = "Bottom" ID = "32781">Bas</Item>
@@ -52,8 +52,8 @@
 		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">S'assurer de l'entière visibilité de la fenêtre</Item>
 		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Montrer les copies des groupes de la liste principale</Item>
 		<Item English_Text = "Sent To" ID = "-1">Envoyer à  </Item>
-		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824"></Item>
-		<Item English_Text = "View Full Description	F3" ID = "32793">Voir la description complète F3</Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - même machine</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Voir la description complete F3</Item>
 		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Voir les groupes Ctrt-G</Item>
 		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Coller en texte Shift-Enter</Item>
 		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">Coller le HTML en texte</Item>
@@ -67,6 +67,15 @@
 		<Item English_Text = "Help" ID = "32842">Aide</Item>
 		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Déconnecter le presse-papier</Item>
 		<Item English_Text = "Exit Program" ID = "32806">Quitter Ditto</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852">Confirmer les suppressions</Item>	
+		<Item English_Text = "Import" ID = "32855">Importer</Item>
+		<Item English_Text = "Export" ID = "32853">Exporter</Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856">Effacer le collage rapide</Item>	
+		<Item English_Text = "Edit Clip" ID = "32860">Editer la capture</Item>
+		<Item English_Text = "New Clip" ID = "32867">Nouvelle capture</Item>	
+		
 	</Ditto_Right_Click_Menu>
 	<Ditto_Clip_Properties>
 		<Item English_Text = "Hot Key" ID = "2039">Raccourci</Item>
@@ -84,11 +93,11 @@
 	</Ditto_Clip_Properties>
 	<Ditto_Options_General>
 		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Lancer Ditto au démarrage</Item>
-		<Item English_Text = "Display Icon in System Tray" ID = "2003">Afficher l'icône dans la barre système</Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Afficher l'icône dans la barre systeme</Item>
 		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Nombre maxi de copies sauvegardées</Item>
 		<Item English_Text = "Paste Entries Expire after" ID = "2009">Les entrées de collage expirent après </Item>
 		<Item English_Text = "Days" ID = "2043">jours</Item>
-		<Item English_Text = "Compact and Repair" ID = "1028">Compacter et Réparer la base de données</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Compacter et Réparer la base</Item>
 		<Item English_Text = "Automatically check for updates online" ID = "1029">Vérification automatique des mises à jour en ligne</Item>
 		<Item English_Text = "Check Now" ID = "1030">Vérifier maintenant</Item>
 		<Item English_Text = "Allow Duplicates" ID = "1037">Autoriser les doublons</Item>
@@ -115,7 +124,7 @@
 	</Ditto_Options_Supported_Types>
 	<Ditto_Options_Shortcuts>
 		<Item English_Text = "Activate Ditto" ID = "2048">Activer Ditto</Item>
-		<Item English_Text = "Win" ID = "2035"></Item>
+		<Item English_Text = "Win" ID = "2035">Win</Item>
 		<Item English_Text = "Named Copy" ID = "2049">Copie nommée </Item>
 		<Item English_Text = "Win" ID = "2036">Win</Item>
 		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Raccourci global pour les 10 dernières entrées copiées</Item>
@@ -164,6 +173,10 @@
 		<Item English_Text = "List Item Prefix Legend" ID = "2064">Légende des préfixes dans la liste des éléments</Item>
 		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">.    *      = Pas de suppression automatique\n.  s   = Le raccourci existe\n G = L'élement est un groupe\n.        !      = L'élément est rattaché à un groupe</Item>
 		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Collage rapide</Item>
+		
+		//New strings added in 3.6 6-9-06
+<Item English_Text = "Prompt when deleting clips" ID = "2039">Confirmer les suppressions de copies</Item>
+				
 	</Ditto_Options_Quick_Paste>
 	<Ditto_Options_Friends>
 		<Item English_Text = "When you receive a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Quand vous recevez une copie, si l'adresse IP ou le nom de l'ordinateur est dans la liste, celle-ci sera mise dans le presse-papier.  Sinon, elle sera enregistrée pour utilisation ultérieure.</Item>
@@ -238,7 +251,38 @@
 		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Déconnecter le presse-papier</Item>
 		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Connecter le presse-papier</Item>
 		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Impossible d'initialiser le moteur de base DAO/Jet. DAO sera installé.\n\nRedémarrez Ditto après installation de DAO.</Item>
-		<Item English_Text = "NO TARGET" ID = "No_Target"></Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target">AUCUNE DESTINATION</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Confirmer les suppressions de copies</Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip">Effacer les copies sélectionnées?</Item>		
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing">Erreur lors de l'export de copie</Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing">Erreur d'analyse lors de l'export de copie</Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good">Copie placée dans le presse-papier</Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully">Import terminé avec succes</Item>
+		<Item English_Text = "clip" ID = "Clip">copie</Item>
+		<Item English_Text = "clips" ID = "Clips">copies</Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc">Mettre à jour la description de la copie lors de la sauvegarde?</Item>
+		<Item English_Text = "New Clip" ID = "New_Clip">Nouvelle copie</Item>
+		<Item English_Text = "Save" ID = "Save">Enregistrer</Item>
+		<Item English_Text = "Save All" ID = "Save_All">Enregistrer tout</Item>
+		<Item English_Text = "Close Current Tab" ID = "Close">Fermer l'onglet courant</Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable">L'élément courant n'est pas éditable. Une copie doit avoir un des types reconnus de copie</Item>
+		<Item English_Text = "to be editable" ID = "Editable">pour être éditable</Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges">Voulez-vous enregistrer les modifications de</Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving">Erreur à la sauvegarde de la copie</Item>
+		<Item English_Text = "New" ID = "New">Nouveau</Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close">Enregistrer, Fermer et placer dans le presse-papier</Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
 	</Ditto_String_Table>
 	<Ditto_Options_Sheet>
 		<Item English_Text = "OK" ID = "1">OK</Item>
@@ -250,5 +294,10 @@
 		<Item English_Text = "Options" ID = "32771">Options</Item>
 		<Item English_Text = "Help" ID = "32843">Aide</Item>
 		<Item English_Text = "Exit" ID = "32772">Quitter</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854">Importer</Item>
+		<Item English_Text = "New Clip" ID = "32868">Nouvelle copie</Item>
+		
 	</Ditto_Tray_Icon_Menu>
 </Ditto_Language_File>

+ 301 - 0
DittoSetup/U3/device/Language/German.xml

@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Ditto_Language_File Version = "1.1" Author = "Stephan Jaeger" Notes = "">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Gruppen</Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811">Neue Gruppe STRG-F7</Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812">Neue Gruppenauswahl F7</Item>
+		<Item English_Text = "Move to Group" ID = "32840">Zu Gruppe verschieben</Item>
+		<Item English_Text = "Quick Options" ID = "-1">Schnelleinstellungen</Item>
+		<Item English_Text = "Lines Per Row" ID = "-1">Zeilen pro Reihe</Item>
+		<Item English_Text = "1" ID = "32807">1</Item>
+		<Item English_Text = "2" ID = "32786">2</Item>
+		<Item English_Text = "3" ID = "32787">3</Item>
+		<Item English_Text = "4" ID = "32788">4</Item>
+		<Item English_Text = "5" ID = "32789">5</Item>
+		<Item English_Text = "Transparency" ID = "-1">Transparenz</Item>
+		<Item English_Text = "None" ID = "32800">Keine</Item>
+		<Item English_Text = "5 " ID = "32808">5</Item>
+		<Item English_Text = "10 " ID = "32792">10</Item>
+		<Item English_Text = "15 " ID = "32794">15</Item>
+		<Item English_Text = "20 " ID = "32796">20</Item>
+		<Item English_Text = "25 " ID = "32798">25</Item>
+		<Item English_Text = "30 " ID = "32799">30</Item>
+		<Item English_Text = "40 " ID = "32790">40</Item>
+		<Item English_Text = "Positioning" ID = "-1">Positionierung</Item>
+		<Item English_Text = "At Caret" ID = "32802">Am Caret</Item>
+		<Item English_Text = "At Cursor" ID = "32803">Am Cursor</Item>
+		<Item English_Text = "At Previous Position" ID = "32804">An der vorherigen Position</Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Ersten zehn Hotkeys</Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">STRG-Num verwenden</Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Hotkeytext anzeigen</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Beschriftungsleiste anzeigen</Item>
+		<Item English_Text = "Top" ID = "32783">Oben</Item>
+		<Item English_Text = "Right" ID = "32780">Rechts</Item>
+		<Item English_Text = "Bottom" ID = "32781">Unten</Item>
+		<Item English_Text = "Left" ID = "32782">Links</Item>
+		<Item English_Text = "Sort" ID = "-1">Sortieren</Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Aufsteigend (die neusten oben)</Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Absteigend (die neusten unten)</Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Doppelklick auf die Beschriftung</Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Immer im Vordergrund: ein/aus</Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815">Fenster hochrollen</Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">Beschreibung immer anzeigen: ein/aus</Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784">Immer im Vordergrund Strg-Leertaste</Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791">Immer hochrollen</Item>
+		<Item English_Text = "Always Show Description" ID = "32813">Beschriftung immer anzeigen</Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Nach neuen Gruppennamen fragen</Item>
+		<Item English_Text = "Select Font" ID = "32844">Zeichensatz wählen</Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845">Bildvorschau anzeigen</Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846">RTF Text einfügen</Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Ausschnitt nach Auswahl einfügen</Item>
+		<Item English_Text = "Find As You Type" ID = "32848">Suche während der Eingabe</Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Gesamtes Fenster immer sichtbar</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Ausschnitte immer anzeigen, die sich in Gruppen in der Hauptliste befinden</Item>
+		<Item English_Text = "Sent To" ID = "-1">Gesendet an</Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - selben computer</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Komplette Beschreibung anzeigen</Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Gruppen anzeigen   Strg-G</Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Nur Text einfügen Umschalt-Enter</Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">HTML als Text einfügen</Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801">Eintrag löschen  Del</Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776">Eigenschaften    Alt-Enter</Item>
+		<Item English_Text = "Quick Properties" ID = "-1">Schnelleinstellungen</Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820">Niemals sofort löschen</Item>
+		<Item English_Text = "Auto Delete" ID = "32821">Sofort löschen</Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822">Hotkey entfernen</Item>
+		<Item English_Text = "Options..." ID = "32805">Einstellungen...</Item>
+		<Item English_Text = "Help" ID = "32842">Hilfe</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Verbindung zur Zwischenablage beenden</Item>
+		<Item English_Text = "Exit Program" ID = "32806">Programm beenden</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852">Bei Ausschnittlöschung nachfragen</Item>	
+		<Item English_Text = "Import" ID = "32855">Importieren</Item>
+		<Item English_Text = "Export" ID = "32853">Exportieren</Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856">Schnelleinfügen entfernen</Item>	
+		<Item English_Text = "Edit Clip" ID = "32860">Ausschnitt bearbeiten</Item>
+		<Item English_Text = "New Clip" ID = "32867">Neuer Ausschnitt</Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039">Hot Key</Item>
+		<Item English_Text = "Hot Key" ID = "2039">Hot Key</Item>
+		<Item English_Text = "Date" ID = "2040">Datum</Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Niemals sofort löschen</Item>
+		<Item English_Text = "Parse" ID = "1040">Analysieren</Item>
+		<Item English_Text = "Move To Group" ID = "2041">Zu Gruppe verschieben</Item>
+		<Item English_Text = "Item Title" ID = "2042">Name der Sache</Item>
+		<Item English_Text = "Copy Formats" ID = "2029">Formate kopieren</Item>
+		<Item English_Text = "Delete" ID = "1021">Löschen</Item>
+		<Item English_Text = "OK" ID = "1">Ok</Item>
+		<Item English_Text = "Cancel" ID = "2">Abbrechen</Item>
+		<Item English_Text = "Copy Properties" ID = "-1">Eigenschaften kopieren</Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Ditto beim Systemstart starten</Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Symbol im Systemtray zeigen</Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Maximale Anzahl gespeicherter Kopien</Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Eingefügte Einträge löschen nach</Item>
+		<Item English_Text = "Days" ID = "2043">Tagen</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Komprimieren und reparieren</Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Automatisch auf Updates prüfen</Item>
+		<Item English_Text = "Check Now" ID = "1030">Auf Updates prüfen</Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037">Duplikate zulassen</Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Ausschnittzeit beim Einfügen aktualisieren</Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Mehrfache Einfügungen speichern</Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Angezeigtes Ditto minimieren nach Hotkeyverwendung</Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Abspeicherbarer Textumfang für Beschreibung</Item>
+		<Item English_Text = "On copy play the sound" ID = "2045">Geräusch beim Kopieren abspielen</Item>
+		<Item English_Text = "Play" ID = "2034">Abspielen</Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Ausschnitt nach der Auswahl im aktiven Fenster einfügen</Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Maximale Ausschnittgröße in Bytes</Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(Leer für unbeschränkt)</Item>
+		<Item English_Text = "Set Database Path" ID = "1034">Datenbankpfad setzen</Item>
+		<Item English_Text = "Language" ID = "2069">Sprache</Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Kopien ignorieren, die X Millisekunden (1000 ms = 1 Sek) nach der letzten Kopie auftreten</Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true">Allgemeines</Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Sicherstellen, dass Ditto die Zwischenablage überwacht</Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015">&Hinzufügen</Item>
+		<Item English_Text = "&Delete" ID = "1016">&Entfernen</Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Unterstützte Typen</Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048">Ditto aktivieren</Item>
+		<Item English_Text = "Win" ID = "2035">Win</Item>
+		<Item English_Text = "Named Copy" ID = "2049">benannte Kopie</Item>
+		<Item English_Text = "Win" ID = "2036">Win</Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Globale Hotkeys für die letzten zehn kopierten Ausschnitte</Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Einfügung senden (andernfalls wird nur der Inhalt in die Zwischenablage geladen)</Item>
+		<Item English_Text = "Position 1" ID = "2052">1</Item>
+		<Item English_Text = "Position 2" ID = "2053">2</Item>
+		<Item English_Text = "Position 3" ID = "2054">3</Item>
+		<Item English_Text = "Position 4" ID = "2055">4</Item>
+		<Item English_Text = "Position 5" ID = "2056">5</Item>
+		<Item English_Text = "Position 6" ID = "2057">6</Item>
+		<Item English_Text = "Position 7" ID = "2058">7</Item>
+		<Item English_Text = "Position 8" ID = "2059">8</Item>
+		<Item English_Text = "Position 9" ID = "2060">9</Item>
+		<Item English_Text = "Position 10" ID = "2061">10</Item>
+		<Item English_Text = "Win" ID = "2042">Win</Item>
+		<Item English_Text = "Win" ID = "2043">Win</Item>
+		<Item English_Text = "Win" ID = "2044">Win</Item>
+		<Item English_Text = "Win" ID = "2045">Win</Item>
+		<Item English_Text = "Win" ID = "2046">Win</Item>
+		<Item English_Text = "Win" ID = "2037">Win</Item>
+		<Item English_Text = "Win" ID = "2038">Win</Item>
+		<Item English_Text = "Win" ID = "2039">Win</Item>
+		<Item English_Text = "Win" ID = "2040">Win</Item>
+		<Item English_Text = "Win" ID = "2041">Win</Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Aktiviere das 'Win'-Kästchen, damit die Windowstaste auch als Hotkey verwendet werden kann.</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Tastaturkürzel</Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">Verlauf beginnt am Beginn der Liste (vs. Ende)</Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Strg - Num für die ersten zehn kopierten Einträge verwenden</Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Text für die ersten zehn Kopier-Hotkeys anzeigen</Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021">führende Leerzeichen anzeigen</Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062">Textzeilen pro Reihe</Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Transparenz für Schnelleinfügen aktivieren</Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Vorschau anzeigen (für CF_DIB Typen) (könnte PC langsamer machen)</Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">RTF Text in Liste malen (für RTF Typen) (könnte PC langsamer machen)</Item>
+		<Item English_Text = "Find As You Type" ID = "2036">Parallele Suche zur Eingabe</Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Fenster immer sichtbar</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Ausschnitte immer anzeigen, die sich in Gruppen in der Hauptliste befinden</Item>
+		<Item English_Text = "Font" ID = "1040">Zeichensatz</Item>
+		<Item English_Text = "Default Font" ID = "2031">Voreinstellung</Item>
+		<Item English_Text = "Popup Positioning" ID = "2063">Popupposition</Item>
+		<Item English_Text = "At Caret" ID = "2015">Am Caret</Item>
+		<Item English_Text = "At Cursor" ID = "2016">Am Cursor</Item>
+		<Item English_Text = "At Previous Position" ID = "2017">An der vorherigen Position</Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Posten Prefix Verlauf anzeigen</Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">  * = Nicht austomatisch löschen\n  s = Kürzel existiert bereits\n G = Posten ist in einer Gruppe\n  ! = Posten ist einer Gruppe zugeordnet</Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Schnelleinfügen</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Bei Ausschnittlöschung nachfragen</Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you receive a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Beim Empfang einer Kopie von einer IP oder einem Computername aus dieser Liste wird diese in die Zwischenablage eingefügt. Ansonsten wird sie für die spätere Nutzung bei den gespeicherten Ausschnitten abgelegt.</Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053">IP/Computernamen, durch Kommas getrennt</Item>
+		<Item English_Text = "Disable Receiving Clips" ID = "2026">Empfang von Ausschnitten deaktiveren</Item>
+		<Item English_Text = "Network Password" ID = "2054">Netzwerkpasswort</Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Zusätzliche Netzwerkpasswörter eingeben für den Empfang von Ausschnitten aus dem Netzwerk, die von PCs stammen, deren Netzwerkpasswort nicht übereinstimmt.</Item>
+		<Item English_Text = "Receive Passwords" ID = "2056">Passwörter empfangen</Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Bei Auswahl von Sende-Alle-Kopien werden alle Kopien von diesem zum anderen Computer geschickt. Andernfalls erscheinen Sie nur im Kontextmenu.</Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042">Sende-Empfangene-Befehle mitprotokollieren</Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true">Freunde</Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015">Alle Kopien an diesen Freund senden</Item>
+		<Item English_Text = "IP/Name" ID = "2052">IP/Name</Item>
+		<Item English_Text = "Description" ID = "2053">Beschreibung</Item>
+		<Item English_Text = "Friend Details" ID = "-1">Details über Freund</Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052">Odometer</Item>
+		<Item English_Text = "Trip Odometer" ID = "2053">Reise Odometer</Item>
+		<Item English_Text = "Copies" ID = "2054">Kopien</Item>
+		<Item English_Text = "Pastes" ID = "2055">Einfügungen</Item>
+		<Item English_Text = "Copies" ID = "2056">Kopien</Item>
+		<Item English_Text = "Pastes" ID = "2057">Einfügungen</Item>
+		<Item English_Text = "Reset" ID = "1006">Zurücksetzen</Item>
+		<Item English_Text = "Saved Copies" ID = "2058">Gespeicherte Kopien</Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059">Daten der gespeicherte Kopien</Item>
+		<Item English_Text = "Remove All" ID = "1013">Alle entfernen</Item>
+		<Item English_Text = "Last Started" ID = "2060">Letzter Programmstart</Item>
+		<Item English_Text = "Database Size" ID = "2061">Datenbankgröße</Item>
+		<Item English_Text = "Clips Sent" ID = "2066">Gesendete Ausschnitte</Item>
+		<Item English_Text = "Clips Received" ID = "2067">Empfangene Ausschnitte</Item>
+		<Item English_Text = "Since Last Start" ID = "2068">Seit dem letzten Start</Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true">Statistik</Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052">Haupttypen</Item>
+		<Item English_Text = "Custom Type" ID = "2053">Benutzerdefinierte Typen</Item>
+		<Item English_Text = "Add" ID = "1020">Hinzufügen</Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054">Derzeit in der Zwischenablage</Item>
+		<Item English_Text = "Add" ID = "1019">Hinzufügen</Item>
+		<Item English_Text = "Add" ID = "1021">Hinzufügen</Item>
+		<Item English_Text = "Cancel" ID = "2">Abbrechen</Item>
+		<Item English_Text = "Add Supported Type" ID = "-1">Zu unterstützten Typen hinzufügen</Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040">Neue Gruppe</Item>
+		<Item English_Text = "OK" ID = "1">Ok</Item>
+		<Item English_Text = "Cancel" ID = "2">Abbrechen</Item>
+		<Item English_Text = "Move to Group" ID = "-1">Zu Gruppe verschieben</Item>
+	</Ditto_Move_To_Groups>
+	
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle">Allgemein</Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Unterstützte Typen</Item>
+		<Item English_Text = "Stats" ID = "StatsTitle">Statistik</Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle">Freunde</Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Schnelleinfügen</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Tastaturkürzel</Item>
+		<Item English_Text = "About" ID = "AboutTitle">Über</Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Fehler beim Öffnen der Datenbank</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">Initialisierung der DAO/Jet Datenbank fehlgeschlagen\nKlicke Ja zum Herunterladen von DAO von http://ditto-cp.sourceforge.net/dao_setup.exe\n\nNach der Installation von DAO Ditto neustarten.</Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Unbekanntes Datenbankformat</Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">die Datei wird umbenannt</Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database">und eine neue Datenbank erstellt</Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available">Updates für Ditto verfügbar\nFür Details -> ditto-cp.sourceforge.net\n\nInstallierte Version</Item>
+		<Item English_Text = "Update Version" ID = "Update_Version">Updateversion</Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update">Neuste Version herunterladen?</Item>			
+		<Item English_Text = "No updates available" ID = "No_Updates">Keine Updates verfügbar</Item>			
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All">Alle Kopien werden gelöscht!\n\nFortsetzen?</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Verbindung zur Zwischenablage beenden</Item>			
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Zur Zwischenablage verbinden</Item>			
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">DAO/Jet db Engine konnte nicht initialisiert werden. DAO wird installiert\n\nBitte starten sie Ditto nach der Installation von DAO neu." ID = " Error_Init_Dao_Intall"</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Bei Ausschnittlöschung nachfragen</Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip">Ausgewählten Ausschnitt löschen</Item>		
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing">Fehler beim Importieren des exportierten Ausschnitts</Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing">Fehler beim Analysieren des exportierten Ausschnitts</Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good">Ausschnitt in der Zwischenablage gespeichert</Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully">Import erfolgreich</Item>
+		<Item English_Text = "clip" ID = "Clip">Ausschnitt</Item>
+		<Item English_Text = "clips" ID = "Clips">Ausschnitte</Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc">Ausschnittbeschreibung beim Abspeichern aktualisieren</Item>
+		<Item English_Text = "New Clip" ID = "New_Clip">Neuer Ausschnitt</Item>
+		<Item English_Text = "Save" ID = "Save">Speichern</Item>
+		<Item English_Text = "Save All" ID = "Save_All">Alle speichern</Item>
+		<Item English_Text = "Close Current Tab" ID = "Close">Aktuellen Reiter schließen</Item>
+		<Item English_Text = "NotEditable" ID = "Current Item is not editable.  A clip must have one of the clip types">Aktueller Ausschnitt ist nicht editierbar. Ein Ausschnitt muss aus einem der Ausschnitttypen bestehen</Item>
+		<Item English_Text = "Editable" ID = "to be editable">Bearbeitbar</Item>
+		<Item English_Text = "SaveChanges" ID = "Do you want to save changes to">Änderungen speichern</Item>
+		<Item English_Text = "ErrorSaving" ID = "Error saving clip">Fehler beim Speichern des Ausschnitts</Item>
+		<Item English_Text = "New" ID = "New">Neu</Item>
+		<Item English_Text = "Save_Close" ID = "Save, Close and place on clipboard">Speichern, schließen und in Zwischenablage ablegen</Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1">Ok</Item>
+		<Item English_Text = "Cancel" ID = "2">Abbrechen</Item>
+		<Item English_Text = "Apply" ID = "12321">Anwenden</Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773">Schnelleinfügen anzeigen</Item>
+		<Item English_Text = "Options" ID = "32771">Einstellungen</Item>
+		<Item English_Text = "Help" ID = "32843">Hilfe</Item>
+		<Item English_Text = "Exit" ID = "32772">Beenden</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854">Importieren</Item>
+		<Item English_Text = "New Clip" ID = "32868">Neuer Ausschnitt</Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 50 - 1
Debug/Language/Italian.xml → DittoSetup/U3/device/Language/Italiano.xml

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="Ascii"?>
 <Ditto_Language_File Version = "1" Author = "Salvatore Giarratana" Notes = "http://labx.altervista.org">
 	<Ditto_Right_Click_Menu>
 		<Item English_Text = "Groups" ID = "-1">Gruppo</Item>
@@ -67,6 +67,15 @@
 		<Item English_Text = "Help" ID = "32842">Help</Item>
 		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Disconetti dalla Clpiboard</Item>
 		<Item English_Text = "Exit Program" ID = "32806">Esci da Ditto</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852"></Item>	
+		<Item English_Text = "Import" ID = "32855"></Item>
+		<Item English_Text = "Export" ID = "32853"></Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856"></Item>	
+		<Item English_Text = "Edit Clip" ID = "32860"></Item>
+		<Item English_Text = "New Clip" ID = "32867"></Item>	
+		
 	</Ditto_Right_Click_Menu>
 	<Ditto_Clip_Properties>
 		<Item English_Text = "Hot Key" ID = "2039">Hot Key</Item>
@@ -164,6 +173,10 @@
 		<Item English_Text = "List Item Prefix Legend" ID = "2064">Lista dei Prefissi</Item>
 		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065"></Item>
 		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Incolla Veloce</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		
 	</Ditto_Options_Quick_Paste>	
 	<Ditto_Options_Friends>
 		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Se se tu ricevi una copia inviata da un IP o Computer che sono nella lista allora metti nella clipboard senno mettilo nelle Clip salvate per usarle in un secondo momento</Item>
@@ -239,6 +252,37 @@
 		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Connetti Alla Clipboard</Item>			
 		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Non è stato possibile inizializare il DAO/Jet db engine</Item>
 		<Item English_Text = "NO TARGET" ID = "No_Target">NO TARGET</Item>		
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip"></Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing"></Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing"></Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good"></Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully"></Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc"></Item>
+		<Item English_Text = "New Clip" ID = "New_Clip"></Item>
+		<Item English_Text = "Save" ID = "Save"></Item>
+		<Item English_Text = "Save All" ID = "Save_All"></Item>
+		<Item English_Text = "Close Current Tab" ID = "Close"></Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable"></Item>
+		<Item English_Text = "to be editable" ID = "Editable"></Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges"></Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving"></Item>
+		<Item English_Text = "New" ID = "New"></Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close"></Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
 	</Ditto_String_Table>
 	<Ditto_Options_Sheet>
 		<Item English_Text = "OK" ID = "1">OK</Item>
@@ -250,5 +294,10 @@
 		<Item English_Text = "Options" ID = "32771">Opzioni</Item>
 		<Item English_Text = "Help" ID = "32843">Help</Item>
 		<Item English_Text = "Exit" ID = "32772">Esci</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854"></Item>
+		<Item English_Text = "New Clip" ID = "32868"></Item>
+		
 	</Ditto_Tray_Icon_Menu>
 </Ditto_Language_File>

+ 303 - 0
DittoSetup/U3/device/Language/Polski.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "0.1" Author = "Radoslaw Szambelan" Notes = "Draft">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Grupy</Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811">Nowa Grupa	Ctrl-F7</Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812">Wybranie nowej grupy	F7</Item>
+		<Item English_Text = "Move to Group" ID = "32840">Przenies do grupy</Item>
+		<Item English_Text = "Quick Options" ID = "-1">Opcje</Item>
+		<Item English_Text = "Lines Per Row" ID = "-1">Ilosc linii w wierszu</Item>
+		<Item English_Text = "1" ID = "32807">1</Item>
+		<Item English_Text = "2" ID = "32786">2</Item>
+		<Item English_Text = "3" ID = "32787">3</Item>
+		<Item English_Text = "4" ID = "32788">4</Item>
+		<Item English_Text = "5" ID = "32789">5</Item>
+		<Item English_Text = "Transparency" ID = "-1">Przejrzystosc</Item>
+		<Item English_Text = "None" ID = "32800">Zaden</Item>
+		<Item English_Text = "5 " ID = "32808">5</Item>
+		<Item English_Text = "10 " ID = "32792">10</Item>
+		<Item English_Text = "15 " ID = "32794">15</Item>
+		<Item English_Text = "20 " ID = "32796">20</Item>
+		<Item English_Text = "25 " ID = "32798">25</Item>
+		<Item English_Text = "30 " ID = "32799">30</Item>
+		<Item English_Text = "40 " ID = "32790">40</Item>
+		<Item English_Text = "Positioning" ID = "-1">Pozycjonowanie</Item>
+		<Item English_Text = "At Caret" ID = "32802">Przy znaku karetki</Item>
+		<Item English_Text = "At Cursor" ID = "32803">Przy znaku kursora</Item>
+		<Item English_Text = "At Previous Position" ID = "32804">Na poprzedniej pozycji</Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Pierwsze 10 klawiszy skrotow</Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Uzyj Ctrl - numer</Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Pokaz opis klawiszy skrotow</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Pokaz pasek naglowka</Item>
+		<Item English_Text = "Top" ID = "32783">Gora</Item>
+		<Item English_Text = "Right" ID = "32780">Prawo</Item>
+		<Item English_Text = "Bottom" ID = "32781">Dol</Item>
+		<Item English_Text = "Left" ID = "32782">Lewo</Item>
+		<Item English_Text = "Sort" ID = "-1">Sortuj</Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Rosnaco (Ostatni na gorze)</Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Malejaco (Ostatni na dole)</Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Dwukrotne klikniecie na naglowek</Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Przelacza: Zawsze na wierzchu</Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815">Przewija okienko</Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">Przelacza: Pokaz zawsze opis</Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784">Zawsze na wierzchu	Ctrl-Space</Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791">Automatyczne przewijanie</Item>
+		<Item English_Text = "Always Show Description" ID = "32813">Zawsze pokazuj opis</Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Pytaj o nowe nazwy grup</Item>
+		<Item English_Text = "Select Font" ID = "32844">Wybierz czcionke</Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845">Pokaz miniatury</Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846">Pokazuj tekst RTF</Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Wklej klip po wybraniu </Item>
+		<Item English_Text = "Find As You Type" ID = "32848">Wyszukuj podczas pisania</Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Zapewnij widocznosc calego okienka</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Pokaz klipy bedace w grupach na liscie glownej</Item>
+		<Item English_Text = "Sent To" ID = "-1">Wyslij do</Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">192.168.1.101) - ten sam komputer</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Pokaz pelny opis	F3</Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Pokaz grupy	Ctrl-G</Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Wklej tylko tekst	Shift-Enter</Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">Wklej HTML jako tekst</Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801">Usun wpis	Del</Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776">Wlasciwosci</Item>
+		<Item English_Text = "Quick Properties" ID = "-1">Krotkie wlasciwosci</Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820">Nigdy nie usuwaj automatycznie</Item>
+		<Item English_Text = "Auto Delete" ID = "32821">Usuwanie automatyczne </Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822">Usun klawisz skrotu</Item>
+		<Item English_Text = "Options..." ID = "32805">Opcje...</Item>
+		<Item English_Text = "Help" ID = "32842">Pomoc</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Odlacz od schowka</Item>
+		<Item English_Text = "Exit Program" ID = "32806">Zakoncz program</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852"></Item>	
+		<Item English_Text = "Import" ID = "32855"></Item>
+		<Item English_Text = "Export" ID = "32853"></Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856"></Item>	
+		<Item English_Text = "Edit Clip" ID = "32860"></Item>
+		<Item English_Text = "New Clip" ID = "32867"></Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039">Klawisz skrotu</Item>
+		<Item English_Text = "Hot Key" ID = "2039">Klawisz skrotu</Item>
+		<Item English_Text = "Date" ID = "2040">Data</Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Nigdy nie usuwaj automatycznie</Item>
+		<Item English_Text = "Parse" ID = "1040">Parsuj</Item>
+		<Item English_Text = "Move To Group" ID = "2041">Przenies do grupy</Item>
+		<Item English_Text = "Item Title" ID = "2042">Tytul elementu</Item>
+		<Item English_Text = "Copy Formats" ID = "2029">Kopiuj formaty</Item>
+		<Item English_Text = "Delete" ID = "1021">Usun</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Anuluj</Item>
+		<Item English_Text = "Copy Properties" ID = "-1">Kopiuj wlasciwosci</Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Startuj Ditto przy starcie systemu</Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Pokaz ikone w Sytem Tray</Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Maksymalna ilosc skopiowanych elementow</Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Wklejone elementy staja sie niewazne po</Item>
+		<Item English_Text = "Days" ID = "2043">Dni</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Konsoliduj i naprawiaj</Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Sprawdz automatycznie dostepnosc nowych wersji online</Item>
+		<Item English_Text = "Check Now" ID = "1030">Sprawdz teraz</Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037">Pozwol na duplikaty</Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Aktualizuj czas klipu przy wklejeniu</Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Zachowuj multi-wklejenia</Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Ukryj Ditto klawiszem skrotu jezeli jest widoczny</Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Ilosc tektu do zachowania dla opisu</Item>
+		<Item English_Text = "On copy play the sound" ID = "2045">Odtwarzaj dzwiek przy kopiowaniu</Item>
+		<Item English_Text = "Play" ID = "2034">Odtwarzaj</Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Wklej klip do aktywnego okna po wybraniu</Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Maksymalna wielkosc klipu w bajtach</Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(Pozostaw puste jezeli bez limitu)</Item>
+		<Item English_Text = "Set Database Path" ID = "1034">Ustaw sciezke do bazy danych</Item>
+		<Item English_Text = "Language" ID = "2069">Jezyk</Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Ignoruj kopie ktore nastapily po X milisekundach od ostatniej kopii (1000 ms = 1 sec)</Item>
+		<Item English_Text = "About Language" ID = "2073">O jezyku</Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Zapewnij stale podlaczenie Ditto do schowka</Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true">Ogolne</Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015">$&Dodaj</Item>
+		<Item English_Text = "&Delete" ID = "1016">&Usun</Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Obslugiwane typy</Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048">Uaktywnij Ditto</Item>
+		<Item English_Text = "Win" ID = "2035">Win</Item>
+		<Item English_Text = "Named Copy" ID = "2049">Kopia z nazwa</Item>
+		<Item English_Text = "Win" ID = "2036">Win</Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Globalne skroty dla ostatnich dziesiecu skopiowanych elementow</Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Wyslij wklej (w innym wypadku po prostu zaladuj element to schowka)</Item>
+		<Item English_Text = "Position 1" ID = "2052">Pozycja 1</Item>
+		<Item English_Text = "Position 2" ID = "2053">Pozycja 2</Item>
+		<Item English_Text = "Position 3" ID = "2054">Pozycja 3</Item>
+		<Item English_Text = "Position 4" ID = "2055">Pozycja 4</Item>
+		<Item English_Text = "Position 5" ID = "2056">Pozycja 5</Item>
+		<Item English_Text = "Position 6" ID = "2057">Pozycja 6</Item>
+		<Item English_Text = "Position 7" ID = "2058">Pozycja 7</Item>
+		<Item English_Text = "Position 8" ID = "2059">Pozycja 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Pozycja 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Pozycja 10</Item>
+		<Item English_Text = "Win" ID = "2042">Win</Item>
+		<Item English_Text = "Win" ID = "2043">Win</Item>
+		<Item English_Text = "Win" ID = "2044">Win</Item>
+		<Item English_Text = "Win" ID = "2045">Win</Item>
+		<Item English_Text = "Win" ID = "2046">Win</Item>
+		<Item English_Text = "Win" ID = "2037">Win</Item>
+		<Item English_Text = "Win" ID = "2038">Win</Item>
+		<Item English_Text = "Win" ID = "2039">Win</Item>
+		<Item English_Text = "Win" ID = "2040">Win</Item>
+		<Item English_Text = "Win" ID = "2041">Win</Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Zaznacz 'Win' zeby dolaczyc klawisz windows do skrotu</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Skroty klawiaturowe</Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">Historia zaczyna sie na gorze listy</Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Uzyj Ctrl - Num zeby skorzytac z pierwszych dziesieciu skrotow kopiwania</Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Pokaz tekt dla pierwszych dziesieciu skrotow kopiwania</Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021">Pokazuj poczatkowe spacje</Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062">Ilosc linii tekstu w wierszu</Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Wlacz przejrzystosc szybkiego kopiowania</Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Pokaz miniatury (dla typu CF_DIB (moze zwiekszyc zuzycie pamieci i predkosc wyswetlania)</Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Pokazuj tekst RTF na liscie (for typu RTF) (moze zwiekszyc zuzycie pamieci i predkosc wyswetlania)</Item>
+		<Item English_Text = "Find As You Type" ID = "2036">Wyszukuj podczas pisania</Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Zapewnij widocznosc calego okna</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Pokazuj klipy bedace w grupach, na liscie glownej</Item>
+		<Item English_Text = "Font" ID = "1040">Czcionka</Item>
+		<Item English_Text = "Default Font" ID = "2031">Czcionka domyslna</Item>
+		<Item English_Text = "Popup Positioning" ID = "2063">Pozycjonowanie okienka wyskakujacego</Item>
+		<Item English_Text = "At Caret" ID = "2015">Przy karetce</Item>
+		<Item English_Text = "At Cursor" ID = "2016">Przy kursorze</Item>
+		<Item English_Text = "At Previous Position" ID = "2017">Na poprzedniej pozycji</Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Pokaz legende prefiksow elementow</Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">  * = Nie usuwaj automatycznie\n  s = Skrot istnieje\n G = Element to grupa\n  ! = Element nalezy do grupy</Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Szybkie wklejanie</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Jezeli otrzymujesz lub wysylasz kopie, jezeli jest na liscie ich IP, wtedy bedzie to umieszczone w schowku.  W przeciwnym wypadku bedzie umieszczone w zachowanych klipach do pozniejszego uzycia.</Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053">IP/Nazwy komputerow rozdzielone przecinkami</Item>
+		<Item English_Text = "Disable Recieving Clips" ID = "2026">Wylacz otrzymywanie klipow</Item>
+		<Item English_Text = "Network Password" ID = "2054">Haslo siecowe</Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Jezeli otrzymujsze klipy z komputerow gdzie nie pasuje twoje haslo sieciowe, wpisz dodatkowe hasla sieciowe oddzielone przecinkami</Item>
+		<Item English_Text = "Receive Passwords" ID = "2056">Otrzymuj hasla</Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Jezeli wyslij wszystkie kopie jest wybrane wtedy wszystkie kopie z tego komputera beda wyslane do innego komputera.  Jezeli to nie jest wybrane to wysylanie kopii do innego komputera bedzie tylko mozliwe przez menu pod prawym klawiszem myszki.</Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042">Rejestruj komendy wyslij/odbierz.</Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true">Przyjaciele</Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015">Wyslij wszystkie kopie do tego Przyjaciela</Item>
+		<Item English_Text = "IP/Name" ID = "2052">IP/Nazwa</Item>
+		<Item English_Text = "Description" ID = "2053">Opis</Item>
+		<Item English_Text = "Friend Details" ID = "-1">Detale przyjaciela</Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052">Odleglosciomierz</Item>
+		<Item English_Text = "Trip Odometer" ID = "2053">Odleglosciomierz dla wycieczki</Item>
+		<Item English_Text = "Copies" ID = "2054">Kopii</Item>
+		<Item English_Text = "Pastes" ID = "2055">Wklejen</Item>
+		<Item English_Text = "Copies" ID = "2056">Kopii</Item>
+		<Item English_Text = "Pastes" ID = "2057">Wklejen</Item>
+		<Item English_Text = "Reset" ID = "1006">Kasuj</Item>
+		<Item English_Text = "Saved Copies" ID = "2058">Zachowanych kopii</Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059">Zachowanych skopiowanych danych</Item>
+		<Item English_Text = "Remove All" ID = "1013">Usun wszystkie</Item>
+		<Item English_Text = "Last Started" ID = "2060">Ostatnio uruchmiony</Item>
+		<Item English_Text = "Database Size" ID = "2061">Wielkosc bazy danych</Item>
+		<Item English_Text = "Clips Sent" ID = "2066">Ilosc wyslanych klipow</Item>
+		<Item English_Text = "Clips received" ID = "2067">Ilosc odebranych klipow</Item>
+		<Item English_Text = "Since Last Start" ID = "2068">Od ostatniego startu</Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true">Statystyki</Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052">Glowne typy</Item>
+		<Item English_Text = "Custom Type" ID = "2053">Typy uzytkownika</Item>
+		<Item English_Text = "Add" ID = "1020">Dodaj</Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054">Obecnie w schowku</Item>
+		<Item English_Text = "Add" ID = "1019">Dodaj</Item>
+		<Item English_Text = "Add" ID = "1021">Dodaj</Item>
+		<Item English_Text = "Cancel" ID = "2">Usun</Item>
+		<Item English_Text = "Add Supported Type" ID = "-1">Dodaj obslugiwany typ</Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040">Nowa grupa</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Anuluj</Item>
+		<Item English_Text = "Move to Group" ID = "-1">Przenies do grupy</Item>
+	</Ditto_Move_To_Groups>
+	
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle">Ogolny</Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Obslugiwane typy</Item>
+		<Item English_Text = "Stats" ID = "StatsTitle">Statystyki</Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle">Przyjaciele</Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Szybkie wklejanie</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Skroty klawiaturowe</Item>
+		<Item English_Text = "About" ID = "AboutTitle">O programie</Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Blad otwarcia bazy danych</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">Nie mozna zainicjalizowac DAO/Jet db engine.\nWybierz Yes zeby sciagnac DAO z http://ditto-cp.sourceforge.net/dao_setup.exe\n\nZrestartuj Ditto po instalacji DAO.</Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Nierozpoznany format bazy danych</Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">nazwa pliku zostanie zmieniona</Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database">i nowa baza danych bedzie utworzona</Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available">Dostepne nowa wersja Ditto.\nOdwiedz ditto-cp.sourceforge.net zeby dowiedzec sie wiecej\n\nAktualna wersja</Item>
+		<Item English_Text = "Update Version" ID = "Update_Version">Nowa wersja</Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update">Sciagnac nowa wersje?</Item>			
+		<Item English_Text = "No updates available" ID = "No_Updates">Nie ma nowych wersji</Item>			
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All">Ta operacja usunie wszystkie skopiowane elementy!\n\nKontynuowac?</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Odlacz od schowka</Item>			
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Podlacz do schowka</Item>			
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Nie mozna zainicjalizowac DAO/Jet db engine.  DAO zostanie teraz zainstalowane.\n\nZrestartuj Ditto po instalacji DAO.</Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target"></Item>		
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip"></Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing"></Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing"></Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good"></Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully"></Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc"></Item>
+		<Item English_Text = "New Clip" ID = "New_Clip"></Item>
+		<Item English_Text = "Save" ID = "Save"></Item>
+		<Item English_Text = "Save All" ID = "Save_All"></Item>
+		<Item English_Text = "Close Current Tab" ID = "Close"></Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable"></Item>
+		<Item English_Text = "to be editable" ID = "Editable"></Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges"></Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving"></Item>
+		<Item English_Text = "New" ID = "New"></Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close"></Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Anuluj</Item>
+		<Item English_Text = "Apply" ID = "12321">Zastosuj</Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773">Pokaz szybkie wklejanie</Item>
+		<Item English_Text = "Options" ID = "32771">Opcje</Item>
+		<Item English_Text = "Help" ID = "32843">Pomoc</Item>
+		<Item English_Text = "Exit" ID = "32772">Wyjscie</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854"></Item>
+		<Item English_Text = "New Clip" ID = "32868"></Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 303 - 0
DittoSetup/U3/device/Language/Portuguese.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "1" Author = "Hélder Podence" Notes = "">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Grupos</Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811">Novo grupo	Ctrl-F7</Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812">Selecção dum novo grupo	F7</Item>
+		<Item English_Text = "Move to Group" ID = "32840">Deslocar para o grupo</Item>
+		<Item English_Text = "Quick Options" ID = "-1">Opções rápidas</Item>
+		<Item English_Text = "Lines Per Row" ID = "-1">Linha(s) para captura</Item>
+		<Item English_Text = "1" ID = "32807">1</Item>
+		<Item English_Text = "2" ID = "32786">2</Item>
+		<Item English_Text = "3" ID = "32787">3</Item>
+		<Item English_Text = "4" ID = "32788">4</Item>
+		<Item English_Text = "5" ID = "32789">5</Item>
+		<Item English_Text = "Transparency" ID = "-1">Transparência</Item>
+		<Item English_Text = "None" ID = "32800">Nenhuma</Item>
+		<Item English_Text = "5 " ID = "32808">5 %</Item>
+		<Item English_Text = "10 " ID = "32792">10 %</Item>
+		<Item English_Text = "15 " ID = "32794">15 %</Item>
+		<Item English_Text = "20 " ID = "32796">20 %</Item>
+		<Item English_Text = "25 " ID = "32798">25 %</Item>
+		<Item English_Text = "30 " ID = "32799">30 %</Item>
+		<Item English_Text = "40 " ID = "32790">40 %</Item>
+		<Item English_Text = "Positioning" ID = "-1">Posição da janela</Item>
+		<Item English_Text = "At Caret" ID = "32802">Com o cursor</Item>
+		<Item English_Text = "At Cursor" ID = "32803">Com a seta</Item>
+		<Item English_Text = "At Previous Position" ID = "32804">Posição anterior</Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Dez primeiros atalhos</Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Utilizar ctrl-Num</Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Mostrar o texto dum atalho de teclado</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Colocar a faixa</Item>
+		<Item English_Text = "Top" ID = "32783">Em Cima</Item>
+		<Item English_Text = "Right" ID = "32780">A Direita</Item>
+		<Item English_Text = "Bottom" ID = "32781">Em Baixo</Item>
+		<Item English_Text = "Left" ID = "32782">A Esquerda</Item>
+		<Item English_Text = "Sort" ID = "-1">Escolha</Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Ascendente (última cópia em baixo)</Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Descendente (última cópia em baixo)</Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Dúplo clique na faixa</Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Faixa sempre em cima</Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815">Subir a janela</Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">A faixa mostra a descrição</Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784">Faixa enrolada com Ctrl-space</Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791">Enrolamento automático</Item>
+		<Item English_Text = "Always Show Description" ID = "32813">Sempre mostrar a descrição</Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Mostrar os novos grupos</Item>
+		<Item English_Text = "Select Font" ID = "32844">Escolha a fonte</Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845">Mostrar a miniatura</Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846">Escreve no formato RTF</Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Cole o clip depois da selecção</Item>
+		<Item English_Text = "Find As You Type" ID = "32848">Cole como a cópia</Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Garantir que a janela está visível</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Mostra as cópias que estão nos grupos</Item>
+		<Item English_Text = "Sent To" ID = "-1">Enviar a...</Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - mesmo computador</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Ver a descrição integral</Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Ver os grupos</Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Cole somento o texto</Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">Cole html no formato texto</Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801">Apagar a entrada </Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776">Propriedades</Item>
+		<Item English_Text = "Quick Properties" ID = "-1">Escolha das propriedades</Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820">Sem apagamento automático</Item>
+		<Item English_Text = "Auto Delete" ID = "32821">Supressão automática</Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822">Tirar o atalho</Item>
+		<Item English_Text = "Options..." ID = "32805">Opções...</Item>
+		<Item English_Text = "Help" ID = "32842">Ajuda</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Desligar do clipboard</Item>
+		<Item English_Text = "Exit Program" ID = "32806">Saír do Ditto</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852"></Item>	
+		<Item English_Text = "Import" ID = "32855"></Item>
+		<Item English_Text = "Export" ID = "32853"></Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856"></Item>	
+		<Item English_Text = "Edit Clip" ID = "32860"></Item>
+		<Item English_Text = "New Clip" ID = "32867"></Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039">Atalho</Item>
+		<Item English_Text = "Hot Key" ID = "2039">Atalho</Item>
+		<Item English_Text = "Date" ID = "2040">Data</Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Nunca safar automaticamente</Item>
+		<Item English_Text = "Parse" ID = "1040">Verifica</Item>
+		<Item English_Text = "Move To Group" ID = "2041">Deslocar para o grupo</Item>
+		<Item English_Text = "Item Title" ID = "2042">Conteúdo</Item>
+		<Item English_Text = "Copy Formats" ID = "2029">Formato do texto</Item>
+		<Item English_Text = "Delete" ID = "1021">Apagar</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Copy Properties" ID = "-1">Propriedades da cópia</Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Lançar Ditto ao lançamento do sistema  </Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Mostrar Ditto no systray</Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Salveguardas maxímas</Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Apagar as cópias depois </Item>
+		<Item English_Text = "Days" ID = "2043">dias</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Compacta e repara</Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Actualização automática</Item>
+		<Item English_Text = "Check Now" ID = "1030">Verificar</Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037">Autoriza a duplicação</Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Actualizar a data durante a cópia</Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Salveguarda multi-colagens</Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Esconder Ditto com um atalho se o Ditto está visível</Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Quantia de descrições a salveguardar até  </Item>
+		<Item English_Text = "On copy play the sound" ID = "2045">Durante a cópia toca o som</Item>
+		<Item English_Text = "Play" ID = "2034">Teste</Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Cola na janela activa depois da selecção</Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Tamanho máximo da cópia em bytes</Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(Em branco se não houver limite)</Item>
+		<Item English_Text = "Set Database Path" ID = "1034">Caminho da base de dados </Item>
+		<Item English_Text = "Language" ID = "2069">Idioma</Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Não fazer cópia se menos de X milissegundos depois da anterior (1000 ms = 1 seg)</Item>
+		<Item English_Text = "About Language" ID = "2073">Tradução </Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Garantir-se que Ditto está bem ligado ao clipboard</Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true">Geral</Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015">&Acrescentar</Item>
+		<Item English_Text = "&Delete" ID = "1016">A&pagar</Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Formatos suportados </Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048">Mostrar Ditto</Item>
+		<Item English_Text = "Win" ID = "2035">Win</Item>
+		<Item English_Text = "Named Copy" ID = "2049">Nomear cópia</Item>
+		<Item English_Text = "Win" ID = "2036">Win</Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Atalhos para as dez últimas cópias</Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Escolher para activar os atalhos</Item>
+		<Item English_Text = "Position 1" ID = "2052">Posição 1</Item>
+		<Item English_Text = "Position 2" ID = "2053">Posição 2</Item>
+		<Item English_Text = "Position 3" ID = "2054">Posição 3</Item>
+		<Item English_Text = "Position 4" ID = "2055">Posição 4</Item>
+		<Item English_Text = "Position 5" ID = "2056">Posição 5</Item>
+		<Item English_Text = "Position 6" ID = "2057">Posição 6</Item>
+		<Item English_Text = "Position 7" ID = "2058">Posição 7</Item>
+		<Item English_Text = "Position 8" ID = "2059">Posição 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Posição 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Posição 10</Item>
+		<Item English_Text = "Win" ID = "2042">Win</Item>
+		<Item English_Text = "Win" ID = "2043">Win</Item>
+		<Item English_Text = "Win" ID = "2044">Win</Item>
+		<Item English_Text = "Win" ID = "2045">Win</Item>
+		<Item English_Text = "Win" ID = "2046">Win</Item>
+		<Item English_Text = "Win" ID = "2037">Win</Item>
+		<Item English_Text = "Win" ID = "2038">Win</Item>
+		<Item English_Text = "Win" ID = "2039">Win</Item>
+		<Item English_Text = "Win" ID = "2040">Win</Item>
+		<Item English_Text = "Win" ID = "2041">Win</Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Escolher 'win' para incluír os atalhos Windows aos seus atalhos</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Atalhos de teclado</Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">O histórico arranca em cima da lista</Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Utilize Ctrl-Num para os dez primeiros atalhos de cópia</Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Mostrar o texto para as dez primeiras cópias</Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021">Mostrar os espaços brancos</Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062">Linhas de texto por cópias</Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Activar a transparência</Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Mostrar as miniaturas (pode diminuír a velocidade)</Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Escrever na lista no formato RTF (para as cópias RTF) (pode diminuír a velocidade)</Item>
+		<Item English_Text = "Find As You Type" ID = "2036">Mostrar como o original</Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Garantir-se que a janela inteira está visível</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Mostrar na lista principal as cópias que estão nos grupos</Item>
+		<Item English_Text = "Font" ID = "1040">Fonte</Item>
+		<Item English_Text = "Default Font" ID = "2031">Fonte padrão </Item>
+		<Item English_Text = "Popup Positioning" ID = "2063">Posicionamento da janela</Item>
+		<Item English_Text = "At Caret" ID = "2015">Perto do cursor</Item>
+		<Item English_Text = "At Cursor" ID = "2016">Perto da seta</Item>
+		<Item English_Text = "At Previous Position" ID = "2017">Posição anterior</Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Convenção dos sinais por baixo da janela</Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">* = Sem supressão automática\n s = Atalho associado\n G = Este item é um grupo\n ! = Esta cópia faz parte dum grupo\n </Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Regularizações rápidas</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Quando recebe uma cópia deste computador, se o IP está na lista, a cópia será aceita. No caso oposto, ficara no PC de origem para ser utilizada mais tarde. Nomeia os IP separados por vírgulas. </Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053">IP de cada computador ligado  </Item>
+		<Item English_Text = "Disable Recieving Clips" ID = "2026">Desactivar a recepção das cópias</Item>
+		<Item English_Text = "Network Password" ID = "2054">Senha de rede</Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Se recebe cópias de PC dos quais a senha é diferente, entre novamente a senha em baixo, separandos-a por uma vírgula.</Item>
+		<Item English_Text = "Receive Passwords" ID = "2056">Senhas recebidas</Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Se 'enviar todas as cópias' estiver escolhido, então todas as cópias serão sistematicamente enviadas. No caso oposto, poderá enviar apenas cópia por cópia utilizando o menu do botão direito de Ditto.</Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042">Jornal (Log) dos envios e das recepções</Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true">Vizinhança </Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015">Enviar todas as cópias a...</Item>
+		<Item English_Text = "IP/Name" ID = "2052">IP/Nome</Item>
+		<Item English_Text = "Description" ID = "2053">Descrição</Item>
+		<Item English_Text = "Friend Details" ID = "-1">Pormenor do vizinho</Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052">Contador</Item>
+		<Item English_Text = "Trip Odometer" ID = "2053">Contador de sessões</Item>
+		<Item English_Text = "Copies" ID = "2054">Cópias</Item>
+		<Item English_Text = "Pastes" ID = "2055">Colagens</Item>
+		<Item English_Text = "Copies" ID = "2056">Cópias</Item>
+		<Item English_Text = "Pastes" ID = "2057">Colagens</Item>
+		<Item English_Text = "Reset" ID = "1006">Reiniciar</Item>
+		<Item English_Text = "Saved Copies" ID = "2058">Cópias salveguardadas</Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059">Ficheiros de cópias salveguardadas</Item>
+		<Item English_Text = "Remove All" ID = "1013">Apagar tudo</Item>
+		<Item English_Text = "Last Started" ID = "2060">Último arranque</Item>
+		<Item English_Text = "Database Size" ID = "2061">Tamanho da base</Item>
+		<Item English_Text = "Clips Sent" ID = "2066">Cópias enviadas</Item>
+		<Item English_Text = "Clips received" ID = "2067">Cópias recebidas</Item>
+		<Item English_Text = "Since Last Start" ID = "2068">desde o último arranque</Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true">Estatísticas</Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052">Formatos principais</Item>
+		<Item English_Text = "Custom Type" ID = "2053">Novos formatos</Item>
+		<Item English_Text = "Add" ID = "1020">Acrescentar</Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054">Actualmente no clipboard</Item>
+		<Item English_Text = "Add" ID = "1019">Acrescentar</Item>
+		<Item English_Text = "Add" ID = "1021">Acrescentar</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Add Supported Type" ID = "-1">Acrescentar formatos suportados </Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040">Novo grupo</Item>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Move to Group" ID = "-1">Deslocar para o grupo</Item>
+	</Ditto_Move_To_Groups>
+
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle">Geral</Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Formatos suportados </Item>
+		<Item English_Text = "Stats" ID = "StatsTitle">Estatísticas</Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle">Vizinhança </Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Escolhas rápidas</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Atalhos teclado</Item>
+		<Item English_Text = "About" ID = "AboutTitle">Acerca de</Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Erro a abertura da base</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">Incapaz de inicializar o motor de base de dados DAO/Jet.\nEscolher SIM para descargar DAO desde http://ditto-cp.sourceforge.net/dao_setup.exe\n\nArranque novamente Ditto depois da instalação de DAO.</Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Formato da base não reconhecido</Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">O ficheiro vai tornar a ser nomeado  </Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database">e uma nova base criada </Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available">Uma nova versão de Ditto está disponível em http://ditto-cp.sourceforge.net</Item>
+		<Item English_Text = "Update Version" ID = "Update_Version">Versão actualizada</Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update">Descargar a nova versão ?</Item>
+		<Item English_Text = "No updates available" ID = "No_Updates">Não há actualização</Item>
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All">Vai apagar as cópias! Continuar?</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Desligar do clipboard</Item>
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Ligar ao clipboard</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">Incapaz de inicializar o motor DAO/Jet. O DAO vaí ser instalado.\n\nArranque novamente o Ditto depois da instalação do DAO.</Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target">Sem alvo</Item>		
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039"></Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip"></Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing"></Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing"></Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good"></Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully"></Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc"></Item>
+		<Item English_Text = "New Clip" ID = "New_Clip"></Item>
+		<Item English_Text = "Save" ID = "Save"></Item>
+		<Item English_Text = "Save All" ID = "Save_All"></Item>
+		<Item English_Text = "Close Current Tab" ID = "Close"></Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable"></Item>
+		<Item English_Text = "to be editable" ID = "Editable"></Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges"></Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving"></Item>
+		<Item English_Text = "New" ID = "New"></Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close"></Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit"></Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Apply" ID = "12321">Aplicar</Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773">Mostrar a janela</Item>
+		<Item English_Text = "Options" ID = "32771">Opções</Item>
+		<Item English_Text = "Help" ID = "32843">Ajuda</Item>
+		<Item English_Text = "Exit" ID = "32772">Saír </Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854"></Item>
+		<Item English_Text = "New Clip" ID = "32868"></Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

+ 303 - 0
DittoSetup/U3/device/Language/Spanish.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="Ascii"?>
+<Ditto_Language_File Version = "1" Author = "Victor Gascon" Notes = "http://www.vgascon.com">
+	<Ditto_Right_Click_Menu>
+		<Item English_Text = "Groups" ID = "-1">Grupos</Item>
+		<Item English_Text = "New Group	Ctrl-F7" ID = "32811">Nuevo Grupo</Item>
+		<Item English_Text = "New Group Selection	F7" ID = "32812">Elejir Nuevo Grupo -- F7</Item>
+		<Item English_Text = "Move to Group" ID = "32840">Mover al Grupo</Item>
+		<Item English_Text = "Quick Options" ID = "-1">Opciones Rapidas</Item>
+		<Item English_Text = "Lines Per Row" ID = "-1">Lineas por Fila</Item>
+		<Item English_Text = "1" ID = "32807"></Item>
+		<Item English_Text = "2" ID = "32786"></Item>
+		<Item English_Text = "3" ID = "32787"></Item>
+		<Item English_Text = "4" ID = "32788"></Item>
+		<Item English_Text = "5" ID = "32789"></Item>
+		<Item English_Text = "Transparency" ID = "-1">Transparencia</Item>
+		<Item English_Text = "None" ID = "32800">Nada</Item>
+		<Item English_Text = "5 " ID = "32808"></Item>
+		<Item English_Text = "10 " ID = "32792"></Item>
+		<Item English_Text = "15 " ID = "32794"></Item>
+		<Item English_Text = "20 " ID = "32796"></Item>
+		<Item English_Text = "25 " ID = "32798"></Item>
+		<Item English_Text = "30 " ID = "32799"></Item>
+		<Item English_Text = "40 " ID = "32790"></Item>
+		<Item English_Text = "Positioning" ID = "-1">Posicion</Item>
+		<Item English_Text = "At Caret" ID = "32802">Al Caret</Item>
+		<Item English_Text = "At Cursor" ID = "32803">Al Cursor</Item>
+		<Item English_Text = "At Previous Position" ID = "32804">La Posicion Anterior</Item>
+		<Item English_Text = "First Ten Hot Keys" ID = "-1">Primeras Diez Teclas Rapidas</Item>
+		<Item English_Text = "Use Ctrl - Num" ID = "32777">Usar Ctrl - Num</Item>
+		<Item English_Text = "Show Hot Key Text" ID = "32778">Mostrar Texto de Teclas Rapidas</Item>
+		<Item English_Text = "View Caption Bar On" ID = "-1">Ver Barra de Capcion</Item>
+		<Item English_Text = "Top" ID = "32783">Arriba</Item>
+		<Item English_Text = "Right" ID = "32780">Derecha</Item>
+		<Item English_Text = "Bottom" ID = "32781">Abajo</Item>
+		<Item English_Text = "Left" ID = "32782">Izquierda</Item>
+		<Item English_Text = "Sort" ID = "-1">Ordenar</Item>
+		<Item English_Text = "Ascending (Latest on the Top)" ID = "32795">Ascendiendo</Item>
+		<Item English_Text = "Descending (Latest on the Bottom)" ID = "32797">Descendiendo</Item>
+		<Item English_Text = "Double Clicking on Caption" ID = "-1">Doble Click en la Capcion</Item>
+		<Item English_Text = "Toggles Always on Top" ID = "32814">Palancas Siempre Arriba</Item>
+		<Item English_Text = "Rolls-up Window" ID = "32815">Ventana Enredadora</Item>
+		<Item English_Text = "Toggles Always Show Description" ID = "32816">Palancas Siempre Muestran Descripcion</Item>
+		<Item English_Text = "Always on Top	Ctrl-Space" ID = "32784">Siempre Visible	Ctrl-Espacio</Item>
+		<Item English_Text = "Auto Roll-up" ID = "32791">Enredacion Automatica</Item>
+		<Item English_Text = "Always Show Description" ID = "32813">Siempre Mostrar Descripcion</Item>
+		<Item English_Text = "Prompt For New Group Names" ID = "32817">Preguntar el Nombre de Nuevos Grupos</Item>
+		<Item English_Text = "Select Font" ID = "32844">Elejir Fuente</Item>
+		<Item English_Text = "Show Thumbnails" ID = "32845">Mostrar Imajen</Item>
+		<Item English_Text = "Draw RTF Text" ID = "32846">Dibujar Texto RTF</Item>
+		<Item English_Text = "Paste Clip after selection" ID = "32847">Incluir Clip Despues de la Seleccion</Item>
+		<Item English_Text = "Find As You Type" ID = "32848">Encontrar al Teclear</Item>
+		<Item English_Text = "Ensure Entire Window Is Visible" ID = "32849">Asegurar Ventana Completa es Visible</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "32850">Mostrar Clips en los Grupos de la Lista Principal</Item>
+		<Item English_Text = "Sent To" ID = "-1">Mandar A</Item>
+		<Item English_Text = "(192.168.1.101) - same computer" ID = "32824">(192.168.1.101) - mismo computador</Item>
+		<Item English_Text = "View Full Description	F3" ID = "32793">Ver Descripcion Completa -- F3</Item>
+		<Item English_Text = "View Groups	Ctrl-G" ID = "32819">Ver Grupos -- Ctrl-G</Item>
+		<Item English_Text = "Paste Plain Text Only	Shift-Enter" ID = "32841">Anadir Solo Texto Simple -- Shift-Enter</Item>
+		<Item English_Text = "Paste HTML as Plain Text" ID = "32851">Anadir HTML como Texto Simple</Item>
+		<Item English_Text = "Delete Entry	Del" ID = "32801">Remover Entrada</Item>
+		<Item English_Text = "Properties	Alt-Enter" ID = "32776">Propiedades	Alt-Enter</Item>
+		<Item English_Text = "Quick Properties" ID = "-1">Propiedades Rapidas</Item>
+		<Item English_Text = "Never Auto Delete" ID = "32820">Nunca Remover Automaticamente</Item>
+		<Item English_Text = "Auto Delete" ID = "32821">Remover Automaticamente</Item>
+		<Item English_Text = "Remove Hot Key" ID = "32822">Remover Tecla Rapida</Item>
+		<Item English_Text = "Options..." ID = "32805">Opciones...</Item>
+		<Item English_Text = "Help" ID = "32842">Ayuda</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "32775">Desconecatar del Clipboard</Item>
+		<Item English_Text = "Exit Program" ID = "32806">Salir del Programa</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt to Delete Clip" ID = "32852">Confirmar Remover el Clip</Item>	
+		<Item English_Text = "Import" ID = "32855">Importar</Item>
+		<Item English_Text = "Export" ID = "32853">Exportar</Item>
+		<Item English_Text = "Remove Quick Paste" ID = "32856">Remover Agregado Rapido</Item>	
+		<Item English_Text = "Edit Clip" ID = "32860">Editar Clip</Item>
+		<Item English_Text = "New Clip" ID = "32867">Nuevo Clip</Item>	
+		
+	</Ditto_Right_Click_Menu>
+	<Ditto_Clip_Properties>
+		<Item English_Text = "Hot Key" ID = "2039">Tecla Rapida</Item>
+		<Item English_Text = "Hot Key" ID = "2039">Tecla Rapida</Item>
+		<Item English_Text = "Date" ID = "2040">Fecha</Item>
+		<Item English_Text = "&Never Auto Delete" ID = "1025">&Nunca Remover Automaticamente</Item>
+		<Item English_Text = "Move To Group" ID = "2041">Mover a Grupo</Item>
+		<Item English_Text = "Item Title" ID = "2042">Titulo</Item>
+		<Item English_Text = "Copy Formats" ID = "2029">Copiar Forma</Item>
+		<Item English_Text = "Delete" ID = "1021">Remover</Item>
+		
+		<Item English_Text = "OK" ID = "1">OK</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Copy Properties" ID = "-1">Copiar Propiedades</Item>
+	</Ditto_Clip_Properties>
+	<Ditto_Options_General>
+		<Item English_Text = "Start Ditto on System Startup" ID = "2004">Empezar Ditto con el Sistema</Item>
+		<Item English_Text = "Display Icon in System Tray" ID = "2003">Mostrar Icon en la Bandeja</Item>
+		<Item English_Text = "Maximum Number of Saved Copies" ID = "2008">Maximo Numero de Copias Salvadas</Item>
+		<Item English_Text = "Paste Entries Expire after" ID = "2009">Entradas Expiran despues de</Item>
+		<Item English_Text = "Days" ID = "2043">Dias</Item>
+		<Item English_Text = "Compact and Repair" ID = "1028">Compactar y Reparar</Item>
+		<Item English_Text = "Automatically check for updates online" ID = "1029">Automaticament Detectar Actualizaciones</Item>
+		<Item English_Text = "Check Now" ID = "1030">Dectar Ahora</Item>
+		<Item English_Text = "Allow Duplicates" ID = "1037">Permitir Duplicados</Item>
+		<Item English_Text = "Update Clip Time On Paste" ID = "1038">Actualizar Hora Cada Introduccion</Item>
+		<Item English_Text = "Save Multi-Pastes" ID = "1039">Salvar Introducciones Multiples</Item>
+		<Item English_Text = "Hide Ditto on Hot Key if Ditto is Visible" ID = "1040">Esconder Ditto con Teclas Rapidas si esta Visible</Item>
+		<Item English_Text = "Amount of text to save for description" ID = "2044">Cantidad de texto salvado para la descripcion</Item>
+		<Item English_Text = "On copy play the sound" ID = "2045">Al copiar usar sonido</Item>
+		<Item English_Text = "Play" ID = "2034">Sonar</Item>
+		<Item English_Text = "Paste Clip in active window after selection" ID = "1041">Anadir Clip en Ventana Activa tras la seleccion</Item>
+		<Item English_Text = "Maximum Clip Size in Bytes" ID = "2046">Maximo Dimension del Clip en Bytes</Item>
+		<Item English_Text = "(Leave blank for no limit)" ID = "2047">(En blanco para no limite)</Item>
+		<Item English_Text = "Set Database Path" ID = "1034">Entrar Database Path</Item>
+		<Item English_Text = "Language" ID = "2069">Idioma</Item>
+		<Item English_Text = "Ignore copies that occur X milliseconds from the last copy (1000 ms = 1 sec)" ID = "2072">Ignorar copias que ocurren X milisegundos de la ultima copia (1000 ms = 1 segundo)</Item>
+		<Item English_Text = "About Language" ID = "2073">Del Idioma</Item>
+		<Item English_Text = "Ensure Ditto is always connected to the clipboard" ID = "1042">Aseguar que Ditto siempre esta conectado al clipboard</Item>
+		<Item English_Text = "General" ID = "-1" PropertyPage = "true"></Item>
+	</Ditto_Options_General>
+	<Ditto_Options_Supported_Types>
+		<Item English_Text = "&Add" ID = "1015">&Anadir</Item>
+		<Item English_Text = "&Delete" ID = "1016">&Remover</Item>
+		<Item English_Text = "Supported Types" ID = "-1" PropertyPage = "true">Tipos Soportados</Item>
+	</Ditto_Options_Supported_Types>
+	<Ditto_Options_Shortcuts>
+		<Item English_Text = "Activate Ditto" ID = "2048">Activar Ditto</Item>
+		<Item English_Text = "Win" ID = "2035"></Item>
+		<Item English_Text = "Named Copy" ID = "2049">Copia Nombrada</Item>
+		<Item English_Text = "Win" ID = "2036"></Item>
+		<Item English_Text = "Global Hot Keys for Last Ten Items Copied" ID = "2051">Teclas Rapidas de las diez ultimas copias</Item>
+		<Item English_Text = "Send Paste (Otherwise it will just load the item on the clipboard)" ID = "1042">Mandar Copia (O se mandara al clipboard)</Item>
+		<Item English_Text = "Position 1" ID = "2052">Posicion 1</Item>
+		<Item English_Text = "Position 2" ID = "2053">Posicion 2</Item>
+		<Item English_Text = "Position 3" ID = "2054">Posicion 3</Item>
+		<Item English_Text = "Position 4" ID = "2055">Posicion 4</Item>
+		<Item English_Text = "Position 5" ID = "2056">Posicion 5</Item>
+		<Item English_Text = "Position 6" ID = "2057">Posicion 6</Item>
+		<Item English_Text = "Position 7" ID = "2058">Posicion 7</Item>
+		<Item English_Text = "Position 8" ID = "2059">Posicion 8</Item>
+		<Item English_Text = "Position 9" ID = "2060">Posicion 9</Item>
+		<Item English_Text = "Position 10" ID = "2061">Posicion 10</Item>
+		<Item English_Text = "Win" ID = "2042"></Item>
+		<Item English_Text = "Win" ID = "2043"></Item>
+		<Item English_Text = "Win" ID = "2044"></Item>
+		<Item English_Text = "Win" ID = "2045"></Item>
+		<Item English_Text = "Win" ID = "2046"></Item>
+		<Item English_Text = "Win" ID = "2037"></Item>
+		<Item English_Text = "Win" ID = "2038"></Item>
+		<Item English_Text = "Win" ID = "2039"></Item>
+		<Item English_Text = "Win" ID = "2040"></Item>
+		<Item English_Text = "Win" ID = "2041"></Item>
+		<Item English_Text = "Check the 'Win' Button to include the windows keyboard key in your hot key." ID = "2050">Seleccionar el boton 'Win' para incluir la tecla Win en la tecla rapida.</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "-1" PropertyPage = "true">Atajo de Tecleado</Item>
+	</Ditto_Options_Shortcuts>
+	<Ditto_Options_Quick_Paste>
+		<Item English_Text = "History Starts at the Top of the list (vs. Bottom)" ID = "1042">Historia Empieza al Tope de la lista (vs. al Fondo)</Item>
+		<Item English_Text = "Use Ctrl - Num for first ten copy hot keys" ID = "1033">Usar Ctrl - Num para las primeras diez teclas rapidas</Item>
+		<Item English_Text = "Show text for first ten copy hot keys" ID = "1034">Mostrar texto de las primeras diez teclas rapidas</Item>
+		<Item English_Text = "Show leading whitespace" ID = "2021">Mostrar espacio al principio</Item>
+		<Item English_Text = "Text Lines per Row" ID = "2062">Lineas de texto por Fila</Item>
+		<Item English_Text = "Enable Quick Paste Transparency" ID = "2006">Permitir Transparencia en Copia Rapida</Item>
+		<Item English_Text = "Show thumbnails (for CF_DIB types) (Could Increase Memory Usage and Display Speed)" ID = "2022">Mostrar Imajenes (para tipos RTF)  (Puede Incrementar Uso de Memoria y Velocidad de Exhibicion)</Item>
+		<Item English_Text = "Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)" ID = "2023">Dibujar Texto RTF en la Lista (para tipos RTF)  (Puede Incrementar Uso de Memoria y Velocidad de Exhibicion)</Item>
+		<Item English_Text = "Find As You Type" ID = "2036">Encontrar al Teclear</Item>
+		<Item English_Text = "Ensure Entire Window is Visible" ID = "2037">Asegurar Ventana Completa es Visible</Item>
+		<Item English_Text = "Show Clips That are in Groups in Main List" ID = "2038">Mostrar Clips en los Grupos de la Lista Principal</Item>
+		<Item English_Text = "Font" ID = "1040">Fuente</Item>
+		<Item English_Text = "Default Font" ID = "2031">Fuente Normal</Item>
+		<Item English_Text = "Popup Positioning" ID = "2063">Posicion del Popup</Item>
+		<Item English_Text = "At Caret" ID = "2015">Al Caret</Item>
+		<Item English_Text = "At Cursor" ID = "2016">Al Cursos</Item>
+		<Item English_Text = "At Previous Position" ID = "2017">A la Posicion Anterior</Item>
+		<Item English_Text = "List Item Prefix Legend" ID = "2064">Listar Leyenda Prefijo del Articulo</Item>
+		<Item English_Text = "  * = Don't Auto Delete\n  s = Shortcut exists\n G = Item is a Group\n  ! = Item is attached to a Group" ID = "2065">* = No Remover Automaticamente\n  s = Ataj existe\n G = Articulo en Grupo\n  ! = Articulo Anadido a un Grupo</Item>
+		<Item English_Text = "Quick Paste" ID = "-1" PropertyPage = "true">Anadir Rapidamente</Item>
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Avisar al remover clips</Item>
+		
+	</Ditto_Options_Quick_Paste>	
+	<Ditto_Options_Friends>
+		<Item English_Text = "When you recieve a sent copy if their ip or computer name is in this list then it will be put on the clipboard.  Otherwise it will be in the saved clips to use at a later time." ID = "2052">Cuando reciba una copia, si el IP o nomber de computador esta en esta lista, se pondra en el clipboard. De otra forma se pondra en los clips salvados para usarse mas tarde.</Item>
+		<Item English_Text = "IP/Computer Names seperated by commas" ID = "2053">IP/Computadores separados por comas</Item>
+		<Item English_Text = "Disable Recieving Clips" ID = "2026">No Recibir Clips</Item>
+		<Item English_Text = "Network Password" ID = "2054">Contrasena de la Red</Item>
+		<Item English_Text = "If you are receiving clips from computers where your network password does not match, enter additional network passwords separated by commas" ID = "2055">Contrasenas adicionales, separadas con comas, si recibe clips de computadores donde su contrasena no corresponde.</Item>
+		<Item English_Text = "Receive Passwords" ID = "2056">Recibir Contrasuenas</Item>
+		<Item English_Text = "If Send All Copies is selected then all copies from this computer will be sent to the other computer.  If that is not selected then it will just be in the right click menu to send a copy to that computer." ID = "2057">Si se elije 'Mandar Todas Copias' todas las copias de este computador se enviaran a la otra maquina. Si no solo estara en el click derecho el mandar una copia a el computador.</Item>
+		<Item English_Text = "Log Send Receive Commands" ID = "1042">Registrar Comandos de Envios y Llegadas</Item>
+		<Item English_Text = "Friends" ID = "-1" PropertyPage = "true">Amigos</Item>
+	</Ditto_Options_Friends>
+	<Ditto_Options_Friends_Detail>
+		<Item English_Text = "Send All Copies to this friend" ID = "1015">Mandar Todas Copias a este amigo</Item>
+		<Item English_Text = "IP/Name" ID = "2052">IP/Nombre</Item>
+		<Item English_Text = "Description" ID = "2053">Descripcion</Item>
+		<Item English_Text = "Friend Details" ID = "-1">Detallos</Item>
+	</Ditto_Options_Friends_Detail>
+	<Ditto_Options_Stats>
+		<Item English_Text = "Odometer" ID = "2052">Odometro</Item>
+		<Item English_Text = "Trip Odometer" ID = "2053">Odometro de Viaje</Item>
+		<Item English_Text = "Copies" ID = "2054">Copias</Item>
+		<Item English_Text = "Pastes" ID = "2055">Introducciones</Item>
+		<Item English_Text = "Copies" ID = "2056">Copias</Item>
+		<Item English_Text = "Pastes" ID = "2057">Introducciones</Item>
+		<Item English_Text = "Reset" ID = "1006">Reajustar</Item>
+		<Item English_Text = "Saved Copies" ID = "2058">Copias Salvadas</Item>
+		<Item English_Text = "Saved Copy Data" ID = "2059">Informacion de Copias Salvadas</Item>
+		<Item English_Text = "Remove All" ID = "1013">Remover Todas</Item>
+		<Item English_Text = "Last Started" ID = "2060">Ultimo Empiezo</Item>
+		<Item English_Text = "Database Size" ID = "2061">Tamano de Base de Datos</Item>
+		<Item English_Text = "Clips Sent" ID = "2066">Clips Mandados</Item>
+		<Item English_Text = "Clips received" ID = "2067">Clips Recibidos</Item>
+		<Item English_Text = "Since Last Start" ID = "2068">Desde Ultimo Empiezo</Item>
+		<Item English_Text = "Stats" ID = "-1" PropertyPage = "true">Stadisticas</Item>
+	</Ditto_Options_Stats>
+	<Ditto_Options_Supported_Types_Add>
+		<Item English_Text = "Main Types" ID = "2052">Tipos Principales</Item>
+		<Item English_Text = "Custom Type" ID = "2053">Tipos Especiales</Item>
+		<Item English_Text = "Add" ID = "1020">Anadir</Item>
+		<Item English_Text = "Currently on the Clipboard" ID = "2054">En el Clipboard Ahora</Item>
+		<Item English_Text = "Add" ID = "1019">Anadir</Item>
+		<Item English_Text = "Add" ID = "1021">Anadir</Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Add Supported Type" ID = "-1">Anadir Tipo Soportado</Item>
+	</Ditto_Options_Supported_Types_Add>
+	<Ditto_Move_To_Groups>
+		<Item English_Text = "New Group" ID = "1040">Nuevo Grupo</Item>
+		<Item English_Text = "OK" ID = "1"></Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Move to Group" ID = "-1">Mover a Grupo</Item>
+	</Ditto_Move_To_Groups>
+	
+	<Ditto_String_Table>
+		<Item English_Text = "General" ID = "GeneralTitle"></Item>
+		<Item English_Text = "Supported Types" ID = "SupportedTypesTitle">Tipos Soportados</Item>
+		<Item English_Text = "Stats" ID = "StatsTitle">Statisticas</Item>
+		<Item English_Text = "Friends" ID = "FriendsTitle">Amigos</Item>
+		<Item English_Text = "Quick Paste" ID = "QuickPasteTitle">Adicion Rapida</Item>
+		<Item English_Text = "Keyboard Shortcuts" ID = "KeyboardShortcutsTitle">Atayos de Teclado</Item>
+		<Item English_Text = "About" ID = "AboutTitle">Acerca</Item>
+		<Item English_Text = "Error Opening Database." ID = "Error_Opening_Database">Error al Abrir la Base</Item>
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.\nSelect YES to download DAO from http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao">No se puede inicializar la maquina de DAO/Jet.\nElija SI para recibir desde http://ditto-cp.sourceforge.net/dao_setup.exe\n\nRe-empieze Ditto tras la instalacion de DAO.</Item>
+		<Item English_Text = "Unrecognized Database Format" ID = "Database_Format">Formato de Datos Irreconocible</Item>
+		<Item English_Text = "the file will be renamed" ID = "File_Renamed">el archivo se nombrara</Item>
+		<Item English_Text = "and a new database will be created" ID = "New_Database">y una nueva base se creara</Item>
+		<Item English_Text = "Updates available for Ditto.\nVisit ditto-cp.sourceforge.net for details\n\nRunning Version" ID = "Updates_Available">Hay una nueva version de Ditto.\nVisite ditto-cp.sourceforge.net para mas informacion\n\nVersion Actual</Item>
+		<Item English_Text = "Update Version" ID = "Update_Version">Actualizar la Version</Item>
+		<Item English_Text = "Download updated version?" ID = "Download_Update">Baje version actual?</Item>			
+		<Item English_Text = "No updates available" ID = "No_Updates">No hay novedades</Item>			
+		<Item English_Text = "This will remove all Copy Entries!\n\nContinue?" ID = "Remove_All">Esto removera todas las Entradas!\n\nContinuar?</Item>
+		<Item English_Text = "Disconnect from Clipboard" ID = "Disconnect_Clipboard">Desconectar del Clipboard</Item>			
+		<Item English_Text = "Connect to Clipboard" ID = "Connect_Clipboard">Conectar al Clipboard</Item>			
+		<Item English_Text = "Unable to initialize DAO/Jet db engine.  DAO will now be installed.\n\nRestart Ditto after installation of DAO." ID = "Error_Init_Dao_Intall">No se puede inicializar la maquina de DAO/Jet. El DAO se instalara.\n\nRe-empieze Ditto tras la instalacion de DAO.</Item>
+		<Item English_Text = "NO TARGET" ID = "No_Target">SIN BLANCO</Item>	
+		
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Prompt when deleting clips" ID = "2039">Avisar cuando remova clips</Item>
+		<Item English_Text = "Delete Selected Clips?" ID = "Delete_Clip">Remover Clips Seleccionados?</Item>
+		<Item English_Text = "Error importing exported clip" ID = "Error_Importing">Error al importar clip exportado</Item>
+		<Item English_Text = "Error parsing exported clip" ID = "Error_Parsing">Error pasando clip exportado</Item>
+		<Item English_Text = "Clip placed on clipboard" ID = "Importing_Good">Clip puesto en el clipboard</Item>
+		<Item English_Text = "Successfully imported" ID = "Import_Successfully">Importado</Item>
+		<Item English_Text = "clip" ID = "Clip"></Item>
+		<Item English_Text = "clips" ID = "Clips"></Item>
+		<Item English_Text = "Update clip description on save?" ID = "Update_Desc">Actualizar descripcion del clip al salvar?</Item>
+		<Item English_Text = "New Clip" ID = "New_Clip">Nuevo Clip</Item>
+		<Item English_Text = "Save" ID = "Save">Salvar Clip</Item>
+		<Item English_Text = "Save All" ID = "Save_All">Salvar Todos</Item>
+		<Item English_Text = "Close Current Tab" ID = "Close">Cerrar Esta Tab</Item>
+		<Item English_Text = "Current Item is not editable.  A clip must have one of the clip types" ID = "NotEditable">Este articulo no es editable. El clip necesita un tipo de clip</Item>
+		<Item English_Text = "to be editable" ID = "Editable">para ser editable</Item>
+		<Item English_Text = "Do you want to save changes to" ID = "SaveChanges">Quiere salvar los cambios a</Item>
+		<Item English_Text = "Error saving clip" ID = "ErrorSaving">Error al salvar el clip</Item>
+		<Item English_Text = "New" ID = "New">Nuevo</Item>
+		<Item English_Text = "Save, Close and place on clipboard" ID = "Save_Close">Salvar, Cerrar y poner en el clipboard</Item>
+		<Item English_Text = "Ditto Edit" ID = "Ditto_Edit">Editor Ditto</Item>
+		<Item English_Text = "Ditto - Named Paste" ID = "Named_Paste_Title"></Item>
+		<Item English_Text = "Error loading data" ID = "Named_Paste_Error1"></Item>
+		<Item English_Text = "Error finding clip with QuickPaste Text of" ID = "Named_Paste_Error2"></Item>
+		<Item English_Text = "Exception finding the clip" ID = "Named_Paste_Error3"></Item>
+		<Item English_Text = "Ditto - Named Copy" ID = "Named_Copy_Title"></Item>
+		<Item English_Text = "Error saving Named Copy to Database" ID = "Named_Copy_Error1"></Item>
+		<Item English_Text = "Exception saving Named Copy" ID = "Named_Copy_Error2"></Item>
+		<Item English_Text = "Ditto did not receive a copy" ID = "Named_Copy_Error3"></Item> 
+		
+	</Ditto_String_Table>
+	<Ditto_Options_Sheet>
+		<Item English_Text = "OK" ID = "1"></Item>
+		<Item English_Text = "Cancel" ID = "2">Cancelar</Item>
+		<Item English_Text = "Apply" ID = "12321">Usar</Item>
+	</Ditto_Options_Sheet>
+	<Ditto_Tray_Icon_Menu>
+		<Item English_Text = "Show Quick Paste" ID = "32773">Ensenar Anado Rapido</Item>
+		<Item English_Text = "Options" ID = "32771">Opciones</Item>
+		<Item English_Text = "Help" ID = "32843">Ayuda</Item>
+		<Item English_Text = "Exit" ID = "32772">Salir</Item>
+
+		//New strings added in 3.6 6-9-06
+		<Item English_Text = "Import" ID = "32854">Importe</Item>
+		<Item English_Text = "New Clip" ID = "32868">Nuevo Clip</Item>
+		
+	</Ditto_Tray_Icon_Menu>
+</Ditto_Language_File>

BIN
DittoSetup/U3/device/MFC71.dll


BIN
DittoSetup/U3/device/focus.dll


BIN
DittoSetup/U3/device/mfc71u.dll


BIN
DittoSetup/U3/device/msvcp71.dll


Some files were not shown because too many files changed in this diff