3 * Wireshark - Network traffic analyzer
4 * By Gerald Combs <gerald@wireshark.org>
5 * Copyright 1998 Gerald Combs
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
33 #include "ui/ui_util.h"
34 #include "ui/iface_toolbar.h"
36 #include <epan/prefs.h>
37 #include <epan/plugin_if.h>
38 #include <epan/timestamp.h>
41 #include "capture_opts.h"
43 #include <capchild/capture_session.h>
45 #include <QMainWindow>
51 # include <QSocketNotifier>
54 #include "capture_file.h"
55 #include "capture_file_dialog.h"
56 #include "capture_file_properties_dialog.h"
57 #include "display_filter_combo.h"
58 #include "filter_action.h"
59 #include "follow_stream_dialog.h"
60 #include "preferences_dialog.h"
64 class CaptureInterfacesDialog;
66 class FunnelStatistics;
69 class WirelessTimeline;
80 Q_DECLARE_METATYPE(ts_type)
81 Q_DECLARE_METATYPE(ts_precision)
83 class MainWindow : public QMainWindow
88 explicit MainWindow(QWidget *parent = 0);
90 void setPipeInputHandler(gint source, gpointer user_data, ws_process_id *child_process, pipe_input_cb_t input_cb);
94 capture_session *captureSession() { return &cap_session_; }
95 info_data_t *captureInfoData() { return &info_data_; }
98 virtual QMenu *createPopupMenu();
100 void gotoFrame(int packet_num);
101 CaptureFile *captureFile() { return &capture_file_; }
103 void removeAdditionalToolbar(QString toolbarName);
105 void addInterfaceToolbar(const iface_toolbar *toolbar_entry);
106 void removeInterfaceToolbar(const gchar *menu_title);
109 virtual bool eventFilter(QObject *obj, QEvent *event);
110 virtual void keyPressEvent(QKeyEvent *event);
111 virtual void closeEvent(QCloseEvent *event);
112 virtual void dragEnterEvent(QDragEnterEvent *event);
113 virtual void dropEvent(QDropEvent *event);
114 virtual void changeEvent(QEvent* event);
115 virtual void resizeEvent(QResizeEvent *event);
119 // XXX Move to FilterUtils
121 MatchSelectedReplace,
131 CopyAllVisibleSelectedTreeItems,
132 CopySelectedDescription,
133 CopySelectedFieldName,
137 enum FileCloseContext {
144 Ui::MainWindow *main_ui_;
145 QSplitter master_split_;
146 QSplitter extra_split_;
147 QVector<unsigned> cur_layout_;
148 MainWelcome *main_welcome_;
149 DisplayFilterCombo *df_combo_box_;
150 CaptureFile capture_file_;
152 WirelessFrame *wireless_frame_;
153 // XXX - packet_list_, proto_tree_, and byte_view_tab_ should
154 // probably be full-on values instead of pointers.
155 PacketList *packet_list_;
156 WirelessTimeline *wireless_timeline_;
157 ProtoTree *proto_tree_;
158 QWidget *previous_focus_;
159 FileSetDialog *file_set_dialog_;
160 ByteViewTab *byte_view_tab_;
162 QActionGroup *show_hide_actions_;
163 QActionGroup *time_display_actions_;
164 QActionGroup *time_precision_actions_;
165 FunnelStatistics *funnel_statistics_;
166 QList<QPair<QAction *, bool> > freeze_actions_;
167 QWidget *freeze_focus_;
168 QMap<QAction *, ts_type> td_actions;
169 QMap<QAction *, ts_precision> tp_actions;
170 QToolBar *filter_expression_toolbar_;
173 bool capture_stopping_;
174 bool capture_filter_valid_;
176 capture_session cap_session_;
177 CaptureInterfacesDialog *capture_interfaces_dialog_;
178 info_data_t info_data_;
183 gpointer pipe_user_data_;
184 ws_process_id *pipe_child_process_;
185 pipe_input_cb_t pipe_input_cb_;
189 QSocketNotifier *pipe_notifier_;
192 #if defined(Q_OS_MAC) && QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
196 #ifdef HAVE_SOFTWARE_UPDATE
197 QAction *update_action_;
200 QWidget* getLayoutWidget(layout_pane_content_e type);
205 void mergeCaptureFile();
206 void importCaptureFile();
207 bool saveCaptureFile(capture_file *cf, bool dont_reopen);
208 bool saveAsCaptureFile(capture_file *cf, bool must_support_comments = false, bool dont_reopen = false);
209 void exportSelectedPackets();
210 void exportDissections(export_type_e export_type);
212 void fileAddExtension(QString &file_name, int file_type, bool compressed);
213 bool testCaptureFileClose(QString before_what, FileCloseContext context = Default);
216 void initMainToolbarIcons();
217 void initShowHideMainWidgets();
218 void initTimeDisplayFormatMenu();
219 void initTimePrecisionFormatMenu();
220 void initFreezeActions();
222 void setTitlebarForCaptureInProgress();
223 void setMenusForCaptureFile(bool force_disable = false);
224 void setMenusForCaptureInProgress(bool capture_in_progress = false);
225 void setMenusForCaptureStopping();
226 void setForCapturedPackets(bool have_captured_packets);
227 void setMenusForFileSet(bool enable_list_files);
228 void setWindowIcon(const QIcon &icon);
229 QString replaceWindowTitleVariables(QString title);
231 void externalMenuHelper(ext_menu_t * menu, QMenu * subMenu, gint depth);
233 void setForCaptureInProgress(bool capture_in_progress = false, GArray *ifaces = NULL);
234 QMenu* findOrAddMenu(QMenu *parent_menu, QString& menu_text);
236 void recursiveCopyProtoTreeItems(QTreeWidgetItem *item, QString &clip, int ident_level);
237 void captureFileReadStarted(const QString &action);
239 void addMenuActions(QList<QAction *> &actions, int menu_group);
240 void removeMenuActions(QList<QAction *> &actions, int menu_group);
241 void goToConversationFrame(bool go_next);
242 void colorizeWithFilter(QByteArray filter, int color_number = -1);
245 void setCaptureFile(capture_file *cf);
246 void setDissectedCaptureFile(capture_file *cf);
247 void displayFilterSuccess(bool success);
248 void monospaceFontChanged(const QFont &mono_font);
249 void closePacketDialogs();
251 void packetInfoChanged(struct _packet_info *pinfo);
252 void fieldFilterChanged(const QByteArray field_filter);
253 void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
256 // in main_window_slots.cpp
258 * Open a capture file.
259 * @param cf_path Path to the file.
260 * @param display_filter Display filter to apply. May be empty.
261 * @param type File type.
262 * @return True on success, false on failure.
264 // XXX We might want to return a cf_read_status_t or a CaptureFile.
265 bool openCaptureFile(QString cf_path, QString display_filter, unsigned int type, gboolean is_tempfile = FALSE);
266 bool openCaptureFile(QString cf_path = QString(), QString display_filter = QString()) { return openCaptureFile(cf_path, display_filter, WTAP_TYPE_AUTO); }
267 void filterPackets(QString new_filter = QString(), bool force = false);
268 void updateForUnsavedChanges();
270 void applyRecentPaneGeometry();
271 void layoutToolbars();
272 void updatePreferenceActions();
273 void updateRecentActions();
275 void setTitlebarForCaptureFile();
276 void setWSWindowTitle(QString title = QString());
278 void captureCapturePrepared(capture_session *);
279 void captureCaptureUpdateStarted(capture_session *);
280 void captureCaptureUpdateFinished(capture_session *);
281 void captureCaptureFixedStarted(capture_session *);
282 void captureCaptureFixedFinished(capture_session *cap_session);
283 void captureCaptureStopping(capture_session *);
284 void captureCaptureFailed(capture_session *);
286 void captureFileOpened();
287 void captureFileReadStarted() { captureFileReadStarted(tr("Loading")); }
288 void captureFileReadFinished();
289 void captureFileReloadStarted() { captureFileReadStarted(tr("Reloading")); }
290 void captureFileRescanStarted() { setMenusForCaptureFile(true); captureFileReadStarted(tr("Rescanning")); }
291 void captureFileRetapStarted();
292 void captureFileRetapFinished();
293 void captureFileMergeStarted();
294 void captureFileMergeFinished();
295 void captureFileFlushTapsData();
296 void captureFileClosing();
297 void captureFileClosed();
298 void captureFileSaveStarted(const QString &file_path);
300 void filterExpressionsChanged();
302 void launchRLCGraph(bool channelKnown, guint16 ueid, guint8 rlcMode,
303 guint16 channelType, guint16 channelId, guint8 direction);
305 void on_actionViewFullScreen_triggered(bool checked);
307 // Manually connected slots (no "on_<object>_<signal>").
309 void initViewColorizeMenu();
310 void initConversationMenus();
311 static gboolean addExportObjectsMenuItem(const void *key, void *value, void *userdata);
312 void initExportObjectsMenus();
314 // in main_window_slots.cpp
316 * @brief startCapture
317 * Start capturing from the selected interfaces using the capture filter
318 * shown in the main welcome screen.
322 void pipeActivated(int source);
323 void pipeNotifierDestroyed();
326 void loadWindowGeometry();
327 void saveWindowGeometry();
328 void mainStackChanged(int);
329 void updateRecentCaptures();
330 void recentActionTriggered();
331 void setMenusForSelectedPacket();
332 void setMenusForSelectedTreeRow(field_info *fi = NULL);
333 void interfaceSelectionChanged();
334 void captureFilterSyntaxChanged(bool valid);
335 void redissectPackets();
336 void checkDisplayFilter();
337 void fieldsChanged();
338 void reloadLuaPlugins();
339 void showAccordionFrame(AccordionFrame *show_frame, bool toggle = false);
340 void showColumnEditor(int column);
341 void showPreferenceEditor(); // module_t *, pref *
342 void addStatsPluginsToMenu();
343 void addDynamicMenus();
344 void reloadDynamicMenus();
345 void addPluginIFStructures();
346 QMenu * searchSubMenu(QString objectName);
347 void activatePluginIFToolbar(bool);
349 void startInterfaceCapture(bool valid, const QString capture_filter);
351 void applyGlobalCommandLineOptions();
352 void setFeaturesEnabled(bool enabled = true);
354 void on_actionDisplayFilterExpression_triggered();
355 void on_actionNewDisplayFilterExpression_triggered();
356 void displayFilterButtonClicked();
358 // Handle FilterAction signals
359 void queuedFilterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
361 /** Pass stat cmd arguments to a slot.
362 * @param menu_path slot Partial slot name, e.g. "StatisticsIOGraph".
363 * @param arg "-z" argument, e.g. "io,stat".
364 * @param userdata Optional user data.
366 void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
368 /** Pass tap parameter arguments to a slot.
369 * @param cfg_str slot Partial slot name, e.g. "StatisticsAFPSrt".
370 * @param arg "-z" argument, e.g. "afp,srt".
371 * @param userdata Optional user data.
373 void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata);
374 void openTapParameterDialog();
376 void byteViewTabChanged(int tab_index);
378 #ifdef HAVE_SOFTWARE_UPDATE
379 void softwareUpdateRequested();
382 // Automatically connected slots ("on_<object>_<signal>").
384 // The slots below follow the naming conventaion described in
385 // http://doc.qt.io/qt-4.8/qmetaobject.html#connectSlotsByName and are
386 // automatically connected at initialization time via main_ui_->setupUi,
387 // which in turn calls connectSlotsByName.
389 // If you're manually connecting a signal to a slot, don't prefix its name
390 // with "on_". Otherwise you'll get runtime warnings.
392 // We might want move these to main_window_actions.cpp similar to
393 // gtk/main_menubar.c
395 void on_actionFileOpen_triggered();
396 void on_actionFileMerge_triggered();
397 void on_actionFileImportFromHexDump_triggered();
398 void on_actionFileClose_triggered();
399 void on_actionFileSave_triggered();
400 void on_actionFileSaveAs_triggered();
401 void on_actionFileSetListFiles_triggered();
402 void on_actionFileSetNextFile_triggered();
403 void on_actionFileSetPreviousFile_triggered();
404 void on_actionFileExportPackets_triggered();
405 void on_actionFileExportAsPlainText_triggered();
406 // We're dropping PostScript exports
407 void on_actionFileExportAsCSV_triggered();
408 void on_actionFileExportAsCArrays_triggered();
409 void on_actionFileExportAsPSML_triggered();
410 void on_actionFileExportAsPDML_triggered();
411 void on_actionFileExportAsJSON_triggered();
412 void on_actionFileExportPacketBytes_triggered();
413 void on_actionFilePrint_triggered();
415 void on_actionFileExportPDU_triggered();
416 void on_actionFileExportSSLSessionKeys_triggered();
418 void actionEditCopyTriggered(MainWindow::CopySelected selection_type);
419 void on_actionCopyAllVisibleItems_triggered();
420 void on_actionCopyAllVisibleSelectedTreeItems_triggered();
421 void on_actionEditCopyDescription_triggered();
422 void on_actionEditCopyFieldName_triggered();
423 void on_actionEditCopyValue_triggered();
424 void on_actionEditCopyAsFilter_triggered();
425 void on_actionEditFindPacket_triggered();
426 void on_actionEditFindNext_triggered();
427 void on_actionEditFindPrevious_triggered();
428 void on_actionEditMarkPacket_triggered();
429 void on_actionEditMarkAllDisplayed_triggered();
430 void on_actionEditUnmarkAllDisplayed_triggered();
431 void on_actionEditNextMark_triggered();
432 void on_actionEditPreviousMark_triggered();
433 void on_actionEditIgnorePacket_triggered();
434 void on_actionEditIgnoreAllDisplayed_triggered();
435 void on_actionEditUnignoreAllDisplayed_triggered();
436 void on_actionEditSetTimeReference_triggered();
437 void on_actionEditUnsetAllTimeReferences_triggered();
438 void on_actionEditNextTimeReference_triggered();
439 void on_actionEditPreviousTimeReference_triggered();
440 void on_actionEditTimeShift_triggered();
441 void on_actionEditPacketComment_triggered();
442 void on_actionEditConfigurationProfiles_triggered();
443 void showPreferencesDialog(PreferencesDialog::PreferencesPane start_pane = PreferencesDialog::ppAppearance);
444 void showPreferencesDialog(QString module_name);
445 void on_actionEditPreferences_triggered();
447 void showHideMainWidgets(QAction *action);
448 void setTimestampFormat(QAction *action);
449 void setTimestampPrecision(QAction *action);
450 void on_actionViewTimeDisplaySecondsWithHoursAndMinutes_triggered(bool checked);
451 void on_actionViewEditResolvedName_triggered();
452 void setNameResolution();
453 void on_actionViewNameResolutionPhysical_triggered();
454 void on_actionViewNameResolutionNetwork_triggered();
455 void on_actionViewNameResolutionTransport_triggered();
456 // XXX We're not porting the concurrency action from GTK+ on purpose.
458 void on_actionViewZoomIn_triggered();
459 void on_actionViewZoomOut_triggered();
460 void on_actionViewNormalSize_triggered();
461 void on_actionWirelessTimelineZoomIn_triggered();
462 void on_actionWirelessTimelineZoomOut_triggered();
463 void on_actionWirelessTimelineZoomFullOut_triggered();
464 void on_actionViewColorizePacketList_triggered(bool checked);
465 void on_actionViewColoringRules_triggered();
466 void colorizeConversation(bool create_rule = false);
467 void colorizeActionTriggered();
468 void on_actionViewColorizeResetColorization_triggered();
469 void on_actionViewColorizeNewColoringRule_triggered();
470 void on_actionViewResetLayout_triggered();
471 void on_actionViewResizeColumns_triggered();
473 void on_actionViewInternalsConversationHashTables_triggered();
474 void on_actionViewInternalsDissectorTables_triggered();
475 void on_actionViewInternalsSupportedProtocols_triggered();
477 void openPacketDialog(bool from_reference = false);
478 void on_actionViewShowPacketInNewWindow_triggered();
479 void on_actionContextShowLinkedPacketInNewWindow_triggered();
480 void on_actionViewReload_triggered();
481 void on_actionViewReload_as_File_Format_or_Capture_triggered();
483 void on_actionGoGoToPacket_triggered();
484 void on_actionGoGoToLinkedPacket_triggered();
485 void on_actionGoNextConversationPacket_triggered();
486 void on_actionGoPreviousConversationPacket_triggered();
487 void on_actionGoAutoScroll_toggled(bool checked);
488 void resetPreviousFocus();
490 void on_actionCaptureOptions_triggered();
492 void on_actionCaptureRefreshInterfaces_triggered();
494 void on_actionCaptureCaptureFilters_triggered();
496 void on_actionAnalyzeDisplayFilters_triggered();
497 void on_actionAnalyzeDisplayFilterMacros_triggered();
498 void matchFieldFilter(FilterAction::Action action, FilterAction::ActionType filter_type);
499 void on_actionAnalyzeCreateAColumn_triggered();
500 void on_actionAnalyzeAAFSelected_triggered();
501 void on_actionAnalyzeAAFNotSelected_triggered();
502 void on_actionAnalyzeAAFAndSelected_triggered();
503 void on_actionAnalyzeAAFOrSelected_triggered();
504 void on_actionAnalyzeAAFAndNotSelected_triggered();
505 void on_actionAnalyzeAAFOrNotSelected_triggered();
506 void on_actionAnalyzePAFSelected_triggered();
507 void on_actionAnalyzePAFNotSelected_triggered();
508 void on_actionAnalyzePAFAndSelected_triggered();
509 void on_actionAnalyzePAFOrSelected_triggered();
510 void on_actionAnalyzePAFAndNotSelected_triggered();
511 void on_actionAnalyzePAFOrNotSelected_triggered();
513 void applyConversationFilter();
514 void applyExportObject();
516 void on_actionAnalyzeEnabledProtocols_triggered();
517 void on_actionAnalyzeDecodeAs_triggered();
518 void on_actionAnalyzeReloadLuaPlugins_triggered();
520 void openFollowStreamDialog(follow_type_t type);
521 void on_actionAnalyzeFollowTCPStream_triggered();
522 void on_actionAnalyzeFollowUDPStream_triggered();
523 void on_actionAnalyzeFollowSSLStream_triggered();
524 void on_actionAnalyzeFollowHTTPStream_triggered();
525 void statCommandExpertInfo(const char *, void *);
526 void on_actionAnalyzeExpertInfo_triggered();
528 void on_actionHelpContents_triggered();
529 void on_actionHelpMPWireshark_triggered();
530 void on_actionHelpMPWireshark_Filter_triggered();
531 void on_actionHelpMPCapinfos_triggered();
532 void on_actionHelpMPDumpcap_triggered();
533 void on_actionHelpMPEditcap_triggered();
534 void on_actionHelpMPMergecap_triggered();
535 void on_actionHelpMPRawShark_triggered();
536 void on_actionHelpMPReordercap_triggered();
537 void on_actionHelpMPText2cap_triggered();
538 void on_actionHelpMPTShark_triggered();
539 void on_actionHelpWebsite_triggered();
540 void on_actionHelpFAQ_triggered();
541 void on_actionHelpAsk_triggered();
542 void on_actionHelpDownloads_triggered();
543 void on_actionHelpWiki_triggered();
544 void on_actionHelpSampleCaptures_triggered();
545 void on_actionHelpAbout_triggered();
547 #ifdef HAVE_SOFTWARE_UPDATE
548 void checkForUpdates();
551 void on_goToCancel_clicked();
552 void on_goToGo_clicked();
553 void on_goToLineEdit_returnPressed();
554 void on_actionCaptureStart_triggered();
555 void on_actionCaptureStop_triggered();
556 void on_actionCaptureRestart_triggered();
558 void on_actionStatisticsCaptureFileProperties_triggered();
559 void on_actionStatisticsResolvedAddresses_triggered();
560 void on_actionStatisticsProtocolHierarchy_triggered();
561 void on_actionStatisticsFlowGraph_triggered();
562 void openTcpStreamDialog(int graph_type);
563 void on_actionStatisticsTcpStreamStevens_triggered();
564 void on_actionStatisticsTcpStreamTcptrace_triggered();
565 void on_actionStatisticsTcpStreamThroughput_triggered();
566 void on_actionStatisticsTcpStreamRoundTripTime_triggered();
567 void on_actionStatisticsTcpStreamWindowScaling_triggered();
568 void openSCTPAllAssocsDialog();
569 void on_actionSCTPShowAllAssociations_triggered();
570 void on_actionSCTPAnalyseThisAssociation_triggered();
571 void on_actionSCTPFilterThisAssociation_triggered();
572 void statCommandMulticastStatistics(const char *arg, void *);
573 void on_actionStatisticsUdpMulticastStreams_triggered();
575 void statCommandWlanStatistics(const char *arg, void *);
576 void on_actionWirelessWlanStatistics_triggered();
578 void openStatisticsTreeDialog(const gchar *abbr);
579 void on_actionStatistics29WestTopics_Advertisements_by_Topic_triggered();
580 void on_actionStatistics29WestTopics_Advertisements_by_Source_triggered();
581 void on_actionStatistics29WestTopics_Advertisements_by_Transport_triggered();
582 void on_actionStatistics29WestTopics_Queries_by_Topic_triggered();
583 void on_actionStatistics29WestTopics_Queries_by_Receiver_triggered();
584 void on_actionStatistics29WestTopics_Wildcard_Queries_by_Pattern_triggered();
585 void on_actionStatistics29WestTopics_Wildcard_Queries_by_Receiver_triggered();
586 void on_actionStatistics29WestQueues_Advertisements_by_Queue_triggered();
587 void on_actionStatistics29WestQueues_Advertisements_by_Source_triggered();
588 void on_actionStatistics29WestQueues_Queries_by_Queue_triggered();
589 void on_actionStatistics29WestQueues_Queries_by_Receiver_triggered();
590 void on_actionStatistics29WestUIM_Streams_triggered();
591 void on_actionStatistics29WestUIM_Stream_Flow_Graph_triggered();
592 void on_actionStatistics29WestLBTRM_triggered();
593 void on_actionStatistics29WestLBTRU_triggered();
594 void on_actionStatisticsANCP_triggered();
595 void on_actionStatisticsBACappInstanceId_triggered();
596 void on_actionStatisticsBACappIP_triggered();
597 void on_actionStatisticsBACappObjectId_triggered();
598 void on_actionStatisticsBACappService_triggered();
599 void on_actionStatisticsCollectd_triggered();
600 void statCommandConversations(const char *arg = NULL, void *userdata = NULL);
601 void on_actionStatisticsConversations_triggered();
602 void statCommandEndpoints(const char *arg = NULL, void *userdata = NULL);
603 void on_actionStatisticsEndpoints_triggered();
604 void on_actionStatisticsHART_IP_triggered();
605 void on_actionStatisticsHTTPPacketCounter_triggered();
606 void on_actionStatisticsHTTPRequests_triggered();
607 void on_actionStatisticsHTTPLoadDistribution_triggered();
608 void on_actionStatisticsPacketLengths_triggered();
609 void statCommandIOGraph(const char *, void *);
610 void on_actionStatisticsIOGraph_triggered();
611 void on_actionStatisticsSametime_triggered();
612 void on_actionStatisticsDNS_triggered();
613 void actionStatisticsPlugin_triggered();
614 void on_actionStatisticsHpfeeds_triggered();
615 void on_actionStatisticsHTTP2_triggered();
617 void openVoipCallsDialog(bool all_flows = false);
618 void on_actionTelephonyVoipCalls_triggered();
619 void on_actionTelephonyGsmMapSummary_triggered();
620 void statCommandLteMacStatistics(const char *arg, void *);
621 void on_actionTelephonyLteRlcStatistics_triggered();
622 void statCommandLteRlcStatistics(const char *arg, void *);
623 void on_actionTelephonyLteMacStatistics_triggered();
624 void on_actionTelephonyLteRlcGraph_triggered();
625 void on_actionTelephonyIax2StreamAnalysis_triggered();
626 void on_actionTelephonyISUPMessages_triggered();
627 void on_actionTelephonyMtp3Summary_triggered();
628 void on_actionTelephonyOsmuxPacketCounter_triggered();
629 void on_actionTelephonyRTPStreams_triggered();
630 void on_actionTelephonyRTPStreamAnalysis_triggered();
631 void on_actionTelephonyRTSPPacketCounter_triggered();
632 void on_actionTelephonySMPPOperations_triggered();
633 void on_actionTelephonyUCPMessages_triggered();
634 void on_actionTelephonySipFlows_triggered();
636 void on_actionBluetoothATT_Server_Attributes_triggered();
637 void on_actionBluetoothDevices_triggered();
638 void on_actionBluetoothHCI_Summary_triggered();
640 void on_actionToolsFirewallAclRules_triggered();
642 void externalMenuItem_triggered();
644 void on_actionContextCopyBytesHexTextDump_triggered();
645 void on_actionContextCopyBytesHexDump_triggered();
646 void on_actionContextCopyBytesPrintableText_triggered();
647 void on_actionContextCopyBytesHexStream_triggered();
648 void on_actionContextCopyBytesBinary_triggered();
649 void on_actionContextCopyBytesEscapedString_triggered();
651 void on_actionContextShowPacketBytes_triggered();
653 void on_actionContextWikiProtocolPage_triggered();
654 void on_actionContextFilterFieldReference_triggered();
657 void extcap_options_finished(int result);
658 void showExtcapOptionsDialog(QString & device_name);
662 #endif // MAINWINDOW_H
670 * indent-tabs-mode: nil
673 * ex: set shiftwidth=4 tabstop=8 expandtab:
674 * :indentSize=4:tabSize=8:noTabs=true: