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

#include <BuildingBlockEditors.hpp>

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

Public Types

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

Public Member Functions

 combo (t_virtue const &attr, QWidget *parent=nullptr, bool owned=false, bool readonly=false)
void SetEditor () override
void SetData (QStringList const &)
void SetValidatorData (QStringList const &Data, bool AcceptNoMatch=false)
void setdata (QStringList const &)
QStringList getdata () override
Public Member Functions inherited from dbe::widgets::editors::base
template<typename T = editor_data_state>
std::shared_ptr< T > dataeditor ()
virtual void setdefaults (QString const &)
void setchanged (bool)
bool ischanged () const
template<>
std::shared_ptr< editor_data_state > dataeditor ()

Private Slots

void TryValidate (QString)
void ChangeDetected (QString const &)
void CheckDefaults (int)
bool CompareDefaults ()

Private Member Functions

void buildtooltip () override
bool eventFilter (QObject *, QEvent *)
void wheelEvent (QWheelEvent *)
void SetController ()

Private Attributes

std::shared_ptr< t_build_block_editor > m_base_data_editor
bool m_readonly

Additional Inherited Members

Public Slots inherited from dbe::widgets::editors::base
virtual void slot_set_initial_loaded ()
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 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)
virtual void closeEvent (QCloseEvent *Event)
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 326 of file BuildingBlockEditors.hpp.

Member Typedef Documentation

◆ t_build_block_editor

◆ t_virtue

Constructor & Destructor Documentation

◆ combo()

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

Configuration of combo box

Definition at line 1686 of file BuildingBlockEditors.cpp.

1687 : base(std::make_shared<t_build_block_editor>(attr), parent, owned)
1688 , m_base_data_editor(std::static_pointer_cast<t_build_block_editor>(p_data_editor))
1689 , m_readonly(readonly)
1690{
1691 setupUi(this);
1692 SetController();
1694 Combo->setFocusPolicy(Qt::ClickFocus);
1695 if (m_readonly) {
1696 Combo->setEditable(false);
1697 if (Combo->lineEdit() != nullptr) {
1698 Combo->lineEdit()->setReadOnly(true);
1699 Combo->lineEdit()->hide();
1700 }
1701 } else {
1702 Combo->installEventFilter(this);
1703 if (Combo->lineEdit() != nullptr) {
1704 Combo->lineEdit()->installEventFilter(this);
1705 }
1706
1707 t_virtue const& Virtue = m_base_data_editor->get();
1708 if (Virtue.p_type == dunedaq::conffwk::class_type) {
1709 Combo->setEditable(true);
1710 }
1711 }
1712}
base(std::shared_ptr< editor_data_state > editordata, QWidget *parent=nullptr, bool owned=false)
std::shared_ptr< editor_data_state > p_data_editor
dunedaq::conffwk::attribute_t t_virtue
std::shared_ptr< t_build_block_editor > m_base_data_editor

Member Function Documentation

◆ buildtooltip()

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

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

Definition at line 1914 of file BuildingBlockEditors.cpp.

1915{
1916}

◆ ChangeDetected

void dbe::widgets::editors::combo::ChangeDetected ( QString const & StringChange)
privateslot

Definition at line 1882 of file BuildingBlockEditors.cpp.

1883{
1884 Q_UNUSED(StringChange)
1885 this_value_changed = true;
1886 emit signal_value_change();
1887}

◆ CheckDefaults

void dbe::widgets::editors::combo::CheckDefaults ( int DefaultIndex)
privateslot

Definition at line 1890 of file BuildingBlockEditors.cpp.

1891{
1892 Q_UNUSED(DefaultIndex)
1893
1894 if (!this_defaults.isEmpty()) {
1895 TryValidate(Combo->currentText());
1896 }
1897}

◆ CompareDefaults

bool dbe::widgets::editors::combo::CompareDefaults ( )
privateslot

Definition at line 1900 of file BuildingBlockEditors.cpp.

1901{
1902 if (this_defaults.isEmpty()) {
1903 return false;
1904 }
1905
1906 if (this_defaults == Combo->currentText()) {
1907 return true;
1908 }
1909
1910 return false;
1911}

◆ eventFilter()

bool dbe::widgets::editors::combo::eventFilter ( QObject * Target,
QEvent * Event )
private

Definition at line 1793 of file BuildingBlockEditors.cpp.

1794{
1795 if (dynamic_cast<QLineEdit*>(Target) != nullptr) {
1796 std::cout << "cast to QLineEdit\n";
1797 }
1798 if (Target == Combo && Combo->lineEdit() != nullptr) {
1799 if (Event->type() < 100) {
1800 }
1801 if (Event->type() == QEvent::FocusOut) {
1802 if (Combo->lineEdit()->text().isEmpty()) {
1803 Combo->lineEdit()->setText(c_input_placeholder);
1804 }
1805 return true;
1806 }
1807 if (Event->type() == QEvent::FocusIn) {
1808 if (!Combo->lineEdit()->hasSelectedText()) {
1809 Combo->lineEdit()->selectAll();
1810 }
1811 return true;
1812 }
1813 if (Event->type() == QEvent::KeyPress) {
1814 QKeyEvent* KeyEvent = dynamic_cast<QKeyEvent*>(Event);
1815 if (KeyEvent->key() == Qt::Key_Up || KeyEvent->key() == Qt::Key_Down) {
1816 return true;
1817 } else {
1818 return false;
1819 }
1820 }
1821 }
1822
1823 if (Event->type() == QEvent::Wheel) {
1824 return true;
1825 }
1826
1827 return false;
1828}

◆ getdata()

QStringList dbe::widgets::editors::combo::getdata ( )
overridevirtual

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

Definition at line 1756 of file BuildingBlockEditors.cpp.

