LUAEditorStyleMessages.h 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzCore/base.h>
  9. #include <AzCore/EBus/EBus.h>
  10. #include <AzCore/std/containers/unordered_set.h>
  11. #include <AzCore/UserSettings/UserSettings.h>
  12. #include <AzCore/Math/Vector3.h>
  13. #include <AzCore/Memory/SystemAllocator.h>
  14. #include <QColor>
  15. #include <QFont>
  16. #pragma once
  17. namespace AZ { class ReflectContext; }
  18. namespace LUAEditor
  19. {
  20. class SyntaxStyleSettings
  21. : public AZ::UserSettings
  22. {
  23. public:
  24. AZ_RTTI(SyntaxStyleSettings, "{9C5A2A16-1855-4074-AA06-FC58A6A789D7}", AZ::UserSettings);
  25. AZ_CLASS_ALLOCATOR(SyntaxStyleSettings, AZ::SystemAllocator);
  26. SyntaxStyleSettings();
  27. QColor ToQColor(const AZ::Vector3& color) const
  28. {
  29. return QColor::fromRgbF(color.GetX(), color.GetY(), color.GetZ());
  30. }
  31. QColor GetTextColor() const { return ToQColor(m_textColor); }
  32. QColor GetLineNumberColor() const { return ToQColor(m_lineNumberColor); }
  33. QColor GetTextFocusedBackgroundColor() const { return ToQColor(m_textFocusedBackgroundColor); }
  34. QColor GetTextUnfocusedBackgroundColor() const { return ToQColor(m_textUnfocusedBackgroundColor); }
  35. QColor GetTextReadOnlyFocusedBackgroundColor() const { return ToQColor(m_textReadOnlyFocusedBackgroundColor); }
  36. QColor GetTextReadOnlyUnfocusedBackgroundColor() const { return ToQColor(m_textReadOnlyUnfocusedBackgroundColor); }
  37. QColor GetTextSelectedColor() const { return ToQColor(m_textSelectedColor); }
  38. QColor GetTextSelectedBackgroundColor() const { return ToQColor(m_textSelectedBackgroundColor); }
  39. QColor GetTextWhitespaceColor() const { return ToQColor(m_textWhitespaceColor); }
  40. QColor GetBreakpointFocusedBackgroundColor() const { return ToQColor(m_breakpointFocusedBackgroundColor); }
  41. QColor GetBreakpointUnfocusedBackgroundColor() const { return ToQColor(m_breakpointUnfocusedBackgroundColor); }
  42. QColor GetFoldingFocusedBackgroundColor() const { return ToQColor(m_foldingFocusedBackgroundColor); }
  43. QColor GetFoldingUnfocusedBackgroundColor() const { return ToQColor(m_foldingUnfocusedBackgroundColor); }
  44. QColor GetCurrentIdentifierColor() const { return ToQColor(m_currentIdentifierColor); }
  45. QColor GetCurrentLineOutlineColor() const { return ToQColor(m_currentLineOutlineColor); }
  46. QColor GetSpecialCharacterColor() const { return ToQColor(m_specialCharacterColor); }
  47. QColor GetKeywordColor() const { return ToQColor(m_keywordColor); }
  48. QColor GetSpecialKeywordColor() const { return ToQColor(m_specialKeywordColor); }
  49. QColor GetCommentColor() const { return ToQColor(m_commentColor); }
  50. QColor GetStringLiteralColor() const { return ToQColor(m_stringLiteralColor); }
  51. QColor GetNumberColor() const { return ToQColor(m_numberColor); }
  52. QColor GetLibraryColor() const { return ToQColor(m_libraryColor); }
  53. QColor GetMethodColor() const { return ToQColor(m_methodColor); }
  54. QColor GetBracketColor() const { return ToQColor(m_bracketColor); }
  55. QColor GetSelectedBracketColor() const { return ToQColor(m_selectedBracketColor); }
  56. QColor GetUnmatchedBracketColor() const { return ToQColor(m_unmatchedBracketColor); }
  57. QColor GetFoldingColor() const { return ToQColor(m_foldingColor); }
  58. QColor GetFoldingSelectedColor() const { return ToQColor(m_foldingCurrentColor); }
  59. QColor GetFoldingLineColor() const { return ToQColor(m_foldingLineColor); }
  60. QColor GetFindResultsHeaderColor() const { return ToQColor(m_findResultsHeaderColor); }
  61. QColor GetFindResultsFileColor() const { return ToQColor(m_findResultsFileColor); }
  62. QColor GetFindResultsMatchColor() const { return ToQColor(m_findResultsMatchColor); }
  63. QColor GetFindResultsLineHighlightColor() const { return ToQColor(m_findResultsLineHighlightColor); }
  64. const QFont& GetFont() const { return m_font; }
  65. int GetTabSize() const { return m_tabSize; }
  66. bool UseSpacesInsteadOfTabs() const { return m_useSpacesInsteadOfTabs; }
  67. void SetZoomPercent(float zoom);
  68. static void Reflect(AZ::ReflectContext* reflection);
  69. private:
  70. AZ::Vector3 m_textColor {
  71. 156.0f / 255.0f, 220.0f / 255.0f, 254.0f / 255.0f
  72. };
  73. AZ::Vector3 m_lineNumberColor {
  74. 200.0f / 255.0f, 200.0f / 255.0f, 200.0f / 255.0f
  75. };
  76. AZ::Vector3 m_textFocusedBackgroundColor {
  77. 31.0f / 255.0f, 31.0f / 255.0f, 31.0f / 255.0f
  78. };
  79. AZ::Vector3 m_textUnfocusedBackgroundColor {
  80. 31.0f / 255.0f, 31.0f / 255.0f, 31.0f / 255.0f
  81. };
  82. AZ::Vector3 m_textReadOnlyFocusedBackgroundColor {
  83. 60.0f / 255.0f, 60.0f / 255.0f, 60.0f / 255.0f
  84. };
  85. AZ::Vector3 m_textReadOnlyUnfocusedBackgroundColor {
  86. 60.0f / 255.0f, 60.0f / 255.0f, 60.0f / 255.0f
  87. };
  88. AZ::Vector3 m_textSelectedColor {
  89. 225.0f / 255.0f, 225.0f / 255.0f, 225.0f / 255.0f
  90. };
  91. AZ::Vector3 m_textSelectedBackgroundColor {
  92. 55.0f / 255.0f, 90.0f / 255.0f, 125.0f / 255.0f
  93. };
  94. AZ::Vector3 m_textWhitespaceColor{
  95. 100.0f / 255.0f, 100.0f / 255.0f, 100.0f / 255.0f
  96. };
  97. AZ::Vector3 m_breakpointFocusedBackgroundColor {
  98. 80.0f / 255.0f, 80.0f / 255.0f, 80.0f / 255.0f
  99. };
  100. AZ::Vector3 m_breakpointUnfocusedBackgroundColor {
  101. 80.0f / 255.0f, 80.0f / 255.0f, 80.0f / 255.0f
  102. };
  103. AZ::Vector3 m_foldingFocusedBackgroundColor {
  104. 70.0f / 255.0f, 70.0f / 255.0f, 70.0f / 255.0f
  105. };
  106. AZ::Vector3 m_foldingUnfocusedBackgroundColor {
  107. 70.0f / 255.0f, 70.0f / 255.0f, 70.0f / 255.0f
  108. };
  109. AZ::Vector3 m_currentIdentifierColor {
  110. 68.0f / 255.0f, 68.0f / 255.0f, 68.0f / 255.0f
  111. };
  112. AZ::Vector3 m_currentLineOutlineColor {
  113. 61.0f / 255.0f, 61.0f / 255.0f, 61.0f / 255.0f
  114. };
  115. AZ::Vector3 m_specialCharacterColor {
  116. 204.0f / 255.0f, 204.0f / 255.0f, 204.0f / 255.0f
  117. };
  118. AZ::Vector3 m_keywordColor {
  119. 213.0f / 255.0f, 134.0f / 255.0f, 192.0f / 255.0f
  120. };
  121. AZ::Vector3 m_specialKeywordColor {
  122. 63.0f / 255.0f, 156.0f / 255.0f, 214.0f / 255.0f
  123. };
  124. AZ::Vector3 m_commentColor {
  125. 106.0f / 255.0f, 153.0f / 255.0f, 85.0f / 255.0f
  126. };
  127. AZ::Vector3 m_stringLiteralColor {
  128. 206.0f / 255.0f, 145.0f / 255.0f, 117.0f / 255.0f
  129. };
  130. AZ::Vector3 m_numberColor {
  131. 181.0f / 255.0f, 203.0f / 255.0f, 164.0f / 255.0f
  132. };
  133. AZ::Vector3 m_libraryColor {
  134. 78.0f / 255.0f, 201.0f / 255.0f, 176.0f / 255.0f
  135. };
  136. AZ::Vector3 m_methodColor {
  137. 220.0f / 255.0f, 220.0f / 255.0f, 170.0f / 255.0f
  138. };
  139. AZ::Vector3 m_bracketColor {
  140. 255.0f / 255.0f, 215.0f / 255.0f, 0.0f / 255.0f
  141. };
  142. AZ::Vector3 m_selectedBracketColor {
  143. 219.0f / 255.0f, 29.0f / 255.0f, 133.0f / 255.0f
  144. };
  145. AZ::Vector3 m_unmatchedBracketColor {
  146. 219.0f / 255.0f, 29.0f / 255.0f, 133.0f / 255.0f
  147. };
  148. AZ::Vector3 m_foldingColor {
  149. 150.0f / 255.0f, 150.0f / 255.0f, 150.0f / 255.0f
  150. };
  151. AZ::Vector3 m_foldingCurrentColor {
  152. 240.0f / 255.0f, 240.0f / 255.0f, 240.0f / 255.0f
  153. };
  154. AZ::Vector3 m_foldingLineColor {
  155. 150.0f / 255.0f, 150.0f / 255.0f, 150.0f / 255.0f
  156. };
  157. AZ::Vector3 m_findResultsHeaderColor {
  158. 255.0f / 255.0f, 220.0f / 255.0f, 20.0f / 255.0f
  159. };
  160. AZ::Vector3 m_findResultsFileColor {
  161. 105.0f / 255.0f, 220.0f / 255.0f, 53.0f / 255.0f
  162. };
  163. AZ::Vector3 m_findResultsMatchColor {
  164. 255.0f / 255.0f, 220.0f / 255.0f, 20.0f / 255.0f
  165. };
  166. AZ::Vector3 m_findResultsLineHighlightColor {
  167. 160.0f / 255.0f, 160.0f / 255.0f, 164.0f / 255.0f
  168. };
  169. QFont m_font;
  170. AZStd::string m_fontFamily { "Consolas" };
  171. int m_fontSize {
  172. 14
  173. };
  174. // Number of spaces to make a tab
  175. int m_tabSize {
  176. 4
  177. };
  178. float m_zoomPercent = 100.f;
  179. bool m_useSpacesInsteadOfTabs = false;
  180. void OnColorChange();
  181. void OnFontChange();
  182. };
  183. class HighlightedWords
  184. : public AZ::EBusTraits
  185. {
  186. public:
  187. static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
  188. static const AZ::EBusHandlerPolicy HandlerPolicy = AZ:: EBusHandlerPolicy::Single;
  189. typedef AZ::EBus<HighlightedWords> Bus;
  190. typedef Bus::Handler Handler;
  191. typedef AZStd::unordered_set<AZStd::string> LUAKeywordsType;
  192. virtual const LUAKeywordsType* GetLUAKeywords() = 0;
  193. virtual const LUAKeywordsType* GetLUALibraryFunctions() = 0;
  194. };
  195. class HighlightedWordNotifications
  196. : public AZ::EBusTraits
  197. {
  198. public:
  199. static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
  200. typedef AZ::EBus<HighlightedWordNotifications> Bus;
  201. typedef Bus::Handler Handler;
  202. virtual void LUALibraryFunctionsUpdated() = 0;
  203. };
  204. }