Wireshark mailing list archives

Re: plugin_if menu problems


From: Paul Offord <Paul.Offord () advance7 com>
Date: Fri, 27 Nov 2015 10:56:16 +0000

Thanks Roland,

I’ll review your feedback and look a bit further.

For the record, I’m trying to build this for the Qt environment and the source is v2.1.0rc0-615-gf38bd00 from master

Thanks and regards…Paul

From: wireshark-dev-bounces () wireshark org [mailto:wireshark-dev-bounces () wireshark org] On Behalf Of Roland Knall
Sent: 27 November 2015 09:41
To: Developer support list for Wireshark <wireshark-dev () wireshark org>
Subject: Re: [Wireshark-dev] plugin_if menu problems

Hi

I do not have anything standing in front of my callbacks, therefore I would remove WS_DLL_PUBLIC_DEF completely. It is 
not necessary in your case.

Secondly, if you are using the latest git source of Wireshark or the 2.0 source, the correct prototype for the callback 
would be:
void menu_cb(ext_menubar_gui_type gui_type, gpointer gui_data, gpointer user_data _U_)

In which gui_type is defined as GTK or Qt to allow different callback handling for each interface (which is needed if 
you are opening a dialog window for example).

My code for opening the Qt Dialog is as follows:

void GuiHandler::executeDialog(QDialog * dialog)
{
    bool hasGuiApp = (qobject_cast<QApplication*>(QCoreApplication::instance())!=0);

    if ( ! hasGuiApp )
    {
        /* Necessity for creating the correct app context */
        int argc = 1;
        char * argv = (char *) "Test";

        /* In Gtk there is no application context, must be created and displayed */
        QApplication app(argc, &argv);

        dialog->show();

        app.exec();
    }
    else
    {
        /* With Wireshark Qt, an application context already exists, therefore just
         * displaying the dialog */
            dialog->exec();
    }
}


hasGuiApp searches for an existing QApplication object, which may only be instated once for each process, and will 
already exist for WS 2.0, otherwise it creates a QApplication context and opens the dialog. If the application exists, 
it simply executes the dialog.

Hope this helps, regards,
Roland


On Fri, Nov 27, 2015 at 8:27 AM, Paul Offord <Paul.Offord () advance7 com<mailto:Paul.Offord () advance7 com>> wrote:
I can answer part of the problem myself.  Adding #define WS_BUILD_DLL to the head of the file stops the dllimport issue.

Best regards…Paul

From: Paul Offord
Sent: 26 November 2015 22:37
To: 'wireshark-dev () wireshark org<mailto:wireshark-dev () wireshark org>' <wireshark-dev () wireshark 
org<mailto:wireshark-dev () wireshark org>>
Subject: plugin_if menu problems

Hi,

I am experimenting with the plugin_if menu functions.  I’m creating the code in VS2013 and I have two stubborn errors 
that I can’t seem to resolve.  The code is:

#include <plugin_if.h>

extern int proto_tmsvc;

void menu_setup()
{

ext_menu_t * ext_menu, *os_menu = NULL;

ext_menu = ext_menubar_register_menu(
               proto_tmsvc, "TestMenu", TRUE);
ext_menubar_add_entry(ext_menu, "Jump 55",
               "This button causes Wireshark to jump to packet 55", menu_cb, "55");

}

WS_DLL_PUBLIC_DEF void menu_cb(gpointer user_data)
{

}

I get two errors:

IntelliSense: argument of type "void (*)(gpointer user_data)" is incompatible with parameter of type 
"ext_menubar_action_cb" – referring to the menu_cb parameter in the call to ext_menubar_add_entry

IntelliSense: a function declared 'dllimport' may not be defined – referring to the menu_cb function definition

Any advice much appreciated.

Thanks and regards…Paul

______________________________________________________________________

This message contains confidential information and is intended only for the individual named. If you are not the named 
addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if 
you have received this e-mail by mistake and delete this e-mail from your system.

Any views or opinions expressed are solely those of the author and do not necessarily represent those of Advance Seven 
Ltd. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, 
corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept 
liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission.

Advance Seven Ltd. Registered in England & Wales numbered 2373877 at Endeavour House, Coopers End Lane, Stansted, Essex 
CM24 1SJ

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org<mailto:wireshark-dev () wireshark org>>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org<mailto:wireshark-dev-request () wireshark 
org>?subject=unsubscribe


______________________________________________________________________

This message contains confidential information and is intended only for the individual named. If you are not the named 
addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if 
you have received this e-mail by mistake and delete this e-mail from your system.

Any views or opinions expressed are solely those of the author and do not necessarily represent those of Advance Seven 
Ltd. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, 
corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept 
liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission.

Advance Seven Ltd. Registered in England & Wales numbered 2373877 at Endeavour House, Coopers End Lane, Stansted, Essex 
CM24 1SJ

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe

Current thread: