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_virtuet_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_statedataeditor ()

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_editorm_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_statep_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 349 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 1878 of file BuildingBlockEditors.cpp.

1880 :
1881 base ( std::make_shared<t_build_block_editor> ( attr ), parent, owned ),
1882 m_base_data_editor ( std::static_pointer_cast<t_build_block_editor> ( p_data_editor ) ),
1883 m_readonly(readonly)
1884{
1885 setupUi ( this );
1886 SetController();
1888 Combo->setFocusPolicy ( Qt::ClickFocus );
1889 if (m_readonly) {
1890 Combo->setEditable (false);
1891 if ( Combo->lineEdit() != nullptr ) {
1892 Combo->lineEdit()->setReadOnly(true);
1893 Combo->lineEdit()->hide();
1894 }
1895 }
1896 else {
1897 Combo->installEventFilter ( this );
1898 if ( Combo->lineEdit() != nullptr ) {
1899 Combo->lineEdit()->installEventFilter ( this );
1900 }
1901
1902 t_virtue const & Virtue = m_base_data_editor->get();
1903 if ( Virtue.p_type == dunedaq::conffwk::class_type ) {
1904 Combo->setEditable ( true );
1905 }
1906 }
1907}
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 2121 of file BuildingBlockEditors.cpp.

2122{}

◆ ChangeDetected

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

Definition at line 2089 of file BuildingBlockEditors.cpp.

2090{
2091 Q_UNUSED ( StringChange )
2092 this_value_changed = true;
2093 emit signal_value_change();
2094}

◆ CheckDefaults

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

Definition at line 2096 of file BuildingBlockEditors.cpp.

2097{
2098 Q_UNUSED ( DefaultIndex )
2099
2100 if ( !this_defaults.isEmpty() )
2101 {
2102 TryValidate ( Combo->currentText() );
2103 }
2104}

◆ CompareDefaults

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

Definition at line 2106 of file BuildingBlockEditors.cpp.

2107{
2108 if ( this_defaults.isEmpty() )
2109 {
2110 return false;
2111 }
2112
2113 if ( this_defaults == Combo->currentText() )
2114 {
2115 return true;
2116 }
2117
2118 return false;
2119}

◆ eventFilter()

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

Definition at line 1993 of file BuildingBlockEditors.cpp.

1994{
1995 if (dynamic_cast<QLineEdit*>(Target) != nullptr) {
1996 std::cout << "cast to QLineEdit\n";
1997 }
1998 if ( Target == Combo && Combo->lineEdit() != nullptr) {
1999 if (Event->type() < 100) {
2000 }
2001 if (Event->type() == QEvent::FocusOut) {
2002 if (Combo->lineEdit()->text().isEmpty()) {
2003 Combo->lineEdit()->setText(c_input_placeholder);
2004 }
2005 return true;
2006 }
2007 if (Event->type() == QEvent::FocusIn) {
2008 if (!Combo->lineEdit()->hasSelectedText() ) {
2009 Combo->lineEdit()->selectAll();
2010 }
2011 return true;
2012 }
2013 if(Event->type() == QEvent::KeyPress) {
2014 QKeyEvent * KeyEvent = dynamic_cast<QKeyEvent *>(Event);
2015 if(KeyEvent->key() == Qt::Key_Up || KeyEvent->key() == Qt::Key_Down) {
2016 return true;
2017 } else {
2018 return false;
2019 }
2020 }
2021 }
2022
2023 if ( Event->type() == QEvent::Wheel )
2024 {
2025 return true;
2026 }
2027
2028 return false;
2029}

◆ getdata()

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

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

Definition at line 1953 of file BuildingBlockEditors.cpp.

1954{
1955 this_data.clear();
1956 this_data << Combo->currentText();
1957 return this_data;
1958}

◆ SetController()

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

Definition at line 2037 of file BuildingBlockEditors.cpp.

2038{
2039 connect ( Combo, SIGNAL ( editTextChanged ( const QString & ) ), this,
2040 SLOT ( TryValidate ( const QString & ) ), Qt::UniqueConnection );
2041 connect ( Combo, SIGNAL ( activated ( const QString & ) ), this,
2042 SLOT ( ChangeDetected ( const QString & ) ), Qt::UniqueConnection );
2043}

◆ SetData()

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

Definition at line 1909 of file BuildingBlockEditors.cpp.

