diff --git a/common/bitmap_info.cpp b/common/bitmap_info.cpp
index 4cfe349342..111b1c36a8 100644
--- a/common/bitmap_info.cpp
+++ b/common/bitmap_info.cpp
@@ -668,6 +668,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_24.png" ), 24, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_24.png" ), 24, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_24.png" ), 24, wxT( "light" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_24.png" ), 24, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_24.png" ), 24, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_24.png" ), 24, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_24.png" ), 24, wxT( "light" ) );
@@ -1086,6 +1087,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_dark_24.png" ), 24, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_dark_24.png" ), 24, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_dark_24.png" ), 24, wxT( "dark" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_dark_24.png" ), 24, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_dark_24.png" ), 24, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_dark_24.png" ), 24, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_dark_24.png" ), 24, wxT( "dark" ) );
@@ -1504,6 +1506,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_16.png" ), 16, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_16.png" ), 16, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_16.png" ), 16, wxT( "light" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_16.png" ), 16, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_16.png" ), 16, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_16.png" ), 16, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_16.png" ), 16, wxT( "light" ) );
@@ -1922,6 +1925,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_dark_16.png" ), 16, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_dark_16.png" ), 16, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_dark_16.png" ), 16, wxT( "dark" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_dark_16.png" ), 16, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_dark_16.png" ), 16, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_dark_16.png" ), 16, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_dark_16.png" ), 16, wxT( "dark" ) );
@@ -2340,6 +2344,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_32.png" ), 32, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_32.png" ), 32, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_32.png" ), 32, wxT( "light" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_32.png" ), 32, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_32.png" ), 32, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_32.png" ), 32, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_32.png" ), 32, wxT( "light" ) );
@@ -2758,6 +2763,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_dark_32.png" ), 32, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_dark_32.png" ), 32, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_dark_32.png" ), 32, wxT( "dark" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_dark_32.png" ), 32, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_dark_32.png" ), 32, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_dark_32.png" ), 32, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_dark_32.png" ), 32, wxT( "dark" ) );
@@ -3176,6 +3182,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_48.png" ), 48, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_48.png" ), 48, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_48.png" ), 48, wxT( "light" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_48.png" ), 48, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_48.png" ), 48, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_48.png" ), 48, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_48.png" ), 48, wxT( "light" ) );
@@ -3594,6 +3601,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_dark_48.png" ), 48, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_dark_48.png" ), 48, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_dark_48.png" ), 48, wxT( "dark" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_dark_48.png" ), 48, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_dark_48.png" ), 48, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_dark_48.png" ), 48, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_dark_48.png" ), 48, wxT( "dark" ) );
@@ -4012,6 +4020,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_64.png" ), 64, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_64.png" ), 64, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_64.png" ), 64, wxT( "light" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_64.png" ), 64, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_64.png" ), 64, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_64.png" ), 64, wxT( "light" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_64.png" ), 64, wxT( "light" ) );
@@ -4430,6 +4439,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
     aBitmapInfoCache[BITMAPS::reload].emplace_back( BITMAPS::reload, wxT( "reload_dark_64.png" ), 64, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::render_mode].emplace_back( BITMAPS::render_mode, wxT( "render_mode_dark_64.png" ), 64, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::rescue].emplace_back( BITMAPS::rescue, wxT( "rescue_dark_64.png" ), 64, wxT( "dark" ) );
+    aBitmapInfoCache[BITMAPS::restore_from_file].emplace_back( BITMAPS::restore_from_file, wxT( "restore_from_file_dark_64.png" ), 64, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::right].emplace_back( BITMAPS::right, wxT( "right_dark_64.png" ), 64, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner].emplace_back( BITMAPS::router_len_tuner, wxT( "router_len_tuner_dark_64.png" ), 64, wxT( "dark" ) );
     aBitmapInfoCache[BITMAPS::router_len_tuner_setup].emplace_back( BITMAPS::router_len_tuner_setup, wxT( "router_len_tuner_setup_dark_64.png" ), 64, wxT( "dark" ) );
diff --git a/common/tool/actions.cpp b/common/tool/actions.cpp
index 754bea5083..0abef1cdcb 100644
--- a/common/tool/actions.cpp
+++ b/common/tool/actions.cpp
@@ -119,7 +119,9 @@ TOOL_ACTION ACTIONS::revert( TOOL_ACTION_ARGS()
         .Name( "common.Control.revert" )
         .Scope( AS_GLOBAL )
         .FriendlyName( _( "Revert" ) )
-        .Tooltip( _( "Throw away changes" ) ) );
+        .Tooltip( _( "Throw away changes" ) )
+        .Icon( BITMAPS::restore_from_file )
+        );
 
 TOOL_ACTION ACTIONS::pageSettings( TOOL_ACTION_ARGS()
         .Name( "common.Control.pageSettings" )
diff --git a/eeschema/tools/ee_actions.cpp b/eeschema/tools/ee_actions.cpp
index db55dbb712..aac25af6cc 100644
--- a/eeschema/tools/ee_actions.cpp
+++ b/eeschema/tools/ee_actions.cpp
@@ -1137,6 +1137,7 @@ TOOL_ACTION EE_ACTIONS::generateBOMLegacy( TOOL_ACTION_ARGS()
         .Scope( AS_GLOBAL )
         .FriendlyName( _( "Generate Legacy Bill of Materials..." ) )
         .Tooltip( _( "Generate a bill of materials for the current schematic (Legacy Generator)" ) )
+        .Icon( BITMAPS::file_bom )
         );
 
 TOOL_ACTION EE_ACTIONS::generateBOMExternal( TOOL_ACTION_ARGS()
diff --git a/include/bitmaps/bitmaps_list.h b/include/bitmaps/bitmaps_list.h
index b905b54875..69bbf61e39 100644
--- a/include/bitmaps/bitmaps_list.h
+++ b/include/bitmaps/bitmaps_list.h
@@ -503,6 +503,7 @@ enum class BITMAPS : unsigned int
     repaint,
     rescue,
     resize_sheet,
+    restore_from_file,
     right,
     rotate_ccw,
     rotate_ccw_x,
diff --git a/resources/bitmaps_png/CMakeLists.txt b/resources/bitmaps_png/CMakeLists.txt
index 06326d088d..af9c28f178 100644
--- a/resources/bitmaps_png/CMakeLists.txt
+++ b/resources/bitmaps_png/CMakeLists.txt
@@ -468,6 +468,7 @@ set( BMAPS_MID
     reload
     render_mode
     rescue
+    restore_from_file
     right
     router_len_tuner
     router_len_tuner_setup
diff --git a/resources/bitmaps_png/png/restore_from_file_16.png b/resources/bitmaps_png/png/restore_from_file_16.png
new file mode 100644
index 0000000000..47cc33b572
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_16.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_24.png b/resources/bitmaps_png/png/restore_from_file_24.png
new file mode 100644
index 0000000000..82a3c39c36
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_24.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_32.png b/resources/bitmaps_png/png/restore_from_file_32.png
new file mode 100644
index 0000000000..bb3ce70a38
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_32.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_48.png b/resources/bitmaps_png/png/restore_from_file_48.png
new file mode 100644
index 0000000000..c0b90ee75b
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_48.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_64.png b/resources/bitmaps_png/png/restore_from_file_64.png
new file mode 100644
index 0000000000..ed8f1ebd48
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_64.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_dark_16.png b/resources/bitmaps_png/png/restore_from_file_dark_16.png
new file mode 100644
index 0000000000..8cba7c2a32
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_dark_16.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_dark_24.png b/resources/bitmaps_png/png/restore_from_file_dark_24.png
new file mode 100644
index 0000000000..f150b1bac9
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_dark_24.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_dark_32.png b/resources/bitmaps_png/png/restore_from_file_dark_32.png
new file mode 100644
index 0000000000..163b96475a
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_dark_32.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_dark_48.png b/resources/bitmaps_png/png/restore_from_file_dark_48.png
new file mode 100644
index 0000000000..3c8873551b
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_dark_48.png differ
diff --git a/resources/bitmaps_png/png/restore_from_file_dark_64.png b/resources/bitmaps_png/png/restore_from_file_dark_64.png
new file mode 100644
index 0000000000..ce30532ee5
Binary files /dev/null and b/resources/bitmaps_png/png/restore_from_file_dark_64.png differ
diff --git a/resources/bitmaps_png/sources/dark/restore_from_file.svg b/resources/bitmaps_png/sources/dark/restore_from_file.svg
new file mode 100644
index 0000000000..3434e74f80
--- /dev/null
+++ b/resources/bitmaps_png/sources/dark/restore_from_file.svg
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   id="Слой_1"
+   inkscape:export-filename="/Users/jeff/kicad_dev/kicad/bitmaps_png/png_26/save.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
+   sodipodi:docname="restore_from_file.svg"
+   x="0px"
+   y="0px"
+   viewBox="0 0 24 24"
+   style="enable-background:new 0 0 24 24;"
+   xml:space="preserve"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
+   id="metadata853"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>save</dc:title><cc:license
+         rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /></cc:Work><cc:License
+       rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
+         rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
+         rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
+         rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><defs
+   id="defs851">
+
+
+
+
+
+</defs>
+<style
+   type="text/css"
+   id="style833">
+	.st0{fill:#727272;stroke:#DED3DD;stroke-linecap:round;stroke-linejoin:bevel;}
+	.st1{fill:#545454;}
+	.st2{fill:#DED3DD;}
+	.st3{fill:none;stroke:#727272;stroke-linejoin:round;}
+</style>
+<sodipodi:namedview
+   bordercolor="#666666"
+   borderopacity="1"
+   gridtolerance="10"
+   guidetolerance="10"
+   id="namedview27"
+   inkscape:current-layer="g2083"
+   inkscape:cx="13.771687"
+   inkscape:cy="14.370456"
+   inkscape:document-rotation="0"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-height="1009"
+   inkscape:window-maximized="1"
+   inkscape:window-width="1920"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:zoom="34.23691"
+   objecttolerance="10"
+   pagecolor="#ffffff"
+   showgrid="true"
+   inkscape:showpageshadow="2"
+   inkscape:pagecheckerboard="0"
+   inkscape:deskcolor="#d1d1d1">
+	<inkscape:grid
+   color="#a1a1ff"
+   empspacing="2"
+   id="grid836"
+   opacity="0.1254902"
+   spacingx="0.5"
+   spacingy="0.5"
+   type="xygrid">
+		</inkscape:grid>
+</sodipodi:namedview>
+<title
+   id="title6">save</title>
+<path
+   id="polygon10"
+   sodipodi:nodetypes="cccccc"
+   class="st0"
+   d="M 22.554435,5 22.5,22.5 H 1.5 V 1.5 L 19,1.4626365 Z"
+   style="fill:#DED3DD;fill-opacity:1" />
+<rect
+   x="6"
+   y="2"
+   class="st1"
+   width="10"
+   height="7"
+   id="rect839"
+   style="fill:#545454;fill-opacity:1" />
+<path
+   id="line16"
+   sodipodi:nodetypes="cc"
+   class="st3"
+   d="M 12.513322,3 12.5,8"
+   style="stroke:#DED3DD;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+<rect
+   x="5"
+   y="12"
+   class="st1"
+   width="13"
+   height="9"
+   id="rect845"
+   style="fill:#545454;fill-opacity:1;stroke-width:1" />
+<g
+   id="g2083"
+   transform="matrix(1.0000162,0,0,0.99999938,-0.84473006,3.5560085)"><g
+     id="g1597"
+     transform="rotate(180,17.871444,13.500499)"><path
+       class="cls-3"
+       d="M 24.877827,13.494 A 7.0063863,7.0065041 0 1 1 17.87144,6.4939954 7.0030865,7.0032042 0 0 1 24.877827,13.494 Z"
+       id="path116542"
+       style="fill:#f2647e;stroke:none;stroke-width:1.49999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+       id="polyline116544"
+       style="fill:none;stroke:#ffffff;stroke-width:1.99999px;stroke-linecap:round;stroke-linejoin:round"
+       d="m 21.722378,15.371001 c 0,0 -4.13652,0.640163 -5.590779,-0.814121 -1.322504,-1.322525 -0.579121,-4.7968822 -0.579121,-4.7968822"
+       sodipodi:nodetypes="csc" /><polyline
+       class="cls-4"
+       points="19.473 17.45 21.9 19.877 19.473 22.303"
+       id="polyline116546"
+       transform="matrix(0.99998378,0,0,1.0000006,-0.12826747,-4.5060109)"
+       style="fill:none;stroke:#ffffff;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round" /></g></g></svg>
diff --git a/resources/bitmaps_png/sources/light/restore_from_file.svg b/resources/bitmaps_png/sources/light/restore_from_file.svg
new file mode 100644
index 0000000000..0ceaa23153
--- /dev/null
+++ b/resources/bitmaps_png/sources/light/restore_from_file.svg
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   id="Слой_1"
+   inkscape:export-filename="/Users/jeff/kicad_dev/kicad/bitmaps_png/png_26/save.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
+   sodipodi:docname="restore_from_file.svg"
+   x="0px"
+   y="0px"
+   viewBox="0 0 24 24"
+   style="enable-background:new 0 0 24 24;"
+   xml:space="preserve"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
+   id="metadata853"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>save</dc:title><cc:license
+         rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /></cc:Work><cc:License
+       rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
+         rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
+         rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
+         rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><defs
+   id="defs851">
+
+
+
+
+
+</defs>
+<style
+   type="text/css"
+   id="style833">
+	.st0{fill:#727272;stroke:#545454;stroke-linecap:round;stroke-linejoin:bevel;}
+	.st1{fill:#F3F3F3;}
+	.st2{fill:#545454;}
+	.st3{fill:none;stroke:#727272;stroke-linejoin:round;}
+</style>
+<sodipodi:namedview
+   bordercolor="#666666"
+   borderopacity="1"
+   gridtolerance="10"
+   guidetolerance="10"
+   id="namedview27"
+   inkscape:current-layer="g2083"
+   inkscape:cx="13.771687"
+   inkscape:cy="12.033796"
+   inkscape:document-rotation="0"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-height="1009"
+   inkscape:window-maximized="1"
+   inkscape:window-width="1920"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:zoom="34.23691"
+   objecttolerance="10"
+   pagecolor="#ffffff"
+   showgrid="true"
+   inkscape:showpageshadow="2"
+   inkscape:pagecheckerboard="0"
+   inkscape:deskcolor="#d1d1d1">
+	<inkscape:grid
+   color="#a1a1ff"
+   empspacing="2"
+   id="grid836"
+   opacity="0.1254902"
+   spacingx="0.5"
+   spacingy="0.5"
+   type="xygrid">
+		</inkscape:grid>
+</sodipodi:namedview>
+<title
+   id="title6">save</title>
+<path
+   id="polygon10"
+   sodipodi:nodetypes="cccccc"
+   class="st0"
+   d="M 22.554435,5 22.5,22.5 H 1.5 V 1.5 L 19,1.4626365 Z"
+   style="fill:#545454;fill-opacity:1" />
+<rect
+   x="6"
+   y="2"
+   class="st1"
+   width="10"
+   height="7"
+   id="rect839"
+   style="fill:#f3f3f3;fill-opacity:1" />
+<path
+   id="line16"
+   sodipodi:nodetypes="cc"
+   class="st3"
+   d="M 12.513322,3 12.5,8"
+   style="stroke:#545454;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+<rect
+   x="5"
+   y="12"
+   class="st1"
+   width="13"
+   height="9"
+   id="rect845"
+   style="fill:#f3f3f3;fill-opacity:1;stroke-width:1" />
+<g
+   id="g2083"
+   transform="matrix(1.0000162,0,0,0.99999938,-0.84473006,3.5560085)"><g
+     id="g861"
+     transform="rotate(180,17.871444,13.500499)"><path
+       class="cls-3"
+       d="M 24.877827,13.494 A 7.0063863,7.0065041 0 1 1 17.87144,6.4939954 7.0030865,7.0032042 0 0 1 24.877827,13.494 Z"
+       id="path116542"
+       style="fill:#bf2641;stroke:none;stroke-width:1.49999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><g
+       id="g855"><path
+         id="polyline116544"
+         style="fill:none;stroke:#ffffff;stroke-width:1.99999px;stroke-linecap:round;stroke-linejoin:round"
+         d="m 21.722378,15.371001 c 0,0 -4.13652,0.640163 -5.590779,-0.814121 -1.322504,-1.322525 -0.579121,-4.7968822 -0.579121,-4.7968822"
+         sodipodi:nodetypes="csc" /><polyline
+         class="cls-4"
+         points="19.473 17.45 21.9 19.877 19.473 22.303"
+         id="polyline116546"
+         transform="matrix(0.99998378,0,0,1.0000006,-0.12826747,-4.5060109)"
+         style="fill:none;stroke:#ffffff;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round" /></g></g></g></svg>