Hi John
Yes, we need the mimetypes.xml file as well (thanks Tomeu I forgot the
USB flash drive use case). I have tested the attached mimetypes.xml. It
is working fine. Put it in the activity directory.
Furthermore we have to change the scratch-activity script, so the
parameter with the scratch project object-id gets converted
(copy-from-journal) in a file and passed on to scratch. See the attached
scratch-activity script. I am not an expert with bash scripts, so please
give feedback.
I would like to extend the script so project files in the journal
directory are copied back to the journal after exiting scratch, but for
opening project it should work fine.
Best regards,
Philipp
John Maloney wrote:
Hi, Phillip.
Thanks for all your hard work in tracking this down. I had looked at
several other packages, including EToys, and couldn't figure out from
them how to do this.
I will make these changes to the next XO Scratch bundle.
Is that all I need to do? What about the mime types XML file similar to
the one added by Etoys? Does that turn out to be unnecessary?
-- John
On Jan 13, 2009, at 12:55 AM, Philipp Kocher wrote:
Tomeu Vizoso wrote:
On Mon, Jan 12, 2009 at 18:50, Bert Freudenberg
<[email protected]> wrote:
On 12.01.2009, at 18:11, Tomeu Vizoso wrote:
So what would the Scratch activity have to do so files put into the
Journal
(maybe by downloading) are displayed using a Scratch icon rather
than the
generic document icon?
Shipping a mimetypes.xml file inside the bundle as explained here:
http://wiki.laptop.org/go/Activity_bundles#Bundle_Structure
Sugar will call update-mime-database and will merge that file into the
xdg mime database.
I think that John is already trying this.
Guess I'm confused then - I thought that's exactly what Philipp had
done.
I think he just changed the mime_types field in the .info file.
And I just checked and it does work with Etoys projects. When
downloading
one it indeed gets an etoys icon (although at a smaller size - why
is that?)
No idea, though I think that the mime database is updated in the etoys
rpm and not in the bundle, am I right?
Regards,
Tomeu
Thanks Tomeu to lead me to the /home/olpc/.local directory. However, the
mimetypes.xml is not necessary to get the icon in the journal. I just
had to copy the scratch icon file in the activity directory to
"application-x-scratch-project.svg" (also in the scratch activity
dirctory). The Memorize Activity is a good example for using that
feature.
Sugar has to be restarted after installing Scratch to show the icon.
John, could you please make the following changes in the next Scratch
version:
- add the line "mime_types = application/x-scratch-project" to the
activity.info file
- copy the scratch icon to "application-x-scratch-project.svg" in the
activity directory
Etoys gets configured by different packages. e.g. the rpm
etoys-3.0.2153-1.noarch is adding the file
/usr/share/mime/packges/etoys.xml and the rpm
sugar-artwork-0.82.3-1.olpc3 is
adding the file
/usr/share/icons/sugar/scalable/mimetypes/application-x-squake-project.svg.
Regards,
Philipp
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-scratch-project">
<comment>Scratch Project</comment>
<glob pattern="*.sb"/>
</mime-type>
</mime-info>
#!/bin/sh
# Author: Bert Freudenberg
# Modified by: John Maloney
# Purpose: Run Scratch using the Squeak virtual machine
echo "scratch-activity"
echo "$@"
echo "$0" "$@"
echo
# arguments are unordered, have to loop
args=""
while [ -n "$2" ] ; do
case "$1" in
-b | --bundle-id) bundle_id="$2" ; args="$args BUNDLE_ID $2" ;;
-a | --activity-id) activity_id="$2" ; args="$args ACTIVITY_ID $2";;
-o | --object-id) object_id="$2" ; args="$args OBJECT_ID $2";;
-u | --uri) uri="$2" ; args="$args URI $2";;
*) echo unknown argument $1 $2 ;;
esac
shift;shift
done
# really need bundle id and activity id
if [ -z "$bundle_id" -o -z "$activity_id" ] ; then
echo ERROR: bundle-id and activity-id arguments required
echo Aborting
exit 1
fi
# some debug output
echo launching $bundle_id instance $activity_id
[ -n "$object_id" ] && echo with journal obj $object_id
[ -n "$uri" ] && echo loading uri $uri
echo
# do not crash on dbus errors
export DBUS_FATAL_WARNINGS=0
if [ -n "$object_id" ] ; then
JOURNAL_DIR="$SUGAR_ACTIVITY_ROOT/data/Journal"
mkdir -p "$JOURNAL_DIR"
temp_filename="$JOURNAL_DIR/temp.sb"
title=`copy-from-journal -o "$object_id" -m "$temp_filename" | grep
"title "`
# title is something like this for files downloaded from server:
# title -> File do_math_3.sb from
http://schoolserver/Scratch/do_math_3.sb.
# or like this if copied from USB flash drive:
# title -> do_math_3
title=${title#*"title -> "} #cut off description
echo "title: $title"
# workaround for copy-from-journal bug (adds another dot before
fileextension)
if [ -f "$JOURNAL_DIR/temp..sb" ] ; then
mv "$JOURNAL_DIR/temp..sb" "$temp_filename"
fi
if [[ "$title" == File*from* ]] ; then # for files downloaded from
server
filename=${title#*"File "} #cut off head until "File "
filename=${filename%" from"*} #cut off tail from " from"
echo "filename: $filename"
full_filename="$JOURNAL_DIR/$filename"
echo "full_filename: $full_filename"
mv "$temp_filename" "$full_filename"
else # for files from USB flash drive
full_filename="$JOURNAL_DIR/$title.sb"
echo "full_filename: $full_filename"
mv "$temp_filename" "$full_filename"
fi
else
full_filename=""
fi
# run Squeak VM with Scratch image
exec /usr/bin/squeak \
-vm-display-X11 \
-swapbtn \
-sugarBundleId $bundle_id \
-sugarActivityId $activity_id \
ScratchXO.image \
"$full_filename"
_______________________________________________
Devel mailing list
[email protected]
http://lists.laptop.org/listinfo/devel