1910{
1911 if ( Data.isEmpty() )
1912 {
1913 return;
1914 }
1915
1916 int Index = Combo->findText ( Data.value ( 0 ) );
1917
1918 if ( Index != -1 )
1919 {
1920 Combo->setCurrentIndex ( Index );
1921 Combo->setEditText ( Data.value ( 0 ) );
1922 }
1923}
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 1988 of file BuildingBlockEditors.cpp.

1989{
1990 this_data = v;
1991}
default char v[0]

◆ SetEditor()

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

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

Definition at line 1960 of file BuildingBlockEditors.cpp.

1961{
1962 t_virtue const & virt = m_base_data_editor->get();
1963
1964 if ( virt.p_type == dunedaq::conffwk::bool_type )
1965 {
1966 QStringList tmp
1967 { "true", "false" };
1968 SetValidatorData ( tmp );
1969 }
1970 else if ( virt.p_type == dunedaq::conffwk::enum_type )
1971 {
1972 QString rangename = virt.p_range.c_str();
1973 QStringList range = rangename.split ( "," );
1974 range.sort();
1975 SetValidatorData ( range );
1976 }
1977 else if ( virt.p_type == dunedaq::conffwk::class_type )
1978 {
1980 classes.sort();
1981 SetValidatorData ( classes );
1982 Combo->lineEdit()->setText(c_input_placeholder);
1983 }
1984
1985 SetData ( this_data );
1986}
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 1925 of file BuildingBlockEditors.cpp.

1926{
1927 Combo->clear();
1928 Combo->addItems ( Data );
1929
1930 if (Combo->isEditable()) {
1931 QCompleter * Completer = new QCompleter ( Combo->model(), Combo );
1932 Completer->setCaseSensitivity ( Qt::CaseInsensitive );
1933 Completer->setCompletionMode ( QCompleter::PopupCompletion );
1934 Completer->setFilterMode(Qt::MatchContains);
1935 Combo->setCompleter ( Completer );
1936 }
1937 m_base_data_editor->set_obligatory ( false );
1938
1939 QVariant VarFromList ( Data );
1940
1941 if ( AcceptNoMatch )
1942 {
1943 ValidatorAcceptNoMatch * TmpValidator = new ValidatorAcceptNoMatch ( VarFromList, this );
1944 Combo->setValidator ( TmpValidator );
1945 }
1946 else
1947 {
1948 ValidatorAcceptMatch * TmpValidator = new ValidatorAcceptMatch ( VarFromList, this );
1949 Combo->setValidator ( TmpValidator );
1950 }
1951}

◆ TryValidate

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

Definition at line 2045 of file BuildingBlockEditors.cpp.

2046{
2047 if (tmp == c_input_placeholder) {
2048 Combo->lineEdit()->setPalette ( QApplication::palette ( this ) );
2049 return;
2050 }
2051 int index = 0;
2052 if (Combo->validator() != nullptr )
2053 {
2054 if ( Combo->validator()->validate ( tmp, index ) == QValidator::Acceptable )
2055 {
2056 m_base_data_editor->set_valid ( true );
2057
2058 if ( CompareDefaults() )
2059 {
2060 Combo->lineEdit()->setPalette ( StyleUtility::LoadedDefault );
2061 }
2062
2063 else
2064 {
2065 Combo->lineEdit()->setPalette ( QApplication::palette ( this ) );
2066 }
2067 }
2068
2069 else if ( Combo->validator()->validate ( tmp, index ) == QValidator::Intermediate )
2070 {
2071 m_base_data_editor->set_not_null ( false );
2072 Combo->lineEdit()->setPalette ( StyleUtility::WarningStatusBarPallete );
2073 }
2074 }
2075
2076 else
2077 {
2078 if ( CompareDefaults() )
2079 {
2080 Combo->setPalette ( StyleUtility::LoadedDefault );
2081 }
2082 else
2083 {
2084 Combo->setPalette ( QApplication::palette ( this ) );
2085 }
2086 }
2087}
static QPalette LoadedDefault
static QPalette WarningStatusBarPallete

◆ wheelEvent()

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

Definition at line 2031 of file BuildingBlockEditors.cpp.

2032{
2033 Q_UNUSED ( Event )
2034 return;
2035}

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 375 of file BuildingBlockEditors.hpp.

◆ m_readonly

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

Definition at line 376 of file BuildingBlockEditors.hpp.


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