From 73c5ea292114372e10cf1e50300b59912e972799 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 12 Dec 2017 01:45:01 +0400 Subject: [PATCH 1/4] better approach for handling retina icons --- node_modules/architect-build/build.js | 40 ++++++++++++++++-- package.json | 4 +- plugins/c9.ide.ace.statusbar/statusbar.xml | 2 +- .../images/{splits.png => splits@1x.png} | Bin ..._flat_dark.png => splits_flat_dark@1x.png} | Bin ...lat_light.png => splits_flat_light@1x.png} | Bin ...ed-states.png => collab-led-states@1x.png} | Bin ...ng => collab-led-states_flat_light@1x.png} | Bin .../{trash-icon.png => trash-icon@1x.png} | Bin .../{bk-close-btn.png => bk-close-btn@1x.png} | Bin ...close_tab_btn.png => close_tab_btn@1x.png} | Bin .../images/{pause.png => pause@1x.png} | Bin ...flat_light.png => pause_flat_light@1x.png} | Bin .../images/{play.png => play@1x.png} | Bin ..._flat_light.png => play_flat_light@1x.png} | Bin ...t_light.png => scrubber_flat_light@1x.png} | Bin ...per_buttons.png => stepper_buttons@1x.png} | Bin ....png => stepper_buttons_flat_light@1x.png} | Bin plugins/c9.ide.console/style.css | 9 +--- plugins/c9.ide.find.replace/findreplace.css | 4 +- ...ft_search.png => arrow_left_search@1x.png} | Bin ...ng => arrow_left_search_flat_light@1x.png} | Bin ...t_search.png => arrow_right_search@1x.png} | Bin ...g => arrow_right_search_flat_light@1x.png} | Bin .../images/{event.png => event@1x.png} | Bin ...flat_light.png => event_flat_light@1x.png} | Bin .../images/{method2.png => method2@1x.png} | Bin ...at_light.png => method2_flat_light@1x.png} | Bin .../images/{method.png => method@1x.png} | Bin ...lat_light.png => method_flat_light@1x.png} | Bin .../images/{package.png => package@1x.png} | Bin ...at_light.png => package_flat_light@1x.png} | Bin .../{property2.png => property2@1x.png} | Bin ..._light.png => property2_flat_light@1x.png} | Bin .../images/{property.png => property@1x.png} | Bin ...t_light.png => property_flat_light@1x.png} | Bin ...mall.png => tree_close_arrow_small@1x.png} | Bin ...t_light.png => unknown2_flat_light@1x.png} | Bin ...at_light.png => unknown_flat_light@1x.png} | Bin .../icons/{bug.png => bug@1x.png} | Bin ...bug_flat_dark.png => bug_flat_dark@1x.png} | Bin ...g_flat_light.png => bug_flat_light@1x.png} | Bin ...close_btn.png => console_close_btn@1x.png} | Bin ...dark.png => console_close_btn_dark@1x.png} | Bin .../{brkp_obj.gif => brkp_obj@1x.gif} | Bin .../{brkp_obj.png => brkp_obj@1x.png} | Bin ...ondition.png => brkp_obj_condition@1x.png} | Bin ...png => brkp_obj_condition_disabled@1x.png} | Bin ..._line.png => brkp_obj_current_line@1x.png} | Bin ...=> brkp_obj_current_line_condition@1x.png} | Bin ....png => brkp_obj_current_line_dark@1x.png} | Bin ...brkp_obj_dark.png => brkp_obj_dark@1x.png} | Bin ..._disabled.png => brkp_obj_disabled@1x.png} | Bin ...rkp_obj_disabled_current_line_dark@1x.png} | Bin ...dark.png => brkp_obj_disabled_dark@1x.png} | Bin ...brkp_obj_warn.png => brkp_obj_warn@1x.png} | Bin ...arn_dark.png => brkp_obj_warn_dark@1x.png} | Bin ...disabled.gif => brkpd_obj_disabled@1x.gif} | Bin ...line_dark.png => current_line_dark@1x.png} | Bin ...ble_obj.gif => genericvariable_obj@1x.gif} | Bin ... => genericvariable_obj_flat_light@1x.png} | Bin .../{stack_co.png => stack_co@1x.png} | Bin ...ption_break.png => exception_break@1x.png} | Bin ...k.png => exception_break_flat_dark@1x.png} | Bin ....png => exception_break_flat_light@1x.png} | Bin ...ad-spinner-dark-unfocus_flat_light@1x.gif} | Bin ...e-load-spinner-selected_flat_light@1x.gif} | Bin ... file-tree-load-spinner_flat_light@1x.gif} | Bin .../icons/{folder.png => folder@1x.png} | Bin ...ernative.png => folder_alternative@1x.png} | Bin ..._flat_dark.png => folder_flat_dark@1x.png} | Bin ...lat_light.png => folder_flat_light@1x.png} | Bin .../{folder_light.png => folder_light@1x.png} | Bin .../icons/{pause.png => pause@1x.png} | Bin ...e_flat_dark.png => pause_flat_dark@1x.png} | Bin ...flat_light.png => pause_flat_light@1x.png} | Bin .../icons/{play.png => play@1x.png} | Bin ...ay_flat_dark.png => play_flat_dark@1x.png} | Bin ..._flat_light.png => play_flat_light@1x.png} | Bin .../icons/{pref-ico.png => pref-ico@1x.png} | Bin ...lat_dark.png => pref-ico_flat_dark@1x.png} | Bin ...t_light.png => pref-ico_flat_light@1x.png} | Bin ...akpoints.png => remove_breakpoints@1x.png} | Bin ...ng => remove_breakpoints_flat_dark@1x.png} | Bin ...g => remove_breakpoints_flat_light@1x.png} | Bin .../{restart-icon.png => restart-icon@1x.png} | Bin ...ght.png => restart-icon_flat_light@1x.png} | Bin .../icons/{run.png => run@1x.png} | Bin ...run_flat_dark.png => run_flat_dark@1x.png} | Bin ...n_flat_light.png => run_flat_light@1x.png} | Bin .../icons/{scripts.png => scripts@1x.png} | Bin ...at_light.png => scripts_flat_light@1x.png} | Bin ...light.png => search-ico_flat_light@1x.png} | Bin .../icons/{step.png => step@1x.png} | Bin ...ep_flat_dark.png => step_flat_dark@1x.png} | Bin ..._flat_light.png => step_flat_light@1x.png} | Bin .../icons/{stepback.png => stepback@1x.png} | Bin ...lat_dark.png => stepback_flat_dark@1x.png} | Bin ...t_light.png => stepback_flat_light@1x.png} | Bin .../icons/{stepinto.png => stepinto@1x.png} | Bin ...lat_dark.png => stepinto_flat_dark@1x.png} | Bin ...t_light.png => stepinto_flat_light@1x.png} | Bin .../icons/{stop.png => stop@1x.png} | Bin ..._flat_light.png => stop_flat_light@1x.png} | Bin ...g => toggle_breakpoints1_flat_dark@1x.png} | Bin ... => toggle_breakpoints1_flat_light@1x.png} | Bin ...points2.png => toggle_breakpoints2@1x.png} | Bin ...g => toggle_breakpoints2_flat_dark@1x.png} | Bin ... => toggle_breakpoints2_flat_light@1x.png} | Bin ...e_error_dark.png => ace_error_dark@1x.png} | Bin ..._light.png => ace_error_flat_light@1x.png} | Bin ...error_light.png => ace_error_light@1x.png} | Bin ...rning_dark.png => ace_warning_dark@1x.png} | Bin ...ight.png => ace_warning_flat_light@1x.png} | Bin ...ng => ace_warning_light_flat_light@1x.png} | Bin ...w_down_grey.png => arrow_down_grey@1x.png} | Bin .../{bk-close-btn.png => bk-close-btn@1x.png} | Bin .../images/{btnclose.gif => btnclose@1x.gif} | Bin ...t_light.png => btnclose_flat_light@1x.png} | Bin .../{c9-logo-blue.png => c9-logo-blue@1x.png} | Bin ...c9-logo-white.png => c9-logo-white@1x.png} | Bin .../{c9-no-repeat.png => c9-no-repeat@1x.png} | Bin ...dark.png => c9-no-repeat_flat_dark@1x.png} | Bin ...ght.png => c9-no-repeat_flat_light@1x.png} | Bin .../{c9-repeat-x.png => c9-repeat-x@1x.png} | Bin ..._dark.png => c9-repeat-x_flat_dark@1x.png} | Bin ...ight.png => c9-repeat-x_flat_light@1x.png} | Bin ...eckbox_black.png => checkbox_black@1x.png} | Bin ...t.png => checkbox_black_flat_light@1x.png} | Bin ...t_light.png => checkbox_flat_light@1x.png} | Bin ...light.png => clear_dark_flat_light@1x.png} | Bin ...ight.png => clear_light_flat_light@1x.png} | Bin ...close_tab_btn.png => close_tab_btn@1x.png} | Bin ...ht.png => close_tab_btn_flat_light@1x.png} | Bin .../{button.png => button@1x.png} | Bin ...le-tree-load-spinner-dark-selected@1x.gif} | Bin ...ile-tree-load-spinner-dark-unfocus@1x.gif} | Bin ...ad-spinner-dark-unfocus_flat_light@1x.gif} | Bin ...gif => file-tree-load-spinner-dark@1x.gif} | Bin ...=> file-tree-load-spinner-selected@1x.gif} | Bin ...e-load-spinner-selected_flat_light@1x.gif} | Bin ...nner.gif => file-tree-load-spinner@1x.gif} | Bin ... file-tree-load-spinner_flat_light@1x.gif} | Bin ...light.png => gecko_mask_flat_light@1x.png} | Bin .../{loading-logo.png => loading-logo@1x.png} | Bin .../images/{maximize.png => maximize@1x.png} | Bin ...maximize_dark.png => maximize_dark@1x.png} | Bin ...at_light.png => running_flat_light@1x.png} | Bin ...ive.png => tab-save-spinner-active@1x.png} | Bin ...tab-save-spinner-active_flat_light@1x.png} | Bin .../images/{tab_menu.png => tab_menu@1x.png} | Bin ...tab_menu_dark.png => tab_menu_dark@1x.png} | Bin ...t_light.png => tab_menu_flat_light@1x.png} | Bin .../images/{tab_plus.png => tab_plus@1x.png} | Bin ...tab_plus_dark.png => tab_plus_dark@1x.png} | Bin ...t_light.png => tab_plus_flat_light@1x.png} | Bin .../{tabsave-flat.png => tabsave-flat@1x.png} | Bin .../images/{tabsave.png => tabsave@1x.png} | Bin ...mall.png => tree_close_arrow_small@1x.png} | Bin ...png => tree_close_arrow_small_dark@1x.png} | Bin plugins/c9.ide.layout.classic/layout.js | 15 ++++++- .../c9.ide.layout.classic/less/lesshat.less | 8 +--- .../c9.ide.layout.classic/loading-flat.css | 4 +- plugins/c9.ide.layout.classic/loading.css | 2 +- plugins/c9.ide.layout.classic/skins.xml | 1 - .../themes/default-dark-gray.less | 1 - .../themes/default-dark.less | 1 - .../themes/default-flat-dark.less | 1 - .../themes/default-flat-light.less | 1 - .../themes/default-light-gray.less | 1 - .../themes/default-light.less | 1 - .../themes/flat-dark.less | 6 +-- ...mall.png => tree_close_arrow_small@1x.png} | Bin ...ew-repeat.png => c9-preview-repeat@1x.png} | Bin ...png => c9-preview-repeat_flat_dark@1x.png} | Bin ...ng => c9-preview-repeat_flat_light@1x.png} | Bin plugins/c9.ide.preview/preview.js | 2 +- plugins/c9.ide.run.debug/breakpoints.js | 4 +- plugins/c9.ide.run.debug/callstack.js | 4 +- .../c9.ide.run.debug/debuggers/debugger.xml | 12 +++--- plugins/c9.ide.run.debug/variables.js | 2 +- plugins/c9.ide.run.debug/watches.js | 2 +- plugins/c9.ide.run/gui.js | 2 +- plugins/c9.ide.run/output.xml | 8 ++-- ...lict-button.png => conflict-button@1x.png} | Bin ...utton-dark.png => sync-button-dark@1x.png} | Bin .../{sync-button.png => sync-button@1x.png} | Bin ...-dark.gif => syncing-conflict-dark@1x.gif} | Bin ...g-conflict.gif => syncing-conflict@1x.gif} | Bin .../{syncing-dark.gif => syncing-dark@1x.gif} | Bin ...ror-dark.gif => syncing-error-dark@1x.gif} | Bin ...syncing-error.gif => syncing-error@1x.gif} | Bin .../icons/{syncing.gif => syncing@1x.gif} | Bin .../c9.ide.test/icons/{run.png => run@1x.png} | Bin ...n_flat_light.png => run_flat_light@1x.png} | Bin .../icons/{stop.png => stop@1x.png} | Bin ..._flat_light.png => stop_flat_light@1x.png} | Bin .../icons/{testError.png => testError@1x.png} | Bin .../{testFailed.png => testFailed@1x.png} | Bin .../icons/{testFile.png => testFile@1x.png} | Bin .../{testIgnored.png => testIgnored@1x.png} | Bin .../{testNotRan.png => testNotRan@1x.png} | Bin .../{testPassed.png => testPassed@1x.png} | Bin .../{testPrepare.png => testPrepare@1x.png} | Bin .../icons/{testSet.png => testSet@1x.png} | Bin ...stTerminated.png => testTerminated@1x.png} | Bin ..._obj_condition_disabled_flat_light@1x.png} | Bin ...g => brkp_obj_condition_flat_light@1x.png} | Bin ..._current_line_condition_flat_light@1x.png} | Bin ...p_obj_current_line_dark_flat_light@1x.png} | Bin ...> brkp_obj_current_line_flat_light@1x.png} | Bin ...ht.png => brkp_obj_dark_flat_light@1x.png} | Bin ...abled_current_line_dark_flat_light@1x.png} | Bin ... brkp_obj_disabled_dark_flat_light@1x.png} | Bin ...ng => brkp_obj_disabled_flat_light@1x.png} | Bin ...t_light.png => brkp_obj_flat_light@1x.png} | Bin ....png => brkp_obj_flat_light_NOTGIF@1x.png} | Bin ...g => brkp_obj_warn_dark_flat_light@1x.png} | Bin ...ht.png => brkp_obj_warn_flat_light@1x.png} | Bin ...g => brkpd_obj_disabled_flat_light@1x.png} | Bin ...ght.png => current_line_flat_light@1x.png} | Bin ...t_light.png => stack_co_flat_light@1x.png} | Bin ...t_light.png => ace_info_flat_light@1x.png} | Bin .../{cloud9_logo.png => cloud9_logo@1x.png} | Bin ...t_dark.png => trash-icon_flat_dark@1x.png} | Bin ...light.png => trash-icon_flat_light@1x.png} | Bin ..._close_arrow_small_dark_flat_light@1x.png} | Bin ... tree_close_arrow_small_flat_light@1x.png} | Bin plugins/c9.ide.ui/lib_apf.js | 6 +-- .../{welcome-logo.png => welcome-logo@1x.png} | Bin 230 files changed, 82 insertions(+), 61 deletions(-) rename plugins/c9.ide.behaviors/images/{splits.png => splits@1x.png} (100%) rename plugins/c9.ide.behaviors/images/{splits_flat_dark.png => splits_flat_dark@1x.png} (100%) rename plugins/c9.ide.behaviors/images/{splits_flat_light.png => splits_flat_light@1x.png} (100%) rename plugins/c9.ide.collab/members/images/{collab-led-states.png => collab-led-states@1x.png} (100%) rename plugins/c9.ide.collab/members/images/{collab-led-states_flat_light.png => collab-led-states_flat_light@1x.png} (100%) rename plugins/c9.ide.collab/members/images/{trash-icon.png => trash-icon@1x.png} (100%) rename plugins/c9.ide.collab/notifications/images/{bk-close-btn.png => bk-close-btn@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{close_tab_btn.png => close_tab_btn@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{pause.png => pause@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{pause_flat_light.png => pause_flat_light@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{play.png => play@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{play_flat_light.png => play_flat_light@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{scrubber_flat_light.png => scrubber_flat_light@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{stepper_buttons.png => stepper_buttons@1x.png} (100%) rename plugins/c9.ide.collab/timeslider/images/{stepper_buttons_flat_light.png => stepper_buttons_flat_light@1x.png} (100%) rename plugins/c9.ide.find.replace/icons/{arrow_left_search.png => arrow_left_search@1x.png} (100%) rename plugins/c9.ide.find.replace/icons/{arrow_left_search_flat_light.png => arrow_left_search_flat_light@1x.png} (100%) rename plugins/c9.ide.find.replace/icons/{arrow_right_search.png => arrow_right_search@1x.png} (100%) rename plugins/c9.ide.find.replace/icons/{arrow_right_search_flat_light.png => arrow_right_search_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{event.png => event@1x.png} (100%) rename plugins/c9.ide.language/images/{event_flat_light.png => event_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{method2.png => method2@1x.png} (100%) rename plugins/c9.ide.language/images/{method2_flat_light.png => method2_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{method.png => method@1x.png} (100%) rename plugins/c9.ide.language/images/{method_flat_light.png => method_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{package.png => package@1x.png} (100%) rename plugins/c9.ide.language/images/{package_flat_light.png => package_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{property2.png => property2@1x.png} (100%) rename plugins/c9.ide.language/images/{property2_flat_light.png => property2_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{property.png => property@1x.png} (100%) rename plugins/c9.ide.language/images/{property_flat_light.png => property_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{tree_close_arrow_small.png => tree_close_arrow_small@1x.png} (100%) rename plugins/c9.ide.language/images/{unknown2_flat_light.png => unknown2_flat_light@1x.png} (100%) rename plugins/c9.ide.language/images/{unknown_flat_light.png => unknown_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{bug.png => bug@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{bug_flat_dark.png => bug_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{bug_flat_light.png => bug_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{console_close_btn.png => console_close_btn@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{console_close_btn_dark.png => console_close_btn_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj.gif => brkp_obj@1x.gif} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj.png => brkp_obj@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_condition.png => brkp_obj_condition@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_condition_disabled.png => brkp_obj_condition_disabled@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_current_line.png => brkp_obj_current_line@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_current_line_condition.png => brkp_obj_current_line_condition@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_current_line_dark.png => brkp_obj_current_line_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_dark.png => brkp_obj_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_disabled.png => brkp_obj_disabled@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_disabled_current_line_dark.png => brkp_obj_disabled_current_line_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_disabled_dark.png => brkp_obj_disabled_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_warn.png => brkp_obj_warn@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkp_obj_warn_dark.png => brkp_obj_warn_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{brkpd_obj_disabled.gif => brkpd_obj_disabled@1x.gif} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{current_line_dark.png => current_line_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{genericvariable_obj.gif => genericvariable_obj@1x.gif} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{genericvariable_obj_flat_light.png => genericvariable_obj_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/debugger/{stack_co.png => stack_co@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{exception_break.png => exception_break@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{exception_break_flat_dark.png => exception_break_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{exception_break_flat_light.png => exception_break_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{file-tree-load-spinner-dark-unfocus_flat_light.gif => file-tree-load-spinner-dark-unfocus_flat_light@1x.gif} (100%) rename plugins/c9.ide.layout.classic/icons/{file-tree-load-spinner-selected_flat_light.gif => file-tree-load-spinner-selected_flat_light@1x.gif} (100%) rename plugins/c9.ide.layout.classic/icons/{file-tree-load-spinner_flat_light.gif => file-tree-load-spinner_flat_light@1x.gif} (100%) rename plugins/c9.ide.layout.classic/icons/{folder.png => folder@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{folder_alternative.png => folder_alternative@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{folder_flat_dark.png => folder_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{folder_flat_light.png => folder_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{folder_light.png => folder_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{pause.png => pause@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{pause_flat_dark.png => pause_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{pause_flat_light.png => pause_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{play.png => play@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{play_flat_dark.png => play_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{play_flat_light.png => play_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{pref-ico.png => pref-ico@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{pref-ico_flat_dark.png => pref-ico_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{pref-ico_flat_light.png => pref-ico_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{remove_breakpoints.png => remove_breakpoints@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{remove_breakpoints_flat_dark.png => remove_breakpoints_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{remove_breakpoints_flat_light.png => remove_breakpoints_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{restart-icon.png => restart-icon@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{restart-icon_flat_light.png => restart-icon_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{run.png => run@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{run_flat_dark.png => run_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{run_flat_light.png => run_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{scripts.png => scripts@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{scripts_flat_light.png => scripts_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{search-ico_flat_light.png => search-ico_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{step.png => step@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{step_flat_dark.png => step_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{step_flat_light.png => step_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stepback.png => stepback@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stepback_flat_dark.png => stepback_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stepback_flat_light.png => stepback_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stepinto.png => stepinto@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stepinto_flat_dark.png => stepinto_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stepinto_flat_light.png => stepinto_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stop.png => stop@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{stop_flat_light.png => stop_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{toggle_breakpoints1_flat_dark.png => toggle_breakpoints1_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{toggle_breakpoints1_flat_light.png => toggle_breakpoints1_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{toggle_breakpoints2.png => toggle_breakpoints2@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{toggle_breakpoints2_flat_dark.png => toggle_breakpoints2_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/icons/{toggle_breakpoints2_flat_light.png => toggle_breakpoints2_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{ace_error_dark.png => ace_error_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{ace_error_flat_light.png => ace_error_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{ace_error_light.png => ace_error_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{ace_warning_dark.png => ace_warning_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{ace_warning_flat_light.png => ace_warning_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{ace_warning_light_flat_light.png => ace_warning_light_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{arrow_down_grey.png => arrow_down_grey@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{bk-close-btn.png => bk-close-btn@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{btnclose.gif => btnclose@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{btnclose_flat_light.png => btnclose_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-logo-blue.png => c9-logo-blue@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-logo-white.png => c9-logo-white@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-no-repeat.png => c9-no-repeat@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-no-repeat_flat_dark.png => c9-no-repeat_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-no-repeat_flat_light.png => c9-no-repeat_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-repeat-x.png => c9-repeat-x@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-repeat-x_flat_dark.png => c9-repeat-x_flat_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{c9-repeat-x_flat_light.png => c9-repeat-x_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{checkbox_black.png => checkbox_black@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{checkbox_black_flat_light.png => checkbox_black_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{checkbox_flat_light.png => checkbox_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{clear_dark_flat_light.png => clear_dark_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{clear_light_flat_light.png => clear_light_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{close_tab_btn.png => close_tab_btn@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{close_tab_btn_flat_light.png => close_tab_btn_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/dropdown-dark-glossy/{button.png => button@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner-dark-selected.gif => file-tree-load-spinner-dark-selected@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner-dark-unfocus.gif => file-tree-load-spinner-dark-unfocus@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner-dark-unfocus_flat_light.gif => file-tree-load-spinner-dark-unfocus_flat_light@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner-dark.gif => file-tree-load-spinner-dark@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner-selected.gif => file-tree-load-spinner-selected@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner-selected_flat_light.gif => file-tree-load-spinner-selected_flat_light@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner.gif => file-tree-load-spinner@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{file-tree-load-spinner_flat_light.gif => file-tree-load-spinner_flat_light@1x.gif} (100%) rename plugins/c9.ide.layout.classic/images/{gecko_mask_flat_light.png => gecko_mask_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{loading-logo.png => loading-logo@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{maximize.png => maximize@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{maximize_dark.png => maximize_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{running_flat_light.png => running_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab-save-spinner-active.png => tab-save-spinner-active@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab-save-spinner-active_flat_light.png => tab-save-spinner-active_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab_menu.png => tab_menu@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab_menu_dark.png => tab_menu_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab_menu_flat_light.png => tab_menu_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab_plus.png => tab_plus@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab_plus_dark.png => tab_plus_dark@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tab_plus_flat_light.png => tab_plus_flat_light@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tabsave-flat.png => tabsave-flat@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tabsave.png => tabsave@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tree_close_arrow_small.png => tree_close_arrow_small@1x.png} (100%) rename plugins/c9.ide.layout.classic/images/{tree_close_arrow_small_dark.png => tree_close_arrow_small_dark@1x.png} (100%) rename plugins/c9.ide.preferences/images/{tree_close_arrow_small.png => tree_close_arrow_small@1x.png} (100%) rename plugins/c9.ide.preview/images/{c9-preview-repeat.png => c9-preview-repeat@1x.png} (100%) rename plugins/c9.ide.preview/images/{c9-preview-repeat_flat_dark.png => c9-preview-repeat_flat_dark@1x.png} (100%) rename plugins/c9.ide.preview/images/{c9-preview-repeat_flat_light.png => c9-preview-repeat_flat_light@1x.png} (100%) rename plugins/c9.ide.scm/icons/{conflict-button.png => conflict-button@1x.png} (100%) rename plugins/c9.ide.scm/icons/{sync-button-dark.png => sync-button-dark@1x.png} (100%) rename plugins/c9.ide.scm/icons/{sync-button.png => sync-button@1x.png} (100%) rename plugins/c9.ide.scm/icons/{syncing-conflict-dark.gif => syncing-conflict-dark@1x.gif} (100%) rename plugins/c9.ide.scm/icons/{syncing-conflict.gif => syncing-conflict@1x.gif} (100%) rename plugins/c9.ide.scm/icons/{syncing-dark.gif => syncing-dark@1x.gif} (100%) rename plugins/c9.ide.scm/icons/{syncing-error-dark.gif => syncing-error-dark@1x.gif} (100%) rename plugins/c9.ide.scm/icons/{syncing-error.gif => syncing-error@1x.gif} (100%) rename plugins/c9.ide.scm/icons/{syncing.gif => syncing@1x.gif} (100%) rename plugins/c9.ide.test/icons/{run.png => run@1x.png} (100%) rename plugins/c9.ide.test/icons/{run_flat_light.png => run_flat_light@1x.png} (100%) rename plugins/c9.ide.test/icons/{stop.png => stop@1x.png} (100%) rename plugins/c9.ide.test/icons/{stop_flat_light.png => stop_flat_light@1x.png} (100%) rename plugins/c9.ide.test/icons/{testError.png => testError@1x.png} (100%) rename plugins/c9.ide.test/icons/{testFailed.png => testFailed@1x.png} (100%) rename plugins/c9.ide.test/icons/{testFile.png => testFile@1x.png} (100%) rename plugins/c9.ide.test/icons/{testIgnored.png => testIgnored@1x.png} (100%) rename plugins/c9.ide.test/icons/{testNotRan.png => testNotRan@1x.png} (100%) rename plugins/c9.ide.test/icons/{testPassed.png => testPassed@1x.png} (100%) rename plugins/c9.ide.test/icons/{testPrepare.png => testPrepare@1x.png} (100%) rename plugins/c9.ide.test/icons/{testSet.png => testSet@1x.png} (100%) rename plugins/c9.ide.test/icons/{testTerminated.png => testTerminated@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_condition_disabled_flat_light.png => brkp_obj_condition_disabled_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_condition_flat_light.png => brkp_obj_condition_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_current_line_condition_flat_light.png => brkp_obj_current_line_condition_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_current_line_dark_flat_light.png => brkp_obj_current_line_dark_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_current_line_flat_light.png => brkp_obj_current_line_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_dark_flat_light.png => brkp_obj_dark_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_disabled_current_line_dark_flat_light.png => brkp_obj_disabled_current_line_dark_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_disabled_dark_flat_light.png => brkp_obj_disabled_dark_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_disabled_flat_light.png => brkp_obj_disabled_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_flat_light.png => brkp_obj_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_flat_light_NOTGIF.png => brkp_obj_flat_light_NOTGIF@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_warn_dark_flat_light.png => brkp_obj_warn_dark_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkp_obj_warn_flat_light.png => brkp_obj_warn_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{brkpd_obj_disabled_flat_light.png => brkpd_obj_disabled_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{current_line_flat_light.png => current_line_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/icons/debugger/{stack_co_flat_light.png => stack_co_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/images/{ace_info_flat_light.png => ace_info_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/images/{cloud9_logo.png => cloud9_logo@1x.png} (100%) rename plugins/c9.ide.theme.flat/images/{trash-icon_flat_dark.png => trash-icon_flat_dark@1x.png} (100%) rename plugins/c9.ide.theme.flat/images/{trash-icon_flat_light.png => trash-icon_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/images/{tree_close_arrow_small_dark_flat_light.png => tree_close_arrow_small_dark_flat_light@1x.png} (100%) rename plugins/c9.ide.theme.flat/images/{tree_close_arrow_small_flat_light.png => tree_close_arrow_small_flat_light@1x.png} (100%) rename plugins/c9.ide.welcome/images/{welcome-logo.png => welcome-logo@1x.png} (100%) diff --git a/node_modules/architect-build/build.js b/node_modules/architect-build/build.js index baa2d583..2c0dd3ac 100644 --- a/node_modules/architect-build/build.js +++ b/node_modules/architect-build/build.js @@ -161,6 +161,8 @@ function compileLess(opts, sources, callback) { var cache = opts.cache; if (cache && !cache.less) cache.less = Object.create(null); + if (cache && !cache.images) + cache.images = Object.create(null); var libs = opts.lessLibs; less.forEach(function(file) { @@ -175,9 +177,15 @@ function compileLess(opts, sources, callback) { } var staticPrefix = plugin.staticPrefix || libs.staticPrefix; + var id = file.pkg.id.replace(/^[^!]+!/, ""); // Complete paths, but not subdirectories like foo/images/bar.png var lessCode = file.code.replace(/(["(])(images|icons)\//g, "$1" + staticPrefix + "/$2/"); - code.push("ß{" + lessPathLib(staticPrefix) + lessCode + "}"); + code.push( + "/* @file " + id + " */\nß{" + + lessPathLib(staticPrefix) + + lessCode + + "}" + ); }); var ctx = { @@ -193,12 +201,38 @@ function compileLess(opts, sources, callback) { toCss(tree, imports, options, function(err, css) { if (err) return callback(err); - - callback(null, { code: css.replace(/ß /g, "").replace(/^ +/gm, "\t") }); + css = css.replace(/ß /g, "").replace(/^ +/gm, "\t"); + css = checkImages(css, cache); + callback(null, { code: css }); }); }); } +function checkImages(css, cache) { + var images = cache && cache.images || Object.create(null); + var root = __dirname + "/../../"; + var t = Date.now(); + css = css.replace(/(url\(['"]?\/static\/)([^"')]+)/g, function(_, prefix, imagePath) { + var dir = path.dirname(imagePath); + var name = path.basename(imagePath); + try { + if (!images[dir]) + images[dir] = fs.readdirSync(root + dir); + } catch(e) { + images[dir] = []; + } + if (images[dir].indexOf(name) != -1) + return prefix + imagePath; + var name1 = name.replace("@1x", ""); + if (images[dir].indexOf(name1) != -1) + return prefix + dir + name1; + + console.log("missing image:" + imagePath); + return prefix + undefined + imagePath; + }); + console.log(t- Date.now()); + return css +} function addCssPrefixes(css) { return css.replace(/\b(user-select|font-smoothing)\b([^;\n]+);?/g, function(_, prop, value, index, string) { diff --git a/package.json b/package.json index f5926894..a1c93daf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.4072", + "version": "3.1.5000", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", @@ -56,4 +56,4 @@ "msgpack-js", "c9" ] -} \ No newline at end of file +} diff --git a/plugins/c9.ide.ace.statusbar/statusbar.xml b/plugins/c9.ide.ace.statusbar/statusbar.xml index ce4b2829..6be7b3d1 100644 --- a/plugins/c9.ide.ace.statusbar/statusbar.xml +++ b/plugins/c9.ide.ace.statusbar/statusbar.xml @@ -34,7 +34,7 @@ skin = "btn-statusbar-icon" skinset = "c9statusbar" height = "23" - icon = "pref-ico.png" + icon = "true" submenudir = "up" /> \ No newline at end of file diff --git a/plugins/c9.ide.behaviors/images/splits.png b/plugins/c9.ide.behaviors/images/splits@1x.png similarity index 100% rename from plugins/c9.ide.behaviors/images/splits.png rename to plugins/c9.ide.behaviors/images/splits@1x.png diff --git a/plugins/c9.ide.behaviors/images/splits_flat_dark.png b/plugins/c9.ide.behaviors/images/splits_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.behaviors/images/splits_flat_dark.png rename to plugins/c9.ide.behaviors/images/splits_flat_dark@1x.png diff --git a/plugins/c9.ide.behaviors/images/splits_flat_light.png b/plugins/c9.ide.behaviors/images/splits_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.behaviors/images/splits_flat_light.png rename to plugins/c9.ide.behaviors/images/splits_flat_light@1x.png diff --git a/plugins/c9.ide.collab/members/images/collab-led-states.png b/plugins/c9.ide.collab/members/images/collab-led-states@1x.png similarity index 100% rename from plugins/c9.ide.collab/members/images/collab-led-states.png rename to plugins/c9.ide.collab/members/images/collab-led-states@1x.png diff --git a/plugins/c9.ide.collab/members/images/collab-led-states_flat_light.png b/plugins/c9.ide.collab/members/images/collab-led-states_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.collab/members/images/collab-led-states_flat_light.png rename to plugins/c9.ide.collab/members/images/collab-led-states_flat_light@1x.png diff --git a/plugins/c9.ide.collab/members/images/trash-icon.png b/plugins/c9.ide.collab/members/images/trash-icon@1x.png similarity index 100% rename from plugins/c9.ide.collab/members/images/trash-icon.png rename to plugins/c9.ide.collab/members/images/trash-icon@1x.png diff --git a/plugins/c9.ide.collab/notifications/images/bk-close-btn.png b/plugins/c9.ide.collab/notifications/images/bk-close-btn@1x.png similarity index 100% rename from plugins/c9.ide.collab/notifications/images/bk-close-btn.png rename to plugins/c9.ide.collab/notifications/images/bk-close-btn@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/close_tab_btn.png b/plugins/c9.ide.collab/timeslider/images/close_tab_btn@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/close_tab_btn.png rename to plugins/c9.ide.collab/timeslider/images/close_tab_btn@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/pause.png b/plugins/c9.ide.collab/timeslider/images/pause@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/pause.png rename to plugins/c9.ide.collab/timeslider/images/pause@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/pause_flat_light.png b/plugins/c9.ide.collab/timeslider/images/pause_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/pause_flat_light.png rename to plugins/c9.ide.collab/timeslider/images/pause_flat_light@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/play.png b/plugins/c9.ide.collab/timeslider/images/play@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/play.png rename to plugins/c9.ide.collab/timeslider/images/play@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/play_flat_light.png b/plugins/c9.ide.collab/timeslider/images/play_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/play_flat_light.png rename to plugins/c9.ide.collab/timeslider/images/play_flat_light@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/scrubber_flat_light.png b/plugins/c9.ide.collab/timeslider/images/scrubber_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/scrubber_flat_light.png rename to plugins/c9.ide.collab/timeslider/images/scrubber_flat_light@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/stepper_buttons.png b/plugins/c9.ide.collab/timeslider/images/stepper_buttons@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/stepper_buttons.png rename to plugins/c9.ide.collab/timeslider/images/stepper_buttons@1x.png diff --git a/plugins/c9.ide.collab/timeslider/images/stepper_buttons_flat_light.png b/plugins/c9.ide.collab/timeslider/images/stepper_buttons_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.collab/timeslider/images/stepper_buttons_flat_light.png rename to plugins/c9.ide.collab/timeslider/images/stepper_buttons_flat_light@1x.png diff --git a/plugins/c9.ide.console/style.css b/plugins/c9.ide.console/style.css index 67c27050..ddec3371 100644 --- a/plugins/c9.ide.console/style.css +++ b/plugins/c9.ide.console/style.css @@ -8,12 +8,5 @@ } .console .console_close_btn { - background-image: url("@{icon-path}/@{button-console-close}"); -} - -@media print, (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) { - .console .console_close_btn { - background-image: url("@{icon-path}/@{button-console-close-retina}"); - background-size: 22px 66px; - } + .image-2x("@{icon-path}/@{button-console-close}", 22px, 66px); } \ No newline at end of file diff --git a/plugins/c9.ide.find.replace/findreplace.css b/plugins/c9.ide.find.replace/findreplace.css index eabb424a..4b4645a4 100644 --- a/plugins/c9.ide.find.replace/findreplace.css +++ b/plugins/c9.ide.find.replace/findreplace.css @@ -18,10 +18,10 @@ } .btnquicksearchnav.btnquicksearchnavLeft .lbl span { - background-image: url("@{icon-path}/@{find-next-image}"); + .image-2x("@{icon-path}/@{find-next-image}", 20px, 100px); } .btnquicksearchnav.btnquicksearchnavRight .lbl span { - background-image: url("@{icon-path}/@{find-previous-image}"); + .image-2x("@{icon-path}/@{find-previous-image}", 20px, 100px); } .findInRangeMarker { diff --git a/plugins/c9.ide.find.replace/icons/arrow_left_search.png b/plugins/c9.ide.find.replace/icons/arrow_left_search@1x.png similarity index 100% rename from plugins/c9.ide.find.replace/icons/arrow_left_search.png rename to plugins/c9.ide.find.replace/icons/arrow_left_search@1x.png diff --git a/plugins/c9.ide.find.replace/icons/arrow_left_search_flat_light.png b/plugins/c9.ide.find.replace/icons/arrow_left_search_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.find.replace/icons/arrow_left_search_flat_light.png rename to plugins/c9.ide.find.replace/icons/arrow_left_search_flat_light@1x.png diff --git a/plugins/c9.ide.find.replace/icons/arrow_right_search.png b/plugins/c9.ide.find.replace/icons/arrow_right_search@1x.png similarity index 100% rename from plugins/c9.ide.find.replace/icons/arrow_right_search.png rename to plugins/c9.ide.find.replace/icons/arrow_right_search@1x.png diff --git a/plugins/c9.ide.find.replace/icons/arrow_right_search_flat_light.png b/plugins/c9.ide.find.replace/icons/arrow_right_search_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.find.replace/icons/arrow_right_search_flat_light.png rename to plugins/c9.ide.find.replace/icons/arrow_right_search_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/event.png b/plugins/c9.ide.language/images/event@1x.png similarity index 100% rename from plugins/c9.ide.language/images/event.png rename to plugins/c9.ide.language/images/event@1x.png diff --git a/plugins/c9.ide.language/images/event_flat_light.png b/plugins/c9.ide.language/images/event_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/event_flat_light.png rename to plugins/c9.ide.language/images/event_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/method2.png b/plugins/c9.ide.language/images/method2@1x.png similarity index 100% rename from plugins/c9.ide.language/images/method2.png rename to plugins/c9.ide.language/images/method2@1x.png diff --git a/plugins/c9.ide.language/images/method2_flat_light.png b/plugins/c9.ide.language/images/method2_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/method2_flat_light.png rename to plugins/c9.ide.language/images/method2_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/method.png b/plugins/c9.ide.language/images/method@1x.png similarity index 100% rename from plugins/c9.ide.language/images/method.png rename to plugins/c9.ide.language/images/method@1x.png diff --git a/plugins/c9.ide.language/images/method_flat_light.png b/plugins/c9.ide.language/images/method_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/method_flat_light.png rename to plugins/c9.ide.language/images/method_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/package.png b/plugins/c9.ide.language/images/package@1x.png similarity index 100% rename from plugins/c9.ide.language/images/package.png rename to plugins/c9.ide.language/images/package@1x.png diff --git a/plugins/c9.ide.language/images/package_flat_light.png b/plugins/c9.ide.language/images/package_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/package_flat_light.png rename to plugins/c9.ide.language/images/package_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/property2.png b/plugins/c9.ide.language/images/property2@1x.png similarity index 100% rename from plugins/c9.ide.language/images/property2.png rename to plugins/c9.ide.language/images/property2@1x.png diff --git a/plugins/c9.ide.language/images/property2_flat_light.png b/plugins/c9.ide.language/images/property2_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/property2_flat_light.png rename to plugins/c9.ide.language/images/property2_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/property.png b/plugins/c9.ide.language/images/property@1x.png similarity index 100% rename from plugins/c9.ide.language/images/property.png rename to plugins/c9.ide.language/images/property@1x.png diff --git a/plugins/c9.ide.language/images/property_flat_light.png b/plugins/c9.ide.language/images/property_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/property_flat_light.png rename to plugins/c9.ide.language/images/property_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/tree_close_arrow_small.png b/plugins/c9.ide.language/images/tree_close_arrow_small@1x.png similarity index 100% rename from plugins/c9.ide.language/images/tree_close_arrow_small.png rename to plugins/c9.ide.language/images/tree_close_arrow_small@1x.png diff --git a/plugins/c9.ide.language/images/unknown2_flat_light.png b/plugins/c9.ide.language/images/unknown2_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/unknown2_flat_light.png rename to plugins/c9.ide.language/images/unknown2_flat_light@1x.png diff --git a/plugins/c9.ide.language/images/unknown_flat_light.png b/plugins/c9.ide.language/images/unknown_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.language/images/unknown_flat_light.png rename to plugins/c9.ide.language/images/unknown_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/bug.png b/plugins/c9.ide.layout.classic/icons/bug@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/bug.png rename to plugins/c9.ide.layout.classic/icons/bug@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/bug_flat_dark.png b/plugins/c9.ide.layout.classic/icons/bug_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/bug_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/bug_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/bug_flat_light.png b/plugins/c9.ide.layout.classic/icons/bug_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/bug_flat_light.png rename to plugins/c9.ide.layout.classic/icons/bug_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/console_close_btn.png b/plugins/c9.ide.layout.classic/icons/console_close_btn@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/console_close_btn.png rename to plugins/c9.ide.layout.classic/icons/console_close_btn@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/console_close_btn_dark.png b/plugins/c9.ide.layout.classic/icons/console_close_btn_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/console_close_btn_dark.png rename to plugins/c9.ide.layout.classic/icons/console_close_btn_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj.gif b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj.gif rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj@1x.gif diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition_disabled.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition_disabled@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition_disabled.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_condition_disabled@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_condition.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_condition@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_condition.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_condition@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_dark.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_dark.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_current_line_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_dark.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_dark.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_current_line_dark.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_current_line_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_current_line_dark.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_current_line_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_dark.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_dark.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_disabled_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn_dark.png b/plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn_dark.png rename to plugins/c9.ide.layout.classic/icons/debugger/brkp_obj_warn_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/brkpd_obj_disabled.gif b/plugins/c9.ide.layout.classic/icons/debugger/brkpd_obj_disabled@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/brkpd_obj_disabled.gif rename to plugins/c9.ide.layout.classic/icons/debugger/brkpd_obj_disabled@1x.gif diff --git a/plugins/c9.ide.layout.classic/icons/debugger/current_line_dark.png b/plugins/c9.ide.layout.classic/icons/debugger/current_line_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/current_line_dark.png rename to plugins/c9.ide.layout.classic/icons/debugger/current_line_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj.gif b/plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj.gif rename to plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj@1x.gif diff --git a/plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj_flat_light.png b/plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj_flat_light.png rename to plugins/c9.ide.layout.classic/icons/debugger/genericvariable_obj_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/debugger/stack_co.png b/plugins/c9.ide.layout.classic/icons/debugger/stack_co@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/debugger/stack_co.png rename to plugins/c9.ide.layout.classic/icons/debugger/stack_co@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/exception_break.png b/plugins/c9.ide.layout.classic/icons/exception_break@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/exception_break.png rename to plugins/c9.ide.layout.classic/icons/exception_break@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/exception_break_flat_dark.png b/plugins/c9.ide.layout.classic/icons/exception_break_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/exception_break_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/exception_break_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/exception_break_flat_light.png b/plugins/c9.ide.layout.classic/icons/exception_break_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/exception_break_flat_light.png rename to plugins/c9.ide.layout.classic/icons/exception_break_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-dark-unfocus_flat_light.gif b/plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-dark-unfocus_flat_light@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-dark-unfocus_flat_light.gif rename to plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-dark-unfocus_flat_light@1x.gif diff --git a/plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-selected_flat_light.gif b/plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-selected_flat_light@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-selected_flat_light.gif rename to plugins/c9.ide.layout.classic/icons/file-tree-load-spinner-selected_flat_light@1x.gif diff --git a/plugins/c9.ide.layout.classic/icons/file-tree-load-spinner_flat_light.gif b/plugins/c9.ide.layout.classic/icons/file-tree-load-spinner_flat_light@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/icons/file-tree-load-spinner_flat_light.gif rename to plugins/c9.ide.layout.classic/icons/file-tree-load-spinner_flat_light@1x.gif diff --git a/plugins/c9.ide.layout.classic/icons/folder.png b/plugins/c9.ide.layout.classic/icons/folder@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/folder.png rename to plugins/c9.ide.layout.classic/icons/folder@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/folder_alternative.png b/plugins/c9.ide.layout.classic/icons/folder_alternative@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/folder_alternative.png rename to plugins/c9.ide.layout.classic/icons/folder_alternative@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/folder_flat_dark.png b/plugins/c9.ide.layout.classic/icons/folder_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/folder_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/folder_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/folder_flat_light.png b/plugins/c9.ide.layout.classic/icons/folder_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/folder_flat_light.png rename to plugins/c9.ide.layout.classic/icons/folder_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/folder_light.png b/plugins/c9.ide.layout.classic/icons/folder_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/folder_light.png rename to plugins/c9.ide.layout.classic/icons/folder_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/pause.png b/plugins/c9.ide.layout.classic/icons/pause@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/pause.png rename to plugins/c9.ide.layout.classic/icons/pause@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/pause_flat_dark.png b/plugins/c9.ide.layout.classic/icons/pause_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/pause_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/pause_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/pause_flat_light.png b/plugins/c9.ide.layout.classic/icons/pause_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/pause_flat_light.png rename to plugins/c9.ide.layout.classic/icons/pause_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/play.png b/plugins/c9.ide.layout.classic/icons/play@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/play.png rename to plugins/c9.ide.layout.classic/icons/play@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/play_flat_dark.png b/plugins/c9.ide.layout.classic/icons/play_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/play_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/play_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/play_flat_light.png b/plugins/c9.ide.layout.classic/icons/play_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/play_flat_light.png rename to plugins/c9.ide.layout.classic/icons/play_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/pref-ico.png b/plugins/c9.ide.layout.classic/icons/pref-ico@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/pref-ico.png rename to plugins/c9.ide.layout.classic/icons/pref-ico@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/pref-ico_flat_dark.png b/plugins/c9.ide.layout.classic/icons/pref-ico_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/pref-ico_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/pref-ico_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/pref-ico_flat_light.png b/plugins/c9.ide.layout.classic/icons/pref-ico_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/pref-ico_flat_light.png rename to plugins/c9.ide.layout.classic/icons/pref-ico_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/remove_breakpoints.png b/plugins/c9.ide.layout.classic/icons/remove_breakpoints@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/remove_breakpoints.png rename to plugins/c9.ide.layout.classic/icons/remove_breakpoints@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_dark.png b/plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_light.png b/plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_light.png rename to plugins/c9.ide.layout.classic/icons/remove_breakpoints_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/restart-icon.png b/plugins/c9.ide.layout.classic/icons/restart-icon@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/restart-icon.png rename to plugins/c9.ide.layout.classic/icons/restart-icon@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/restart-icon_flat_light.png b/plugins/c9.ide.layout.classic/icons/restart-icon_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/restart-icon_flat_light.png rename to plugins/c9.ide.layout.classic/icons/restart-icon_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/run.png b/plugins/c9.ide.layout.classic/icons/run@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/run.png rename to plugins/c9.ide.layout.classic/icons/run@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/run_flat_dark.png b/plugins/c9.ide.layout.classic/icons/run_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/run_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/run_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/run_flat_light.png b/plugins/c9.ide.layout.classic/icons/run_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/run_flat_light.png rename to plugins/c9.ide.layout.classic/icons/run_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/scripts.png b/plugins/c9.ide.layout.classic/icons/scripts@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/scripts.png rename to plugins/c9.ide.layout.classic/icons/scripts@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/scripts_flat_light.png b/plugins/c9.ide.layout.classic/icons/scripts_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/scripts_flat_light.png rename to plugins/c9.ide.layout.classic/icons/scripts_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/search-ico_flat_light.png b/plugins/c9.ide.layout.classic/icons/search-ico_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/search-ico_flat_light.png rename to plugins/c9.ide.layout.classic/icons/search-ico_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/step.png b/plugins/c9.ide.layout.classic/icons/step@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/step.png rename to plugins/c9.ide.layout.classic/icons/step@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/step_flat_dark.png b/plugins/c9.ide.layout.classic/icons/step_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/step_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/step_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/step_flat_light.png b/plugins/c9.ide.layout.classic/icons/step_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/step_flat_light.png rename to plugins/c9.ide.layout.classic/icons/step_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stepback.png b/plugins/c9.ide.layout.classic/icons/stepback@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stepback.png rename to plugins/c9.ide.layout.classic/icons/stepback@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stepback_flat_dark.png b/plugins/c9.ide.layout.classic/icons/stepback_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stepback_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/stepback_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stepback_flat_light.png b/plugins/c9.ide.layout.classic/icons/stepback_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stepback_flat_light.png rename to plugins/c9.ide.layout.classic/icons/stepback_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stepinto.png b/plugins/c9.ide.layout.classic/icons/stepinto@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stepinto.png rename to plugins/c9.ide.layout.classic/icons/stepinto@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stepinto_flat_dark.png b/plugins/c9.ide.layout.classic/icons/stepinto_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stepinto_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/stepinto_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stepinto_flat_light.png b/plugins/c9.ide.layout.classic/icons/stepinto_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stepinto_flat_light.png rename to plugins/c9.ide.layout.classic/icons/stepinto_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stop.png b/plugins/c9.ide.layout.classic/icons/stop@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stop.png rename to plugins/c9.ide.layout.classic/icons/stop@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/stop_flat_light.png b/plugins/c9.ide.layout.classic/icons/stop_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/stop_flat_light.png rename to plugins/c9.ide.layout.classic/icons/stop_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_dark.png b/plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_light.png b/plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_light.png rename to plugins/c9.ide.layout.classic/icons/toggle_breakpoints1_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/toggle_breakpoints2.png b/plugins/c9.ide.layout.classic/icons/toggle_breakpoints2@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/toggle_breakpoints2.png rename to plugins/c9.ide.layout.classic/icons/toggle_breakpoints2@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_dark.png b/plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_dark.png rename to plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_light.png b/plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_light.png rename to plugins/c9.ide.layout.classic/icons/toggle_breakpoints2_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/ace_error_dark.png b/plugins/c9.ide.layout.classic/images/ace_error_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/ace_error_dark.png rename to plugins/c9.ide.layout.classic/images/ace_error_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/images/ace_error_flat_light.png b/plugins/c9.ide.layout.classic/images/ace_error_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/ace_error_flat_light.png rename to plugins/c9.ide.layout.classic/images/ace_error_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/ace_error_light.png b/plugins/c9.ide.layout.classic/images/ace_error_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/ace_error_light.png rename to plugins/c9.ide.layout.classic/images/ace_error_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/ace_warning_dark.png b/plugins/c9.ide.layout.classic/images/ace_warning_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/ace_warning_dark.png rename to plugins/c9.ide.layout.classic/images/ace_warning_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/images/ace_warning_flat_light.png b/plugins/c9.ide.layout.classic/images/ace_warning_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/ace_warning_flat_light.png rename to plugins/c9.ide.layout.classic/images/ace_warning_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/ace_warning_light_flat_light.png b/plugins/c9.ide.layout.classic/images/ace_warning_light_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/ace_warning_light_flat_light.png rename to plugins/c9.ide.layout.classic/images/ace_warning_light_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/arrow_down_grey.png b/plugins/c9.ide.layout.classic/images/arrow_down_grey@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/arrow_down_grey.png rename to plugins/c9.ide.layout.classic/images/arrow_down_grey@1x.png diff --git a/plugins/c9.ide.layout.classic/images/bk-close-btn.png b/plugins/c9.ide.layout.classic/images/bk-close-btn@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/bk-close-btn.png rename to plugins/c9.ide.layout.classic/images/bk-close-btn@1x.png diff --git a/plugins/c9.ide.layout.classic/images/btnclose.gif b/plugins/c9.ide.layout.classic/images/btnclose@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/btnclose.gif rename to plugins/c9.ide.layout.classic/images/btnclose@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/btnclose_flat_light.png b/plugins/c9.ide.layout.classic/images/btnclose_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/btnclose_flat_light.png rename to plugins/c9.ide.layout.classic/images/btnclose_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-logo-blue.png b/plugins/c9.ide.layout.classic/images/c9-logo-blue@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-logo-blue.png rename to plugins/c9.ide.layout.classic/images/c9-logo-blue@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-logo-white.png b/plugins/c9.ide.layout.classic/images/c9-logo-white@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-logo-white.png rename to plugins/c9.ide.layout.classic/images/c9-logo-white@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-no-repeat.png b/plugins/c9.ide.layout.classic/images/c9-no-repeat@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-no-repeat.png rename to plugins/c9.ide.layout.classic/images/c9-no-repeat@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_dark.png b/plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_dark.png rename to plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_light.png b/plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_light.png rename to plugins/c9.ide.layout.classic/images/c9-no-repeat_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-repeat-x.png b/plugins/c9.ide.layout.classic/images/c9-repeat-x@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-repeat-x.png rename to plugins/c9.ide.layout.classic/images/c9-repeat-x@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_dark.png b/plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_dark.png rename to plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_light.png b/plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_light.png rename to plugins/c9.ide.layout.classic/images/c9-repeat-x_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/checkbox_black.png b/plugins/c9.ide.layout.classic/images/checkbox_black@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/checkbox_black.png rename to plugins/c9.ide.layout.classic/images/checkbox_black@1x.png diff --git a/plugins/c9.ide.layout.classic/images/checkbox_black_flat_light.png b/plugins/c9.ide.layout.classic/images/checkbox_black_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/checkbox_black_flat_light.png rename to plugins/c9.ide.layout.classic/images/checkbox_black_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/checkbox_flat_light.png b/plugins/c9.ide.layout.classic/images/checkbox_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/checkbox_flat_light.png rename to plugins/c9.ide.layout.classic/images/checkbox_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/clear_dark_flat_light.png b/plugins/c9.ide.layout.classic/images/clear_dark_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/clear_dark_flat_light.png rename to plugins/c9.ide.layout.classic/images/clear_dark_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/clear_light_flat_light.png b/plugins/c9.ide.layout.classic/images/clear_light_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/clear_light_flat_light.png rename to plugins/c9.ide.layout.classic/images/clear_light_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/close_tab_btn.png b/plugins/c9.ide.layout.classic/images/close_tab_btn@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/close_tab_btn.png rename to plugins/c9.ide.layout.classic/images/close_tab_btn@1x.png diff --git a/plugins/c9.ide.layout.classic/images/close_tab_btn_flat_light.png b/plugins/c9.ide.layout.classic/images/close_tab_btn_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/close_tab_btn_flat_light.png rename to plugins/c9.ide.layout.classic/images/close_tab_btn_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/dropdown-dark-glossy/button.png b/plugins/c9.ide.layout.classic/images/dropdown-dark-glossy/button@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/dropdown-dark-glossy/button.png rename to plugins/c9.ide.layout.classic/images/dropdown-dark-glossy/button@1x.png diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-selected.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-selected@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-selected.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-selected@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus_flat_light.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus_flat_light@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus_flat_light.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark-unfocus_flat_light@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner-dark@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected_flat_light.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected_flat_light@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected_flat_light.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner-selected_flat_light@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/file-tree-load-spinner_flat_light.gif b/plugins/c9.ide.layout.classic/images/file-tree-load-spinner_flat_light@1x.gif similarity index 100% rename from plugins/c9.ide.layout.classic/images/file-tree-load-spinner_flat_light.gif rename to plugins/c9.ide.layout.classic/images/file-tree-load-spinner_flat_light@1x.gif diff --git a/plugins/c9.ide.layout.classic/images/gecko_mask_flat_light.png b/plugins/c9.ide.layout.classic/images/gecko_mask_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/gecko_mask_flat_light.png rename to plugins/c9.ide.layout.classic/images/gecko_mask_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/loading-logo.png b/plugins/c9.ide.layout.classic/images/loading-logo@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/loading-logo.png rename to plugins/c9.ide.layout.classic/images/loading-logo@1x.png diff --git a/plugins/c9.ide.layout.classic/images/maximize.png b/plugins/c9.ide.layout.classic/images/maximize@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/maximize.png rename to plugins/c9.ide.layout.classic/images/maximize@1x.png diff --git a/plugins/c9.ide.layout.classic/images/maximize_dark.png b/plugins/c9.ide.layout.classic/images/maximize_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/maximize_dark.png rename to plugins/c9.ide.layout.classic/images/maximize_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/images/running_flat_light.png b/plugins/c9.ide.layout.classic/images/running_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/running_flat_light.png rename to plugins/c9.ide.layout.classic/images/running_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab-save-spinner-active.png b/plugins/c9.ide.layout.classic/images/tab-save-spinner-active@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab-save-spinner-active.png rename to plugins/c9.ide.layout.classic/images/tab-save-spinner-active@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab-save-spinner-active_flat_light.png b/plugins/c9.ide.layout.classic/images/tab-save-spinner-active_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab-save-spinner-active_flat_light.png rename to plugins/c9.ide.layout.classic/images/tab-save-spinner-active_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab_menu.png b/plugins/c9.ide.layout.classic/images/tab_menu@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab_menu.png rename to plugins/c9.ide.layout.classic/images/tab_menu@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab_menu_dark.png b/plugins/c9.ide.layout.classic/images/tab_menu_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab_menu_dark.png rename to plugins/c9.ide.layout.classic/images/tab_menu_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab_menu_flat_light.png b/plugins/c9.ide.layout.classic/images/tab_menu_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab_menu_flat_light.png rename to plugins/c9.ide.layout.classic/images/tab_menu_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab_plus.png b/plugins/c9.ide.layout.classic/images/tab_plus@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab_plus.png rename to plugins/c9.ide.layout.classic/images/tab_plus@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab_plus_dark.png b/plugins/c9.ide.layout.classic/images/tab_plus_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab_plus_dark.png rename to plugins/c9.ide.layout.classic/images/tab_plus_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tab_plus_flat_light.png b/plugins/c9.ide.layout.classic/images/tab_plus_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tab_plus_flat_light.png rename to plugins/c9.ide.layout.classic/images/tab_plus_flat_light@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tabsave-flat.png b/plugins/c9.ide.layout.classic/images/tabsave-flat@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tabsave-flat.png rename to plugins/c9.ide.layout.classic/images/tabsave-flat@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tabsave.png b/plugins/c9.ide.layout.classic/images/tabsave@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tabsave.png rename to plugins/c9.ide.layout.classic/images/tabsave@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tree_close_arrow_small.png b/plugins/c9.ide.layout.classic/images/tree_close_arrow_small@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tree_close_arrow_small.png rename to plugins/c9.ide.layout.classic/images/tree_close_arrow_small@1x.png diff --git a/plugins/c9.ide.layout.classic/images/tree_close_arrow_small_dark.png b/plugins/c9.ide.layout.classic/images/tree_close_arrow_small_dark@1x.png similarity index 100% rename from plugins/c9.ide.layout.classic/images/tree_close_arrow_small_dark.png rename to plugins/c9.ide.layout.classic/images/tree_close_arrow_small_dark@1x.png diff --git a/plugins/c9.ide.layout.classic/layout.js b/plugins/c9.ide.layout.classic/layout.js index c2f32a63..e68821b0 100644 --- a/plugins/c9.ide.layout.classic/layout.js +++ b/plugins/c9.ide.layout.classic/layout.js @@ -24,6 +24,8 @@ define(function(require, exports, module) { var plugin = new Plugin("Ajax.org", main.consumes); var emit = plugin.getEmitter(); + var highResolution = c9.location.indexOf("2x=1") > -1; + var dashboardUrl = options.dashboardUrl || "/dashboard.html"; var logobar, removeTheme, theme; @@ -109,7 +111,7 @@ define(function(require, exports, module) { // Offline // preload the offline images programmatically: [ - "noconnection.png", "close_tab_btn.png" + "close_tab_btn@1x.png" ].forEach(function(p) { var img = new Image(); img.src = options.staticPrefix + "/images/" + p; @@ -135,6 +137,15 @@ define(function(require, exports, module) { "flat-dark": 1 }; + function setImageResolution(value) { + if (window.matchMedia) { + var mq = window.matchMedia("(-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) "); + if (mq.matches || highResolution) + return value.replace(/@1x/g, "@2x"); + } + return value; + } + function updateTheme(noquestion, type) { var sTheme = settings.get("user/general/@skin"); if (!allowedThemes[sTheme]) @@ -160,6 +171,8 @@ define(function(require, exports, module) { theme = theme.replace(/(url\(["']?)\/static\/plugins\//g, function(_, x) { return x + url; }); + theme = setImageResolution(theme); + // Load the theme css ui.insertCss(theme, false, { addOther: function(remove) { removeTheme = remove; } diff --git a/plugins/c9.ide.layout.classic/less/lesshat.less b/plugins/c9.ide.layout.classic/less/lesshat.less index 302260e5..ade915fe 100755 --- a/plugins/c9.ide.layout.classic/less/lesshat.less +++ b/plugins/c9.ide.layout.classic/less/lesshat.less @@ -20,13 +20,9 @@ .image-2x(@image; @width; @height; @repeat: no-repeat; @important: false) { @filename : ~`/(.*)\.(jpg|jpeg|png|gif)|$/.exec(@{image})[1] || ""`; @extension : ~`/(.*)\.(jpg|jpeg|png|gif)|$/.exec(@{image})[2] || ""`; - background-image: ~`(function(){ return "url(@{filename}.@{extension})" + ("@{important}" == "true" ? ' !important' : '');})()`; background-repeat: @repeat; - - @media (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) { - background-image: ~`(function(){ return "url(@{filename}@2x.@{extension})" + ("@{important}" == "true" ? ' !important' : '');})()`; - background-size: ~`(function(){ return "@{width} @{height}" + ("@{important}" == "true" ? ' !important' : '');})()`; - } + background-image: ~`(function(){ return "url(@{filename}@1x.@{extension})" + ("@{important}" == "true" ? ' !important' : '');})()`; + background-size: ~`(function(){ return "@{width} @{height}" + ("@{important}" == "true" ? ' !important' : '');})()`; } .display(@state){ .display(@state) when (@state = true) { diff --git a/plugins/c9.ide.layout.classic/loading-flat.css b/plugins/c9.ide.layout.classic/loading-flat.css index 25c7e30e..2808067b 100644 --- a/plugins/c9.ide.layout.classic/loading-flat.css +++ b/plugins/c9.ide.layout.classic/loading-flat.css @@ -27,7 +27,7 @@ } #c9logo{ - background-image: url(images/c9-logo-blue.png); + background-image: url(images/c9-logo-blue@1x.png); background-repeat: no-repeat; background-position: 50% 30%; position: relative; @@ -38,7 +38,7 @@ height: 279px; } .dark #c9logo{ - background-image: url(images/c9-logo-white.png); + background-image: url(images/c9-logo-white@1x.png); } @media screen and (max-height: 600px) { diff --git a/plugins/c9.ide.layout.classic/loading.css b/plugins/c9.ide.layout.classic/loading.css index e9a7c34d..ca46f202 100644 --- a/plugins/c9.ide.layout.classic/loading.css +++ b/plugins/c9.ide.layout.classic/loading.css @@ -1,5 +1,5 @@ #loadingide { - background-image: url(images/loading-logo.png); + background-image: url(images/loading-logo@1x.png); background-repeat: no-repeat; background-color: #222222; background-position: 50% 40%; diff --git a/plugins/c9.ide.layout.classic/skins.xml b/plugins/c9.ide.layout.classic/skins.xml index 98a24f02..4ec81650 100644 --- a/plugins/c9.ide.layout.classic/skins.xml +++ b/plugins/c9.ide.layout.classic/skins.xml @@ -69,7 +69,6 @@
-
diff --git a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less index 7246ca15..a92f9b3d 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less @@ -977,7 +977,6 @@ @button-console-active-background: lighten(rgba(0, 0, 0, 0.09), @lighten-chrome); @button-console-close: "console_close_btn_dark.png"; -@button-console-close-retina: "console_close_btn_dark@2x.png"; @button-console-clear: "clear_dark.png"; @button-console-maximize: "maximize_dark.png"; @button-console-popout: "popout_dark.png"; diff --git a/plugins/c9.ide.layout.classic/themes/default-dark.less b/plugins/c9.ide.layout.classic/themes/default-dark.less index bdcb5ab8..651e18f2 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark.less @@ -977,7 +977,6 @@ @button-console-active-background: lighten(rgba(0, 0, 0, 0.09), @lighten-chrome); @button-console-close: "console_close_btn_dark.png"; -@button-console-close-retina: "console_close_btn_dark@2x.png"; @button-console-clear: "clear_dark.png"; @button-console-maximize: "maximize_dark.png"; @button-console-popout: "popout_dark.png"; diff --git a/plugins/c9.ide.layout.classic/themes/default-flat-dark.less b/plugins/c9.ide.layout.classic/themes/default-flat-dark.less index adbed39c..b9a60c8d 100644 --- a/plugins/c9.ide.layout.classic/themes/default-flat-dark.less +++ b/plugins/c9.ide.layout.classic/themes/default-flat-dark.less @@ -977,7 +977,6 @@ @button-console-active-background: darken(rgba(255, 255, 255, 0.4), @darken-chrome); @button-console-close: "console_close_btn.png"; -@button-console-close-retina: "console_close_btn@2x.png"; @button-console-clear: "clear_dark_flat_light.png"; @button-console-maximize: "maximize.png"; @button-console-popout: "popout.png"; diff --git a/plugins/c9.ide.layout.classic/themes/default-flat-light.less b/plugins/c9.ide.layout.classic/themes/default-flat-light.less index 27427342..64b6e66f 100644 --- a/plugins/c9.ide.layout.classic/themes/default-flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-flat-light.less @@ -977,7 +977,6 @@ @button-console-active-background: darken(rgba(255, 255, 255, 0.4), @darken-chrome); @button-console-close: "console_close_btn.png"; -@button-console-close-retina: "console_close_btn@2x.png"; @button-console-clear: "clear_dark_flat_light.png"; @button-console-maximize: "maximize.png"; @button-console-popout: "popout.png"; diff --git a/plugins/c9.ide.layout.classic/themes/default-light-gray.less b/plugins/c9.ide.layout.classic/themes/default-light-gray.less index 78595746..86d50691 100644 --- a/plugins/c9.ide.layout.classic/themes/default-light-gray.less +++ b/plugins/c9.ide.layout.classic/themes/default-light-gray.less @@ -977,7 +977,6 @@ @button-console-active-background: darken(rgba(255, 255, 255, 0.4), @darken-chrome); @button-console-close: "console_close_btn.png"; -@button-console-close-retina: "console_close_btn@2x.png"; @button-console-clear: "clear.png"; @button-console-maximize: "maximize.png"; @button-console-popout: "popout.png"; diff --git a/plugins/c9.ide.layout.classic/themes/default-light.less b/plugins/c9.ide.layout.classic/themes/default-light.less index bfdb8bc9..fe4a1801 100644 --- a/plugins/c9.ide.layout.classic/themes/default-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-light.less @@ -977,7 +977,6 @@ @button-console-active-background: darken(rgba(255, 255, 255, 0.4), @darken-chrome); @button-console-close: "console_close_btn.png"; -@button-console-close-retina: "console_close_btn@2x.png"; @button-console-clear: "clear.png"; @button-console-maximize: "maximize.png"; @button-console-popout: "popout.png"; diff --git a/plugins/c9.ide.layout.classic/themes/flat-dark.less b/plugins/c9.ide.layout.classic/themes/flat-dark.less index 40d55d3f..cc216f1c 100644 --- a/plugins/c9.ide.layout.classic/themes/flat-dark.less +++ b/plugins/c9.ide.layout.classic/themes/flat-dark.less @@ -218,8 +218,4 @@ .has_apf .bar-preferences .blackdg{ border: 0; -} - -@media print, (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) { - -} +} \ No newline at end of file diff --git a/plugins/c9.ide.preferences/images/tree_close_arrow_small.png b/plugins/c9.ide.preferences/images/tree_close_arrow_small@1x.png similarity index 100% rename from plugins/c9.ide.preferences/images/tree_close_arrow_small.png rename to plugins/c9.ide.preferences/images/tree_close_arrow_small@1x.png diff --git a/plugins/c9.ide.preview/images/c9-preview-repeat.png b/plugins/c9.ide.preview/images/c9-preview-repeat@1x.png similarity index 100% rename from plugins/c9.ide.preview/images/c9-preview-repeat.png rename to plugins/c9.ide.preview/images/c9-preview-repeat@1x.png diff --git a/plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png b/plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark@1x.png similarity index 100% rename from plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png rename to plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark@1x.png diff --git a/plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png b/plugins/c9.ide.preview/images/c9-preview-repeat_flat_light@1x.png similarity index 100% rename from plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png rename to plugins/c9.ide.preview/images/c9-preview-repeat_flat_light@1x.png diff --git a/plugins/c9.ide.preview/preview.js b/plugins/c9.ide.preview/preview.js index 93fda119..9dcfc61e 100644 --- a/plugins/c9.ide.preview/preview.js +++ b/plugins/c9.ide.preview/preview.js @@ -593,7 +593,7 @@ define(function(require, exports, module) { new ui.button({ id: "btnMode", submenu: menu.aml, - icon: "page_white.png", + icon: true, skin: "btn-switcher", caption: "browser" }) diff --git a/plugins/c9.ide.run.debug/breakpoints.js b/plugins/c9.ide.run.debug/breakpoints.js index 0b304d3d..769e6267 100644 --- a/plugins/c9.ide.run.debug/breakpoints.js +++ b/plugins/c9.ide.run.debug/breakpoints.js @@ -441,7 +441,7 @@ define(function(require, exports, module) { btnBreakpoints = hbox1.insertBefore(new ui.button({ id: "btnBreakpoints", tooltip: "Deactivate All Breakpoints", - icon: "toggle_breakpoints2.png", + icon: true, skinset: "default", skin: "c9-menu-btn", class: "nosize toggle_breakpoints2" @@ -449,7 +449,7 @@ define(function(require, exports, module) { btnBpRemove = hbox2.insertBefore(new ui.button({ id: "btnBpRemove", tooltip: "Clear All Breakpoints", - icon: "remove_breakpoints.png", + icon: true, skinset: "default", skin: "c9-menu-btn", class: "nosize remove_breakpoints" diff --git a/plugins/c9.ide.run.debug/callstack.js b/plugins/c9.ide.run.debug/callstack.js index 752e9796..beced677 100644 --- a/plugins/c9.ide.run.debug/callstack.js +++ b/plugins/c9.ide.run.debug/callstack.js @@ -57,7 +57,7 @@ define(function(require, exports, module) { caption: "Function", value: "name", width: "60%", - icon: "debugger/stckframe_obj.gif" + icon: true }, { caption: "File", getText: function(node) { @@ -260,7 +260,7 @@ define(function(require, exports, module) { button = hbox.appendChild(new ui.button({ id: "btnScripts", tooltip: "Available internal and external scripts", - icon: "scripts.png", + icon: true, right: "0", top: "0", class: "scripts", diff --git a/plugins/c9.ide.run.debug/debuggers/debugger.xml b/plugins/c9.ide.run.debug/debuggers/debugger.xml index e757fb11..9d47a94c 100644 --- a/plugins/c9.ide.run.debug/debuggers/debugger.xml +++ b/plugins/c9.ide.run.debug/debuggers/debugger.xml @@ -2,7 +2,7 @@ diff --git a/plugins/c9.ide.run.debug/variables.js b/plugins/c9.ide.run.debug/variables.js index d9fca8fa..78a1acb9 100644 --- a/plugins/c9.ide.run.debug/variables.js +++ b/plugins/c9.ide.run.debug/variables.js @@ -43,7 +43,7 @@ define(function(require, exports, module) { value: "name", defaultValue: "Scope", width: "40%", - icon: "debugger/genericvariable_obj.gif", + icon: true, type: "tree" }, { caption: "Value", diff --git a/plugins/c9.ide.run.debug/watches.js b/plugins/c9.ide.run.debug/watches.js index b63577d3..d2cc9c92 100644 --- a/plugins/c9.ide.run.debug/watches.js +++ b/plugins/c9.ide.run.debug/watches.js @@ -65,7 +65,7 @@ define(function(require, exports, module) { match: "name", value: "name", width: "60%", - icon: "debugger/genericvariable_obj.gif", + icon: true, type: "tree", editor: "textbox" }, { diff --git a/plugins/c9.ide.run/gui.js b/plugins/c9.ide.run/gui.js index 2a326d3d..daa37a6f 100644 --- a/plugins/c9.ide.run/gui.js +++ b/plugins/c9.ide.run/gui.js @@ -628,7 +628,7 @@ define(function(require, module, exports) { caption: "Run", disabled: true, class: "runbtn stopped", - icon: "run.png", + icon: true, }), 100, plugin); btnRun.on("contextmenu", function(e) { diff --git a/plugins/c9.ide.run/output.xml b/plugins/c9.ide.run/output.xml index 31265eac..e25087fc 100644 --- a/plugins/c9.ide.run/output.xml +++ b/plugins/c9.ide.run/output.xml @@ -5,7 +5,7 @@ skin = "c9-toolbarbutton-glossy" caption = "Run" width = "54" - icon = "run.png" + icon = "true" class = "runbtn stopped" visible = "true" style = "min-width:54px;" /> @@ -13,11 +13,11 @@ id = "btnRestart" skin = "c9-toolbarbutton-glossy" width = "22" - icon = "restart-icon.png" + icon = "true" tooltip = "Restart" class = "light restart" style = "min-width:22px" /> - + Command: @@ -26,7 +26,7 @@ Date: Mon, 25 Dec 2017 16:12:57 +0400 Subject: [PATCH 2/4] remove uses of staticPrefix and add validation for image paths --- node_modules/architect-build/build.js | 105 +++++++++++------- plugins/c9.ide.ace.gotoline/skin.xml | 20 ---- plugins/c9.ide.help/skin.xml | 4 +- plugins/c9.ide.imgeditor/style.css | 2 +- .../c9.ide.layout.classic/less/button.less | 3 +- .../c9.ide.layout.classic/less/datagrid.less | 4 +- plugins/c9.ide.layout.classic/less/frame.less | 4 +- .../c9.ide.layout.classic/less/searchbox.less | 2 +- .../themes/default-dark-gray.less | 36 +++--- .../themes/default-dark.less | 36 +++--- .../themes/default-flat-dark.less | 38 +++---- .../themes/default-flat-light.less | 34 +++--- .../themes/default-light-gray.less | 30 ++--- .../themes/default-light.less | 30 ++--- .../themes/flat-dark.less | 2 +- .../themes/flat-light.less | 2 +- plugins/c9.ide.terminal/style.css | 2 +- plugins/c9.ide.test/style.css | 22 ++-- plugins/c9.ide.upload/upload.css | 2 +- plugins/c9.ide.welcome/style.css | 6 +- 20 files changed, 195 insertions(+), 189 deletions(-) diff --git a/node_modules/architect-build/build.js b/node_modules/architect-build/build.js index 2c0dd3ac..99901df1 100644 --- a/node_modules/architect-build/build.js +++ b/node_modules/architect-build/build.js @@ -163,27 +163,32 @@ function compileLess(opts, sources, callback) { cache.less = Object.create(null); if (cache && !cache.images) cache.images = Object.create(null); + + + function expandVariables(code, variables, plugin) { + variables["base-path"] = "/static/" + libs.staticPrefix; + variables["icon-path"] = variables["base-path"] + "/icons"; + variables["image-path"] = variables["base-path"] + "/images"; + variables["plugin-path"] = plugin + ? "/static/" + path.dirname(plugin.packagePath) + : "plugin-path"; + + return code.replace(/@({([\w-]+)}|[\w-]+)/g, function(_, m, m1) { + var name = m1 || m; + return variables[name] || _; + }); + } + + // function var libs = opts.lessLibs; less.forEach(function(file) { - var plugin = file.pkg.parent.plugin || {}; - if (file.pkg.id.match(/(keyframes|font-awesome)\.css$/)) { - cssCode.push(file.code - .replace(/@\{image-path\}/g, plugin.staticPrefix + "/images") - .replace(/@\{icon-path\}/g, plugin.staticPrefix + "/icons") - .replace(/@\{base-path\}/g, plugin.staticPrefix) - ); - return; - } + var plugin = file.pkg.parent.plugin; - var staticPrefix = plugin.staticPrefix || libs.staticPrefix; var id = file.pkg.id.replace(/^[^!]+!/, ""); - // Complete paths, but not subdirectories like foo/images/bar.png - var lessCode = file.code.replace(/(["(])(images|icons)\//g, "$1" + staticPrefix + "/$2/"); code.push( "/* @file " + id + " */\nß{" - + lessPathLib(staticPrefix) - + lessCode + + expandVariables(file.code, Object.create(null), plugin) + "}" ); }); @@ -193,7 +198,7 @@ function compileLess(opts, sources, callback) { filename: opts.basepath + '/unknown.less', compress: !!opts.compress }; - code = lessPathLib("/static/" + libs.staticPrefix) + libs.join("\n") + code.join("\n"); + code = expandVariables(libs.join("\n"), Object.create(null)) + code.join("\n"); var lessParser = require("less"); return lessParser.parse(code, ctx, function(err, tree, imports, options) { @@ -202,36 +207,69 @@ function compileLess(opts, sources, callback) { toCss(tree, imports, options, function(err, css) { if (err) return callback(err); css = css.replace(/ß /g, "").replace(/^ +/gm, "\t"); - css = checkImages(css, cache); + css = checkImages(css, libs, cache); + css = addCssPrefixes(css); callback(null, { code: css }); }); }); } -function checkImages(css, cache) { +function checkImages(css, libs, cache) { var images = cache && cache.images || Object.create(null); var root = __dirname + "/../../"; var t = Date.now(); - css = css.replace(/(url\(['"]?\/static\/)([^"')]+)/g, function(_, prefix, imagePath) { + var file; + var count = 0; + var missingCount = 0; + css = css.replace(/(url\(['"]?)(?:\/static\/)?([^"')]+)|@file (\S+)/g, function(_, prefix, imagePath, fileId) { + if (fileId) { + file = fileId; + return _; + } + if (/^data:|^#/.test(imagePath)) + return _; + count++; + + if (/^(images|icons)/.test(imagePath)) + imagePath = libs.staticPrefix + "/" + imagePath; + var dir = path.dirname(imagePath); var name = path.basename(imagePath); try { if (!images[dir]) images[dir] = fs.readdirSync(root + dir); - } catch(e) { + } catch (e) { images[dir] = []; } - if (images[dir].indexOf(name) != -1) - return prefix + imagePath; - var name1 = name.replace("@1x", ""); - if (images[dir].indexOf(name1) != -1) - return prefix + dir + name1; + var nameNx = name.replace("@1x", ""); + var name1x = nameNx.replace(/\.\w+$/, "@1x$&"); + var name2x = nameNx.replace(/\.\w+$/, "@2x$&"); - console.log("missing image:" + imagePath); - return prefix + undefined + imagePath; + var hasNx = images[dir].indexOf(nameNx) != -1; + var has1x = images[dir].indexOf(name1x) != -1; + var has2x = images[dir].indexOf(name2x) != -1; + + if (hasNx) { + name = nameNx; + } else if (has1x) { + name = name1x; + if (!has2x) + reportError(imagePath + " 2x"); + } + else { + reportError(imagePath); + } + + // todo check image sizes + return prefix + "/static/" + dir + "/" + name; }); - console.log(t- Date.now()); - return css + + function reportError(imagePath) { + missingCount++; + console.log("" + missingCount + " missing image: " + imagePath, "from /" + file); + } + console.log("checked " + count + " images in " + (t - Date.now()) + "ms"); + return css; } function addCssPrefixes(css) { @@ -260,20 +298,9 @@ function toCss(tree, imports, options, callback) { catch (err) { return callback(err); } - css = addCssPrefixes(css); callback(null, css); } -function lessPathLib(staticPrefix) { - if (!staticPrefix) return ""; - - staticPrefix = staticPrefix.replace(/^(\/static\/)?(plugins\/)?/, "/static/plugins/"); - - return "@base-path : \"" + staticPrefix + "\";\n" - + "@image-path : \"" + staticPrefix + "/images\";\n" - + "@icon-path : \"" + staticPrefix + "/icons\";\n"; -} - function stripLess(sources) { var less = []; diff --git a/plugins/c9.ide.ace.gotoline/skin.xml b/plugins/c9.ide.ace.gotoline/skin.xml index 50c6a237..7214d244 100644 --- a/plugins/c9.ide.ace.gotoline/skin.xml +++ b/plugins/c9.ide.ace.gotoline/skin.xml @@ -86,30 +86,10 @@ border: @gotoline-border-dark; border-left: 0; } - .brGtlContent { - } - .barGotoline .brGtlTop { - background: url(images/barGotoLineCorners.png) no-repeat 0 0; - height: 3px; - width: 4px; - position: absolute; - top: -3px; - left:0; - } - .barGotoline .brGtlBottom { - background: url(images/barGotoLineCorners.png) no-repeat 0 -3px; - height: 3px; - width: 4px; - position: absolute; - bottom: -3px; - left:0; - } ]]>
-
-
diff --git a/plugins/c9.ide.help/skin.xml b/plugins/c9.ide.help/skin.xml index 08977e4a..97b0a444 100644 --- a/plugins/c9.ide.help/skin.xml +++ b/plugins/c9.ide.help/skin.xml @@ -15,7 +15,7 @@ .aboutDialogBox .aboutImage { position:relative; color: white; - background: url(images/about_cloud.png) no-repeat 0 0; + background: url(@plugin-path/images/about_cloud.png) no-repeat 0 0; width: 515px; height: 339px; } @@ -29,7 +29,7 @@ .win-help-about .buttons .close { height: 20px; width: 19px; - background: url(images/close.png) no-repeat 4px 3px; + background: url(@plugin-path/images/close.png) no-repeat 4px 3px; } .win-help-about .buttons .close.hover { diff --git a/plugins/c9.ide.imgeditor/style.css b/plugins/c9.ide.imgeditor/style.css index a41bc9af..13ff6dda 100644 --- a/plugins/c9.ide.imgeditor/style.css +++ b/plugins/c9.ide.imgeditor/style.css @@ -42,7 +42,7 @@ } .imgeditor canvas{ - background: url("@{image-path}/background.png"); + background: url("@{plugin-path}/images/background.png"); cursor: crosshair; box-shadow: 0 0 8px rgba(0,0,0,0.5); display: inline-block; diff --git a/plugins/c9.ide.layout.classic/less/button.less b/plugins/c9.ide.layout.classic/less/button.less index 4bab093e..48d5c467 100644 --- a/plugins/c9.ide.layout.classic/less/button.less +++ b/plugins/c9.ide.layout.classic/less/button.less @@ -450,10 +450,9 @@ .submenu .lbl .btnArrow { display : inline-block; - background-image : url("@{image-path}/arrow_small.png"); + background-image : url("@{image-path}/btn-arrow.png"); background-repeat : no-repeat; } - .btn .lbl { margin : 0; diff --git a/plugins/c9.ide.layout.classic/less/datagrid.less b/plugins/c9.ide.layout.classic/less/datagrid.less index 1efbbb10..2b961978 100644 --- a/plugins/c9.ide.layout.classic/less/datagrid.less +++ b/plugins/c9.ide.layout.classic/less/datagrid.less @@ -413,7 +413,7 @@ } .datagrid .loading>.treecell strong{ - background : url("@{image-path}/file-tree-load-spinner.gif") no-repeat 0 0; + .image-2x("@{tree-spinner}", @tree-spinner-width, @tree-spinner-height); width : 16px; height : 16px; top : -2px !important; @@ -422,7 +422,7 @@ margin-right : -3px !important; } .datagrid .loading.selected>.treecell strong{ - background : url("@{image-path}/file-tree-load-spinner-selected.gif") no-repeat 0 0; + .image-2x("@{tree-selected-focus-spinner}", @tree-spinner-width, @tree-spinner-height); } .datagrid .row>span{ vertical-align : top; diff --git a/plugins/c9.ide.layout.classic/less/frame.less b/plugins/c9.ide.layout.classic/less/frame.less index 735fc232..70833dff 100644 --- a/plugins/c9.ide.layout.classic/less/frame.less +++ b/plugins/c9.ide.layout.classic/less/frame.less @@ -59,11 +59,11 @@ position : absolute; right : 5px; top : 4px; - background : url("@{image-path}/@{frame-close-button}") no-repeat 0 -14px; + background : url("@{image-path}/@{frame-close-button}") 0 -14px/42px 28px no-repeat; cursor : pointer; z-index : 10; } - + .frame .buttons div.close:hover { background-position : -14px -14px; } .frame .buttons div.close:active { background-position : -28px -14px; } diff --git a/plugins/c9.ide.layout.classic/less/searchbox.less b/plugins/c9.ide.layout.classic/less/searchbox.less index 461ec5aa..60e51805 100644 --- a/plugins/c9.ide.layout.classic/less/searchbox.less +++ b/plugins/c9.ide.layout.classic/less/searchbox.less @@ -114,7 +114,7 @@ font-smoothing: true; } .searchbox.dark .btnclose{ - background-image: url("@{image-path}/btnclose_flat_light.png"); + .image-2x("@{image-path}/btnclose_flat_light.png", 14px, 28px); } .searchbox.dark .ace-tm .ace_cursor{ color : #919191 !important; diff --git a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less index a92f9b3d..49b067d2 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less @@ -230,8 +230,8 @@ @time-slider-play-border: 3px solid black; @time-slider-play-gradient: linear-gradient(to bottom, rgb(63, 63, 63), rgb(39, 39, 39)); @time-slider-play-box-shadow: 4px 6px 13px 0px rgba(0, 0, 0, 0.65), 0 1px rgba(255, 255, 255, 0.08); -@time-slider-play-icon-image: "@{image-path}/play.png"; -@time-slider-play-icon-pause-image: "@{image-path}/pause.png"; +@time-slider-play-icon-image: "plugins/c9.ide.collab/timeslider/images/play.png"; +@time-slider-play-icon-pause-image: "plugins/c9.ide.collab/timeslider/images/pause.png"; @time-slider-play-icon-image-width: 47px; @time-slider-play-icon-image-height: 47px; @time-slider-play-icon-background-position: -7px -6px; @@ -272,7 +272,7 @@ @time-slider-stepper-top: 20px; @time-slider-stepper-width: 25px; @time-slider-stepper-height: 20px; -@time-slider-stepper-image: "@{image-path}/stepper_buttons.png"; +@time-slider-stepper-image: "plugins/c9.ide.collab/timeslider/images/stepper_buttons.png"; @time-slider-stepper-image-width: 23px; @time-slider-stepper-image-height: 14px; @@ -328,7 +328,7 @@ @time-slider-revert-active-gradient: linear-gradient(to bottom, rgb(43, 43, 43) 0%, rgb(36, 36, 36) 100%); @time-slider-revert-active-padding: 2px 0px 0px 1px; -@time-slider-close-image: "@{image-path}/close_tab_btn.png"; +@time-slider-close-image: "plugins/c9.ide.collab/timeslider/images/close_tab_btn.png"; @time-slider-close-image-width: 42px; @time-slider-close-image-height: 28px; @time-slider-close-idle-position: 0 -14px; @@ -465,7 +465,7 @@ @pane-menu-upward-active-box-shadow: 0 1px lighten(#3d3d3d, @lighten-chrome), inset 0 -1px lighten(#525356, @lighten-chrome); @pane-menu-upward-active-gradient: linear-gradient(to bottom, lighten(#494949, @lighten-chrome) 0%, lighten(#4b4b4c, @lighten-chrome) 100%); -@pane-menu-splits-image: "@{image-path}/splits.png"; +@pane-menu-splits-image: "plugins/c9.ide.behaviors/images/splits.png"; @pane-menu-splits-image-width: 138px; @pane-menu-splits-image-height: 54px; @@ -1094,15 +1094,15 @@ @preview-chooser-font-size: 11px; @preview-chooser-font-weight: bold; -@preview-icon-close: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-close: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-close-width: 23px; @preview-icon-close-height: 280px; @preview-icon-close-position: 0 -66px; -@preview-icon-refresh: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-refresh: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-refresh-width: 23px; @preview-icon-refresh-height: 280px; @preview-icon-refresh-position: 0 -89px;; -@preview-icon-popout: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-popout: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-popout-width: 23px; @preview-icon-popout-height: 280px; @preview-icon-popout-position: 0 -114px; @@ -1110,12 +1110,12 @@ @preview-icon-settings-width: @c9-repeat-x-width; @preview-icon-settings-height: @c9-repeat-x-height; @preview-icon-settings-position: 50% -366px; -@preview-icon-goforward: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goforward: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goforward-width: 23px; @preview-icon-goforward-height: 280px; @preview-icon-goforward-position: 0 -185px; @preview-icon-goforward-disabled-position: 0 -209px; -@preview-icon-goback: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goback: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goback-width: 23px; @preview-icon-goback-height: 280px; @preview-icon-goback-position: 0 -137px; @@ -1387,23 +1387,23 @@ @complete-dark-paramhelp: lighten(#FFFFFF, @lighten-chrome); // Complete Icons -@complete-icon-event: "@{image-path}/event.png"; -@complete-icon-method: "@{image-path}/method.png"; -@complete-icon-method2: "@{image-path}/method2.png"; -@complete-icon-package: "@{image-path}/package.png"; -@complete-icon-property: "@{image-path}/property.png"; -@complete-icon-property2: "@{image-path}/property2.png"; +@complete-icon-event: "plugins/c9.ide.language/images/event.png"; +@complete-icon-method: "plugins/c9.ide.language/images/method.png"; +@complete-icon-method2: "plugins/c9.ide.language/images/method2.png"; +@complete-icon-package: "plugins/c9.ide.language/images/package.png"; +@complete-icon-property: "plugins/c9.ide.language/images/property.png"; +@complete-icon-property2: "plugins/c9.ide.language/images/property2.png"; // Welcome @welcome-color: #333; -@welcome-background: lighten(#193342, @lighten-chrome) url("@{image-path}/welcome-cover.png"); +@welcome-background: lighten(#193342, @lighten-chrome) url("plugins/c9.ide.welcome/images/welcome-cover.png"); @welcome-top-border: lighten(rgba(255,255,255,0.03), @lighten-chrome); @welcome-color: lighten(#f1f1f1, @lighten-chrome); @welcome-font-smoothing: true; @welcome-highlight-color: lighten(#9BB11D, @lighten-chrome); @welcome-panel-border-color: lighten(rgba(255, 255, 255, 0.09), @lighten-chrome); @welcome-panel-background: lighten(rgba(255, 255, 255, 0.08), @lighten-chrome); -@welcome-logo-image: "@{image-path}/welcome-logo.png"; +@welcome-logo-image: "plugins/c9.ide.welcome/images/welcome-logo.png"; @welcome-logo-image-width: 155px; @welcome-logo-image-height: 103px; @welcome-alter-widgets: true; diff --git a/plugins/c9.ide.layout.classic/themes/default-dark.less b/plugins/c9.ide.layout.classic/themes/default-dark.less index 651e18f2..810924b8 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark.less @@ -230,8 +230,8 @@ @time-slider-play-border: 3px solid black; @time-slider-play-gradient: linear-gradient(to bottom, rgb(63, 63, 63), rgb(39, 39, 39)); @time-slider-play-box-shadow: 4px 6px 13px 0px rgba(0, 0, 0, 0.65), 0 1px rgba(255, 255, 255, 0.08); -@time-slider-play-icon-image: "@{image-path}/play.png"; -@time-slider-play-icon-pause-image: "@{image-path}/pause.png"; +@time-slider-play-icon-image: "plugins/c9.ide.collab/timeslider/images/play.png"; +@time-slider-play-icon-pause-image: "plugins/c9.ide.collab/timeslider/images/pause.png"; @time-slider-play-icon-image-width: 47px; @time-slider-play-icon-image-height: 47px; @time-slider-play-icon-background-position: -7px -6px; @@ -272,7 +272,7 @@ @time-slider-stepper-top: 20px; @time-slider-stepper-width: 25px; @time-slider-stepper-height: 20px; -@time-slider-stepper-image: "@{image-path}/stepper_buttons.png"; +@time-slider-stepper-image: "plugins/c9.ide.collab/timeslider/images/stepper_buttons.png"; @time-slider-stepper-image-width: 23px; @time-slider-stepper-image-height: 14px; @@ -328,7 +328,7 @@ @time-slider-revert-active-gradient: linear-gradient(to bottom, rgb(43, 43, 43) 0%, rgb(36, 36, 36) 100%); @time-slider-revert-active-padding: 2px 0px 0px 1px; -@time-slider-close-image: "@{image-path}/close_tab_btn.png"; +@time-slider-close-image: "plugins/c9.ide.collab/timeslider/images/close_tab_btn.png"; @time-slider-close-image-width: 42px; @time-slider-close-image-height: 28px; @time-slider-close-idle-position: 0 -14px; @@ -465,7 +465,7 @@ @pane-menu-upward-active-box-shadow: 0 1px lighten(#3d3d3d, @lighten-chrome), inset 0 -1px lighten(#525356, @lighten-chrome); @pane-menu-upward-active-gradient: linear-gradient(to bottom, lighten(#494949, @lighten-chrome) 0%, lighten(#4b4b4c, @lighten-chrome) 100%); -@pane-menu-splits-image: "@{image-path}/splits.png"; +@pane-menu-splits-image: "plugins/c9.ide.behaviors/images/splits.png"; @pane-menu-splits-image-width: 138px; @pane-menu-splits-image-height: 54px; @@ -1094,15 +1094,15 @@ @preview-chooser-font-size: 11px; @preview-chooser-font-weight: bold; -@preview-icon-close: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-close: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-close-width: 23px; @preview-icon-close-height: 280px; @preview-icon-close-position: 0 -66px; -@preview-icon-refresh: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-refresh: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-refresh-width: 23px; @preview-icon-refresh-height: 280px; @preview-icon-refresh-position: 0 -89px;; -@preview-icon-popout: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-popout: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-popout-width: 23px; @preview-icon-popout-height: 280px; @preview-icon-popout-position: 0 -114px; @@ -1110,12 +1110,12 @@ @preview-icon-settings-width: @c9-repeat-x-width; @preview-icon-settings-height: @c9-repeat-x-height; @preview-icon-settings-position: 50% -366px; -@preview-icon-goforward: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goforward: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goforward-width: 23px; @preview-icon-goforward-height: 280px; @preview-icon-goforward-position: 0 -185px; @preview-icon-goforward-disabled-position: 0 -209px; -@preview-icon-goback: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goback: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goback-width: 23px; @preview-icon-goback-height: 280px; @preview-icon-goback-position: 0 -137px; @@ -1387,23 +1387,23 @@ @complete-dark-paramhelp: lighten(#FFFFFF, @lighten-chrome); // Complete Icons -@complete-icon-event: "@{image-path}/event.png"; -@complete-icon-method: "@{image-path}/method.png"; -@complete-icon-method2: "@{image-path}/method2.png"; -@complete-icon-package: "@{image-path}/package.png"; -@complete-icon-property: "@{image-path}/property.png"; -@complete-icon-property2: "@{image-path}/property2.png"; +@complete-icon-event: "plugins/c9.ide.language/images/event.png"; +@complete-icon-method: "plugins/c9.ide.language/images/method.png"; +@complete-icon-method2: "plugins/c9.ide.language/images/method2.png"; +@complete-icon-package: "plugins/c9.ide.language/images/package.png"; +@complete-icon-property: "plugins/c9.ide.language/images/property.png"; +@complete-icon-property2: "plugins/c9.ide.language/images/property2.png"; // Welcome @welcome-color: #333; -@welcome-background: lighten(#193342, @lighten-chrome) url("@{image-path}/welcome-cover.png"); +@welcome-background: lighten(#193342, @lighten-chrome) url("plugins/c9.ide.welcome/images/welcome-cover.png"); @welcome-top-border: lighten(rgba(255,255,255,0.03), @lighten-chrome); @welcome-color: lighten(#f1f1f1, @lighten-chrome); @welcome-font-smoothing: true; @welcome-highlight-color: lighten(#9BB11D, @lighten-chrome); @welcome-panel-border-color: lighten(rgba(255, 255, 255, 0.09), @lighten-chrome); @welcome-panel-background: lighten(rgba(255, 255, 255, 0.08), @lighten-chrome); -@welcome-logo-image: "@{image-path}/welcome-logo.png"; +@welcome-logo-image: "plugins/c9.ide.welcome/images/welcome-logo.png"; @welcome-logo-image-width: 155px; @welcome-logo-image-height: 103px; @welcome-alter-widgets: true; diff --git a/plugins/c9.ide.layout.classic/themes/default-flat-dark.less b/plugins/c9.ide.layout.classic/themes/default-flat-dark.less index b9a60c8d..33afc183 100644 --- a/plugins/c9.ide.layout.classic/themes/default-flat-dark.less +++ b/plugins/c9.ide.layout.classic/themes/default-flat-dark.less @@ -230,8 +230,8 @@ @time-slider-play-border: 0; @time-slider-play-gradient: linear-gradient(to bottom, #757574, #757574); @time-slider-play-box-shadow: none; -@time-slider-play-icon-image: "@{image-path}/play_flat_dark.png"; -@time-slider-play-icon-pause-image: "@{image-path}/pause_flat_dark.png"; +@time-slider-play-icon-image: "plugins/c9.ide.collab/timeslider/images/play_flat_dark.png"; +@time-slider-play-icon-pause-image: "plugins/c9.ide.collab/timeslider/images/pause_flat_dark.png"; @time-slider-play-icon-image-width: 5px; @time-slider-play-icon-image-height: 8px; @time-slider-play-icon-background-position: 50% 50%; @@ -272,7 +272,7 @@ @time-slider-stepper-top: 39px; @time-slider-stepper-width: 16px; @time-slider-stepper-height: 16px; -@time-slider-stepper-image: "@{image-path}/stepper_buttons_flat_light.png"; +@time-slider-stepper-image: "plugins/c9.ide.collab/timeslider/images/stepper_buttons_flat_light.png"; @time-slider-stepper-image-width: 21px; @time-slider-stepper-image-height: 8px; @@ -328,7 +328,7 @@ @time-slider-revert-active-gradient: linear-gradient(to bottom, #98c878 0%, #98c878 100%); @time-slider-revert-active-padding: @time-slider-revert-padding; -@time-slider-close-image: "@{image-path}/close_tab_btn_flat_light.png"; +@time-slider-close-image: "plugins/c9.ide.collab/timeslider/images/close_tab_btn_flat_light.png"; @time-slider-close-image-width: 42px; @time-slider-close-image-height: 28px; @time-slider-close-idle-position: 0 0; @@ -465,7 +465,7 @@ @pane-menu-upward-active-box-shadow: 0 1px darken(rgba(255, 255, 255, 0.6), @darken-chrome), inset 0 -1px darken(rgb(255, 255, 255), @darken-chrome); @pane-menu-upward-active-gradient: linear-gradient(to bottom, @menu-background 0%, @menu-background 100%); -@pane-menu-splits-image: "@{image-path}/splits_flat_dark.png"; +@pane-menu-splits-image: "plugins/c9.ide.behaviors/images/splits_flat_dark.png"; @pane-menu-splits-image-width: 138px; @pane-menu-splits-image-height: 53px; @@ -1094,28 +1094,28 @@ @preview-chooser-font-size: 12px; @preview-chooser-font-weight: normal; -@preview-icon-close: "@{image-path}/c9-preview-repeat_flat_dark.png"; +@preview-icon-close: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png"; @preview-icon-close-width: 23px; @preview-icon-close-height: 280px; @preview-icon-close-position: 0 -65px; -@preview-icon-refresh: "@{image-path}/c9-preview-repeat_flat_dark.png"; +@preview-icon-refresh: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png"; @preview-icon-refresh-width: 23px; @preview-icon-refresh-height: 280px; @preview-icon-refresh-position: 0 -88px;; -@preview-icon-popout: "@{image-path}/c9-preview-repeat_flat_dark.png"; +@preview-icon-popout: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png"; @preview-icon-popout-width: 23px; @preview-icon-popout-height: 280px; @preview-icon-popout-position: 0 -113px; -@preview-icon-settings: "@{image-path}/c9-preview-repeat_flat_dark.png"; +@preview-icon-settings: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png"; @preview-icon-settings-width: 23px; @preview-icon-settings-height: 280px; @preview-icon-settings-position: -1px -33px; -@preview-icon-goforward: "@{image-path}/c9-preview-repeat_flat_dark.png"; +@preview-icon-goforward: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png"; @preview-icon-goforward-width: 23px; @preview-icon-goforward-height: 280px; @preview-icon-goforward-position: 0 -184px; @preview-icon-goforward-disabled-position: 0 -209px; -@preview-icon-goback: "@{image-path}/c9-preview-repeat_flat_dark.png"; +@preview-icon-goback: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_dark.png"; @preview-icon-goback-width: 23px; @preview-icon-goback-height: 280px; @preview-icon-goback-position: 0 -136px; @@ -1387,23 +1387,23 @@ @complete-dark-paramhelp: darken(#494949, @darken-chrome); // Complete Icons -@complete-icon-event: "@{image-path}/event_flat_light.png"; -@complete-icon-method: "@{image-path}/method_flat_light.png"; -@complete-icon-method2: "@{image-path}/method2_flat_light.png"; -@complete-icon-package: "@{image-path}/package_flat_light.png"; -@complete-icon-property: "@{image-path}/property_flat_light.png"; -@complete-icon-property2: "@{image-path}/property2_flat_light.png"; +@complete-icon-event: "plugins/c9.ide.language/images/event_flat_light.png"; +@complete-icon-method: "plugins/c9.ide.language/images/method_flat_light.png"; +@complete-icon-method2: "plugins/c9.ide.language/images/method2_flat_light.png"; +@complete-icon-package: "plugins/c9.ide.language/images/package_flat_light.png"; +@complete-icon-property: "plugins/c9.ide.language/images/property_flat_light.png"; +@complete-icon-property2: "plugins/c9.ide.language/images/property2_flat_light.png"; // Welcome @welcome-color: #333; -@welcome-background: darken(#193342, @darken-chrome) url("@{image-path}/welcome-cover.png"); +@welcome-background: darken(#193342, @darken-chrome) url("plugins/c9.ide.welcome/images/welcome-cover.png"); @welcome-top-border: darken(rgba(255,255,255,0.03), @darken-chrome); @welcome-color: darken(#f1f1f1, @darken-chrome); @welcome-font-smoothing: true; @welcome-highlight-color: darken(#9BB11D, @darken-chrome); @welcome-panel-border-color: darken(rgba(255, 255, 255, 0.09), @darken-chrome); @welcome-panel-background: darken(rgba(255, 255, 255, 0.08), @darken-chrome); -@welcome-logo-image: "@{image-path}/welcome-logo.png"; +@welcome-logo-image: "plugins/c9.ide.welcome/images/welcome-logo.png"; @welcome-logo-image-width: 155px; @welcome-logo-image-height: 103px; @welcome-alter-widgets: true; diff --git a/plugins/c9.ide.layout.classic/themes/default-flat-light.less b/plugins/c9.ide.layout.classic/themes/default-flat-light.less index 64b6e66f..75534499 100644 --- a/plugins/c9.ide.layout.classic/themes/default-flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-flat-light.less @@ -230,8 +230,8 @@ @time-slider-play-border: 0; @time-slider-play-gradient: linear-gradient(to bottom, #757574, #757574); @time-slider-play-box-shadow: none; -@time-slider-play-icon-image: "@{image-path}/play_flat_light.png"; -@time-slider-play-icon-pause-image: "@{image-path}/pause_flat_light.png"; +@time-slider-play-icon-image: "plugins/c9.ide.collab/timeslider/images/play_flat_light.png"; +@time-slider-play-icon-pause-image: "plugins/c9.ide.collab/timeslider/images/pause_flat_light.png"; @time-slider-play-icon-image-width: 5px; @time-slider-play-icon-image-height: 8px; @time-slider-play-icon-background-position: 50% 50%; @@ -272,7 +272,7 @@ @time-slider-stepper-top: 39px; @time-slider-stepper-width: 16px; @time-slider-stepper-height: 16px; -@time-slider-stepper-image: "@{image-path}/stepper_buttons_flat_light.png"; +@time-slider-stepper-image: "plugins/c9.ide.collab/timeslider/images/stepper_buttons_flat_light.png"; @time-slider-stepper-image-width: 21px; @time-slider-stepper-image-height: 8px; @@ -328,7 +328,7 @@ @time-slider-revert-active-gradient: linear-gradient(to bottom, #98c878 0%, #98c878 100%); @time-slider-revert-active-padding: @time-slider-revert-padding; -@time-slider-close-image: "@{image-path}/close_tab_btn.png"; +@time-slider-close-image: "plugins/c9.ide.collab/timeslider/images/close_tab_btn.png"; @time-slider-close-image-width: 42px; @time-slider-close-image-height: 28px; @time-slider-close-idle-position: 0 0; @@ -465,7 +465,7 @@ @pane-menu-upward-active-box-shadow: 0 1px darken(rgba(255, 255, 255, 0.6), @darken-chrome), inset 0 -1px darken(rgb(255, 255, 255), @darken-chrome); @pane-menu-upward-active-gradient: linear-gradient(to bottom, white 0%, white 100%); -@pane-menu-splits-image: "@{image-path}/splits_flat_light.png"; +@pane-menu-splits-image: "plugins/c9.ide.behaviors/images/splits_flat_light.png"; @pane-menu-splits-image-width: 138px; @pane-menu-splits-image-height: 53px; @@ -1094,28 +1094,28 @@ @preview-chooser-font-size: 12px; @preview-chooser-font-weight: normal; -@preview-icon-close: "@{image-path}/c9-preview-repeat_flat_light.png"; +@preview-icon-close: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png"; @preview-icon-close-width: 23px; @preview-icon-close-height: 280px; @preview-icon-close-position: 0 -65px; -@preview-icon-refresh: "@{image-path}/c9-preview-repeat_flat_light.png"; +@preview-icon-refresh: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png"; @preview-icon-refresh-width: 23px; @preview-icon-refresh-height: 280px; @preview-icon-refresh-position: 0 -88px;; -@preview-icon-popout: "@{image-path}/c9-preview-repeat_flat_light.png"; +@preview-icon-popout: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png"; @preview-icon-popout-width: 23px; @preview-icon-popout-height: 280px; @preview-icon-popout-position: 0 -113px; -@preview-icon-settings: "@{image-path}/c9-preview-repeat_flat_light.png"; +@preview-icon-settings: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png"; @preview-icon-settings-width: 23px; @preview-icon-settings-height: 280px; @preview-icon-settings-position: -1px -33px; -@preview-icon-goforward: "@{image-path}/c9-preview-repeat_flat_light.png"; +@preview-icon-goforward: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png"; @preview-icon-goforward-width: 23px; @preview-icon-goforward-height: 280px; @preview-icon-goforward-position: 0 -184px; @preview-icon-goforward-disabled-position: 0 -209px; -@preview-icon-goback: "@{image-path}/c9-preview-repeat_flat_light.png"; +@preview-icon-goback: "plugins/c9.ide.preview/images/c9-preview-repeat_flat_light.png"; @preview-icon-goback-width: 23px; @preview-icon-goback-height: 280px; @preview-icon-goback-position: 0 -136px; @@ -1387,12 +1387,12 @@ @complete-dark-paramhelp: darken(#FFFFFF, @darken-chrome); // Complete Icons -@complete-icon-event: "@{image-path}/event_flat_light.png"; -@complete-icon-method: "@{image-path}/method_flat_light.png"; -@complete-icon-method2: "@{image-path}/method2_flat_light.png"; -@complete-icon-package: "@{image-path}/package_flat_light.png"; -@complete-icon-property: "@{image-path}/property_flat_light.png"; -@complete-icon-property2: "@{image-path}/property2_flat_light.png"; +@complete-icon-event: "plugins/c9.ide.language/images/event_flat_light.png"; +@complete-icon-method: "plugins/c9.ide.language/images/method_flat_light.png"; +@complete-icon-method2: "plugins/c9.ide.language/images/method2_flat_light.png"; +@complete-icon-package: "plugins/c9.ide.language/images/package_flat_light.png"; +@complete-icon-property: "plugins/c9.ide.language/images/property_flat_light.png"; +@complete-icon-property2: "plugins/c9.ide.language/images/property2_flat_light.png"; // Welcome @welcome-color: #31a6d7; diff --git a/plugins/c9.ide.layout.classic/themes/default-light-gray.less b/plugins/c9.ide.layout.classic/themes/default-light-gray.less index 86d50691..ee67dea6 100644 --- a/plugins/c9.ide.layout.classic/themes/default-light-gray.less +++ b/plugins/c9.ide.layout.classic/themes/default-light-gray.less @@ -272,7 +272,7 @@ @time-slider-stepper-top: 20px; @time-slider-stepper-width: 25px; @time-slider-stepper-height: 20px; -@time-slider-stepper-image: "@{image-path}/stepper_buttons.png"; +@time-slider-stepper-image: "plugins/c9.ide.collab/timeslider/images/stepper_buttons.png"; @time-slider-stepper-image-width: 23px; @time-slider-stepper-image-height: 14px; @@ -465,7 +465,7 @@ @pane-menu-upward-active-box-shadow: 0 1px darken(rgba(255, 255, 255, 0.6), @darken-chrome), inset 0 -1px darken(rgb(255, 255, 255), @darken-chrome); @pane-menu-upward-active-gradient: linear-gradient(to bottom, white 0%, white 100%); -@pane-menu-splits-image: "@{image-path}/splits.png"; +@pane-menu-splits-image: "plugins/c9.ide.behaviors/images/splits.png"; @pane-menu-splits-image-width: 138px; @pane-menu-splits-image-height: 54px; @@ -1094,15 +1094,15 @@ @preview-chooser-font-size: 11px; @preview-chooser-font-weight: bold; -@preview-icon-close: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-close: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-close-width: 23px; @preview-icon-close-height: 280px; @preview-icon-close-position: 0 -66px; -@preview-icon-refresh: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-refresh: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-refresh-width: 23px; @preview-icon-refresh-height: 280px; @preview-icon-refresh-position: 0 -89px;; -@preview-icon-popout: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-popout: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-popout-width: 23px; @preview-icon-popout-height: 280px; @preview-icon-popout-position: 0 -114px; @@ -1110,12 +1110,12 @@ @preview-icon-settings-width: @c9-repeat-x-width; @preview-icon-settings-height: @c9-repeat-x-height; @preview-icon-settings-position: 50% -366px; -@preview-icon-goforward: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goforward: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goforward-width: 23px; @preview-icon-goforward-height: 280px; @preview-icon-goforward-position: 0 -185px; @preview-icon-goforward-disabled-position: 0 -209px; -@preview-icon-goback: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goback: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goback-width: 23px; @preview-icon-goback-height: 280px; @preview-icon-goback-position: 0 -137px; @@ -1387,23 +1387,23 @@ @complete-dark-paramhelp: darken(#FFFFFF, @darken-chrome); // Complete Icons -@complete-icon-event: "@{image-path}/event.png"; -@complete-icon-method: "@{image-path}/method.png"; -@complete-icon-method2: "@{image-path}/method2.png"; -@complete-icon-package: "@{image-path}/package.png"; -@complete-icon-property: "@{image-path}/property.png"; -@complete-icon-property2: "@{image-path}/property2.png"; +@complete-icon-event: "plugins/c9.ide.language/images/event.png"; +@complete-icon-method: "plugins/c9.ide.language/images/method.png"; +@complete-icon-method2: "plugins/c9.ide.language/images/method2.png"; +@complete-icon-package: "plugins/c9.ide.language/images/package.png"; +@complete-icon-property: "plugins/c9.ide.language/images/property.png"; +@complete-icon-property2: "plugins/c9.ide.language/images/property2.png"; // Welcome @welcome-color: #333; -@welcome-background: darken(#C1D4E0, @darken-chrome) url("@{image-path}/welcome-cover-light.png"); +@welcome-background: darken(#C1D4E0, @darken-chrome) url("plugins/c9.ide.welcome/images/welcome-cover-light.png"); @welcome-top-border: darken(rgba(0,0,0, 0.06), @darken-chrome); @welcome-color: darken(#333333, @darken-chrome); @welcome-font-smoothing: false; @welcome-highlight-color: @highlight-color; @welcome-panel-border-color: darken(rgba(0, 0, 0, 0.04), @darken-chrome); @welcome-panel-background: darken(rgba(0, 0, 0, 0.03), @darken-chrome); -@welcome-logo-image: "@{image-path}/welcome-logo.png"; +@welcome-logo-image: "plugins/c9.ide.welcome/images/welcome-logo.png"; @welcome-logo-image-width: 155px; @welcome-logo-image-height: 103px; @welcome-alter-widgets: true; diff --git a/plugins/c9.ide.layout.classic/themes/default-light.less b/plugins/c9.ide.layout.classic/themes/default-light.less index fe4a1801..e35b47e0 100644 --- a/plugins/c9.ide.layout.classic/themes/default-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-light.less @@ -272,7 +272,7 @@ @time-slider-stepper-top: 20px; @time-slider-stepper-width: 25px; @time-slider-stepper-height: 20px; -@time-slider-stepper-image: "@{image-path}/stepper_buttons.png"; +@time-slider-stepper-image: "plugins/c9.ide.collab/timeslider/images/stepper_buttons.png"; @time-slider-stepper-image-width: 23px; @time-slider-stepper-image-height: 14px; @@ -465,7 +465,7 @@ @pane-menu-upward-active-box-shadow: 0 1px darken(rgba(255, 255, 255, 0.6), @darken-chrome), inset 0 -1px darken(rgb(255, 255, 255), @darken-chrome); @pane-menu-upward-active-gradient: linear-gradient(to bottom, white 0%, white 100%); -@pane-menu-splits-image: "@{image-path}/splits.png"; +@pane-menu-splits-image: "plugins/c9.ide.behaviors/images/splits.png"; @pane-menu-splits-image-width: 138px; @pane-menu-splits-image-height: 54px; @@ -1094,15 +1094,15 @@ @preview-chooser-font-size: 11px; @preview-chooser-font-weight: bold; -@preview-icon-close: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-close: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-close-width: 23px; @preview-icon-close-height: 280px; @preview-icon-close-position: 0 -66px; -@preview-icon-refresh: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-refresh: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-refresh-width: 23px; @preview-icon-refresh-height: 280px; @preview-icon-refresh-position: 0 -89px;; -@preview-icon-popout: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-popout: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-popout-width: 23px; @preview-icon-popout-height: 280px; @preview-icon-popout-position: 0 -114px; @@ -1110,12 +1110,12 @@ @preview-icon-settings-width: @c9-repeat-x-width; @preview-icon-settings-height: @c9-repeat-x-height; @preview-icon-settings-position: 50% -366px; -@preview-icon-goforward: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goforward: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goforward-width: 23px; @preview-icon-goforward-height: 280px; @preview-icon-goforward-position: 0 -185px; @preview-icon-goforward-disabled-position: 0 -209px; -@preview-icon-goback: "@{image-path}/c9-preview-repeat.png"; +@preview-icon-goback: "plugins/c9.ide.preview/images/c9-preview-repeat.png"; @preview-icon-goback-width: 23px; @preview-icon-goback-height: 280px; @preview-icon-goback-position: 0 -137px; @@ -1387,23 +1387,23 @@ @complete-dark-paramhelp: darken(#FFFFFF, @darken-chrome); // Complete Icons -@complete-icon-event: "@{image-path}/event.png"; -@complete-icon-method: "@{image-path}/method.png"; -@complete-icon-method2: "@{image-path}/method2.png"; -@complete-icon-package: "@{image-path}/package.png"; -@complete-icon-property: "@{image-path}/property.png"; -@complete-icon-property2: "@{image-path}/property2.png"; +@complete-icon-event: "plugins/c9.ide.language/images/event.png"; +@complete-icon-method: "plugins/c9.ide.language/images/method.png"; +@complete-icon-method2: "plugins/c9.ide.language/images/method2.png"; +@complete-icon-package: "plugins/c9.ide.language/images/package.png"; +@complete-icon-property: "plugins/c9.ide.language/images/property.png"; +@complete-icon-property2: "plugins/c9.ide.language/images/property2.png"; // Welcome @welcome-color: #333; -@welcome-background: darken(#C1D4E0, @darken-chrome) url("@{image-path}/welcome-cover-light.png"); +@welcome-background: darken(#C1D4E0, @darken-chrome) url("plugins/c9.ide.welcome/images/welcome-cover-light.png"); @welcome-top-border: darken(rgba(0,0,0, 0.06), @darken-chrome); @welcome-color: darken(#333333, @darken-chrome); @welcome-font-smoothing: false; @welcome-highlight-color: @highlight-color; @welcome-panel-border-color: darken(rgba(0, 0, 0, 0.04), @darken-chrome); @welcome-panel-background: darken(rgba(0, 0, 0, 0.03), @darken-chrome); -@welcome-logo-image: "@{image-path}/welcome-logo.png"; +@welcome-logo-image: "plugins/c9.ide.welcome/images/welcome-logo.png"; @welcome-logo-image-width: 155px; @welcome-logo-image-height: 103px; @welcome-alter-widgets: true; diff --git a/plugins/c9.ide.layout.classic/themes/flat-dark.less b/plugins/c9.ide.layout.classic/themes/flat-dark.less index cc216f1c..af152a01 100644 --- a/plugins/c9.ide.layout.classic/themes/flat-dark.less +++ b/plugins/c9.ide.layout.classic/themes/flat-dark.less @@ -102,7 +102,7 @@ } .loading-spinner { - .image-2x("/static/@{pane-button-save-image}", @pane-button-save-image-width, @pane-button-save-image-height); + .image-2x("@{pane-button-save-image}", @pane-button-save-image-width, @pane-button-save-image-height); animation: loading-24-spinner 1.2s steps(24) infinite !important; } diff --git a/plugins/c9.ide.layout.classic/themes/flat-light.less b/plugins/c9.ide.layout.classic/themes/flat-light.less index 244ae508..0dd0e871 100644 --- a/plugins/c9.ide.layout.classic/themes/flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/flat-light.less @@ -389,7 +389,7 @@ } .loading-spinner { - .image-2x("/static/@{pane-button-save-image}", @pane-button-save-image-width, @pane-button-save-image-height); + .image-2x("@{pane-button-save-image}", @pane-button-save-image-width, @pane-button-save-image-height); animation: loading-24-spinner 1.2s steps(24) infinite !important; } diff --git a/plugins/c9.ide.terminal/style.css b/plugins/c9.ide.terminal/style.css index 0441981b..1d5a2c84 100644 --- a/plugins/c9.ide.terminal/style.css +++ b/plugins/c9.ide.terminal/style.css @@ -74,7 +74,7 @@ left: 0; right: 0; bottom: 0; - background: url("@{image-path}/tile.png"); + background: url("@{plugin-path}/images/tile.png"); } .c9terminalcontainer.bottom.cover:after { background-position: 0px -1px; diff --git a/plugins/c9.ide.test/style.css b/plugins/c9.ide.test/style.css index 2123809c..47db6740 100644 --- a/plugins/c9.ide.test/style.css +++ b/plugins/c9.ide.test/style.css @@ -1,19 +1,19 @@ -/* .image-2x("@{icon-path}/@{tree-folder-icon}", @tree-folder-icon-width, @tree-folder-icon-height); */ -.test-in-progress{ .image-2x("@{icon-path}/testInProgress1.png", 16px, 16px); } -.test-notran{ .image-2x("@{icon-path}/testPrepare.png", 16px, 16px); } +/* .image-2x("@{plugin-path}/icons/@{tree-folder-icon}", @tree-folder-icon-width, @tree-folder-icon-height); */ +/*.test-in-progress{ .image-2x("@{plugin-path}/icons/testInProgress1.png", 16px, 16px); }*/ +.test-notran{ .image-2x("@{plugin-path}/icons/testPrepare.png", 16px, 16px); } -.test-failed, .test-0 { .image-2x("@{icon-path}/testFailed.png", 16px, 16px); } -.test-passed, .test-1 { .image-2x("@{icon-path}/testPassed.png", 16px, 16px); } -.test-error, .test-2 { .image-2x("@{icon-path}/testError.png", 16px, 16px); } -.test-terminated, .test-3 { .image-2x("@{icon-path}/testTerminated.png", 16px, 16px); } -.test-ignored, .test-4 { .image-2x("@{icon-path}/testIgnored.png", 16px, 16px); } +.test-failed, .test-0 { .image-2x("@{plugin-path}/icons/testFailed.png", 16px, 16px); } +.test-passed, .test-1 { .image-2x("@{plugin-path}/icons/testPassed.png", 16px, 16px); } +.test-error, .test-2 { .image-2x("@{plugin-path}/icons/testError.png", 16px, 16px); } +.test-terminated, .test-3 { .image-2x("@{plugin-path}/icons/testTerminated.png", 16px, 16px); } +.test-ignored, .test-4 { .image-2x("@{plugin-path}/icons/testIgnored.png", 16px, 16px); } .test-0, .test-2, .test-3, .test-4 { background-position-x: 4px; } .test-1 { background-position-x: 2px; } -.test-prepare { .image-2x("@{icon-path}/testPrepare.png", 16px, 16px); } -.test-set { .image-2x("@{icon-path}/testNotRan.png", 16px, 16px); } -.test-file { .image-2x("@{icon-path}/testPrepare.png", 16px, 16px); } +.test-prepare { .image-2x("@{plugin-path}/icons/testPrepare.png", 16px, 16px); } +.test-set { .image-2x("@{plugin-path}/icons/testNotRan.png", 16px, 16px); } +.test-file { .image-2x("@{plugin-path}/icons/testPrepare.png", 16px, 16px); } .stack-message{ border-radius: 4px; diff --git a/plugins/c9.ide.upload/upload.css b/plugins/c9.ide.upload/upload.css index 6153896c..f89d9016 100644 --- a/plugins/c9.ide.upload/upload.css +++ b/plugins/c9.ide.upload/upload.css @@ -11,7 +11,7 @@ width: 335px; top: 11px; left: 10px; - background: url("@{image-path}/upload-droparea-box.png") no-repeat 0 0; + background: url("@{plugin-path}/images/upload-droparea-box.png") no-repeat 0 0; } .uploadDropArea when(@upload-win-flat = false) { diff --git a/plugins/c9.ide.welcome/style.css b/plugins/c9.ide.welcome/style.css index 3b7bc223..624be3c9 100644 --- a/plugins/c9.ide.welcome/style.css +++ b/plugins/c9.ide.welcome/style.css @@ -269,11 +269,11 @@ } .welcome .preset_container .preset#default{ - background-image : url("@{image-path}/fullide.png"); + background-image : url("@{plugin-path}/images/fullide.png"); } .welcome .preset_container .preset#minimal{ - background-image : url("@{image-path}/minimal.png"); + background-image : url("@{plugin-path}/images/minimal.png"); } .welcome .preset_container .preset#sublime{ - background-image : url("@{image-path}/sublime.png"); + background-image : url("@{plugin-path}/images/sublime.png"); } \ No newline at end of file From 9b9baf3bc80f91fa0b70c8bf96b144fce865b2a0 Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 25 Dec 2017 21:40:36 +0400 Subject: [PATCH 3/4] better caching for css in cdn-cli --- node_modules/architect-build/build.js | 103 +++++++++++++++++--------- plugins/c9.static/build.js | 63 +++++++--------- plugins/c9.static/cdn.cli.js | 17 +++-- 3 files changed, 103 insertions(+), 80 deletions(-) diff --git a/node_modules/architect-build/build.js b/node_modules/architect-build/build.js index 99901df1..60b6f0fa 100644 --- a/node_modules/architect-build/build.js +++ b/node_modules/architect-build/build.js @@ -4,7 +4,10 @@ var mkdirp = require("mkdirp"); var moduleDeps = require("./module-deps"); var path = require("path"); -function build(config, opts, callback){ +function build(config, opts, callback) { + if (opts.compileLess && opts.sources) + return compileLess(opts, opts.sources, callback); + if (!opts.configFile) { opts.configFile = "\nrequire.plugins = " + JSON.stringify(config, null, 4) @@ -155,6 +158,7 @@ function createOutputFolder(opts, cb) { } function compileLess(opts, sources, callback) { + var libs = opts.lessLibs; var less = stripLess(sources); var cssCode = []; var code = []; @@ -164,9 +168,23 @@ function compileLess(opts, sources, callback) { if (cache && !cache.images) cache.images = Object.create(null); + function readLibs(cb) { + async.forEach(Object.keys(libs), function(key, next) { + var lib = libs[key]; + if (typeof lib !== "string") + return next(); + var path = moduleDeps.resolveModulePath(lib, opts.pathConfig.pathMap); + fs.readFile(path, "utf8", function(e, code) { + libs[key] = { code: code || "", id: lib }; + next(); + }); + }, function() { + cb(); + }); + } function expandVariables(code, variables, plugin) { - variables["base-path"] = "/static/" + libs.staticPrefix; + variables["base-path"] = (plugin && plugin.staticPrefix || opts.staticPrefix); variables["icon-path"] = variables["base-path"] + "/icons"; variables["image-path"] = variables["base-path"] + "/images"; variables["plugin-path"] = plugin @@ -179,42 +197,51 @@ function compileLess(opts, sources, callback) { }); } - // function - - var libs = opts.lessLibs; - less.forEach(function(file) { - var plugin = file.pkg.parent.plugin; - - var id = file.pkg.id.replace(/^[^!]+!/, ""); - code.push( - "/* @file " + id + " */\nß{" - + expandVariables(file.code, Object.create(null), plugin) - + "}" - ); - }); - - var ctx = { - paths: ["/"], - filename: opts.basepath + '/unknown.less', - compress: !!opts.compress - }; - code = expandVariables(libs.join("\n"), Object.create(null)) + code.join("\n"); - - var lessParser = require("less"); - return lessParser.parse(code, ctx, function(err, tree, imports, options) { - if (err) return callback(err); - - toCss(tree, imports, options, function(err, css) { - if (err) return callback(err); - css = css.replace(/ß /g, "").replace(/^ +/gm, "\t"); - css = checkImages(css, libs, cache); - css = addCssPrefixes(css); - callback(null, { code: css }); + function preprocess() { + less.forEach(function(file) { + var plugin = file.pkg.parent.plugin; + + var id = file.pkg.id.replace(/^[^!]+!/, ""); + code.push( + "/* @file " + id + " */\nß{" + + expandVariables(file.code, Object.create(null), plugin) + + "}" + ); }); + code = code.join("\n") + + expandVariables(libs.map(function(l) { + return l.code ? "/* @file " + l.id + " */\n" + l.code : ""; + }).join("\n"), Object.create(null)); + } + + function compile() { + var ctx = { + paths: ["/"], + filename: opts.basepath + '/unknown.less', + compress: !!opts.compress + }; + var lessParser = require("less"); + return lessParser.parse(code, ctx, function(err, tree, imports, options) { + if (err) return callback(err); + + toCss(tree, imports, options, function(err, css) { + if (err) return callback(err); + css = css.replace(/ß /g, "").replace(/^ +/gm, "\t"); + css = checkImages(css, opts, cache); + css = addCssPrefixes(css); + callback(null, { code: css }); + }); + }); + } + + + readLibs(function() { + preprocess(); + compile(); }); } -function checkImages(css, libs, cache) { +function checkImages(css, opts, cache) { var images = cache && cache.images || Object.create(null); var root = __dirname + "/../../"; var t = Date.now(); @@ -231,7 +258,7 @@ function checkImages(css, libs, cache) { count++; if (/^(images|icons)/.test(imagePath)) - imagePath = libs.staticPrefix + "/" + imagePath; + imagePath = opts.staticPrefix + "/" + imagePath; var dir = path.dirname(imagePath); var name = path.basename(imagePath); @@ -305,6 +332,7 @@ function stripLess(sources) { var less = []; function addLessFile(pkg, code, file) { + pkg.cssSource = code; less.push({ pkg: pkg, code: code, @@ -313,7 +341,10 @@ function stripLess(sources) { } sources.forEach(function(pkg) { - if (pkg.id && (pkg.id.indexOf("text!") > -1) && pkg.id.match(/text\!.*\.(less|css)$/)) { + if (pkg.cssSource != null) { + addLessFile(pkg, pkg.cssSource); + } + else if (pkg.id && (pkg.id.indexOf("text!") > -1) && pkg.id.match(/text\!.*\.(less|css)$/)) { var source = pkg.source; pkg.source = ""; diff --git a/plugins/c9.static/build.js b/plugins/c9.static/build.js index 47145eba..8f8442dc 100644 --- a/plugins/c9.static/build.js +++ b/plugins/c9.static/build.js @@ -50,6 +50,9 @@ function main(options, imports, register) { } function readConfig(config) { + if (typeof config != "string") + return config; + if (config == "full") { var plugins = []; ["default-local", "ssh", "default"].forEach(function(n) { @@ -114,45 +117,29 @@ function main(options, imports, register) { var data = readConfig(config); if (data.error) return callback(data.error); + + build(data.config, { + sources: data.sources, + cache: cache, + pathConfig: pathConfig, + enableBrowser: true, + includeConfig: false, + noArchitect: true, + compress: compress, + filter: [], + ignore: [], + withRequire: false, + compileLess: true, + lessLibs: [ + "plugins/c9.ide.layout.classic/less/lesshat.less", + "plugins/c9.ide.layout.classic/themes/default-" + color + ".less", + "plugins/c9.ide.layout.classic/themes/" + color + ".less" + ], + staticPrefix: "plugins/c9.ide.layout.classic", + lessLibCacheKey: color, + basepath: pathConfig.root, + }, callback); - var plugins = data.config.concat(sharedModules()); - var lessLibs = []; - - fs.readFile(path.join(pathConfig.root, "plugins/c9.ide.layout.classic/less/lesshat.less"), "utf8", function(err, lesshat) { - if (err) return callback(err); - - lessLibs.push(lesshat); - - fs.readFile(path.join(pathConfig.root, "plugins/c9.ide.layout.classic/themes/default-" + color + ".less"), "utf8", function(err, theme) { - if (err) return callback(err); - - lessLibs.push(theme); - - lessLibs.staticPrefix = "plugins/c9.ide.layout.classic"; - - var themeCss = [{ - id: "text!" + "plugins/c9.ide.layout.classic/themes/" + color + ".less", - parent: {} - }]; - - build(plugins, { - cache: cache, - pathConfig: pathConfig, - enableBrowser: true, - includeConfig: false, - noArchitect: true, - compress: compress, - filter: [], - ignore: [], - withRequire: false, - compileLess: true, - lessLibs: lessLibs, - lessLibCacheKey: color, - basepath: pathConfig.root, - additional: themeCss - }, callback); - }); - }); } function buildAce(module, pathConfig, callback, aceModuleIgnores) { diff --git a/plugins/c9.static/cdn.cli.js b/plugins/c9.static/cdn.cli.js index 071e4849..0f782a1a 100644 --- a/plugins/c9.static/cdn.cli.js +++ b/plugins/c9.static/cdn.cli.js @@ -49,12 +49,17 @@ define(function(require, exports, module) { else skins = skins ? skins.split(/,\s*/) : []; - build.buildConfig(config, pathConfig, save(["config", path.basename(config) + ".js"], function next(err) { - if (err) return done(err); - var skin = skins.pop(); - if (!skin) return buildConfig(); - build.buildSkin(config, skin, pathConfig, save(["skin", config, skin + ".css"], next)); - }), function(configName, data) { + build.buildConfig(config, pathConfig, function(err, result) { + save(["config", path.basename(config) + ".js"], function next(err) { + if (err) return done(err); + var skin = skins.pop(); + if (!skin) return buildConfig(); + build.buildSkin({ + sources: result.sources, + config: [], + }, skin, pathConfig, save(["skin", config, skin + ".css"], next)); + })(err, result) + }, function(configName, data) { var pluginPaths = data.map(function(p) { return typeof p == "string" ? p : p.packagePath; }).filter(Boolean).sort(); From 305560549ea1caea5fb4489cb2fc845d1c640827 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 26 Dec 2017 10:44:56 +0000 Subject: [PATCH 4/4] use pathMap in image checker --- node_modules/architect-build/build.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/node_modules/architect-build/build.js b/node_modules/architect-build/build.js index 60b6f0fa..37e3007a 100644 --- a/node_modules/architect-build/build.js +++ b/node_modules/architect-build/build.js @@ -243,7 +243,6 @@ function compileLess(opts, sources, callback) { function checkImages(css, opts, cache) { var images = cache && cache.images || Object.create(null); - var root = __dirname + "/../../"; var t = Date.now(); var file; var count = 0; @@ -259,12 +258,14 @@ function checkImages(css, opts, cache) { if (/^(images|icons)/.test(imagePath)) imagePath = opts.staticPrefix + "/" + imagePath; - + var dir = path.dirname(imagePath); var name = path.basename(imagePath); try { - if (!images[dir]) - images[dir] = fs.readdirSync(root + dir); + if (!images[dir]) { + var absPath = moduleDeps.resolveModulePath(dir, opts.pathConfig.pathMap); + images[dir] = fs.readdirSync(absPath); + } } catch (e) { images[dir] = []; }