diff --git a/Classes/XCObjects/x-saherelm.x-button.class.mq5 b/Classes/XCObjects/x-saherelm.x-button.class.mq5 new file mode 100644 index 00000000..0f72bdb5 --- /dev/null +++ b/Classes/XCObjects/x-saherelm.x-button.class.mq5 @@ -0,0 +1,162 @@ +/////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 Class Library +// -------------------------------------- +// Name: XCButton +// Description: provides all based classes for use ... +// +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property library +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://www.saherelm.ir" +#property version "1.00" +#property strict + +// +#include "../x-saherelm.base.class.mq5" + +// +// Definitions ... + +// +// Implementation ... + +// +// a Button Creation Class ... +class XCButton : XSCBase +{ + // + // Public ... + public: + // + // Constructor(s) ... + void XCButton() + { + } + + // + // Deconstructor ... + void ~XCButton() + { + } + + // + // Actions ... + + /** + * Create an Instance of Class Object ... + * + * @param name: Object Name + * @param xDis: X Distance + * @param yDis: Y Distance + * @param xSize: X Size + * @param ySize: Y Size + */ + bool Create( + string name, + int xDis, + int yDis, + int xSize, + int ySize // + ) + { + // + // Object creation and property settings + bool result = false; + + // + result = ObjectCreate(0, name, OBJ_BUTTON, 0, 0, 0); + if (!result) + { + return result; + } + + // + ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis); + ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis); + ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize); + ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize); + + // + mName = name; + + // + return result; + } + + /** + * Destroy Class Instance ... + */ + void Destroy() + { + ObjectDelete(0, mName); + } + + // + // Getter(s) / Setter(s) ... + + /** + * Set Object Border Color ... + * + * @param value: color + */ + void SetBorderColor(color value) + { + ObjectSetInteger(0, mName, OBJPROP_BORDER_COLOR, value); + } + + /** + * Set Object Background Color ... + * + * @param value: color + */ + void SetBGColor(color value) + { + ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value); + } + + /** + * Set Object Text ... + * + * @param value: text + */ + void SetText(string value) + { + ObjectSetString(0, mName, OBJPROP_TEXT, value); + } + + // + // Protected ... + protected: + // + // Private ... + private: + // + // Props ... + + // + string mName; // Name of Object + + // + // Mouse state tracking variables ... + int mlbDownX; + int mlbDownY; + int mlbDownXDistance; + int mlbDownYDistance; + int mPreviousMouseState; + + // + bool mMovingState; // State for whether the object is moving + + // + string mAddedNames[]; // Array of added names + long mAddedXDisDiffrence[]; // Arrays to store added distance differences + long mAddedYDisDiffrence[]; // Arrays to store added distance differences +}; diff --git a/Classes/XCObjects/x-saherelm.x-edit.class.mq5 b/Classes/XCObjects/x-saherelm.x-edit.class.mq5 new file mode 100644 index 00000000..034416eb --- /dev/null +++ b/Classes/XCObjects/x-saherelm.x-edit.class.mq5 @@ -0,0 +1,182 @@ +/////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 Class Library +// -------------------------------------- +// Name: XCEdit +// Description: provides all based classes for use ... +// +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property library +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://www.saherelm.ir" +#property version "1.00" +#property strict + +// +#include "../x-saherelm.base.class.mq5" + +// +// Definitions ... + +// +// Implementation ... + +// +// a Label Creation Class ... +class XCEdit : XSCBase +{ + // + // Public ... + public: + // + // Constructor(s) ... + void XCEdit() + { + } + + // + // Deconstructor ... + void ~XCEdit() + { + } + + // + // Actions ... + + /** + * Create an Instance of Class Object ... + * + * @param name: Object Name + * @param xDis: X Distance + * @param yDis: Y Distance + * @param xSize: X Size + * @param ySize: Y Size + */ + bool Create( + string name, + int xDis, + int yDis, + int xSize, + int ySize // + ) + { + // + // Object creation and property settings + bool result = false; + + // + result = ObjectCreate(0, name, OBJ_EDIT, 0, 0, 0); + if (!result) + { + return result; + } + + // + ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis); + ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis); + ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize); + ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize); + + // + mName = name; + + // + return result; + } + + /** + * Destroy Class Instance ... + */ + void Destroy() + { + ObjectDelete(0, mName); + } + + // + // Getter(s) / Setter(s) ... + + /** + * Set Object Border Color ... + * + * @param value: color + */ + void SetBorderColor(color value) + { + ObjectSetInteger(0, mName, OBJPROP_BORDER_COLOR, value); + } + + /** + * Set Background Color of Object ... + * + * @param value: color + */ + void SetBGColor(color value) + { + ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value); + } + + /** + * Set Object Text Color ... + * + * @param value: color + */ + void SetTextColor(color value) + { + ObjectSetInteger(0, mName, OBJPROP_COLOR, value); + } + + /** + * Set Text of Object ... + * + * @param value: text + */ + void SetText(string value) + { + ObjectSetString(0, mName, OBJPROP_TEXT, value); + } + + /** + * Get Current Text of Object ... + * + * @return ( string ) + */ + string GetText() + { + return ObjectGetString(0, mName, OBJPROP_TEXT); + } + + // + // Protected ... + protected: + // + // Private ... + private: + // + // Props ... + + // + string mName; // Name of Object + + // + // Mouse state tracking variables ... + int mlbDownX; + int mlbDownY; + int mlbDownXDistance; + int mlbDownYDistance; + int mPreviousMouseState; + + // + bool mMovingState; // State for whether the object is moving + + // + string mAddedNames[]; // Array of added names + long mAddedXDisDiffrence[]; // Arrays to store added distance differences + long mAddedYDisDiffrence[]; // Arrays to store added distance differences +}; diff --git a/Classes/XCObjects/x-saherelm.x-label.class.mq5 b/Classes/XCObjects/x-saherelm.x-label.class.mq5 new file mode 100644 index 00000000..79d94c7d --- /dev/null +++ b/Classes/XCObjects/x-saherelm.x-label.class.mq5 @@ -0,0 +1,176 @@ +/////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 Class Library +// -------------------------------------- +// Name: XCLabel +// Description: provides all based classes for use ... +// +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property library +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://www.saherelm.ir" +#property version "1.00" +#property strict + +// +#include "../x-saherelm.base.class.mq5" + +// +// Definitions ... + +// +// Implementation ... + +// +// a Label Creation Class ... +class XCLabel : XSCBase +{ + // + // Public ... + public: + // + // Constructor(s) ... + void XCLabel() + { + } + + // + // Deconstructor ... + void ~XCLabel() + { + } + + // + // Actions ... + + /** + * Create an Instance of Class Object ... + * + * @param name: Object Name + * @param xDis: X Distance + * @param yDis: Y Distance + */ + bool Create( + string name, + int xDis, + int yDis // + ) + { + // + // Object creation and property settings + bool result = false; + + // + result = ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0); + if (!result) + { + return result; + } + + // + ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis); + ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis); + + // + mName = name; + + // + return result; + } + + /** + * Destroy Class Instance ... + */ + void Destroy() + { + ObjectDelete(0, mName); + } + + // + // Getter(s) / Setter(s) ... + + /** + * Set Text Color ... + * + * @param value: color + */ + void SetTextColor(color value) + { + ObjectSetInteger(0, mName, OBJPROP_COLOR, value); + } + + /** + * Set Text of Object ... + * + * @param value: text + */ + void SetText(string value) + { + ObjectSetString(0, mName, OBJPROP_TEXT, value); + } + + /** + * Get Text Of Object ... + * + * @return ( string ) + */ + string GetText() + { + return ObjectGetString(0, mName, OBJPROP_TEXT); + } + + /** + * Set Font Size of Object ... + * + * @param value: size + */ + void SetFontSize(int value) + { + ObjectSetInteger(0, mName, OBJPROP_FONTSIZE, value); + } + + /** + * Set Font Name Of Object ... + * + * @param value: font name + */ + void SetFont(string value) + { + ObjectSetString(0, mName, OBJPROP_FONT, value); + } + + // + // Protected ... + protected: + // + // Private ... + private: + // + // Props ... + + // + string mName; // Name of Object + + // + // Mouse state tracking variables ... + int mlbDownX; + int mlbDownY; + int mlbDownXDistance; + int mlbDownYDistance; + int mPreviousMouseState; + + // + bool mMovingState; // State for whether the object is moving + + // + string mAddedNames[]; // Array of added names + long mAddedXDisDiffrence[]; // Arrays to store added distance differences + long mAddedYDisDiffrence[]; // Arrays to store added distance differences +}; diff --git a/Classes/XCObjects/x-saherelm.x-panel.class.mq5 b/Classes/XCObjects/x-saherelm.x-panel.class.mq5 new file mode 100644 index 00000000..2b6406b2 --- /dev/null +++ b/Classes/XCObjects/x-saherelm.x-panel.class.mq5 @@ -0,0 +1,213 @@ +/////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 Class Library +// -------------------------------------- +// Name: XCPanel +// Description: provides all based classes for use ... +// +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property library +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://www.saherelm.ir" +#property version "1.00" +#property strict + +// +// Imports ... +#include "../XCObjects/x-saherelm.x-button.class.mq5" +#include "../XCObjects/x-saherelm.x-edit.class.mq5" +#include "../XCObjects/x-saherelm.x-label.class.mq5" +#include "../XCObjects/x-saherelm.x-rectangle.label.class.mq5" + +// +// Implementation ... + +// +class XCPanel : XSCBase +{ + public: + // + // Constructor(s) ... + void XCPanel() + { + // + // Enables mouse move events on the chart + ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true); + } + + // + // Deconstructor ... + void ~XCPanel() + { + Destroy(); + } + + // + // Action ... + + // + bool Create( + string name, + int xDis, + int yDis, + int xSize, + int ySize, + // + // Title Bar ... + ENUM_BORDER_TYPE titleBarBorderType = BORDER_FLAT, + color titleBarBGColor = clrBlueViolet, + // + // Caption ... + string caption = "", + int captionontSize = 9, + color captionColor = clrWhite, + // + // Body ... + ENUM_BORDER_TYPE bodyBorderType = BORDER_FLAT, + color bodyBGColor = clrMediumSlateBlue // + ) + { + // + bool result = false; + + // + result = IsValid(name); + if (!result) + { + // + Destroy(); + return result; + } + + // + mTitleBarName = name + "_TITLE_BAR"; + mTitleTextName = name + "_CAPTION"; + mBodyName = name + "_BODY"; + + // + if (!IsValid(caption)) + { + caption = name; + } + + // + // Title Bar ... + int titleBarHeight = ySize / 5; + result = mTitleBar.Create( + mTitleBarName, + xDis, + yDis, + xSize, + titleBarHeight // + ); + if (!result) + { + // + Destroy(); + return result; + } + mTitleBar.SetBorderType(titleBarBorderType); + mTitleBar.SetBGColor(titleBarBGColor); + + // + // Body ... + result = mBody.Create( + mBodyName, + xDis, + yDis + titleBarHeight - 1, + xSize, + ySize // + ); + if (!result) + { + // + Destroy(); + return result; + } + mBody.SetBorderType(bodyBorderType); + mBody.SetBGColor(bodyBGColor); + + // + // Caption ... + result = mTitleText.Create(mTitleTextName, xDis, yDis); + if (!result) + { + // + Destroy(); + return result; + } + mTitleText.SetText(caption); + mTitleText.SetTextColor(captionColor); + mTitleText.SetFontSize(captionontSize); + + // + // Adding Child Objects ... + mTitleBar.Add(mBodyName); + mTitleBar.Add(mTitleTextName); + + // + return result; + } + + // + void Destroy() + { + // + mBodyName = NULL; + mTitleBarName = NULL; + mTitleTextName = NULL; + + // + mBody.Destroy(); + mTitleBar.Destroy(); + mTitleText.Destroy(); + } + + /** + * Event Handling for Mouse Movement ... + * @param id: Event ID + * @param lparam: Event parameter of long type + * @param dparam: Event parameter of double type + * @param sparam: Event parameter of string type + */ + void OnEvent( + int id, + long lparam, + double dparam, + string sparam // + ) + { + // + mTitleBar.OnEvent( + id, + lparam, + dparam, + sparam // + ); + } + + // + protected: + private: + // + // Props ... + + // + string mBodyName; + string mTitleBarName; + string mTitleTextName; + + // + XCLabel mTitleText; + XCRectangleLabel mBody; + XCRectangleLabel mTitleBar; + + // +}; \ No newline at end of file diff --git a/Classes/XCObjects/x-saherelm.x-rectangle.label.class.mq5 b/Classes/XCObjects/x-saherelm.x-rectangle.label.class.mq5 new file mode 100644 index 00000000..c7b2351f --- /dev/null +++ b/Classes/XCObjects/x-saherelm.x-rectangle.label.class.mq5 @@ -0,0 +1,268 @@ +/////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 Class Library +// -------------------------------------- +// Name: XCRectangleLabel +// Description: provides all based classes for use ... +// +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property library +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://www.saherelm.ir" +#property version "1.00" +#property strict + +// +#include "../x-saherelm.base.class.mq5" + +// +// Definitions ... + +// +// Implementation ... + +// +// a Rectangle Label Creation Class ... +class XCRectangleLabel : XSCBase +{ + // + // Public ... + public: + // + // Constructor(s) ... + void XCRectangleLabel() + { + } + + // + // Deconstructor ... + void ~XCRectangleLabel() + { + } + + // + // Getter(s) / Setter(s) ... + + // + // Handlers ... + + /** + * Event Handling for Mouse Movement ... + * @param id: Event ID + * @param lparam: Event parameter of long type + * @param dparam: Event parameter of double type + * @param sparam: Event parameter of string type + */ + void OnEvent( + int id, + long lparam, + double dparam, + string sparam // + ) + { + // + // Handle mouse movement events for dragging the rectangle label + if (id == CHARTEVENT_MOUSE_MOVE) + { + // + int X = (int)lparam; + int Y = (int)dparam; + int MouseState = (int)sparam; + + // + string name = mName; + int XSize = (int)ObjectGetInteger(0, name, OBJPROP_XSIZE); + int YSize = (int)ObjectGetInteger(0, name, OBJPROP_YSIZE); + int XDistance = (int)ObjectGetInteger(0, name, OBJPROP_XDISTANCE); + int YDistance = (int)ObjectGetInteger(0, name, OBJPROP_YDISTANCE); + + // + if (MouseState == 1 && + mPreviousMouseState == 0) + { + // + mlbDownX = X; + mlbDownY = Y; + mlbDownXDistance = XDistance; + mlbDownYDistance = YDistance; + + // + if (X >= XDistance && + Y >= YDistance && + X <= XDistance + XSize && + Y <= YDistance + YSize) + { + mMovingState = true; + } + } + + // + if (mMovingState) + { + // + ChartSetInteger(0, CHART_MOUSE_SCROLL, false); + ObjectSetInteger(0, name, OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX); + ObjectSetInteger(0, name, OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY); + + // + for (int i = 0; i < ArraySize(mAddedNames); i++) + { + // + ObjectSetInteger(0, mAddedNames[i], OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX - mAddedXDisDiffrence[i]); + ObjectSetInteger(0, mAddedNames[i], OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY - mAddedYDisDiffrence[i]); + } + + // + ChartRedraw(0); + } + + // + if (MouseState == 0) + { + // + mMovingState = false; + ChartSetInteger(0, CHART_MOUSE_SCROLL, true); + } + + // + mPreviousMouseState = MouseState; + } + } + + // + // Actions ... + + /** + * Create an Instance of Class Object ... + * + * @param name: Object Name + * @param xDis: X Distance + * @param yDis: Y Distance + * @param xSize: X Size + * @param ySize: Y Size + */ + bool Create( + string name, + int xDis, + int yDis, + int xSize, + int ySize // + ) + { + // + // Object creation and property settings + bool result = false; + + // + result = ObjectCreate(0, name, OBJ_RECTANGLE_LABEL, 0, 0, 0); + if (!result) + { + return result; + } + + // + ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis); + ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis); + ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize); + ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize); + + // + mName = name; + + // + return result; + } + + /** + * Destroy Class Instance ... + */ + void Destroy() + { + ObjectDelete(0, mName); + } + + /** + * Set Object Border Type ... + * + * @param borderType: Specified border type + */ + void SetBorderType(ENUM_BORDER_TYPE borderType) + { + // + ObjectSetInteger( + 0, + mName, + OBJPROP_BORDER_TYPE, + borderType // + ); + } + + /** + * Set Object Background Color + * + * @param value: color + */ + void SetBGColor(color value) + { + // + ObjectSetInteger( + 0, + mName, + OBJPROP_BGCOLOR, + value // + ); + } + + /** + * Add a Name to Object + * @param name: name + */ + void Add(string name) + { + // + // Add a new object by name to the rectangle label and track distances + ArrayResize(mAddedNames, ArraySize(mAddedNames) + 1); + ArrayResize(mAddedXDisDiffrence, ArraySize(mAddedXDisDiffrence) + 1); + ArrayResize(mAddedYDisDiffrence, ArraySize(mAddedYDisDiffrence) + 1); + + // + mAddedNames[ArraySize(mAddedNames) - 1] = name; + mAddedXDisDiffrence[ArraySize(mAddedXDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_XDISTANCE) - ObjectGetInteger(0, name, OBJPROP_XDISTANCE); + mAddedYDisDiffrence[ArraySize(mAddedYDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_YDISTANCE) - ObjectGetInteger(0, name, OBJPROP_YDISTANCE); + } + + // + // Protected ... + protected: + // + // Private ... + private: + // + // Props ... + + // + string mName; // Name of Object + + // + // Mouse state tracking variables ... + int mlbDownX; + int mlbDownY; + int mlbDownXDistance; + int mlbDownYDistance; + int mPreviousMouseState; + + // + bool mMovingState; // State for whether the object is moving + + // + string mAddedNames[]; // Array of added names + long mAddedXDisDiffrence[]; // Arrays to store added distance differences + long mAddedYDisDiffrence[]; // Arrays to store added distance differences +}; diff --git a/Documents/BKP/XObjects/x-saherelm.x-button.class.mq5 b/Documents/BKP/XObjects/x-saherelm.x-button.class.mq5 deleted file mode 100644 index 6aadff80..00000000 --- a/Documents/BKP/XObjects/x-saherelm.x-button.class.mq5 +++ /dev/null @@ -1,162 +0,0 @@ -// /////////////////////////////////////////////////////// -// // -// // SaherElm IT Center MQL5 Class Library -// // -------------------------------------- -// // Name: XCButton -// // Description: provides all based classes for use ... -// // -// // -// // Maintainer: -// // ------------ -// // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) -// // -// ////////////////////////////////////////////////////// -// // -// // Global Properties ... -// #property library -// #property copyright "Copyright 2023, SaherElm IT Center" -// #property link "https://www.saherelm.ir" -// #property version "1.00" -// #property strict - -// // -// #include "../x-saherelm.base.class.mq5" - -// // -// // Definitions ... - -// // -// // Implementation ... - -// // -// // a Button Creation Class ... -// class XCButton : XSCBase -// { -// // -// // Public ... -// public: -// // -// // Constructor(s) ... -// void XCButton() -// { -// } - -// // -// // Deconstructor ... -// void ~XCButton() -// { -// } - -// // -// // Actions ... - -// /** -// * Create an Instance of Class Object ... -// * -// * @param name: Object Name -// * @param xDis: X Distance -// * @param yDis: Y Distance -// * @param xSize: X Size -// * @param ySize: Y Size -// */ -// bool Create( -// string name, -// int xDis, -// int yDis, -// int xSize, -// int ySize // -// ) -// { -// // -// // Object creation and property settings -// bool result = false; - -// // -// result = ObjectCreate(0, name, OBJ_BUTTON, 0, 0, 0); -// if (!result) -// { -// return result; -// } - -// // -// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis); -// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis); -// ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize); -// ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize); - -// // -// mName = name; - -// // -// return result; -// } - -// /** -// * Destroy Class Instance ... -// */ -// void Destroy() -// { -// ObjectDelete(0, mName); -// } - -// // -// // Getter(s) / Setter(s) ... - -// /** -// * Set Object Border Color ... -// * -// * @param value: color -// */ -// void SetBorderColor(color value) -// { -// ObjectSetInteger(0, mName, OBJPROP_BORDER_COLOR, value); -// } - -// /** -// * Set Object Background Color ... -// * -// * @param value: color -// */ -// void SetBGColor(color value) -// { -// ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value); -// } - -// /** -// * Set Object Text ... -// * -// * @param value: text -// */ -// void SetText(string value) -// { -// ObjectSetString(0, mName, OBJPROP_TEXT, value); -// } - -// // -// // Protected ... -// protected: -// // -// // Private ... -// private: -// // -// // Props ... - -// // -// string mName; // Name of Object - -// // -// // Mouse state tracking variables ... -// int mlbDownX; -// int mlbDownY; -// int mlbDownXDistance; -// int mlbDownYDistance; -// int mPreviousMouseState; - -// // -// bool mMovingState; // State for whether the object is moving - -// // -// string mAddedNames[]; // Array of added names -// long mAddedXDisDiffrence[]; // Arrays to store added distance differences -// long mAddedYDisDiffrence[]; // Arrays to store added distance differences -// }; diff --git a/Documents/BKP/XObjects/x-saherelm.x-label.class.mq5 b/Documents/BKP/XObjects/x-saherelm.x-label.class.mq5 deleted file mode 100644 index cad4e192..00000000 --- a/Documents/BKP/XObjects/x-saherelm.x-label.class.mq5 +++ /dev/null @@ -1,176 +0,0 @@ -// /////////////////////////////////////////////////////// -// // -// // SaherElm IT Center MQL5 Class Library -// // -------------------------------------- -// // Name: XCLabel -// // Description: provides all based classes for use ... -// // -// // -// // Maintainer: -// // ------------ -// // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) -// // -// ////////////////////////////////////////////////////// -// // -// // Global Properties ... -// #property library -// #property copyright "Copyright 2023, SaherElm IT Center" -// #property link "https://www.saherelm.ir" -// #property version "1.00" -// #property strict - -// // -// #include "../x-saherelm.base.class.mq5" - -// // -// // Definitions ... - -// // -// // Implementation ... - -// // -// // a Label Creation Class ... -// class XCLabel : XSCBase -// { -// // -// // Public ... -// public: -// // -// // Constructor(s) ... -// void XCLabel() -// { -// } - -// // -// // Deconstructor ... -// void ~XCLabel() -// { -// } - -// // -// // Actions ... - -// /** -// * Create an Instance of Class Object ... -// * -// * @param name: Object Name -// * @param xDis: X Distance -// * @param yDis: Y Distance -// */ -// bool Create( -// string name, -// int xDis, -// int yDis // -// ) -// { -// // -// // Object creation and property settings -// bool result = false; - -// // -// result = ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0); -// if (!result) -// { -// return result; -// } - -// // -// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis); -// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis); - -// // -// mName = name; - -// // -// return result; -// } - -// /** -// * Destroy Class Instance ... -// */ -// void Destroy() -// { -// ObjectDelete(0, mName); -// } - -// // -// // Getter(s) / Setter(s) ... - -// /** -// * Set Text Color ... -// * -// * @param value: color -// */ -// void SetTextColor(color value) -// { -// ObjectSetInteger(0, mName, OBJPROP_COLOR, value); -// } - -// /** -// * Set Text of Object ... -// * -// * @param value: text -// */ -// void SetText(string value) -// { -// ObjectSetString(0, mName, OBJPROP_TEXT, value); -// } - -// /** -// * Get Text Of Object ... -// * -// * @return ( string ) -// */ -// string GetText() -// { -// return ObjectGetString(0, mName, OBJPROP_TEXT); -// } - -// /** -// * Set Font Size of Object ... -// * -// * @param value: size -// */ -// void SetFontSize(int value) -// { -// ObjectSetInteger(0, mName, OBJPROP_FONTSIZE, value); -// } - -// /** -// * Set Font Name Of Object ... -// * -// * @param value: font name -// */ -// void SetFont(string value) -// { -// ObjectSetString(0, mName, OBJPROP_FONT, value); -// } - -// // -// // Protected ... -// protected: -// // -// // Private ... -// private: -// // -// // Props ... - -// // -// string mName; // Name of Object - -// // -// // Mouse state tracking variables ... -// int mlbDownX; -// int mlbDownY; -// int mlbDownXDistance; -// int mlbDownYDistance; -// int mPreviousMouseState; - -// // -// bool mMovingState; // State for whether the object is moving - -// // -// string mAddedNames[]; // Array of added names -// long mAddedXDisDiffrence[]; // Arrays to store added distance differences -// long mAddedYDisDiffrence[]; // Arrays to store added distance differences -// }; diff --git a/Documents/BKP/XObjects/x-saherelm.x-rectangle.label.class.mq5 b/Documents/BKP/XObjects/x-saherelm.x-rectangle.label.class.mq5 deleted file mode 100644 index 8d29be05..00000000 --- a/Documents/BKP/XObjects/x-saherelm.x-rectangle.label.class.mq5 +++ /dev/null @@ -1,268 +0,0 @@ -// /////////////////////////////////////////////////////// -// // -// // SaherElm IT Center MQL5 Class Library -// // -------------------------------------- -// // Name: XCRectangleLabel -// // Description: provides all based classes for use ... -// // -// // -// // Maintainer: -// // ------------ -// // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) -// // -// ////////////////////////////////////////////////////// -// // -// // Global Properties ... -// #property library -// #property copyright "Copyright 2023, SaherElm IT Center" -// #property link "https://www.saherelm.ir" -// #property version "1.00" -// #property strict - -// // -// #include "../x-saherelm.base.class.mq5" - -// // -// // Definitions ... - -// // -// // Implementation ... - -// // -// // a Rectangle Label Creation Class ... -// class XCRectangleLabel : XSCBase -// { -// // -// // Public ... -// public: -// // -// // Constructor(s) ... -// void XCRectangleLabel() -// { -// } - -// // -// // Deconstructor ... -// void ~XCRectangleLabel() -// { -// } - -// // -// // Getter(s) / Setter(s) ... - -// // -// // Handlers ... - -// /** -// * Event Handling for Mouse Movement ... -// * @param id: Event ID -// * @param lparam: Event parameter of long type -// * @param dparam: Event parameter of double type -// * @param sparam: Event parameter of string type -// */ -// void OnEvent( -// int id, -// long lparam, -// double dparam, -// string sparam // -// ) -// { -// // -// // Handle mouse movement events for dragging the rectangle label -// if (id == CHARTEVENT_MOUSE_MOVE) -// { -// // -// int X = (int)lparam; -// int Y = (int)dparam; -// int MouseState = (int)sparam; - -// // -// string name = mName; -// int XSize = (int)ObjectGetInteger(0, name, OBJPROP_XSIZE); -// int YSize = (int)ObjectGetInteger(0, name, OBJPROP_YSIZE); -// int XDistance = (int)ObjectGetInteger(0, name, OBJPROP_XDISTANCE); -// int YDistance = (int)ObjectGetInteger(0, name, OBJPROP_YDISTANCE); - -// // -// if (MouseState == 1 && -// mPreviousMouseState == 0) -// { -// // -// mlbDownX = X; -// mlbDownY = Y; -// mlbDownXDistance = XDistance; -// mlbDownYDistance = YDistance; - -// // -// if (X >= XDistance && -// Y >= YDistance && -// X <= XDistance + XSize && -// Y <= YDistance + YSize) -// { -// mMovingState = true; -// } -// } - -// // -// if (mMovingState) -// { -// // -// ChartSetInteger(0, CHART_MOUSE_SCROLL, false); -// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX); -// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY); - -// // -// for (int i = 0; i < ArraySize(mAddedNames); i++) -// { -// // -// ObjectSetInteger(0, mAddedNames[i], OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX - mAddedXDisDiffrence[i]); -// ObjectSetInteger(0, mAddedNames[i], OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY - mAddedYDisDiffrence[i]); -// } - -// // -// ChartRedraw(0); -// } - -// // -// if (MouseState == 0) -// { -// // -// mMovingState = false; -// ChartSetInteger(0, CHART_MOUSE_SCROLL, true); -// } - -// // -// mPreviousMouseState = MouseState; -// } -// } - -// // -// // Actions ... - -// /** -// * Create an Instance of Class Object ... -// * -// * @param name: Object Name -// * @param xDis: X Distance -// * @param yDis: Y Distance -// * @param xSize: X Size -// * @param ySize: Y Size -// */ -// bool Create( -// string name, -// int xDis, -// int yDis, -// int xSize, -// int ySize // -// ) -// { -// // -// // Object creation and property settings -// bool result = false; - -// // -// result = ObjectCreate(0, name, OBJ_RECTANGLE_LABEL, 0, 0, 0); -// if (!result) -// { -// return result; -// } - -// // -// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis); -// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis); -// ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize); -// ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize); - -// // -// mName = name; - -// // -// return result; -// } - -// /** -// * Destroy Class Instance ... -// */ -// void Destroy() -// { -// ObjectDelete(0, mName); -// } - -// /** -// * Set Object Border Type ... -// * -// * @param borderType: Specified border type -// */ -// void SetBorderType(ENUM_BORDER_TYPE borderType) -// { -// // -// ObjectSetInteger( -// 0, -// mName, -// OBJPROP_BORDER_TYPE, -// borderType // -// ); -// } - -// /** -// * Set Object Background Color -// * -// * @param value: color -// */ -// void SetBGColor(color value) -// { -// // -// ObjectSetInteger( -// 0, -// mName, -// OBJPROP_BGCOLOR, -// value // -// ); -// } - -// /** -// * Add a Name to Object -// * @param name: name -// */ -// void Add(string name) -// { -// // -// // Add a new object by name to the rectangle label and track distances -// ArrayResize(mAddedNames, ArraySize(mAddedNames) + 1); -// ArrayResize(mAddedXDisDiffrence, ArraySize(mAddedXDisDiffrence) + 1); -// ArrayResize(mAddedYDisDiffrence, ArraySize(mAddedYDisDiffrence) + 1); - -// // -// mAddedNames[ArraySize(mAddedNames) - 1] = name; -// mAddedXDisDiffrence[ArraySize(mAddedXDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_XDISTANCE) - ObjectGetInteger(0, name, OBJPROP_XDISTANCE); -// mAddedYDisDiffrence[ArraySize(mAddedYDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_YDISTANCE) - ObjectGetInteger(0, name, OBJPROP_YDISTANCE); -// } - -// // -// // Protected ... -// protected: -// // -// // Private ... -// private: -// // -// // Props ... - -// // -// string mName; // Name of Object - -// // -// // Mouse state tracking variables ... -// int mlbDownX; -// int mlbDownY; -// int mlbDownXDistance; -// int mlbDownYDistance; -// int mPreviousMouseState; - -// // -// bool mMovingState; // State for whether the object is moving - -// // -// string mAddedNames[]; // Array of added names -// long mAddedXDisDiffrence[]; // Arrays to store added distance differences -// long mAddedYDisDiffrence[]; // Arrays to store added distance differences -// }; diff --git a/Experts/x-saherelm.test-panel.ea.mq5 b/Experts/x-saherelm.test-panel.ea.mq5 new file mode 100644 index 00000000..a8f219f8 --- /dev/null +++ b/Experts/x-saherelm.test-panel.ea.mq5 @@ -0,0 +1,118 @@ +//+------------------------------------------------------------------+ +//| ProjectName | +//| Copyright 2020, CompanyName | +//| http://www.companyname.net | +//+------------------------------------------------------------------+ + +// +// Imports ... +#include "../Classes/XCObjects/x-saherelm.x-panel.class.mq5" +#include + +// +CTrade trade; + +// +XCPanel panel; + +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() +{ + // + panel.Create("XPanel", 100, 100, 200, 100); + + // + // Enables mouse move events on the chart + // ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true); + + // Initialize and set properties for Title bar, main dashboard, and all other elements + // TitleBar.Create("TitleBar", 100, 100, 200, 20); + // TitleBar.SetBorderType(BORDER_FLAT); + // TitleBar.SetBGColor(C'27, 59, 146'); + + // MainDashboardBody.Create("MainDashboardBody", 100, 119, 200, 100); + // MainDashboardBody.SetBorderType(BORDER_FLAT); + // MainDashboardBody.SetBGColor(C'102, 152, 250'); + + // TitleText.Create("TitleText", 110, 101); + // TitleText.SetText("Simple Trading EA V1.0"); + // TitleText.SetFontSize(10); + // TitleText.SetTextColor(clrWhite); + + // LotSizeText.Create("LotSizeText", 110, 140); + // LotSizeText.SetText("Lot Size:"); + // LotSizeText.SetFontSize(12); + // LotSizeText.SetTextColor(clrWhite); + + // LotSize.Create("LotSize", 220, 140, 50, 20); + // LotSize.SetBorderColor(clrBlack); + // LotSize.SetBGColor(clrWhiteSmoke); + // LotSize.SetText("0.01"); + // LotSize.SetTextColor(clrBlack); + + // BuyButton.Create("BuyButton", 110, 180, 80, 25); + // BuyButton.SetBorderColor(clrBlack); + // BuyButton.SetText("Buy"); + // BuyButton.SetBGColor(clrLime); + + // SellButton.Create("SellButton", 210, 180, 80, 25); + // SellButton.SetBorderColor(clrBlack); + // SellButton.SetText("Sell"); + // SellButton.SetBGColor(clrRed); + + // Add the other elements to the Central Element i.e. TitleBar object in this case + // TitleBar.Add("MainDashboardBody"); + // TitleBar.Add("TitleText"); + // TitleBar.Add("LotSizeText"); + // TitleBar.Add("LotSize"); + // TitleBar.Add("BuyButton"); + // TitleBar.Add("SellButton"); + + ChartRedraw(0); // Redraws the chart + return (INIT_SUCCEEDED); +} + +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) +{ + // Destroys all GUI objects + // TitleBar.Destroy(); + // MainDashboardBody.Destroy(); + // TitleText.Destroy(); + // LotSizeText.Destroy(); + // LotSize.Destroy(); + // BuyButton.Destroy(); + // SellButton.Destroy(); +} + +//+------------------------------------------------------------------+ +//|Chart event handling function | +//+------------------------------------------------------------------+ +void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) +{ + // Handles click events for Buy and Sell buttons and opens corresponding positions + // if (id == CHARTEVENT_OBJECT_CLICK) + // { + // double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + // double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + // if (sparam == "BuyButton") + // { + // trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, (double)LotSize.GetText(), ask, 0, 0); + // } + // if (sparam == "SellButton") + // { + // trade.PositionOpen(_Symbol, ORDER_TYPE_SELL, (double)LotSize.GetText(), bid, 0, 0); + // } + // } + + // // Passes events to the TitleBar object + // TitleBar.OnEvent(id, lparam, dparam, sparam); + + // + panel.OnEvent(id, lparam, dparam, sparam); +} +//+------------------------------------------------------------------+