Hi,
Anyone know how to change the display of folders and files to give a sort of Windows 8/10 look and feel, Ideally I'm looking for something along the lines of the following:-
Lookup Folderlocation and put into field
If Type is "Folder" then display a custom button with the folder name in the centre
it type if "File" then display a custom button with the file name in the centre
Preferably with mouseover so I can change the colour/tint of the button when hovered over
Any help appreciated
Change folder/file display
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller
-
- Posts: 101
- Joined: Wed Dec 22, 2010 8:17 pm
Re: Change folder/file display
Not quite sure what you’re hoping for, but no replies so I’ll give it a go…
Livecode uses your operating system’s dialog boxes for queries like answer file or answer folder. For example, if you make a button with the script:
Then you should pop up the same dialog box you’d normally see when browsing.
The folder that is shown will be the defaultFolder, which you can change with the script:
You can use specialFolderPath to open windows user libraries, like so:
(look up specialFolderPath in the dictionary for codes).
Then you’d set the defaultFolder and answer file as described above.
However, I’m guessing you want something more like the windows 8 desktop to appear when you click your custom browse button.
If so you have to create your own interface.
You could…
Create a group, give it a name like showFoldersGrp, give it H and V scrollbars.
You’d get the list of folders and files in the defaultFolder with: If you got the detailed folders you’d have a lot more information like creation date and size which you can parse by item.
Same goes for files:
Now you have lists of files and folders. You could write a procedure to loop through those lists to create a bunch of controls i.e. buttons, fields, images. You could use a folder or file image, line them up in rows and columns in your group (which would scroll if there were a lot of them). Give them layered overlapping fields with their names. Assign code to the fields and images so they’d do what you wanted when the user clicked them.
I find it easiest to use hidden template button/fields/images to do this. So you’re not creating controls, the code is more like:
You’d store the list information in the object’s name or toolTip or create a custom property. I do this because sometimes ‘set the script’ hasn’t worked for me.
The object’s script can then access the correct file or folder path.
To get the mouseOver tint change you mention you could use two images and show-hide them on mouseEnter and mouseLeave (scripts would be in the templateImages).
You’d have to clean up each time you browsed (i.e. delete all controls in the group).
Sound like too much work when liveCode already uses your system’s default file browser? Does to me. It would however give you the effect I think you’re after.
Livecode uses your operating system’s dialog boxes for queries like answer file or answer folder. For example, if you make a button with the script:
Code: Select all
on mouseUp
answer file "Browse to your file’s location"
end mouseUp
The folder that is shown will be the defaultFolder, which you can change with the script:
Code: Select all
set the defaultFolder to whatever -- where whatever is a filepath like “C:/Windows/system32”
Code: Select all
put specialfolderpath(0x0027) into whatever --0x0027 - The "My Pictures" folder
Then you’d set the defaultFolder and answer file as described above.
However, I’m guessing you want something more like the windows 8 desktop to appear when you click your custom browse button.
If so you have to create your own interface.
You could…
Create a group, give it a name like showFoldersGrp, give it H and V scrollbars.
You’d get the list of folders and files in the defaultFolder with:
Code: Select all
put the folders into folderList -- folderList is a local variable I just made up, could be a field or any container.
Same goes for files:
Code: Select all
put the files into fileList
I find it easiest to use hidden template button/fields/images to do this. So you’re not creating controls, the code is more like:
Code: Select all
Copy img templateImage to grp showFoldersGrp
Show img templateImage of grp showFoldersGrp
Set the name of img templateImage of grp showFoldersGrp to (whatever name you want)
Etc…
The object’s script can then access the correct file or folder path.
To get the mouseOver tint change you mention you could use two images and show-hide them on mouseEnter and mouseLeave (scripts would be in the templateImages).
You’d have to clean up each time you browsed (i.e. delete all controls in the group).
Sound like too much work when liveCode already uses your system’s default file browser? Does to me. It would however give you the effect I think you’re after.