DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dbe::widgets::editors::stringattr Class Reference

#include <BuildingBlockEditors.hpp>

Inheritance diagram for dbe::widgets::editors::stringattr:
[legend]
Collaboration diagram for dbe::widgets::editors::stringattr:
[legend]

Public Types

typedef dunedaq::conffwk::attribute_t t_virtue
typedef editor_data< t_virtue > t_build_block_editor

Signals

void signal_data_input_complete ()
Signals inherited from dbe::widgets::editors::base
void signal_force_close ()
void signal_edit_end ()
void signal_internal_value_change ()
void signal_value_change ()

Public Member Functions

 stringattr (t_virtue const &attr, QWidget *parent=nullptr, bool owned=false, bool readonly=false)
 ~stringattr ()
void SetEditor () override
QTextEdit * GetLineEdit () const
void SetNullCheck (bool Check)
void SetMultiCheck (bool Multi)
void SetCheckDefaults (bool Default)
void SetFocusOnLine ()
bool eventFilter (QObject *, QEvent *)
void ClearText ()
Public Member Functions inherited from dbe::widgets::editors::base
template<typename T = editor_data_state>
std::shared_ptr< T > dataeditor ()
virtual void setdata (QStringList const &)
void setchanged (bool)
bool ischanged () const
virtual QStringList getdata ()
template<>
std::shared_ptr< editor_data_state > dataeditor ()

Private Slots

void UpdateActions ()
void AddToDataList ()
void ShowDialog ()
void UpdateFromTextEdit ()
void ToogleTextEditOkButton ()

Private Member Functions

void buildtooltip () override
void closeEvent (QCloseEvent *)
void SetController ()
void setdefaults (const QString &)
void ShowPopupButton ()
void HidePopupButton ()

Private Attributes

std::shared_ptr< t_build_block_editor > m_base_data_editor
bool m_readonly
QString DefaultValue
QPushButton * PopUpButton
QDialog * Dialog
QPushButton * OkButtonDialog
QPlainTextEdit * TextEditDialog

Additional Inherited Members

Public Slots inherited from dbe::widgets::editors::base
virtual void slot_set_initial_loaded ()
Public Attributes inherited from dbe::widgets::editors::base
const QString c_input_placeholder { "Add a new value" }
const QString c_no_object_placeholder { "No Object currently set" }
Protected Member Functions inherited from dbe::widgets::editors::base
 base (std::shared_ptr< editor_data_state > editordata, QWidget *parent=nullptr, bool owned=false)
Protected Attributes inherited from dbe::widgets::editors::base
std::shared_ptr< editor_data_state > p_data_editor
QString this_defaults
QStringList this_data
bool this_is_owned
bool this_value_changed
bool this_initial_load

Detailed Description

Definition at line 219 of file BuildingBlockEditors.hpp.

Member Typedef Documentation

◆ t_build_block_editor

◆ t_virtue

Constructor & Destructor Documentation

◆ stringattr()

dbe::widgets::editors::stringattr::stringattr ( t_virtue const & attr,
QWidget * parent = nullptr,
bool owned = false,
bool readonly = false )

LAYOUT CHANGE

Definition at line 816 of file BuildingBlockEditors.cpp.

