Merge pull request #15 from pietro1991-dot/devin/1781679998-panel-autofit
Co-authored-by: Pietro Giacobazzi <giacobazzipietro@gmail.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
commit
e8bf23f987
+22
-9
@@ -440,6 +440,14 @@ int OnCalculate(const int rates_total,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
|
// larghezza in pixel di un testo nel font del pannello
|
||||||
|
int TxtW(string s,int fs,bool bold)
|
||||||
|
{
|
||||||
|
TextSetFont(bold?"Consolas Bold":"Consolas",-fs*10);
|
||||||
|
uint w=0,h=0; TextGetSize(s,w,h);
|
||||||
|
return (int)w;
|
||||||
|
}
|
||||||
|
//+------------------------------------------------------------------+
|
||||||
void DrawInfo()
|
void DrawInfo()
|
||||||
{
|
{
|
||||||
double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
|
double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
|
||||||
@@ -456,7 +464,7 @@ void DrawInfo()
|
|||||||
double cluCur,cluPct,velCur,velPct,accCur,accPct,volCur,volPct;
|
double cluCur,cluPct,velCur,velPct,accCur,accPct,volCur,volPct;
|
||||||
AllMetrics(CLWIN,cluCur,cluPct,velCur,velPct,accCur,accPct,volCur,volPct);
|
AllMetrics(CLWIN,cluCur,cluPct,velCur,velPct,accCur,accPct,volCur,volPct);
|
||||||
|
|
||||||
string sT = "PaPP Median ["+EnumToString((ENUM_TIMEFRAMES)_Period)+"]";
|
string sT = "PaPP Median ["+StringSubstr(EnumToString((ENUM_TIMEFRAMES)_Period),7)+"]";
|
||||||
string sM = "Median: "+DoubleToString(median,_Digits);
|
string sM = "Median: "+DoubleToString(median,_Digits);
|
||||||
string sD = StringFormat("Dist: %+.2f%% - %s (P%.0f)",distPct,DistWord(distPct,distAbsPct),distAbsPct*100);
|
string sD = StringFormat("Dist: %+.2f%% - %s (P%.0f)",distPct,DistWord(distPct,distAbsPct),distAbsPct*100);
|
||||||
string sV = StringFormat("Cluster %.3f%% - %s (P%.0f)",cluCur,MagWord(cluPct,"molto stretto","stretto","normale","largo","molto largo"),cluPct*100);
|
string sV = StringFormat("Cluster %.3f%% - %s (P%.0f)",cluCur,MagWord(cluPct,"molto stretto","stretto","normale","largo","molto largo"),cluPct*100);
|
||||||
@@ -467,15 +475,20 @@ void DrawInfo()
|
|||||||
for(int m=0;m<7;m++) sMA[m]=StringFormat("MA %3dg: %s",gDays[m],DoubleToString(GetMA(m,1),_Digits));
|
for(int m=0;m<7;m++) sMA[m]=StringFormat("MA %3dg: %s",gDays[m],DoubleToString(GetMA(m,1),_Digits));
|
||||||
string sH = "Sopra=SELL | Sotto=BUY";
|
string sH = "Sopra=SELL | Sotto=BUY";
|
||||||
|
|
||||||
//--- 2) larghezza/altezza del box dal contenuto
|
//--- 2) larghezza/altezza del box: misuro la larghezza REALE in pixel (TextGetSize)
|
||||||
int maxc=StringLen(sT);
|
int maxw=0;
|
||||||
int lens[7]; lens[0]=StringLen(sM); lens[1]=StringLen(sD); lens[2]=StringLen(sV);
|
maxw=MathMax(maxw,TxtW(sT,FontSize+2,true));
|
||||||
lens[3]=StringLen(sVE); lens[4]=StringLen(sAC); lens[5]=StringLen(sVO); lens[6]=StringLen(sH);
|
maxw=MathMax(maxw,TxtW(sM,FontSize,false));
|
||||||
for(int k=0;k<7;k++) if(lens[k]>maxc) maxc=lens[k];
|
maxw=MathMax(maxw,TxtW(sD,FontSize,true));
|
||||||
for(int m=0;m<7;m++) if(StringLen(sMA[m])>maxc) maxc=StringLen(sMA[m]);
|
maxw=MathMax(maxw,TxtW(sV,FontSize,false));
|
||||||
|
maxw=MathMax(maxw,TxtW(sVE,FontSize,false));
|
||||||
|
maxw=MathMax(maxw,TxtW(sAC,FontSize,false));
|
||||||
|
maxw=MathMax(maxw,TxtW(sVO,FontSize,false));
|
||||||
|
maxw=MathMax(maxw,TxtW(sH,FontSize-1,false));
|
||||||
|
for(int m=0;m<7;m++) maxw=MathMax(maxw,TxtW(sMA[m],FontSize-1,false));
|
||||||
int boxX=x-6, boxY=y0-6;
|
int boxX=x-6, boxY=y0-6;
|
||||||
int w=(int)(maxc*FontSize*0.62)+18;
|
int w=maxw+(x-boxX)+10; // padding sinistro (x-boxX) + destro 10
|
||||||
int bodyH=15*lh+6; // 7 righe in alto + 7 MA + riga finale + padding
|
int bodyH=15*lh+6; // 7 righe in alto + 7 MA + riga finale + padding
|
||||||
PanelBox(boxX,boxY,w,bodyH);
|
PanelBox(boxX,boxY,w,bodyH);
|
||||||
|
|
||||||
//--- 3) scritte (aggiornate in-place: niente ObjectsDeleteAll -> niente lampeggio)
|
//--- 3) scritte (aggiornate in-place: niente ObjectsDeleteAll -> niente lampeggio)
|
||||||
|
|||||||
Reference in New Issue
Block a user