From 8fc750a954569b097721d4b0ed0215dd7c4c975d Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Sun, 22 Sep 2024 22:26:19 +0330 Subject: [PATCH] last ... --- .../XObjects/x-saherelm.x-button.class.mq5 | 162 +++++++++++ Classes/XObjects/x-saherelm.x-label.class.mq5 | 176 ++++++++++++ .../x-saherelm.x-rectangle.label.class.mq5 | 268 ++++++++++++++++++ 3 files changed, 606 insertions(+) create mode 100644 Classes/XObjects/x-saherelm.x-button.class.mq5 create mode 100644 Classes/XObjects/x-saherelm.x-label.class.mq5 create mode 100644 Classes/XObjects/x-saherelm.x-rectangle.label.class.mq5 diff --git a/Classes/XObjects/x-saherelm.x-button.class.mq5 b/Classes/XObjects/x-saherelm.x-button.class.mq5 new file mode 100644 index 00000000..0f72bdb5 --- /dev/null +++ b/Classes/XObjects/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/XObjects/x-saherelm.x-label.class.mq5 b/Classes/XObjects/x-saherelm.x-label.class.mq5 new file mode 100644 index 00000000..79d94c7d --- /dev/null +++ b/Classes/XObjects/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/XObjects/x-saherelm.x-rectangle.label.class.mq5 b/Classes/XObjects/x-saherelm.x-rectangle.label.class.mq5 new file mode 100644 index 00000000..c7b2351f --- /dev/null +++ b/Classes/XObjects/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 +};