Exteor/include/xtr/dialog/TerminRefDlg.h

73 lines
1.5 KiB
C
Raw Permalink Normal View History

2024-06-07 20:30:06 +03:00
#pragma once
#include "xtr/doc/RSFacade.h"
namespace xtr::dialog {
//! Choose term data parameters
class TerminRefDlg final : public CDialog {
CListBox singForms{};
CListBox plurForms{};
CListBox captionList{};
enum ACStatus : int32_t {
ACS_TERMS,
ACS_WORDFORMS,
};
ACStatus state{ ACS_TERMS };
CPoint position;
CString initialText;
doc::RSFacade& editor;
std::vector<std::string> entities{};
std::string cstName{};
ccl::lang::Morphology termForm{};
public:
TerminRefDlg(doc::RSFacade& editor, CPoint position, CString selection, CWnd* pParent = nullptr);
private:
BOOL OnInitDialog() override;
void DoDataExchange(CDataExchange* pDX) override;
public:
[[nodiscard]] ccl::lang::Reference CreateRef() const;
private:
BOOL PreTranslateMessage(MSG* pMsg) override;
private:
void SetPositionAndSize(BOOL fitBoth = FALSE);
void SelectTermRef();
void SelectTermForm(int32_t selection, ccl::lang::Grammem plurality);
void ChangeTermForm(CListBox* selectedCListBox, ccl::lang::Grammem plurality);
void UpdateContextNameList();
};
//! Edit form of a term
class TermFormDlg final : public CDialog {
public:
TermFormDlg(CString initText, RECT position, CWnd* pParent = nullptr);
private:
void DoDataExchange(CDataExchange* pDX) override;
BOOL OnInitDialog() override;
public:
CString termFormText;
private:
CEdit textControl;
RECT position;
private:
BOOL PreTranslateMessage(MSG* pMsg) override;
private:
void SetPositionAndSize();
};
} // namespace xtr::dialog