diff options
author | dartraiden <wowemuh@gmail.com> | 2024-02-19 20:13:12 +0300 |
---|---|---|
committer | dartraiden <wowemuh@gmail.com> | 2024-02-19 20:16:52 +0300 |
commit | 2f47988d1ef6672929762fba39fa69ef1b4dfa7a (patch) | |
tree | baa3433b11b1c44ab5a12c919ab004a24d645043 /plugins/NewStory/src/options.cpp | |
parent | f50885f33f7d1e129d719f06a43cc73518e0ffb1 (diff) |
NewStory:
- add [cX] tag to variables help
- convert sources to CR+LF
Diffstat (limited to 'plugins/NewStory/src/options.cpp')
-rw-r--r-- | plugins/NewStory/src/options.cpp | 669 |
1 files changed, 336 insertions, 333 deletions
diff --git a/plugins/NewStory/src/options.cpp b/plugins/NewStory/src/options.cpp index 1fa938c0c7..69ac03921d 100644 --- a/plugins/NewStory/src/options.cpp +++ b/plugins/NewStory/src/options.cpp @@ -1,333 +1,336 @@ -/* -Copyright (c) 2005 Victor Pavlychko (nullbyte@sotline.net.ua) -Copyright (C) 2012-24 Miranda NG team (https://miranda-ng.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 version 2 -of the License. - -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, see <http://www.gnu.org/licenses/>. -*/ - -#include "stdafx.h" - -///////////////////////////////////////////////////////////////////////////////////////// -// Basic options page class - -class CBaseOptsDlg : public CDlgBase -{ -protected: - CBaseOptsDlg(int iDlgId) : - CDlgBase(g_plugin, iDlgId) - { - m_OnFinishWizard = Callback(this, &CBaseOptsDlg::OnFinish); - } - - void OnFinish(void *) - { - WindowList_BroadcastAsync(g_hNewstoryLogs, NSM_SET_OPTIONS, 0, 0); - } -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// General options dialog - -class CGeneralOptsDlg : public CBaseOptsDlg -{ - CCtrlCheck chkGrouping, chkVScroll, chkDrawEdge, chkSortOrder, chkHppCompat; - CCtrlCheck chkShowType, chkShowDirection; - -public: - CGeneralOptsDlg() : - CBaseOptsDlg(IDD_OPT_ADVANCED), - chkVScroll(this, IDC_VSCROLL), - chkShowType(this, IDC_SHOW_TYPE), - chkDrawEdge(this, IDC_DRAWEDGE), - chkGrouping(this, IDC_GROUPING), - chkHppCompat(this, IDC_HPP_COMPAT), - chkSortOrder(this, IDC_SORT_ASCENDING), - chkShowDirection(this, IDC_SHOW_DIRECTION) - { - CreateLink(chkVScroll, g_plugin.bOptVScroll); - CreateLink(chkShowType, g_bShowType); - CreateLink(chkGrouping, g_bOptGrouping); - CreateLink(chkDrawEdge, g_bOptDrawEdge); - CreateLink(chkHppCompat, g_bOptHppCompat); - CreateLink(chkShowDirection, g_bShowDirection); - - CreateLink(chkSortOrder, g_plugin.bSortAscending); - } - - bool OnApply() override - { - g_plugin.LoadOptions(); - return true; - } -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// Template options dialog - -class CTemplateOptsDlg : public CBaseOptsDlg -{ - TemplateInfo *m_curr = 0; - ItemData m_tempItem; - - CCtrlBase preview, gpreview; - CCtrlEdit m_edit; - CCtrlColor clr0, clr1, clr2, clr3, clr4; - CCtrlMButton btnDiscard, bthVarHelp, btnReset; - CCtrlTreeView m_tree; - - UI_MESSAGE_MAP(CTemplateOptsDlg, CBaseOptsDlg); - UI_MESSAGE(UM_REDRAWLISTH, OnColorChanged); - UI_MESSAGE_MAP_END(); - - LRESULT OnColorChanged(UINT, WPARAM, LPARAM) - { - gpreview.SendMsg(MTM_SETBKCOLOR, g_colorTable[COLOR_BACK].cl, 0); - return 0; - } - -public: - CTemplateOptsDlg() : - CBaseOptsDlg(IDD_OPT_TEMPLATES), - clr0(this, IDC_COLOR1), - clr1(this, IDC_COLOR2), - clr2(this, IDC_COLOR3), - clr3(this, IDC_COLOR4), - clr4(this, IDC_COLOR5), - m_edit(this, IDC_EDITTEMPLATE), - m_tree(this, IDC_TEMPLATES), - preview(this, IDC_PREVIEW), - gpreview(this, IDC_GPREVIEW), - btnReset(this, IDC_RESET, Skin_LoadIcon(SKINICON_OTHER_UNDO), LPGEN("Reset to default")), - btnDiscard(this, IDC_DISCARD, g_plugin.getIcon(IDI_RESET), LPGEN("Cancel edit")), - bthVarHelp(this, IDC_VARHELP, g_plugin.getIcon(IDI_VARHELP), LPGEN("Variables help")) - { - CreateLink(clr0, g_clCustom0); - CreateLink(clr1, g_clCustom1); - CreateLink(clr2, g_clCustom2); - CreateLink(clr3, g_clCustom3); - CreateLink(clr4, g_clCustom4); - - btnReset.OnClick = Callback(this, &CTemplateOptsDlg::onClick_Reset); - btnDiscard.OnClick = Callback(this, &CTemplateOptsDlg::onClick_Discard); - bthVarHelp.OnClick = Callback(this, &CTemplateOptsDlg::onClick_Help); - - m_edit.OnChange = Callback(this, &CTemplateOptsDlg::onChange_Edit); - - m_tree.OnSelChanged = Callback(this, &CTemplateOptsDlg::onSelChanged); - } - - bool OnInitDialog() override - { - HIMAGELIST himgTree = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 | ILC_MASK, 1, 1); - m_tree.SetImageList(himgTree, TVSIL_NORMAL); - - ImageList_AddIcon(himgTree, g_plugin.getIcon(IDI_TPLGROUP)); - - m_tempItem.wszNick = TranslateT("Test contact"); - m_tempItem.wtext = mir_wstrdup(TranslateT("The quick brown fox jumps over the lazy dog.")); - m_tempItem.dbe.flags = DBEF_TEMPORARY | DBEF_BOOKMARK; - m_tempItem.dbe.szModule = MODULENAME; - m_tempItem.dbe.eventType = EVENTTYPE_MESSAGE; - m_tempItem.dbe.timestamp = time(0); - - HTREEITEM hGroup = 0, hFirst = 0; - const wchar_t *pwszPrevGroup = nullptr; - for (auto &it : templates) { - if (mir_wstrcmp(it.group, pwszPrevGroup)) { - if (hGroup) - m_tree.Expand(hGroup, TVE_EXPAND); - - TVINSERTSTRUCT tvis = {}; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT | TVIF_STATE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvis.item.state = tvis.item.stateMask = TVIS_BOLD; - tvis.item.pszText = TranslateW(it.group); - tvis.item.lParam = 0; - hGroup = m_tree.InsertItem(&tvis); - - if (!hFirst) - hFirst = hGroup; - } - - TVINSERTSTRUCT tvis; - tvis.hParent = hGroup; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvis.item.pszText = TranslateW(it.title); - tvis.item.iSelectedImage = tvis.item.iImage = ImageList_AddIcon(himgTree, it.getIcon()); - tvis.item.lParam = (LPARAM)⁢ - m_tree.InsertItem(&tvis); - - pwszPrevGroup = it.group; - } - - if (hGroup) - m_tree.Expand(hGroup, TVE_EXPAND); - - m_tree.SelectItem(hFirst); - m_tree.EnsureVisible(hFirst); - - WindowList_Add(g_hNewstoryWindows, m_hwnd); - OnColorChanged(0, 0, 0); - return true; - } - - bool OnApply() override - { - if (m_curr != nullptr) - replaceStrW(m_curr->tmpValue, m_edit.GetText()); - - for (auto &it : templates) { - if (it.tmpValue) { - replaceStrW(it.value, it.tmpValue); - it.tmpValue = nullptr; - } - } - - g_plugin.LoadOptions(); - onChange_Edit(); - SaveTemplates(); - return true; - } - - void OnDestroy() override - { - WindowList_Remove(g_hNewstoryWindows, m_hwnd); - - for (auto &it : templates) - replaceStrW(it.tmpValue, nullptr); - } - - void onClick_Reset(CCtrlButton *) - { - if (m_curr) { - replaceStrW(m_curr->tmpValue, nullptr); - replaceStrW(m_curr->value, nullptr); - m_edit.SetText(TranslateW(m_curr->defvalue)); - } - - onChange_Edit(); - NotifyChange(); - } - - void onClick_Discard(CCtrlButton *) - { - replaceStrW(m_curr->tmpValue, 0); - - if (m_curr->value) - m_edit.SetText(m_curr->value); - else - m_edit.SetText(TranslateW(m_curr->defvalue)); - - onChange_Edit(); - } - - void onClick_Help(CCtrlButton *) - { - CMStringW wszVarHelp; - wszVarHelp.Format(L"%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s", - L"%%", TranslateT("simply % character"), - L"%n", TranslateT("a \"hard\" line break (cr/lf - will break indent)"), - L"%S", TranslateT("my nickname"), - L"%N", TranslateT("buddy\'s nickname"), - L"%c", TranslateT("event count"), - L"%D", TranslateT("direction symbol"), - L"%t", TranslateT("timestamp"), - L"%h", TranslateT("hour (24 hour format, 0-23)"), - L"%a", TranslateT("hour (12 hour format)"), - L"%m", TranslateT("minute"), - L"%s", TranslateT("second"), - L"%o", TranslateT("month"), - L"%d", TranslateT("day of month"), - L"%y", TranslateT("year (4 digits)"), - L"%w", TranslateT("day of week (Sunday, Monday... translatable)"), - L"%p", TranslateT("AM/PM symbol"), - L"%O", TranslateT("name of month, translatable"), - L"%M", TranslateT("the message string itself")); - MessageBox(m_hwnd, wszVarHelp, TranslateT("Variables help"), MB_OK); - } - - void onChange_Edit(CCtrlEdit* = 0) - { - if (m_curr == nullptr) - return; - - replaceStrW(m_curr->tmpValue, m_edit.GetText()); - - m_tempItem.fill(int(m_curr - templates)); // copy data from template to event - - CMStringW wszText(m_tempItem.formatStringEx(m_curr->tmpValue)); - preview.SetText(wszText); - gpreview.SendMsg(MTM_UPDATEEX, MTEXT_FLG_RTF, LPARAM(m_tempItem.formatRtf(wszText).c_str())); - } - - void onSelChanged(CCtrlTreeView::TEventInfo *) - { - TVITEMEX tvi; - tvi.hItem = m_tree.GetSelection(); - tvi.mask = TVIF_PARAM; - m_tree.GetItem(&tvi); - - if (tvi.lParam == 0) { - m_edit.Disable(); - preview.Disable(); - gpreview.Disable(); - btnDiscard.Disable(); - bthVarHelp.Disable(); - - HTREEITEM hItem = m_tree.GetChild(tvi.hItem); - if (hItem) - m_tree.Expand(tvi.hItem, TVE_EXPAND); - return; - } - - m_edit.Enable(); - preview.Enable(); - gpreview.Enable(); - btnDiscard.Enable(); - bthVarHelp.Enable(); - - if (m_curr != nullptr) - replaceStrW(m_curr->tmpValue, m_edit.GetText()); - - m_curr = (TemplateInfo *)tvi.lParam; - - if (m_curr->tmpValue) - m_edit.SetText(m_curr->tmpValue); - else if (m_curr->value) - m_edit.SetText(m_curr->value); - else - m_edit.SetText(TranslateW(m_curr->defvalue)); - - onChange_Edit(); - } -}; - -int OptionsInitialize(WPARAM wParam, LPARAM) -{ - OPTIONSDIALOGPAGE odp = {}; - odp.position = 100000000; - odp.szGroup.a = LPGEN("History"); - odp.szTitle.a = LPGEN("NewStory"); - odp.flags = ODPF_BOLDGROUPS; - - odp.szTab.a = LPGEN("Templates"); - odp.pDialog = new CTemplateOptsDlg(); - g_plugin.addOptions(wParam, &odp); - - odp.szTab.a = LPGEN("Advanced"); - odp.pDialog = new CGeneralOptsDlg(); - g_plugin.addOptions(wParam, &odp); - return 0; -} +/*
+Copyright (c) 2005 Victor Pavlychko (nullbyte@sotline.net.ua)
+Copyright (C) 2012-24 Miranda NG team (https://miranda-ng.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 version 2
+of the License.
+
+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, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stdafx.h"
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Basic options page class
+
+class CBaseOptsDlg : public CDlgBase
+{
+protected:
+ CBaseOptsDlg(int iDlgId) :
+ CDlgBase(g_plugin, iDlgId)
+ {
+ m_OnFinishWizard = Callback(this, &CBaseOptsDlg::OnFinish);
+ }
+
+ void OnFinish(void *)
+ {
+ WindowList_BroadcastAsync(g_hNewstoryLogs, NSM_SET_OPTIONS, 0, 0);
+ }
+};
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// General options dialog
+
+class CGeneralOptsDlg : public CBaseOptsDlg
+{
+ CCtrlCheck chkGrouping, chkVScroll, chkDrawEdge, chkSortOrder, chkHppCompat;
+ CCtrlCheck chkShowType, chkShowDirection;
+
+public:
+ CGeneralOptsDlg() :
+ CBaseOptsDlg(IDD_OPT_ADVANCED),
+ chkVScroll(this, IDC_VSCROLL),
+ chkShowType(this, IDC_SHOW_TYPE),
+ chkDrawEdge(this, IDC_DRAWEDGE),
+ chkGrouping(this, IDC_GROUPING),
+ chkHppCompat(this, IDC_HPP_COMPAT),
+ chkSortOrder(this, IDC_SORT_ASCENDING),
+ chkShowDirection(this, IDC_SHOW_DIRECTION)
+ {
+ CreateLink(chkVScroll, g_plugin.bOptVScroll);
+ CreateLink(chkShowType, g_bShowType);
+ CreateLink(chkGrouping, g_bOptGrouping);
+ CreateLink(chkDrawEdge, g_bOptDrawEdge);
+ CreateLink(chkHppCompat, g_bOptHppCompat);
+ CreateLink(chkShowDirection, g_bShowDirection);
+
+ CreateLink(chkSortOrder, g_plugin.bSortAscending);
+ }
+
+ bool OnApply() override
+ {
+ g_plugin.LoadOptions();
+ return true;
+ }
+};
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Template options dialog
+
+class CTemplateOptsDlg : public CBaseOptsDlg
+{
+ TemplateInfo *m_curr = 0;
+ ItemData m_tempItem;
+
+ CCtrlBase preview, gpreview;
+ CCtrlEdit m_edit;
+ CCtrlColor clr0, clr1, clr2, clr3, clr4;
+ CCtrlMButton btnDiscard, bthVarHelp, btnReset;
+ CCtrlTreeView m_tree;
+
+ UI_MESSAGE_MAP(CTemplateOptsDlg, CBaseOptsDlg);
+ UI_MESSAGE(UM_REDRAWLISTH, OnColorChanged);
+ UI_MESSAGE_MAP_END();
+
+ LRESULT OnColorChanged(UINT, WPARAM, LPARAM)
+ {
+ gpreview.SendMsg(MTM_SETBKCOLOR, g_colorTable[COLOR_BACK].cl, 0);
+ return 0;
+ }
+
+public:
+ CTemplateOptsDlg() :
+ CBaseOptsDlg(IDD_OPT_TEMPLATES),
+ clr0(this, IDC_COLOR1),
+ clr1(this, IDC_COLOR2),
+ clr2(this, IDC_COLOR3),
+ clr3(this, IDC_COLOR4),
+ clr4(this, IDC_COLOR5),
+ m_edit(this, IDC_EDITTEMPLATE),
+ m_tree(this, IDC_TEMPLATES),
+ preview(this, IDC_PREVIEW),
+ gpreview(this, IDC_GPREVIEW),
+ btnReset(this, IDC_RESET, Skin_LoadIcon(SKINICON_OTHER_UNDO), LPGEN("Reset to default")),
+ btnDiscard(this, IDC_DISCARD, g_plugin.getIcon(IDI_RESET), LPGEN("Cancel edit")),
+ bthVarHelp(this, IDC_VARHELP, g_plugin.getIcon(IDI_VARHELP), LPGEN("Variables help"))
+ {
+ CreateLink(clr0, g_clCustom0);
+ CreateLink(clr1, g_clCustom1);
+ CreateLink(clr2, g_clCustom2);
+ CreateLink(clr3, g_clCustom3);
+ CreateLink(clr4, g_clCustom4);
+
+ btnReset.OnClick = Callback(this, &CTemplateOptsDlg::onClick_Reset);
+ btnDiscard.OnClick = Callback(this, &CTemplateOptsDlg::onClick_Discard);
+ bthVarHelp.OnClick = Callback(this, &CTemplateOptsDlg::onClick_Help);
+
+ m_edit.OnChange = Callback(this, &CTemplateOptsDlg::onChange_Edit);
+
+ m_tree.OnSelChanged = Callback(this, &CTemplateOptsDlg::onSelChanged);
+ }
+
+ bool OnInitDialog() override
+ {
+ HIMAGELIST himgTree = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 | ILC_MASK, 1, 1);
+ m_tree.SetImageList(himgTree, TVSIL_NORMAL);
+
+ ImageList_AddIcon(himgTree, g_plugin.getIcon(IDI_TPLGROUP));
+
+ m_tempItem.wszNick = TranslateT("Test contact");
+ m_tempItem.wtext = mir_wstrdup(TranslateT("The quick brown fox jumps over the lazy dog."));
+ m_tempItem.dbe.flags = DBEF_TEMPORARY | DBEF_BOOKMARK;
+ m_tempItem.dbe.szModule = MODULENAME;
+ m_tempItem.dbe.eventType = EVENTTYPE_MESSAGE;
+ m_tempItem.dbe.timestamp = time(0);
+
+ HTREEITEM hGroup = 0, hFirst = 0;
+ const wchar_t *pwszPrevGroup = nullptr;
+ for (auto &it : templates) {
+ if (mir_wstrcmp(it.group, pwszPrevGroup)) {
+ if (hGroup)
+ m_tree.Expand(hGroup, TVE_EXPAND);
+
+ TVINSERTSTRUCT tvis = {};
+ tvis.hInsertAfter = TVI_LAST;
+ tvis.item.mask = TVIF_TEXT | TVIF_STATE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ tvis.item.state = tvis.item.stateMask = TVIS_BOLD;
+ tvis.item.pszText = TranslateW(it.group);
+ tvis.item.lParam = 0;
+ hGroup = m_tree.InsertItem(&tvis);
+
+ if (!hFirst)
+ hFirst = hGroup;
+ }
+
+ TVINSERTSTRUCT tvis;
+ tvis.hParent = hGroup;
+ tvis.hInsertAfter = TVI_LAST;
+ tvis.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ tvis.item.pszText = TranslateW(it.title);
+ tvis.item.iSelectedImage = tvis.item.iImage = ImageList_AddIcon(himgTree, it.getIcon());
+ tvis.item.lParam = (LPARAM)⁢
+ m_tree.InsertItem(&tvis);
+
+ pwszPrevGroup = it.group;
+ }
+
+ if (hGroup)
+ m_tree.Expand(hGroup, TVE_EXPAND);
+
+ m_tree.SelectItem(hFirst);
+ m_tree.EnsureVisible(hFirst);
+
+ WindowList_Add(g_hNewstoryWindows, m_hwnd);
+ OnColorChanged(0, 0, 0);
+ return true;
+ }
+
+ bool OnApply() override
+ {
+ if (m_curr != nullptr)
+ replaceStrW(m_curr->tmpValue, m_edit.GetText());
+
+ for (auto &it : templates) {
+ if (it.tmpValue) {
+ replaceStrW(it.value, it.tmpValue);
+ it.tmpValue = nullptr;
+ }
+ }
+
+ g_plugin.LoadOptions();
+ onChange_Edit();
+ SaveTemplates();
+ return true;
+ }
+
+ void OnDestroy() override
+ {
+ WindowList_Remove(g_hNewstoryWindows, m_hwnd);
+
+ for (auto &it : templates)
+ replaceStrW(it.tmpValue, nullptr);
+ }
+
+ void onClick_Reset(CCtrlButton *)
+ {
+ if (m_curr) {
+ replaceStrW(m_curr->tmpValue, nullptr);
+ replaceStrW(m_curr->value, nullptr);
+ m_edit.SetText(TranslateW(m_curr->defvalue));
+ }
+
+ onChange_Edit();
+ NotifyChange();
+ }
+
+ void onClick_Discard(CCtrlButton *)
+ {
+ replaceStrW(m_curr->tmpValue, 0);
+
+ if (m_curr->value)
+ m_edit.SetText(m_curr->value);
+ else
+ m_edit.SetText(TranslateW(m_curr->defvalue));
+
+ onChange_Edit();
+ }
+
+ void onClick_Help(CCtrlButton *)
+ {
+ CMStringW wszVarHelp;
+ wszVarHelp.Format(L"%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s",
+ L"%%", TranslateT("simply % character"),
+ L"%n", TranslateT("a \"hard\" line break (cr/lf - will break indent)"),
+ L"%S", TranslateT("my nickname"),
+ L"%N", TranslateT("buddy\'s nickname"),
+ L"%c", TranslateT("event count"),
+ L"%D", TranslateT("direction symbol"),
+ L"%t", TranslateT("timestamp"),
+ L"%h", TranslateT("hour (24 hour format, 0-23)"),
+ L"%a", TranslateT("hour (12 hour format)"),
+ L"%m", TranslateT("minute"),
+ L"%s", TranslateT("second"),
+ L"%o", TranslateT("month"),
+ L"%d", TranslateT("day of month"),
+ L"%y", TranslateT("year (4 digits)"),
+ L"%w", TranslateT("day of week (Sunday, Monday... translatable)"),
+ L"%p", TranslateT("AM/PM symbol"),
+ L"%O", TranslateT("name of month, translatable"),
+ L"%M", TranslateT("the message string itself"),
+ L"[c0]", TranslateT("default text color"),
+ L"[c1]", TranslateT("nickname's color"),
+ L"[c2]-[c6]", TranslateT("one of the user defined custom color from the options page for the following text output (X is a number from 2 to 6, referring to the color index)"));
+ MessageBox(m_hwnd, wszVarHelp, TranslateT("Variables help"), MB_OK);
+ }
+
+ void onChange_Edit(CCtrlEdit* = 0)
+ {
+ if (m_curr == nullptr)
+ return;
+
+ replaceStrW(m_curr->tmpValue, m_edit.GetText());
+
+ m_tempItem.fill(int(m_curr - templates)); // copy data from template to event
+
+ CMStringW wszText(m_tempItem.formatStringEx(m_curr->tmpValue));
+ preview.SetText(wszText);
+ gpreview.SendMsg(MTM_UPDATEEX, MTEXT_FLG_RTF, LPARAM(m_tempItem.formatRtf(wszText).c_str()));
+ }
+
+ void onSelChanged(CCtrlTreeView::TEventInfo *)
+ {
+ TVITEMEX tvi;
+ tvi.hItem = m_tree.GetSelection();
+ tvi.mask = TVIF_PARAM;
+ m_tree.GetItem(&tvi);
+
+ if (tvi.lParam == 0) {
+ m_edit.Disable();
+ preview.Disable();
+ gpreview.Disable();
+ btnDiscard.Disable();
+ bthVarHelp.Disable();
+
+ HTREEITEM hItem = m_tree.GetChild(tvi.hItem);
+ if (hItem)
+ m_tree.Expand(tvi.hItem, TVE_EXPAND);
+ return;
+ }
+
+ m_edit.Enable();
+ preview.Enable();
+ gpreview.Enable();
+ btnDiscard.Enable();
+ bthVarHelp.Enable();
+
+ if (m_curr != nullptr)
+ replaceStrW(m_curr->tmpValue, m_edit.GetText());
+
+ m_curr = (TemplateInfo *)tvi.lParam;
+
+ if (m_curr->tmpValue)
+ m_edit.SetText(m_curr->tmpValue);
+ else if (m_curr->value)
+ m_edit.SetText(m_curr->value);
+ else
+ m_edit.SetText(TranslateW(m_curr->defvalue));
+
+ onChange_Edit();
+ }
+};
+
+int OptionsInitialize(WPARAM wParam, LPARAM)
+{
+ OPTIONSDIALOGPAGE odp = {};
+ odp.position = 100000000;
+ odp.szGroup.a = LPGEN("History");
+ odp.szTitle.a = LPGEN("NewStory");
+ odp.flags = ODPF_BOLDGROUPS;
+
+ odp.szTab.a = LPGEN("Templates");
+ odp.pDialog = new CTemplateOptsDlg();
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("Advanced");
+ odp.pDialog = new CGeneralOptsDlg();
+ g_plugin.addOptions(wParam, &odp);
+ return 0;
+}
|