mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-10-29 02:23:52 +01:00
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1242 f5eea248-9336-0410-98b8-ebc06183d4e3
191 lines
6.7 KiB
C++
191 lines
6.7 KiB
C++
// This file is part of Notepad++ project
|
|
// Copyright (C)2003 Don HO <don.h@free.fr>
|
|
//
|
|
// 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.
|
|
//
|
|
// Note that the GPL places important restrictions on "derived works", yet
|
|
// it does not provide a detailed definition of that term. To avoid
|
|
// misunderstandings, we consider an application to constitute a
|
|
// "derivative work" for the purpose of this license if it does any of the
|
|
// following:
|
|
// 1. Integrates source code from Notepad++.
|
|
// 2. Integrates/includes/aggregates Notepad++ into a proprietary executable
|
|
// installer, such as those produced by InstallShield.
|
|
// 3. Links to a library or executes a program that does any of the above.
|
|
//
|
|
// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
|
|
#ifndef M30_IDE_COMMUN_H
|
|
#define M30_IDE_COMMUN_H
|
|
|
|
const bool dirUp = true;
|
|
const bool dirDown = false;
|
|
|
|
#define NPP_CP_WIN_1252 1252
|
|
#define NPP_CP_DOS_437 437
|
|
#define NPP_CP_BIG5 950
|
|
|
|
#define LINKTRIGGERED WM_USER+555
|
|
|
|
#define BCKGRD_COLOR (RGB(255,102,102))
|
|
#define TXT_COLOR (RGB(255,255,255))
|
|
|
|
#ifdef UNICODE
|
|
#define NppMainEntry wWinMain
|
|
#define generic_strtol wcstol
|
|
#define generic_strncpy wcsncpy
|
|
#define generic_stricmp wcsicmp
|
|
#define generic_strncmp wcsncmp
|
|
#define generic_strnicmp wcsnicmp
|
|
#define generic_strncat wcsncat
|
|
#define generic_strchr wcschr
|
|
#define generic_atoi _wtoi
|
|
#define generic_itoa _itow
|
|
#define generic_atof _wtof
|
|
#define generic_strtok wcstok
|
|
#define generic_strftime wcsftime
|
|
#define generic_fprintf fwprintf
|
|
#define generic_sprintf swprintf
|
|
#define generic_sscanf swscanf
|
|
#define generic_fopen _wfopen
|
|
#define generic_fgets fgetws
|
|
#define generic_stat _wstat
|
|
#define generic_sprintf swprintf
|
|
#define COPYDATA_FILENAMES COPYDATA_FILENAMESW
|
|
#else
|
|
#define NppMainEntry WinMain
|
|
#define generic_strtol strtol
|
|
#define generic_strncpy strncpy
|
|
#define generic_stricmp stricmp
|
|
#define generic_strncmp strncmp
|
|
#define generic_strnicmp strnicmp
|
|
#define generic_strncat strncat
|
|
#define generic_strchr strchr
|
|
#define generic_atoi atoi
|
|
#define generic_itoa itoa
|
|
#define generic_atof atof
|
|
#define generic_strtok strtok
|
|
#define generic_strftime strftime
|
|
#define generic_fprintf fprintf
|
|
#define generic_sprintf sprintf
|
|
#define generic_sscanf sscanf
|
|
#define generic_fopen fopen
|
|
#define generic_fgets fgets
|
|
#define generic_stat _stat
|
|
#define generic_sprintf sprintf
|
|
#define COPYDATA_FILENAMES COPYDATA_FILENAMESA
|
|
#endif
|
|
|
|
typedef std::basic_string<TCHAR> generic_string;
|
|
|
|
void folderBrowser(HWND parent, int outputCtrlID, const TCHAR *defaultStr = NULL);
|
|
generic_string getFolderName(HWND parent, const TCHAR *defaultDir = NULL);
|
|
|
|
void printInt(int int2print);
|
|
void printStr(const TCHAR *str2print);
|
|
|
|
void writeLog(const TCHAR *logFileName, const char *log2write);
|
|
int filter(unsigned int code, struct _EXCEPTION_POINTERS *ep);
|
|
generic_string purgeMenuItemString(const TCHAR * menuItemStr, bool keepAmpersand = false);
|
|
std::vector<generic_string> tokenizeString(const generic_string & tokenString, const char delim);
|
|
|
|
void ClientRectToScreenRect(HWND hWnd, RECT* rect);
|
|
void ScreenRectToClientRect(HWND hWnd, RECT* rect);
|
|
|
|
std::wstring string2wstring(const std::string & rString, UINT codepage);
|
|
std::string wstring2string(const std::wstring & rwString, UINT codepage);
|
|
bool isInList(const TCHAR *token, const TCHAR *list);
|
|
generic_string BuildMenuFileName(int filenameLen, unsigned int pos, const generic_string &filename);
|
|
|
|
std::string getFileContent(const TCHAR *file2read);
|
|
void writeFileContent(const TCHAR *file2write, const char *content2write);
|
|
|
|
class WcharMbcsConvertor {
|
|
public:
|
|
static WcharMbcsConvertor * getInstance() {return _pSelf;};
|
|
static void destroyInstance() {delete _pSelf;};
|
|
|
|
const wchar_t * char2wchar(const char *mbStr, UINT codepage, int lenIn=-1, int *pLenOut=NULL, int *pBytesNotProcessed=NULL);
|
|
const wchar_t * char2wchar(const char *mbcs2Convert, UINT codepage, int *mstart, int *mend);
|
|
const char * wchar2char(const wchar_t *wcStr, UINT codepage, int lenIn=-1, int *pLenOut=NULL);
|
|
const char * wchar2char(const wchar_t *wcStr, UINT codepage, long *mstart, long *mend);
|
|
|
|
const char * encode(UINT fromCodepage, UINT toCodepage, const char *txt2Encode, int lenIn=-1, int *pLenOut=NULL, int *pBytesNotProcessed=NULL) {
|
|
int lenWc = 0;
|
|
const wchar_t * strW = char2wchar(txt2Encode, fromCodepage, lenIn, &lenWc, pBytesNotProcessed);
|
|
return wchar2char(strW, toCodepage, lenWc, pLenOut);
|
|
};
|
|
|
|
protected:
|
|
WcharMbcsConvertor() {
|
|
};
|
|
~WcharMbcsConvertor() {
|
|
};
|
|
static WcharMbcsConvertor * _pSelf;
|
|
|
|
template <class T>
|
|
class StringBuffer {
|
|
public:
|
|
StringBuffer() : _str(0), _allocLen(0) { }
|
|
~StringBuffer() { if(_allocLen) delete [] _str; }
|
|
|
|
void sizeTo(size_t size) {
|
|
if(_allocLen < size)
|
|
{
|
|
if(_allocLen) delete[] _str;
|
|
_allocLen = max(size, initSize);
|
|
_str = new T[_allocLen];
|
|
}
|
|
}
|
|
void empty() {
|
|
static T nullStr = 0; // routines may return an empty string, with null terminator, without allocating memory; a pointer to this null character will be returned in that case
|
|
if(_allocLen == 0)
|
|
_str = &nullStr;
|
|
else
|
|
_str[0] = 0;
|
|
}
|
|
|
|
operator T*() { return _str; }
|
|
|
|
protected:
|
|
static const int initSize = 1024;
|
|
size_t _allocLen;
|
|
T* _str;
|
|
};
|
|
|
|
StringBuffer<char> _multiByteStr;
|
|
StringBuffer<wchar_t> _wideCharStr;
|
|
|
|
private:
|
|
// Since there's no public ctor, we need to void the default assignment operator.
|
|
WcharMbcsConvertor& operator= (const WcharMbcsConvertor&);
|
|
|
|
};
|
|
|
|
#define MACRO_RECORDING_IN_PROGRESS 1
|
|
#define MACRO_RECORDING_HAS_STOPPED 2
|
|
|
|
#if _MSC_VER > 1400 // MS Compiler > VS 2005
|
|
#define REBARBAND_SIZE REBARBANDINFO_V3_SIZE
|
|
#else
|
|
#define REBARBAND_SIZE sizeof(REBARBANDINFO)
|
|
#endif
|
|
|
|
generic_string PathRemoveFileSpec(generic_string & path);
|
|
generic_string PathAppend(generic_string &strDest, const generic_string & str2append);
|
|
COLORREF getCtrlBgColor(HWND hWnd);
|
|
generic_string stringToUpper(generic_string strToConvert);
|
|
|
|
#endif //M30_IDE_COMMUN_H
|