diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2025-06-05 14:30:13 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2025-06-05 14:30:13 +0200 |
| commit | 838e660750b589636b95472f7421b5579f068727 (patch) | |
| tree | 63bd5bcb124cdef0cc5197aa1c9fdbe9803055bb /gui/src | |
| parent | 85f0a9cc53e51106b7601b6ae10b5fb169613184 (diff) | |
| download | turns-838e660750b589636b95472f7421b5579f068727.tar.xz turns-838e660750b589636b95472f7421b5579f068727.zip | |
gui: reintroduce participant editor
Diffstat (limited to 'gui/src')
| -rw-r--r-- | gui/src/init.cpp | 4 | ||||
| -rw-r--r-- | gui/src/participant_editor.cpp | 66 |
2 files changed, 44 insertions, 26 deletions
diff --git a/gui/src/init.cpp b/gui/src/init.cpp index c9a7295..734f953 100644 --- a/gui/src/init.cpp +++ b/gui/src/init.cpp @@ -1,10 +1,12 @@ #include "init.hpp" +#include "participant_editor.hpp" #include "participant_row.hpp" #include <glib-object.h> auto Turns::gui::init() -> void { - static_cast<void>(ParticipantRow{nullptr}.get_type()); + g_type_ensure(ParticipantRow{nullptr}.get_type()); + g_type_ensure(ParticipantEditor{nullptr}.get_type()); } diff --git a/gui/src/participant_editor.cpp b/gui/src/participant_editor.cpp index 998d566..ca17495 100644 --- a/gui/src/participant_editor.cpp +++ b/gui/src/participant_editor.cpp @@ -3,22 +3,25 @@ * SPDX-License-Identifier: LGPL-2.1-only */ -#include "turns/ui/participant_editor.hpp" +#include "participant_editor.hpp" -#include "turns/core/disposition.hpp" -#include "turns/core/participant.hpp" -#include "turns/lang/messages.hpp" -#include "turns/ui/template_widget.hpp" +#include "messages.hpp" +#include "template_widget.hpp" + +#include <turnsmm/participant.hpp> #include <sigc++/functors/mem_fun.h> +#include <adwaitamm/comborow.hpp> +#include <adwaitamm/entryrow.hpp> +#include <adwaitamm/spinrow.hpp> #include <glibmm/binding.h> #include <glibmm/i18n.h> #include <glibmm/objectbase.h> #include <glibmm/propertyproxy.h> #include <glibmm/refptr.h> #include <glibmm/ustring.h> - +#include <glibmm/value.h> #include <gtkmm/button.h> #include <gtkmm/label.h> #include <gtkmm/listitem.h> @@ -27,23 +30,36 @@ #include <gtkmm/stringlist.h> #include <gtkmm/stringobject.h> -#include <adwaitamm/comborow.hpp> -#include <adwaitamm/entryrow.hpp> -#include <adwaitamm/spinrow.hpp> - #include <cstdint> #include <memory> #include <ranges> -namespace turns::ui +namespace Turns::gui { namespace { auto constexpr static TYPE_NAME = "ParticipantEditor"; auto constexpr static TEMPLATE = "/ch/arknet/Turns/participant_editor.ui"; + + auto presentation_name_for(Participant::Disposition disposition) -> char const * + { + switch (disposition) + { + case Participant::Disposition::Neutral: + return _("Neutral"); + case Participant::Disposition::Friendly: + return _("Friendly"); + case Participant::Disposition::Hostile: + return _("Hostile"); + case Participant::Disposition::Secret: + return _("Secret"); + } + + return "Invalid value"; + } } // namespace - ParticipantEditor::ParticipantEditor(Glib::RefPtr<core::Participant> participant) + ParticipantEditor::ParticipantEditor(Glib::RefPtr<Participant> participant) : Glib::ObjectBase{TYPE_NAME} , template_widget{TEMPLATE} , m_disposition{get_widget<Adwaita::ComboRow>("disposition")} @@ -56,9 +72,9 @@ namespace turns::ui { m_finish->signal_clicked().connect(sigc::mem_fun(*this, &ParticipantEditor::handle_finish_clicked)); - for (auto n : std::views::iota(std::uint8_t{}, static_cast<std::uint8_t>(core::Disposition::END))) + for (auto n : std::views::iota(std::uint8_t{}, static_cast<std::uint8_t>(Participant::Disposition::Secret))) { - m_disposition_model->append(presentation_name_for(core::Disposition{n})); + m_disposition_model->append(presentation_name_for(Participant::Disposition{n})); } m_disposition_factory->signal_bind().connect(sigc::mem_fun(*this, &ParticipantEditor::handle_item_bind)); @@ -72,9 +88,9 @@ namespace turns::ui set_participant(participant); } - auto ParticipantEditor::get_disposition() const -> core::Disposition + auto ParticipantEditor::get_disposition() const -> Participant::Disposition { - return static_cast<core::Disposition>(m_disposition->get_selected()); + return static_cast<Participant::Disposition>(m_disposition->get_selected()); } auto ParticipantEditor::get_name() const -> Glib::ustring @@ -82,7 +98,7 @@ namespace turns::ui return m_name->get_text(); } - auto ParticipantEditor::get_participant() const -> Glib::RefPtr<core::Participant> + auto ParticipantEditor::get_participant() const -> Glib::RefPtr<Participant> { return m_participant.get_value(); } @@ -92,7 +108,7 @@ namespace turns::ui return m_priority->get_value(); } - auto ParticipantEditor::set_disposition(core::Disposition value) -> void + auto ParticipantEditor::set_disposition(Participant::Disposition value) -> void { m_disposition->set_selected(static_cast<unsigned>(value)); } @@ -102,7 +118,7 @@ namespace turns::ui m_name->set_text(value); } - auto ParticipantEditor::set_participant(Glib::RefPtr<core::Participant> const & value) -> void + auto ParticipantEditor::set_participant(Glib::RefPtr<Participant> const & value) -> void { m_participant.set_value(value); } @@ -112,12 +128,12 @@ namespace turns::ui m_priority->set_value(value); } - auto ParticipantEditor::property_participant() -> Glib::PropertyProxy<Glib::RefPtr<core::Participant>> + auto ParticipantEditor::property_participant() -> Glib::PropertyProxy<Glib::RefPtr<Participant>> { return m_participant.get_proxy(); } - auto ParticipantEditor::property_participant() const -> Glib::PropertyProxy_ReadOnly<Glib::RefPtr<core::Participant>> + auto ParticipantEditor::property_participant() const -> Glib::PropertyProxy_ReadOnly<Glib::RefPtr<Participant>> { return m_participant.get_proxy(); } @@ -129,7 +145,7 @@ namespace turns::ui auto ParticipantEditor::handle_finish_clicked() -> void { - m_signal_finished.emit(m_name->get_text(), m_priority->get_value(), static_cast<core::Disposition>(m_disposition->get_selected())); + m_signal_finished.emit(m_name->get_text(), m_priority->get_value(), static_cast<Participant::Disposition>(m_disposition->get_selected())); close(); } @@ -147,7 +163,7 @@ namespace turns::ui auto ParticipantEditor::handle_participant_changed() -> void { auto value = m_participant.get_value(); - set_title(_(value ? lang::edit_participant : lang::add_participant)); + set_title(_(value ? message::edit_participant : message::add_participant)); if (value) { Glib::Binding::bind_property(value->property_name(), @@ -160,8 +176,8 @@ namespace turns::ui m_disposition->property_selected(), Glib::Binding::Flags::BIDIRECTIONAL | Glib::Binding::Flags::SYNC_CREATE, [](auto value) { return static_cast<unsigned>(value); }, - [](auto value) { return static_cast<core::Disposition>(value); }); + [](auto value) { return static_cast<Participant::Disposition>(value); }); } } -} // namespace turns::ui
\ No newline at end of file +} // namespace Turns::gui
\ No newline at end of file |
