⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plugininterface.h

📁 SpellChecker平写检测程序原代码,希望大家喜欢,他非常好用
💻 H
字号:
/*
This file is part of Explorer Plugin for Notepad++
Copyright (C)2006 Jens Lorenz <jens.plugin.npp@gmx.de>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/


#ifndef PLUGININTERFACE_H
#define PLUGININTERFACE_H

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <zmouse.h>
#include <windowsx.h>
#include <commctrl.h>
#include "Scintilla.h"
#include "rcNotepad.h"
#include <TCHAR.H>

#include <vector>
#include <string>

#define _DEBUG_ 1


using namespace std;


/* store name for ini file */
const TCHAR dlgSC[]				= _T("Spell-Checker");
const TCHAR curLang[]			= _T("Current Language");


const TCHAR SPELLCHECKER_INI[]	= _T("\\Explorer.ini");
const TCHAR CONFIG_PATH[]		= _T("\\plugins\\Config");
const TCHAR NPP[]				= _T("\\Notepad++");
const TCHAR NPP_LOCAL_XML[]		= _T("\\doLocalConf.xml");



#ifdef	_DEBUG_
    static TCHAR cDBG[256];

	#define DEBUG(x)            ::MessageBox(NULL, x, _T("DEBUG"), MB_OK)
	#define DEBUG_VAL(x)        itoa(x,cDBG,10);DEBUG(cDBG)
	#define DEBUG_VAL_INFO(x,y) sprintf(cDBG, "%s: %d", x, y);DEBUG(cDBG)
	#define DEBUG_BRACE(x)      ScintillaMsg(SCI_SETSEL, x, x);DEBUG("Brace on position:")
	#define DEBUG_STRING(x,y)   ScintillaMsg(SCI_SETSEL, x, y);DEBUG("Selection:")
#else
	#define DEBUG(x)
	#define DEBUG_VAL(x)
	#define DEBUG_VAL_INFO(x,y)
	#define DEBUG_BRACE(x)
#endif





#define NOTEPADPLUS_USER   (WM_USER + 1000)


	#define WM_GETCURRENTSCINTILLA		(NOTEPADPLUS_USER + 4)
	#define WM_GETCURRENTLANGTYPE		(NOTEPADPLUS_USER + 5)
	#define WM_SETCURRENTLANGTYPE		(NOTEPADPLUS_USER + 6)
	#define WM_NBOPENFILES				(NOTEPADPLUS_USER + 7)
		#define ALL_OPEN_FILES			0
		#define PRIMARY_VIEW			1
		#define SECOND_VIEW				2

	#define WM_GETOPENFILENAMES			(NOTEPADPLUS_USER + 8)
	#define WM_CANCEL_SCINTILLAKEY		(NOTEPADPLUS_USER + 9)
	#define WM_BIND_SCINTILLAKEY		(NOTEPADPLUS_USER + 10)
	#define WM_SCINTILLAKEY_MODIFIED	(NOTEPADPLUS_USER + 11)
	#define WM_MODELESSDIALOG			(NOTEPADPLUS_USER + 12)
		#define MODELESSDIALOGADD		0
		#define MODELESSDIALOGREMOVE	1

	#define WM_NBSESSIONFILES			(NOTEPADPLUS_USER + 13)
	#define WM_GETSESSIONFILES			(NOTEPADPLUS_USER + 14)
	#define WM_SAVESESSION				(NOTEPADPLUS_USER + 15)
	#define WM_SAVECURRENTSESSION		(NOTEPADPLUS_USER + 16)

	struct sessionInfo {
		LPSTR filePathName;
		int sessionFile;
		LPSTR* sessionFileArray;
	};

	#define WM_GETOPENFILENAMES_PRIMARY (NOTEPADPLUS_USER + 17)
	#define WM_GETOPENFILENAMES_SECOND	(NOTEPADPLUS_USER + 18)
	#define WM_GETPARENTOF				(NOTEPADPLUS_USER + 19)
	#define WM_CREATESCINTILLAHANDLE	(NOTEPADPLUS_USER + 20)
	#define WM_DESTROYSCINTILLAHANDLE	(NOTEPADPLUS_USER + 21)
	#define WM_GETNBUSERLANG			(NOTEPADPLUS_USER + 22)
	#define WM_GETCURRENTDOCINDEX		(NOTEPADPLUS_USER + 23)
	#define WM_SETSTATUSBAR				(NOTEPADPLUS_USER + 24)
		#define STATUSBAR_DOC_TYPE		0
		#define STATUSBAR_DOC_SIZE		1
		#define STATUSBAR_CUR_POS		2
		#define STATUSBAR_EOF_FORMAT	3
		#define STATUSBAR_UNICODE_TYPE	4
		#define STATUSBAR_TYPING_MODE	5

	#define WM_ENCODE_SCI				(NOTEPADPLUS_USER + 26)
	#define WM_DECODE_SCI				(NOTEPADPLUS_USER + 27)

	#define WM_ACTIVATE_DOC				(NOTEPADPLUS_USER + 28)
	// WM_ACTIVATE_DOC(int index2Activate, int view)

	#define WM_LAUNCH_FINDINFILESDLG	(NOTEPADPLUS_USER + 29)
	// WM_LAUNCH_FINDINFILESDLG(char * dir2Search, char * filtre)

	#define WM_DMM_SHOW					(NOTEPADPLUS_USER + 30)
	#define WM_DMM_HIDE					(NOTEPADPLUS_USER + 31)
	#define WM_DMM_UPDATEDISPINFO		(NOTEPADPLUS_USER + 32)
	//void WM_DMM_xxx(0, tTbData->hClient)

	#define WM_DMM_REGASDCKDLG			(NOTEPADPLUS_USER + 33)
	//void WM_DMM_REGASDCKDLG(0, &tTbData)

	#define WM_LOADSESSION				(NOTEPADPLUS_USER + 34)
	//void WM_LOADSESSION(0, const LPSTR file name)

	#define WM_DMM_VIEWOTHERTAB			(NOTEPADPLUS_USER + 35)
	//void WM_DMM_VIEWOTHERTAB(0, tTbData->hClient)

	#define WM_RELOADFILE				(NOTEPADPLUS_USER + 36)
	//BOOL WM_RELOADFILE(BOOL withAlert, char *filePathName2Reload)

	#define WM_SWITCHTOFILE				(NOTEPADPLUS_USER + 37)
	//BOOL WM_SWITCHTOFILE(0, char *filePathName2switch)

	#define WM_SAVECURRENTFILE			(NOTEPADPLUS_USER + 38)
	//BOOL WM_SWITCHCURRENTFILE(0, 0)

	#define WM_SAVEALLFILES				(NOTEPADPLUS_USER + 39)
	//BOOL WM_SAVEALLFILES(0, 0)

	#define WM_PIMENU_CHECK				(NOTEPADPLUS_USER + 40)
	//void WM_PIMENU_CHECK(UINT	funcItem[X]._cmdID, TRUE/FALSE)

	#define WM_ADDTOOLBARICON			(NOTEPADPLUS_USER + 41)
	//void WM_ADDTOOLBARICON(UINT funcItem[X]._cmdID, toolbarIcons icon)
		struct toolbarIcons {
			HBITMAP	hToolbarBmp;
			HICON	hToolbarIcon;
		};


// Notification code
#define NPPN_FIRST			1000
	#define NPPN_READY					(NPPN_FIRST + 1)
	//scnNotification->nmhdr.code = NPPN_READY;
	//scnNotification->nmhdr.hwndFrom = hwndNpp;
	//scnNotification->nmhdr.idFrom = 0;

	#define NPPN_TB_MODIFICATION		(NPPN_FIRST + 2)
	//scnNotification->nmhdr.code = NPPN_TB_MODIFICATION;
	//scnNotification->nmhdr.hwndFrom = hwndNpp;
	//scnNotification->nmhdr.idFrom = 0;


#define	RUNCOMMAND_USER    (WM_USER + 3000)
	#define WM_GET_FULLCURRENTPATH		(RUNCOMMAND_USER + FULL_CURRENT_PATH)
	#define WM_GET_CURRENTDIRECTORY		(RUNCOMMAND_USER + CURRENT_DIRECTORY)
	#define WM_GET_FILENAME				(RUNCOMMAND_USER + FILE_NAME)
	#define WM_GET_NAMEPART				(RUNCOMMAND_USER + NAME_PART)
	#define WM_GET_EXTPART				(RUNCOMMAND_USER + EXT_PART)
		#define VAR_NOT_RECOGNIZED		0
		#define FULL_CURRENT_PATH		1
		#define CURRENT_DIRECTORY		2
		#define FILE_NAME				3
		#define NAME_PART				4
		#define EXT_PART				5


#define WM_DOOPEN						(SCINTILLA_USER   + 8)


#define	SC_MAINHANDLE	0
#define SC_SECHANDLE	1


enum LangType {	L_TXT, L_PHP , L_C, L_CPP, L_CS, L_OBJC, L_JAVA, L_RC,\
			    L_HTML, L_XML, L_MAKEFILE, L_PASCAL, L_BATCH, L_INI, L_NFO, L_USER,\
			    L_ASP, L_SQL, L_VB, L_JS, L_CSS, L_PERL, L_PYTHON, L_LUA,\
			    L_TEX, L_FORTRAN, L_BASH, L_FLASH, L_NSIS, L_TCL, L_LISP, L_SCHEME,\
			    L_ASM, L_DIFF, L_PROPS, L_PS, L_RUBY, L_SMALLTALK, L_VHDL, L_KIX, L_AU3,\
			    L_CAML, L_ADA, L_VERILOG, L_MATLAB, L_HASKELL, L_INNO,\
			    // The end of enumated language type, so it should be always at the end
			    L_END};

struct NppData {
	HWND _nppHandle;
	HWND _scintillaMainHandle;
	HWND _scintillaSecondHandle;
};


struct ShortcutKey { 
	bool _isCtrl; 
	bool _isAlt; 
	bool _isShift; 
	unsigned char _key; 
};

const int itemNameMaxLen = 64;
typedef void (__cdecl * PFUNCPLUGINCMD)();
typedef struct {
	char			_itemName[itemNameMaxLen];
	PFUNCPLUGINCMD	_pFunc;
	INT				_cmdID;
	bool			_init2Check;
	ShortcutKey*	_pShKey;
} FuncItem;


#define	MAX_OF_LANG	30

typedef struct {
    char		szLang[MAX_OF_LANG];
} tSCProp;



LRESULT ScintillaMsg(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
void UpdateHSCI(void);
void ScintillaGetText(char *text, int start, int end);
void initMenu(void);

/* menu functions */
void spellCheck(void);
void helpDialog(void);
void howToDlg(void);



/* Extended Window Funcions */
void ClientToScreen(HWND hWnd, RECT* rect);
void ScreenToClient(HWND hWnd, RECT* rect);


// 4 mandatory functions for a plugins
extern "C" __declspec(dllexport) void setInfo(NppData);
extern "C" __declspec(dllexport) const char * getName();
extern "C" __declspec(dllexport) void beNotified(SCNotification *);
extern "C" __declspec(dllexport) void messageProc(UINT Message, WPARAM wParam, LPARAM lParam);
extern "C" __declspec(dllexport) FuncItem * getFuncsArray(int *);


#endif //PLUGININTERFACE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -