aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/mptrack/ChannelManagerDlg.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/ChannelManagerDlg.h')
-rw-r--r--Src/external_dependencies/openmpt-trunk/mptrack/ChannelManagerDlg.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/ChannelManagerDlg.h b/Src/external_dependencies/openmpt-trunk/mptrack/ChannelManagerDlg.h
new file mode 100644
index 00000000..8cedd8f6
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/mptrack/ChannelManagerDlg.h
@@ -0,0 +1,115 @@
+/*
+ * ChannelManagerDlg.h
+ * -------------------
+ * Purpose: Dialog class for moving, removing, managing channels
+ * 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"
+#include "PatternEditorDialogs.h"
+
+OPENMPT_NAMESPACE_BEGIN
+
+class CModDoc;
+
+class CChannelManagerDlg: public CDialog
+{
+ enum Tab
+ {
+ kSoloMute = 0,
+ kRecordSelect = 1,
+ kPluginState = 2,
+ kReorderRemove = 3,
+ };
+
+public:
+
+ static CChannelManagerDlg * sharedInstance() { return sharedInstance_; }
+ static CChannelManagerDlg * sharedInstanceCreate();
+ static void DestroySharedInstance() { delete sharedInstance_; sharedInstance_ = nullptr; }
+ void SetDocument(CModDoc *modDoc);
+ CModDoc *GetDocument() const { return m_ModDoc; }
+ bool IsDisplayed() const;
+ void Update(UpdateHint hint, CObject* pHint);
+ void Show();
+ void Hide();
+
+private:
+ static CChannelManagerDlg *sharedInstance_;
+ QuickChannelProperties m_quickChannelProperties;
+
+protected:
+
+ enum ButtonAction : uint8
+ {
+ kUndetermined,
+ kAction1,
+ kAction2,
+ };
+
+ enum MouseButton : uint8
+ {
+ CM_BT_NONE,
+ CM_BT_LEFT,
+ CM_BT_RIGHT,
+ };
+
+ CChannelManagerDlg();
+ ~CChannelManagerDlg();
+
+ CHANNELINDEX memory[4][MAX_BASECHANNELS];
+ std::array<CHANNELINDEX, MAX_BASECHANNELS> pattern;
+ std::bitset<MAX_BASECHANNELS> removed;
+ std::bitset<MAX_BASECHANNELS> select;
+ std::bitset<MAX_BASECHANNELS> state;
+ CRect move[MAX_BASECHANNELS];
+ CRect m_drawableArea;
+ CModDoc *m_ModDoc = nullptr;
+ HBITMAP m_bkgnd = nullptr;
+ Tab m_currentTab = kSoloMute;
+ int m_downX = 0, m_downY = 0;
+ int m_moveX = 0, m_moveY = 0;
+ int m_buttonHeight = 0;
+ ButtonAction m_buttonAction;
+ bool m_leftButton = false;
+ bool m_rightButton = false;
+ bool m_moveRect = false;
+ bool m_show = false;
+
+ bool ButtonHit(CPoint point, CHANNELINDEX *id, CRect *invalidate) const;
+ void MouseEvent(UINT nFlags, CPoint point, MouseButton button);
+ void ResetState(bool bSelection = true, bool bMove = true, bool bButton = true, bool bInternal = true, bool bOrder = false);
+ void ResizeWindow();
+
+ //{{AFX_VIRTUAL(CChannelManagerDlg)
+ BOOL OnInitDialog() override;
+ //}}AFX_VIRTUAL
+ //{{AFX_MSG(CChannelManagerDlg)
+ afx_msg void OnApply();
+ afx_msg void OnClose();
+ afx_msg void OnSelectAll();
+ afx_msg void OnInvert();
+ afx_msg void OnAction1();
+ afx_msg void OnAction2();
+ afx_msg void OnStore();
+ afx_msg void OnRestore();
+ afx_msg void OnTabSelchange(NMHDR*, LRESULT* pResult);
+ afx_msg void OnPaint();
+ afx_msg void OnMouseMove(UINT nFlags,CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags,CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags,CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags,CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags,CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags,CPoint point);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP();
+};
+
+OPENMPT_NAMESPACE_END