diff options
-rw-r--r-- | include/m_srmm_int.h | 1 | ||||
-rw-r--r-- | src/mir_app/res/code.ico | bin | 0 -> 1150 bytes | |||
-rw-r--r-- | src/mir_app/res/resource.rc | 2 | ||||
-rw-r--r-- | src/mir_app/src/chat_loginfo.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/ei_services.cpp | 1 | ||||
-rw-r--r-- | src/mir_app/src/resource.h | 2 | ||||
-rw-r--r-- | src/mir_app/src/srmm_base.cpp | 30 | ||||
-rw-r--r-- | src/mir_app/src/srmm_toolbar.cpp | 36 |
8 files changed, 72 insertions, 2 deletions
diff --git a/include/m_srmm_int.h b/include/m_srmm_int.h index 31f5b38ec0..f925844733 100644 --- a/include/m_srmm_int.h +++ b/include/m_srmm_int.h @@ -299,6 +299,7 @@ protected: INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override;
bool AllowTyping() const;
+ void InsertBbcodeString(const wchar_t *pwszStr);
int NotifyEvent(int code);
#ifdef _WINDOWS
bool ProcessFileDrop(HDROP hDrop, MCONTACT hContact);
diff --git a/src/mir_app/res/code.ico b/src/mir_app/res/code.ico Binary files differnew file mode 100644 index 0000000000..829effca84 --- /dev/null +++ b/src/mir_app/res/code.ico diff --git a/src/mir_app/res/resource.rc b/src/mir_app/res/resource.rc index 858cf54d98..f5330e9413 100644 --- a/src/mir_app/res/resource.rc +++ b/src/mir_app/res/resource.rc @@ -1614,6 +1614,8 @@ IDI_OFF ICON "Off.ico" IDI_CHAT ICON "chat_channel.ico"
+IDI_CODE ICON "code.ico"
+
IDI_MALE ICON "male.ico"
IDI_FEMALE ICON "female.ico"
diff --git a/src/mir_app/src/chat_loginfo.cpp b/src/mir_app/src/chat_loginfo.cpp index 2a72a77e32..1c05f5ecb8 100644 --- a/src/mir_app/src/chat_loginfo.cpp +++ b/src/mir_app/src/chat_loginfo.cpp @@ -84,7 +84,7 @@ int LOGINFO::getIcon() const return 0; } -void LOGINFO::write(RtfChatLogStreamData *streamData, bool simpleMode, CMStringA &str, const wchar_t *line) const +void LOGINFO::write(RtfChatLogStreamData *streamData, bool /*simpleMode*/, CMStringA &str, const wchar_t *line) const { CMStringA buf; diff --git a/src/mir_app/src/ei_services.cpp b/src/mir_app/src/ei_services.cpp index bbe9e4d596..e13cd514e1 100644 --- a/src/mir_app/src/ei_services.cpp +++ b/src/mir_app/src/ei_services.cpp @@ -467,6 +467,7 @@ static IconItem iconList[] = { LPGEN("Female"), "gender_female", IDI_FEMALE },
{ LPGEN("Database"), "database", IDI_DATABASE },
{ LPGEN("Attach"), "attach", IDI_ATTACH },
+ { LPGEN("Code"), "code", IDI_CODE },
};
void LoadExtraIconsModule()
diff --git a/src/mir_app/src/resource.h b/src/mir_app/src/resource.h index 9900567fb1..40da83b5af 100644 --- a/src/mir_app/src/resource.h +++ b/src/mir_app/src/resource.h @@ -46,6 +46,7 @@ #define IDD_OPTIONSPOPUP 137
#define IDI_URL 138
#define IDI_ATTACH 139
+#define IDI_CODE 140
#define IDI_MCMENUOFF 144
#define IDI_MCMENU 145
#define IDI_MCCONVERT 146
@@ -323,6 +324,7 @@ #define IDC_BLINKTIME 1114
#define IDC_BLINKSPIN 1115
#define IDC_ENABLE_TRAY_BLINK 1116
+#define IDC_CODE 1117
#define IDC_FINDWHAT 1131
#define IDC_FIND 1132
#define IDC_FILE 1133
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp index 7a3aa5456d..86236254aa 100644 --- a/src/mir_app/src/srmm_base.cpp +++ b/src/mir_app/src/srmm_base.cpp @@ -606,6 +606,15 @@ INT_PTR CSrmmBaseDialog::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) Srmm_ClickToolbarIcon(m_hContact, wParam, m_hwnd, 0);
return 0;
}
+
+ if (wParam == IDC_CODE) {
+ switch (lParam) {
+ case 1: InsertBbcodeString(L"[code]"); break;
+ case 2: InsertBbcodeString(L"[quote]"); break;
+ default:
+ Srmm_ClickToolbarIcon(m_hContact, wParam, m_hwnd, 0);
+ }
+ }
break;
case WM_ACTIVATE:
@@ -670,6 +679,26 @@ void CSrmmBaseDialog::ClearLog() m_pLog->Clear();
}
+void CSrmmBaseDialog::InsertBbcodeString(const wchar_t *pwszStr)
+{
+ CMStringW wszBbcode(pwszStr);
+ wszBbcode.Insert(1, '/');
+
+ LRESULT sel = m_message.SendMsg(EM_GETSEL, 0, 0);
+ if (sel != 0) {
+ int start = LOWORD(sel), end = HIWORD(sel);
+ m_message.SendMsg(EM_SETSEL, end, end);
+ m_message.SendMsg(EM_REPLACESEL, FALSE, (LPARAM)wszBbcode.c_str());
+
+ m_message.SendMsg(EM_SETSEL, start, start);
+ m_message.SendMsg(EM_REPLACESEL, FALSE, (LPARAM)pwszStr);
+ }
+ else {
+ wszBbcode.Insert(0, pwszStr);
+ SetMessageText(wszBbcode, true);
+ }
+}
+
bool CSrmmBaseDialog::IsSuitableEvent(const LOGINFO &lin) const
{
return (m_si->iType == GCW_SERVER || (m_iLogFilterFlags & lin.iType));
@@ -1122,4 +1151,3 @@ void CSrmmBaseDialog::SetQuoteEvent(MEVENT hEvent) Resize();
}
}
-
diff --git a/src/mir_app/src/srmm_toolbar.cpp b/src/mir_app/src/srmm_toolbar.cpp index 14cbd62469..b0ddabd7bd 100644 --- a/src/mir_app/src/srmm_toolbar.cpp +++ b/src/mir_app/src/srmm_toolbar.cpp @@ -862,6 +862,39 @@ static int ConvertToolbarData(const char *szSetting, void*) return 0;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
+static int OnToolbarLoaded(WPARAM, LPARAM)
+{
+ // predefined button
+ BBButton bbd = {};
+ bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_NOREADONLY | BBBF_CREATEBYID;
+ bbd.dwButtonID = IDC_CODE;
+ bbd.dwDefPos = 150;
+ bbd.hIcon = g_plugin.getIconHandle(IDI_CODE);
+ bbd.pszModuleName = SRMM_MODULE;
+ bbd.pwszTooltip = LPGENW("Custom bbcodes");
+ g_plugin.addButton(&bbd);
+ return 0;
+}
+
+static int OnToolbarClicked(WPARAM, LPARAM lParam)
+{
+ CustomButtonClickData *cbcd = (CustomButtonClickData *)lParam;
+ if (mir_strcmp(cbcd->pszModule, SRMM_MODULE))
+ return 0;
+
+ HMENU hMenu = CreatePopupMenu();
+ AppendMenuW(hMenu, MF_STRING, 1, TranslateT("[code]"));
+ AppendMenuW(hMenu, MF_STRING, 2, TranslateT("[quote]"));
+ int ret = TrackPopupMenu(hMenu, TPM_RETURNCMD, cbcd->pt.x, cbcd->pt.y, 0, cbcd->hwndFrom, nullptr);
+ if (ret != 0)
+ PostMessage(cbcd->hwndFrom, WM_COMMAND, IDC_CODE, ret);
+ return 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
void LoadSrmmToolbarModule()
{
CreateServiceFunction("SRMsg/BroadcastMessage", BroadcastMessage);
@@ -884,6 +917,9 @@ void LoadSrmmToolbarModule() dwSepCount = db_get_dw(0, BB_MODULE_NAME, "SeparatorsCount", 0);
CB_RegisterSeparators();
+
+ HookEvent(ME_MSG_BUTTONPRESSED, OnToolbarClicked);
+ HookEvent(ME_MSG_TOOLBARLOADED, OnToolbarLoaded);
}
void UnloadSrmmToolbarModule()
|