AdvGeneral.cpp 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849
  1. // AdvGeneral.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "CP_Main.h"
  5. #include "AdvGeneral.h"
  6. #include "afxdialogex.h"
  7. #include "ScriptEditor.h"
  8. #include "DimWnd.h"
  9. // CAdvGeneral dialog
  10. IMPLEMENT_DYNAMIC(CAdvGeneral, CDialogEx)
  11. CAdvGeneral::CAdvGeneral(CWnd* pParent /*=NULL*/)
  12. : CDialogEx(CAdvGeneral::IDD, pParent)
  13. {
  14. }
  15. CAdvGeneral::~CAdvGeneral()
  16. {
  17. }
  18. void CAdvGeneral::DoDataExchange(CDataExchange* pDX)
  19. {
  20. CDialogEx::DoDataExchange(pDX);
  21. DDX_Control(pDX, IDC_MFCPROPERTYGRID1, m_propertyGrid);
  22. }
  23. BEGIN_MESSAGE_MAP(CAdvGeneral, CDialogEx)
  24. ON_BN_CLICKED(IDOK, &CAdvGeneral::OnBnClickedOk)
  25. ON_WM_SIZE()
  26. ON_BN_CLICKED(IDC_BT_COMPACT_AND_REPAIR, &CAdvGeneral::OnBnClickedBtCompactAndRepair)
  27. ON_BN_CLICKED(IDC_BUTTON_COPY_SCRIPTS, &CAdvGeneral::OnBnClickedButtonCopyScripts)
  28. ON_BN_CLICKED(IDC_BUTTON_PASTE_SCRIPTS, &CAdvGeneral::OnBnClickedButtonPasteScripts2)
  29. ON_WM_GETMINMAXINFO()
  30. ON_WM_NCLBUTTONDOWN()
  31. END_MESSAGE_MAP()
  32. // CAdvGeneral message handlers
  33. #define SETTING_DESC_SIZE 1
  34. #define SETTING_SHOW_TASKBAR_ICON 2
  35. #define SETTING_SAVE_MULTI_PASTE 3
  36. #define SETTING_HIDE_ON_HOTKEY_IF_VISIBLE 4
  37. #define SETTING_PASTE_IN_ACTIVE_WINDOW 5
  38. #define SETTING_MAX_CLIP_SIZE 6
  39. #define SETTING_CLIP_SEPARATOR 7
  40. #define SETTING_ENSURE_CONNECTED 8
  41. #define SETTING_COPY_PLAY_SOUND 9
  42. #define SETTING_TEXT_FIRST_TEN 10
  43. #define SETTING_SHOW_LEADING_WHITESPACE 11
  44. #define SETTING_LINES_PER_ROW 12
  45. #define SETTING_ENABLE_TRANSPARENCY 13
  46. #define SETTING_DRAW_THUMBNAILS 14
  47. #define SETTING_DRAW_RTF 15
  48. #define SETTING_FIND_AS_TYPE 16
  49. #define SETTING_ENSURE_WINDOW_IS_VISIBLE 17
  50. #define SETTING_SHOW_GROUP_CLIPS_IN_LIST 18
  51. #define SETTING_PROMP_ON_DELETE 19
  52. #define SETTING_ALWAYS_SHOW_SCROLL_BAR 20
  53. #define SETTING_PASTE_AS_ADMIN 21
  54. #define SETTTING_SHOW_IN_TASKBAR 22
  55. #define SETTING_SHOW_CLIP_PASTED 23
  56. #define SETTING_DIFF_APP 24
  57. #define SETTING_TRANSPARENCY 25
  58. #define SETTING_UPDATE_ORDER_ON_PASTE 26
  59. #define SETTING_ALLOW_DUPLICATES 27
  60. #define SETTING_REGEX_FILTERING_1 28
  61. #define SETTING_REGEX_FILTERING_2 29
  62. #define SETTING_REGEX_FILTERING_3 30
  63. #define SETTING_REGEX_FILTERING_4 31
  64. #define SETTING_REGEX_FILTERING_5 32
  65. #define SETTING_REGEX_FILTERING_6 33
  66. #define SETTING_REGEX_FILTERING_7 34
  67. #define SETTING_REGEX_FILTERING_8 35
  68. #define SETTING_REGEX_FILTERING_9 36
  69. #define SETTING_REGEX_FILTERING_10 37
  70. #define SETTING_REGEX_FILTERING_11 38
  71. #define SETTING_REGEX_FILTERING_12 39
  72. #define SETTING_REGEX_FILTERING_13 40
  73. #define SETTING_REGEX_FILTERING_14 41
  74. #define SETTING_REGEX_FILTERING_15 42
  75. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_1 43
  76. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_2 44
  77. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_3 45
  78. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_4 46
  79. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_5 47
  80. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_6 48
  81. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_7 49
  82. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_8 50
  83. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_9 51
  84. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_10 52
  85. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_11 53
  86. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_12 54
  87. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_13 55
  88. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_14 56
  89. #define SETTING_REGEX_FILTERING_BY_PROCESS_NAME_15 57
  90. #define SETTING_SHOW_STARTUP_MESSAGE 58
  91. #define SETTING_TOOLTIP_TIMEOUT 59
  92. #define SETTING_SELECTED_INDEX 60
  93. #define SETTING_CLIPBOARD_SAVE_DELAY 61
  94. #define SETTING_SHOW_MSG_WHEN_RECEIVING_MANUAL_SENT_CLIP 62
  95. #define SETTING_MULTIPASTE_REVERSE_ORDER 63
  96. #define SETTING_DEFAULT_PASTE_STRING 64
  97. #define SETTING_DEFAULT_COPY_STRING 65
  98. #define SETTING_DEFAULT_CUT_STRING 66
  99. #define SETTING_REVERT_TO_TOP_LEVEL_GROUP 67
  100. #define SETTING_UPDATE_ORDER_ON_CTRL_C 68
  101. #define SETTING_TOOLTIP_LINES 69
  102. #define SETTING_TOOLTIP_CHARACTERS 70
  103. #define SETTING_ACTIVATE_WINDOW_DELAY 71
  104. #define SETTING_DOUBLE_KEYSTROKE_TIMEOUT 72
  105. #define SETTING_SEND_KEYS_DELAY 73
  106. #define SETTING_FIRST_TEN_HOTKEYS_START 74
  107. #define SETTING_FIRST_TEN_HOTKEYS_FONT_SIZE 75
  108. BOOL CAdvGeneral::OnInitDialog()
  109. {
  110. CDialogEx::OnInitDialog();
  111. HICON b = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 64, 64, LR_SHARED);
  112. SetIcon(b, TRUE);
  113. m_propertyGrid.ModifyStyle(0, WS_CLIPCHILDREN);
  114. CMFCPropertyGridProperty * pGroupTest = new CMFCPropertyGridProperty( _T( "Ditto" ) );
  115. m_propertyGrid.AddProperty(pGroupTest);
  116. m_Resize.SetParent(m_hWnd);
  117. m_Resize.AddControl(IDC_MFCPROPERTYGRID1, DR_SizeWidth | DR_SizeHeight);
  118. m_Resize.AddControl(IDOK, DR_MoveTop | DR_MoveLeft);
  119. m_Resize.AddControl(IDCANCEL, DR_MoveTop | DR_MoveLeft);
  120. m_Resize.AddControl(IDC_BT_COMPACT_AND_REPAIR, DR_MoveTop);
  121. m_Resize.AddControl(IDC_BUTTON_COPY_SCRIPTS, DR_MoveTop);
  122. m_Resize.AddControl(IDC_BUTTON_PASTE_SCRIPTS, DR_MoveTop);
  123. HDITEM hdItem;
  124. hdItem.mask = HDI_WIDTH; // indicating cxy is width
  125. hdItem.cxy = 325; // whatever you want the property name column width to be
  126. m_propertyGrid.GetHeaderCtrl().SetItem(0, &hdItem);
  127. m_propertyGrid.SetFont(this->GetFont());
  128. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Activate Window Delay (100ms default)"), (long)CGetSetOptions::SendKeysDelay(), _T(""), SETTING_ACTIVATE_WINDOW_DELAY));
  129. AddTrueFalse(pGroupTest, _T("Allow Duplicates"), CGetSetOptions::GetAllowDuplicates(), SETTING_ALLOW_DUPLICATES);
  130. AddTrueFalse(pGroupTest, _T("Always Show Scroll Bar"), CGetSetOptions::GetShowScrollBar(), SETTING_ALWAYS_SHOW_SCROLL_BAR);
  131. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Amount of text to save for description"), g_Opt.m_bDescTextSize, _T(""), SETTING_DESC_SIZE));
  132. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Default Paste String"), CGetSetOptions::GetDefaultPasteString(), _T(""), SETTING_DEFAULT_PASTE_STRING));
  133. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Default Copy String"), CGetSetOptions::GetDefaultCopyString(), _T(""), SETTING_DEFAULT_COPY_STRING));
  134. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Default Cut String"), CGetSetOptions::GetDefaultCutString(), _T(""), SETTING_DEFAULT_CUT_STRING));
  135. static TCHAR BASED_CODE szDiffFilter[] = _T("Diff Applications(*.exe)|*.exe||");
  136. CMFCPropertyGridFileProperty* pDiffProp = new CMFCPropertyGridFileProperty(_T("Diff Application Path"), TRUE, CGetSetOptions::GetDiffApp(), _T("exe"), 0, szDiffFilter, (LPCTSTR)0, SETTING_DIFF_APP);
  137. pGroupTest->AddSubItem(pDiffProp);
  138. AddTrueFalse(pGroupTest, _T("Display Icon in System Tray"), CGetSetOptions::GetShowIconInSysTray(), SETTING_SHOW_TASKBAR_ICON);
  139. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Double shortcut keystroke timeout)"), (long)CGetSetOptions::GetDoubleKeyStrokeTimeout(), _T(""), SETTING_DOUBLE_KEYSTROKE_TIMEOUT));
  140. AddTrueFalse(pGroupTest, _T("Draw RTF Text in List (for RTF types) (Could Increase Memory Usage an Display Speed)"), CGetSetOptions::GetDrawRTF(), SETTING_DRAW_RTF);
  141. AddTrueFalse(pGroupTest, _T("Elevated privileges to paste into elevated apps"), CGetSetOptions::GetPasteAsAdmin(), SETTING_PASTE_AS_ADMIN);
  142. AddTrueFalse(pGroupTest, _T("Ensure Ditto is always connected to the clipboard"), CGetSetOptions::GetEnsureConnectToClipboard(), SETTING_ENSURE_CONNECTED);
  143. AddTrueFalse(pGroupTest, _T("Ensure Entire Window is Visible"), CGetSetOptions::GetEnsureEntireWindowCanBeSeen(), SETTING_ENSURE_WINDOW_IS_VISIBLE);
  144. AddTrueFalse(pGroupTest, _T("Find As You Type"), CGetSetOptions::GetFindAsYouType(), SETTING_FIND_AS_TYPE);
  145. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("First Ten HotHeys Start Index)"), (long)CGetSetOptions::GetFirstTenHotKeysStart(), _T(""), SETTING_FIRST_TEN_HOTKEYS_START));
  146. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("First Ten HotHeys Font Size)"), (long)CGetSetOptions::GetFirstTenHotKeysFontSize(), _T(""), SETTING_FIRST_TEN_HOTKEYS_FONT_SIZE));
  147. AddTrueFalse(pGroupTest, _T("Hide Ditto on Hot Key if Ditto is Visible"), CGetSetOptions::GetHideDittoOnHotKeyIfAlreadyShown(), SETTING_HIDE_ON_HOTKEY_IF_VISIBLE);
  148. pGroupTest->AddSubItem( new CMFCPropertyGridProperty(_T("Maximum Clip Size in Bytes (0 for no limit)"), g_Opt.m_lMaxClipSizeInBytes, _T(""), SETTING_MAX_CLIP_SIZE));
  149. pGroupTest->AddSubItem( new CMFCPropertyGridProperty(_T("Multi-Paste clip separator ([LF] = line feed)"), g_Opt.GetMultiPasteSeparator(false), _T(""), SETTING_CLIP_SEPARATOR));
  150. AddTrueFalse(pGroupTest, _T("Multi-Paste in reverse order"), g_Opt.m_bMultiPasteReverse, SETTING_MULTIPASTE_REVERSE_ORDER);
  151. static TCHAR BASED_CODE szFilter[] = _T("Sounds(*.wav)|*.wav||");
  152. CMFCPropertyGridFileProperty* pFileProp = new CMFCPropertyGridFileProperty(_T("On copy play the sound"), TRUE, CGetSetOptions::GetPlaySoundOnCopy(), _T("wav"), 0, szFilter, (LPCTSTR)0, SETTING_COPY_PLAY_SOUND);
  153. pGroupTest->AddSubItem(pFileProp);
  154. AddTrueFalse(pGroupTest, _T("Paste Clip in active window after selection"), CGetSetOptions::GetSendPasteAfterSelection(), SETTING_PASTE_IN_ACTIVE_WINDOW);
  155. AddTrueFalse(pGroupTest, _T("Prompt when deleting clips"), CGetSetOptions::GetPromptWhenDeletingClips(), SETTING_PROMP_ON_DELETE);
  156. AddTrueFalse(pGroupTest, _T("Revert to top level group on close"), CGetSetOptions::GetRevertToTopLevelGroup(), SETTING_REVERT_TO_TOP_LEVEL_GROUP);
  157. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Save Clipboard Delay (ms, default: 100))"), (long)(CGetSetOptions::GetProcessDrawClipboardDelay()), _T(""), SETTING_CLIPBOARD_SAVE_DELAY));
  158. AddTrueFalse(pGroupTest, _T("Save Multi-Pastes"), CGetSetOptions::GetSaveMultiPaste(), SETTING_SAVE_MULTI_PASTE);
  159. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Selected Index"), (long)(CGetSetOptions::SelectedIndex()+1), _T(""), SETTING_SELECTED_INDEX));
  160. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Send Keys Delay (ms)"), (long)CGetSetOptions::RealSendKeysDelay(), _T(""), SETTING_SEND_KEYS_DELAY));
  161. AddTrueFalse(pGroupTest, _T("Show Clips That are in Groups in Main List"), CGetSetOptions::GetShowAllClipsInMainList(), SETTING_SHOW_GROUP_CLIPS_IN_LIST);
  162. AddTrueFalse(pGroupTest, _T("Show leading whitespace"), CGetSetOptions::GetDescShowLeadingWhiteSpace(), SETTING_SHOW_LEADING_WHITESPACE);
  163. AddTrueFalse(pGroupTest, _T("Show In Taskbar"), CGetSetOptions::GetShowInTaskBar(), SETTTING_SHOW_IN_TASKBAR);
  164. AddTrueFalse(pGroupTest, _T("Show indicator a clip has been pasted"), CGetSetOptions::GetShowIfClipWasPasted(), SETTING_SHOW_CLIP_PASTED);
  165. AddTrueFalse(pGroupTest, _T("Show message that we received a manual sent clip"), CGetSetOptions::GetShowMsgWhenReceivingManualSentClip(), SETTING_SHOW_MSG_WHEN_RECEIVING_MANUAL_SENT_CLIP);
  166. AddTrueFalse(pGroupTest, _T("Show startup tooltip message"), CGetSetOptions::GetShowStartupMessage(), SETTING_SHOW_STARTUP_MESSAGE);
  167. AddTrueFalse(pGroupTest, _T("Show text for first ten copy hot keys"), CGetSetOptions::GetShowTextForFirstTenHotKeys(), SETTING_TEXT_FIRST_TEN);
  168. AddTrueFalse(pGroupTest, _T("Show thumbnails(for CF_DIB types) (Could Increase Memory Usage and Display Speed)"), CGetSetOptions::GetDrawThumbnail(), SETTING_DRAW_THUMBNAILS);
  169. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Text Lines per Clip"), CGetSetOptions::GetLinesPerRow(), _T(""), SETTING_LINES_PER_ROW));
  170. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Tooltip display time(ms) max of 32000 (-1 default (5 seconds), 0 to turn off)"), g_Opt.m_tooltipTimeout, _T(""), SETTING_TOOLTIP_TIMEOUT));
  171. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Tooltip maximum display lines"), (long)CGetSetOptions::GetMaxToolTipLines(), _T(""), SETTING_TOOLTIP_LINES));
  172. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Tooltip display characters"), (long)CGetSetOptions::GetMaxToolTipCharacters(), _T(""), SETTING_TOOLTIP_CHARACTERS));
  173. AddTrueFalse(pGroupTest, _T("Transparency Enabled"), CGetSetOptions::GetEnableTransparency(), SETTING_ENABLE_TRANSPARENCY);
  174. pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Transparency Percentage"), CGetSetOptions::GetTransparencyPercent(), _T(""), SETTING_TRANSPARENCY));
  175. AddTrueFalse(pGroupTest, _T("Update Clip Order On Paste"), CGetSetOptions::GetUpdateTimeOnPaste(), SETTING_UPDATE_ORDER_ON_PASTE);
  176. AddTrueFalse(pGroupTest, _T("Update Clip Order On Ctrl-C"), CGetSetOptions::GetUpdateClipOrderOnCtrlC(), SETTING_UPDATE_ORDER_ON_CTRL_C);
  177. CMFCPropertyGridProperty * regexFilterGroup = new CMFCPropertyGridProperty(_T("Exlude clips by Regular Expressions"));
  178. m_propertyGrid.AddProperty(regexFilterGroup);
  179. CString processFilterDesc = _T("Process making the copy first must match this before the Regex will be applied (empty or * for all processes) (separate multiples by ;)");
  180. CString regexFilterDesc = _T("If copied text matches this regular expression then the clip will not be saved to Ditto");
  181. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("1 Regex"), CGetSetOptions::GetRegexFilter(0), regexFilterDesc, SETTING_REGEX_FILTERING_1));
  182. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("1 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(0), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_1));
  183. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("2 Regex"), CGetSetOptions::GetRegexFilter(1), regexFilterDesc, SETTING_REGEX_FILTERING_2));
  184. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("2 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(1), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_2));
  185. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("3 Regex"), CGetSetOptions::GetRegexFilter(2), regexFilterDesc, SETTING_REGEX_FILTERING_3));
  186. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("3 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(2), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_3));
  187. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("4 Regex"), CGetSetOptions::GetRegexFilter(3), regexFilterDesc, SETTING_REGEX_FILTERING_4));
  188. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("4 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(3), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_4));
  189. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("5 Regex"), CGetSetOptions::GetRegexFilter(4), regexFilterDesc, SETTING_REGEX_FILTERING_5));
  190. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("5 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(4), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_5));
  191. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("6 Regex"), CGetSetOptions::GetRegexFilter(5), regexFilterDesc, SETTING_REGEX_FILTERING_6));
  192. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("6 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(5), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_6));
  193. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("7 Regex"), CGetSetOptions::GetRegexFilter(6), regexFilterDesc, SETTING_REGEX_FILTERING_7));
  194. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("7 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(6), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_7));
  195. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("8 Regex"), CGetSetOptions::GetRegexFilter(7), regexFilterDesc, SETTING_REGEX_FILTERING_8));
  196. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("8 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(7), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_8));
  197. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("9 Regex"), CGetSetOptions::GetRegexFilter(8), regexFilterDesc, SETTING_REGEX_FILTERING_9));
  198. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("9 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(8), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_9));
  199. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("10 Regex"), CGetSetOptions::GetRegexFilter(9), regexFilterDesc, SETTING_REGEX_FILTERING_10));
  200. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("10 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(9), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_10));
  201. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("11 Regex"), CGetSetOptions::GetRegexFilter(10), regexFilterDesc, SETTING_REGEX_FILTERING_11));
  202. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("11 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(10), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_11));
  203. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("12 Regex"), CGetSetOptions::GetRegexFilter(11), regexFilterDesc, SETTING_REGEX_FILTERING_12));
  204. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("12 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(11), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_12));
  205. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("13 Regex"), CGetSetOptions::GetRegexFilter(12), regexFilterDesc, SETTING_REGEX_FILTERING_13));
  206. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("13 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(12), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_13));
  207. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("14 Regex"), CGetSetOptions::GetRegexFilter(13), regexFilterDesc, SETTING_REGEX_FILTERING_14));
  208. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("14 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(13), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_14));
  209. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("15 Regex"), CGetSetOptions::GetRegexFilter(14), regexFilterDesc, SETTING_REGEX_FILTERING_15));
  210. regexFilterGroup->AddSubItem(new CMFCPropertyGridProperty(_T("15 Process Name"), CGetSetOptions::GetRegexFilterByProcessName(14), processFilterDesc, SETTING_REGEX_FILTERING_BY_PROCESS_NAME_14));
  211. regexFilterGroup->Expand(FALSE);
  212. return TRUE;
  213. }
  214. void CAdvGeneral::AddTrueFalse(CMFCPropertyGridProperty * pGroupTest, CString desc, BOOL value, int settingId)
  215. {
  216. CString stringValue = _T("False");
  217. if(value)
  218. {
  219. stringValue = _T("True");
  220. }
  221. CMFCPropertyGridProperty *pCombo = new CMFCPropertyGridProperty(desc, stringValue, _T(""), settingId);
  222. pCombo->AddOption(_T("True"));
  223. pCombo->AddOption(_T("False"));
  224. pCombo->AllowEdit(FALSE);
  225. pGroupTest->AddSubItem(pCombo);
  226. }
  227. void CAdvGeneral::OnBnClickedOk()
  228. {
  229. int topLevelCount = m_propertyGrid.GetPropertyCount();
  230. for (int topLevel = 0; topLevel < topLevelCount; topLevel++)
  231. {
  232. int count = m_propertyGrid.GetProperty(topLevel)->GetSubItemsCount();
  233. for (int row = 0; row < count; row++)
  234. {
  235. CMFCPropertyGridProperty* prop = m_propertyGrid.GetProperty(topLevel)->GetSubItem(row);
  236. COleVariant i = prop->GetValue();
  237. LPVARIANT pNewValue = (LPVARIANT)i;
  238. COleVariant iOrig = prop->GetOriginalValue();
  239. LPVARIANT pOrigValue = (LPVARIANT)iOrig;
  240. switch ((int)prop->GetData())
  241. {
  242. case SETTING_DESC_SIZE:
  243. if (pNewValue->lVal != pOrigValue->lVal)
  244. {
  245. CGetSetOptions::SetDescTextSize(pNewValue->lVal);
  246. }
  247. break;
  248. case SETTING_SELECTED_INDEX:
  249. if (pNewValue->lVal != pOrigValue->lVal)
  250. {
  251. CGetSetOptions::SetSelectedIndex(max((pNewValue->lVal-1), 0));
  252. }
  253. break;
  254. case SETTING_CLIPBOARD_SAVE_DELAY:
  255. if (pNewValue->lVal != pOrigValue->lVal)
  256. {
  257. CGetSetOptions::SetProcessDrawClipboardDelay(max(pNewValue->lVal, 0));
  258. }
  259. break;
  260. case SETTING_SHOW_TASKBAR_ICON:
  261. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  262. {
  263. BOOL val = false;
  264. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  265. {
  266. val = true;
  267. }
  268. CGetSetOptions::SetShowIconInSysTray(val);
  269. }
  270. break;
  271. case SETTING_SAVE_MULTI_PASTE:
  272. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  273. {
  274. BOOL val = false;
  275. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  276. {
  277. val = true;
  278. }
  279. CGetSetOptions::SetSaveMultiPaste(val);
  280. }
  281. break;
  282. case SETTING_HIDE_ON_HOTKEY_IF_VISIBLE:
  283. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  284. {
  285. BOOL val = false;
  286. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  287. {
  288. val = true;
  289. }
  290. CGetSetOptions::SetHideDittoOnHotKeyIfAlreadyShown(val);
  291. }
  292. break;
  293. case SETTING_PASTE_IN_ACTIVE_WINDOW:
  294. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  295. {
  296. BOOL val = false;
  297. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  298. {
  299. val = true;
  300. }
  301. CGetSetOptions::SetSendPasteAfterSelection(val);
  302. }
  303. break;
  304. case SETTING_MAX_CLIP_SIZE:
  305. if (pNewValue->lVal != pOrigValue->lVal)
  306. {
  307. CGetSetOptions::SetMaxClipSizeInBytes(pNewValue->lVal);
  308. }
  309. break;
  310. case SETTING_CLIP_SEPARATOR:
  311. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  312. {
  313. CGetSetOptions::SetMultiPasteSeparator(pNewValue->bstrVal);
  314. }
  315. break;
  316. case SETTING_ENSURE_CONNECTED:
  317. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  318. {
  319. BOOL val = false;
  320. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  321. {
  322. val = true;
  323. }
  324. CGetSetOptions::SetEnsureConnectToClipboard(val);
  325. }
  326. break;
  327. case SETTING_COPY_PLAY_SOUND:
  328. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  329. {
  330. CGetSetOptions::SetPlaySoundOnCopy(pNewValue->bstrVal);
  331. }
  332. break;
  333. case SETTING_TEXT_FIRST_TEN:
  334. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  335. {
  336. BOOL val = false;
  337. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  338. {
  339. val = true;
  340. }
  341. CGetSetOptions::SetShowTextForFirstTenHotKeys(val);
  342. }
  343. break;
  344. case SETTING_SHOW_LEADING_WHITESPACE:
  345. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  346. {
  347. BOOL val = false;
  348. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  349. {
  350. val = true;
  351. }
  352. CGetSetOptions::SetDescShowLeadingWhiteSpace(val);
  353. }
  354. break;
  355. case SETTING_LINES_PER_ROW:
  356. if (pNewValue->lVal != pOrigValue->lVal)
  357. {
  358. CGetSetOptions::SetLinesPerRow(pNewValue->lVal);
  359. }
  360. break;
  361. case SETTING_ENABLE_TRANSPARENCY:
  362. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  363. {
  364. BOOL val = false;
  365. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  366. {
  367. val = true;
  368. }
  369. CGetSetOptions::SetEnableTransparency(val);
  370. }
  371. break;
  372. case SETTING_TRANSPARENCY:
  373. if (pNewValue->lVal != pOrigValue->lVal)
  374. {
  375. int value = 100;
  376. if (pNewValue->lVal <= 100 && pNewValue->lVal > 0)
  377. {
  378. value = pNewValue->lVal;
  379. }
  380. CGetSetOptions::SetTransparencyPercent(value);
  381. }
  382. break;
  383. case SETTING_DRAW_THUMBNAILS:
  384. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  385. {
  386. BOOL val = false;
  387. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  388. {
  389. val = true;
  390. }
  391. CGetSetOptions::SetDrawThumbnail(val);
  392. }
  393. break;
  394. case SETTING_DRAW_RTF:
  395. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  396. {
  397. BOOL val = false;
  398. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  399. {
  400. val = true;
  401. }
  402. CGetSetOptions::SetDrawRTF(val);
  403. }
  404. break;
  405. case SETTING_FIND_AS_TYPE:
  406. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  407. {
  408. BOOL val = false;
  409. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  410. {
  411. val = true;
  412. }
  413. CGetSetOptions::SetFindAsYouType(val);
  414. }
  415. break;
  416. case SETTING_ENSURE_WINDOW_IS_VISIBLE:
  417. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  418. {
  419. BOOL val = false;
  420. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  421. {
  422. val = true;
  423. }
  424. CGetSetOptions::SetEnsureEntireWindowCanBeSeen(val);
  425. }
  426. break;
  427. case SETTING_SHOW_GROUP_CLIPS_IN_LIST:
  428. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  429. {
  430. BOOL val = false;
  431. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  432. {
  433. val = true;
  434. }
  435. CGetSetOptions::SetShowAllClipsInMainList(val);
  436. }
  437. break;
  438. case SETTING_PROMP_ON_DELETE:
  439. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  440. {
  441. BOOL val = false;
  442. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  443. {
  444. val = true;
  445. }
  446. CGetSetOptions::SetPromptWhenDeletingClips(val);
  447. }
  448. break;
  449. case SETTING_ALWAYS_SHOW_SCROLL_BAR:
  450. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  451. {
  452. BOOL val = false;
  453. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  454. {
  455. val = true;
  456. }
  457. CGetSetOptions::SetShowScrollBar(val);
  458. }
  459. break;
  460. case SETTING_PASTE_AS_ADMIN:
  461. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  462. {
  463. BOOL val = false;
  464. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  465. {
  466. val = true;
  467. }
  468. CGetSetOptions::SetPasteAsAdmin(val);
  469. }
  470. break;
  471. case SETTTING_SHOW_IN_TASKBAR:
  472. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  473. {
  474. BOOL val = false;
  475. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  476. {
  477. val = true;
  478. }
  479. CGetSetOptions::SetShowInTaskBar(val);
  480. }
  481. break;
  482. case SETTING_SHOW_CLIP_PASTED:
  483. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  484. {
  485. BOOL val = false;
  486. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  487. {
  488. val = true;
  489. }
  490. CGetSetOptions::SetShowIfClipWasPasted(val);
  491. }
  492. break;
  493. case SETTING_SHOW_MSG_WHEN_RECEIVING_MANUAL_SENT_CLIP:
  494. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  495. {
  496. BOOL val = false;
  497. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  498. {
  499. val = true;
  500. }
  501. CGetSetOptions::SetShowMsgWhenReceivingManualSentClip(val);
  502. }
  503. break;
  504. case SETTING_DIFF_APP:
  505. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  506. {
  507. CGetSetOptions::SetDiffApp(pNewValue->bstrVal);
  508. }
  509. break;
  510. case SETTING_UPDATE_ORDER_ON_PASTE:
  511. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  512. {
  513. BOOL val = false;
  514. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  515. {
  516. val = true;
  517. }
  518. CGetSetOptions::SetUpdateTimeOnPaste(val);
  519. }
  520. break;
  521. case SETTING_UPDATE_ORDER_ON_CTRL_C:
  522. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  523. {
  524. BOOL val = false;
  525. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  526. {
  527. val = true;
  528. }
  529. CGetSetOptions::SetUpdateClipOrderOnCtrlC(val);
  530. }
  531. break;
  532. case SETTING_MULTIPASTE_REVERSE_ORDER:
  533. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  534. {
  535. BOOL val = false;
  536. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  537. {
  538. val = true;
  539. }
  540. CGetSetOptions::SetMultiPasteReverse(val);
  541. }
  542. break;
  543. case SETTING_ALLOW_DUPLICATES:
  544. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  545. {
  546. BOOL val = false;
  547. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  548. {
  549. val = true;
  550. }
  551. CGetSetOptions::SetAllowDuplicates(val);
  552. }
  553. break;
  554. case SETTING_REGEX_FILTERING_1:
  555. case SETTING_REGEX_FILTERING_2:
  556. case SETTING_REGEX_FILTERING_3:
  557. case SETTING_REGEX_FILTERING_4:
  558. case SETTING_REGEX_FILTERING_5:
  559. case SETTING_REGEX_FILTERING_6:
  560. case SETTING_REGEX_FILTERING_7:
  561. case SETTING_REGEX_FILTERING_8:
  562. case SETTING_REGEX_FILTERING_9:
  563. case SETTING_REGEX_FILTERING_10:
  564. case SETTING_REGEX_FILTERING_11:
  565. case SETTING_REGEX_FILTERING_12:
  566. case SETTING_REGEX_FILTERING_13:
  567. case SETTING_REGEX_FILTERING_14:
  568. case SETTING_REGEX_FILTERING_15:
  569. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  570. {
  571. CGetSetOptions::SetRegexFilter(pNewValue->bstrVal, (((int)prop->GetData()) - SETTING_REGEX_FILTERING_1));
  572. }
  573. break;
  574. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_1:
  575. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_2:
  576. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_3:
  577. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_4:
  578. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_5:
  579. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_6:
  580. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_7:
  581. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_8:
  582. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_9:
  583. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_10:
  584. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_11:
  585. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_12:
  586. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_13:
  587. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_14:
  588. case SETTING_REGEX_FILTERING_BY_PROCESS_NAME_15:
  589. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  590. {
  591. CGetSetOptions::SetRegexFilterByProcessName(pNewValue->bstrVal, (((int)prop->GetData()) - SETTING_REGEX_FILTERING_BY_PROCESS_NAME_1));
  592. }
  593. break;
  594. case SETTING_SHOW_STARTUP_MESSAGE:
  595. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  596. {
  597. BOOL val = false;
  598. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  599. {
  600. val = true;
  601. }
  602. CGetSetOptions::SetShowStartupMessage(val);
  603. }
  604. break;
  605. case SETTING_TOOLTIP_TIMEOUT:
  606. if (pNewValue->lVal != pOrigValue->lVal)
  607. {
  608. CGetSetOptions::SetToolTipTimeout(pNewValue->lVal);
  609. }
  610. break;
  611. case SETTING_TOOLTIP_LINES:
  612. if (pNewValue->lVal != pOrigValue->lVal)
  613. {
  614. CGetSetOptions::SetMaxToolTipLines(pNewValue->lVal);
  615. }
  616. break;
  617. case SETTING_TOOLTIP_CHARACTERS:
  618. if (pNewValue->lVal != pOrigValue->lVal)
  619. {
  620. CGetSetOptions::SetMaxToolTipCharacters(pNewValue->lVal);
  621. }
  622. break;
  623. case SETTING_DEFAULT_PASTE_STRING:
  624. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  625. {
  626. CGetSetOptions::SetDefaultPasteString(pNewValue->bstrVal);
  627. }
  628. break;
  629. case SETTING_DEFAULT_COPY_STRING:
  630. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  631. {
  632. CGetSetOptions::SetDefaultCopyString(pNewValue->bstrVal);
  633. }
  634. break;
  635. case SETTING_DEFAULT_CUT_STRING:
  636. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  637. {
  638. CGetSetOptions::SetDefaultCutString(pNewValue->bstrVal);
  639. }
  640. break;
  641. case SETTING_REVERT_TO_TOP_LEVEL_GROUP:
  642. if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
  643. {
  644. BOOL val = false;
  645. if (wcscmp(pNewValue->bstrVal, L"True") == 0)
  646. {
  647. val = true;
  648. }
  649. CGetSetOptions::SetRevertToTopLevelGroup(val);
  650. }
  651. break;
  652. case SETTING_ACTIVATE_WINDOW_DELAY:
  653. if (pNewValue->lVal != pOrigValue->lVal)
  654. {
  655. CGetSetOptions::SetSendKeysDelay(pNewValue->lVal);
  656. }
  657. break;
  658. case SETTING_SEND_KEYS_DELAY:
  659. if (pNewValue->lVal != pOrigValue->lVal)
  660. {
  661. CGetSetOptions::SetRealSendKeysDelay(pNewValue->lVal);
  662. }
  663. break;
  664. case SETTING_DOUBLE_KEYSTROKE_TIMEOUT:
  665. if (pNewValue->lVal != pOrigValue->lVal)
  666. {
  667. CGetSetOptions::SetDoubleKeyStrokeTimeout(pNewValue->lVal);
  668. }
  669. break;
  670. case SETTING_FIRST_TEN_HOTKEYS_START:
  671. if (pNewValue->lVal != pOrigValue->lVal)
  672. {
  673. CGetSetOptions::SetFirstTenHotKeysStart(pNewValue->lVal);
  674. }
  675. break;
  676. case SETTING_FIRST_TEN_HOTKEYS_FONT_SIZE:
  677. if (pNewValue->lVal != pOrigValue->lVal)
  678. {
  679. CGetSetOptions::SetFirstTenHotKeysFontSize(pNewValue->lVal);
  680. }
  681. break;
  682. }
  683. }
  684. }
  685. CDialogEx::OnOK();
  686. }
  687. void CAdvGeneral::OnSize(UINT nType, int cx, int cy)
  688. {
  689. CDialogEx::OnSize(nType, cx, cy);
  690. if (((GetKeyState(VK_LBUTTON) & 0x100) != 0) &&
  691. m_mouseDownOnCaption == false)
  692. {
  693. m_Resize.MoveControls(CSize(cx, cy));
  694. }
  695. else
  696. {
  697. m_Resize.SetParent(m_hWnd);
  698. }
  699. }
  700. void CAdvGeneral::OnBnClickedBtCompactAndRepair()
  701. {
  702. auto msg = theApp.m_Language.GetString("CompactRepairWarning", "Warning this can take quite a long time and require up to double the hard drive space as your current database size, Continue?");
  703. int ret = MessageBox(msg, _T("Ditto"), MB_YESNO);
  704. if (ret == IDYES)
  705. {
  706. CWaitCursor wait;
  707. try
  708. {
  709. try
  710. {
  711. for (int i = 0; i < 100; i++)
  712. {
  713. int toDeleteCount = theApp.m_db.execScalar(_T("SELECT COUNT(clipID) FROM MainDeletes"));
  714. if (toDeleteCount <= 0)
  715. break;
  716. RemoveOldEntries(false);
  717. }
  718. }
  719. CATCH_SQLITE_EXCEPTION
  720. theApp.m_db.execDML(_T("PRAGMA auto_vacuum = 1"));
  721. theApp.m_db.execQuery(_T("VACUUM"));
  722. }
  723. CATCH_SQLITE_EXCEPTION
  724. }
  725. }
  726. void CAdvGeneral::OnBnClickedButtonCopyScripts()
  727. {
  728. CDimWnd dim(this);
  729. CScriptEditor e(this);
  730. e.m_title = _T("Copy Scripts");
  731. e.m_xml.Load(CGetSetOptions::GetCopyScriptsXml());
  732. if (e.DoModal() == IDOK)
  733. {
  734. CGetSetOptions::SetCopyScriptsXml(e.m_xml.Save());
  735. }
  736. }
  737. void CAdvGeneral::OnBnClickedButtonPasteScripts2()
  738. {
  739. CDimWnd dim(this);
  740. CScriptEditor e(this);
  741. e.m_title = _T("Paste Scripts");
  742. e.m_xml.Load(CGetSetOptions::GetPasteScriptsXml());
  743. if (e.DoModal() == IDOK)
  744. {
  745. CGetSetOptions::SetPasteScriptsXml(e.m_xml.Save());
  746. }
  747. }
  748. void CAdvGeneral::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
  749. {
  750. lpMMI->ptMinTrackSize.x = 450;
  751. lpMMI->ptMinTrackSize.y = 450;
  752. CDialogEx::OnGetMinMaxInfo(lpMMI);
  753. }
  754. void CAdvGeneral::OnNcLButtonDown(UINT nHitTest, CPoint point)
  755. {
  756. m_mouseDownOnCaption = false;
  757. if (nHitTest == HTCAPTION)
  758. {
  759. m_mouseDownOnCaption = true;
  760. }
  761. CDialog::OnNcLButtonDown(nHitTest, point);
  762. }