Add Supports for Signalling Panel and its Actions and also Completely Test it ...
This commit is contained in:
@@ -14,13 +14,16 @@ CTrade trade;
|
||||
|
||||
//
|
||||
string mTag;
|
||||
XCPanel eaPanel;
|
||||
XCButton eaStateBtn;
|
||||
string eaStateBtnName;
|
||||
XCButton eaLongStateBtn;
|
||||
string eaLongStateBtnName;
|
||||
XCButton eaShortStateBtn;
|
||||
string eaShortStateBtnName;
|
||||
XCPanel eaSignallingPanel;
|
||||
string eaSignallingPanelName;
|
||||
XCButton eaSignallingBtn;
|
||||
string eaSignallingBtnName;
|
||||
XCButton eaSignallingLongBtn;
|
||||
string eaSignallingLongBtnName;
|
||||
XCButton eaSignallingShortBtn;
|
||||
string eaSignallingShortBtnName;
|
||||
|
||||
//
|
||||
bool eaEnableLongs = true;
|
||||
bool eaEnableShorts = true;
|
||||
|
||||
@@ -31,7 +34,8 @@ int OnInit()
|
||||
{
|
||||
//
|
||||
mTag = "XPanel";
|
||||
if (!InitialGUI()) {
|
||||
if (!InitialGUI())
|
||||
{
|
||||
return INIT_FAILED;
|
||||
}
|
||||
|
||||
@@ -47,6 +51,15 @@ void OnDeinit(const int reason)
|
||||
DestroyGUI();
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| Expert tick function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnTick()
|
||||
{
|
||||
//
|
||||
UpdateGUI();
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//|Chart event handling function |
|
||||
//+------------------------------------------------------------------+
|
||||
@@ -54,7 +67,7 @@ void OnChartEvent(const int id, const long &lparam, const double &dparam, const
|
||||
{
|
||||
//
|
||||
// Handle Object Movement ...
|
||||
eaPanel.OnEvent(id, lparam, dparam, sparam);
|
||||
eaSignallingPanel.OnEvent(id, lparam, dparam, sparam);
|
||||
|
||||
//
|
||||
// Handle OnClick Event ...
|
||||
@@ -76,71 +89,12 @@ bool InitialGUI()
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Create a Panel ...
|
||||
result = eaPanel.Create(
|
||||
mTag,
|
||||
100,
|
||||
100,
|
||||
300,
|
||||
200 //
|
||||
);
|
||||
result = InitSignallingGUI();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Create Activation Button ...
|
||||
string eaStatePrefix = mTag + "_State_";
|
||||
|
||||
//
|
||||
// Signalling ...
|
||||
eaStateBtnName = eaStatePrefix + "btn";
|
||||
result = eaStateBtn.Create(
|
||||
eaStateBtnName,
|
||||
100,
|
||||
120,
|
||||
300,
|
||||
25 //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
eaPanel.Add(eaStateBtnName);
|
||||
|
||||
//
|
||||
// Long Signalling ...
|
||||
eaLongStateBtnName = eaStatePrefix + "_Long_btn";
|
||||
result = eaLongStateBtn.Create(
|
||||
eaLongStateBtnName,
|
||||
100,
|
||||
145,
|
||||
150,
|
||||
25 //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
eaPanel.Add(eaLongStateBtnName);
|
||||
|
||||
//
|
||||
// Short Signalling ...
|
||||
eaShortStateBtnName = eaStatePrefix + "_Short_btn";
|
||||
result = eaShortStateBtn.Create(
|
||||
eaShortStateBtnName,
|
||||
250,
|
||||
145,
|
||||
150,
|
||||
25 //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
eaPanel.Add(eaShortStateBtnName);
|
||||
|
||||
//
|
||||
ChartRedraw(0);
|
||||
|
||||
@@ -148,21 +102,164 @@ bool InitialGUI()
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update GUI Content ...
|
||||
*/
|
||||
void UpdateGUI()
|
||||
{
|
||||
//
|
||||
UpdateSignallingGUI();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize State and Signalling GUI ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool InitSignallingGUI()
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
eaSignallingPanelName = mTag + "SIGNALLING";
|
||||
|
||||
//
|
||||
// Create a Panel ...
|
||||
result = eaSignallingPanel.Create(
|
||||
eaSignallingPanelName,
|
||||
100,
|
||||
100,
|
||||
300,
|
||||
50 //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
eaSignallingPanel.Caption("Signalling");
|
||||
|
||||
//
|
||||
// Create Activation Button ...
|
||||
string eaSignallingPrefix = eaSignallingPanelName + "_State_";
|
||||
|
||||
//
|
||||
// Signalling ...
|
||||
eaSignallingBtnName = eaSignallingPrefix + "btn";
|
||||
result = eaSignallingBtn.Create(
|
||||
eaSignallingBtnName,
|
||||
100,
|
||||
120,
|
||||
300,
|
||||
25 //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
eaSignallingBtn.SetText("");
|
||||
eaSignallingPanel.Add(eaSignallingBtnName);
|
||||
|
||||
//
|
||||
// Long Signalling ...
|
||||
eaSignallingLongBtnName = eaSignallingPrefix + "_Long_btn";
|
||||
result = eaSignallingLongBtn.Create(
|
||||
eaSignallingLongBtnName,
|
||||
100,
|
||||
145,
|
||||
150,
|
||||
25 //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
eaSignallingLongBtn.SetText("");
|
||||
eaSignallingPanel.Add(eaSignallingLongBtnName);
|
||||
|
||||
//
|
||||
// Short Signalling ...
|
||||
eaSignallingShortBtnName = eaSignallingPrefix + "_Short_btn";
|
||||
result = eaSignallingShortBtn.Create(
|
||||
eaSignallingShortBtnName,
|
||||
250,
|
||||
145,
|
||||
150,
|
||||
25 //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
eaSignallingShortBtn.SetText("");
|
||||
eaSignallingPanel.Add(eaSignallingShortBtnName);
|
||||
|
||||
//
|
||||
UpdateSignallingGUI();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Signalling GUI Content ...
|
||||
*/
|
||||
void UpdateSignallingGUI()
|
||||
{
|
||||
//
|
||||
// Preparing State ...
|
||||
bool isSignallingActive = eaEnableLongs ||
|
||||
eaEnableShorts;
|
||||
|
||||
//
|
||||
// All Signalls ...
|
||||
color mSignallingBtnTextColor = isSignallingActive
|
||||
? clrRed
|
||||
: clrGreen;
|
||||
string mSignallingBtnText = isSignallingActive
|
||||
? "Deactive"
|
||||
: "Active";
|
||||
eaSignallingBtn.SetText(mSignallingBtnText);
|
||||
eaSignallingBtn.SetColor(mSignallingBtnTextColor);
|
||||
|
||||
//
|
||||
// Long Signals ...
|
||||
color mSignallingLongBtnTextColor = eaEnableLongs
|
||||
? clrRed
|
||||
: clrGreen;
|
||||
string mSignallingLongBtnText = eaEnableLongs
|
||||
? "Deactive Longs"
|
||||
: "Active Longs";
|
||||
eaSignallingLongBtn.SetText(mSignallingLongBtnText);
|
||||
eaSignallingLongBtn.SetColor(mSignallingLongBtnTextColor);
|
||||
|
||||
//
|
||||
// Short Signals ...
|
||||
color mSignallingShortBtnTextColor = eaEnableShorts
|
||||
? clrRed
|
||||
: clrGreen;
|
||||
string mSignallingShortBtnText = eaEnableShorts
|
||||
? "Deactive Shorts"
|
||||
: "Active Shorts";
|
||||
eaSignallingShortBtn.SetText(mSignallingShortBtnText);
|
||||
eaSignallingShortBtn.SetColor(mSignallingShortBtnTextColor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy GUI ...
|
||||
*/
|
||||
void DestroyGUI()
|
||||
{
|
||||
//
|
||||
eaStateBtnName = NULL;
|
||||
eaLongStateBtnName = NULL;
|
||||
eaShortStateBtnName = NULL;
|
||||
eaSignallingBtnName = NULL;
|
||||
eaSignallingLongBtnName = NULL;
|
||||
eaSignallingShortBtnName = NULL;
|
||||
|
||||
//
|
||||
eaPanel.Destroy();
|
||||
eaStateBtn.Destroy();
|
||||
eaLongStateBtn.Destroy();
|
||||
eaShortStateBtn.Destroy();
|
||||
eaSignallingPanel.Destroy();
|
||||
eaSignallingBtn.Destroy();
|
||||
eaSignallingLongBtn.Destroy();
|
||||
eaSignallingShortBtn.Destroy();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -180,23 +277,82 @@ void HandleOnClickEvent(string name)
|
||||
|
||||
//
|
||||
// State Button ...
|
||||
if (name == eaStateBtnName)
|
||||
bool isClicked = false;
|
||||
if (name == eaSignallingBtnName)
|
||||
{
|
||||
//
|
||||
isClicked = true;
|
||||
HandleChangeState();
|
||||
eaSignallingBtn.SetState(false);
|
||||
Print("State Button Clicked ...");
|
||||
}
|
||||
//
|
||||
else if (name == eaLongStateBtnName)
|
||||
else if (name == eaSignallingLongBtnName)
|
||||
{
|
||||
//
|
||||
isClicked = true;
|
||||
HandleChangeLongsState();
|
||||
eaSignallingLongBtn.SetState(false);
|
||||
Print("Long State Button Clicked ...");
|
||||
}
|
||||
//
|
||||
else if (name == eaShortStateBtnName)
|
||||
else if (name == eaSignallingShortBtnName)
|
||||
{
|
||||
//
|
||||
isClicked = true;
|
||||
HandleChangeShortsState();
|
||||
eaSignallingShortBtn.SetState(false);
|
||||
Print("Short State Button Clicked ...");
|
||||
}
|
||||
|
||||
//
|
||||
if (isClicked)
|
||||
{
|
||||
UpdateGUI();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// GUI EVENT Handlers ...
|
||||
|
||||
/**
|
||||
* Toggle Signalling State ...
|
||||
*/
|
||||
void HandleChangeState()
|
||||
{
|
||||
//
|
||||
bool isActive = eaEnableLongs ||
|
||||
eaEnableShorts;
|
||||
|
||||
//
|
||||
if (isActive)
|
||||
{
|
||||
//
|
||||
eaEnableLongs = false;
|
||||
eaEnableShorts = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
eaEnableLongs = true;
|
||||
eaEnableShorts = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle Longs Signalling State ...
|
||||
*/
|
||||
void HandleChangeLongsState()
|
||||
{
|
||||
eaEnableLongs = !eaEnableLongs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle Shorts Signalling State ...
|
||||
*/
|
||||
void HandleChangeShortsState()
|
||||
{
|
||||
eaEnableShorts = !eaEnableShorts;
|
||||
}
|
||||
|
||||
//
|
||||
Reference in New Issue
Block a user