1757{
1758 this_data.clear();
1759 this_data << Combo->currentText();
1760 return this_data;
1761}

◆ SetController()

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

Definition at line 1838 of file BuildingBlockEditors.cpp.

1839{
1840 connect(
1841 Combo, SIGNAL(editTextChanged(const QString&)), this, SLOT(TryValidate(const QString&)), Qt::UniqueConnection);
1842 connect(Combo, SIGNAL(activated(const QString&)), this, SLOT(ChangeDetected(const QString&)), Qt::UniqueConnection);
1843}

◆ SetData()

void dbe::widgets::editors::combo::SetData ( QStringList const & Data)

Definition at line 1715 of file BuildingBlockEditors.cpp.

1716{
1717 if (Data.isEmpty()) {
1718 return;
1719 }
1720
1721 int Index = Combo->findText(Data.value(0));
1722
1723 if (Index != -1) {
1724 Combo->setCurrentIndex(Index);
1725 Combo->setEditText(Data.value(0));
1726 }
1727}
nlohmann::json Data
Definition Structs.hpp:24

◆ setdata()

void dbe::widgets::editors::combo::setdata ( QStringList const & v)
virtual

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

Definition at line 1787 of file BuildingBlockEditors.cpp.

1788{
1789 this_data = v;
1790}
default char v[0]

◆ SetEditor()

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

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

Definition at line 1764 of file BuildingBlockEditors.cpp.

1765{
1766 t_virtue const& virt = m_base_data_editor->get();
1767
1768 if (virt.p_type == dunedaq::conffwk::bool_type) {
1769 QStringList tmp{ "true", "false" };
1770 SetValidatorData(tmp);
1771 } else if (virt.p_type == dunedaq::conffwk::enum_type) {
1772 QString rangename = virt.p_range.c_str();
1773 QStringList range = rangename.split(",");
1774 range.sort();
1775 SetValidatorData(range);
1776 } else if (virt.p_type == dunedaq::conffwk::class_type) {
1778 classes.sort();
1779 SetValidatorData(classes);
1780 Combo->lineEdit()->setText(c_input_placeholder);
1781 }
1782
1784}
void SetValidatorData(QStringList const &Data, bool AcceptNoMatch=false)
void SetData(QStringList const &)
DAC value out of range
Message.
Definition DACNode.hpp:32

◆ SetValidatorData()

void dbe::widgets::editors::combo::SetValidatorData ( QStringList const & Data,
bool AcceptNoMatch = false )

Definition at line 1730 of file BuildingBlockEditors.cpp.

1731{
1732 Combo->clear();
1733 Combo->addItems(Data);
1734
1735 if (Combo->isEditable()) {
1736 QCompleter* Completer = new QCompleter(Combo->model(), Combo);
1737 Completer->setCaseSensitivity(Qt::CaseInsensitive);
1738 Completer->setCompletionMode(QCompleter::PopupCompletion);
1739 Completer->setFilterMode(Qt::MatchContains);
1740 Combo->setCompleter(Completer);
1741 }
1742 m_base_data_editor->set_obligatory(false);
1743
1744 QVariant VarFromList(Data);
1745
1746 if (AcceptNoMatch) {
1747 ValidatorAcceptNoMatch* TmpValidator = new ValidatorAcceptNoMatch(VarFromList, this);
1748 Combo->setValidator(TmpValidator);
1749 } else {
1750 ValidatorAcceptMatch* TmpValidator = new ValidatorAcceptMatch(VarFromList, this);
1751 Combo->setValidator(TmpValidator);
1752 }
1753}
ValidatorAcceptMatch(QVariant &Storage, QObject *parent=0)
Including DBE.
Definition Validator.cpp:9
ValidatorAcceptNoMatch(QVariant &Storage, QObject *parent=0)
Definition Validator.cpp:29

◆ TryValidate

void dbe::widgets::editors::combo::TryValidate ( QString tmp)
privateslot

Definition at line 1846 of file BuildingBlockEditors.cpp.

1847{
1848 if (tmp == c_input_placeholder) {
1849 Combo->lineEdit()->setPalette(QApplication::palette(this));
1850 return;
1851 }
1852 int index = 0;
1853 if (Combo->validator() != nullptr) {
1854 if (Combo->validator()->validate(tmp, index) == QValidator::Acceptable) {
1855 m_base_data_editor->set_valid(true);
1856
1857 if (CompareDefaults()) {
1858 Combo->lineEdit()->setPalette(StyleUtility::LoadedDefault);
1859 }
1860
1861 else {
1862 Combo->lineEdit()->setPalette(QApplication::palette(this));
1863 }
1864 }
1865
1866 else if (Combo->validator()->validate(tmp, index) == QValidator::Intermediate) {
1867 m_base_data_editor->set_not_null(false);
1868 Combo->lineEdit()->setPalette(StyleUtility::WarningStatusBarPallete);
1869 }
1870 }
1871
1872 else {
1873 if (CompareDefaults()) {
1874 Combo->setPalette(StyleUtility::LoadedDefault);
1875 } else {
1876 Combo->setPalette(QApplication::palette(this));
1877 }
1878 }
1879}
static QPalette LoadedDefault
static QPalette WarningStatusBarPallete

◆ wheelEvent()

void dbe::widgets::editors::combo::wheelEvent ( QWheelEvent * Event)
private

Definition at line 1831 of file BuildingBlockEditors.cpp.

1832{
1833 Q_UNUSED(Event)
1834 return;
1835}

Member Data Documentation

◆ m_base_data_editor

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

Definition at line 353 of file BuildingBlockEditors.hpp.

◆ m_readonly

bool dbe::widgets::editors::combo::m_readonly
private

Definition at line 354 of file BuildingBlockEditors.hpp.


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