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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Object Text Color ...
|
||||
*
|
||||
* @param value: Color
|
||||
*/
|
||||
void SetColor(color value)
|
||||
{
|
||||
ObjectSetInteger(0, mName, OBJPROP_COLOR, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Object Text ...
|
||||
*
|
||||
@@ -152,6 +162,16 @@ class XCButton : XSCBase
|
||||
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:
|
||||
|
||||
@@ -107,7 +107,7 @@ class XCPanel : XSCBase
|
||||
|
||||
//
|
||||
mTitleBarName = name + "_TITLE_BAR";
|
||||
mTitleTextName = name + "_CAPTION";
|
||||
mCaptionLblName = name + "_CAPTION";
|
||||
mBodyName = name + "_BODY";
|
||||
|
||||
//
|
||||
@@ -156,22 +156,22 @@ class XCPanel : XSCBase
|
||||
|
||||
//
|
||||
// Caption ...
|
||||
result = mTitleText.Create(mTitleTextName, xDis, yDis);
|
||||
result = mCaptionLbl.Create(mCaptionLblName, xDis, yDis);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
Destroy();
|
||||
return result;
|
||||
}
|
||||
mTitleText.SetText(caption);
|
||||
mTitleText.SetAnchor(captionAnchor);
|
||||
mTitleText.SetTextColor(captionColor);
|
||||
mTitleText.SetFontSize(captionontSize);
|
||||
mCaptionLbl.SetText(caption);
|
||||
mCaptionLbl.SetAnchor(captionAnchor);
|
||||
mCaptionLbl.SetTextColor(captionColor);
|
||||
mCaptionLbl.SetFontSize(captionontSize);
|
||||
|
||||
//
|
||||
// Adding Child Objects ...
|
||||
mTitleBar.Add(mBodyName);
|
||||
mTitleBar.Add(mTitleTextName);
|
||||
mTitleBar.Add(mCaptionLblName);
|
||||
|
||||
//
|
||||
return result;
|
||||
@@ -185,12 +185,12 @@ class XCPanel : XSCBase
|
||||
//
|
||||
mBodyName = NULL;
|
||||
mTitleBarName = NULL;
|
||||
mTitleTextName = NULL;
|
||||
mCaptionLblName = NULL;
|
||||
|
||||
//
|
||||
mBody.Destroy();
|
||||
mTitleBar.Destroy();
|
||||
mTitleText.Destroy();
|
||||
mCaptionLbl.Destroy();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -226,6 +226,26 @@ class XCPanel : XSCBase
|
||||
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:
|
||||
private:
|
||||
@@ -235,10 +255,10 @@ class XCPanel : XSCBase
|
||||
//
|
||||
string mBodyName;
|
||||
string mTitleBarName;
|
||||
string mTitleTextName;
|
||||
string mCaptionLblName;
|
||||
|
||||
//
|
||||
XCLabel mTitleText;
|
||||
XCLabel mCaptionLbl;
|
||||
XCRectangleLabel mBody;
|
||||
XCRectangleLabel mTitleBar;
|
||||
|
||||
|
||||
@@ -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