From f5765bac7f09a75da80df2fa89da147c9a8fd4dc Mon Sep 17 00:00:00 2001 From: IkomaSo <ikoma-so@g.ecc.u-tokyo.ac.jp> Date: Sun, 27 Oct 2024 23:33:24 +0000 Subject: [PATCH] Added a button to open output directory in plot dialog Shows a bitmap button next to the output location string, allowing the user to quickly view the generated file location Fixes https://gitlab.com/kicad/code/kicad/-/issues/17659 --- common/bitmap_info.cpp | 4 + include/bitmaps/bitmaps_list.h | 1 + pcbnew/dialogs/dialog_plot.cpp | 23 +++++ pcbnew/dialogs/dialog_plot.h | 1 + pcbnew/dialogs/dialog_plot_base.cpp | 10 +- pcbnew/dialogs/dialog_plot_base.h | 2 + resources/bitmaps_png/CMakeLists.txt | 1 + .../bitmaps_png/png/small_new_window_16.png | Bin 0 -> 158 bytes .../bitmaps_png/png/small_new_window_32.png | Bin 0 -> 233 bytes .../png/small_new_window_dark_16.png | Bin 0 -> 180 bytes .../png/small_new_window_dark_32.png | Bin 0 -> 281 bytes .../sources/dark/small_new_window.svg | 86 ++++++++++++++++++ .../sources/light/small_new_window.svg | 86 ++++++++++++++++++ 13 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 resources/bitmaps_png/png/small_new_window_16.png create mode 100644 resources/bitmaps_png/png/small_new_window_32.png create mode 100644 resources/bitmaps_png/png/small_new_window_dark_16.png create mode 100644 resources/bitmaps_png/png/small_new_window_dark_32.png create mode 100644 resources/bitmaps_png/sources/dark/small_new_window.svg create mode 100644 resources/bitmaps_png/sources/light/small_new_window.svg diff --git a/common/bitmap_info.cpp b/common/bitmap_info.cpp index 7e951b3c7a..44fbc2e6df 100644 --- a/common/bitmap_info.cpp +++ b/common/bitmap_info.cpp @@ -84,6 +84,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi aBitmapInfoCache[BITMAPS::small_edit].emplace_back( BITMAPS::small_edit, wxT( "small_edit_16.png" ), 16, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_folder].emplace_back( BITMAPS::small_folder, wxT( "small_folder_16.png" ), 16, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_library].emplace_back( BITMAPS::small_library, wxT( "small_library_16.png" ), 16, wxT( "light" ) ); + aBitmapInfoCache[BITMAPS::small_new_window].emplace_back( BITMAPS::small_new_window, wxT( "small_new_window_16.png" ), 16, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_plus].emplace_back( BITMAPS::small_plus, wxT( "small_plus_16.png" ), 16, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_refresh].emplace_back( BITMAPS::small_refresh, wxT( "small_refresh_16.png" ), 16, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_sort_desc].emplace_back( BITMAPS::small_sort_desc, wxT( "small_sort_desc_16.png" ), 16, wxT( "light" ) ); @@ -166,6 +167,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi aBitmapInfoCache[BITMAPS::small_edit].emplace_back( BITMAPS::small_edit, wxT( "small_edit_dark_16.png" ), 16, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_folder].emplace_back( BITMAPS::small_folder, wxT( "small_folder_dark_16.png" ), 16, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_library].emplace_back( BITMAPS::small_library, wxT( "small_library_dark_16.png" ), 16, wxT( "dark" ) ); + aBitmapInfoCache[BITMAPS::small_new_window].emplace_back( BITMAPS::small_new_window, wxT( "small_new_window_dark_16.png" ), 16, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_plus].emplace_back( BITMAPS::small_plus, wxT( "small_plus_dark_16.png" ), 16, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_refresh].emplace_back( BITMAPS::small_refresh, wxT( "small_refresh_dark_16.png" ), 16, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_sort_desc].emplace_back( BITMAPS::small_sort_desc, wxT( "small_sort_desc_dark_16.png" ), 16, wxT( "dark" ) ); @@ -248,6 +250,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi aBitmapInfoCache[BITMAPS::small_edit].emplace_back( BITMAPS::small_edit, wxT( "small_edit_32.png" ), 32, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_folder].emplace_back( BITMAPS::small_folder, wxT( "small_folder_32.png" ), 32, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_library].emplace_back( BITMAPS::small_library, wxT( "small_library_32.png" ), 32, wxT( "light" ) ); + aBitmapInfoCache[BITMAPS::small_new_window].emplace_back( BITMAPS::small_new_window, wxT( "small_new_window_32.png" ), 32, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_plus].emplace_back( BITMAPS::small_plus, wxT( "small_plus_32.png" ), 32, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_refresh].emplace_back( BITMAPS::small_refresh, wxT( "small_refresh_32.png" ), 32, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::small_sort_desc].emplace_back( BITMAPS::small_sort_desc, wxT( "small_sort_desc_32.png" ), 32, wxT( "light" ) ); @@ -330,6 +333,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi aBitmapInfoCache[BITMAPS::small_edit].emplace_back( BITMAPS::small_edit, wxT( "small_edit_dark_32.png" ), 32, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_folder].emplace_back( BITMAPS::small_folder, wxT( "small_folder_dark_32.png" ), 32, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_library].emplace_back( BITMAPS::small_library, wxT( "small_library_dark_32.png" ), 32, wxT( "dark" ) ); + aBitmapInfoCache[BITMAPS::small_new_window].emplace_back( BITMAPS::small_new_window, wxT( "small_new_window_dark_32.png" ), 32, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_plus].emplace_back( BITMAPS::small_plus, wxT( "small_plus_dark_32.png" ), 32, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_refresh].emplace_back( BITMAPS::small_refresh, wxT( "small_refresh_dark_32.png" ), 32, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::small_sort_desc].emplace_back( BITMAPS::small_sort_desc, wxT( "small_sort_desc_dark_32.png" ), 32, wxT( "dark" ) ); diff --git a/include/bitmaps/bitmaps_list.h b/include/bitmaps/bitmaps_list.h index 153f95d1fd..7b34f1834e 100644 --- a/include/bitmaps/bitmaps_list.h +++ b/include/bitmaps/bitmaps_list.h @@ -566,6 +566,7 @@ enum class BITMAPS : unsigned int small_edit, small_folder, small_library, + small_new_window, small_plus, small_refresh, small_sort_desc, diff --git a/pcbnew/dialogs/dialog_plot.cpp b/pcbnew/dialogs/dialog_plot.cpp index c625d32ab8..c12b1fc3f1 100644 --- a/pcbnew/dialogs/dialog_plot.cpp +++ b/pcbnew/dialogs/dialog_plot.cpp @@ -271,6 +271,7 @@ void DIALOG_PLOT::init_Dialog() m_zoneFillCheck->SetValue( cfg->m_Plot.check_zones_before_plotting ); m_browseButton->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) ); + m_openDirButton->SetBitmap( KiBitmapBundle( BITMAPS::small_new_window ) ); // m_PSWidthAdjust is stored in mm in user config m_PSWidthAdjust = KiROUND( cfg->m_Plot.ps_fine_width_adjust * pcbIUScale.IU_PER_MM ); @@ -1387,6 +1388,28 @@ void DIALOG_PLOT::onRunDRC( wxCommandEvent& event ) } +void DIALOG_PLOT::onOpenOutputDirectory( wxCommandEvent& event ) +{ + std::function<bool( wxString* )> textResolver = [&]( wxString* token ) -> bool + { + return m_editFrame->GetBoard()->ResolveTextVar( token, 0 ); + }; + + wxString path = m_outputDirectoryName->GetValue(); + path = ExpandTextVars( path, &textResolver ); + path = ExpandEnvVarSubstitutions( path, &Prj() ); + path = Prj().AbsolutePath( path ); + + if( !wxDirExists( path ) ) + { + DisplayError( this, wxString::Format( _( "Directory '%s' does not exist." ), path ) ); + return; + } + + wxLaunchDefaultApplication( path ); +} + + void DIALOG_PLOT::onBoardSetup( wxHyperlinkEvent& aEvent ) { PCB_EDIT_FRAME* parent = dynamic_cast<PCB_EDIT_FRAME*>( GetParent() ); diff --git a/pcbnew/dialogs/dialog_plot.h b/pcbnew/dialogs/dialog_plot.h index 73a6fef510..295ec69e4a 100644 --- a/pcbnew/dialogs/dialog_plot.h +++ b/pcbnew/dialogs/dialog_plot.h @@ -59,6 +59,7 @@ private: void CreateDrillFile( wxCommandEvent& event ) override; void OnGerberX2Checked( wxCommandEvent& event ) override; void onRunDRC( wxCommandEvent& event ) override; + void onOpenOutputDirectory( wxCommandEvent& event ) override; void onBoardSetup( wxHyperlinkEvent& aEvent ) override; void onPlotAllListMoveUp( wxCommandEvent& aEvent ); diff --git a/pcbnew/dialogs/dialog_plot_base.cpp b/pcbnew/dialogs/dialog_plot_base.cpp index c2a275f40b..d01d5c3786 100644 --- a/pcbnew/dialogs/dialog_plot_base.cpp +++ b/pcbnew/dialogs/dialog_plot_base.cpp @@ -44,8 +44,11 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr bupperSizer->Add( m_outputDirectoryName, 1, wxEXPAND|wxTOP|wxBOTTOM, 5 ); m_browseButton = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 ); - bupperSizer->Add( m_browseButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + bupperSizer->Add( m_browseButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); + m_openDirButton = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 ); + m_openDirButton->SetToolTip(_("Open output directory")); + bupperSizer->Add( m_openDirButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); m_MainSizer->Add( bupperSizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); @@ -460,10 +463,8 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr m_sizerButtons->Add( m_sdbSizer1, 1, wxEXPAND, 5 ); - m_MainSizer->Add( m_sizerButtons, 0, wxALL|wxEXPAND, 5 ); - this->SetSizer( m_MainSizer ); this->Layout(); m_MainSizer->Fit( this ); @@ -474,6 +475,7 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PLOT_BASE::OnInitDialog ) ); m_plotFormatOpt->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::SetPlotFormat ), NULL, this ); m_browseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); + m_openDirButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::onOpenOutputDirectory ), NULL, this ); m_plotDNP->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::onDNPCheckbox ), NULL, this ); m_sketchPadsOnFabLayers->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::onSketchPads ), NULL, this ); m_scaleOpt->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnSetScaleOpt ), NULL, this ); @@ -491,6 +493,7 @@ DIALOG_PLOT_BASE::~DIALOG_PLOT_BASE() this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PLOT_BASE::OnInitDialog ) ); m_plotFormatOpt->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::SetPlotFormat ), NULL, this ); m_browseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); + m_openDirButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::onOpenOutputDirectory ), NULL, this ); m_plotDNP->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::onDNPCheckbox ), NULL, this ); m_sketchPadsOnFabLayers->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::onSketchPads ), NULL, this ); m_scaleOpt->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnSetScaleOpt ), NULL, this ); @@ -500,5 +503,4 @@ DIALOG_PLOT_BASE::~DIALOG_PLOT_BASE() m_buttonDRC->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::onRunDRC ), NULL, this ); m_sdbSizer1Apply->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::CreateDrillFile ), NULL, this ); m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::Plot ), NULL, this ); - } diff --git a/pcbnew/dialogs/dialog_plot_base.h b/pcbnew/dialogs/dialog_plot_base.h index 60c6873f96..0343308978 100644 --- a/pcbnew/dialogs/dialog_plot_base.h +++ b/pcbnew/dialogs/dialog_plot_base.h @@ -58,6 +58,7 @@ class DIALOG_PLOT_BASE : public DIALOG_SHIM wxStaticText* m_staticTextDir; wxTextCtrl* m_outputDirectoryName; STD_BITMAP_BUTTON* m_browseButton; + STD_BITMAP_BUTTON* m_openDirButton; wxBoxSizer* bmiddleSizer; wxStaticBoxSizer* m_LayersSizer; wxCheckListBox* m_layerCheckListBox; @@ -142,6 +143,7 @@ class DIALOG_PLOT_BASE : public DIALOG_SHIM virtual void OnGerberX2Checked( wxCommandEvent& event ) { event.Skip(); } virtual void OnChangeDXFPlotMode( wxCommandEvent& event ) { event.Skip(); } virtual void onRunDRC( wxCommandEvent& event ) { event.Skip(); } + virtual void onOpenOutputDirectory( wxCommandEvent& event ) { event.Skip(); } virtual void CreateDrillFile( wxCommandEvent& event ) { event.Skip(); } virtual void Plot( wxCommandEvent& event ) { event.Skip(); } diff --git a/resources/bitmaps_png/CMakeLists.txt b/resources/bitmaps_png/CMakeLists.txt index 2c8fa1da87..27d7cfd8a9 100644 --- a/resources/bitmaps_png/CMakeLists.txt +++ b/resources/bitmaps_png/CMakeLists.txt @@ -125,6 +125,7 @@ set( BMAPS_SMALL small_edit small_folder small_library + small_new_window small_plus small_refresh small_sort_desc diff --git a/resources/bitmaps_png/png/small_new_window_16.png b/resources/bitmaps_png/png/small_new_window_16.png new file mode 100644 index 0000000000000000000000000000000000000000..5365f7180a65448f346b6c35da22f07be3baf5b0 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6QaxQ9Lp07OCpa)Gwmbh*KG@I0 zBJ#&w+=?eqOiQYWbKwK~T}&&!l&Y|vn08=^v+4#d2am(46GRoflLH&Hc+37JhOjPo z`qv)EC*nLQ#UYSE#D;mI+eV4I;wC{2vX46CzEmhOFx14&{yp<HAIJp^p00i_>zopr E0L-&7!~g&Q literal 0 HcmV?d00001 diff --git a/resources/bitmaps_png/png/small_new_window_32.png b/resources/bitmaps_png/png/small_new_window_32.png new file mode 100644 index 0000000000000000000000000000000000000000..d3288579db21f1e40d40eeb7ebff51964cc83e1a GIT binary patch literal 233 zcmV<F02cp=P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg00026Nkl<ZNXPBf zK@Nl<425A1=#G+E%xUJX^%R;gi4ilDK4_y8H_F!k3pE%*7(6u5Oc|^-eZml6m~X^c zAcs>U6ac<7)6{^8mKMO<<bGa&Yy*Ds)do}}RQX#4x*xO3MKcCu?gZN01!%bg&~r0@ zawCBA<M43@=;izIFXu!9Vm$ICy+EkWBY)#67h5*~A_wEDz_!&Go7t@ZJe3ddXTY;A j2G|X->-Mo+IQKnY(ZXa3q`6hs00000NkvXXu0mjf_E=uq literal 0 HcmV?d00001 diff --git a/resources/bitmaps_png/png/small_new_window_dark_16.png b/resources/bitmaps_png/png/small_new_window_dark_16.png new file mode 100644 index 0000000000000000000000000000000000000000..c12b2cb4152d4a9fa9d206a8f1e228b5a62bca46 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`)t)YnAr_~T6BHQU#qO(?==lHm zfV`xJ$pd>u*Y=6LyKCQV(+GGYWXAkY*oeXRbLkqk2cOt>J^LO0-diA-!R)L=Re@xK zw{albgUdZ4AKDA07@o{;>Wbf2{IO3WtT$qA^O6t$p6*VcVEXur-ogk8C$<Sqo~I02 dK5@7*Fl6rE>t1avbOh)O22WQ%mvv4FO#q8cL<#@^ literal 0 HcmV?d00001 diff --git a/resources/bitmaps_png/png/small_new_window_dark_32.png b/resources/bitmaps_png/png/small_new_window_dark_32.png new file mode 100644 index 0000000000000000000000000000000000000000..b21459e0bf5db8c370619bf55a3fafe402b58449 GIT binary patch literal 281 zcmV+!0p|XRP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80002sNkl<ZSi|j? zJr2Vl3`RL%wy5gR)AWj%k&iCPDT0)4tw80+V3bx3lGnT^8-2t|bsi8Vr|s$pJF7H2 z4DL!mU}3{w<@~_{*wtYphy~am(sl)5DhWF6E{?F(2(ViT!qNi|1X|jc6G*_loIqv- zDL6E4)dH=TG6&CcBm_$Ep#nAVVFI=AAp#t@xBwR}D$oLt124!CjzB9si2OK5Y6W00 ze}HcfvR4+cdN$?fHwn+STu2}bXN{I2@NTKWT)eE(0_=o51x|sV6&O|DE6}^)bpOWp fZa7kl%>SJy0Xmtd)8C2z00000NkvXXu0mjf8gy|t literal 0 HcmV?d00001 diff --git a/resources/bitmaps_png/sources/dark/small_new_window.svg b/resources/bitmaps_png/sources/dark/small_new_window.svg new file mode 100644 index 0000000000..b8d4791903 --- /dev/null +++ b/resources/bitmaps_png/sources/dark/small_new_window.svg @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="16" + height="16" + viewBox="0 0 4.2333332 4.2333332" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="small_new_window.svg" + 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#"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="true" + inkscape:document-units="px" + showgrid="false" + inkscape:snap-object-midpoints="true" + units="px" + inkscape:zoom="25.710835" + inkscape:cx="6.3980808" + inkscape:cy="8.615045" + inkscape:window-width="1440" + inkscape:window-height="836" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#ded3dd;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 2.3812499,0.26458333 h 1.5875 l 0,1.58749997" + id="path1561" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#ded3dd;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 3.9687499,0.26458333 1.8520833,2.3812499" + id="path5866" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ded3dd;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 1.8520833,0.79374997 H 0.52916665 V 3.7041665 H 3.4395832 V 2.3812499" + id="path8235" + sodipodi:nodetypes="ccccc" /> + </g> + <metadata + id="metadata9"> + <rdf:RDF> + <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> + <cc:Work + rdf:about=""> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> + </cc:Work> + </rdf:RDF> + </metadata> +</svg> diff --git a/resources/bitmaps_png/sources/light/small_new_window.svg b/resources/bitmaps_png/sources/light/small_new_window.svg new file mode 100644 index 0000000000..cb33d82d8c --- /dev/null +++ b/resources/bitmaps_png/sources/light/small_new_window.svg @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="16" + height="16" + viewBox="0 0 4.2333332 4.2333332" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="small_new_window.svg" + 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#"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="true" + inkscape:document-units="px" + showgrid="false" + inkscape:snap-object-midpoints="true" + units="px" + inkscape:zoom="25.710835" + inkscape:cx="-14.760314" + inkscape:cy="8.615045" + inkscape:window-width="1440" + inkscape:window-height="836" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#545454;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 2.3812499,0.26458333 h 1.5875 l 0,1.58749997" + id="path1561" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#545454;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 3.9687499,0.26458333 1.8520833,2.3812499" + id="path5866" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#545454;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 1.8520833,0.79374997 H 0.52916665 V 1.942215 3.7041665 H 3.4395832 V 2.3812499" + id="path8235" + sodipodi:nodetypes="cccccc" /> + </g> + <metadata + id="metadata9"> + <rdf:RDF> + <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> + <cc:Work + rdf:about=""> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> + </cc:Work> + </rdf:RDF> + </metadata> +</svg>