From d65ae64b9ae346fb46972035109e7c898838d37d Mon Sep 17 00:00:00 2001 From: chen <2863222635@qq.com> Date: Sun, 3 Dec 2023 23:30:23 +0800 Subject: [PATCH] d'f --- .../src/ScintillaComponent/DocTabView.cpp | 26 +++++++------- .../src/ScintillaComponent/DocTabView.h | 35 ++++++++++++------- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/PowerEditor/src/ScintillaComponent/DocTabView.cpp b/src/PowerEditor/src/ScintillaComponent/DocTabView.cpp index 5fbc09e..371460e 100644 --- a/src/PowerEditor/src/ScintillaComponent/DocTabView.cpp +++ b/src/PowerEditor/src/ScintillaComponent/DocTabView.cpp @@ -25,7 +25,7 @@ bool DocTabView::_hideTabBarStatus = false; - +//向标签视图添加新的缓冲区,首先检查缓冲区是否有效(不是无效的缓冲区),然后检查是否已经存在相同的缓冲区。如果缓冲区有效且尚未存在,则将其添加到标签页视图中,并更新父窗口的大小。 void DocTabView::addBuffer(BufferID buffer) { if (buffer == BUFFER_INVALID) //valid only @@ -48,25 +48,25 @@ void DocTabView::addBuffer(BufferID buffer) ::SendMessage(_hParent, WM_SIZE, 0, 0); } - +//关闭指定的缓冲区,到要关闭的缓冲区的索引,然后从标签页视图中删除它,并通知父窗口进行调整。 void DocTabView::closeBuffer(BufferID buffer) { int indexToClose = getIndexByBuffer(buffer); deletItemAt((size_t)indexToClose); ::SendMessage(_hParent, WM_SIZE, 0, 0); } - +//为特定的标签设置颜色。根据提供的缓冲区ID,设置该缓冲区在标签页中的颜色。 void DocTabView::setIndividualTabColour(BufferID bufferId, int colorId) { bufferId->setDocColorId(colorId); } - +//获取特定标签的颜色,根据提供的标签索引,返回该标签的颜色。 int DocTabView::getIndividualTabColour(int tabIndex) { BufferID bufferId = getBufferByIndex(tabIndex); return bufferId->getDocColorId(); } - +//激活特定的缓冲区,通过缓冲区的ID找到其索引位置并尝试激活该缓冲区,如果成功则返回true,否则返回false。 bool DocTabView::activateBuffer(BufferID buffer) { int indexToActivate = getIndexByBuffer(buffer); @@ -77,14 +77,14 @@ bool DocTabView::activateBuffer(BufferID buffer) return true; } - +//获取当前激活的缓冲区。 BufferID DocTabView::activeBuffer() { int index = getCurrentTabIndex(); return getBufferByIndex(index); } - +//遍历所有标签页,根据文件名查找匹配的缓冲区,找到则返回其ID,否则返回BUFFER_INVALID。 BufferID DocTabView::findBufferByName(const TCHAR * fullfilename) //-1 if not found, something else otherwise { TCITEM tie{}; @@ -103,7 +103,7 @@ BufferID DocTabView::findBufferByName(const TCHAR * fullfilename) //-1 if not fo return BUFFER_INVALID; } - +//通过缓冲区ID找到其在标签中的索引位置,如果不存在则返回 - 1。 int DocTabView::getIndexByBuffer(BufferID id) { TCITEM tie{}; @@ -118,7 +118,7 @@ int DocTabView::getIndexByBuffer(BufferID id) return -1; } - +//通过缓冲区ID找到其在标签中的索引位置,如果不存在则返回-1。 BufferID DocTabView::getBufferByIndex(size_t index) { TCITEM tie{}; @@ -129,7 +129,7 @@ BufferID DocTabView::getBufferByIndex(size_t index) return reinterpret_cast(tie.lParam); } - +//根据mask中的标志位,更新与缓冲区相关的信息,例如文件名变化、只读状态变化等。 void DocTabView::bufferUpdated(Buffer * buffer, int mask) { int index = getIndexByBuffer(buffer->getID()); @@ -183,7 +183,7 @@ void DocTabView::bufferUpdated(Buffer * buffer, int mask) *out = '\0'; } } - + ::SendMessage(_hSelf, TCM_SETITEM, index, reinterpret_cast(&tie)); // send WM_SIZE only when change tab @@ -192,7 +192,7 @@ void DocTabView::bufferUpdated(Buffer * buffer, int mask) ::SendMessage(_hParent, WM_SIZE, 0, 0); } - +//根据给定的索引设置相应的缓冲区ID,并更新标签显示的相关信息。 void DocTabView::setBuffer(size_t index, BufferID id) { if (index >= _nbItem) @@ -208,7 +208,7 @@ void DocTabView::setBuffer(size_t index, BufferID id) ::SendMessage(_hParent, WM_SIZE, 0, 0); } - +//根据隐藏/显示标签栏状态,调整标签页视图和文本编辑器视图的大小,并根据需要发送消息以更新可点击链接。 void DocTabView::reSizeTo(RECT & rc) { int borderWidth = ((NppParameters::getInstance()).getSVP())._borderWidth; diff --git a/src/PowerEditor/src/ScintillaComponent/DocTabView.h b/src/PowerEditor/src/ScintillaComponent/DocTabView.h index 2f8f78c..a0b9894 100644 --- a/src/PowerEditor/src/ScintillaComponent/DocTabView.h +++ b/src/PowerEditor/src/ScintillaComponent/DocTabView.h @@ -14,11 +14,15 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . + + + +//该类继承自TabBarPlus类。该类负责管理文档选项卡视图,并提供一系列方法用于添加、关闭、激活缓冲区以及设置选项卡的个性化选项等功能。 #pragma once #include "TabBar.h" #include "Buffer.h" - +// 定义一些常量用作图片索引 const int SAVED_IMG_INDEX = 0; const int UNSAVED_IMG_INDEX = 1; const int REDONLY_IMG_INDEX = 2; @@ -33,7 +37,7 @@ public : void destroy() override { TabBarPlus::destroy(); }; - + //初始化函数,传入实例句柄、父窗口句柄、ScintillaEditView指针、以及图片列表和选择的图片索引 void init(HINSTANCE hInst, HWND parent, ScintillaEditView * pView, std::vector pIconListVector, unsigned char indexChoice) { TabBarPlus::init(hInst, parent); _pView = pView; @@ -52,45 +56,50 @@ public : TabBar::setImageList(_pIconListVector[_iconListIndexChoice]->getHandle()); return; }; - + // 改变选中的图片列表 void changeIcons(unsigned char choice) { if (choice >= _pIconListVector.size()) return; _iconListIndexChoice = choice; TabBar::setImageList(_pIconListVector[_iconListIndexChoice]->getHandle()); }; - + // 添加缓冲区 void addBuffer(BufferID buffer); + // 关闭缓冲区 void closeBuffer(BufferID buffer); + // 缓冲区更新 void bufferUpdated(Buffer * buffer, int mask); - + // 激活缓冲区 bool activateBuffer(BufferID buffer); - + // 获取当前激活的缓冲区 BufferID activeBuffer(); + // 根据文件名查找缓冲区,返回索引值,如果未找到则返回-1 BufferID findBufferByName(const TCHAR * fullfilename); //-1 if not found, something else otherwise - + // 根据缓冲区获取索引值 int getIndexByBuffer(BufferID id); + // 根据索引值获取缓冲区 BufferID getBufferByIndex(size_t index); - + // 设置指定索引位置的缓冲区 void setBuffer(size_t index, BufferID id); - + // 静态函数,用于设置隐藏或显示选项卡栏的状态 static bool setHideTabBarStatus(bool hideOrNot) { bool temp = _hideTabBarStatus; _hideTabBarStatus = hideOrNot; return temp; }; - + // 静态函数,获取隐藏或显示选项卡栏的状态 static bool getHideTabBarStatus() { return _hideTabBarStatus; }; - + // 重写父类的reSizeTo方法 void reSizeTo(RECT & rc) override; - + // 获取ScintillaEditView指针 const ScintillaEditView* getScintillaEditView() const { return _pView; }; - + // 设置指定缓冲区的个性化选项卡颜色 void setIndividualTabColour(BufferID bufferId, int colorId); + // 获取指定索引位置的个性化选项卡颜色 int getIndividualTabColour(int tabIndex) override; private :