summaryrefslogtreecommitdiff
path: root/src/components/cellrenderermemberlist.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2023-09-09 01:16:12 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2023-09-09 01:16:12 -0400
commit1056596dfc77bee54707097aa60ee2fef2c8d83b (patch)
treee8a93325b3834b7f13e67552e0066310e13f2b63 /src/components/cellrenderermemberlist.cpp
parent67b23abbd46df3e9addb9cd4559d0cca059b8d75 (diff)
downloadabaddon-portaudio-1056596dfc77bee54707097aa60ee2fef2c8d83b.tar.gz
abaddon-portaudio-1056596dfc77bee54707097aa60ee2fef2c8d83b.zip
start new member list
Diffstat (limited to 'src/components/cellrenderermemberlist.cpp')
-rw-r--r--src/components/cellrenderermemberlist.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/components/cellrenderermemberlist.cpp b/src/components/cellrenderermemberlist.cpp
new file mode 100644
index 0000000..187b82c
--- /dev/null
+++ b/src/components/cellrenderermemberlist.cpp
@@ -0,0 +1,112 @@
+#include "cellrenderermemberlist.hpp"
+
+CellRendererMemberList::CellRendererMemberList()
+ : Glib::ObjectBase(typeid(CellRendererMemberList))
+ , Gtk::CellRenderer()
+ , m_property_type(*this, "render-type")
+ , m_property_id(*this, "id")
+ , m_property_name(*this, "name") {
+ property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE;
+ property_xpad() = 2;
+ property_ypad() = 2;
+ m_property_name.get_proxy().signal_changed().connect([this]() {
+ m_renderer_text.property_markup() = m_property_name;
+ });
+}
+
+Glib::PropertyProxy<MemberListRenderType> CellRendererMemberList::property_type() {
+ return m_property_type.get_proxy();
+}
+
+Glib::PropertyProxy<uint64_t> CellRendererMemberList::property_id() {
+ return m_property_id.get_proxy();
+}
+
+Glib::PropertyProxy<Glib::ustring> CellRendererMemberList::property_name() {
+ return m_property_name.get_proxy();
+}
+
+void CellRendererMemberList::get_preferred_width_vfunc(Gtk::Widget &widget, int &minimum_width, int &natural_width) const {
+ switch (m_property_type.get_value()) {
+ case MemberListRenderType::Role:
+ return get_preferred_width_vfunc_role(widget, minimum_width, natural_width);
+ case MemberListRenderType::Member:
+ return get_preferred_width_vfunc_member(widget, minimum_width, natural_width);
+ }
+}
+
+void CellRendererMemberList::get_preferred_width_for_height_vfunc(Gtk::Widget &widget, int height, int &minimum_width, int &natural_width) const {
+ switch (m_property_type.get_value()) {
+ case MemberListRenderType::Role:
+ return get_preferred_width_for_height_vfunc_role(widget, height, minimum_width, natural_width);
+ case MemberListRenderType::Member:
+ return get_preferred_width_for_height_vfunc_member(widget, height, minimum_width, natural_width);
+ }
+}
+
+void CellRendererMemberList::get_preferred_height_vfunc(Gtk::Widget &widget, int &minimum_width, int &natural_width) const {
+ switch (m_property_type.get_value()) {
+ case MemberListRenderType::Role:
+ return get_preferred_height_vfunc_role(widget, minimum_width, natural_width);
+ case MemberListRenderType::Member:
+ return get_preferred_height_vfunc_member(widget, minimum_width, natural_width);
+ }
+}
+
+void CellRendererMemberList::get_preferred_height_for_width_vfunc(Gtk::Widget &widget, int width, int &minimum_height, int &natural_height) const {
+ switch (m_property_type.get_value()) {
+ case MemberListRenderType::Role:
+ return get_preferred_height_for_width_vfunc_role(widget, width, minimum_height, natural_height);
+ case MemberListRenderType::Member:
+ return get_preferred_height_for_width_vfunc_member(widget, width, minimum_height, natural_height);
+ }
+}
+
+void CellRendererMemberList::render_vfunc(const Cairo::RefPtr<Cairo::Context> &cr, Gtk::Widget &widget, const Gdk::Rectangle &background_area, const Gdk::Rectangle &cell_area, Gtk::CellRendererState flags) {
+ switch (m_property_type.get_value()) {
+ case MemberListRenderType::Role:
+ return render_vfunc_role(cr, widget, background_area, cell_area, flags);
+ case MemberListRenderType::Member:
+ return render_vfunc_member(cr, widget, background_area, cell_area, flags);
+ }
+}
+
+void CellRendererMemberList::get_preferred_width_vfunc_role(Gtk::Widget &widget, int &minimum_width, int &natural_width) const {
+ m_renderer_text.get_preferred_width(widget, minimum_width, natural_width);
+}
+
+void CellRendererMemberList::get_preferred_width_for_height_vfunc_role(Gtk::Widget &widget, int height, int &minimum_width, int &natural_width) const {
+ m_renderer_text.get_preferred_width_for_height(widget, height, minimum_width, natural_width);
+}
+
+void CellRendererMemberList::get_preferred_height_vfunc_role(Gtk::Widget &widget, int &minimum_height, int &natural_height) const {
+ m_renderer_text.get_preferred_height(widget, minimum_height, natural_height);
+}
+
+void CellRendererMemberList::get_preferred_height_for_width_vfunc_role(Gtk::Widget &widget, int width, int &minimum_height, int &natural_height) const {
+ m_renderer_text.get_preferred_height_for_width(widget, width, minimum_height, natural_height);
+}
+
+void CellRendererMemberList::render_vfunc_role(const Cairo::RefPtr<Cairo::Context> &cr, Gtk::Widget &widget, const Gdk::Rectangle &background_area, const Gdk::Rectangle &cell_area, Gtk::CellRendererState flags) {
+ m_renderer_text.render(cr, widget, background_area, cell_area, flags);
+}
+
+void CellRendererMemberList::get_preferred_width_vfunc_member(Gtk::Widget &widget, int &minimum_width, int &natural_width) const {
+ m_renderer_text.get_preferred_width(widget, minimum_width, natural_width);
+}
+
+void CellRendererMemberList::get_preferred_width_for_height_vfunc_member(Gtk::Widget &widget, int height, int &minimum_width, int &natural_width) const {
+ m_renderer_text.get_preferred_width_for_height(widget, height, minimum_width, natural_width);
+}
+
+void CellRendererMemberList::get_preferred_height_vfunc_member(Gtk::Widget &widget, int &minimum_height, int &natural_height) const {
+ m_renderer_text.get_preferred_height(widget, minimum_height, natural_height);
+}
+
+void CellRendererMemberList::get_preferred_height_for_width_vfunc_member(Gtk::Widget &widget, int width, int &minimum_height, int &natural_height) const {
+ m_renderer_text.get_preferred_height_for_width(widget, width, minimum_height, natural_height);
+}
+
+void CellRendererMemberList::render_vfunc_member(const Cairo::RefPtr<Cairo::Context> &cr, Gtk::Widget &widget, const Gdk::Rectangle &background_area, const Gdk::Rectangle &cell_area, Gtk::CellRendererState flags) {
+ m_renderer_text.render(cr, widget, background_area, cell_area, flags);
+}