blob: f43513566cd24bef7677e236277f3da4a33fcddf [file] [log] [blame]
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef _JS_CONSOLE_H_
#define _JS_CONSOLE_H_
#include "../res/resource.h"
#define WST_NONE 0x00 // No size changed
#define WST_LEFT 0x01 // size to left
#define WST_TOP 0x02 // size to top
#define WST_RIGHT 0x04 // size to right
#define WST_BOTTOM 0x08 // size to bottom
#define WST_TOPLEFT (WST_TOP|WST_LEFT) // size to top & left
#define WST_TOPRIGHT (WST_TOP|WST_RIGHT) // size to top & right
#define WST_BOTTOMRIGHT (WST_BOTTOM|WST_RIGHT) // size to bottom & right
#define WST_BOTTOMLEFT (WST_BOTTOM|WST_LEFT) // size to bottom & right
#ifndef IDC_DLGSIZEBOX
#define IDC_DLGSIZEBOX 50
#endif /* IDC_DLGSIZEBOX */
enum { m_idSizeIcon = IDC_DLGSIZEBOX };
enum { // possible Control reSize Type
CST_NONE = 0,
CST_RESIZE, // NOMOVE + SIZE, add all delta-size of dlg to control
CST_REPOS, // MOVE(absolutely) + NOSIZE, move control's pos by delta-size
CST_RELATIVE, // MOVE(proportional) + NOSIZE, keep control always at a relative pos
CST_ZOOM, // MOVE + SIZE (both are automatically proportional)
CST_DELTA_ZOOM // MOVE(proportional, set manually) + SIZE(proportional, set manuall)
};
// contained class to hold item state
//
class CJS_ItemCtrl
{
public:
UINT m_nID;
UINT m_stxLeft : 4; // when left resizing ...
UINT m_stxRight : 4; // when right resizing ...
UINT m_styTop : 4; // when top resizing ...
UINT m_styBottom : 4; // when bottom resizing ...
UINT m_bFlickerFree : 1;
UINT m_bInvalidate : 1; // Invalidate ctrl's rect(eg. no-automatical update for static when resize+move)
UINT m_r0 : 14;
CRect m_wRect;
double m_xRatio, m_cxRatio;
double m_yRatio, m_cyRatio;
protected:
void Assign(const CJS_ItemCtrl& src);
public:
CJS_ItemCtrl();
CJS_ItemCtrl(const CJS_ItemCtrl& src);
HDWP OnSize(HDWP hdwp, int sizeType, CRect *pnCltRect, CRect *poCltRect, CRect *pR0, CWnd *pDlg);
CJS_ItemCtrl& operator=(const CJS_ItemCtrl& src);
};
class CJS_ResizeDlg : public CDialog
{
// DECLARE_DYNAMIC(CJS_ResizeDlg)
public:
CJS_ResizeDlg(UINT nID,CWnd *pParentWnd = NULL);
virtual ~CJS_ResizeDlg();
public:
std::vector<CJS_ItemCtrl> m_Items; // array of controlled items
CRect m_cltRect, m_cltR0;
int m_xMin, m_yMin;
int m_xSt, m_ySt; //step?
UINT m_nDelaySide; //drag side of window
CStatic m_wndSizeIcon; // size icon window
protected:
void AddControl( UINT nID, int xl, int xr, int yt, int yb, int bFlickerFree = 0,
double xRatio = -1.0, double cxRatio = -1.0,
double yRatio = -1.0, double cyRatio = -1.0 );
void AllowSizing(int xst, int yst);
void HideSizeIcon(void);
virtual BOOL OnInitDialog();
void OnSizing(UINT nSide, LPRECT lpRect);
void OnSize(UINT nType, int cx, int cy);
void OnGetMinMaxInfo(MINMAXINFO *pmmi);
BOOL OnEraseBkgnd(CDC* pDC);
public:
int UpdateControlRect(UINT nID, CRect *pnr);
};
//------------------------CIconListBox for CWndElementList-------------------------------------
class CIconListBox : public CListBox
{
public:
CIconListBox();
virtual ~CIconListBox();
public:
int InsertString(int nIndex, LPCWSTR lpszItem , int nImage);
virtual void ResetContent();
virtual void GetText(int nIndex, CString& rString);
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
protected:
// Generated message map functions
//{{AFX_MSG(CIconListBox)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
struct ItemDatas
{
CString csText;
int nImage;
};
};
//----------------------------------CWndElementList--------------------------------------------
#define IDC_LIST_JS_ELEMENT 10070
#define ELEMENT_LIST_WIDTH 140
#define ELEMENT_LIST_HEIGHT 180
#define ELEMENT_LIST_TOP_OFFSET 13
#define ELEMENT_TYPE_NAME 0
#define ELEMENT_TYPE_CONST 1
#define ELEMENT_TYPE_FUN 2
#define ELEMENT_TYPE_PRO 3
class CWndElementList : public CWnd
{
public:
CWndElementList();
virtual ~CWndElementList();
public:
virtual void OnSize(UINT nType, int cx, int cy);
virtual BOOL Create(CWnd* pParentWnd);
virtual BOOL ShowWindow(int nCmdShow);
void RemoveAllElement();
void SetElementList(LPCWSTR* pElement, int* pType , int iCount);
void AddElement(CFX_WideString csValue , int nType);
BOOL GetElementSel(CString &csElement);
BOOL SelectNext();
BOOL SelectPrevious();
BOOL SelectFirst();
BOOL SelectLast();
BOOL SelectNextPage();
BOOL SelectPreviousPage();
int GetListHeight();
protected:
// Generated message map functions
//{{AFX_MSG(CWndElementList)
afx_msg void OnPaint();
afx_msg BOOL OnNcActivate(BOOL bActive);
afx_msg void OnSelJSElement();
afx_msg void OnDblclkJSElement();
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
CIconListBox m_ListBox;
BOOL m_bBlock;
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CJS_ConsoleDlg ¶Ô»°¿ò
class CJS_ConsoleDlg : public CJS_ResizeDlg
{
DECLARE_DYNAMIC(CJS_ConsoleDlg)
public:
CJS_ConsoleDlg(CReader_App* pApp, CWnd* pParent);
virtual ~CJS_ConsoleDlg();
enum { IDD = IDD_JS_CONSOLE };
void Create();
void AppendConsoleText(const CFX_WideString& swText);
void SetConsoleText(const CFX_WideString& swText);
CFX_WideString GetConsoleText() const;
CFX_WideString GetScriptText() const;
BOOL ResetElementList(LPCWSTR lpstrRef);
IFXJS_Runtime* GetJSRuntime();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV Ö§³Ö
protected:
virtual BOOL OnInitDialog();
virtual void OnCancel();
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
// Generated message map functions
//{{AFX_MSG(CJS_ConsoleDlg)
afx_msg void OnBnClickedClear();
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickTips();
afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnGetMinMaxInfo(MINMAXINFO *pmmi);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnChangeScriptEdit(WPARAM wParam , LPARAM lParam);
afx_msg void OnMove(int x , int y);
public:
virtual int DoModal();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
CGW_LineNumberEdit m_edtSC;
BOOL m_bTips;
const UINT m_uTextlimited;
FX_HGLOBAL m_hGlobal;
CReader_App * m_pApp;
CWndElementList m_WndElementList;
};
#endif //_JS_CONSOLE_H_