Binding: Add help icons for entries with descriptions
[pulseview.git] / pv / binding / binding.hpp
index bd858bbf27626ee225f362e919d400fb13ab2404..5580a0b05b48765d74fd9272beafe4e38ddc2ca8 100644 (file)
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #ifndef PULSEVIEW_PV_BINDING_BINDING_HPP
 #define PULSEVIEW_PV_BINDING_BINDING_HPP
 
+#include <glib.h>
+// Suppress warnings due to use of deprecated std::auto_ptr<> by glibmm.
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 #include <glibmm.h>
+G_GNUC_END_IGNORE_DEPRECATIONS
 
-#include <vector>
+#include <map>
 #include <memory>
+#include <vector>
 
+#include <QObject>
 #include <QString>
 
+using std::map;
+using std::shared_ptr;
+using std::vector;
+
 class QFormLayout;
+class QLabel;
 class QWidget;
 
 namespace pv {
@@ -39,26 +49,32 @@ class Property;
 
 namespace binding {
 
-class Binding
+class Binding: public QObject
 {
+       Q_OBJECT
+
 public:
-       const std::vector< std::shared_ptr<prop::Property> >& properties();
+       const vector< shared_ptr<prop::Property> >& properties();
 
        void commit();
 
-       void add_properties_to_form(QFormLayout *layout,
-               bool auto_commit = false) const;
+       void add_properties_to_form(QFormLayout *layout, bool auto_commit = false);
+
+       QWidget* get_property_form(QWidget *parent, bool auto_commit = false);
 
-       QWidget* get_property_form(QWidget *parent,
-               bool auto_commit = false) const;
+       void update_property_widgets();
 
        static QString print_gvariant(Glib::VariantBase gvar);
 
+protected Q_SLOTS:
+       void on_help_clicked();
+
 protected:
-       std::vector< std::shared_ptr<prop::Property> > properties_;
+       vector< shared_ptr<prop::Property> > properties_;
+       map<QWidget*, QLabel*> help_labels_;
 };
 
-} // binding
-} // pv
+}  // namespace binding
+}  // namespace pv
 
 #endif // PULSEVIEW_PV_BINDING_BINDING_HPP