817 : base(std::make_shared<t_build_block_editor>(attr), parent, owned)
818 , m_base_data_editor(std::static_pointer_cast<t_build_block_editor>(p_data_editor))
819 , m_readonly(readonly)
820 , DefaultValue("")
821 , PopUpButton(nullptr)
822 , Dialog(nullptr)
823 , OkButtonDialog(nullptr)
824 , TextEditDialog(nullptr)
825{
826 setupUi(this);
827 t_virtue const& virtue = m_base_data_editor->get();
828
829 if (m_readonly) {
830 StringLineEdit->setReadOnly(true);
831 } else {
832 StringLineEdit->installEventFilter(this);
833 }
834 StringLineEdit->setTabChangesFocus(true);
835
836 setWindowTitle(QString("Edit Attr : %1").arg(virtue.p_name.c_str()));
837 AttributeNameLabel->setText(QString(virtue.p_name.c_str()) + " : ");
839 AttributeNameLabel->setHidden(true);
840
842
843 if (m_base_data_editor->must_not_be_null()) {
844 m_base_data_editor->set_valid(true);
845 StringLineEdit->setPalette(StyleUtility::WarningStatusBarPallete);
846 OkButton->setDisabled(true);
847 SetNullCheck(true);
848 } else {
849 SetNullCheck(false);
850 }
851
852 if (virtue.p_is_multi_value) {
853 StringLineEdit->setPalette(QApplication::palette(this));
854 }
855
856 OkButton->setHidden(true);
857
858 if (this_is_owned) {
859 connect(StringLineEdit, SIGNAL(StringValidated()), this, SLOT(AddToDataList()), Qt::UniqueConnection);
860 OkButton->setHidden(true);
861 }
862
864
865 buildtooltip();
867
868 AttributeNameLabel->setFocus();
869}
static QPalette WarningStatusBarPallete
base(std::shared_ptr< editor_data_state > editordata, QWidget *parent=nullptr, bool owned=false)
std::shared_ptr< editor_data_state > p_data_editor
std::shared_ptr< t_build_block_editor > m_base_data_editor
dunedaq::conffwk::attribute_t t_virtue

◆ ~stringattr()

dbe::widgets::editors::stringattr::~stringattr ( )

Definition at line 871 of file BuildingBlockEditors.cpp.

872{
873 delete Dialog;
874 delete PopUpButton;
875}

Member Function Documentation

◆ AddToDataList

void dbe::widgets::editors::stringattr::AddToDataList ( )
privateslot

Definition at line 1033 of file BuildingBlockEditors.cpp.

1034{
1035 QString NewValue = StringLineEdit->toPlainText();
1036
1037 if (!this_data.contains(NewValue)) {
1038 StringLineEdit->setToolTip(QString("The set value is : %1").arg(NewValue));
1039 this_data.clear();
1040 this_data.append(NewValue);
1041
1042 UpdateActions();
1043 this_value_changed = true;
1044
1045 if (!this_is_owned) {
1046 emit signal_value_change();
1047 emit signal_edit_end();
1048 } else {
1049 emit signal_value_change();
1050 }
1051 }
1052}

◆ buildtooltip()

void dbe::widgets::editors::stringattr::buildtooltip ( )
overrideprivatevirtual

Implements dbe::widgets::editors::base.

Definition at line 956 of file BuildingBlockEditors.cpp.

957{
958 t_virtue const& Virtue = m_base_data_editor->get();
959
960 setToolTip(
961 QString("Attribute Name: %1 \n").arg(Virtue.p_name.c_str()) +
962 QString(" Type: %1 \n").arg(dunedaq::conffwk::attribute_t::type2str(Virtue.p_type)) +
963 QString(" Range: %1 \n").arg(Virtue.p_range.c_str()) +
964 QString(" Format: %1 \n").arg(dunedaq::conffwk::attribute_t::format2str(Virtue.p_int_format)) +
965 QString(" Not Null: %1 \n").arg(Virtue.p_is_not_null) +
966 QString(" Is Multi Value: %1 \n").arg(Virtue.p_is_multi_value) +
967 QString(" Default Value: %1 \n").arg(Virtue.p_default_value.c_str()) +
968 QString(" Description: %1 \n").arg(Virtue.p_description.c_str()));
969}
static const char * type2str(type_t type)
static const char * format2str(int_format_t format)

◆ ClearText()

void dbe::widgets::editors::stringattr::ClearText ( )

Definition at line 950 of file BuildingBlockEditors.cpp.

951{
952 GetLineEdit()->clear();
953}

◆ closeEvent()

void dbe::widgets::editors::stringattr::closeEvent ( QCloseEvent * Event)
privatevirtual

Reimplemented from dbe::widgets::editors::base.

Definition at line 972 of file BuildingBlockEditors.cpp.

973{
974 Q_UNUSED(Event)
975 emit signal_force_close();
976}

◆ eventFilter()

bool dbe::widgets::editors::stringattr::eventFilter ( QObject * target,
QEvent * evt )

Definition at line 920 of file BuildingBlockEditors.cpp.

921{
922 if (target == StringLineEdit) {
923 if (evt->type() == QEvent::FocusIn) {
925 } else if (evt->type() == QEvent::KeyPress) {
926 QKeyEvent* kevt = static_cast<QKeyEvent*>(evt);
927 switch (kevt->key()) {
928 case Qt::Key_Enter:
929 case Qt::Key_Return:
930
931 if (kevt->modifiers() == Qt::AltModifier) {
932 kevt->setModifiers(Qt::NoModifier);
933 return false;
934 } else {
935 StringLineEdit->parentWidget()->setFocus(Qt::FocusReason::TabFocusReason);
937 return true;
938 }
939
940 break;
941 default:
942 break;
943 }
944 }
945 }
946 return false;
947}

◆ GetLineEdit()

QTextEdit * dbe::widgets::editors::stringattr::GetLineEdit ( ) const

Definition at line 890 of file BuildingBlockEditors.cpp.

891{
892 return StringLineEdit;
893}

◆ HidePopupButton()

void dbe::widgets::editors::stringattr::HidePopupButton ( )
private

Definition at line 1009 of file BuildingBlockEditors.cpp.

1010{
1011 if (PopUpButton != nullptr) {
1012 PopUpButton->hide();
1013 }
1014}

◆ SetCheckDefaults()

void dbe::widgets::editors::stringattr::SetCheckDefaults ( bool Default)

Definition at line 908 of file BuildingBlockEditors.cpp.

909{
910 StringLineEdit->SetCheckDefault(Default);
911}

◆ SetController()

void dbe::widgets::editors::stringattr::SetController ( )
private

Definition at line 979 of file BuildingBlockEditors.cpp.

980{
981 if (!m_readonly) {
982 connect(StringLineEdit, SIGNAL(textChanged()), this, SLOT(UpdateActions()), Qt::UniqueConnection);
983 connect(this, SIGNAL(signal_data_input_complete()), this, SLOT(AddToDataList()));
984 connect(OkButton, SIGNAL(clicked()), this, SLOT(AddToDataList()), Qt::UniqueConnection);
985 }
986}

◆ setdefaults()

void dbe::widgets::editors::stringattr::setdefaults ( const QString & ValueDefault)
privatevirtual

Reimplemented from dbe::widgets::editors::base.

Definition at line 989 of file BuildingBlockEditors.cpp.

990{
991 this_defaults = ValueDefault;
992 StringLineEdit->SetDefaultValue(ValueDefault);
993}

◆ SetEditor()

void dbe::widgets::editors::stringattr::SetEditor ( )
overridevirtual

Implements dbe::widgets::editors::base.

Definition at line 878 of file BuildingBlockEditors.cpp.

879{
880 if (this_data.isEmpty()) {
881 return;
882 }
883
884 StringLineEdit->setText(this_data.value(0));
885
887}

◆ SetFocusOnLine()

void dbe::widgets::editors::stringattr::SetFocusOnLine ( )

Definition at line 914 of file BuildingBlockEditors.cpp.

915{
916 StringLineEdit->selectAll();
917}

◆ SetMultiCheck()

void dbe::widgets::editors::stringattr::SetMultiCheck ( bool Multi)

Definition at line 902 of file BuildingBlockEditors.cpp.

903{
904 StringLineEdit->SetMultiCheck(Multi);
905}

◆ SetNullCheck()

void dbe::widgets::editors::stringattr::SetNullCheck ( bool Check)

Definition at line 896 of file BuildingBlockEditors.cpp.

897{
898 StringLineEdit->SetNullCheck(Check);
899}

◆ ShowDialog

void dbe::widgets::editors::stringattr::ShowDialog ( )
privateslot

Definition at line 1055 of file BuildingBlockEditors.cpp.

