Opening Browse programatically
Joshua Minor
j at lux.vu
Sun Mar 16 01:27:17 EDT 2008
Thanks. It works now. In case anyone else wants to do this, here's
what I ended up with:
def open_url(self, url):
"""Ask the journal to open an URL for us."""
from sugar import profile
from shutil import rmtree
from sugar.datastore import datastore
from sugar.activity.activity import show_object_in_journal
from tempfile import mkdtemp
tmpfolder = mkdtemp('.tmp', 'url',
os.path.join(self.get_activity_root(), 'instance'))
tmpfilepath = os.path.join(tmpfolder, 'url')
try:
tmpfile = open(tmpfilepath, 'w')
tmpfile.write(url)
tmpfile.close()
os.chmod(tmpfolder, 0755)
os.chmod(tmpfilepath, 0755)
jobject = datastore.create()
metadata = {
'title': url,
'title_set_by_user': '1',
'buddies': '',
'preview': '',
'icon-color': profile.get_color().to_string(),
'mime_type': 'text/uri-list',
}
for k, v in metadata.items():
jobject.metadata[k] = v # the dict.update method is
missing =(
jobject.file_path = tmpfilepath
datastore.write(jobject)
show_object_in_journal(jobject.object_id)
jobject.destroy()
finally:
rmtree(tmpfilepath, ignore_errors=True) # clean up!
-josh
On Mar 9, 2008, at 3:27 PM, C. Scott Ananian wrote:
> On Sun, Mar 9, 2008 at 1:18 PM, Joshua Minor <j at lux.vu> wrote:
>> I made an activity wrapper for the interactive fiction interpreter
>> Frotz. I want to have a button in the toolbar called "Get More
>> Games"
>> that opens a web page where you can download z-machine files.
>>
>> It looks like Chat lets you copy links to the clipboard and you can
>> open them from there. I'll try that for now.
>
> You can also ask the journal to open a link for you. Look at how
> Pippy/Browse handle the 'show source' key.
>
> For security reasons, we don't let activities directly invoke other
> activities. Mediating the interaction with the journal ensures that
> the child's interaction is involved.
> --scott
>
> --
> ( http://cscott.net/ )
More information about the Devel
mailing list