summaryrefslogtreecommitdiff
path: root/Horloge
diff options
context:
space:
mode:
authorfcolin2007-02-01 12:52:19 +0000
committerfcolin2007-02-01 12:52:19 +0000
commit8bed7960b99979ec40cae299adae9c714dd78f5c (patch)
tree5176001d7de4e24270e4b74826d3eeb5b7363d22 /Horloge
parent54d7df6531441cfc201713feaa432a8bf9ab9549 (diff)
downloadivy-cplusplus-8bed7960b99979ec40cae299adae9c714dd78f5c.zip
ivy-cplusplus-8bed7960b99979ec40cae299adae9c714dd78f5c.tar.gz
ivy-cplusplus-8bed7960b99979ec40cae299adae9c714dd78f5c.tar.bz2
ivy-cplusplus-8bed7960b99979ec40cae299adae9c714dd78f5c.tar.xz
Utilisateur : Fcolin Date : 25/10/01 Heure : 11:44 Créé (vss 1)
Diffstat (limited to 'Horloge')
-rw-r--r--Horloge/HorlogeDlg.cpp259
1 files changed, 259 insertions, 0 deletions
diff --git a/Horloge/HorlogeDlg.cpp b/Horloge/HorlogeDlg.cpp
new file mode 100644
index 0000000..1bce992
--- /dev/null
+++ b/Horloge/HorlogeDlg.cpp
@@ -0,0 +1,259 @@
+// HorlogeDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "Horloge.h"
+#include "HorlogeDlg.h"
+#include "HorlogeParseCmdLine.h"
+
+#include "IvyApplication.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CHorlogeDlg dialog
+
+CHorlogeDlg::CHorlogeDlg(CWnd* pParent /*=NULL*/)
+ : CDialog(CHorlogeDlg::IDD, pParent)
+{
+ //{{AFX_DATA_INIT(CHorlogeDlg)
+ m_busnumber = _T("");
+ m_big_speed = FALSE;
+ //}}AFX_DATA_INIT
+ // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
+ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
+
+ bus = NULL;
+ rate = 1.0;
+}
+
+void CHorlogeDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CHorlogeDlg)
+ DDX_Control(pDX, IDC_SETTIME, m_setTime);
+ DDX_Control(pDX, IDC_APPLIST, m_applist);
+ DDX_Control(pDX, IDC_SPEED, m_Speed);
+ DDX_Control(pDX, IDC_TIME, m_Time);
+ DDX_Text(pDX, IDC_BUSNUMBER, m_busnumber);
+ DDX_Check(pDX, IDC_BIGSPEED, m_big_speed);
+ //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CHorlogeDlg, CDialog)
+ //{{AFX_MSG_MAP(CHorlogeDlg)
+ ON_WM_PAINT()
+ ON_WM_QUERYDRAGICON()
+ ON_BN_CLICKED(IDC_IVYSTART, OnIvystart)
+ ON_BN_CLICKED(IDC_PAUSE, OnPause)
+ ON_BN_CLICKED(IDC_START, OnStart)
+ ON_NOTIFY(DTN_DATETIMECHANGE, IDC_SETTIME, OnDatetimechangeSettime)
+ ON_BN_CLICKED(IDC_BACKWARD, OnBackward)
+ ON_BN_CLICKED(IDC_FORWARD, OnForward)
+ ON_BN_CLICKED(IDC_BACK_5, OnBack5)
+ ON_BN_CLICKED(IDC_BACK_2, OnBack2)
+ ON_BN_CLICKED(IDC_BACK_1, OnBack1)
+ ON_BN_CLICKED(IDC_FORW_1, OnForw1)
+ ON_BN_CLICKED(IDC_FORW_2, OnForw2)
+ ON_BN_CLICKED(IDC_FORW_5, OnForw5)
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CHorlogeDlg message handlers
+
+BOOL CHorlogeDlg::OnInitDialog()
+{
+ CDialog::OnInitDialog();
+
+ // 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
+
+ ((CButton*)GetDlgItem(IDC_FORWARD))->SetIcon( AfxGetApp()->LoadIcon(IDI_FORWARD));
+ ((CButton*)GetDlgItem(IDC_BACKWARD))->SetIcon(AfxGetApp()->LoadIcon(IDI_BACKWARD));
+ ((CButton*)GetDlgItem(IDC_PAUSE))->SetIcon(AfxGetApp()->LoadIcon(IDI_PAUSE));
+ ((CButton*)GetDlgItem(IDC_START))->SetIcon(AfxGetApp()->LoadIcon(IDI_START));
+
+
+ m_Time.Format("%02d:%02d:%02d", 0,0,0);
+ m_Speed.Format("%.2f", rate );
+
+ bus = new Ivy( "Horloge","Horloge READY",this,TRUE);
+
+ // parse command Line Info
+ HorlogeParseCmdLine cmd;
+ cmd.m_busNumber = bus->GetDomain( NULL );
+
+ AfxGetApp()->ParseCommandLine( cmd );
+
+ // Set Argument from Command Line
+ m_busnumber = cmd.m_busNumber;
+
+
+ bus->BindMsg("^ClockEvent Time=([0-9]+):([0-9]+):([0-9]+) Rate=([-.0-9]+) Bs=([0-9]+)", BUS_CALLBACK_OF(CHorlogeDlg, IvyClockEvent ));
+ bus->BindMsg("^ClockDatas Time=([0-9]+):([0-9]+):([0-9]+) Rate=([-.0-9]+) Bs=([0-9]+)", BUS_CALLBACK_OF(CHorlogeDlg, IvyClockEvent ));
+ bus->BindMsg("^rejeu READY", BUS_CALLBACK_OF(CHorlogeDlg, IvyRejeuReady));
+
+ m_busnumber = bus->GetDomain( m_busnumber );
+ UpdateData(FALSE);
+
+ // force bus start in case of start
+ if ( cmd.m_start )
+ OnIvystart();
+
+ return TRUE; // return TRUE unless you set the focus to a control
+}
+
+// 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 CHorlogeDlg::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 CHorlogeDlg::OnQueryDragIcon()
+{
+ return (HCURSOR) m_hIcon;
+}
+
+void CHorlogeDlg::OnIvystart()
+{
+ UpdateData(TRUE);
+ bus->stop();
+ m_busnumber = bus->GetDomain( m_busnumber );
+ bus->start(m_busnumber);
+ m_applist.ResetContent();
+ UpdateData(FALSE);
+}
+void CHorlogeDlg::OnApplicationConnected(IvyApplication *app)
+{
+ m_applist.AddString( app->GetName() );
+}
+void CHorlogeDlg::OnApplicationDisconnected(IvyApplication *app)
+{
+ m_applist.DeleteString(m_applist.FindString(0, app->GetName()) );
+}
+void CHorlogeDlg::IvyClockEvent( IvyApplication *app, int argc, const char **argv )
+{
+ // Ivy ClockEvent Time=10:23:45 Rate=3 Bs=0
+ time.wHour = atoi( *argv++ );
+ time.wMinute = atoi( *argv++ );
+ time.wSecond = atoi( *argv++ );
+ rate = atof( *argv++ );
+ int BigSpeed = atoi( *argv++ );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+ m_Speed.Format("%.2f", rate );
+ m_big_speed = BigSpeed;
+ m_setTime.SetTime(&time);
+ UpdateData(FALSE);
+}
+void CHorlogeDlg::IvyRejeuReady( IvyApplication *app, int argc, const char **argv )
+{
+ bus->SendMsg("GetClockDatas");
+}
+
+void CHorlogeDlg::OnPause()
+{
+ bus->SendMsg("ClockPause");
+}
+
+void CHorlogeDlg::OnStart()
+{
+ bus->SendMsg("ClockStart");
+}
+
+void CHorlogeDlg::OnBackward()
+{
+ rate -= 0.5;
+ m_Speed.Format("%.2f", rate );
+ bus->SendMsg("SetClock Rate=%f",rate);
+}
+
+void CHorlogeDlg::OnForward()
+{
+ rate += 0.5;
+ m_Speed.Format("%.2f", rate );
+ bus->SendMsg("SetClock Rate=%f",rate);
+}
+
+
+void CHorlogeDlg::OnDatetimechangeSettime(NMHDR* pNMHDR, LRESULT* pResult)
+{
+ m_setTime.GetTime(&time);
+ bus->SendMsg( "SetClock Time=%d:%d:%d", time.wHour, time.wMinute, time.wSecond );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+ *pResult = 0;
+}
+
+
+void CHorlogeDlg::OnBack5()
+{
+ time.wMinute -= 5;
+ bus->SendMsg( "SetClock Time=%d:%d:%d", time.wHour, time.wMinute, time.wSecond );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+}
+
+void CHorlogeDlg::OnBack2()
+{
+ time.wMinute -= 2;
+ bus->SendMsg( "SetClock Time=%d:%d:%d", time.wHour, time.wMinute, time.wSecond );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+}
+
+void CHorlogeDlg::OnBack1()
+{
+ time.wMinute -= 1;
+ bus->SendMsg( "SetClock Time=%d:%d:%d", time.wHour, time.wMinute, time.wSecond );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+}
+
+void CHorlogeDlg::OnForw1()
+{
+ time.wMinute += 1;
+ bus->SendMsg( "SetClock Time=%d:%d:%d", time.wHour, time.wMinute, time.wSecond );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+}
+
+void CHorlogeDlg::OnForw2()
+{
+ time.wMinute += 2;
+ bus->SendMsg( "SetClock Time=%d:%d:%d", time.wHour, time.wMinute, time.wSecond );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+}
+
+void CHorlogeDlg::OnForw5()
+{
+ time.wMinute += 5;
+ bus->SendMsg( "SetClock Time=%d:%d:%d", time.wHour, time.wMinute, time.wSecond );
+ m_Time.Format("%02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
+}