Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
252
Src/external_dependencies/openmpt-trunk/mptrack/Globals.h
Normal file
252
Src/external_dependencies/openmpt-trunk/mptrack/Globals.h
Normal file
|
@ -0,0 +1,252 @@
|
|||
/*
|
||||
* Globals.h
|
||||
* ---------
|
||||
* Purpose: Implementation of various views of the tracker interface.
|
||||
* Notes : (currently none)
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "openmpt/all/BuildSettings.hpp"
|
||||
|
||||
OPENMPT_NAMESPACE_BEGIN
|
||||
|
||||
#ifndef WM_HELPHITTEST
|
||||
#define WM_HELPHITTEST 0x366
|
||||
#endif
|
||||
|
||||
#ifndef HID_BASE_COMMAND
|
||||
#define HID_BASE_COMMAND 0x10000
|
||||
#endif
|
||||
|
||||
#define ID_EDIT_MIXPASTE ID_EDIT_PASTE_SPECIAL //rewbs.mixPaste
|
||||
|
||||
class CModControlView;
|
||||
class CModControlBar;
|
||||
class CModDoc;
|
||||
|
||||
class CModControlBar: public CToolBarCtrl
|
||||
{
|
||||
public:
|
||||
BOOL Init(CImageList &icons, CImageList &disabledIcons);
|
||||
void UpdateStyle();
|
||||
BOOL AddButton(UINT nID, int iImage=0, UINT nStyle=TBSTYLE_BUTTON, UINT nState=TBSTATE_ENABLED);
|
||||
afx_msg LRESULT OnHelpHitTest(WPARAM, LPARAM);
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
class CModControlDlg: public CDialog
|
||||
{
|
||||
protected:
|
||||
CModDoc &m_modDoc;
|
||||
CSoundFile &m_sndFile;
|
||||
CModControlView &m_parent;
|
||||
HWND m_hWndView;
|
||||
LONG m_nLockCount;
|
||||
int m_nDPIx, m_nDPIy; // Cached DPI settings
|
||||
BOOL m_bInitialized;
|
||||
|
||||
public:
|
||||
CModControlDlg(CModControlView &parent, CModDoc &document);
|
||||
virtual ~CModControlDlg();
|
||||
|
||||
public:
|
||||
void SetViewWnd(HWND hwndView) { m_hWndView = hwndView; }
|
||||
HWND GetViewWnd() const { return m_hWndView; }
|
||||
LRESULT SendViewMessage(UINT uMsg, LPARAM lParam=0) const;
|
||||
BOOL PostViewMessage(UINT uMsg, LPARAM lParam=0) const;
|
||||
LRESULT SwitchToView() const { return SendViewMessage(VIEWMSG_SETACTIVE); }
|
||||
void LockControls() { m_nLockCount++; }
|
||||
void UnlockControls() { PostMessage(WM_MOD_UNLOCKCONTROLS); }
|
||||
bool IsLocked() const { return (m_nLockCount > 0); }
|
||||
virtual Setting<LONG> &GetSplitPosRef() = 0; //rewbs.varWindowSize
|
||||
|
||||
afx_msg void OnEditCut() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_CUT, 0); }
|
||||
afx_msg void OnEditCopy() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_COPY, 0); }
|
||||
afx_msg void OnEditPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PASTE, 0); }
|
||||
afx_msg void OnEditMixPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_MIXPASTE, 0); }
|
||||
afx_msg void OnEditMixPasteITStyle() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_MIXPASTE_ITSTYLE, 0); }
|
||||
afx_msg void OnEditPasteFlood() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PASTEFLOOD, 0); }
|
||||
afx_msg void OnEditPushForwardPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PUSHFORWARDPASTE, 0); }
|
||||
afx_msg void OnEditFind() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_FIND, 0); }
|
||||
afx_msg void OnEditFindNext() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_FINDNEXT, 0); }
|
||||
afx_msg void OnSwitchToView() { if (m_hWndView) ::PostMessage(m_hWndView, WM_MOD_VIEWMSG, VIEWMSG_SETFOCUS, 0); }
|
||||
|
||||
//{{AFX_VIRTUAL(CModControlDlg)
|
||||
void OnOK() override {}
|
||||
void OnCancel() override {}
|
||||
virtual void RecalcLayout() = 0;
|
||||
virtual void UpdateView(UpdateHint, CObject *) = 0;
|
||||
virtual CRuntimeClass *GetAssociatedViewClass() { return nullptr; }
|
||||
virtual LRESULT OnModCtrlMsg(WPARAM wParam, LPARAM lParam);
|
||||
virtual void OnActivatePage(LPARAM) {}
|
||||
virtual void OnDeactivatePage() {}
|
||||
BOOL OnInitDialog() override;
|
||||
INT_PTR OnToolHitTest(CPoint point, TOOLINFO *pTI) const override;
|
||||
virtual BOOL GetToolTipText(UINT, LPTSTR) { return FALSE; }
|
||||
//}}AFX_VIRTUAL
|
||||
//{{AFX_MSG(CModControlDlg)
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg LRESULT OnUnlockControls(WPARAM, LPARAM) { if (m_nLockCount > 0) m_nLockCount--; return 0; }
|
||||
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
|
||||
afx_msg LRESULT OnDPIChanged(WPARAM = 0, LPARAM = 0);
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
class CModTabCtrl: public CTabCtrl
|
||||
{
|
||||
public:
|
||||
BOOL InsertItem(int nIndex, LPCTSTR pszText, LPARAM lParam=0, int iImage=-1);
|
||||
BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
|
||||
LPARAM GetItemData(int nIndex);
|
||||
};
|
||||
|
||||
|
||||
class CModControlView: public CView
|
||||
{
|
||||
public:
|
||||
enum Views
|
||||
{
|
||||
VIEW_UNKNOWN = -1,
|
||||
VIEW_GLOBALS = 0,
|
||||
VIEW_PATTERNS,
|
||||
VIEW_SAMPLES,
|
||||
VIEW_INSTRUMENTS,
|
||||
VIEW_COMMENTS,
|
||||
VIEW_PLUGINS,
|
||||
MAX_PAGES
|
||||
};
|
||||
|
||||
protected:
|
||||
CModTabCtrl m_TabCtrl;
|
||||
CModControlDlg *m_Pages[MAX_PAGES];
|
||||
int m_nActiveDlg, m_nInstrumentChanged;
|
||||
HWND m_hWndView, m_hWndMDI;
|
||||
|
||||
protected: // create from serialization only
|
||||
CModControlView();
|
||||
DECLARE_DYNCREATE(CModControlView)
|
||||
|
||||
public:
|
||||
virtual ~CModControlView() {}
|
||||
CModDoc* GetDocument() const { return (CModDoc *)m_pDocument; }
|
||||
void SampleChanged(SAMPLEINDEX smp);
|
||||
void InstrumentChanged(int nInstr=-1) { m_nInstrumentChanged = nInstr; }
|
||||
int GetInstrumentChange() const { return m_nInstrumentChanged; }
|
||||
void SetMDIParentFrame(HWND hwnd) { m_hWndMDI = hwnd; }
|
||||
void ForceRefresh();
|
||||
CModControlDlg *GetCurrentControlDlg() { return m_Pages[m_nActiveDlg]; }
|
||||
|
||||
protected:
|
||||
void RecalcLayout();
|
||||
void UpdateView(UpdateHint hint, CObject *pHint = nullptr);
|
||||
BOOL SetActivePage(int nIndex = -1, LPARAM lParam=-1);
|
||||
public:
|
||||
int GetActivePage() const { return m_nActiveDlg; }
|
||||
|
||||
protected:
|
||||
//{{AFX_VIRTUAL(CModControlView)
|
||||
public:
|
||||
BOOL PreCreateWindow(CREATESTRUCT& cs) override;
|
||||
protected:
|
||||
void OnInitialUpdate() override; // called first time after construct
|
||||
void OnDraw(CDC *) override {}
|
||||
void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) override;
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CModControlView)
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg void OnDestroy();
|
||||
afx_msg void OnTabSelchange(NMHDR* pNMHDR, LRESULT* pResult);
|
||||
afx_msg void OnEditCut() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_CUT, 0); }
|
||||
afx_msg void OnEditCopy() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_COPY, 0); }
|
||||
afx_msg void OnEditPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PASTE, 0); }
|
||||
afx_msg void OnEditMixPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_MIXPASTE, 0); } //rewbs.mixPaste
|
||||
afx_msg void OnEditMixPasteITStyle() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_MIXPASTE_ITSTYLE, 0); }
|
||||
afx_msg void OnEditFind() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_FIND, 0); }
|
||||
afx_msg void OnEditFindNext() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_FINDNEXT, 0); }
|
||||
afx_msg void OnSwitchToView() { if (m_hWndView) ::PostMessage(m_hWndView, WM_MOD_VIEWMSG, VIEWMSG_SETFOCUS, 0); }
|
||||
afx_msg LRESULT OnActivateModView(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnModCtrlMsg(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg LRESULT OnGetToolTipText(WPARAM, LPARAM);
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
// Non-client button attributes
|
||||
#define NCBTNS_MOUSEOVER 0x01
|
||||
#define NCBTNS_CHECKED 0x02
|
||||
#define NCBTNS_DISABLED 0x04
|
||||
#define NCBTNS_PUSHED 0x08
|
||||
|
||||
|
||||
class CModScrollView: public CScrollView
|
||||
{
|
||||
protected:
|
||||
HWND m_hWndCtrl;
|
||||
int m_nScrollPosX, m_nScrollPosY;
|
||||
int m_nDPIx, m_nDPIy; // Cached DPI settings
|
||||
|
||||
public:
|
||||
DECLARE_SERIAL(CModScrollView)
|
||||
CModScrollView() : m_hWndCtrl(nullptr), m_nScrollPosX(0), m_nScrollPosY(0) { }
|
||||
virtual ~CModScrollView() {}
|
||||
|
||||
public:
|
||||
CModDoc* GetDocument() const { return (CModDoc *)m_pDocument; }
|
||||
LRESULT SendCtrlMessage(UINT uMsg, LPARAM lParam=0) const;
|
||||
void SendCtrlCommand(int id) const;
|
||||
BOOL PostCtrlMessage(UINT uMsg, LPARAM lParam=0) const;
|
||||
void UpdateIndicator(LPCTSTR lpszText = nullptr);
|
||||
|
||||
public:
|
||||
//{{AFX_VIRTUAL(CModScrollView)
|
||||
void OnInitialUpdate() override;
|
||||
void OnDraw(CDC *) override {}
|
||||
void OnPrepareDC(CDC*, CPrintInfo*) override {}
|
||||
void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) override;
|
||||
virtual void UpdateView(UpdateHint, CObject *) {}
|
||||
virtual LRESULT OnModViewMsg(WPARAM wParam, LPARAM lParam);
|
||||
virtual BOOL OnDragonDrop(BOOL, const DRAGONDROP *) { return FALSE; }
|
||||
virtual LRESULT OnPlayerNotify(Notification *) { return 0; }
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
CModControlDlg *GetControlDlg() { return static_cast<CModControlView *>(CWnd::FromHandle(m_hWndCtrl))->GetCurrentControlDlg(); }
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CModScrollView)
|
||||
afx_msg void OnDestroy();
|
||||
afx_msg LRESULT OnReceiveModViewMsg(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg BOOL OnMouseWheel(UINT fFlags, short zDelta, CPoint point);
|
||||
afx_msg void OnMouseHWheel(UINT fFlags, short zDelta, CPoint point);
|
||||
afx_msg LRESULT OnDragonDropping(WPARAM bDoDrop, LPARAM lParam) { return OnDragonDrop((BOOL)bDoDrop, (const DRAGONDROP *)lParam); }
|
||||
afx_msg LRESULT OnUpdatePosition(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnDPIChanged(WPARAM = 0, LPARAM = 0);
|
||||
|
||||
// Fixes for 16-bit limitation in MFC's CScrollView
|
||||
BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE) override;
|
||||
BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE) override;
|
||||
int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE);
|
||||
void SetScrollSizes(int nMapMode, SIZE sizeTotal, const SIZE& sizePage = CScrollView::sizeDefault, const SIZE& sizeLine = CScrollView::sizeDefault);
|
||||
|
||||
BOOL OnGesturePan(CPoint ptFrom, CPoint ptTo) override;
|
||||
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
|
||||
OPENMPT_NAMESPACE_END
|
Loading…
Add table
Add a link
Reference in a new issue