Scrollbar

Anyone, especially newbies, asking for help with Photoshop Scripting and Photoshop Automation - as opposed to those contributing to discussion about an aspect of Photoshop Scripting

Moderators: Tom, Kukurykus

digvit
Posts: 8
Joined: Sat Feb 18, 2023 6:49 pm
Location: Belarus

Scrollbar

Post by digvit »

Dear, tell me, please, is the scrollbar controlled by the mouse wheel, if so, how?
User avatar
Kukurykus
Posts: 528
Joined: Mon Jul 25, 2016 12:36 pm

Re: Scrollbar

Post by Kukurykus »

Tell me what you exactly do so I tell you if that applies to your specific case.
digvit
Posts: 8
Joined: Sat Feb 18, 2023 6:49 pm
Location: Belarus

Re: Scrollbar

Post by digvit »

//Good afternoon
//This code works but without mouse wheel scrolling.
//Can this be made to work somehow?
//Thank you.



//************************************************************
function SlideShow(DLslide,MAS){df = [];pn=[];q = 1;kftr = 1.05;//1.1
xb = 667;//f=0
if(SelRB == 0 || SelRB == 2){x1=3;x=3;y1=3;y=3;x2=xx=160.9;y2=160.9;yy=160.9;fx=25;fy=10;p=y2;sp=0;}
if(SelRB == 2){fx=35;fy=5;}
if(SelRB == 1){x1=x=3;y1=3;y=3;x2=xx=106.2;y2=40;yy=40;fx=0;fy=0;}
if(SelRB == 3){x1=3;x=3;y1=3;y=3;x2=xx=160.7;y2=120;yy=120;win.text = TitulTxt[4] + ' ' + DLGbrg;f=5;fx=0;fy=0;}

if(DLslide > 8){if(SelRB == 0 || SelRB == 2){xb = 644;x2=xx=155;}}
if(DLslide > 54){if(SelRB == 1){xb = 645;x2=xx=102.5;}}
if(DLslide > 12){if(SelRB == 3){xb = 645;x2=xx=155.4;}}

//MkSize();
SlidePanel = win.add ('panel', [10, 10, xb, 387],'',Styl);SlidePanel.graphics.font = TS;SlidePanel.hide()
bounds = [0, 0, xb, 297];scrollGroup = SlidePanel.add ('group',bounds,{scrolling : true});

for(a=0;a<DLslide;a++){Pnc = scrollGroup.add ('panel', [x,y,xx,yy],'',Styl)
imPR = Pnc.add('image', [fx,fy,0,0], new File(MAS[a]), {nmbr: a} )
df.push(imPR);pn.push(Pnc)
MkSize();
if(SelRB == 0){imPR.size = [100,133];}
if(SelRB == 2){imPR.size = [90,130];}
if(SelRB == 1){imPR.size = [102,35];}
if(SelRB == 3){imPR.size = [150,117];}
x=xx+x1;xx=x+x2
if(q == 4 & SelRB == 0 || q == 4 & SelRB == 2){x=x1;xx=x2;y=yy+y1;yy=yy+y2+y1;q=0;scrollGroup.bounds = [0, 0, 667, yy];kftr = kftr + 0.092;};
if(q == 6 & SelRB == 1){x=x1;xx=x2;y=yy+y1;yy=yy+y2+y1;q=0;scrollGroup.bounds = [0, 0, 667, yy];kftr = kftr + 0.092;};
if(q == 4 & SelRB == 3){x=x1;xx=x2;y=yy+y1;yy=yy+y2+y1;q=0;scrollGroup.bounds = [0, 0, 667, yy];kftr = kftr + 0.092;f=2};
q++}
dlt = scrollGroup.size.height
scrollBar = win.add ('scrollbar',[647,10,667,387],0,0,dlt/2.53,{scrolling : true});scrollBar.stepdelta = 50;scrollBar.hide();
scrollBar.value = 0
if(DLslide > 8 & SelRB == 0 || DLslide > 8 & SelRB == 2){scrollBar.show()}
if(DLslide > 54 & SelRB == 1){scrollBar.show()}
if(DLslide > 12 & SelRB == 3){scrollBar.show()}
win.update()
scrollBar.onChanging = function (){scrollGroup.location.y = -kftr * this.value;}
scrollGroup.addEventListener ("click",butPresR())

if(DLslide != 0){
if(SelR != 'null' & SelRB == 0){ScolMas(colPan[0],pn[SelR])}
if(SelB != 'null' & SelRB == 1){ScolMas(colPan[0],pn[SelB])}
if(SelBrg != 'null' & SelRB == 3){ScolMas(colPan[0],pn[SelBrg])}
if(SelPsd != 'null' & SelRB == 2){ScolMas(colPan[0],pn[SelPsd])}}

Image.prototype.onDraw = null
SlidePanel.show();ControlPng.show()}
//***********************************************************
User avatar
Kukurykus
Posts: 528
Joined: Mon Jul 25, 2016 12:36 pm

