diff --git a/meson.build b/meson.build index 55b89eb..ea18242 100644 --- a/meson.build +++ b/meson.build @@ -4,6 +4,8 @@ project( default_options : ['cpp_std=c++17'] ) +add_project_arguments('-O3', language : 'cpp') + raven_dep = dependency('raven') executable( diff --git a/src/DirectoryView.cpp b/src/DirectoryView.cpp index 120084f..ff5476c 100644 --- a/src/DirectoryView.cpp +++ b/src/DirectoryView.cpp @@ -16,7 +16,7 @@ void DirectoryView::set_current_path(std::filesystem::path path) { target()->clear_children(); for (const auto &entry : std::filesystem::directory_iterator(m_current_path)) { std::string filename = entry.path().filename(); - auto button = m_target->add( + auto button = target()->add( entry.path().filename(), entry.is_directory() ? FileButton::ButtonType::Directory : FileButton::ButtonType::File ); @@ -44,8 +44,8 @@ void DirectoryView::on_init() { set_current_path(go); }; - m_target = make_target(); - m_target->set_layout(16.0); + make_target(); + target()->set_layout(16.0); set_did_init(true); } diff --git a/src/DirectoryView.hpp b/src/DirectoryView.hpp index be62683..d5024d0 100644 --- a/src/DirectoryView.hpp +++ b/src/DirectoryView.hpp @@ -31,6 +31,5 @@ protected: void on_init(); private: std::filesystem::path m_current_path { "/" }; - std::shared_ptr m_target; CheckpointStack m_checkpoint_stack {}; }; diff --git a/src/FileButton.cpp b/src/FileButton.cpp index 67b96df..bfc4e6d 100644 --- a/src/FileButton.cpp +++ b/src/FileButton.cpp @@ -1,7 +1,8 @@ #include "FileButton.hpp" #include "DirectoryView.hpp" +#include "SvgUtil.hpp" -Raven::GenericStyle FileButton::style = Raven::GenericStyle { +Raven::GenericStyle FileButton::style = { pango_font_description_from_string("sans-serif"), Raven::black6, Raven::white3, @@ -12,6 +13,9 @@ Raven::GenericStyle FileButton::style = Raven::GenericStyle { true }; +Cairo::RefPtr FileButton::folder_icon = Raven::render_svg("/usr/share/icons/Papirus/64x64/places/folder-adwaita.svg", 0, 0, 64, 64); +Cairo::RefPtr FileButton::file_icon = Raven::render_svg("/usr/share/icons/Papirus/64x64/mimetypes/text-x-generic.svg", 0, 0, 64, 64); + void FileButton::on_init() { rect().set_width(64); rect().set_height(88); @@ -23,9 +27,9 @@ void FileButton::on_init() { layout->slot_pixel(24); // name (text) if (m_button_type == ButtonType::Directory) { - add("/usr/share/icons/Papirus/64x64/places/folder-adwaita.svg"); + add(folder_icon); } else if (m_button_type == ButtonType::File) { - add("/usr/share/icons/Papirus/64x64/mimetypes/text-x-generic.svg"); + add(file_icon); } auto label = add(m_name, Raven::PaintTextAlign::Center); label->rect().set_max_width(rect().width()); diff --git a/src/FileButton.hpp b/src/FileButton.hpp index 18fb0ca..2926b83 100644 --- a/src/FileButton.hpp +++ b/src/FileButton.hpp @@ -2,6 +2,8 @@ #include #include +#include "cairomm/refptr.h" +#include "cairomm/surface.h" #include "raven/Widget.hpp" #include "raven/BoxLayout.hpp" #include "raven/Label.hpp" @@ -12,6 +14,8 @@ class FileButton : public Raven::Widget { public: static Raven::GenericStyle style; + static Cairo::RefPtr folder_icon; + static Cairo::RefPtr file_icon; enum class ButtonType { Directory,