EditorPreferences.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include <Common.h>
  5. #include <WinConfiguration.h>
  6. #include <WinInterface.h>
  7. #include <VCLCommon.h>
  8. #include <TextsWin.h>
  9. #include <Tools.h>
  10. #include <ScpMain.h>
  11. #include "EditorPreferences.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma link "XPThemes"
  15. #pragma link "HistoryComboBox"
  16. #pragma resource "*.dfm"
  17. //---------------------------------------------------------------------------
  18. bool __fastcall DoEditorPreferencesDialog(TEditorPreferences * Editor,
  19. TEditorPreferencesMode Mode)
  20. {
  21. bool Result;
  22. TEditorPreferencesDialog * Dialog = new TEditorPreferencesDialog(Application, Mode);
  23. try
  24. {
  25. Result = Dialog->Execute(Editor);
  26. }
  27. __finally
  28. {
  29. delete Dialog;
  30. }
  31. return Result;
  32. }
  33. //---------------------------------------------------------------------------
  34. __fastcall TEditorPreferencesDialog::TEditorPreferencesDialog(
  35. TComponent * Owner, TEditorPreferencesMode Mode) :
  36. TForm(Owner)
  37. {
  38. UseSystemSettings(this);
  39. FMode = Mode;
  40. Caption = LoadStr(Mode == epmEdit ? EDITOR_EDIT : EDITOR_ADD);
  41. InstallPathWordBreakProc(ExternalEditorEdit);
  42. }
  43. //---------------------------------------------------------------------------
  44. bool __fastcall TEditorPreferencesDialog::Execute(TEditorPreferences * Editor)
  45. {
  46. EditorInternalButton->Checked = (Editor->Data.Editor == edInternal);
  47. EditorExternalButton->Checked = (Editor->Data.Editor == edExternal);
  48. AnsiString ExternalEditor = Editor->Data.ExternalEditor;
  49. if (!ExternalEditor.IsEmpty())
  50. {
  51. TWinConfiguration::ReformatFileNameCommand(ExternalEditor);
  52. }
  53. ExternalEditorEdit->Text = ExternalEditor;
  54. ExternalEditorEdit->Items = CustomWinConfiguration->History["ExternalEditor"];
  55. MaskEdit->Text = Editor->Data.FileMask.Masks;
  56. MaskEdit->Items = CustomWinConfiguration->History["Mask"];
  57. ExternalEditorTextCheck->Checked = Editor->Data.ExternalEditorText;
  58. MDIExternalEditorCheck->Checked = Editor->Data.MDIExternalEditor;
  59. bool Result = (ShowModal() == mrOk);
  60. if (Result)
  61. {
  62. Editor->Data.Editor = (EditorInternalButton->Checked ? edInternal : edExternal);
  63. Editor->Data.ExternalEditor = ExternalEditorEdit->Text;
  64. ExternalEditorEdit->SaveToHistory();
  65. CustomWinConfiguration->History["ExternalEditor"] = ExternalEditorEdit->Items;
  66. Editor->Data.FileMask = MaskEdit->Text;
  67. MaskEdit->SaveToHistory();
  68. CustomWinConfiguration->History["Mask"] = MaskEdit->Items;
  69. Editor->Data.ExternalEditorText = ExternalEditorTextCheck->Checked;
  70. Editor->Data.MDIExternalEditor = MDIExternalEditorCheck->Checked;
  71. }
  72. return Result;
  73. }
  74. //---------------------------------------------------------------------------
  75. void __fastcall TEditorPreferencesDialog::ExternalEditorEditChange(
  76. TObject * Sender)
  77. {
  78. // duplicated in TPreferencesDialog::FilenameEditChange
  79. if (FAfterFilenameEditDialog)
  80. {
  81. FAfterFilenameEditDialog = false;
  82. ExternalEditorEditExit(Sender);
  83. }
  84. else
  85. {
  86. ControlChange(Sender);
  87. }
  88. }
  89. //---------------------------------------------------------------------------
  90. void __fastcall TEditorPreferencesDialog::ExternalEditorEditExit(
  91. TObject * Sender)
  92. {
  93. // duplicated in TPreferencesDialog::FilenameEditExit
  94. THistoryComboBox * FilenameEdit = dynamic_cast<THistoryComboBox *>(Sender);
  95. try
  96. {
  97. AnsiString Filename = FilenameEdit->Text;
  98. if (!Filename.IsEmpty())
  99. {
  100. TWinConfiguration::ReformatFileNameCommand(Filename);
  101. FilenameEdit->Text = Filename;
  102. }
  103. ControlChange(Sender);
  104. }
  105. catch(...)
  106. {
  107. FilenameEdit->SelectAll();
  108. FilenameEdit->SetFocus();
  109. throw;
  110. }
  111. }
  112. //---------------------------------------------------------------------------
  113. void __fastcall TEditorPreferencesDialog::ExternalEditorBrowseButtonClick(
  114. TObject * /*Sender*/)
  115. {
  116. AnsiString ExternalEditor, Program, Params, Dir;
  117. ExternalEditor = ExternalEditorEdit->Text;
  118. TWinConfiguration::ReformatFileNameCommand(ExternalEditor);
  119. SplitCommand(ExternalEditor, Program, Params, Dir);
  120. TOpenDialog * FileDialog = new TOpenDialog(this);
  121. try
  122. {
  123. FileDialog->FileName = Program;
  124. FileDialog->Filter = LoadStr(PREFERENCES_EXTERNAL_EDITOR_FILTER);
  125. FileDialog->Title = LoadStr(PREFERENCES_SELECT_EXTERNAL_EDITOR);
  126. if (FileDialog->Execute())
  127. {
  128. FAfterFilenameEditDialog = true;
  129. ExternalEditorEdit->Text = FormatCommand(FileDialog->FileName, Params);
  130. FAfterFilenameEditDialog = false;
  131. ExternalEditorEditExit(ExternalEditorEdit);
  132. }
  133. }
  134. __finally
  135. {
  136. delete FileDialog;
  137. }
  138. }
  139. //---------------------------------------------------------------------------
  140. void __fastcall TEditorPreferencesDialog::HelpButtonClick(TObject * /*Sender*/)
  141. {
  142. FormHelp(this);
  143. }
  144. //---------------------------------------------------------------------------
  145. void __fastcall TEditorPreferencesDialog::ControlChange(TObject * /*Sender*/)
  146. {
  147. UpdateControls();
  148. }
  149. //---------------------------------------------------------------------------
  150. void __fastcall TEditorPreferencesDialog::UpdateControls()
  151. {
  152. EnableControl(OkButton,
  153. EditorInternalButton->Checked || !ExternalEditorEdit->Text.IsEmpty());
  154. EnableControl(ExternalEditorEdit, EditorExternalButton->Checked);
  155. EnableControl(ExternalEditorBrowseButton, EditorExternalButton->Checked);
  156. EnableControl(ExternalEditorGroup, EditorExternalButton->Checked);
  157. }
  158. //---------------------------------------------------------------------------
  159. void __fastcall TEditorPreferencesDialog::FormCloseQuery(TObject * /*Sender*/,
  160. bool & /*CanClose*/)
  161. {
  162. if (ModalResult != mrCancel)
  163. {
  164. ExitActiveControl(this);
  165. }
  166. }
  167. //---------------------------------------------------------------------------
  168. void __fastcall TEditorPreferencesDialog::MaskEditExit(TObject * /*Sender*/)
  169. {
  170. ValidateMaskEdit(MaskEdit);
  171. }
  172. //---------------------------------------------------------------------------