From 3900eebf15683d160047cb7ef7755fa6c1313ef2 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 29 Sep 2019 21:00:41 +0200 Subject: [PATCH] FileManager+LibGUI+html: Add an icon to represent HTML files This also becomes the app icon for the little "html" program. :^) --- Applications/FileManager/DirectoryView.cpp | 10 ++++++++++ Base/res/icons/16x16/filetype-html.png | Bin 0 -> 1478 bytes Base/res/icons/32x32/filetype-html.png | Bin 0 -> 454 bytes Libraries/LibGUI/GDirectoryModel.cpp | 3 +++ Libraries/LibGUI/GDirectoryModel.h | 1 + Userland/html.cpp | 22 +++++++++++++++++++++ 6 files changed, 36 insertions(+) create mode 100644 Base/res/icons/16x16/filetype-html.png create mode 100644 Base/res/icons/32x32/filetype-html.png diff --git a/Applications/FileManager/DirectoryView.cpp b/Applications/FileManager/DirectoryView.cpp index 326fae02ab..1243d3bee7 100644 --- a/Applications/FileManager/DirectoryView.cpp +++ b/Applications/FileManager/DirectoryView.cpp @@ -53,6 +53,16 @@ void DirectoryView::handle_activation(const GModelIndex& index) return; } + if (path.to_lowercase().ends_with(".html")) { + if (fork() == 0) { + int rc = execl("/bin/html", "/bin/html", path.characters(), nullptr); + if (rc < 0) + perror("exec"); + ASSERT_NOT_REACHED(); + } + return; + } + if (path.to_lowercase().ends_with(".wav")) { if (fork() == 0) { int rc = execl("/bin/SoundPlayer", "/bin/SoundPlayer", path.characters(), nullptr); diff --git a/Base/res/icons/16x16/filetype-html.png b/Base/res/icons/16x16/filetype-html.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a0cc04938d033d4d6ed999b531ca7ad552fc00 GIT binary patch literal 1478 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s-N~=O5N`ey06$*;-(=u~X z6-p`#QWa7wGSe6sDsEk!9$EHQgU9v1q$@9@r%95c5k-K_q}yLwcL2l-{Ymb@1B#N zAM0W;tKB~FaIA+;UFkQa00mE@Q$J5n`my0zuK36G$?4}_Ie$2J%lS>ty|SJBts4`~ zIrt54m3`tbv)ujAJ!|^B_i+UqF5ZhX-zdHKrNm!}*fPe6TxtBTjHZM-A8rab^-Jf* zOCyG@i{_LcS}T#nx{+-bYq{x^4#BsMeNw4XSHdG#IxTv9PEfTtHPUSAiO$zekDmE9 zD;t<7b7_fQVM(*wdf}D%+J9P_Re3GbdWj=qq-tRi=d+&zy2BxOE)=0wxIj0{ks@U~xn$EeVvU^s^{VN?e=CX4L z{`w~1%*13ip@J(#xmd+XMzqFg%4Q2a1&4dZ%EkxWR2cd`y^+4}5|w-NbKeh4`66!)GAT-0sXCb9UK$mTAquTmzf zvM$ZB;GAYK->FM2(@QhGWY$Bg$FFPyJ+9UWxr~`{l;g<@4B!a!(W-?l*XJVWOMe%G_1oue@lybNot1@a!XZ zvc%V4N$C6dsOeeJBXwheWOoHQbw(8v|Fp1^mh+yd8PBfJ3*yOoqCUrMvINI2zc=i2 z->iFL_atr4Z|%H4eRF2MsB4}x^M%>Y^gR6)TlbWSL^eFrnPa%sXv2nuj@Qr3dOq*V z+e?409L#oSeh_wb$yaffjg)O`3KiGIp zuz3!wkIh`K@!#`uEZ7edq7*IR7L5^MQAMIsIM97vx-JEi6jXzdbI9`?k)`fL2$v|<&zm07&r?&B8wRq^pruEv0|xx83O|Ydx@v7EBj+kSs`I% zecwz+1_p*po-U3d7N?UF76=$96-V8Q`j;FW5*&KiV@jrOuI~Sfj^5Fy>tooA4Gatn z1d}&RUM%c)T`;v_X{&0S^M|U&#zsczHfAxWZU6uOpP$IsEIem_L73>_#**+ydp9&3 z?0oq1{AG@sY0ZiSdmq#<;whN3wH+*U`|~!iku$3PwMjc&;5P6z5U@Wv`AftBb`GhA zJY`R|H~z(m7JKK49-Yuyd0TSTmPr!V*!QI$kzzaUFXR4jx>ru>hD%Wg4;OvW|{4*2%lQVA@g(kp7Q_q_U>jjvu#P`JZ$1IO@7;!X%3g;W2Ro2Z6#XqdlN51 z%GCplCML%Q9X4?i+VAYJ?o^1%3}KD;(^q;tsnD3+)^egIl5^v)Xf2;*q8DacaVXxO z*JvN{U&P=uaTV#&QfKDs?qhL!aI$*CgxNgY7d~_~zqYoSBfnAoLaPk7jr{Q} zSq24B)l2L5bDS{=*t*B1fMJ8Q9z%lvPlvtw6SsC6usln02|ax{CBlPsUD=fNWig^I z^OWbZKYzrWdHT=t-WT=40oGotD%1QP{CgvCdv|_F5_7|Wv&va+Gqn{&{e?v3yRPKz z@MfJo(_y`t>w{;(>!(b7u5hla{t5HmTOv*`nHUo6?jHFjS$S^F$2)>M-n6CEm|AmA zWjGLdfbP0l+XkKtn9(3 literal 0 HcmV?d00001 diff --git a/Libraries/LibGUI/GDirectoryModel.cpp b/Libraries/LibGUI/GDirectoryModel.cpp index 978538250a..21955a03c5 100644 --- a/Libraries/LibGUI/GDirectoryModel.cpp +++ b/Libraries/LibGUI/GDirectoryModel.cpp @@ -34,6 +34,7 @@ GDirectoryModel::GDirectoryModel() m_executable_icon = GIcon::default_icon("filetype-executable"); m_filetype_image_icon = GIcon::default_icon("filetype-image"); m_filetype_sound_icon = GIcon::default_icon("filetype-sound"); + m_filetype_html_icon = GIcon::default_icon("filetype-html"); setpwent(); while (auto* passwd = getpwent()) @@ -159,6 +160,8 @@ GIcon GDirectoryModel::icon_for(const Entry& entry) const return m_executable_icon; if (entry.name.to_lowercase().ends_with(".wav")) return m_filetype_sound_icon; + if (entry.name.to_lowercase().ends_with(".html")) + return m_filetype_html_icon; if (entry.name.to_lowercase().ends_with(".png")) { if (!entry.thumbnail) { if (!const_cast(this)->fetch_thumbnail_for(entry)) diff --git a/Libraries/LibGUI/GDirectoryModel.h b/Libraries/LibGUI/GDirectoryModel.h index 2102bebb6f..5f7ac03049 100644 --- a/Libraries/LibGUI/GDirectoryModel.h +++ b/Libraries/LibGUI/GDirectoryModel.h @@ -78,6 +78,7 @@ private: GIcon m_executable_icon; GIcon m_filetype_image_icon; GIcon m_filetype_sound_icon; + GIcon m_filetype_html_icon; HashMap m_user_names; HashMap m_group_names; diff --git a/Userland/html.cpp b/Userland/html.cpp index 5a28f240a5..cff3afb1b0 100644 --- a/Userland/html.cpp +++ b/Userland/html.cpp @@ -1,5 +1,9 @@ #include +#include +#include #include +#include +#include #include #include #include @@ -48,5 +52,23 @@ int main(int argc, char** argv) window->set_main_widget(widget); window->show(); + auto menubar = make(); + + auto app_menu = make("HTML"); + app_menu->add_action(GCommonActions::make_quit_action([&](auto&) { + app.quit(); + })); + menubar->add_menu(move(app_menu)); + + auto help_menu = make("Help"); + help_menu->add_action(GAction::create("About", [&](const GAction&) { + GAboutDialog::show("HTML", GraphicsBitmap::load_from_file("/res/icons/32x32/filetype-html.png"), window); + })); + menubar->add_menu(move(help_menu)); + + app.set_menubar(move(menubar)); + + window->set_icon(GraphicsBitmap::load_from_file("/res/icons/16x16/filetype-html.png")); + return app.exec(); }