10 #ifndef IO_GRAPH_DIALOG_H
11 #define IO_GRAPH_DIALOG_H
31 #include <QTextStream>
32 #include <QItemSelection>
38 class QAbstractButton;
46 class QCPAxisTickerDateTime;
57 const int max_io_items_ = 1 << 25;
64 enum PlotStyles { psLine, psDotLine, psStepLine, psDotStepLine, psImpulse, psBar, psStackedBar, psDot, psSquare, psDiamond, psCross, psPlus, psCircle };
66 explicit IOGraph(QCustomPlot *parent);
68 QString configError()
const {
return config_err_; }
69 QString name()
const {
return name_; }
70 void setName(
const QString &name);
71 QString filter()
const {
return filter_; }
72 bool setFilter(
const QString &filter);
73 void applyCurrentColor();
74 bool visible()
const {
return visible_; }
75 void setVisible(
bool visible);
76 bool needRetap()
const {
return need_retap_; }
77 void setNeedRetap(
bool retap);
79 void setColor(
const QRgb color);
80 void setPlotStyle(
int style);
81 QString valueUnitLabel()
const;
83 io_graph_item_unit_t valueUnits()
const {
return val_units_; }
84 void setValueUnits(
int val_units);
85 QString valueUnitField()
const {
return vu_field_; }
86 void setValueUnitField(
const QString &vu_field);
87 unsigned int movingAveragePeriod()
const {
return moving_avg_period_; }
88 void setInterval(
int interval);
90 bool removeFromLegend();
91 QCPGraph *graph()
const {
return graph_; }
92 QCPBars *bars()
const {
return bars_; }
93 double startOffset()
const;
95 int packetFromTime(
double ts)
const;
96 bool hasItemToShow(
int idx,
double value)
const;
97 double getItemValue(
int idx,
const capture_file *cap_file)
const;
98 int maxInterval ()
const {
return cur_idx_; }
102 unsigned int moving_avg_period_;
103 unsigned int y_axis_factor_;
108 void reloadValueUnitField();
111 void requestReplot();
112 void requestRecalc();
117 static void tapReset(
void *iog_ptr);
119 static void tapDraw(
void *iog_ptr);
121 void removeTapListener();
123 bool showsZero()
const;
125 template<
class DataMap>
double maxValueFromGraphData(
const DataMap &map);
126 template<
class DataMap>
void scaleGraphData(DataMap &map,
int scalar);
128 QCustomPlot *parent_;
131 bool tap_registered_;
137 QString full_filter_;
139 io_graph_item_unit_t val_units_;
147 std::vector<io_graph_item_t> items_;
160 explicit IOGraphDialog(QWidget &parent,
CaptureFile &cf, QString displayFilter = QString(), io_graph_item_unit_t value_units = IOG_ITEM_UNIT_PACKETS, QString yfield = QString());
163 enum UatColumns { colEnabled = 0, colName, colDFilter, colColor, colStyle, colYAxis, colYField, colSMAPeriod, colYAxisFactor, colMaxNum};
165 void addGraph(
bool checked, QString name, QString dfilter, QRgb color_idx, IOGraph::PlotStyles style,
166 io_graph_item_unit_t value_units, QString yfield,
int moving_average,
int yaxisfactor);
167 void addGraph(
bool checked, QString dfilter, io_graph_item_unit_t value_units, QString yfield);
168 void addGraph(
bool copy_from_current =
false);
169 void addDefaultGraph(
bool enabled,
int idx = 0);
170 void syncGraphSettings(
int row);
171 qsizetype graphCount()
const;
174 void scheduleReplot(
bool now =
false);
175 void scheduleRecalc(
bool now =
false);
176 void scheduleRetap(
bool now =
false);
181 void keyPressEvent(QKeyEvent *event);
185 void modelDataChanged(
const QModelIndex &topLeft,
const QModelIndex &bottomRight,
const QVector<int> &roles);
186 void modelRowsReset();
187 void modelRowsInserted(
const QModelIndex &parent,
int first,
int last);
188 void modelRowsRemoved(
const QModelIndex &parent,
int first,
int last);
189 void modelRowsMoved(
const QModelIndex &sourceParent,
int sourceStart,
int sourceEnd,
const QModelIndex &destinationParent,
int destinationRow);
192 void goToPacket(
int packet_num);
194 void intervalChanged(
int interval);
195 void reloadValueUnitFields();
198 Ui::IOGraphDialog *ui;
203 QPointer<UatModel> uat_model_;
207 QVector<IOGraph*> ioGraphs_;
210 QCPGraph *base_graph_;
211 QCPItemTracer *tracer_;
212 uint32_t packet_num_;
215 QRubberBand *rubber_band_;
225 QSharedPointer<QCPAxisTicker> number_ticker_;
226 QSharedPointer<QCPAxisTickerDateTime> datetime_ticker_;
230 void zoomAxes(
bool in);
231 void zoomXAxis(
bool in);
232 void zoomYAxis(
bool in);
233 void panAxes(
int x_pixels,
int y_pixels);
234 void toggleTracerStyle(
bool force_default =
false);
238 QRectF getZoomRanges(QRect zoom_rect);
239 void createIOGraph(
int currentRow);
240 void loadProfileGraphs();
241 void makeCsv(QTextStream &
stream)
const;
242 bool saveCsv(
const QString &file_name)
const;
243 IOGraph *currentActiveGraph()
const;
244 bool graphIsEnabled(
int row)
const;
247 static void applyChanges();
249 void copyFromProfile(QString filename);
250 void updateWidgets();
251 void showContextMenu(
const QPoint &pos);
252 void graphClicked(QMouseEvent *event);
253 void mouseMoved(QMouseEvent *event);
254 void mouseReleased(QMouseEvent *event);
255 void selectedFrameChanged(QList<int> frames);
258 void updateStatistics(
void);
259 void copyAsCsvClicked();
261 void graphUatSelectionChanged(
const QItemSelection &selected,
const QItemSelection &deselected);
262 void on_intervalComboBox_currentIndexChanged(
int index);
263 void on_todCheckBox_toggled(
bool checked);
264 void on_graphUat_currentItemChanged(
const QModelIndex ¤t,
const QModelIndex &previous);
266 void on_logCheckBox_toggled(
bool checked);
267 void on_automaticUpdateCheckBox_toggled(
bool checked);
268 void on_enableLegendCheckBox_toggled(
bool checked);
269 void on_newToolButton_clicked();
270 void on_deleteToolButton_clicked();
271 void on_copyToolButton_clicked();
272 void on_clearToolButton_clicked();
273 void on_moveUpwardsToolButton_clicked();
274 void on_moveDownwardsToolButton_clicked();
275 void on_dragRadioButton_toggled(
bool checked);
276 void on_zoomRadioButton_toggled(
bool checked);
277 void on_actionReset_triggered();
278 void on_actionZoomIn_triggered();
279 void on_actionZoomInX_triggered();
280 void on_actionZoomInY_triggered();
281 void on_actionZoomOut_triggered();
282 void on_actionZoomOutX_triggered();
283 void on_actionZoomOutY_triggered();
284 void on_actionMoveUp10_triggered();
285 void on_actionMoveLeft10_triggered();
286 void on_actionMoveRight10_triggered();
287 void on_actionMoveDown10_triggered();
288 void on_actionMoveUp1_triggered();
289 void on_actionMoveLeft1_triggered();
290 void on_actionMoveRight1_triggered();
291 void on_actionMoveDown1_triggered();
292 void on_actionGoToPacket_triggered();
293 void on_actionDragZoom_triggered();
294 void on_actionToggleTimeOrigin_triggered();
295 void on_actionCrosshairs_triggered();
296 void on_buttonBox_helpRequested();
297 void on_buttonBox_accepted();
298 void buttonBoxClicked(QAbstractButton *button);
Definition: capture_event.h:21
Definition: capture_file.h:21
Definition: io_graph_dialog.h:156
void captureFileClosing()
Called when the capture file is about to close. This can be used to disconnect taps and similar actio...
Definition: io_graph_dialog.cpp:820
Definition: io_graph_dialog.h:60
Definition: uat_delegate.h:24
Definition: wireshark_dialog.h:35
format_size_units_e
Definition: str_util.h:231
Definition: packet_info.h:44
Definition: epan_dissect.h:28
tap_packet_status
Definition: tap.h:25