Re: Scrollbar

Post by Kukurykus »

This code doesn't work because many variables are undefined, plus you did not put examplary values to call SlideShow function.
digvit
Posts: 8
Joined: Sat Feb 18, 2023 6:49 pm
Location: Belarus

Re: Scrollbar

Post by digvit »

Yes, it will not work that way, because there are many connections that are tied to certain paths.
I'll put it together to the bare minimum and, if you'll excuse me, I'll post the code tomorrow or the day after tomorrow.
Thanks for your attention and help!
digvit
Posts: 8
Joined: Sat Feb 18, 2023 6:49 pm
Location: Belarus

Re: Scrollbar

Post by digvit »

//Good afternoon
//delta(dlt) does not work correctly with a different number of images.
//There is also no mouse wheel control.
//Thank you.
fle = File('~/desktop/Exampe.png')
//SelRB = 0;

//************************************************************
df = [];pn=[];
mdd = 41; // number of images, after 40 the slider does not work properly.
xb = 667;
q = 1;
kftr = 1.05;

x1=3;x=3;y1=3;y=3;x2=xx=160.9;y2=160.9;yy=160.9;fx=25;fy=10;p=y2;sp=0;
if(mdd > 8){xb = 643;x2=xx=154.5;}

win = new Window ("dialog", '', [0, 0, 678, 445]);
SlidePanel = win.add ('panel', [10, 10, xb, 387],'',{borderStyle:'black'});
scrollGroup = SlidePanel.add ('group',[0, 0, xb, 297],{scrolling : true});

for(a=0;a<mdd;a++){Pnc = scrollGroup.add ('panel', [x,y,xx,yy],'',{borderStyle:'black'})
imPR = Pnc.add('image', [fx,fy,0,0], new File(fle), {nmbr: a} )
df.push(imPR);pn.push(Pnc)
MkSize();
imPR.size = [100,133];

x=xx+x1;xx=x+x2
if(q == 4){x=x1;xx=x2;y=yy+y1;yy=yy+y2+y1;q=0;scrollGroup.bounds = [0, 0, xb, yy];kftr = kftr + 0.092;};
q++}
dlt = scrollGroup.size.height
scrollBar = win.add ('scrollbar',[647,10,667,387],0,0,dlt/2.53);
scrollBar.stepdelta = 50;scrollBar.hide();//delta(dlt) does not work correctly with a different number of images.
scrollBar.value = 0

if(a > 8){scrollBar.show()}

scrollBar.onChanging = function (){scrollGroup.location.y = -kftr * this.value;}
// scrollGroup.addEventListener ("click",butPresR())

Image.prototype.onDraw = null
SlidePanel.show();
win.center();win.show()
//***********************************************************
function MkSize(){
Image.prototype.onDraw = function()
{
if(!this.image)return;
var WH = this.size,
wh = this.image.size,
k = Math.min(WH[0]/wh[0], WH[1]/wh[1]),
xy;
wh = [k*wh[0],k*wh[1]];
xy = [ (WH[0]-wh[0])/2, (WH[1]-wh[1])/2 ];
this.graphics.drawImage(this.image,xy[0],xy[1],wh[0],wh[1]);
WH = wh = xy = null}}
Attachments
Question.zip
(2.57 KiB) Downloaded 166 times
User avatar
Kukurykus
Posts: 528
Joined: Mon Jul 25, 2016 12:36 pm

Re: Scrollbar

Post by Kukurykus »

I tried it and roll handling scrollbar doesn't work correctly indeed. It moves it slowly (only when hovered) and doesn't change content of panel.

Most likely you met limitations of ScriptUI. The same is about cut bottom row of images. If other values used don't work then it is another bug.
digvit
Posts: 8
Joined: Sat Feb 18, 2023 6:49 pm
Location: Belarus

Re: Scrollbar

Post by digvit »

Thank you.
It will be so for now.