Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
breadcrumb.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <pulp/view/view.hpp>
4#include <functional>
5#include <string>
6#include <vector>
7
8namespace pulp::view {
9
10// ── Breadcrumb ──────────────────────────────────────────────────────────────
11// Navigation breadcrumb trail.
12
13class Breadcrumb : public View {
14public:
15 struct Item {
16 std::string label;
17 std::string id; // Optional identifier for callback
18 };
19
21
23 void set_items(std::vector<Item> items);
24 const std::vector<Item>& items() const { return items_; }
25
27 void push(Item item);
28
31
33 void pop_to(size_t index);
34
36 std::function<void(size_t index, const Item& item)> on_navigate;
37
39 void set_separator(std::string sep) { separator_ = std::move(sep); }
40 const std::string& separator() const { return separator_; }
41
46 void set_show_background(bool show) { show_background_ = show; }
47 bool show_background() const { return show_background_; }
48
49 void paint(canvas::Canvas& canvas) override;
50 void on_mouse_down(Point pos) override;
51 bool wants_mouse_input() const override { return true; }
52
53 float intrinsic_height() const override { return 32.0f; }
54
55private:
56 std::vector<Item> items_;
57 std::string separator_ = "/";
58 bool show_background_ = true;
59
60 int item_at_position(Point pos) const;
61};
62
63} // namespace pulp::view
Definition canvas.hpp:240
void paint(canvas::Canvas &canvas) override
std::function< void(size_t index, const Item &item)> on_navigate
Callback when a breadcrumb item is clicked.
Definition breadcrumb.hpp:36
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition breadcrumb.hpp:51
void push(Item item)
Push a new item onto the trail.
float intrinsic_height() const override
Definition breadcrumb.hpp:53
void pop_to(size_t index)
Pop back to a specific index (inclusive).
void set_items(std::vector< Item > items)
Set the full breadcrumb path.
void set_show_background(bool show)
Whether to paint the rounded bg.surface card behind the trail.
Definition breadcrumb.hpp:46
const std::vector< Item > & items() const
Definition breadcrumb.hpp:24
const std::string & separator() const
Definition breadcrumb.hpp:40
Item pop()
Pop the last item. Returns it, or empty if trail is empty.
bool show_background() const
Definition breadcrumb.hpp:47
void on_mouse_down(Point pos) override
void set_separator(std::string sep)
Separator string between items.
Definition breadcrumb.hpp:39
Definition affine_transform.hpp:24
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
Definition breadcrumb.hpp:15
std::string id
Definition breadcrumb.hpp:17
std::string label
Definition breadcrumb.hpp:16
Definition geometry.hpp:20