wxWidgets/utils/nplugin/src/npapp.h

92 lines
2.6 KiB
C++

/*
* File: NPApp.h
* Purpose: wxPluginApp declaration
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
#ifndef __PLUGINAPP__
#define __PLUGINAPP__
#include "wx/wx.h"
#include "npapi.h"
class wxPluginFrame;
// Data passed to OnNewInstance
class wxPluginData
{
public:
NPP m_instance;
NPMIMEType m_type;
NPWindow* m_window;
int m_mode;
int m_argc;
wxString* m_argn;
wxString* m_argv;
};
class WXDLLEXPORT wxPluginApp: public wxApp
{
DECLARE_ABSTRACT_CLASS(wxPluginApp)
public:
wxPluginApp(void);
virtual ~wxPluginApp(void);
// Find a frame given a NP instance
wxPluginFrame *FindFrame(NPP instance);
// Add a frame
void AddFrame(wxPluginFrame *frame);
// Remove a frame
void RemoveFrame(wxPluginFrame *frame);
// Set attribute/values for the last instance
void SetAttributeValues(const int n, char *argn[], char *argv[]);
///////////////////////////////////////////////////////////////
// Higher-level API than NP API
virtual wxPluginFrame *OnNewInstance(const wxPluginData& data) = 0;
///////////////////////////////////////////////////////////////
// Netscape Plugin API calls routed via wxPluginApp
virtual NPError NPP_Destroy(NPP instance, NPSavedData** save);
virtual NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason);
// virtual jref NPP_GetJavaClass(void);
virtual NPError NPP_Initialize(void);
virtual NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode,
int16 argc, char* argn[], char* argv[], NPSavedData* saved);
virtual NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream,
NPBool seekable, uint16* stype);
virtual void NPP_Print(NPP instance, NPPrint* platformPrint);
virtual NPError NPP_SetWindow(NPP instance, NPWindow* window);
virtual void NPP_Shutdown(void);
virtual void NPP_StreamAsFile(NPP instance, NPStream* stream, const char *fname);
/*
virtual void NPP_URLNotify(NPP instance, const char* url, NPReason reason,
void* notifyData);
*/
virtual int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len,
void* buf);
virtual int32 NPP_WriteReady(NPP instance, NPStream* stream);
protected:
// List of plugin frames
wxList m_frames;
// Temporary NPP_New arguments so we can wait until NPP_SetWindow is called
// before creating a frame
wxPluginData m_data;
};
wxPluginApp *wxGetPluginApp(void);
#endif