📄 parameters.h.svn-base
字号:
//this file is part of notepad++
//Copyright (C)2003 Don HO ( donho@altern.org )
//
//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., 675 Mass Ave, Cambridge, MA 02139, USA.
#ifndef PARAMETERS_H
#define PARAMETERS_H
#include <string>
#include "tinyxml.h"
//#include "ScintillaEditView.h"
#include "Scintilla.h"
#include "ScintillaRef.h"
#include "ToolBar.h"
#include "UserDefineLangReference.h"
#include "colors.h"
#include "shortcut.h"
#include "ContextMenu.h"
//#include "Buffer.h"
using namespace std;
const bool POS_VERTICAL = true;
const bool POS_HORIZOTAL = false;
const int UDD_SHOW = 1; // 0000 0001
const int UDD_DOCKED = 2; // 0000 0010
// 0 : 0000 0000 hide & undocked
// 1 : 0000 0001 show & undocked
// 2 : 0000 0010 hide & docked
// 3 : 0000 0011 show & docked
const int TAB_DRAWTOPBAR = 1; // 0000 0001
const int TAB_DRAWINACTIVETAB = 2; // 0000 0010
const int TAB_DRAGNDROP = 4; // 0000 0100
const int TAB_REDUCE = 8; // 0000 1000
const int TAB_CLOSEBUTTON = 16; // 0001 0000
const int TAB_DBCLK2CLOSE = 32; // 0010 0000
enum formatType {WIN_FORMAT, MAC_FORMAT, UNIX_FORMAT};
enum UniMode {uni8Bit=0, uniUTF8=1, uni16BE=2, uni16LE=3, uniCookie=4, uniEnd};
enum ChangeDetect {cdDisabled=0, cdEnabled=1, cdAutoUpdate=2};
enum BackupFeature {bak_none = 0, bak_simple = 1, bak_verbose = 2};
const int LANG_INDEX_INSTR = 0;
const int LANG_INDEX_INSTR2 = 1;
const int LANG_INDEX_TYPE = 2;
const int LANG_INDEX_TYPE2 = 3;
const int LANG_INDEX_TYPE3 = 4;
const int LANG_INDEX_TYPE4 = 5;
const int LANG_INDEX_TYPE5 = 6;
const bool SCIV_PRIMARY = false;
const bool SCIV_SECOND = true;
const char fontSizeStrs[][3] = {"", "8", "9", "10", "11", "12", "14", "16", "18", "20", "22", "24", "26", "28"};
#define LINEDRAW_FONT "LINEDRAW.TTF"
const char localConfFile[] = "doLocalConf.xml";
void cutString(const char *str2cut, vector<string> & patternVect);
/*
struct HeaderLineState {
HeaderLineState() : _headerLineNumber(0), _isCollapsed(false){};
HeaderLineState(int lineNumber, bool isFoldUp) : _headerLineNumber(lineNumber), _isCollapsed(isFoldUp){};
int _headerLineNumber;
bool _isCollapsed;
};
*/
struct Position
{
int _firstVisibleLine;
int _startPos;
int _endPos;
int _xOffset;
};
struct sessionFileInfo : public Position {
string _fileName;
sessionFileInfo(const char *fn) {
if (fn) _fileName = fn;
};
sessionFileInfo(const char *fn, Position pos) : Position(pos) {
if (fn) _fileName = fn;
};
sessionFileInfo(string fn) : _fileName(fn){};
sessionFileInfo(string fn, Position pos) : Position(pos), _fileName(fn){};
vector<size_t> marks;
};
struct Session {
int nbFiles() const {return _files.size();};
size_t _actifIndex;
vector<sessionFileInfo> _files;
};
struct FloatingWindowInfo {
int _cont;
RECT _pos;
FloatingWindowInfo(int cont, int x, int y, int w, int h) : _cont(cont) {
_pos.left = x;
_pos.top = y;
_pos.right = w;
_pos.bottom = h;
};
};
struct PlugingDlgDockingInfo {
char _name[MAX_PATH];
int _internalID;
int _currContainer;
int _prevContainer;
bool _isVisible;
PlugingDlgDockingInfo(const char *pluginName, int id, int curr, int prev, bool isVis) : _internalID(id), _currContainer(curr), _prevContainer(prev), _isVisible(isVis){
strcpy(_name, pluginName);
};
friend inline const bool operator==(const PlugingDlgDockingInfo & a, const PlugingDlgDockingInfo & b) {
if ((strcmp(a._name, b._name) == 0) && (a._internalID == b._internalID))
return true;
else
return false;
};
};
struct ContainerTabInfo {
int _cont;
int _activeTab;
ContainerTabInfo(int cont, int activeTab) : _cont(cont), _activeTab(activeTab) {};
};
struct DockingManagerData {
int _leftWidth;
int _rightWidth;
int _topHeight;
int _bottomHight;
DockingManagerData() : _leftWidth(200), _rightWidth(200), _topHeight(200), _bottomHight(200) {};
vector<FloatingWindowInfo> _flaotingWindowInfo;
vector<PlugingDlgDockingInfo> _pluginDockInfo;
vector<ContainerTabInfo> _containerTabInfo;
RECT * getFloatingRCFrom(int floatCont) {
for (size_t i = 0 ; i < _flaotingWindowInfo.size() ; i++)
{
if (_flaotingWindowInfo[i]._cont == floatCont)
return &(_flaotingWindowInfo[i]._pos);
}
return NULL;
}
};
static int strVal(const char *str, int base) {
if (!str) return -1;
if (!str[0]) return 0;
char *finStr;
int result = strtol(str, &finStr, base);
if (*finStr != '\0')
return -1;
return result;
};
static int decStrVal(const char *str) {
return strVal(str, 10);
};
static int hexStrVal(const char *str) {
return strVal(str, 16);
};
static int getKwClassFromName(const char *str) {
if (!strcmp("instre1", str)) return LANG_INDEX_INSTR;
if (!strcmp("instre2", str)) return LANG_INDEX_INSTR2;
if (!strcmp("type1", str)) return LANG_INDEX_TYPE;
if (!strcmp("type2", str)) return LANG_INDEX_TYPE2;
if (!strcmp("type3", str)) return LANG_INDEX_TYPE3;
if (!strcmp("type4", str)) return LANG_INDEX_TYPE4;
if (!strcmp("type5", str)) return LANG_INDEX_TYPE5;
return -1;
};
const int FONTSTYLE_BOLD = 1;
const int FONTSTYLE_ITALIC = 2;
const int FONTSTYLE_UNDERLINE = 4;
struct Style
{
int _styleID;
const char *_styleDesc;
COLORREF _fgColor;
COLORREF _bgColor;
const char *_fontName;
int _fontStyle;
int _fontSize;
int _keywordClass;
string *_keywords;
Style():_styleID(-1), _fgColor(COLORREF(-1)), _bgColor(COLORREF(-1)), _fontName(NULL), _fontStyle(-1), _fontSize(-1), _keywordClass(-1), _keywords(NULL){};
~Style(){
if (_keywords)
delete _keywords;
};
Style(const Style & style)
{
_styleID = style._styleID;
_styleDesc = style._styleDesc;
_fgColor = style._fgColor;
_bgColor = style._bgColor;
_fontName = style._fontName;
_fontSize = style._fontSize;
_fontStyle = style._fontStyle;
_keywordClass = style._keywordClass;
if (style._keywords)
_keywords = new string(*(style._keywords));
else
_keywords = NULL;
};
Style & operator=(const Style & style) {
if (this != &style)
{
this->_styleID = style._styleID;
this->_styleDesc = style._styleDesc;
this->_fgColor = style._fgColor;
this->_bgColor = style._bgColor;
this->_fontName = style._fontName;
this->_fontSize = style._fontSize;
this->_fontStyle = style._fontStyle;
this->_keywordClass = style._keywordClass;
if (!(this->_keywords) && style._keywords)
this->_keywords = new string(*(style._keywords));
else if (this->_keywords && style._keywords)
this->_keywords->assign(*(style._keywords));
else if (this->_keywords && !(style._keywords))
{
delete (this->_keywords);
this->_keywords = NULL;
}
}
return *this;
};
void setKeywords(const char *str) {
if (!_keywords)
_keywords = new string(str);
else
*_keywords = str;
};
};
const int MAX_STYLE = 30;
struct StyleArray
{
public:
StyleArray() : _nbStyler(0){};
StyleArray & operator=(const StyleArray & sa)
{
if (this != &sa)
{
this->_nbStyler = sa._nbStyler;
for (int i = 0 ; i < _nbStyler ; i++)
{
this->_styleArray[i] = sa._styleArray[i];
}
}
return *this;
}
int getNbStyler() const {return _nbStyler;};
void setNbStyler(int nb) {_nbStyler = nb;};
Style & getStyler(int index) {return _styleArray[index];};
bool hasEnoughSpace() {return (_nbStyler < MAX_STYLE);};
void addStyler(int styleID, TiXmlNode *styleNode);
void addStyler(int styleID, char *styleName) {
_styleArray[_nbStyler]._styleID = styleID;
_styleArray[_nbStyler]._styleDesc = styleName;
_nbStyler++;
};
int getStylerIndexByID(int id) {
for (int i = 0 ; i < _nbStyler ; i++)
if (_styleArray[i]._styleID == id)
return i;
return -1;
};
int getStylerIndexByName(const char *name) const {
if (!name)
return -1;
for (int i = 0 ; i < _nbStyler ; i++)
if (!strcmp(_styleArray[i]._styleDesc, name))
return i;
return -1;
};
protected:
Style _styleArray[MAX_STYLE];
int _nbStyler;
};
struct LexerStyler : public StyleArray
{
public :
LexerStyler():StyleArray(){};
LexerStyler & operator=(const LexerStyler & ls)
{
if (this != &ls)
{
*((StyleArray *)this) = ls;
strcpy(this->_lexerName, ls._lexerName);
strcpy(this->_lexerDesc, ls._lexerDesc);
strcpy(this->_lexerUserExt, ls._lexerUserExt);
}
return *this;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -