Mariano Martinez Peck wrote:
Hi guys. After playing a little bit with StartupPreferences, and continuing
the effort of Ben (thanks Ben for yet another great tool), I generate a
improved (from my point of view) version of the tool.
The main changes are:
a) Previously the tool searched files 1) first in image directory, 2) then
in the preference folder and 3) finally in the general preference folder.
As soon as it found at least one file, I didn't continue with the rest of
the places. Now, it starts the other way around, from the most general to
the most spceific. Starts in 3), then 2) and finally 1)
Moreover, it does
not stop when it finds files in any of them. So all are searched and
executed. It works or or less the same way as variables in UNIX with
.bashrc /etc/envirorment, etc...
Did it actually work like that? I thought it had worked for me
processing more than one file from each preferences folders. It seemed
only the image folder was restricted to a single specific file
'startup.st' I assume this was to avoid processing any other random .st
files that might happen appear in the image folder. I had been
considering a refactoring like your #lookInFolder, but was concerned
about picking up random .st files in the image folder.
I haven't gone through the your new methods in detail, but I've expanded
your changes to the existing architecture to also resolve the issue with
Windows.
Basically I've thrown away what I was trying to do putting the configs
into standard Microsoft locations. That was mainly to deal the location
of config folders being hardcoded at two level down from root, which I
have now removed this constraint. The config folder can now be located
anywhere in the parent path from the image up to root.
The key addition is #ascendingSearchForDirectory for which you can try
these out...
FileDirectory default ascendingSearchForDirectory: 'mariano'
FileDirectory default ascendingSearchForDirectory: 'Users'
FileDirectory default ascendingSearchForDirectory: 'Contents'
"Valid for one-click image"
FileDirectory default ascendingSearchForDirectory: FileDirectory
configFolderLocalName
FileDirectory preferencesGeneralFolder
FileDirectory preferencesFolder
b) I have created several class side methods (addAtStartup*) to create
given actions into the current directory. Previously, files were created in
2 folders at the same time and there were only the possibility to create
only in one place. Now you can add startup actions in any of the 3 places
mentioned in a)
c) Added a whole protocol (remove* and clean*) to remove script files from
all folders of a) and also to clean the internal stored actions.
d) Lots of internal refactors to reuse code and less hardcoding.
Does someone want to take a look to the slice ?
Slice in inbox: http://code.google.com/p/pharo/issues/detail?id=5835
Cheers,