Home   Archive   Permalink



Can't make 'Show' re-display my screen

Can't make 'Show' re-display my screen
    
I am trying to display a new set of images after the user presses a button. The first part of the script sets a count, assigns the file path to the images to be displayed (which is done randomly within a set of options) and draws the window. This happens as expected the first time around. The button in question calls a function that re-assigns the images and then requests to show the new set of images. I know that the assignment is done properly but the window is not updated. What am I missing?
    
This is the code in question:
    
view gui: layout [
    
     backdrop white
     text font-size 15 "Set of pictures”
     below
     text join "Photo's clicked: " count
     across
     button 148x135 my-pict1 [ count: count + 1 ]
     button 148x135 my-pict2 [ count: count + 1 ]
     return
     across
     button 148x135 my-pict3 [ count: count + 1 ]
     button 148x135 my-pict4 [ count: count + 1 ]
     return
     btn 148 "New set" [ set-new-picts show gui ]
]
    
I have also tried naming the buttons (e.g. a: button 148x135 my-pict1 [ count: count + 1 ]) and then calling:
     show [a b c d]
    
and even trying:
     show a show b show c show d
    
options that I collected from reading the documentation, but to no effect.
    
I appreciate any insight and/ or solutions

posted by:   Damian     8-Jun-2012/1:07:16-7:00



I think you do something like that:
    
my-pic: load %file.png
view gui: layout [button my-pic]
    
than you are changin the my-pic;
my-pic: load %another-file.png
show gui
    
but actually you didn't change the image of your button. you my-pic word are not connected to your button's picture. You should change the picture of your button:
    
my-pic: load %file.png
view gui: layout [b: button my-pic]
;...
b/image: load %another-file.png
show b
    
this will change your button's picture.
    
    
Here is another example, it loads & shows a random picture from the current path: (before run this, go to a path which holds a number of pictures)
    
view layout [image 100x100 "Click Me!" [face/image: load-image probe random/only read %./ show face]]
    


posted by:   Endo     11-Jun-2012/5:05:34-7:00



Solution is very simple, you should act on image refinement, look at this example:
view layout [ a: button stop.gif [a/image: logo.gif show a]]
    
and if you want to learn more, try:
view layout [ a: button stop.gif [? a]]

posted by:   MaxV     26-Jul-2012/9:33:35-7:00



Thank you Endo, your recommendations worked just fine.
    
And thank you MaxV, your explanation was very concise and helpful. Your last example was also very illustrative.

posted by:   Damian     26-Aug-2012/15:54-7:00