4#ifndef __LedLineItView_h__
5#define __LedLineItView_h__ 1
7#include "Stroika/Frameworks/StroikaPreComp.h"
9#include "Stroika/Frameworks/Led/Platform/MFC.h"
10#include "Stroika/Frameworks/Led/SimpleTextInteractor.h"
11#include "Stroika/Frameworks/Led/SyntaxColoring.h"
13#include "LedLineItConfig.h"
18using namespace Stroika::Frameworks::Led;
19using namespace Stroika::Frameworks::Led::Platform;
21DISABLE_COMPILER_MSC_WARNING_START (4250)
23#if qSupportSyntaxColoring
24struct LedLineItMFCBaseClass :
public Led_MFC_X<SimpleTextInteractor>,
public StyledTextImager {
26 virtual DistanceType MeasureSegmentHeight (
size_t from,
size_t to)
const override
28 return Led_MFC_X<SimpleTextInteractor>::MeasureSegmentHeight (from, to);
30 virtual DistanceType MeasureSegmentBaseLine (
size_t from,
size_t to)
const override
32 return Led_MFC_X<SimpleTextInteractor>::MeasureSegmentBaseLine (from, to);
36struct LedLineItMFCBaseClass :
public Led_MFC_X<SimpleTextInteractor> {};
39class LedLineItDocument;
41class LedLineItView :
public LedLineItMFCBaseClass {
43 using inherited = LedLineItMFCBaseClass;
47 DECLARE_DYNCREATE (LedLineItView)
50 virtual ~LedLineItView ();
53 virtual void OnInitialUpdate ()
override;
55#if qSupportSyntaxColoring
57 nonvirtual
void ResetSyntaxColoringTable ();
60 virtual void HookLosingTextStore ()
override;
61 virtual void HookGainedNewTextStore ()
override;
64#if qSupportSyntaxColoring
66 virtual vector<StyleRunElement> SummarizeStyleMarkers (
size_t from,
size_t to)
const override;
67 virtual vector<StyleRunElement> SummarizeStyleMarkers (
size_t from,
size_t to,
const TextLayoutBlock& text)
const override;
71 nonvirtual
size_t GetCurUserLine ()
const;
72 nonvirtual
void SetCurUserLine (
size_t newCurLine);
75 virtual void UpdateScrollBars ()
override;
78 virtual DistanceType ComputeMaxHScrollPos ()
const override;
81 mutable DistanceType fCachedLayoutWidth;
84 virtual void OnTypedNormalCharacter (Led_tChar theChar,
bool optionPressed,
bool shiftPressed,
bool commandPressed,
bool controlPressed,
85 bool altKeyPressed)
override;
88 virtual const TabStopList& GetTabStopList (
size_t )
const override;
91 virtual void TabletChangedMetrics ()
override;
94 SimpleTabStopList fTabStopList;
97 virtual void DidUpdateText (
const UpdateInfo& updateInfo)
noexcept override;
100 nonvirtual LedLineItDocument& GetDocument ()
const;
103 afx_msg
void OnContextMenu (CWnd* , CPoint );
106 virtual BOOL IsSelected (
const CObject* pDocItem)
const override;
109 afx_msg
void OnUpdateFontNameChangeCommand (CCmdUI* pCmdUI);
110 afx_msg
void OnFontNameChangeCommand (UINT cmdNum);
113 DistanceType PickOtherFontHeight (DistanceType origHeight);
116 afx_msg
void OnUpdateFontSizeChangeCommand (CCmdUI* pCmdUI);
117 afx_msg
void OnFontSizeChangeCommand (UINT cmdNum);
120 afx_msg
void OnGotoLineCommand ();
121 afx_msg
void OnShiftLeftCommand ();
122 afx_msg
void OnShiftRightCommand ();
123 nonvirtual
void OnShiftNCommand (
bool shiftRight);
125#if qSupportGenRandomCombosCommand
127 afx_msg
void OnGenRandomCombosCommand ();
131 virtual SearchParameters GetSearchParameters ()
const override;
132 virtual void SetSearchParameters (
const SearchParameters& sp)
override;
135 afx_msg
void OnSetFocus (CWnd* pOldWnd);
136 afx_msg
void OnCancelEditCntr ();
137 afx_msg
void OnCancelEditSrvr ();
138 afx_msg
void OnSelectAllCommand ();
139 afx_msg
void OnChooseFontCommand ();
140 DECLARE_MESSAGE_MAP ()
142#if qSupportSyntaxColoring
144#if qSupportOnlyMarkersWhichOverlapVisibleRegion
145 WindowedSyntaxColoringMarkerOwner* fSyntaxColoringMarkerOwner;
147 SimpleSyntaxColoringMarkerOwner* fSyntaxColoringMarkerOwner;
153 virtual void AssertValid ()
const override;
154 virtual void Dump (CDumpContext& dc)
const override;
157DISABLE_COMPILER_MSC_WARNING_END (4250)
159class FontDlgWithNoColorNoStyles : public CFontDialog {
161 FontDlgWithNoColorNoStyles (LOGFONT* lf);
162 virtual BOOL OnInitDialog ()
override;
170#if !qStroika_Foundation_Debug_AssertionsChecked
171inline LedLineItDocument& LedLineItView::GetDocument ()
const
173 return *(LedLineItDocument*)m_pDocument;