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 <b...@freudenbergs.de> 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
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel

Reply via email to