summaryrefslogtreecommitdiff
path: root/IvyProbe
diff options
context:
space:
mode:
Diffstat (limited to 'IvyProbe')
-rw-r--r--IvyProbe/IvyProbeDlg.cpp315
1 files changed, 315 insertions, 0 deletions
diff --git a/IvyProbe/IvyProbeDlg.cpp b/IvyProbe/IvyProbeDlg.cpp
new file mode 100644
index 0000000..cea28e4
--- /dev/null
+++ b/IvyProbe/IvyProbeDlg.cpp
@@ -0,0 +1,315 @@
+// TestDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "Test.h"
+#include "TestDlg.h"
+
+#include "BusApplication.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CAboutDlg dialog used for App About
+
+class CAboutDlg : public CDialog
+{
+public:
+ CAboutDlg();
+
+// Dialog Data
+ //{{AFX_DATA(CAboutDlg)
+ enum { IDD = IDD_ABOUTBOX };
+ //}}AFX_DATA
+
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CAboutDlg)
+ protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
+ //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+ //{{AFX_MSG(CAboutDlg)
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
+{
+ //{{AFX_DATA_INIT(CAboutDlg)
+ //}}AFX_DATA_INIT
+}
+
+void CAboutDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CAboutDlg)
+ //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
+ //{{AFX_MSG_MAP(CAboutDlg)
+ // No message handlers
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CTestDlg dialog
+
+CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
+ : CDialog(CTestDlg::IDD, pParent)
+{
+ //{{AFX_DATA_INIT(CTestDlg)
+ m_busnumber = 0;
+ //}}AFX_DATA_INIT
+ // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
+ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
+
+
+}
+
+void CTestDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CTestDlg)
+ DDX_Control(pDX, IDC_TEXT, m_text);
+ DDX_Control(pDX, IDC_SLIDER7, m_slider7);
+ DDX_Control(pDX, IDC_SLIDER6, m_slider6);
+ DDX_Control(pDX, IDC_SLIDER5, m_slider5);
+ DDX_Control(pDX, IDC_SLIDER4, m_slider4);
+ DDX_Control(pDX, IDC_SLIDER3, m_slider3);
+ DDX_Control(pDX, IDC_SLIDER2, m_slider2);
+ DDX_Control(pDX, IDC_SLIDER1, m_slider1);
+ DDX_Control(pDX, IDC_SLIDER0, m_slider0);
+ DDX_Text(pDX, IDC_BUSNUMBER, m_busnumber);
+ DDV_MinMaxUInt(pDX, m_busnumber, 1024, 65535);
+ //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
+ //{{AFX_MSG_MAP(CTestDlg)
+ ON_WM_SYSCOMMAND()
+ ON_WM_PAINT()
+ ON_WM_QUERYDRAGICON()
+ ON_BN_CLICKED(IDC_START, OnStart)
+ ON_WM_VSCROLL()
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CTestDlg message handlers
+
+BOOL CTestDlg::OnInitDialog()
+{
+ CDialog::OnInitDialog();
+
+ // Add "About..." menu item to system menu.
+
+ // IDM_ABOUTBOX must be in the system command range.
+ ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
+ ASSERT(IDM_ABOUTBOX < 0xF000);
+
+ CMenu* pSysMenu = GetSystemMenu(FALSE);
+ if (pSysMenu != NULL)
+ {
+ CString strAboutMenu;
+ strAboutMenu.LoadString(IDS_ABOUTBOX);
+ if (!strAboutMenu.IsEmpty())
+ {
+ pSysMenu->AppendMenu(MF_SEPARATOR);
+ pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
+ }
+ }
+
+ // Set the icon for this dialog. The framework does this automatically
+ // when the application's main window is not a dialog
+ SetIcon(m_hIcon, TRUE); // Set big icon
+ SetIcon(m_hIcon, FALSE); // Set small icon
+
+ // TODO: Add extra initialization here
+ m_busnumber = 2010;
+ UpdateData(FALSE);
+
+ m_slider0.SetRange( 0, 127);
+ m_slider1.SetRange( 0, 127);
+ m_slider2.SetRange( 0, 127);
+ m_slider3.SetRange( 0, 127);
+ m_slider4.SetRange( 0, 127);
+ m_slider5.SetRange( 0, 127);
+ m_slider6.SetRange( 0, 127);
+ m_slider7.SetRange( 0, 127);
+
+ m_slider0.SetWindowText( "MIDICS10:fader0 value=" );
+ m_slider1.SetWindowText( "MIDICS10:fader1 value=" );
+ m_slider2.SetWindowText( "MIDICS10:fader2 value=" );
+ m_slider3.SetWindowText( "MIDICS10:fader3 value=" );
+ m_slider4.SetWindowText( "MIDICS10:fader4 value=" );
+ m_slider5.SetWindowText( "MIDICS10:fader5 value=" );
+ m_slider6.SetWindowText( "MIDICS10:fader6 value=" );
+ m_slider7.SetWindowText( "MIDICS10:fader7 value=" );
+
+ return TRUE; // return TRUE unless you set the focus to a control
+}
+
+void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
+{
+ if ((nID & 0xFFF0) == IDM_ABOUTBOX)
+ {
+ CAboutDlg dlgAbout;
+ dlgAbout.DoModal();
+ }
+ else
+ {
+ CDialog::OnSysCommand(nID, lParam);
+ }
+}
+
+// If you add a minimize button to your dialog, you will need the code below
+// to draw the icon. For MFC applications using the document/view model,
+// this is automatically done for you by the framework.
+
+void CTestDlg::OnPaint()
+{
+ if (IsIconic())
+ {
+ CPaintDC dc(this); // device context for painting
+
+ SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
+
+ // Center icon in client rectangle
+ int cxIcon = GetSystemMetrics(SM_CXICON);
+ int cyIcon = GetSystemMetrics(SM_CYICON);
+ CRect rect;
+ GetClientRect(&rect);
+ int x = (rect.Width() - cxIcon + 1) / 2;
+ int y = (rect.Height() - cyIcon + 1) / 2;
+
+ // Draw the icon
+ dc.DrawIcon(x, y, m_hIcon);
+ }
+ else
+ {
+ CDialog::OnPaint();
+ }
+}
+
+// The system calls this to obtain the cursor to display while the user drags
+// the minimized window.
+HCURSOR CTestDlg::OnQueryDragIcon()
+{
+ return (HCURSOR) m_hIcon;
+}
+
+void CTestDlg::OnStart()
+{
+ UpdateData(TRUE);
+ bus = new Bus( "TEST NT", m_busnumber,"TEST NT READY",new BusApplicationCallbackOf<CTestDlg>(this, ApplicationCallback));
+ BusMessageCallbackOf<CTestDlg> *fader;
+ fader = new BusMessageCallbackOf<CTestDlg>(this, FaderCallback );
+
+ bus->BindMsg("^MIDICS10:fader([0-7]) value=([0-9]+)",fader);
+ bus->BindMsg("^MIDICS10:knob([0-5]) value=([0-9]+)",fader);
+ //bus->BindMsg("^S( A=([0-9]+))?( B=([0-9]+))?",cb);
+ bus->start();
+}
+
+void CTestDlg::BusCallback(BusApplication *app, int argc, const char **argv)
+{
+ int i;
+ CString text;
+ TRACE(" Called function args:");
+ m_text.SetSel( -1, -1, TRUE );
+ text.Format("Bus callback %d args\r\n",argc );
+ m_text.ReplaceSel( text );
+ for ( i = 0; i < argc; i++ )
+ {
+ m_text.SetSel( -1, -1, TRUE );
+ text.Format("Bus callback arg%d '%s'\r\n",i, argv[i] );
+ m_text.ReplaceSel( text );
+ TRACE(" '%s'",argv[i]);
+ }
+ TRACE("\n");
+
+}
+
+void CTestDlg::OnOK()
+{
+ // TODO: Add extra validation here
+ delete bus;
+ CDialog::OnOK();
+}
+
+void CTestDlg::FaderCallback(BusApplication *app, int argc, const char **argv)
+{
+int fader;
+int value;
+if ( argc != 2 )
+ {
+ TRACE("bad Fader call back\n");
+ return;
+ }
+ fader = atoi( argv[0] );
+ value = atoi( argv[1] );
+ switch ( fader ) {
+ case 0:
+ m_slider0.SetPos( value );
+ break;
+ case 1:
+ m_slider1.SetPos( value );
+ break;
+ case 2:
+ m_slider2.SetPos( value );
+ break;
+ case 3:
+ m_slider3.SetPos( value );
+ break;
+ case 4:
+ m_slider4.SetPos( value );
+ break;
+ case 5:
+ m_slider5.SetPos( value );
+ break;
+ case 6:
+ m_slider6.SetPos( value );
+ break;
+ case 7:
+ m_slider7.SetPos( value );
+ break;
+}
+UpdateData(FALSE);
+
+}
+
+void CTestDlg::DirectCallback(BusApplication *app, int id, const char *arg)
+{
+TRACE("Direct Msg Receive %d, %s\n",id,arg );
+}
+
+void CTestDlg::ApplicationCallback(BusApplication *app, int event)
+{
+ CString text;
+ m_text.SetSel( -1, -1, TRUE );
+ text.Format("Application: %s %s\r\n",(LPCSTR)(app->GetName()), event ? "bye" : "ready" );
+ m_text.ReplaceSel( text );
+}
+
+
+void CTestDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
+{
+ // TODO: Add your message handler code here and/or call default
+ CSliderCtrl *slider = (CSliderCtrl *)pScrollBar;
+ CString text;
+ CString value;
+ slider->GetWindowText( text );
+ value.Format("%d",slider->GetPos());
+ text += value;
+ TRACE("%s\n",(LPCSTR)text );
+ bus->SendMsg( text );
+ CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
+}