1056{
1057
1058 if (Dialog == nullptr) {
1059 QVBoxLayout* Layout = new QVBoxLayout();
1060 Dialog = new QDialog();
1061 t_virtue const& Virtue = m_base_data_editor->get();
1062 Dialog->setWindowTitle(QString("Edit Attr : %1").arg(Virtue.p_name.c_str()));
1063 TextEditDialog = new QPlainTextEdit(Dialog);
1064 OkButtonDialog = new QPushButton("OK", Dialog);
1065 Layout->addWidget(TextEditDialog);
1066 Layout->addWidget(OkButtonDialog);
1067 Dialog->setLayout(Layout);
1068 Dialog->setModal(true);
1069
1070 connect(TextEditDialog, SIGNAL(textChanged()), this, SLOT(ToogleTextEditOkButton()), Qt::UniqueConnection);
1071 connect(OkButtonDialog, SIGNAL(clicked()), this, SLOT(UpdateFromTextEdit()), Qt::UniqueConnection);
1072 }
1073
1074 TextEditDialog->clear();
1075 TextEditDialog->insertPlainText(StringLineEdit->toPlainText());
1076 Dialog->show();
1077}

◆ ShowPopupButton()

void dbe::widgets::editors::stringattr::ShowPopupButton ( )
private

Definition at line 996 of file BuildingBlockEditors.cpp.

997{
998 if (PopUpButton == nullptr) {
999 PopUpButton = new QPushButton("...");
1000 PopUpButton->setMaximumWidth(PopUpButton->fontMetrics().boundingRect("...").width() + 15);
1001 connect(PopUpButton, SIGNAL(clicked()), this, SLOT(ShowDialog()), Qt::UniqueConnection);
1002 horizontalLayout->addWidget(PopUpButton);
1003 }
1004
1005 PopUpButton->show();
1006}

◆ signal_data_input_complete

void dbe::widgets::editors::stringattr::signal_data_input_complete ( )
signal

◆ ToogleTextEditOkButton

void dbe::widgets::editors::stringattr::ToogleTextEditOkButton ( )
privateslot

Definition at line 1089 of file BuildingBlockEditors.cpp.

1090{
1091 t_virtue const& Virtue = m_base_data_editor->get();
1092
1093 if (TextEditDialog->toPlainText().isEmpty() && Virtue.p_is_not_null)
1094 OkButtonDialog->setEnabled(false);
1095 else {
1096 OkButtonDialog->setEnabled(true);
1097 }
1098}

◆ UpdateActions

void dbe::widgets::editors::stringattr::UpdateActions ( )
privateslot

Definition at line 1017 of file BuildingBlockEditors.cpp.

1018{
1019 t_virtue const& Virtue = m_base_data_editor->get();
1020
1021 if (Virtue.p_is_not_null && (this_data.size() == 0)) {
1022 OkButton->setEnabled(true);
1023 m_base_data_editor->set_valid(false);
1024 }
1025
1026 else {
1027 OkButton->setEnabled(true);
1028 m_base_data_editor->set_valid(true);
1029 }
1030}

◆ UpdateFromTextEdit

void dbe::widgets::editors::stringattr::UpdateFromTextEdit ( )
privateslot

Definition at line 1080 of file BuildingBlockEditors.cpp.

1081{
1082 StringLineEdit->clear();
1083 StringLineEdit->setText(TextEditDialog->toPlainText());
1084 AddToDataList();
1085 Dialog->close();
1086}

Member Data Documentation

◆ DefaultValue

QString dbe::widgets::editors::stringattr::DefaultValue
private

Definition at line 255 of file BuildingBlockEditors.hpp.

◆ Dialog

QDialog* dbe::widgets::editors::stringattr::Dialog
private

Definition at line 257 of file BuildingBlockEditors.hpp.

◆ m_base_data_editor

std::shared_ptr<t_build_block_editor> dbe::widgets::editors::stringattr::m_base_data_editor
private

Definition at line 252 of file BuildingBlockEditors.hpp.

◆ m_readonly

bool dbe::widgets::editors::stringattr::m_readonly
private

Definition at line 254 of file BuildingBlockEditors.hpp.

◆ OkButtonDialog

QPushButton* dbe::widgets::editors::stringattr::OkButtonDialog
private

Definition at line 258 of file BuildingBlockEditors.hpp.

◆ PopUpButton

QPushButton* dbe::widgets::editors::stringattr::PopUpButton
private

Definition at line 256 of file BuildingBlockEditors.hpp.

◆ TextEditDialog

QPlainTextEdit* dbe::widgets::editors::stringattr::TextEditDialog
private

Definition at line 259 of file BuildingBlockEditors.hpp.


The documentation for this class was generated from the following files: