X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Fdecoder_output%2Fview.hpp;h=16d35e82e2823af56cfe83cd5738798360667e6c;hb=feda6c6bbde575242cf01c769c0ecd3e89f9f7a0;hp=79dfe234aac4751827d233352a8528328cf1761f;hpb=db29815836442ac83d453b3de2bf1755e9fd89f0;p=pulseview.git diff --git a/pv/views/decoder_output/view.hpp b/pv/views/decoder_output/view.hpp index 79dfe234..16d35e82 100644 --- a/pv/views/decoder_output/view.hpp +++ b/pv/views/decoder_output/view.hpp @@ -20,7 +20,15 @@ #ifndef PULSEVIEW_PV_VIEWS_DECODEROUTPUT_VIEW_HPP #define PULSEVIEW_PV_VIEWS_DECODEROUTPUT_VIEW_HPP +#include +#include +#include +#include + #include +#include + +#include "QHexView.hpp" namespace pv { @@ -30,6 +38,18 @@ namespace views { namespace decoder_output { +// When adding an entry here, don't forget to update SaveTypeNames as well +enum SaveType { + SaveTypeBinary, + SaveTypeHexDumpPlain, + SaveTypeHexDumpWithOffset, + SaveTypeHexDumpComplete, + SaveTypeCount // Indicates how many save types there are, must always be last +}; + +extern const char* SaveTypeNames[SaveTypeCount]; + + class View : public ViewBase { Q_OBJECT @@ -37,8 +57,6 @@ class View : public ViewBase public: explicit View(Session &session, bool is_main_view=false, QMainWindow *parent = nullptr); - ~View(); - virtual ViewType get_type() const; /** @@ -47,8 +65,6 @@ public: */ virtual void reset_view_state(); - virtual void clear_signals(); - virtual void clear_decode_signals(); virtual void add_decode_signal(shared_ptr signal); virtual void remove_decode_signal(shared_ptr signal); @@ -56,9 +72,40 @@ public: virtual void save_settings(QSettings &settings) const; virtual void restore_settings(QSettings &settings); +private: + void reset_data(); + void update_data(); + + void save_data() const; + void save_data_as_hex_dump(bool with_offset=false, bool with_ascii=false) const; + private Q_SLOTS: - void on_signal_name_changed(); + void on_selected_decoder_changed(int index); + void on_selected_class_changed(int index); + void on_signal_name_changed(const QString &name); + void on_new_binary_data(unsigned int segment_id, void* decoder, unsigned int bin_class_id); + + void on_decoder_stacked(void* decoder); + void on_decoder_removed(void* decoder); + + void on_actionSave_triggered(QAction* action = nullptr); + + virtual void perform_delayed_view_update(); + +private: + QWidget* parent_; + + QComboBox *decoder_selector_, *format_selector_, *class_selector_; + QStackedWidget *stacked_widget_; + QHexView *hex_view_; + + QToolButton* save_button_; + QAction* save_action_; + data::DecodeSignal *signal_; + const data::decode::Decoder *decoder_; + uint32_t bin_class_id_; + bool binary_data_exists_; }; } // namespace decoder_output