зеркало из https://github.com/mozilla/pjs.git
IDIOT!! sorry. added 2 of 4 files
This commit is contained in:
Родитель
8803a12976
Коммит
fe96c3d27c
|
@ -0,0 +1,207 @@
|
|||
#include "stdafx.h"
|
||||
#include "enderwrp.h"
|
||||
#include "edview.h"
|
||||
#include "edt.h"
|
||||
#include "netsdoc.h"
|
||||
#include "compstd.h"
|
||||
#include "compfrm.h"
|
||||
|
||||
|
||||
IMPLEMENT_DYNCREATE(CEnderView, CView)
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CEnderView, CView)
|
||||
//{{AFX_MSG_MAP(CEnderView)
|
||||
ON_WM_DESTROY()
|
||||
ON_MESSAGE(WM_TOOLCONTROLLER,OnToolController)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
|
||||
CEnderView::CEnderView(CAbstractCX *p_pCx)
|
||||
:m_pEditView(NULL),m_pToolBarController(NULL),m_pCX(p_pCx)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
CEnderView::~CEnderView()
|
||||
{
|
||||
if (m_pEditView)
|
||||
{
|
||||
m_pEditView->DestroyWindow();
|
||||
}
|
||||
#if 0
|
||||
if (m_pToolbar)
|
||||
m_pToolbar->DestroyWindow();
|
||||
#endif //0
|
||||
}
|
||||
|
||||
void CEnderView::OnDestroy()
|
||||
{
|
||||
if (m_pEditView)
|
||||
{
|
||||
CNetscapeDoc* pDoc = (CNetscapeDoc *)m_pEditView->GetDocument();
|
||||
//warning! do not allow the CWinCX to RE-FREE its frame.
|
||||
//we are borrowning the frame from the "browser window or layer"
|
||||
//call ClearFrame to "Clear the frame"
|
||||
CWinCX *pCX = m_pEditView->GetContext();
|
||||
if (pCX)
|
||||
{
|
||||
pCX->ClearFrame();//NOT WORKING, MUST FIX
|
||||
EDT_DestroyEditBuffer(pCX->GetContext());
|
||||
}
|
||||
m_pEditView->DestroyWindow();
|
||||
if (pDoc)
|
||||
delete pDoc;
|
||||
m_pEditView=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void CEnderView::OnDraw(CDC *pDC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
BOOL
|
||||
CEnderView::Create(CWnd *pParent, lo_FormElementTextareaData *pData, LO_TextAttr *pTextAttr)
|
||||
{
|
||||
if (!CView::Create(NULL, NULL, WS_CHILD | WS_BORDER | WS_TABSTOP,CRect(0,0,1,1),pParent,ID_ENDER+1,NULL))
|
||||
return FALSE;
|
||||
if (m_pEditView)
|
||||
{
|
||||
assert(FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
if(m_pCX)
|
||||
{
|
||||
if(m_pCX->IsWindowContext() && VOID2CX(m_pCX, CPaneCX)->GetPane())
|
||||
{
|
||||
// Need a widget representation.
|
||||
//create a new CPaneCX
|
||||
CNetscapeDoc* pDoc = new CNetscapeDoc();
|
||||
m_pEditView = new CNetscapeEditView();
|
||||
m_pEditView->SetEmbedded(TRUE);
|
||||
RECT rect;
|
||||
rect.left=0;
|
||||
rect.top=0;
|
||||
rect.right=1;
|
||||
rect.bottom=1;
|
||||
if (!m_pEditView->Create(NULL, NULL,
|
||||
WS_CHILD | WS_VSCROLL | ES_LEFT | WS_TABSTOP | ES_MULTILINE //AFX_WS_DEFAULT_VIEW
|
||||
, rect,
|
||||
this, ID_ENDER, NULL))
|
||||
{
|
||||
TRACE("Warning: could not create view for frame.\n");
|
||||
m_pEditView=NULL;
|
||||
return FALSE;
|
||||
}
|
||||
CPaneCX* cx= VOID2CX(m_pCX, CPaneCX);
|
||||
HWND hwnd= cx->GetPane();
|
||||
CWnd *pwnd= CWnd::FromHandle(hwnd);
|
||||
CGenericView *genview=NULL;
|
||||
if (pwnd->IsKindOf(RUNTIME_CLASS(CGenericView)))
|
||||
genview=(CGenericView *)pwnd;
|
||||
if (!genview)
|
||||
return FALSE;
|
||||
CWinCX* pDontCare = new CWinCX((CGenericDoc *)pDoc,
|
||||
genview->GetFrame(), (CGenericView *)m_pEditView);
|
||||
pDontCare->GetContext()->is_editor = TRUE;
|
||||
m_pEditView->SetContext(pDontCare);
|
||||
pDontCare->Initialize(pDontCare->CDCCX::IsOwnDC(), &rect);
|
||||
pDontCare->NormalGetUrl(EDT_NEW_DOC_URL);
|
||||
//ADJUST THE SIZE OF THE WINDOW ACCORDING TO ROWS AND COLS EVEN THOUGH THAT IS NOT ACCURATE
|
||||
// Measure some text.
|
||||
CDC *pDC = m_pEditView->GetDC();
|
||||
CyaFont *pMyFont;
|
||||
if(pDC)
|
||||
{
|
||||
CDC t_dc;
|
||||
t_dc.CreateCompatibleDC( pDC );
|
||||
CDCCX *pDCCX = VOID2CX(m_pCX, CDCCX);
|
||||
pDCCX->SelectNetscapeFont( t_dc.GetSafeHdc(), pTextAttr, pMyFont );
|
||||
if (pMyFont)
|
||||
{
|
||||
//SetWidgetFont(pDC->GetSafeHdc(), m_pEditView->m_hWnd);
|
||||
//GetElement()->text_attr->FE_Data = pMyFont;
|
||||
// Default length is 20
|
||||
// Default lines is 1
|
||||
int32 lLength = 20;
|
||||
int32 lLines = 1;
|
||||
|
||||
// See if we can measure the default text, and/or
|
||||
// set up the size and size limits.
|
||||
if(pData)
|
||||
{
|
||||
if(pData->cols > 0) {
|
||||
// Use provided size.
|
||||
lLength = pData->cols;
|
||||
}
|
||||
if(pData->rows > 0) {
|
||||
// Use provided size.
|
||||
lLines = pData->rows;
|
||||
}
|
||||
}
|
||||
|
||||
// Now figure up the width and height we would like.
|
||||
// int32 lWidgetWidth = (lLength + 1) * tm.tmAveCharWidth + sysInfo.m_iScrollWidth;
|
||||
// int32 lWidgetHeight = (lLines + 1) * tm.tmHeight;
|
||||
int32 lWidgetWidth = (lLength + 1) * pMyFont->GetMeanWidth() + sysInfo.m_iScrollWidth;
|
||||
int32 lWidgetHeight = (lLines + 1) * pMyFont->GetHeight();
|
||||
|
||||
// If no word wrapping, account a horizontal scrollbar.
|
||||
if(pData->auto_wrap == TEXTAREA_WRAP_OFF) {
|
||||
lWidgetHeight += sysInfo.m_iScrollHeight;
|
||||
}
|
||||
|
||||
// Move the window.
|
||||
m_pEditView->MoveWindow(0, 32, CASTINT(lWidgetWidth)-5, CASTINT(lWidgetHeight)-4, FALSE);
|
||||
MoveWindow(1, 1, CASTINT(lWidgetWidth), CASTINT(lWidgetHeight+32), FALSE);
|
||||
|
||||
// Create the HTML edit toolbars. There are currently two separate
|
||||
// toolbars.. one for formats and another for character operations.
|
||||
m_pToolBarController = new CEditToolBarController(this);
|
||||
if (!m_pToolBarController || !m_pToolBarController->CreateEditBars(m_pCX->GetContext(), m_pEditView, DISPLAY_CHARACTER_TOOLBAR))
|
||||
{
|
||||
TRACE("Bad ComposeBar");
|
||||
if (m_pToolBarController)
|
||||
delete m_pToolBarController;
|
||||
m_pToolBarController = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CComboToolBar *t_combobar=m_pToolBarController->GetCharacterBar();
|
||||
t_combobar->MoveWindow(0,0,CASTINT(lWidgetWidth),32,FALSE);
|
||||
t_combobar->ShowWindow(SW_SHOW);
|
||||
pDCCX->ReleaseNetscapeFont( t_dc.GetSafeHdc(), pMyFont );
|
||||
pDCCX->ReleaseContextDC(t_dc.GetSafeHdc());
|
||||
m_pEditView->ReleaseDC(pDC);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pEditView->ReleaseDC(pDC);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if(m_pCX->IsPureDCContext())
|
||||
{
|
||||
// Need a drawn representation.
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
LONG
|
||||
CEnderView::OnToolController(UINT,LONG)
|
||||
{
|
||||
return (LONG)m_pToolBarController;
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef ENDERWRP_H
|
||||
#define ENDERWRP_H
|
||||
#include "lo_ele.h"
|
||||
|
||||
class CNetscapeEditView;
|
||||
class CEditToolBarController;
|
||||
|
||||
class CEnderView: public CView
|
||||
{
|
||||
public:
|
||||
CEnderView(CAbstractCX *p_pCx);
|
||||
CEnderView(){};
|
||||
~CEnderView();
|
||||
BOOL Create(CWnd *pParent, lo_FormElementTextareaData *pData, LO_TextAttr *pTextAttr);
|
||||
virtual void OnDraw(CDC *pDC);
|
||||
CNetscapeEditView *GetEditView(){return m_pEditView;}
|
||||
protected:
|
||||
DECLARE_DYNCREATE(CEnderView)
|
||||
//{{AFX_MSG(CEnderView)
|
||||
afx_msg void OnDestroy();
|
||||
afx_msg LONG OnToolController(UINT,LONG);
|
||||
//}}AFX_MSG
|
||||
private:
|
||||
CNetscapeEditView *m_pEditView;
|
||||
CEditToolBarController *m_pToolBarController;
|
||||
CAbstractCX *m_pCX;
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
#endif //ENDERWRP_H
|
||||
|
Загрузка…
Ссылка в новой задаче