Add "Decode As" to the packet list and protocol tree context menus.
Automatically add a new item if "Decode As" is triggered from the context menus. svn path=/trunk/; revision=53915
This commit is contained in:
parent
b007fccec3
commit
1c9b5dfad3
|
@ -54,7 +54,7 @@ const char *default_int_selector_ = "0"; // Arbitrary
|
|||
const char *default_str_selector_ = "foo"; // Arbitrary
|
||||
const int max_name_em_width_ = 10; // Some table names are a tad long.
|
||||
|
||||
DecodeAsDialog::DecodeAsDialog(QWidget *parent, capture_file *cf) :
|
||||
DecodeAsDialog::DecodeAsDialog(QWidget *parent, capture_file *cf, bool create_new) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::DecodeAsDialog),
|
||||
cap_file_(cf),
|
||||
|
@ -75,6 +75,8 @@ DecodeAsDialog::DecodeAsDialog(QWidget *parent, capture_file *cf) :
|
|||
|
||||
connect(wsApp, SIGNAL(preferencesChanged()), this, SLOT(fillTable()));
|
||||
fillTable();
|
||||
|
||||
if (create_new) on_newToolButton_clicked();
|
||||
}
|
||||
|
||||
DecodeAsDialog::~DecodeAsDialog()
|
||||
|
|
|
@ -44,7 +44,7 @@ class DecodeAsDialog : public QDialog
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit DecodeAsDialog(QWidget *parent = 0, capture_file *cf = NULL);
|
||||
explicit DecodeAsDialog(QWidget *parent = 0, capture_file *cf = NULL, bool create_new = false);
|
||||
~DecodeAsDialog();
|
||||
|
||||
public slots:
|
||||
|
|
|
@ -886,8 +886,6 @@ void MainWindow::setMenusForSelectedPacket()
|
|||
// frame_selected ? is_udp : FALSE);
|
||||
// set_menu_sensitivity(ui_manager_packet_list_menu, "/PacketListMenuPopup/ColorizeConversation/PN-CBA",
|
||||
// frame_selected ? (cf->edt->pi.profinet_type != 0 && cf->edt->pi.profinet_type < 10) : FALSE);
|
||||
// set_menu_sensitivity(ui_manager_packet_list_menu, "/PacketListMenuPopup/DecodeAs",
|
||||
// frame_selected && decode_as_ok());
|
||||
|
||||
// if (properties) {
|
||||
// prev_abbrev = g_object_get_data(G_OBJECT(ui_manager_packet_list_menu), "menu_abbrev");
|
||||
|
@ -903,8 +901,6 @@ void MainWindow::setMenusForSelectedPacket()
|
|||
|
||||
// set_menu_sensitivity(ui_manager_packet_list_menu, "/PacketListMenuPopup/ProtocolPreferences",
|
||||
// properties);
|
||||
// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/DecodeAs",
|
||||
// frame_selected && decode_as_ok());
|
||||
// set_menu_sensitivity(ui_manager_packet_list_menu, "/PacketListMenuPopup/Copy",
|
||||
// frame_selected);
|
||||
// set_menu_sensitivity(ui_manager_packet_list_menu, "/PacketListMenuPopup/ApplyAsFilter",
|
||||
|
@ -920,8 +916,6 @@ void MainWindow::setMenusForSelectedPacket()
|
|||
// frame_selected ? is_udp : FALSE);
|
||||
// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/AnalyzeMenu/FollowSSLStream",
|
||||
// frame_selected ? is_ssl : FALSE);
|
||||
// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/AnalyzeMenu/DecodeAs",
|
||||
// frame_selected && decode_as_ok());
|
||||
// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/ViewMenu/NameResolution/ResolveName",
|
||||
// frame_selected && (gbl_resolv_flags.mac_name || gbl_resolv_flags.network_name ||
|
||||
// gbl_resolv_flags.transport_name || gbl_resolv_flags.concurrent_dns));
|
||||
|
@ -1713,7 +1707,13 @@ void MainWindow::on_actionAnalyzePAFOrNotSelected_triggered()
|
|||
|
||||
void MainWindow::on_actionAnalyzeDecodeAs_triggered()
|
||||
{
|
||||
DecodeAsDialog da_dialog(this, cap_file_);
|
||||
QAction *da_action = qobject_cast<QAction*>(sender());
|
||||
bool create_new = false;
|
||||
if (da_action && da_action->data().toBool() == true) {
|
||||
create_new = true;
|
||||
}
|
||||
|
||||
DecodeAsDialog da_dialog(this, cap_file_, create_new);
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
&da_dialog, SLOT(setCaptureFile(capture_file*)));
|
||||
da_dialog.exec();
|
||||
|
|
|
@ -224,6 +224,7 @@ PacketList::PacketList(QWidget *parent) :
|
|||
proto_tree_(NULL),
|
||||
byte_view_tab_(NULL),
|
||||
cap_file_(NULL),
|
||||
decode_as_(NULL),
|
||||
ctx_column_(-1)
|
||||
{
|
||||
QMenu *submenu, *subsubmenu;
|
||||
|
@ -372,7 +373,8 @@ PacketList::PacketList(QWidget *parent) :
|
|||
// " <menuitem name='BinaryStream' action='/Copy/Bytes/BinaryStream'/>\n"
|
||||
ctx_menu_.addSeparator();
|
||||
// " <menuitem name='ProtocolPreferences' action='/ProtocolPreferences'/>\n"
|
||||
// " <menuitem name='DecodeAs' action='/DecodeAs'/>\n"
|
||||
decode_as_ = window()->findChild<QAction *>("actionAnalyzeDecodeAs");
|
||||
ctx_menu_.addAction(decode_as_);
|
||||
// " <menuitem name='Print' action='/Print'/>\n"
|
||||
// " <menuitem name='ShowPacketinNewWindow' action='/ShowPacketinNewWindow'/>\n"
|
||||
|
||||
|
@ -497,9 +499,11 @@ void PacketList::contextMenuEvent(QContextMenuEvent *event)
|
|||
}
|
||||
}
|
||||
}
|
||||
decode_as_->setData(qVariantFromValue(true));
|
||||
ctx_column_ = columnAt(event->x());
|
||||
ctx_menu_.exec(event->globalPos());
|
||||
ctx_column_ = -1;
|
||||
decode_as_->setData(QVariant());
|
||||
foreach (act, filter_actions_) {
|
||||
act->setEnabled(fa_enabled);
|
||||
}
|
||||
|
|
|
@ -67,6 +67,7 @@ private:
|
|||
QMenu ctx_menu_;
|
||||
QList<QMenu *> submenus_;
|
||||
QList<QAction *> filter_actions_;
|
||||
QAction *decode_as_;
|
||||
int ctx_column_;
|
||||
RelatedPacketDelegate related_packet_delegate_;
|
||||
|
||||
|
|
|
@ -157,7 +157,8 @@ proto_tree_draw_node(proto_node *node, gpointer data)
|
|||
}
|
||||
|
||||
ProtoTree::ProtoTree(QWidget *parent) :
|
||||
QTreeWidget(parent)
|
||||
QTreeWidget(parent),
|
||||
decode_as_(NULL)
|
||||
{
|
||||
QMenu *submenu, *subsubmenu;
|
||||
|
||||
|
@ -232,7 +233,8 @@ ProtoTree::ProtoTree(QWidget *parent) :
|
|||
// " <menuitem name='ProtocolHelp' action='/ProtocolHelp'/>\n"
|
||||
// " <menuitem name='ProtocolPreferences' action='/ProtocolPreferences'/>\n"
|
||||
ctx_menu_.addSeparator();
|
||||
// " <menuitem name='DecodeAs' action='/DecodeAs'/>\n"
|
||||
decode_as_ = window()->findChild<QAction *>("actionAnalyzeDecodeAs");
|
||||
ctx_menu_.addAction(decode_as_);
|
||||
// " <menuitem name='DisableProtocol' action='/DisableProtocol'/>\n"
|
||||
// " <menuitem name='ResolveName' action='/ResolveName'/>\n"
|
||||
// " <menuitem name='GotoCorrespondingPacket' action='/GotoCorrespondingPacket'/>\n"
|
||||
|
@ -252,7 +254,9 @@ void ProtoTree::clear() {
|
|||
|
||||
void ProtoTree::contextMenuEvent(QContextMenuEvent *event)
|
||||
{
|
||||
decode_as_->setData(qVariantFromValue(true));
|
||||
ctx_menu_.exec(event->globalPos());
|
||||
decode_as_->setData(QVariant());
|
||||
}
|
||||
|
||||
void ProtoTree::fillProtocolTree(proto_tree *protocol_tree) {
|
||||
|
|
|
@ -47,6 +47,7 @@ protected:
|
|||
|
||||
private:
|
||||
QMenu ctx_menu_;
|
||||
QAction *decode_as_;
|
||||
|
||||
signals:
|
||||
void protoItemSelected(QString &);
|
||||
|
|
Loading…
Reference in New Issue