X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.hpp;h=6e11e83f374e23e4c4487ff2cd2148fbb0143ddc;hb=9d307c60d7fc2dee27bca6eaadd1e68bf7ab0cbf;hp=c0a30a7e2f50a9e89c574dba739c0d8f7e1a0ece;hpb=41293691c797b8f5e3133c072aa869fc9cf91253;p=pulseview.git diff --git a/pv/data/decode/decoder.hpp b/pv/data/decode/decoder.hpp index c0a30a7e..6e11e83f 100644 --- a/pv/data/decode/decoder.hpp +++ b/pv/data/decode/decoder.hpp @@ -20,6 +20,7 @@ #ifndef PULSEVIEW_PV_DATA_DECODE_DECODER_HPP #define PULSEVIEW_PV_DATA_DECODE_DECODER_HPP +#include #include #include #include @@ -27,10 +28,13 @@ #include -#include +#include + #include +using std::deque; using std::map; +using std::shared_ptr; using std::string; using std::vector; @@ -50,13 +54,27 @@ namespace decode { class Decoder; -struct AnnotationClass +class AnnotationClass: public QObject { + Q_OBJECT + +public: + AnnotationClass(size_t _id, char* _name, char* _description, Row* _row); + + bool visible() const; + void set_visible(bool visible); + +Q_SIGNALS: + void visibility_changed(); + +public: size_t id; char* name; char* description; Row* row; - bool visible; + +private: + bool visible_; }; struct DecodeChannel @@ -79,25 +97,28 @@ struct DecodeBinaryClassInfo }; -class Decoder +class Decoder : public QObject { + Q_OBJECT + public: - Decoder(const srd_decoder *const dec); + Decoder(const srd_decoder *const dec, uint8_t stack_level); virtual ~Decoder(); const srd_decoder* get_srd_decoder() const; + uint8_t get_stack_level() const; + const char* name() const; - bool shown() const; - void show(bool show = true); + bool visible() const; + void set_visible(bool visible); const vector& channels() const; void set_channels(vector channels); const map& options() const; - void set_option(const char *id, GVariant *value); void apply_all_options(); @@ -113,18 +134,27 @@ public: vector ann_classes() const; vector ann_classes(); AnnotationClass* get_ann_class_by_id(size_t id); + const AnnotationClass* get_ann_class_by_id(size_t id) const; uint32_t get_binary_class_count() const; const DecodeBinaryClassInfo* get_binary_class(uint32_t id) const; +Q_SIGNALS: + void annotation_visibility_changed(); + +private Q_SLOTS: + void on_row_visibility_changed(); + void on_class_visibility_changed(); + private: const srd_decoder* const srd_decoder_; + uint8_t stack_level_; - bool shown_; + bool visible_; vector channels_; - vector rows_; - vector ann_classes_; + deque rows_; + deque ann_classes_; vector bin_classes_; map options_; srd_decoder_inst *decoder_inst_;