summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/m_gui.h33
-rw-r--r--libs/win32/mir_core.libbin321668 -> 322402 bytes
-rw-r--r--libs/win64/mir_core.libbin322726 -> 323494 bytes
-rw-r--r--plugins/AuthState/src/options.h5
-rw-r--r--plugins/CloudFile/src/options.cpp2
-rw-r--r--plugins/CloudFile/src/options.h2
-rw-r--r--plugins/Db_autobackups/src/backup.cpp2
-rw-r--r--plugins/Db_autobackups/src/main.cpp4
-rw-r--r--plugins/Db_autobackups/src/options.cpp24
-rw-r--r--plugins/Db_autobackups/src/options.h4
-rw-r--r--plugins/Db_autobackups/src/stdafx.h2
-rw-r--r--plugins/MirLua/src/options.cpp2
-rw-r--r--plugins/MirLua/src/options.h2
-rw-r--r--plugins/NewsAggregator/Src/Options.cpp4
-rw-r--r--plugins/NewsAggregator/Src/Options.h2
-rw-r--r--plugins/Scriver/src/msgoptions.cpp6
-rw-r--r--plugins/StartPosition/src/options.cpp2
-rw-r--r--plugins/StartPosition/src/options.h2
-rw-r--r--plugins/StatusManager/src/options.cpp6
-rw-r--r--plugins/StopSpamPlus/src/options.cpp12
-rw-r--r--src/core/stdidle/src/options.cpp4
-rw-r--r--src/core/stdmsg/src/msgoptions.cpp12
-rw-r--r--src/mir_core/src/CDlgBase.cpp12
-rw-r--r--src/mir_core/src/mir_core.def2
-rw-r--r--src/mir_core/src/mir_core64.def2
25 files changed, 75 insertions, 73 deletions
diff --git a/include/m_gui.h b/include/m_gui.h
index 2f0a05baf3..d6ed08a7c6 100644
--- a/include/m_gui.h
+++ b/include/m_gui.h
@@ -461,6 +461,16 @@ protected:
void AddControl(CCtrlBase *ctrl);
void AddTimer(CTimer *timer);
+ // options support
+ void CreateLink(CCtrlData& ctrl, const char *szSetting, BYTE type, DWORD iValue);
+ void CreateLink(CCtrlData& ctrl, const char *szSetting, wchar_t *szValue);
+
+ template<class T>
+ __inline void CreateLink(CCtrlData& ctrl, CMOption<T> &option)
+ {
+ ctrl.CreateDbLink(new CMOptionLink<T>(option));
+ }
+
// win32 stuff
void ThemeDialogBackground(BOOL tabbed);
@@ -1492,29 +1502,6 @@ protected:
TProto* m_proto;
};
-class CPluginDlgBase : public CDlgBase
-{
- const char *m_szModule;
-public:
- CPluginDlgBase(CMPluginBase &pPlug, int idDialog, const char *module) :
- CDlgBase(pPlug, idDialog), m_szModule(module)
- {};
-
- void CreateLink(CCtrlData& ctrl, const char *szSetting, BYTE type, DWORD iValue)
- {
- ctrl.CreateDbLink(m_szModule, szSetting, type, iValue);
- }
- void CreateLink(CCtrlData& ctrl, const char *szSetting, wchar_t *szValue)
- {
- ctrl.CreateDbLink(m_szModule, szSetting, szValue);
- }
- template<class T>
- __inline void CreateLink(CCtrlData& ctrl, CMOption<T> &option)
- {
- ctrl.CreateDbLink(new CMOptionLink<T>(option));
- }
-};
-
/////////////////////////////////////////////////////////////////////////////////////////
// Safe open/close dialogs
#define UI_SAFE_OPEN(dlgClass, dlgPtr) \
diff --git a/libs/win32/mir_core.lib b/libs/win32/mir_core.lib
index ec4dad9bc7..ecd84ff58c 100644
--- a/libs/win32/mir_core.lib
+++ b/libs/win32/mir_core.lib
Binary files differ
diff --git a/libs/win64/mir_core.lib b/libs/win64/mir_core.lib
index 2478eb8d2a..d0f9ce3e66 100644
--- a/libs/win64/mir_core.lib
+++ b/libs/win64/mir_core.lib
Binary files differ
diff --git a/plugins/AuthState/src/options.h b/plugins/AuthState/src/options.h
index dafebd8f17..9621036a31 100644
--- a/plugins/AuthState/src/options.h
+++ b/plugins/AuthState/src/options.h
@@ -18,7 +18,7 @@ struct Opts
extern Opts Options;
-class COptionsDialog : public CPluginDlgBase
+class COptionsDialog : public CDlgBase
{
CCtrlCheck m_chkAuthIcon;
CCtrlCheck m_chkGrantIcon;
@@ -26,7 +26,7 @@ class COptionsDialog : public CPluginDlgBase
CCtrlCheck m_chkOnlyForRecent;
public:
COptionsDialog() :
- CPluginDlgBase(g_plugin, IDD_AUTHSTATE_OPT, MODULENAME),
+ CDlgBase(g_plugin, IDD_AUTHSTATE_OPT),
m_chkAuthIcon(this, IDC_AUTHICON),
m_chkGrantIcon(this, IDC_GRANTICON),
m_chkMenuItem(this, IDC_ENABLEMENUITEM),
@@ -43,5 +43,4 @@ public:
for (auto &hContact : Contacts())
onExtraImageApplying((WPARAM)hContact, 0);
}
-
}; \ No newline at end of file
diff --git a/plugins/CloudFile/src/options.cpp b/plugins/CloudFile/src/options.cpp
index 4a3ae86250..df6563b99c 100644
--- a/plugins/CloudFile/src/options.cpp
+++ b/plugins/CloudFile/src/options.cpp
@@ -1,7 +1,7 @@
#include "stdafx.h"
COptionsMainDlg::COptionsMainDlg()
- : CPluginDlgBase(g_plugin, IDD_OPTIONS_MAIN, MODULENAME),
+ : CDlgBase(g_plugin, IDD_OPTIONS_MAIN),
m_defaultService(this, IDC_DEFAULTSERVICE),
m_doNothingOnConflict(this, IDC_DONOTHINGONCONFLICT),
m_renameOnConflict(this, IDC_RENAMEONCONFLICT),
diff --git a/plugins/CloudFile/src/options.h b/plugins/CloudFile/src/options.h
index ba7682aef7..30f6600f68 100644
--- a/plugins/CloudFile/src/options.h
+++ b/plugins/CloudFile/src/options.h
@@ -1,7 +1,7 @@
#ifndef _OPTIONS_H_
#define _OPTIONS_H_
-class COptionsMainDlg : public CPluginDlgBase
+class COptionsMainDlg : public CDlgBase
{
private:
CCtrlCombo m_defaultService;
diff --git a/plugins/Db_autobackups/src/backup.cpp b/plugins/Db_autobackups/src/backup.cpp
index 75e9f26a28..d9b4dd5b5e 100644
--- a/plugins/Db_autobackups/src/backup.cpp
+++ b/plugins/Db_autobackups/src/backup.cpp
@@ -243,7 +243,7 @@ int Backup(wchar_t *backup_filename)
}
SendDlgItemMessage(progress_dialog, IDC_PROGRESS, PBM_SETPOS, (WPARAM)(100), 0);
UpdateWindow(progress_dialog);
- db_set_dw(0, MODULE, "LastBackupTimestamp", (DWORD)time(0));
+ db_set_dw(0, MODULENAME, "LastBackupTimestamp", (DWORD)time(0));
if (options.use_cloudfile)
{
diff --git a/plugins/Db_autobackups/src/main.cpp b/plugins/Db_autobackups/src/main.cpp
index 4c52633c9e..db34035088 100644
--- a/plugins/Db_autobackups/src/main.cpp
+++ b/plugins/Db_autobackups/src/main.cpp
@@ -21,7 +21,7 @@ PLUGININFOEX pluginInfoEx = {
};
CMPlugin::CMPlugin() :
- PLUGIN<CMPlugin>(MODULE, pluginInfoEx)
+ PLUGIN<CMPlugin>(MODULENAME, pluginInfoEx)
{}
/////////////////////////////////////////////////////////////////////////////////////////
@@ -87,7 +87,7 @@ static int ModulesLoad(WPARAM, LPARAM)
}
else {
DBVARIANT dbv;
- if (!db_get_ws(0, MODULE, "Folder", &dbv)) {
+ if (!db_get_ws(0, MODULENAME, "Folder", &dbv)) {
wcsncpy_s(options.folder, dbv.ptszVal, _TRUNCATE);
db_free(&dbv);
}
diff --git a/plugins/Db_autobackups/src/options.cpp b/plugins/Db_autobackups/src/options.cpp
index 803193cccd..be3543ea2e 100644
--- a/plugins/Db_autobackups/src/options.cpp
+++ b/plugins/Db_autobackups/src/options.cpp
@@ -1,23 +1,23 @@
#include "stdafx.h"
Options::Options() :
- backup_types(MODULE, "BackupType", BT_PERIODIC),
- period(MODULE, "Period", 1),
- period_type(MODULE, "PeriodType", PT_DAYS),
- num_backups(MODULE, "NumBackups", 3),
- disable_progress(MODULE, "NoProgress", 0),
- disable_popups(MODULE, "NoPopups", 0),
- use_zip(MODULE, "UseZip", 0),
- backup_profile(MODULE, "BackupProfile", 0),
- use_cloudfile(MODULE, "UseCloudFile", 0),
- cloudfile_service(MODULE, "CloudFileService", nullptr)
+ backup_types(MODULENAME, "BackupType", BT_PERIODIC),
+ period(MODULENAME, "Period", 1),
+ period_type(MODULENAME, "PeriodType", PT_DAYS),
+ num_backups(MODULENAME, "NumBackups", 3),
+ disable_progress(MODULENAME, "NoProgress", 0),
+ disable_popups(MODULENAME, "NoPopups", 0),
+ use_zip(MODULENAME, "UseZip", 0),
+ backup_profile(MODULENAME, "BackupProfile", 0),
+ use_cloudfile(MODULENAME, "UseCloudFile", 0),
+ cloudfile_service(MODULENAME, "CloudFileService", nullptr)
{
}
Options options;
COptionsDlg::COptionsDlg()
- : CPluginDlgBase(g_plugin, IDD_OPTIONS, MODULE),
+ : CDlgBase(g_plugin, IDD_OPTIONS),
m_disable(this, IDC_RAD_DISABLED), m_backupOnStart(this, IDC_RAD_START),
m_backupOnExit(this, IDC_RAD_EXIT), m_backupPeriodic(this, IDC_RAD_PERIODIC),
m_backup(this, IDC_BUT_NOW), m_backupProfile(this, IDC_BACKUPPROFILE),
@@ -133,7 +133,7 @@ void COptionsDlg::OnApply()
MessageBox(nullptr, msg, TranslateT("Error creating backup folder"), MB_OK | MB_ICONERROR);
return;
}
- db_set_ws(0, MODULE, "Folder", folder);
+ db_set_ws(0, MODULENAME, "Folder", folder);
}
int currentService = m_cloudFileService.GetCurSel();
diff --git a/plugins/Db_autobackups/src/options.h b/plugins/Db_autobackups/src/options.h
index 9700053e73..6182acf91d 100644
--- a/plugins/Db_autobackups/src/options.h
+++ b/plugins/Db_autobackups/src/options.h
@@ -56,7 +56,7 @@ struct Options
Options();
};
-class COptionsDlg : public CPluginDlgBase
+class COptionsDlg : public CDlgBase
{
CCtrlCheck m_disable;
CCtrlCheck m_backupOnStart;
@@ -102,4 +102,4 @@ protected:
public:
COptionsDlg();
-}; \ No newline at end of file
+};
diff --git a/plugins/Db_autobackups/src/stdafx.h b/plugins/Db_autobackups/src/stdafx.h
index b0229f1e35..0698f1fd47 100644
--- a/plugins/Db_autobackups/src/stdafx.h
+++ b/plugins/Db_autobackups/src/stdafx.h
@@ -25,7 +25,7 @@ namespace fs = std::experimental::filesystem;
#include <m_folders.h>
#include <m_cloudfile.h>
-#define MODULE "AutoBackups"
+#define MODULENAME "AutoBackups"
struct CMPlugin : public PLUGIN<CMPlugin>
{
diff --git a/plugins/MirLua/src/options.cpp b/plugins/MirLua/src/options.cpp
index 2698bc1498..8f7ed53a87 100644
--- a/plugins/MirLua/src/options.cpp
+++ b/plugins/MirLua/src/options.cpp
@@ -1,7 +1,7 @@
#include "stdafx.h"
CMLuaOptions::CMLuaOptions()
- : CPluginDlgBase(g_plugin, IDD_OPTIONS, MODULENAME),
+ : CDlgBase(g_plugin, IDD_OPTIONS),
isScriptListInit(false),
m_popupOnError(this, IDC_POPUPONERROR),
m_popupOnObsolete(this, IDC_POPUPONOBSOLETE),
diff --git a/plugins/MirLua/src/options.h b/plugins/MirLua/src/options.h
index 9658ffe336..fa5c6dc823 100644
--- a/plugins/MirLua/src/options.h
+++ b/plugins/MirLua/src/options.h
@@ -1,6 +1,6 @@
#pragma once
-class CMLuaOptions : public CPluginDlgBase
+class CMLuaOptions : public CDlgBase
{
private:
bool isScriptListInit;
diff --git a/plugins/NewsAggregator/Src/Options.cpp b/plugins/NewsAggregator/Src/Options.cpp
index b0fad183f5..f06e592de7 100644
--- a/plugins/NewsAggregator/Src/Options.cpp
+++ b/plugins/NewsAggregator/Src/Options.cpp
@@ -892,8 +892,8 @@ void COptionsMain::UpdateList()
UpdateListFlag = FALSE;
}
-COptionsMain::COptionsMain()
- : CPluginDlgBase(g_plugin, IDD_OPTIONS, MODULENAME),
+COptionsMain::COptionsMain() :
+ CDlgBase(g_plugin, IDD_OPTIONS),
m_feeds(this, IDC_FEEDLIST),
m_add(this, IDC_ADD),
m_change(this, IDC_CHANGE),
diff --git a/plugins/NewsAggregator/Src/Options.h b/plugins/NewsAggregator/Src/Options.h
index 9abe024737..1e73f898b4 100644
--- a/plugins/NewsAggregator/Src/Options.h
+++ b/plugins/NewsAggregator/Src/Options.h
@@ -1,7 +1,7 @@
#ifndef _OPTIONS_H_
#define _OPTIONS_H_
-class COptionsMain : public CPluginDlgBase
+class COptionsMain : public CDlgBase
{
private:
CCtrlListView m_feeds;
diff --git a/plugins/Scriver/src/msgoptions.cpp b/plugins/Scriver/src/msgoptions.cpp
index 962c179e12..3d6f981555 100644
--- a/plugins/Scriver/src/msgoptions.cpp
+++ b/plugins/Scriver/src/msgoptions.cpp
@@ -366,13 +366,13 @@ static INT_PTR CALLBACK DlgProcTabsOptions(HWND hwndDlg, UINT msg, WPARAM wParam
/////////////////////////////////////////////////////////////////////////////////////////
-class CLayoutOptionsDlg : public CPluginDlgBase
+class CLayoutOptionsDlg : public CDlgBase
{
CCtrlCheck chkTransparency, chkShowTitlebar;
public:
CLayoutOptionsDlg() :
- CPluginDlgBase(g_plugin, IDD_OPT_LAYOUT, SRMM_MODULE),
+ CDlgBase(g_plugin, IDD_OPT_LAYOUT),
chkTransparency(this, IDC_TRANSPARENCY),
chkShowTitlebar(this, IDC_SHOWTITLEBAR)
{
@@ -468,7 +468,7 @@ public:
SendMessage(GetParent(m_hwnd), PSM_CHANGED, 0, 0);
}
- return CPluginDlgBase::DlgProc(msg, wParam, lParam);
+ return CDlgBase::DlgProc(msg, wParam, lParam);
}
};
diff --git a/plugins/StartPosition/src/options.cpp b/plugins/StartPosition/src/options.cpp
index fba92709ef..cdc56bf45a 100644
--- a/plugins/StartPosition/src/options.cpp
+++ b/plugins/StartPosition/src/options.cpp
@@ -16,7 +16,7 @@ StartPositionOptions::StartPositionOptions() :
}
COptionsDlg::COptionsDlg() :
- CPluginDlgBase(g_plugin, IDD_OPTIONS, MODULENAME),
+ CDlgBase(g_plugin, IDD_OPTIONS),
chkPositionTop(this, IDC_CLTOPENABLE),
edtPositionTop(this, IDC_CLTOP),
chkPositionBottom(this, IDC_CLBOTTOMENABLE),
diff --git a/plugins/StartPosition/src/options.h b/plugins/StartPosition/src/options.h
index ed3dcfb5f3..26e922cf11 100644
--- a/plugins/StartPosition/src/options.h
+++ b/plugins/StartPosition/src/options.h
@@ -70,7 +70,7 @@ struct StartPositionOptions
StartPositionOptions();
};
-class COptionsDlg : public CPluginDlgBase
+class COptionsDlg : public CDlgBase
{
CCtrlCheck chkPositionTop, chkPositionBottom, chkPositionSide, chkFromLeft, chkFromRight, chkWidth;
CCtrlEdit edtPositionTop, edtPositionBottom, edtPositionSide, edtWidth;
diff --git a/plugins/StatusManager/src/options.cpp b/plugins/StatusManager/src/options.cpp
index 4d87a08548..60b212d951 100644
--- a/plugins/StatusManager/src/options.cpp
+++ b/plugins/StatusManager/src/options.cpp
@@ -6,15 +6,15 @@ CMOption<bool> g_SSEnabled(MODULENAME, SSMODULENAME "_enabled", true);
/////////////////////////////////////////////////////////////////////////////////////////
-class CSubPluginsOptionsDlg : public CPluginDlgBase
+class CSubPluginsOptionsDlg : public CDlgBase
{
CCtrlCheck m_enableKeepStatus;
CCtrlCheck m_enableStartupStatus;
CCtrlCheck m_enableAdvancedAutoAway;
public:
- CSubPluginsOptionsDlg()
- : CPluginDlgBase(g_plugin, IDD_OPT_SUBPLUGINS, MODULENAME),
+ CSubPluginsOptionsDlg() :
+ CDlgBase(g_plugin, IDD_OPT_SUBPLUGINS),
m_enableKeepStatus(this, IDC_ENABLE_KEEPSTATUS),
m_enableStartupStatus(this, IDC_ENABLE_STARTUPSTATUS),
m_enableAdvancedAutoAway(this, IDC_ENABLE_ADVANCEDAUTOAWAY)
diff --git a/plugins/StopSpamPlus/src/options.cpp b/plugins/StopSpamPlus/src/options.cpp
index 79b040d967..0d9d4431bf 100644
--- a/plugins/StopSpamPlus/src/options.cpp
+++ b/plugins/StopSpamPlus/src/options.cpp
@@ -2,14 +2,14 @@
const wchar_t pluginDescription[] = LPGENW("No more spam! Robots can't go! Only human beings invited!\r\n\r\nThis plugin works pretty simple:\r\nWhile messages from users on your contact list go as there is no any anti-spam software, messages from unknown users are not delivered to you. But also they are not ignored, this plugin replies with a simple question, and if user gives the right answer, plugin adds him to your contact list so that he can contact you.");
-class COptMainDlg : public CPluginDlgBase
+class COptMainDlg : public CDlgBase
{
CCtrlEdit edtCount, edtDescr;
CCtrlCheck chk1, chk2, chk3, chk4, chk5, chk6;
public:
COptMainDlg() :
- CPluginDlgBase(g_plugin, IDD_MAIN, MODULENAME),
+ CDlgBase(g_plugin, IDD_MAIN),
edtCount(this, ID_MAXQUESTCOUNT),
edtDescr(this, ID_DESCRIPTION),
chk1(this, ID_INFTALKPROT),
@@ -37,14 +37,14 @@ public:
/////////////////////////////////////////////////////////////////////////////////////////
-class COptMessageDlg : public CPluginDlgBase
+class COptMessageDlg : public CDlgBase
{
CCtrlButton btnHelp, btnRestore;
CCtrlEdit edtQuestion, edtAnswer, edtCongrat, edtReply, edtDivider;
public:
COptMessageDlg() :
- CPluginDlgBase(g_plugin, IDD_MESSAGES, MODULENAME),
+ CDlgBase(g_plugin, IDD_MESSAGES),
btnHelp(this, IDC_VARS),
btnRestore(this, ID_RESTOREDEFAULTS),
edtQuestion(this, ID_QUESTION),
@@ -88,13 +88,13 @@ public:
/////////////////////////////////////////////////////////////////////////////////////////
-class COptAccountDlg : public CPluginDlgBase
+class COptAccountDlg : public CDlgBase
{
CCtrlListView m_accounts;
public:
COptAccountDlg() :
- CPluginDlgBase(g_plugin, IDD_PROTO, MODULENAME),
+ CDlgBase(g_plugin, IDD_PROTO),
m_accounts(this, IDC_PROTO)
{
m_accounts.OnItemChanged = Callback(this, &COptAccountDlg::list_OnItemChanged);
diff --git a/src/core/stdidle/src/options.cpp b/src/core/stdidle/src/options.cpp
index 4b9beab7ac..71b8c14f27 100644
--- a/src/core/stdidle/src/options.cpp
+++ b/src/core/stdidle/src/options.cpp
@@ -35,7 +35,7 @@ int IdleGetStatusIndex(WORD status)
return 0;
}
-class COptionsDlg : public CPluginDlgBase
+class COptionsDlg : public CDlgBase
{
CCtrlEdit edt1sttime;
CCtrlSpin spinIdle;
@@ -57,7 +57,7 @@ class COptionsDlg : public CPluginDlgBase
public:
COptionsDlg() :
- CPluginDlgBase(g_plugin, IDD_OPT_IDLE, MODULENAME),
+ CDlgBase(g_plugin, IDD_OPT_IDLE),
edt1sttime(this, IDC_IDLE1STTIME),
spinIdle(this, IDC_IDLESPIN),
cmbAAStatus(this, IDC_AASTATUS),
diff --git a/src/core/stdmsg/src/msgoptions.cpp b/src/core/stdmsg/src/msgoptions.cpp
index c7aee9c376..99f034c6fa 100644
--- a/src/core/stdmsg/src/msgoptions.cpp
+++ b/src/core/stdmsg/src/msgoptions.cpp
@@ -150,7 +150,7 @@ statusValues[] =
{ PF2_ONTHEPHONE, LPGENW("On the phone") }
};
-class COptionMainDlg : public CPluginDlgBase
+class COptionMainDlg : public CDlgBase
{
CCtrlEdit edtNFlash, edtAvatarH, edtSecs;
CCtrlCheck chkAutoMin, chkAutoClose, chkSavePerContact, chkDoNotStealFocus;
@@ -193,7 +193,7 @@ class COptionMainDlg : public CPluginDlgBase
public:
COptionMainDlg() :
- CPluginDlgBase(g_plugin, IDD_OPT_MSGDLG, SRMMMOD),
+ CDlgBase(g_plugin, IDD_OPT_MSGDLG),
tree(this, IDC_POPLIST),
edtSecs(this, IDC_SECONDS),
edtNFlash(this, IDC_NFLASHES),
@@ -305,7 +305,7 @@ public:
/////////////////////////////////////////////////////////////////////////////////////////
-class COptionLogDlg : public CPluginDlgBase
+class COptionLogDlg : public CDlgBase
{
HBRUSH hBkgColourBrush;
@@ -315,7 +315,7 @@ class COptionLogDlg : public CPluginDlgBase
public:
COptionLogDlg() :
- CPluginDlgBase(g_plugin, IDD_OPT_MSGLOG, SRMMMOD),
+ CDlgBase(g_plugin, IDD_OPT_MSGLOG),
chkSecs(this, IDC_SHOWSECS),
chkDate(this, IDC_SHOWDATES),
chkTime(this, IDC_SHOWTIMES),
@@ -409,7 +409,7 @@ public:
/////////////////////////////////////////////////////////////////////////////////////////
-class COptionTypingDlg : public CPluginDlgBase
+class COptionTypingDlg : public CDlgBase
{
HANDLE hItemNew, hItemUnknown;
@@ -418,7 +418,7 @@ class COptionTypingDlg : public CPluginDlgBase
public:
COptionTypingDlg() :
- CPluginDlgBase(g_plugin, IDD_OPT_MSGTYPE, SRMMMOD),
+ CDlgBase(g_plugin, IDD_OPT_MSGTYPE),
clist(this, IDC_CLIST),
chkType(this, IDC_SHOWNOTIFY),
chkTypeWin(this, IDC_TYPEWIN),
diff --git a/src/mir_core/src/CDlgBase.cpp b/src/mir_core/src/CDlgBase.cpp
index ab21be6a15..bc8b7af72f 100644
--- a/src/mir_core/src/CDlgBase.cpp
+++ b/src/mir_core/src/CDlgBase.cpp
@@ -113,6 +113,18 @@ void CDlgBase::Show(int nCmdShow)
}
/////////////////////////////////////////////////////////////////////////////////////////
+
+void CDlgBase::CreateLink(CCtrlData& ctrl, const char *szSetting, BYTE type, DWORD iValue)
+{
+ ctrl.CreateDbLink(m_pPlugin.getModule(), szSetting, type, iValue);
+}
+
+void CDlgBase::CreateLink(CCtrlData& ctrl, const char *szSetting, wchar_t *szValue)
+{
+ ctrl.CreateDbLink(m_pPlugin.getModule(), szSetting, szValue);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
// virtual methods
int CDlgBase::Resizer(UTILRESIZECONTROL*)
diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def
index eecbb7c04d..4bb5b14e91 100644
--- a/src/mir_core/src/mir_core.def
+++ b/src/mir_core/src/mir_core.def
@@ -1065,3 +1065,5 @@ IsTerminalDisconnected @1245
CallObjectEventHook @1259
?db_get_sm@@YG?AV?$CMStringT@DV?$ChTraitsCRT@D@@@@IPBD0@Z @1260 NONAME
?db_get_wsm@@YG?AV?$CMStringT@_WV?$ChTraitsCRT@_W@@@@IPBD0@Z @1261 NONAME
+?CreateLink@CDlgBase@@IAEXAAVCCtrlData@@PBDEK@Z @1262 NONAME
+?CreateLink@CDlgBase@@IAEXAAVCCtrlData@@PBDPA_W@Z @1263 NONAME
diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def
index c0ebe31ddb..638caf74fb 100644
--- a/src/mir_core/src/mir_core64.def
+++ b/src/mir_core/src/mir_core64.def
@@ -1065,3 +1065,5 @@ IsTerminalDisconnected @1245
CallObjectEventHook @1259
?db_get_sm@@YA?AV?$CMStringT@DV?$ChTraitsCRT@D@@@@IPEBD0@Z @1260 NONAME
?db_get_wsm@@YA?AV?$CMStringT@_WV?$ChTraitsCRT@_W@@@@IPEBD0@Z @1261 NONAME
+?CreateLink@CDlgBase@@IEAAXAEAVCCtrlData@@PEBDEK@Z @1262 NONAME
+?CreateLink@CDlgBase@@IEAAXAEAVCCtrlData@@PEBDPEA_W@Z @1263 NONAME