roundabout,
created on Monday, 10 March 2025, 18:07:37 (1741630057),
received on Monday, 10 March 2025, 18:07:39 (1741630059)
Author identity: vlad <vlad.muntoiu@gmail.com>
3441ed898fd6688495d3225567a5bfad7fc1315b
gpanthera.cc
@@ -379,6 +379,15 @@ namespace gPanthera {
child.redock(this);
}
void ContentManager::add_stack(ContentStack *stack) {
this->stacks.push_back(stack);
}
void ContentManager::remove_stack(ContentStack *stack) {
this->stacks.erase(std::ranges::remove(this->stacks, stack).begin(), this->stacks.end());
}
void BaseStack::add(Gtk::Widget &child, const Glib::ustring &name) {
Gtk::Stack::add(child, name);
signal_child_added.emit(&child);
@@ -393,4 +402,9 @@ namespace gPanthera {
Gtk::Stack::remove(child);
signal_child_removed.emit(&child);
}
ContentStack::ContentStack(std::shared_ptr<ContentManager> content_manager)
: BaseStack(), content_manager(std::move(content_manager)) {
this->content_manager->add_stack(this);
}
} // namespace gPanthera
gpanthera.hh
@@ -103,6 +103,26 @@ namespace gPanthera {
DockStack *get_stack() const;
~DockStackSwitcher() override;
};
class ContentStack;
class ContentManager : public Glib::ObjectBase {
private:
public:
std::vector<ContentStack*> stacks;
ContentManager();
void add_stack(ContentStack *stack);
void remove_stack(ContentStack *stack);
};
class ContentStack : public BaseStack {
private:
std::shared_ptr<ContentManager> content_manager;
public:
explicit ContentStack(std::shared_ptr<ContentManager> content_manager);
void add_page(Gtk::Widget &child);
};
} // namespace gPanthera
#endif // GPANTHERA_LIBRARY_H