MIRA
ServiceSelectorBox.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
48 #ifndef _MIRA_SERVICESELECTORBOX_H_
49 #define _MIRA_SERVICESELECTORBOX_H_
50 
51 #include <QComboBox>
52 
53 namespace mira {
54 
56 
62 class ServiceSelectorBox : public QComboBox
63 {
64  Q_OBJECT
65 
66 public:
67  ServiceSelectorBox(QWidget* parent = nullptr);
68 
70  void setInterface(const std::string& interface)
71  {
72  setInterfaces({interface});
73  }
74 
76  void setInterfaces(const std::vector<std::string>& interfaces)
77  {
78  mInterfaces = interfaces;
79  }
80 
85  void preferInitially(const std::string& service)
86  {
87  mPreferredService = service;
88  }
89 
90 public:
103  bool updateServices(bool localFirst = true);
104 
111  std::string getSelectedService();
112 
113 public slots:
123  void setAutoHide(bool hide);
124 
125 signals:
126  void selected(std::string service);
127 
128 protected slots:
129  void selected(int index) { emit selected(mServices[index]); }
130 
131 protected:
132  std::vector<std::string> mInterfaces;
133  std::vector<std::string> mServices;
134  std::string mPreferredService;
135 
136  bool mAutoHide = true;
137 };
138 
140 
141 }
142 
143 #endif
std::string mPreferredService
Definition: ServiceSelectorBox.h:134
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
void setInterfaces(const std::vector< std::string > &interfaces)
Set multiple interfaces to find (union of) services for.
Definition: ServiceSelectorBox.h:76
void preferInitially(const std::string &service)
Set a specific service to select automatically when it is discovered for the first time...
Definition: ServiceSelectorBox.h:85
std::vector< std::string > mServices
Definition: ServiceSelectorBox.h:133
bool mAutoHide
Definition: ServiceSelectorBox.h:136
std::vector< std::string > mInterfaces
Definition: ServiceSelectorBox.h:132
void selected(std::string service)
This is a combobox with a method to populate it with names of services providing one of a set of spec...
Definition: ServiceSelectorBox.h:62
void selected(int index)
Definition: ServiceSelectorBox.h:129
bool updateServices(bool localFirst=true)
Query available services for the selected interface and update the combobox.
void setAutoHide(bool hide)
By default, the widget automatically hides and stays hidden unless there is more than one service pro...
std::string getSelectedService()
Get the name of the selected service.
ServiceSelectorBox(QWidget *parent=nullptr)
void setInterface(const std::string &interface)
Set an interface to find services for.
Definition: ServiceSelectorBox.h:70