From d12d87b3d38f2028d8962d683e7bc730e467202f Mon Sep 17 00:00:00 2001 From: Miguel Castillo Date: Wed, 23 Apr 2014 21:04:23 -0400 Subject: [PATCH 01/96] Initial commit to integrate themes into brackets core --- src/brackets.js | 1 + src/command/Commands.js | 1 + src/command/DefaultMenus.js | 2 + src/themes/CodeMirrorAddons.js | 37 ++++ src/themes/DefaultSettings.js | 24 +++ src/themes/FontCommandsManager.js | 42 ++++ src/themes/FontSettings.js | 62 ++++++ src/themes/Init.js | 29 +++ src/themes/LICENSE | 21 ++ src/themes/MenuCommands.js | 15 ++ src/themes/README.md | 87 ++++++++ src/themes/ScrollbarsApply.js | 52 +++++ src/themes/Settings.js | 90 ++++++++ src/themes/String.js | 16 ++ src/themes/Theme.js | 147 +++++++++++++ src/themes/ThemeApply.js | 32 +++ src/themes/ThemeFiles.js | 91 ++++++++ src/themes/ThemeManager.js | 254 +++++++++++++++++++++++ src/themes/package.json | 16 ++ src/themes/reset.css | 205 ++++++++++++++++++ src/themes/theme/NightLion.css | 166 +++++++++++++++ src/themes/theme/aquaman.css | 225 ++++++++++++++++++++ src/themes/theme/default.css | 3 + src/themes/theme/dracula.css | 98 +++++++++ src/themes/theme/hammsidian.css | 125 +++++++++++ src/themes/theme/light-table.css | 124 +++++++++++ src/themes/theme/monokai-dark-soda.css | 55 +++++ src/themes/theme/nando.css | 53 +++++ src/themes/theme/obsidian.css | 80 +++++++ src/themes/theme/pixie.css | 265 ++++++++++++++++++++++++ src/themes/theme/railscasts.css | 73 +++++++ src/themes/theme/selenitic.css | 179 ++++++++++++++++ src/themes/theme/visual-studio-2012.css | 247 ++++++++++++++++++++++ src/themes/theme/visual-studio-ex.css | 113 ++++++++++ src/themes/theme/visual-studio.css | 72 +++++++ src/themes/theme/zamiere.css | 120 +++++++++++ src/themes/views/general.html | 45 ++++ src/themes/views/settings.css | 17 ++ src/themes/views/settings.html | 20 ++ src/themes/views/settings.js | 82 ++++++++ 40 files changed, 3386 insertions(+) create mode 100644 src/themes/CodeMirrorAddons.js create mode 100644 src/themes/DefaultSettings.js create mode 100644 src/themes/FontCommandsManager.js create mode 100644 src/themes/FontSettings.js create mode 100644 src/themes/Init.js create mode 100644 src/themes/LICENSE create mode 100644 src/themes/MenuCommands.js create mode 100644 src/themes/README.md create mode 100644 src/themes/ScrollbarsApply.js create mode 100644 src/themes/Settings.js create mode 100644 src/themes/String.js create mode 100644 src/themes/Theme.js create mode 100644 src/themes/ThemeApply.js create mode 100644 src/themes/ThemeFiles.js create mode 100644 src/themes/ThemeManager.js create mode 100644 src/themes/package.json create mode 100644 src/themes/reset.css create mode 100644 src/themes/theme/NightLion.css create mode 100644 src/themes/theme/aquaman.css create mode 100644 src/themes/theme/default.css create mode 100644 src/themes/theme/dracula.css create mode 100644 src/themes/theme/hammsidian.css create mode 100644 src/themes/theme/light-table.css create mode 100644 src/themes/theme/monokai-dark-soda.css create mode 100644 src/themes/theme/nando.css create mode 100644 src/themes/theme/obsidian.css create mode 100644 src/themes/theme/pixie.css create mode 100644 src/themes/theme/railscasts.css create mode 100644 src/themes/theme/selenitic.css create mode 100644 src/themes/theme/visual-studio-2012.css create mode 100644 src/themes/theme/visual-studio-ex.css create mode 100644 src/themes/theme/visual-studio.css create mode 100644 src/themes/theme/zamiere.css create mode 100644 src/themes/views/general.html create mode 100644 src/themes/views/settings.css create mode 100644 src/themes/views/settings.html create mode 100644 src/themes/views/settings.js diff --git a/src/brackets.js b/src/brackets.js index 05a3f148fa5..a9eb72d6de3 100644 --- a/src/brackets.js +++ b/src/brackets.js @@ -102,6 +102,7 @@ define(function (require, exports, module) { NativeApp = require("utils/NativeApp"), DeprecationWarning = require("utils/DeprecationWarning"), ViewCommandHandlers = require("view/ViewCommandHandlers"), + ThemeManager = require("themes/ThemeManager"), _ = require("thirdparty/lodash"); // DEPRECATED: In future we want to remove the global CodeMirror, but for now we diff --git a/src/command/Commands.js b/src/command/Commands.js index 9dbd356269a..05369553148 100644 --- a/src/command/Commands.js +++ b/src/command/Commands.js @@ -109,6 +109,7 @@ define(function (require, exports, module) { exports.SORT_WORKINGSET_BY_NAME = "view.sortWorkingSetByName"; // WorkingSetSort.js _handleSortWorkingSetByName() exports.SORT_WORKINGSET_BY_TYPE = "view.sortWorkingSetByType"; // WorkingSetSort.js _handleSortWorkingSetByType() exports.SORT_WORKINGSET_AUTO = "view.sortWorkingSetAuto"; // WorkingSetSort.js _handleAutomaticSort() + exports.THEMES = "view.themes"; // themes // NAVIGATE exports.NAVIGATE_NEXT_DOC = "navigate.nextDoc"; // DocumentCommandHandlers.js handleGoNextDoc() diff --git a/src/command/DefaultMenus.js b/src/command/DefaultMenus.js index 56ff64834f4..e11faf045a1 100644 --- a/src/command/DefaultMenus.js +++ b/src/command/DefaultMenus.js @@ -111,6 +111,8 @@ define(function (require, exports, module) { * View menu */ menu = Menus.addMenu(Strings.VIEW_MENU, Menus.AppMenuBar.VIEW_MENU); + menu.addMenuItem(Commands.THEMES); + menu.addMenuDivider(); menu.addMenuItem(Commands.VIEW_HIDE_SIDEBAR); menu.addMenuDivider(); menu.addMenuItem(Commands.VIEW_INCREASE_FONT_SIZE); diff --git a/src/themes/CodeMirrorAddons.js b/src/themes/CodeMirrorAddons.js new file mode 100644 index 00000000000..69f1558732e --- /dev/null +++ b/src/themes/CodeMirrorAddons.js @@ -0,0 +1,37 @@ +/** + * Brackets Themes Copyright (c) 2014 Miguel Castillo. + * + * Licensed under MIT + */ + + +define(function () { + "use strict"; + + var CodeMirror = require("thirdparty/CodeMirror2/lib/codemirror"); + + function initAddons() { + // Set some default value for codemirror... + CodeMirror.defaults.highlightSelectionMatches = true; + CodeMirror.defaults.styleSelectedText = true; + } + + function init() { + var deferred = $.Deferred(); + + /** + * This is where is all starts to load up... + */ + require([ + "thirdparty/CodeMirror2/addon/selection/mark-selection", + "thirdparty/CodeMirror2/addon/search/match-highlighter" + ], deferred.resolve); + + return deferred.done(initAddons).promise(); + } + + return { + ready: init() + }; +}); + diff --git a/src/themes/DefaultSettings.js b/src/themes/DefaultSettings.js new file mode 100644 index 00000000000..661736bcf6a --- /dev/null +++ b/src/themes/DefaultSettings.js @@ -0,0 +1,24 @@ +/** + * Brackets Themes Copyright (c) 2014 Miguel Castillo. + * + * Licensed under MIT + */ + + +define(function(require) { + var FileUtils = require("file/FileUtils"); + var cm_path = FileUtils.getNativeBracketsDirectoryPath() + "/thirdparty/CodeMirror2"; + + return { + "fontSize": 12, + "lineHeight": '1.3em', + "fontType": "'SourceCodePro-Medium', MS ゴシック, 'MS Gothic', monospace", + "customScrollbars": true, + "theme": ["default"], + "paths": [ + {path:require.toUrl("./") + "../../themes"}, + {path:require.toUrl("./theme/")}, + {path:cm_path + "/theme"} + ] + }; +}); diff --git a/src/themes/FontCommandsManager.js b/src/themes/FontCommandsManager.js new file mode 100644 index 00000000000..2e4c0d91152 --- /dev/null +++ b/src/themes/FontCommandsManager.js @@ -0,0 +1,42 @@ +/** + * Brackets Themes Copyright (c) 2014 Miguel Castillo. + * @author Brad Gearon + * + * Licensed under MIT + */ + + +define(function (require) { + "use strict"; + + var Settings = require("themes/Settings"), + DefaultSettings = require("themes/DefaultSettings"), + ViewCommandHandlers = require("view/ViewCommandHandlers"), + PreferencesManager = require("preferences/PreferencesManager"); + + function ViewCommandsManager () { + $(ViewCommandHandlers).on("fontSizeChange", updateThemeFontSize); + $(Settings).on("change:fontSize", updateBracketsFontSize); + updateBracketsFontSize(); + } + + function updateThemeFontSize (evt, adjustment, fontSize /*, lineHeight*/) { + Settings.setValue("fontSize", fontSize); + } + + function updateBracketsFontSize() { + var fontSize = Settings.getValue("fontSize"), + fontSizeNumeric = Number(fontSize.replace(/px|em/, "")), + fontSizeOffset = fontSizeNumeric - DefaultSettings.fontSize; + + if(!isNaN(fontSizeOffset)) { + PreferencesManager.setViewState("fontSizeAdjustment", fontSizeOffset); + PreferencesManager.setViewState("fontSizeStyle", fontSize); + } + } + + // Let's make sure we use Themes fonts by default + return { + init: ViewCommandsManager + }; +}); diff --git a/src/themes/FontSettings.js b/src/themes/FontSettings.js new file mode 100644 index 00000000000..358927c1077 --- /dev/null +++ b/src/themes/FontSettings.js @@ -0,0 +1,62 @@ +/** + * Brackets Themes Copyright (c) 2014 Miguel Castillo. + * + * Licensed under MIT + */ + + +define(function () { + "use strict"; + + var $lineHeight = $("