Qt: Remove duplicate copy actions
Remove the final copy actions from MainWindow and use DataPrinter instead. This way, MainWindow no longer is involved in copying data, and the actions purely are defined by DataPrinter Change-Id: Ib70ad6394dee501bb2c8d58c9d174a0eb04b47de Reviewed-on: https://code.wireshark.org/review/25031 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
This commit is contained in:
parent
fbeca26f03
commit
e3329cdc31
|
@ -649,13 +649,6 @@ private slots:
|
|||
|
||||
void externalMenuItem_triggered();
|
||||
|
||||
void on_actionContextCopyBytesHexTextDump_triggered();
|
||||
void on_actionContextCopyBytesHexDump_triggered();
|
||||
void on_actionContextCopyBytesPrintableText_triggered();
|
||||
void on_actionContextCopyBytesHexStream_triggered();
|
||||
void on_actionContextCopyBytesBinary_triggered();
|
||||
void on_actionContextCopyBytesEscapedString_triggered();
|
||||
|
||||
void on_actionAnalyzeShowPacketBytes_triggered();
|
||||
|
||||
void on_actionContextWikiProtocolPage_triggered();
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
<widget class="FilterExpressionFrame" name="filterExpressionFrame"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="WirelessTimeline" name="wirelessTimelineWidget"/>
|
||||
<widget class="WirelessTimeline" name="wirelessTimelineWidget" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="mainStack">
|
||||
|
@ -144,7 +144,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>960</width>
|
||||
<height>23</height>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuFile">
|
||||
|
@ -354,7 +354,7 @@
|
|||
<addaction name="actionViewFilterToolbar"/>
|
||||
<addaction name="actionViewWirelessToolbar"/>
|
||||
<addaction name="menuInterfaceToolbars"/>
|
||||
<addaction name="menuAdditionalToolbars" />
|
||||
<addaction name="menuAdditionalToolbars"/>
|
||||
<addaction name="actionViewStatusBar"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionViewFullScreen"/>
|
||||
|
@ -2550,46 +2550,6 @@
|
|||
<string>Show the currently supported protocols and display filter fields</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionContextCopyBytesHexTextDump">
|
||||
<property name="text">
|
||||
<string>Bytes as Hex + ASCII Dump</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Copy packet bytes as a hex and ASCII dump.</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionContextCopyBytesHexDump">
|
||||
<property name="text">
|
||||
<string>…as Hex Dump</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Copy packet bytes as a hex dump.</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionContextCopyBytesPrintableText">
|
||||
<property name="text">
|
||||
<string>…as Printable Text</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Copy only the printable text in the packet.</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionContextCopyBytesHexStream">
|
||||
<property name="text">
|
||||
<string>…as a Hex Stream</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Copy packet bytes as a stream of hex.</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionContextCopyBytesBinary">
|
||||
<property name="text">
|
||||
<string>…as Raw Binary</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Copy packet bytes as application/octet-stream MIME data.</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionTelephonyGsmMapSummary">
|
||||
<property name="text">
|
||||
<string>MAP Summary</string>
|
||||
|
@ -3006,14 +2966,6 @@
|
|||
<string>Create firewall ACL rules</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionContextCopyBytesEscapedString">
|
||||
<property name="text">
|
||||
<string>…as Escaped String</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Copy packet bytes as a Escaped string</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionViewFullScreen">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
|
|
|
@ -3949,90 +3949,6 @@ void MainWindow::showExtcapOptionsDialog(QString &device_name)
|
|||
}
|
||||
#endif
|
||||
|
||||
void MainWindow::on_actionContextCopyBytesHexTextDump_triggered()
|
||||
{
|
||||
QAction *ca = qobject_cast<QAction*>(sender());
|
||||
if (!ca) return;
|
||||
|
||||
IDataPrintable * fieldInfo =
|
||||
VariantPointer<IDataPrintable>::asPtr(ca->property("idataprintable_"));
|
||||
if ( ! fieldInfo )
|
||||
return;
|
||||
|
||||
DataPrinter printer;
|
||||
printer.toClipboard(DataPrinter::DP_HexDump, fieldInfo);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionContextCopyBytesHexDump_triggered()
|
||||
{
|
||||
QAction *ca = qobject_cast<QAction*>(sender());
|
||||
if (!ca) return;
|
||||
|
||||
IDataPrintable * fieldInfo =
|
||||
VariantPointer<IDataPrintable>::asPtr(ca->property("idataprintable_"));
|
||||
if ( ! fieldInfo )
|
||||
return;
|
||||
|
||||
DataPrinter printer;
|
||||
printer.toClipboard(DataPrinter::DP_HexOnly, fieldInfo);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionContextCopyBytesPrintableText_triggered()
|
||||
{
|
||||
QAction *ca = qobject_cast<QAction*>(sender());
|
||||
if (!ca) return;
|
||||
|
||||
IDataPrintable * fieldInfo =
|
||||
VariantPointer<IDataPrintable>::asPtr(ca->property("idataprintable_"));
|
||||
if ( ! fieldInfo )
|
||||
return;
|
||||
|
||||
DataPrinter printer;
|
||||
printer.toClipboard(DataPrinter::DP_PrintableText, fieldInfo);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionContextCopyBytesHexStream_triggered()
|
||||
{
|
||||
QAction *ca = qobject_cast<QAction*>(sender());
|
||||
if (!ca) return;
|
||||
|
||||
IDataPrintable * fieldInfo =
|
||||
VariantPointer<IDataPrintable>::asPtr(ca->property("idataprintable_"));
|
||||
if ( ! fieldInfo )
|
||||
return;
|
||||
|
||||
DataPrinter printer;
|
||||
printer.toClipboard(DataPrinter::DP_HexStream, fieldInfo);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionContextCopyBytesBinary_triggered()
|
||||
{
|
||||
QAction *ca = qobject_cast<QAction*>(sender());
|
||||
if (!ca) return;
|
||||
|
||||
IDataPrintable * fieldInfo =
|
||||
VariantPointer<IDataPrintable>::asPtr(ca->property("idataprintable_"));
|
||||
if ( ! fieldInfo )
|
||||
return;
|
||||
|
||||
DataPrinter printer;
|
||||
printer.toClipboard(DataPrinter::DP_Binary, fieldInfo);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionContextCopyBytesEscapedString_triggered()
|
||||
{
|
||||
QAction *ca = qobject_cast<QAction*>(sender());
|
||||
if (!ca) return;
|
||||
|
||||
IDataPrintable * fieldInfo =
|
||||
VariantPointer<IDataPrintable>::asPtr(ca->property("idataprintable_"));
|
||||
if ( ! fieldInfo )
|
||||
return;
|
||||
|
||||
DataPrinter printer;
|
||||
printer.toClipboard(DataPrinter::DP_EscapedString, fieldInfo);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionContextWikiProtocolPage_triggered()
|
||||
{
|
||||
QAction *wa = qobject_cast<QAction*>(sender());
|
||||
|
|
|
@ -241,9 +241,6 @@ PacketList::PacketList(QWidget *parent) :
|
|||
cur_history_(-1),
|
||||
in_history_(false)
|
||||
{
|
||||
QMenu *main_menu_item, *submenu;
|
||||
QAction *action;
|
||||
|
||||
setItemsExpandable(false);
|
||||
setRootIsDecorated(false);
|
||||
setSortingEnabled(true);
|
||||
|
@ -257,113 +254,6 @@ PacketList::PacketList(QWidget *parent) :
|
|||
setModel(packet_list_model_);
|
||||
sortByColumn(-1, Qt::AscendingOrder);
|
||||
|
||||
// XXX We might want to reimplement setParent() and fill in the context
|
||||
// menu there.
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditMarkPacket"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditIgnorePacket"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditSetTimeReference"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditTimeShift"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditPacketComment"));
|
||||
|
||||
ctx_menu_.addSeparator();
|
||||
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionViewEditResolvedName"));
|
||||
ctx_menu_.addSeparator();
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuApplyAsFilter");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrNotSelected"));
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuPrepareAFilter");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrNotSelected"));
|
||||
|
||||
const char *conv_menu_name = "menuConversationFilter";
|
||||
main_menu_item = window()->findChild<QMenu *>(conv_menu_name);
|
||||
conv_menu_.setTitle(main_menu_item->title());
|
||||
conv_menu_.setObjectName(conv_menu_name);
|
||||
ctx_menu_.addMenu(&conv_menu_);
|
||||
|
||||
const char *colorize_menu_name = "menuColorizeConversation";
|
||||
main_menu_item = window()->findChild<QMenu *>(colorize_menu_name);
|
||||
colorize_menu_.setTitle(main_menu_item->title());
|
||||
colorize_menu_.setObjectName(colorize_menu_name);
|
||||
ctx_menu_.addMenu(&colorize_menu_);
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuSCTP");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPAnalyseThisAssociation"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPShowAllAssociations"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPFilterThisAssociation"));
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuFollow");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowTCPStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowUDPStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowSSLStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowHTTPStream"));
|
||||
|
||||
ctx_menu_.addSeparator();
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuEditCopy");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
|
||||
action = submenu->addAction(tr("Summary as Text"));
|
||||
action->setData(copy_summary_text_);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
|
||||
action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as CSV"));
|
||||
action->setData(copy_summary_csv_);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
|
||||
action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as YAML"));
|
||||
action->setData(copy_summary_yaml_);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
|
||||
submenu->addSeparator();
|
||||
|
||||
submenu->addAction(window()->findChild<QAction *>("actionEditCopyAsFilter"));
|
||||
submenu->addSeparator();
|
||||
|
||||
action = window()->findChild<QAction *>("actionContextCopyBytesHexTextDump");
|
||||
submenu->addAction(action);
|
||||
copy_actions_ << action;
|
||||
action = window()->findChild<QAction *>("actionContextCopyBytesHexDump");
|
||||
submenu->addAction(action);
|
||||
copy_actions_ << action;
|
||||
action = window()->findChild<QAction *>("actionContextCopyBytesPrintableText");
|
||||
submenu->addAction(action);
|
||||
copy_actions_ << action;
|
||||
action = window()->findChild<QAction *>("actionContextCopyBytesHexStream");
|
||||
submenu->addAction(action);
|
||||
copy_actions_ << action;
|
||||
action = window()->findChild<QAction *>("actionContextCopyBytesBinary");
|
||||
submenu->addAction(action);
|
||||
copy_actions_ << action;
|
||||
action = window()->findChild<QAction *>("actionContextCopyBytesEscapedString");
|
||||
submenu->addAction(action);
|
||||
copy_actions_ << action;
|
||||
|
||||
ctx_menu_.addSeparator();
|
||||
ctx_menu_.addMenu(&proto_prefs_menu_);
|
||||
decode_as_ = window()->findChild<QAction *>("actionAnalyzeDecodeAs");
|
||||
ctx_menu_.addAction(decode_as_);
|
||||
// "Print" not ported intentionally
|
||||
action = window()->findChild<QAction *>("actionViewShowPacketInNewWindow");
|
||||
ctx_menu_.addAction(action);
|
||||
|
||||
initHeaderContextMenu();
|
||||
|
||||
g_assert(gbl_cur_packet_list == NULL);
|
||||
|
@ -564,15 +454,97 @@ void PacketList::contextMenuEvent(QContextMenuEvent *event)
|
|||
FrameInformation * frameData =
|
||||
new FrameInformation(new CaptureFile(this, cap_file_), packet_list_model_->getRowFdata(ctxIndex.row()));
|
||||
|
||||
foreach (QAction *action, copy_actions_) {
|
||||
if ( frameData->isValid() )
|
||||
{
|
||||
action->setProperty("idataprintable_",
|
||||
VariantPointer<IDataPrintable>::asQVariant((IDataPrintable*)frameData));
|
||||
}
|
||||
ctx_menu_.clear();
|
||||
// XXX We might want to reimplement setParent() and fill in the context
|
||||
// menu there.
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditMarkPacket"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditIgnorePacket"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditSetTimeReference"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditTimeShift"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionEditPacketComment"));
|
||||
|
||||
action->setData(QVariant());
|
||||
}
|
||||
ctx_menu_.addSeparator();
|
||||
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionViewEditResolvedName"));
|
||||
ctx_menu_.addSeparator();
|
||||
|
||||
QMenu *main_menu_item = window()->findChild<QMenu *>("menuApplyAsFilter");
|
||||
QMenu *submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrNotSelected"));
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuPrepareAFilter");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrNotSelected"));
|
||||
|
||||
const char *conv_menu_name = "menuConversationFilter";
|
||||
main_menu_item = window()->findChild<QMenu *>(conv_menu_name);
|
||||
conv_menu_.setTitle(main_menu_item->title());
|
||||
conv_menu_.setObjectName(conv_menu_name);
|
||||
ctx_menu_.addMenu(&conv_menu_);
|
||||
|
||||
const char *colorize_menu_name = "menuColorizeConversation";
|
||||
main_menu_item = window()->findChild<QMenu *>(colorize_menu_name);
|
||||
colorize_menu_.setTitle(main_menu_item->title());
|
||||
colorize_menu_.setObjectName(colorize_menu_name);
|
||||
ctx_menu_.addMenu(&colorize_menu_);
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuSCTP");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPAnalyseThisAssociation"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPShowAllAssociations"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPFilterThisAssociation"));
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuFollow");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowTCPStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowUDPStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowSSLStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowHTTPStream"));
|
||||
|
||||
ctx_menu_.addSeparator();
|
||||
|
||||
main_menu_item = window()->findChild<QMenu *>("menuEditCopy");
|
||||
submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
|
||||
ctx_menu_.addMenu(submenu);
|
||||
|
||||
QAction * action = submenu->addAction(tr("Summary as Text"));
|
||||
action->setData(copy_summary_text_);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
|
||||
action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as CSV"));
|
||||
action->setData(copy_summary_csv_);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
|
||||
action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as YAML"));
|
||||
action->setData(copy_summary_yaml_);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
|
||||
submenu->addSeparator();
|
||||
|
||||
submenu->addAction(window()->findChild<QAction *>("actionEditCopyAsFilter"));
|
||||
submenu->addSeparator();
|
||||
|
||||
QActionGroup * copyEntries = DataPrinter::copyActions(this, frameData);
|
||||
submenu->addActions(copyEntries->actions());
|
||||
|
||||
ctx_menu_.addSeparator();
|
||||
ctx_menu_.addMenu(&proto_prefs_menu_);
|
||||
decode_as_ = window()->findChild<QAction *>("actionAnalyzeDecodeAs");
|
||||
ctx_menu_.addAction(decode_as_);
|
||||
// "Print" not ported intentionally
|
||||
action = window()->findChild<QAction *>("actionViewShowPacketInNewWindow");
|
||||
ctx_menu_.addAction(action);
|
||||
|
||||
decode_as_->setData(qVariantFromValue(true));
|
||||
ctx_column_ = columnAt(event->x());
|
||||
|
|
|
@ -113,7 +113,6 @@ private:
|
|||
QMenu colorize_menu_;
|
||||
ProtocolPreferencesMenu proto_prefs_menu_;
|
||||
QAction *decode_as_;
|
||||
QList<QAction *> copy_actions_;
|
||||
int ctx_column_;
|
||||
QByteArray column_state_;
|
||||
OverlayScrollBar *overlay_sb_;
|
||||
|
|
|
@ -191,31 +191,37 @@ QActionGroup * DataPrinter::copyActions(QObject * copyClass, QObject * data)
|
|||
|
||||
// Mostly duplicated from main_window.ui
|
||||
QAction * action = new QAction(tr("Copy Bytes as Hex + ASCII Dump"), dpi);
|
||||
action->setToolTip(tr("Copy packet bytes as a hex and ASCII dump."));
|
||||
action->setProperty("printertype", DataPrinter::DP_HexDump);
|
||||
connect(action, SIGNAL(triggered(bool)), dpi, SLOT(copyIDataBytes(bool)));
|
||||
actions->addAction(action);
|
||||
|
||||
action = new QAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as Hex Dump"), dpi);
|
||||
action->setToolTip(tr("Copy packet bytes as a hex dump."));
|
||||
action->setProperty("printertype", DataPrinter::DP_HexOnly);
|
||||
connect(action, SIGNAL(triggered(bool)), dpi, SLOT(copyIDataBytes(bool)));
|
||||
actions->addAction(action);
|
||||
|
||||
action = new QAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as Printable Text"), dpi);
|
||||
action->setToolTip(tr("Copy only the printable text in the packet."));
|
||||
action->setProperty("printertype", DataPrinter::DP_PrintableText);
|
||||
connect(action, SIGNAL(triggered(bool)), dpi, SLOT(copyIDataBytes(bool)));
|
||||
actions->addAction(action);
|
||||
|
||||
action = new QAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as a Hex Stream"), dpi);
|
||||
action->setToolTip(tr("Copy packet bytes as a stream of hex."));
|
||||
action->setProperty("printertype", DataPrinter::DP_HexStream);
|
||||
connect(action, SIGNAL(triggered(bool)), dpi, SLOT(copyIDataBytes(bool)));
|
||||
actions->addAction(action);
|
||||
|
||||
action = new QAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as Raw Binary"), dpi);
|
||||
action->setToolTip(tr("Copy packet bytes as application/octet-stream MIME data."));
|
||||
action->setProperty("printertype", DataPrinter::DP_Binary);
|
||||
connect(action, SIGNAL(triggered(bool)), dpi, SLOT(copyIDataBytes(bool)));
|
||||
actions->addAction(action);
|
||||
|
||||
action = new QAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as Escaped String"), dpi);
|
||||
action->setToolTip(tr("Copy packet bytes as an escaped string."));
|
||||
action->setProperty("printertype", DataPrinter::DP_EscapedString);
|
||||
connect(action, SIGNAL(triggered(bool)), dpi, SLOT(copyIDataBytes(bool)));
|
||||
actions->addAction(action);
|
||||
|
|
Loading…
Reference in New Issue