summaryrefslogtreecommitdiff
path: root/plugins/mTextControl/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-04-03 19:59:38 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-04-03 19:59:45 +0300
commite3f92ff9b8922e06a717a84b76c4e43cbb165f28 (patch)
tree13cf88e15b788575d7b47896b1995cd7b70d711d /plugins/mTextControl/src
parent8218936b7712de444a49656d8a50832cea5adc84 (diff)
mtextcontrol became an usual library
Diffstat (limited to 'plugins/mTextControl/src')
-rw-r--r--plugins/mTextControl/src/main.cpp66
-rw-r--r--plugins/mTextControl/src/richeditutils.cpp4
-rw-r--r--plugins/mTextControl/src/services.cpp230
-rw-r--r--plugins/mTextControl/src/services.h8
-rw-r--r--plugins/mTextControl/src/stdafx.h14
-rw-r--r--plugins/mTextControl/src/textcontrol.cpp13
-rw-r--r--plugins/mTextControl/src/textusers.cpp49
-rw-r--r--plugins/mTextControl/src/textusers.h5
8 files changed, 103 insertions, 286 deletions
diff --git a/plugins/mTextControl/src/main.cpp b/plugins/mTextControl/src/main.cpp
index d1ded43909..edd26d0e98 100644
--- a/plugins/mTextControl/src/main.cpp
+++ b/plugins/mTextControl/src/main.cpp
@@ -21,58 +21,38 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
-CMPlugin g_plugin;
-
HMODULE hMsfteditDll = nullptr;
+HINSTANCE g_hInst = nullptr;
PCreateTextServices MyCreateTextServices = nullptr;
-/////////////////////////////////////////////////////////////////////////////////////////
-
-PLUGININFOEX pluginInfoEx =
-{
- sizeof(PLUGININFOEX),
- __PLUGIN_NAME,
- PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM),
- __DESCRIPTION,
- __AUTHOR,
- __COPYRIGHT,
- __AUTHORWEB,
- UNICODE_AWARE,
- // {69B9443B-DC58-4876-AD39-E3F418A133C5}
- { 0x69b9443b, 0xdc58, 0x4876, { 0xad, 0x39, 0xe3, 0xf4, 0x18, 0xa1, 0x33, 0xc5 } }
-};
-
-CMPlugin::CMPlugin() :
- PLUGIN<CMPlugin>("MTextControl", pluginInfoEx)
-{}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
void MTextControl_RegisterClass();
-int CMPlugin::Load()
-{
- MyCreateTextServices = nullptr;
- hMsfteditDll = LoadLibrary(L"msftedit.dll");
- if (hMsfteditDll)
- MyCreateTextServices = (PCreateTextServices)GetProcAddress(hMsfteditDll, "CreateTextServices");
-
- LoadTextUsers();
- LoadServices();
-
- MTextControl_RegisterClass();
- return 0;
-}
-
/////////////////////////////////////////////////////////////////////////////////////////
void UnloadEmfCache();
-int CMPlugin::Unload()
+BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD ul_reason_for_call, LPVOID)
{
- UnloadTextUsers();
- UnloadEmfCache();
- FreeLibrary(hMsfteditDll);
- return 0;
+ switch (ul_reason_for_call) {
+ case DLL_PROCESS_ATTACH:
+ g_hInst = hInst;
+ MyCreateTextServices = nullptr;
+ hMsfteditDll = LoadLibrary(L"msftedit.dll");
+ if (hMsfteditDll)
+ MyCreateTextServices = (PCreateTextServices)GetProcAddress(hMsfteditDll, "CreateTextServices");
+
+ LoadTextUsers();
+
+ MTextControl_RegisterClass();
+ break;
+
+ case DLL_PROCESS_DETACH:
+ UnloadTextUsers();
+ UnloadEmfCache();
+ FreeLibrary(hMsfteditDll);
+ break;
+ }
+
+ return TRUE;
}
diff --git a/plugins/mTextControl/src/richeditutils.cpp b/plugins/mTextControl/src/richeditutils.cpp
index c5cb7eeb9e..4da0b75d40 100644
--- a/plugins/mTextControl/src/richeditutils.cpp
+++ b/plugins/mTextControl/src/richeditutils.cpp
@@ -127,14 +127,14 @@ HWND CreateProxyWindow(ITextServices *ts)
wcl.cbSize = sizeof(wcl);
wcl.lpfnWndProc = RichEditProxyWndProc;
wcl.style = CS_GLOBALCLASS;
- wcl.hInstance = g_plugin.getInst();
+ wcl.hInstance = g_hInst;
wcl.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcl.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
wcl.lpszClassName = L"NBRichEditProxyWndClass";
winClass = RegisterClassEx(&wcl);
}
- HWND hwnd = CreateWindow(L"NBRichEditProxyWndClass", L"", 0, 0, 0, 0, 0, nullptr, nullptr, g_plugin.getInst(), nullptr);
+ HWND hwnd = CreateWindow(L"NBRichEditProxyWndClass", L"", 0, 0, 0, 0, 0, nullptr, nullptr, g_hInst, nullptr);
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)ts);
return hwnd;
}
diff --git a/plugins/mTextControl/src/services.cpp b/plugins/mTextControl/src/services.cpp
index d004fc2c07..8d4e637050 100644
--- a/plugins/mTextControl/src/services.cpp
+++ b/plugins/mTextControl/src/services.cpp
@@ -28,8 +28,9 @@ struct TextObject
~TextObject() { if (ftd) delete ftd; }
};
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// elper functions
+
void MText_InitFormatting0(IFormattedTextDraw *ftd, DWORD)
{
LRESULT lResult;
@@ -69,48 +70,11 @@ void MText_InitFormatting1(TextObject *text)
*/
}
-//---------------------------------------------------------------------------
-// NEW mtextcontrol interface:
-//
-// obtain the full mtextcontrol interface from the library. it is much faster as use of
-// miranda core CallService to access to mtextcontrol (no core traffic).
-// This interface provides full access to mtextcontrol internal functions,
-// thus enabling devs to fully utilize the mtextcontrol API.
-// All functions will be exported as miranda services for compatibility.
-//
-// the interface is populated during the Load(void) handler, so you can assume it is ready when Miranda
-// throw the ME_SYSTEM_MODULESLOADED event and you can generate a warning in your ModulesLoaded() when
-// it depends on the mtextcontrol interface and the mtextcontrol plugin is missing.
-//
-// example:
-//
-// MTEXT_INTERFACE MText = {0};
-//
-// mir_getMTI(&MText);
-//
-// all interface function designed as old mtextcontrol helper functions.
-// therefore it is easy to convert your old plugin code to new interface.
-//
-// example:
-//
-// old code: MTextCreate (...
-// new code: MText.Create(...
-
-//---------------------------------------------------------------------------
-// subscribe to MText services
-INT_PTR MText_Register(WPARAM wParam, LPARAM lParam)
-{
- DWORD userOptions = (DWORD)wParam;
- char *userTitle = (char *)lParam;
- return (INT_PTR)MTI_TextUserAdd(userTitle, userOptions);
-}
-
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// allocate text object (unicode)
-HANDLE DLL_CALLCONV
-MTI_MTextCreateW(HANDLE userHandle, WCHAR *text)
-{
+MTEXTCONTROL_DLL(HANDLE) MTextCreateW(HANDLE userHandle, WCHAR *text)
+{
TextObject *result = new TextObject;
result->options = TextUserGetOptions(userHandle);
result->ftd = new CFormattedTextDraw;
@@ -122,22 +86,12 @@ MTI_MTextCreateW(HANDLE userHandle, WCHAR *text)
MText_InitFormatting1(result);
return (HANDLE)result;
-
}
-INT_PTR MText_CreateW(WPARAM wParam, LPARAM lParam)
-{
-
- //HANDLE userHandle = (HANDLE)wParam;
- //WCHAR *wtext = (WCHAR *)lParam;
- return (INT_PTR)(HANDLE)MTI_MTextCreateW((HANDLE)wParam, (WCHAR *)lParam);
-
-}
-
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// allocate text object (advanced)
-HANDLE DLL_CALLCONV
-MTI_MTextCreateEx(HANDLE userHandle, void *text, DWORD flags)
+
+MTEXTCONTROL_DLL(HANDLE) MTextCreateEx(HANDLE userHandle, void *text, DWORD flags)
{
TextObject *result = new TextObject;
result->options = TextUserGetOptions(userHandle);
@@ -146,26 +100,20 @@ MTI_MTextCreateEx(HANDLE userHandle, void *text, DWORD flags)
InitRichEdit(result->ftd->getTextService());
MText_InitFormatting0(result->ftd, result->options);
- if (flags & MTEXT_FLG_WCHAR) result->ftd->putTextW((WCHAR *)text);
- else result->ftd->putTextA((char *)text);
+ if (flags & MTEXT_FLG_WCHAR)
+ result->ftd->putTextW((WCHAR *)text);
+ else
+ result->ftd->putTextA((char *)text);
MText_InitFormatting1(result);
delete result;
return nullptr;
}
-INT_PTR MText_CreateEx(WPARAM wParam, LPARAM lParam)
-{
- HANDLE userHandle = (HANDLE)wParam;
- MTEXTCREATE *textCreate = (MTEXTCREATE *)lParam;
- MTI_MTextCreateEx(userHandle, textCreate->text, textCreate->flags);
- return 0;
-}
-
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// measure text object
-int DLL_CALLCONV
-MTI_MTextMeasure(HDC dc, SIZE *sz, HANDLE text)
+
+MTEXTCONTROL_DLL(int) MTextMeasure(HDC dc, SIZE *sz, HANDLE text)
{
if (!text) return 0;
@@ -173,42 +121,30 @@ MTI_MTextMeasure(HDC dc, SIZE *sz, HANDLE text)
((TextObject *)text)->ftd->get_NaturalSize(dc, &lWidth, &lHeight);
sz->cx = lWidth;
sz->cy = lHeight;
- // FancyMeasure(((TextObject *)text)->fancy, displayInfo);
-
- return 0;
-}
-
-INT_PTR MText_Measure(WPARAM wParam, LPARAM)
-{
- LPMTEXTDISPLAY displayInfo = (LPMTEXTDISPLAY)wParam;
- if (!displayInfo) return 0;
- if (!(TextObject *)displayInfo->text) return 0;
- MTI_MTextMeasure(displayInfo->dc, &displayInfo->sz, displayInfo->text);
return 0;
}
-int DLL_CALLCONV
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// display text object
-MTI_MTextDisplay(HDC dc, POINT pos, SIZE sz, HANDLE text)
+
+MTEXTCONTROL_DLL(int) MTextDisplay(HDC dc, POINT pos, SIZE sz, HANDLE text)
{
if (!text) return 0;
COLORREF cl = GetTextColor(dc);
- // if (GetTextColor(dc)&0xffffff != 0)
- {
- LRESULT lResult;
- CHARFORMAT cf = { 0 };
- cf.cbSize = sizeof(cf);
- cf.dwMask = CFM_COLOR;
- cf.crTextColor = cl;
- ((TextObject *)text)->ftd->getTextService()->TxSendMessage(EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf, &lResult);
- }
+
+ LRESULT lResult;
+ CHARFORMAT cf = { 0 };
+ cf.cbSize = sizeof(cf);
+ cf.dwMask = CFM_COLOR;
+ cf.crTextColor = cl;
+ ((TextObject *)text)->ftd->getTextService()->TxSendMessage(EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf, &lResult);
SetBkMode(dc, TRANSPARENT);
long lWidth = sz.cx, lHeight;
((TextObject *)text)->ftd->get_NaturalSize(dc, &lWidth, &lHeight);
+
RECT rt;
rt.left = pos.x;
rt.top = pos.y;
@@ -219,42 +155,25 @@ MTI_MTextDisplay(HDC dc, POINT pos, SIZE sz, HANDLE text)
return 0;
}
-INT_PTR MText_Display(WPARAM wParam, LPARAM)
-{
- LPMTEXTDISPLAY displayInfo = (LPMTEXTDISPLAY)wParam;
- if (!displayInfo) return 0;
- if (!displayInfo->text) return 0;
- MTI_MTextDisplay(displayInfo->dc, displayInfo->pos, displayInfo->sz, displayInfo->text);
- return 0;
-}
-
-int DLL_CALLCONV
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// set parent window for text object (this is required for mouse handling, etc)
-MTI_MTextSetParent(HANDLE text, HWND hwnd, RECT rect)
-{
- if (!text) return 0;
- ((TextObject *)text)->ftd->setParentWnd(hwnd, rect);
- return 0;
-}
-INT_PTR MText_SetParent(WPARAM wParam, LPARAM)
+MTEXTCONTROL_DLL(int) MTextSetParent(HANDLE text, HWND hwnd, RECT rect)
{
- LPMTEXTSETPARENT info = (LPMTEXTSETPARENT)wParam;
- //TextObject *text = (TextObject *)info->text;
- if (!info) return 0;
- if (!info->text) return 0;
- MTI_MTextSetParent(info->text, info->hwnd, info->rc);
+ if (text)
+ ((TextObject *)text)->ftd->setParentWnd(hwnd, rect);
return 0;
}
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// send message to an object
-int DLL_CALLCONV
-MTI_MTextSendMessage(HWND hwnd, HANDLE text, UINT msg, WPARAM wParam, LPARAM lParam)
+
+MTEXTCONTROL_DLL(int) MTextSendMessage(HWND hwnd, HANDLE text, UINT msg, WPARAM wParam, LPARAM lParam)
{
+ if (!text)
+ return 0;
+
LRESULT lResult;
- if (!text) return 0;
((TextObject *)text)->ftd->getTextService()->TxSendMessage(msg, wParam, lParam, &lResult);
if (hwnd && (msg == WM_MOUSEMOVE)) {
@@ -266,81 +185,22 @@ MTI_MTextSendMessage(HWND hwnd, HANDLE text, UINT msg, WPARAM wParam, LPARAM lPa
return lResult;
}
-INT_PTR MText_SendMessage(WPARAM wParam, LPARAM)
-{
- LPMTEXTMESSAGE message = (LPMTEXTMESSAGE)wParam;
- if (!message->text) return 0;
- return (INT_PTR)MTI_MTextSendMessage(message->hwnd, message->text, message->msg, message->wParam, message->lParam);
-}
-
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// create a proxy window
-HWND DLL_CALLCONV
-MTI_MTextCreateProxy(HANDLE text)
-{
- if (!text) return nullptr;
- return CreateProxyWindow(((TextObject *)text)->ftd->getTextService());
-}
-INT_PTR MText_CreateProxy(WPARAM wParam, LPARAM)
+MTEXTCONTROL_DLL(HWND) MTextCreateProxy(HANDLE text)
{
- if (!wParam) return 0;
- return (INT_PTR)MTI_MTextCreateProxy((HANDLE)wParam);
+ if (!text)
+ return nullptr;
+
+ return CreateProxyWindow(((TextObject *)text)->ftd->getTextService());
}
-int DLL_CALLCONV
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
// destroy text object
-MTI_MTextDestroy(HANDLE text)
-{
- //HANDLE textHandle = (HANDLE)wParam;
- //TextObject *text = (TextObject *)textHandle;
- if (text) delete (TextObject *)text;
- return 0;
-}
-INT_PTR MText_Destroy(WPARAM wParam, LPARAM)
+MTEXTCONTROL_DLL(int) MTextDestroy(HANDLE text)
{
- HANDLE textHandle = (HANDLE)wParam;
- TextObject *text = (TextObject *)textHandle;
- if (text) delete text;
+ if (text) delete (TextObject *)text;
return 0;
}
-
-//---------------------------------------------------------------------------
-// populate the interface
-INT_PTR MText_GetInterface(WPARAM, LPARAM lParam)
-{
- MTEXT_INTERFACE *MText = (MTEXT_INTERFACE *)lParam;
- if (MText == nullptr)
- return CALLSERVICE_NOTFOUND;
-
- MText->version = PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM);
- MText->Register = MTI_TextUserAdd;
- MText->Create = MTI_MTextCreateW;
- MText->CreateEx = MTI_MTextCreateEx;
- MText->Measure = MTI_MTextMeasure;
- MText->Display = MTI_MTextDisplay;
- MText->SetParent = MTI_MTextSetParent;
- MText->SendMsg = MTI_MTextSendMessage;
- MText->CreateProxy = MTI_MTextCreateProxy;
- MText->Destroy = MTI_MTextDestroy;
-
- return S_OK;
-}
-
-//---------------------------------------------------------------------------
-// Load / Unload services
-void LoadServices()
-{
- CreateServiceFunction(MS_TEXT_REGISTER, MText_Register);
- CreateServiceFunction(MS_TEXT_CREATEW, MText_CreateW);
- CreateServiceFunction(MS_TEXT_CREATEEX, MText_CreateEx);
- CreateServiceFunction(MS_TEXT_MEASURE, MText_Measure);
- CreateServiceFunction(MS_TEXT_DISPLAY, MText_Display);
- CreateServiceFunction(MS_TEXT_SETPARENT, MText_SetParent);
- CreateServiceFunction(MS_TEXT_SENDMESSAGE, MText_SendMessage);
- CreateServiceFunction(MS_TEXT_CREATEPROXY, MText_CreateProxy);
- CreateServiceFunction(MS_TEXT_DESTROY, MText_Destroy);
- CreateServiceFunction(MS_TEXT_GETINTERFACE, MText_GetInterface);
-}
diff --git a/plugins/mTextControl/src/services.h b/plugins/mTextControl/src/services.h
index d91b1366b3..8a75e24eed 100644
--- a/plugins/mTextControl/src/services.h
+++ b/plugins/mTextControl/src/services.h
@@ -22,13 +22,5 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
void LoadServices();
-__declspec(dllexport) HANDLE DLL_CALLCONV MTI_MTextCreateW(HANDLE userHandle, WCHAR *text);
-__declspec(dllexport) HANDLE DLL_CALLCONV MTI_MTextCreateEx(HANDLE userHandle, void *text, DWORD flags);
-__declspec(dllexport) int DLL_CALLCONV MTI_MTextMeasure(HDC dc, SIZE *sz, HANDLE text);
-__declspec(dllexport) int DLL_CALLCONV MTI_MTextDisplay(HDC dc, POINT pos, SIZE sz, HANDLE text);
-__declspec(dllexport) int DLL_CALLCONV MTI_MTextSetParent(HANDLE text, HWND hwnd, RECT rect);
-__declspec(dllexport) int DLL_CALLCONV MTI_MTextSendMessage(HWND hwnd, HANDLE text, UINT msg, WPARAM wParam, LPARAM lParam);
-__declspec(dllexport) HWND DLL_CALLCONV MTI_MTextCreateProxy(HANDLE text);
-__declspec(dllexport) int DLL_CALLCONV MTI_MTextDestroy(HANDLE text);
#endif // __services_h__
diff --git a/plugins/mTextControl/src/stdafx.h b/plugins/mTextControl/src/stdafx.h
index ef5263042a..1608622157 100644
--- a/plugins/mTextControl/src/stdafx.h
+++ b/plugins/mTextControl/src/stdafx.h
@@ -30,7 +30,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include <tom.h>
#include <textserv.h>
-#include <newpluginapi.h>
#include <m_database.h>
#include <m_langpack.h>
#include <m_utils.h>
@@ -39,24 +38,15 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include <m_smileyadd.h>
#include "version.h"
-#include "services.h"
#include "textusers.h"
+extern HINSTANCE g_hInst;
extern PCreateTextServices MyCreateTextServices;
void InitRichEdit(ITextServices *ts);
HWND CreateProxyWindow(ITextServices *ts);
#define MODULTITLE "Text Display"
-
-// globals
-
-struct CMPlugin : public PLUGIN<CMPlugin>
-{
- CMPlugin();
-
- int Load() override;
- int Unload() override;
-};
+#define MODULENAME "MTextControl"
#endif // __headers_h__
diff --git a/plugins/mTextControl/src/textcontrol.cpp b/plugins/mTextControl/src/textcontrol.cpp
index a9f3263794..596677f23f 100644
--- a/plugins/mTextControl/src/textcontrol.cpp
+++ b/plugins/mTextControl/src/textcontrol.cpp
@@ -36,7 +36,7 @@ void MTextControl_RegisterClass()
wcl.cbSize = sizeof(wcl);
wcl.lpfnWndProc = MTextControlWndProc;
wcl.style = CS_GLOBALCLASS;
- wcl.hInstance = g_plugin.getInst();
+ wcl.hInstance = g_hInst;
wcl.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcl.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
wcl.lpszClassName = L"MTextControl";
@@ -66,15 +66,15 @@ LRESULT CALLBACK MTextControlWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
case MTM_UPDATE:
if (data->text) delete[] data->text;
- if (data->mtext) MTI_MTextDestroy(data->mtext);
+ if (data->mtext) MTextDestroy(data->mtext);
{
int textLength = GetWindowTextLength(hwnd);
data->text = new wchar_t[textLength + 1];
GetWindowText(hwnd, data->text, textLength + 1);
- data->mtext = MTI_MTextCreateW(data->htu, data->text);
+ data->mtext = MTextCreateW(data->htu, data->text);
RECT rc; GetClientRect(hwnd, &rc);
- MTI_MTextSetParent(data->mtext, hwnd, rc);
+ MTextSetParent(data->mtext, hwnd, rc);
InvalidateRect(hwnd, nullptr, TRUE);
}
@@ -91,7 +91,7 @@ LRESULT CALLBACK MTextControlWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
case WM_MOUSEMOVE:
if (data && data->mtext)
- return MTI_MTextSendMessage(hwnd, data->mtext, msg, wParam, lParam);
+ return MTextSendMessage(hwnd, data->mtext, msg, wParam, lParam);
break;
}
@@ -134,7 +134,7 @@ LRESULT MTextControl_OnPaint(HWND hwnd, WPARAM, LPARAM)
SIZE sz;
sz.cx = rc.right - rc.left;
sz.cy = rc.bottom - rc.top - 4;
- MTI_MTextDisplay(hdc, pos, sz, data->mtext);
+ MTextDisplay(hdc, pos, sz, data->mtext);
if (hfntSave)
SelectObject(hdc, hfntSave);
@@ -142,6 +142,5 @@ LRESULT MTextControl_OnPaint(HWND hwnd, WPARAM, LPARAM)
// Release the device context
EndPaint(hwnd, &ps);
-
return 0;
}
diff --git a/plugins/mTextControl/src/textusers.cpp b/plugins/mTextControl/src/textusers.cpp
index 22abd621ae..5b879a70de 100644
--- a/plugins/mTextControl/src/textusers.cpp
+++ b/plugins/mTextControl/src/textusers.cpp
@@ -21,32 +21,17 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
HANDLE htuDefault = nullptr;
-TextUser *textUserFirst = nullptr;
-TextUser *textUserLast = nullptr;
+static TextUser *textUserFirst = nullptr;
+static TextUser *textUserLast = nullptr;
-void LoadTextUsers()
-{
- htuDefault = MTI_TextUserAdd("Text Controls", MTEXT_FANCY_MASK);
-}
-
-void UnloadTextUsers()
-{
- while (textUserFirst) {
- delete[] textUserFirst->name;
- TextUser *next = textUserFirst->next;
- delete[] textUserFirst;
- textUserFirst = next;
- }
-}
-
-HANDLE DLL_CALLCONV MTI_TextUserAdd(const char *userTitle, DWORD options)
+MTEXTCONTROL_DLL(HANDLE) MTextRegister(const char *userTitle, DWORD options)
{
TextUser *textUserNew = new TextUser;
textUserNew->name = new char[mir_strlen(userTitle) + 1];
mir_strcpy(textUserNew->name, userTitle);
textUserNew->options =
- (g_plugin.getDword(userTitle, options)&MTEXT_FANCY_MASK) | (textUserNew->options&MTEXT_SYSTEM_MASK);
- g_plugin.setDword(userTitle, textUserNew->options);
+ (db_get_dw(0, MODULENAME, userTitle, options)&MTEXT_FANCY_MASK) | (textUserNew->options&MTEXT_SYSTEM_MASK);
+ db_set_dw(0, MODULENAME, userTitle, textUserNew->options);
textUserNew->prev = textUserLast;
textUserNew->next = nullptr;
if (textUserLast) {
@@ -55,7 +40,7 @@ HANDLE DLL_CALLCONV MTI_TextUserAdd(const char *userTitle, DWORD options)
}
else textUserFirst = textUserLast = textUserNew;
- return (HANDLE)textUserNew;
+ return textUserNew;
}
DWORD TextUserGetOptions(HANDLE userHandle)
@@ -73,12 +58,28 @@ void TextUserSetOptions(HANDLE userHandle, DWORD options)
void TextUsersSave()
{
for (TextUser *textUser = textUserFirst; textUser; textUser = textUser->next)
- g_plugin.setDword(textUser->name, textUser->options);
+ db_set_dw(0, MODULENAME, textUser->name, textUser->options);
}
void TextUsersReset()
{
for (TextUser *textUser = textUserFirst; textUser; textUser = textUser->next)
- textUser->options =
- (g_plugin.getDword(textUser->name, 0)&MTEXT_FANCY_MASK) | (textUser->options&MTEXT_SYSTEM_MASK);
+ textUser->options = (db_get_dw(0, MODULENAME, textUser->name, 0) & MTEXT_FANCY_MASK) | (textUser->options&MTEXT_SYSTEM_MASK);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+void LoadTextUsers()
+{
+ htuDefault = MTextRegister("Text Controls", MTEXT_FANCY_MASK);
+}
+
+void UnloadTextUsers()
+{
+ while (textUserFirst) {
+ delete[] textUserFirst->name;
+ TextUser *next = textUserFirst->next;
+ delete[] textUserFirst;
+ textUserFirst = next;
+ }
}
diff --git a/plugins/mTextControl/src/textusers.h b/plugins/mTextControl/src/textusers.h
index 28e2fb27d3..845386c859 100644
--- a/plugins/mTextControl/src/textusers.h
+++ b/plugins/mTextControl/src/textusers.h
@@ -29,16 +29,11 @@ struct TextUser : public MZeroedObject
TextUser *prev, *next;
};
-extern TextUser *textUserFirst;
-extern TextUser *textUserLast;
-
void LoadTextUsers();
void UnloadTextUsers();
extern HANDLE htuDefault;
-__declspec(dllexport) HANDLE DLL_CALLCONV MTI_TextUserAdd(const char *userTitle, DWORD options);
-
DWORD TextUserGetOptions(HANDLE userHandle);
void TextUserSetOptions(HANDLE userHandle, DWORD options);
void TextUsersSave();