Back to index

lightning-sunbird  0.9+nobinonly
plugin.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1998
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either the GNU General Public License Version 2 or later (the "GPL"), or
00026  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 #ifndef __PLUGIN_H__
00039 #define __PLUGIN_H__
00040 
00041 #include "plugbase.h"
00042 
00043 #define BST_UNCHECKED     0
00044 #define BST_CHECKED       1
00045 #define BST_INDETERMINATE 2
00046 
00047 typedef enum
00048 {
00049   sg_manual = 1,
00050   sg_auto
00051 } ShowGUI;
00052 
00053 typedef enum
00054 {
00055   gp_mode = 1,
00056   gp_logfile,
00057   gp_scriptfile,
00058   gp_tofile,
00059   gp_toframe,
00060   gp_flush,
00061   gp_rememberlast,
00062   gp_standalone
00063 }GUIPrefs;
00064 
00065 class CPlugin : public CPluginBase
00066 {
00067 private:
00068   HMODULE m_hInst;
00069   HWND m_hWnd;
00070   HWND m_hWndParent;
00071   HWND m_hWndManual;
00072   HWND m_hWndAuto;
00073   BOOL m_bPluginReady;
00074 
00075 //
00076 // some GUI data
00077 //
00078 public:
00079   HWND m_hWndLastEditFocus;
00080   int m_iWidth;
00081   int m_iHeight;
00082 
00083 // GUI preferences
00084   ShowGUI m_Pref_ShowGUI;
00085   char m_Pref_szLogFile[256];
00086   char m_Pref_szScriptFile[256];
00087   BOOL m_Pref_bToFile;
00088   BOOL m_Pref_bToFrame;
00089   BOOL m_Pref_bFlushNow;
00090   BOOL m_Pref_bRememberLastCall;
00091   BOOL m_Pref_bStandAlone;
00092 
00093 // public interface
00094 public:
00095   CPlugin(NPP pNPInstance, USHORT wMode);
00096   ~CPlugin();
00097 
00098   BOOL initEmbed(DWORD dwInitData);
00099   BOOL initFull(DWORD dwInitData);
00100   void shutEmbed();
00101   void shutFull();
00102   BOOL isInitialized();
00103   void getModulePath(LPSTR szPath, int iSize);
00104   int messageBox(LPSTR szMessage, LPSTR szTitle, UINT uStyle);
00105   void getLogFileName(LPSTR szLogFileName, int iSize);
00106   BOOL initStandAlone(); // create separate native window
00107   void shutStandAlone(); // destroy separate native window
00108   BOOL isStandAlone(); // is our GUI is in a separate native window
00109   void outputToNativeWindow(LPSTR szString); // used to output log in StandAlone mode
00110 
00111   ULONG makeNPNCall(NPAPI_Action = action_invalid, 
00112                     ULONG dw1 = 0L, ULONG dw2 = 0L, 
00113                     ULONG dw3 = 0L, ULONG dw4 = 0L, 
00114                     ULONG dw5 = 0L, ULONG dw6 = 0L, 
00115                     ULONG dw7 = 0L);
00116 
00117   //
00118   // Windows specific methods
00119   //
00120   const HMODULE getInstance();
00121   const HWND getWindow();
00122   const HWND getParent();
00123 
00124   // tester interface (GUI stuff)
00125   BOOL createTester();
00126   void destroyTester();
00127   void showGUI(ShowGUI sg);
00128 
00129   // utilities
00130   void restorePreferences();
00131   void savePreferences();
00132   void updatePrefs(GUIPrefs prefs, int iValue, char * szValue = NULL);
00133 
00134   // Window message handlers
00135   void onInit(HWND hWnd, HWND hWndManual, HWND hWndAuto);
00136   void onDestroy();
00137   void onLogToFile(BOOL bLofToFile);
00138 };
00139 
00140 #endif // __PLUGIN_H__