From f91c7ded03bbf0bb3617bac4f4b9f9331add5b6f Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Fri, 6 Mar 2020 16:26:59 +0100 Subject: [PATCH] product icons more --- extensions/extension-editing/package.json | 6 +- extensions/vscode-colorize-tests/package.json | 7 + .../producticons/ElegantIcons.woff | Bin 0 -> 63664 bytes .../producticons/index.html | 3049 +++++++++++++++++ .../producticons/mit_license.txt | 21 + .../producticons/test-product-icon-theme.json | 36 + .../themes/browser/fileIconThemeData.ts | 2 +- .../themes/browser/productIconThemeData.ts | 2 +- .../themes/browser/workbenchThemeService.ts | 38 +- .../themes/common/themeExtensionPoints.ts | 55 +- 10 files changed, 3161 insertions(+), 55 deletions(-) create mode 100644 extensions/vscode-colorize-tests/producticons/ElegantIcons.woff create mode 100644 extensions/vscode-colorize-tests/producticons/index.html create mode 100644 extensions/vscode-colorize-tests/producticons/mit_license.txt create mode 100644 extensions/vscode-colorize-tests/producticons/test-product-icon-theme.json diff --git a/extensions/extension-editing/package.json b/extensions/extension-editing/package.json index fe4a7b44d2a..75d77925b0d 100644 --- a/extensions/extension-editing/package.json +++ b/extensions/extension-editing/package.json @@ -35,9 +35,13 @@ "url": "vscode://schemas/language-configuration" }, { - "fileMatch": "*icon-theme.json", + "fileMatch": ["*icon-theme.json", "!*product-icon-theme.json"], "url": "vscode://schemas/icon-theme" }, + { + "fileMatch": "*product-icon-theme.json", + "url": "vscode://schemas/product-icon-theme" + }, { "fileMatch": "*color-theme.json", "url": "vscode://schemas/color-theme" diff --git a/extensions/vscode-colorize-tests/package.json b/extensions/vscode-colorize-tests/package.json index d99e050d302..e2c15b2f67b 100644 --- a/extensions/vscode-colorize-tests/package.json +++ b/extensions/vscode-colorize-tests/package.json @@ -55,6 +55,13 @@ "fontStyle": "bold" } } + ], + "productIconThemes": [ + { + "id": "Test Product Icons", + "label": "The Test Product Icon Theme", + "path": "./producticons/test-product-icon-theme.json" + } ] } } diff --git a/extensions/vscode-colorize-tests/producticons/ElegantIcons.woff b/extensions/vscode-colorize-tests/producticons/ElegantIcons.woff new file mode 100644 index 0000000000000000000000000000000000000000..393305253e5fc01d3369b4cf2735b08929432f96 GIT binary patch literal 63664 zcmaf(b9Cllv%qWH_SSZ{-g0Z(wr#uJVvDV9+qU1@erwykz4!0?oi8VIGV?o=OeT3w zp2;Nc^5Ww1Dk}0IAkVcR@E{-{U~~o`px@j7XAuz>CjkKgg#iJ%O#uNTb#mbTm=G6N zkp%&{%l&r8`xXK-hs7`nQ8Dpv*7V}Teb`fv6c+ZsB6 zfZWr62UP|E0k^v=Y?rh!H8cSMc?|gWVg44*PpA?Ui*NYNYQJrgZ=rxd`P#Rzb@BLS zv)}gS_x@`*(^%-Xh92L?d-`8LsQ(pED+LfcLtE2t*7|Lqf1i85ZLh4VgT1rMcfN(+ z4B=ZyK)^vjJTeb_VSQA@mh2a0?I}n@(&7T*Niu|1>T9n;#A1S|_en^|SQ#M{Sy-bG zq5{@2TyibQBY99LVnCwJmP({bX?&iZ9YxEjqp(vk`}f$*Cr@>$cD6pO~u497uZH7 z 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 z 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 + + + + Your Font/Glyphs + + + + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+

Class Names

+
+ + +  arrow_up + + + +  arrow_down + + + +  arrow_left + + + +  arrow_right + + + +  arrow_left-up + + + +  arrow_right-up + + + +  arrow_right-down + + + +  arrow_left-down + + + +  arrow-up-down + + + +  arrow_up-down_alt + + + +  arrow_left-right_alt + + + +  arrow_left-right + + + +  arrow_expand_alt2 + + + +  arrow_expand_alt + + + +  arrow_condense + + + +  arrow_expand + + + +  arrow_move + + + +  arrow_carrot-up + + + +  arrow_carrot-down + + + +  arrow_carrot-left + + + +  arrow_carrot-right + + + +  arrow_carrot-2up + + + +  arrow_carrot-2down + + + +  arrow_carrot-2left + + + +  arrow_carrot-2right + + + +  arrow_carrot-up_alt2 + + + +  arrow_carrot-down_alt2 + + + +  arrow_carrot-left_alt2 + + + +  arrow_carrot-right_alt2 + + + +  arrow_carrot-2up_alt2 + + + +  arrow_carrot-2down_alt2 + + + +  arrow_carrot-2left_alt2 + + + +  arrow_carrot-2right_alt2 + + + +  arrow_triangle-up + + + +  arrow_triangle-down + + + +  arrow_triangle-left + + + +  arrow_triangle-right + + + +  arrow_triangle-up_alt2 + + + +  arrow_triangle-down_alt2 + + + +  arrow_triangle-left_alt2 + + + +  arrow_triangle-right_alt2 + + + +  arrow_back + + + +  icon_minus-06 + + + +  icon_plus + + + +  icon_close + + + +  icon_check + + + +  icon_minus_alt2 + + + +  icon_plus_alt2 + + + +  icon_close_alt2 + + + +  icon_check_alt2 + + + +  icon_zoom-out_alt + + + +  icon_zoom-in_alt + + + +  icon_search + + + +  icon_box-empty + + + +  icon_box-selected + + + +  icon_minus-box + + + +  icon_plus-box + + + +  icon_box-checked + + + +  icon_circle-empty + + + +  icon_circle-slelected + + + +  icon_stop_alt2 + + + +  icon_stop + + + +  icon_pause_alt2 + + + +  icon_pause + + + +  icon_menu + + + +  icon_menu-square_alt2 + + + +  icon_menu-circle_alt2 + + + +  icon_ul + + + +  icon_ol + + + +  icon_adjust-horiz + + + +  icon_adjust-vert + + + +  icon_document_alt + + + +  icon_documents_alt + + + +  icon_pencil + + + +  icon_pencil-edit_alt + + + +  icon_pencil-edit + + + +  icon_folder-alt + + + +  icon_folder-open_alt + + + +  icon_folder-add_alt + + + +  icon_info_alt + + + +  icon_error-oct_alt + + + +  icon_error-circle_alt + + + +  icon_error-triangle_alt + + + +  icon_question_alt2 + + + +  icon_question + + + +  icon_comment_alt + + + +  icon_chat_alt + + + +  icon_vol-mute_alt + + + +  icon_volume-low_alt + + + +  icon_volume-high_alt + + + +  icon_quotations + + + +  icon_quotations_alt2 + + + +  icon_clock_alt + + + +  icon_lock_alt + + + +  icon_lock-open_alt + + + +  icon_key_alt + + + +  icon_cloud_alt + + + +  icon_cloud-upload_alt + + + +  icon_cloud-download_alt + + + +  icon_image + + + +  icon_images + + + +  icon_lightbulb_alt + + + +  icon_gift_alt + + + +  icon_house_alt + + + +  icon_genius + + + +  icon_mobile + + + +  icon_tablet + + + +  icon_laptop + + + +  icon_desktop + + + +  icon_camera_alt + + + +  icon_mail_alt + + + +  icon_cone_alt + + + +  icon_ribbon_alt + + + +  icon_bag_alt + + + +  icon_creditcard + + + +  icon_cart_alt + + + +  icon_paperclip + + + +  icon_tag_alt + + + +  icon_tags_alt + + + +  icon_trash_alt + + + +  icon_cursor_alt + + + +  icon_mic_alt + + + +  icon_compass_alt + + + +  icon_pin_alt + + + +  icon_pushpin_alt + + + +  icon_map_alt + + + +  icon_drawer_alt + + + +  icon_toolbox_alt + + + +  icon_book_alt + + + +  icon_calendar + + + +  icon_film + + + +  icon_table + + + +  icon_contacts_alt + + + +  icon_headphones + + + +  icon_lifesaver + + + +  icon_piechart + + + +  icon_refresh + + + +  icon_link_alt + + + +  icon_link + + + +  icon_loading + + + +  icon_blocked + + + +  icon_archive_alt + + + +  icon_heart_alt + + +
+ + + +  icon_printer + + + +  icon_calulator + + + +  icon_building + + + +  icon_floppy + + + +  icon_drive + + + +  icon_search-2 + + + +  icon_id + + + +  icon_id-2 + + + +  icon_puzzle + + + +  icon_like + + + +  icon_dislike + + + +  icon_mug + + + +  icon_currency + + + +  icon_wallet + + + +  icon_pens + + + +  icon_easel + + + +  icon_flowchart + + + +  icon_datareport + + + +  icon_briefcase + + + +  icon_shield + + + +  icon_percent + + + +  icon_globe + + + +  icon_globe-2 + + + +  icon_target + + + +  icon_hourglass + + + +  icon_balance + + +
+ + + +  icon_star_alt + + + +  icon_star-half_alt + + + +  icon_star + + + +  icon_star-half + + + +  icon_tools + + + +  icon_tool + + + +  icon_cog + + + +  icon_cogs + + + +  arrow_up_alt + + + +  arrow_down_alt + + + +  arrow_left_alt + + + +  arrow_right_alt + + + +  arrow_left-up_alt + + + +  arrow_right-up_alt + + + +  arrow_right-down_alt + + + +  arrow_left-down_alt + + + +  arrow_condense_alt + + + +  arrow_expand_alt3 + + + +  arrow_carrot_up_alt + + + +  arrow_carrot-down_alt + + + +  arrow_carrot-left_alt + + + +  arrow_carrot-right_alt + + + +  arrow_carrot-2up_alt + + + +  arrow_carrot-2dwnn_alt + + + +  arrow_carrot-2left_alt + + + +  arrow_carrot-2right_alt + + + +  arrow_triangle-up_alt + + + +  arrow_triangle-down_alt + + + +  arrow_triangle-left_alt + + + +  arrow_triangle-right_alt + + + +  icon_minus_alt + + + +  icon_plus_alt + + + +  icon_close_alt + + + +  icon_check_alt + + + +  icon_zoom-out + + + +  icon_zoom-in + + + +  icon_stop_alt + + + +  icon_menu-square_alt + + + +  icon_menu-circle_alt + + + +  icon_document + + + +  icon_documents + + + +  icon_pencil_alt + + + +  icon_folder + + + +  icon_folder-open + + + +  icon_folder-add + + + +  icon_folder_upload + + + +  icon_folder_download + + + +  icon_info + + + +  icon_error-circle + + + +  icon_error-oct + + + +  icon_error-triangle + + + +  icon_question_alt + + + +  icon_comment + + + +  icon_chat + + + +  icon_vol-mute + + + +  icon_volume-low + + + +  icon_volume-high + + + +  icon_quotations_alt + + + +  icon_clock + + + +  icon_lock + + + +  icon_lock-open + + + +  icon_key + + + +  icon_cloud + + + +  icon_cloud-upload + + + +  icon_cloud-download + + + +  icon_lightbulb + + + +  icon_gift + + + +  icon_house + + + +  icon_camera + + + +  icon_mail + + + +  icon_cone + + + +  icon_ribbon + + + +  icon_bag + + + +  icon_cart + + + +  icon_tag + + + +  icon_tags + + + +  icon_trash + + + +  icon_cursor + + + +  icon_mic + + + +  icon_compass + + + +  icon_pin + + + +  icon_pushpin + + + +  icon_map + + + +  icon_drawer + + + +  icon_toolbox + + + +  icon_book + + + +  icon_contacts + + + +  icon_archive + + + +  icon_heart + + + +  icon_profile + + + +  icon_group + + + +  icon_grid-2x2 + + + +  icon_grid-3x3 + + + +  icon_music + + + +  icon_pause_alt + + + +  icon_phone + + + +  icon_upload + + + +  icon_download + + + +  icon_rook + + +
+ + + +  icon_printer-alt + + + +  icon_calculator_alt + + + +  icon_building_alt + + + +  icon_floppy_alt + + + +  icon_drive_alt + + + +  icon_search_alt + + + +  icon_id_alt + + + +  icon_id-2_alt + + + +  icon_puzzle_alt + + + +  icon_like_alt + + + +  icon_dislike_alt + + + +  icon_mug_alt + + + +  icon_currency_alt + + + +  icon_wallet_alt + + + +  icon_pens_alt + + + +  icon_easel_alt + + + +  icon_flowchart_alt + + + +  icon_datareport_alt + + + +  icon_briefcase_alt + + + +  icon_shield_alt + + + +  icon_percent_alt + + + +  icon_globe_alt + + + +  icon_clipboard + + +
+ + + +  social_facebook + + + +  social_twitter + + + +  social_pinterest + + + +  social_googleplus + + + +  social_tumblr + + + +  social_tumbleupon + + + +  social_wordpress + + + +  social_instagram + + + +  social_dribbble + + + +  social_vimeo + + + +  social_linkedin + + + +  social_rss + + + +  social_deviantart + + + +  social_share + + + +  social_myspace + + + +  social_skype + + + +  social_youtube + + + +  social_picassa + + + +  social_googledrive + + + +  social_flickr + + + +  social_blogger + + + +  social_spotify + + + +  social_delicious + + + +  social_facebook_circle + + + +  social_twitter_circle + + + +  social_pinterest_circle + + + +  social_googleplus_circle + + + +  social_tumblr_circle + + + +  social_stumbleupon_circle + + + +  social_wordpress_circle + + + +  social_instagram_circle + + + +  social_dribbble_circle + + + +  social_vimeo_circle + + + +  social_linkedin_circle + + + +  social_rss_circle + + + +  social_deviantart_circle + + + +  social_share_circle + + + +  social_myspace_circle + + + +  social_skype_circle + + + +  social_youtube_circle + + + +  social_picassa_circle + + + +  social_googledrive_alt2 + + + +  social_flickr_circle + + + +  social_blogger_circle + + + +  social_spotify_circle + + + +  social_delicious_circle + + + +  social_facebook_square + + + +  social_twitter_square + + + +  social_pinterest_square + + + +  social_googleplus_square + + + +  social_tumblr_square + + + +  social_stumbleupon_square + + + +  social_wordpress_square + + + +  social_instagram_square + + + +  social_dribbble_square + + + +  social_vimeo_square + + + +  social_linkedin_square + + + +  social_rss_square + + + +  social_deviantart_square + + + +  social_share_square + + + +  social_myspace_square + + + +  social_skype_square + + + +  social_youtube_square + + + +  social_picassa_square + + + +  social_googledrive_square + + + +  social_flickr_square + + + +  social_blogger_square + + + +  social_spotify_square + + + +  social_delicious_square + +
+ +
+ + + + diff --git a/extensions/vscode-colorize-tests/producticons/mit_license.txt b/extensions/vscode-colorize-tests/producticons/mit_license.txt new file mode 100644 index 00000000000..effefee5f0c --- /dev/null +++ b/extensions/vscode-colorize-tests/producticons/mit_license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) <2013> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/extensions/vscode-colorize-tests/producticons/test-product-icon-theme.json b/extensions/vscode-colorize-tests/producticons/test-product-icon-theme.json new file mode 100644 index 00000000000..6c908a223e2 --- /dev/null +++ b/extensions/vscode-colorize-tests/producticons/test-product-icon-theme.json @@ -0,0 +1,36 @@ +{ + // ElegantIcons from https://www.elegantthemes.com/icons/elegant_font.zip + "fonts": [ + { + "id": "elegant", + "src": [ + { + "path": "./ElegantIcons.woff", + "format": "woff" + } + ], + "weight": "normal", + "style": "normal", + } + ], + "iconDefinitions": { + "chevron-down": { + "fontCharacter": "\\43", + }, + "chevron-right": { + "fontCharacter": "\\45" + }, + "error": { + "fontCharacter": "\\e062" + }, + "warning": { + "fontCharacter": "\\e063" + }, + "settings-gear": { + "fontCharacter": "\\e035" + }, + "settings-files": { + "fontCharacter": "\\e006;" + } + } +} diff --git a/src/vs/workbench/services/themes/browser/fileIconThemeData.ts b/src/vs/workbench/services/themes/browser/fileIconThemeData.ts index 3cd45716954..1044c382e9b 100644 --- a/src/vs/workbench/services/themes/browser/fileIconThemeData.ts +++ b/src/vs/workbench/services/themes/browser/fileIconThemeData.ts @@ -81,7 +81,7 @@ export class FileIconThemeData implements IWorkbenchFileIconTheme { private static _noIconTheme: FileIconThemeData | null = null; - static noIconTheme(): FileIconThemeData { + static get noIconTheme(): FileIconThemeData { let themeData = FileIconThemeData._noIconTheme; if (!themeData) { themeData = FileIconThemeData._noIconTheme = new FileIconThemeData('', '', null); diff --git a/src/vs/workbench/services/themes/browser/productIconThemeData.ts b/src/vs/workbench/services/themes/browser/productIconThemeData.ts index 21d2a44033a..8b200a513cf 100644 --- a/src/vs/workbench/services/themes/browser/productIconThemeData.ts +++ b/src/vs/workbench/services/themes/browser/productIconThemeData.ts @@ -83,7 +83,7 @@ export class ProductIconThemeData implements IWorkbenchProductIconTheme { private static _defaultProductIconTheme: ProductIconThemeData | null = null; - static defaultTheme(): ProductIconThemeData { + static get defaultTheme(): ProductIconThemeData { let themeData = ProductIconThemeData._defaultProductIconTheme; if (!themeData) { themeData = ProductIconThemeData._defaultProductIconTheme = new ProductIconThemeData(DEFAULT_PRODUCT_ICON_THEME_ID, nls.localize('defaultTheme', 'Default theme'), DEFAULT_PRODUCT_ICON_THEME_SETTING_VALUE); diff --git a/src/vs/workbench/services/themes/browser/workbenchThemeService.ts b/src/vs/workbench/services/themes/browser/workbenchThemeService.ts index 9f5bb2c1ba2..e9ee725d3c7 100644 --- a/src/vs/workbench/services/themes/browser/workbenchThemeService.ts +++ b/src/vs/workbench/services/themes/browser/workbenchThemeService.ts @@ -29,7 +29,7 @@ import { getRemoteAuthority } from 'vs/platform/remote/common/remoteHosts'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { IExtensionResourceLoaderService } from 'vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader'; import { ThemeRegistry, registerColorThemeExtensionPoint, registerFileIconThemeExtensionPoint, registerProductIconThemeExtensionPoint } from 'vs/workbench/services/themes/common/themeExtensionPoints'; -import { updateColorThemeConfigurationSchemas, updateFileIconThemeConfigurationSchemas, ThemeConfiguration, updateProductIconThemeConfigurationSchemas } from 'vs/workbench/services/themes/common/themeConfiguration'; +import { updateColorThemeConfigurationSchemas, updateFileIconThemeConfigurationSchemas, ThemeConfiguration, updateProductIconThemeConfigurationSchemas, DEFAULT_PRODUCT_ICON_THEME_SETTING_VALUE } from 'vs/workbench/services/themes/common/themeConfiguration'; import { ProductIconThemeData, DEFAULT_PRODUCT_ICON_THEME_ID } from 'vs/workbench/services/themes/browser/productIconThemeData'; import { registerProductIconThemeSchemas } from 'vs/workbench/services/themes/common/productIconThemeSchema'; @@ -108,12 +108,12 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { this.currentColorTheme = ColorThemeData.createUnloadedTheme(''); this.fileIconThemeWatcher = new ThemeFileWatcher(fileService, environmentService, this.reloadCurrentFileIconTheme.bind(this)); - this.fileIconThemeRegistry = new ThemeRegistry(extensionService, fileIconThemesExtPoint, FileIconThemeData.fromExtensionTheme, true); + this.fileIconThemeRegistry = new ThemeRegistry(extensionService, fileIconThemesExtPoint, FileIconThemeData.fromExtensionTheme, true, FileIconThemeData.noIconTheme); this.onFileIconThemeChange = new Emitter(); this.currentFileIconTheme = FileIconThemeData.createUnloadedTheme(''); this.productIconThemeWatcher = new ThemeFileWatcher(fileService, environmentService, this.reloadCurrentProductIconTheme.bind(this)); - this.productIconThemeRegistry = new ThemeRegistry(extensionService, productIconThemesExtPoint, ProductIconThemeData.fromExtensionTheme, true); + this.productIconThemeRegistry = new ThemeRegistry(extensionService, productIconThemesExtPoint, ProductIconThemeData.fromExtensionTheme, true, ProductIconThemeData.defaultTheme); this.onProductIconThemeChange = new Emitter(); this.currentProductIconTheme = ProductIconThemeData.createUnloadedTheme(''); @@ -187,7 +187,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { if (!await this.restoreFileIconTheme()) { // checks if theme from settings exists and is set // restore theme - if (this.currentFileIconTheme.id === DEFAULT_FILE_ICON_THEME_ID && !types.isUndefined(prevFileIconId) && await this.findFileIconThemeById(prevFileIconId)) { + if (this.currentFileIconTheme.id === DEFAULT_FILE_ICON_THEME_ID && !types.isUndefined(prevFileIconId) && await this.fileIconThemeRegistry.findThemeById(prevFileIconId)) { this.setFileIconTheme(prevFileIconId, 'auto'); prevFileIconId = undefined; } else { @@ -206,7 +206,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { if (await this.restoreProductIconTheme()) { // checks if theme from settings exists and is set // restore theme - if (this.currentProductIconTheme.id === DEFAULT_PRODUCT_ICON_THEME_ID && !types.isUndefined(prevProductIconId) && await this.findProductIconThemeById(prevProductIconId)) { + if (this.currentProductIconTheme.id === DEFAULT_PRODUCT_ICON_THEME_ID && !types.isUndefined(prevProductIconId) && await this.productIconThemeRegistry.findThemeById(prevProductIconId)) { this.setProductIconTheme(prevProductIconId, 'auto'); prevProductIconId = undefined; } else { @@ -256,7 +256,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { if (devThemes.length) { return this.setFileIconTheme(devThemes[0].id, ConfigurationTarget.MEMORY); } - const theme = await this.findFileIconThemeBySettingsId(this.settings.fileIconTheme); + const theme = await this.fileIconThemeRegistry.findThemeBySettingsId(this.settings.fileIconTheme); return this.setFileIconTheme(theme ? theme.id : DEFAULT_FILE_ICON_THEME_ID, undefined); }; @@ -265,7 +265,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { if (devThemes.length) { return this.setProductIconTheme(devThemes[0].id, ConfigurationTarget.MEMORY); } - const theme = await this.findProductIconThemeBySettingsId(this.settings.productIconTheme); + const theme = await this.productIconThemeRegistry.findThemeBySettingsId(this.settings.productIconTheme); return this.setProductIconTheme(theme ? theme.id : DEFAULT_PRODUCT_ICON_THEME_ID, undefined); }; @@ -514,7 +514,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { return this.currentFileIconTheme; } - const newThemeData = (await this.findFileIconThemeById(iconTheme)) || FileIconThemeData.noIconTheme(); + const newThemeData = (await this.fileIconThemeRegistry.findThemeById(iconTheme)) || FileIconThemeData.noIconTheme; await newThemeData.ensureLoaded(this.fileService); _applyRules(newThemeData.styleSheetContent!, fileIconThemeRulesClassName); @@ -529,14 +529,6 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { return newThemeData; } - private async findFileIconThemeById(id: string): Promise { - return id.length === 0 ? FileIconThemeData.noIconTheme() : this.fileIconThemeRegistry.findThemeById(id); - } - - private async findFileIconThemeBySettingsId(settingsId: string | null): Promise { - return !settingsId ? FileIconThemeData.noIconTheme() : this.fileIconThemeRegistry.findThemeBySettingsId(settingsId); - } - private async reloadCurrentFileIconTheme() { await this.currentFileIconTheme.reload(this.fileService); _applyRules(this.currentFileIconTheme.styleSheetContent!, fileIconThemeRulesClassName); @@ -545,7 +537,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { public async restoreFileIconTheme(): Promise { const settingId = this.settings.fileIconTheme; - const theme = await this.findFileIconThemeBySettingsId(settingId); + const theme = await this.fileIconThemeRegistry.findThemeBySettingsId(settingId); if (theme) { if (settingId !== this.currentFileIconTheme.settingsId) { await this.setFileIconTheme(theme.id, undefined); @@ -588,7 +580,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { return this.currentProductIconTheme; } - const newThemeData = await this.findProductIconThemeById(iconTheme) || ProductIconThemeData.defaultTheme(); + const newThemeData = await this.productIconThemeRegistry.findThemeById(iconTheme) || ProductIconThemeData.defaultTheme; await newThemeData.ensureLoaded(this.fileService); _applyRules(newThemeData.styleSheetContent!, fileIconThemeRulesClassName); @@ -603,14 +595,6 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { return newThemeData; } - private async findProductIconThemeById(id: string): Promise { - return id.length === 0 ? ProductIconThemeData.defaultTheme() : this.productIconThemeRegistry.findThemeById(id); - } - - private async findProductIconThemeBySettingsId(settingsId: string | null): Promise { - return !settingsId ? ProductIconThemeData.defaultTheme() : this.productIconThemeRegistry.findThemeBySettingsId(settingsId); - } - private async reloadCurrentProductIconTheme() { await this.currentProductIconTheme.reload(this.fileService); _applyRules(this.currentProductIconTheme.styleSheetContent!, productIconThemeRulesClassName); @@ -619,7 +603,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService { public async restoreProductIconTheme(): Promise { const settingId = this.settings.productIconTheme; - const theme = await this.findProductIconThemeBySettingsId(settingId); + const theme = await this.productIconThemeRegistry.findThemeBySettingsId(settingId); if (theme) { if (settingId !== this.currentProductIconTheme.settingsId) { await this.setProductIconTheme(theme.id, undefined); diff --git a/src/vs/workbench/services/themes/common/themeExtensionPoints.ts b/src/vs/workbench/services/themes/common/themeExtensionPoints.ts index 026b48b2547..2d01c6b95ea 100644 --- a/src/vs/workbench/services/themes/common/themeExtensionPoints.ts +++ b/src/vs/workbench/services/themes/common/themeExtensionPoints.ts @@ -126,7 +126,8 @@ export class ThemeRegistry { @IExtensionService private readonly extensionService: IExtensionService, private readonly themesExtPoint: IExtensionPoint, private create: (theme: IThemeExtensionPoint, themeLocation: URI, extensionData: ExtensionData) => T, - private idRequired = false + private idRequired = false, + private builtInTheme: T | undefined = undefined ) { this.extensionThemes = []; this.initialize(); @@ -198,34 +199,38 @@ export class ThemeRegistry { }); } - public findThemeById(themeId: string, defaultId?: string): Promise { - return this.getThemes().then(allThemes => { - let defaultTheme: T | undefined = undefined; - for (let t of allThemes) { - if (t.id === themeId) { - return t; - } - if (t.id === defaultId) { - defaultTheme = t; - } + public async findThemeById(themeId: string, defaultId?: string): Promise { + if (this.builtInTheme && this.builtInTheme.id === themeId) { + return this.builtInTheme; + } + const allThemes = await this.getThemes(); + let defaultTheme: T | undefined = undefined; + for (let t of allThemes) { + if (t.id === themeId) { + return t; } - return defaultTheme; - }); + if (t.id === defaultId) { + defaultTheme = t; + } + } + return defaultTheme; } - public findThemeBySettingsId(settingsId: string | null, defaultId?: string): Promise { - return this.getThemes().then(allThemes => { - let defaultTheme: T | undefined = undefined; - for (let t of allThemes) { - if (t.settingsId === settingsId) { - return t; - } - if (t.id === defaultId) { - defaultTheme = t; - } + public async findThemeBySettingsId(settingsId: string | null, defaultId?: string): Promise { + if (this.builtInTheme && this.builtInTheme.settingsId === settingsId) { + return this.builtInTheme; + } + const allThemes = await this.getThemes(); + let defaultTheme: T | undefined = undefined; + for (let t of allThemes) { + if (t.settingsId === settingsId) { + return t; } - return defaultTheme; - }); + if (t.id === defaultId) { + defaultTheme = t; + } + } + return defaultTheme; } public findThemeByExtensionLocation(extLocation: URI | undefined): Promise {