Add Supports for Signalling Panel and its Actions and also Completely Test it ...
This commit is contained in:
@@ -122,6 +122,16 @@ class XCButton : XSCBase
|
|||||||
ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value);
|
ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Object Text Color ...
|
||||||
|
*
|
||||||
|
* @param value: Color
|
||||||
|
*/
|
||||||
|
void SetColor(color value)
|
||||||
|
{
|
||||||
|
ObjectSetInteger(0, mName, OBJPROP_COLOR, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Object Text ...
|
* Set Object Text ...
|
||||||
*
|
*
|
||||||
@@ -152,6 +162,16 @@ class XCButton : XSCBase
|
|||||||
ObjectSetInteger(0, mName, OBJPROP_BACK, value);
|
ObjectSetInteger(0, mName, OBJPROP_BACK, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Button Click State ...
|
||||||
|
*
|
||||||
|
* @param value: state
|
||||||
|
*/
|
||||||
|
void SetState(bool value)
|
||||||
|
{
|
||||||
|
ObjectSetInteger(0, mName, OBJPROP_STATE, value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Protected ...
|
// Protected ...
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ class XCPanel : XSCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
mTitleBarName = name + "_TITLE_BAR";
|
mTitleBarName = name + "_TITLE_BAR";
|
||||||
mTitleTextName = name + "_CAPTION";
|
mCaptionLblName = name + "_CAPTION";
|
||||||
mBodyName = name + "_BODY";
|
mBodyName = name + "_BODY";
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -156,22 +156,22 @@ class XCPanel : XSCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Caption ...
|
// Caption ...
|
||||||
result = mTitleText.Create(mTitleTextName, xDis, yDis);
|
result = mCaptionLbl.Create(mCaptionLblName, xDis, yDis);
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
Destroy();
|
Destroy();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
mTitleText.SetText(caption);
|
mCaptionLbl.SetText(caption);
|
||||||
mTitleText.SetAnchor(captionAnchor);
|
mCaptionLbl.SetAnchor(captionAnchor);
|
||||||
mTitleText.SetTextColor(captionColor);
|
mCaptionLbl.SetTextColor(captionColor);
|
||||||
mTitleText.SetFontSize(captionontSize);
|
mCaptionLbl.SetFontSize(captionontSize);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Adding Child Objects ...
|
// Adding Child Objects ...
|
||||||
mTitleBar.Add(mBodyName);
|
mTitleBar.Add(mBodyName);
|
||||||
mTitleBar.Add(mTitleTextName);
|
mTitleBar.Add(mCaptionLblName);
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
@@ -185,12 +185,12 @@ class XCPanel : XSCBase
|
|||||||
//
|
//
|
||||||
mBodyName = NULL;
|
mBodyName = NULL;
|
||||||
mTitleBarName = NULL;
|
mTitleBarName = NULL;
|
||||||
mTitleTextName = NULL;
|
mCaptionLblName = NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
mBody.Destroy();
|
mBody.Destroy();
|
||||||
mTitleBar.Destroy();
|
mTitleBar.Destroy();
|
||||||
mTitleText.Destroy();
|
mCaptionLbl.Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -226,6 +226,26 @@ class XCPanel : XSCBase
|
|||||||
mTitleBar.Add(name);
|
mTitleBar.Add(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve Panel Caption ...
|
||||||
|
*
|
||||||
|
* @return ( string )
|
||||||
|
*/
|
||||||
|
string Caption()
|
||||||
|
{
|
||||||
|
return mCaptionLbl.GetText();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Panel Caption ...
|
||||||
|
*
|
||||||
|
* @param value: Caption
|
||||||
|
*/
|
||||||
|
void Caption(string value)
|
||||||
|
{
|
||||||
|
mCaptionLbl.SetText(value);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
protected:
|
protected:
|
||||||
private:
|
private:
|
||||||
@@ -235,10 +255,10 @@ class XCPanel : XSCBase
|
|||||||
//
|
//
|
||||||
string mBodyName;
|
string mBodyName;
|
||||||
string mTitleBarName;
|
string mTitleBarName;
|
||||||
string mTitleTextName;
|
string mCaptionLblName;
|
||||||
|
|
||||||
//
|
//
|
||||||
XCLabel mTitleText;
|
XCLabel mCaptionLbl;
|
||||||
XCRectangleLabel mBody;
|
XCRectangleLabel mBody;
|
||||||
XCRectangleLabel mTitleBar;
|
XCRectangleLabel mTitleBar;
|
||||||
|
|
||||||
|
|||||||
@@ -14,13 +14,16 @@ CTrade trade;
|
|||||||
|
|
||||||
//
|
//
|
||||||
string mTag;
|
string mTag;
|
||||||
XCPanel eaPanel;
|
XCPanel eaSignallingPanel;
|
||||||
XCButton eaStateBtn;
|
string eaSignallingPanelName;
|
||||||
string eaStateBtnName;
|
XCButton eaSignallingBtn;
|
||||||
XCButton eaLongStateBtn;
|
string eaSignallingBtnName;
|
||||||
string eaLongStateBtnName;
|
XCButton eaSignallingLongBtn;
|
||||||
XCButton eaShortStateBtn;
|
string eaSignallingLongBtnName;
|
||||||
string eaShortStateBtnName;
|
XCButton eaSignallingShortBtn;
|
||||||
|
string eaSignallingShortBtnName;
|
||||||
|
|
||||||
|
//
|
||||||
bool eaEnableLongs = true;
|
bool eaEnableLongs = true;
|
||||||
bool eaEnableShorts = true;
|
bool eaEnableShorts = true;
|
||||||
|
|
||||||
@@ -31,7 +34,8 @@ int OnInit()
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
mTag = "XPanel";
|
mTag = "XPanel";
|
||||||
if (!InitialGUI()) {
|
if (!InitialGUI())
|
||||||
|
{
|
||||||
return INIT_FAILED;
|
return INIT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,6 +51,15 @@ void OnDeinit(const int reason)
|
|||||||
DestroyGUI();
|
DestroyGUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//+------------------------------------------------------------------+
|
||||||
|
//| Expert tick function |
|
||||||
|
//+------------------------------------------------------------------+
|
||||||
|
void OnTick()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
UpdateGUI();
|
||||||
|
}
|
||||||
|
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
//|Chart event handling function |
|
//|Chart event handling function |
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
@@ -54,7 +67,7 @@ void OnChartEvent(const int id, const long &lparam, const double &dparam, const
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Handle Object Movement ...
|
// Handle Object Movement ...
|
||||||
eaPanel.OnEvent(id, lparam, dparam, sparam);
|
eaSignallingPanel.OnEvent(id, lparam, dparam, sparam);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Handle OnClick Event ...
|
// Handle OnClick Event ...
|
||||||
@@ -76,71 +89,12 @@ bool InitialGUI()
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Create a Panel ...
|
result = InitSignallingGUI();
|
||||||
result = eaPanel.Create(
|
|
||||||
mTag,
|
|
||||||
100,
|
|
||||||
100,
|
|
||||||
300,
|
|
||||||
200 //
|
|
||||||
);
|
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
return 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);
|
ChartRedraw(0);
|
||||||
|
|
||||||
@@ -148,21 +102,164 @@ bool InitialGUI()
|
|||||||
return result;
|
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 ...
|
* Destroy GUI ...
|
||||||
*/
|
*/
|
||||||
void DestroyGUI()
|
void DestroyGUI()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
eaStateBtnName = NULL;
|
eaSignallingBtnName = NULL;
|
||||||
eaLongStateBtnName = NULL;
|
eaSignallingLongBtnName = NULL;
|
||||||
eaShortStateBtnName = NULL;
|
eaSignallingShortBtnName = NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
eaPanel.Destroy();
|
eaSignallingPanel.Destroy();
|
||||||
eaStateBtn.Destroy();
|
eaSignallingBtn.Destroy();
|
||||||
eaLongStateBtn.Destroy();
|
eaSignallingLongBtn.Destroy();
|
||||||
eaShortStateBtn.Destroy();
|
eaSignallingShortBtn.Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -180,23 +277,82 @@ void HandleOnClickEvent(string name)
|
|||||||
|
|
||||||
//
|
//
|
||||||
// State Button ...
|
// State Button ...
|
||||||
if (name == eaStateBtnName)
|
bool isClicked = false;
|
||||||
|
if (name == eaSignallingBtnName)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
isClicked = true;
|
||||||
|
HandleChangeState();
|
||||||
|
eaSignallingBtn.SetState(false);
|
||||||
Print("State Button Clicked ...");
|
Print("State Button Clicked ...");
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
else if (name == eaLongStateBtnName)
|
else if (name == eaSignallingLongBtnName)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
isClicked = true;
|
||||||
|
HandleChangeLongsState();
|
||||||
|
eaSignallingLongBtn.SetState(false);
|
||||||
Print("Long State Button Clicked ...");
|
Print("Long State Button Clicked ...");
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
else if (name == eaShortStateBtnName)
|
else if (name == eaSignallingShortBtnName)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
isClicked = true;
|
||||||
|
HandleChangeShortsState();
|
||||||
|
eaSignallingShortBtn.SetState(false);
|
||||||
Print("Short State Button Clicked ...");
|
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