<p dir="ltr">Hi Tony,</p>
<p dir="ltr">I think you have misunderstood the capabilities of the api.</p>
<p dir="ltr">The api does not support launching with uris (which is something to look into for 108) or "activity ids".</p>
<p dir="ltr">The api supports bundle ids (open a new terminal activity) and object ids (open this memorize set).  This allows for many of the use cases you described although being very simple.</p>
<p dir="ltr">Directly using sugar-launch from activity processes is suboptimal, as activities should not launch child processes (Rainbow security model).  This was discussed when the feature was being implemented.</p>
<p dir="ltr">I do not see why a feature that has some use cases and does not destabilise the rest of the system should be dropped so late in the cycle.</p>
<p dir="ltr">Thanks,<br>
Sam<br>
</p>
<br><div class="gmail_quote"><div dir="ltr">On Fri, 3 Jul 2015 3:15 pm Tony Anderson <<a href="mailto:tony_anderson@usa.net">tony_anderson@usa.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    As I understand it, the release of 0.106 is to be made on Monday.
    This does not seem to warrant a delay in that release. Moving a
    capability from sugar or sugar3 to the toolkit doesn't imply a
    visible change to the api as seen by an activity developer.<br>
    <br>
    I don't understand the assumption that downloading a file in Browse
    to the Journal implies that the user wants to access it immediately.
    For example, if I download 'War and Peace', I may want to read it
    when I get the laptop home, not in class. For use with the
    schoolserver, it was necessary to patch Browse to download a pdf to
    the Journal and not load it into a new window. I need to do this
    also for txt books from Rachel. Fortunately, Browse downlaods epub
    directly to the Journal (the format of the Gutenberg books in
    Internet in a Box). <br>
    <br>
    Browse itself is a problem in this scenario. It (along with the
    Terminal activity) is an exception by providing tabs. It would be
    useful if the launch facility would open a new tab and not launch a
    new instance of Browse when it is already running. <br>
    <br>
    Launching activities based on mime_type is already a problem. How is
    one activity to know whether Browse or Etoys or ImageViewer or
    Paint  wiil respond to a <br>
    launch request for an image.<br>
    <br>
     How is one activity going to determine the activity id (The
    activity id (e.g., <tt>6f7f3acacca87886332f50bdd522d805f0abbf1f</tt>)
    of type <tt>STRING</tt> as passed on the <a href="http://wiki.sugarlabs.org/go/Development_Team/Low-level_Activity_API#Command_Line_Arguments" target="_blank">command
      line</a>) of another activity?<br>
    <br>
    Originally, sugar-launch was to pass through options -u (uri) and -o
    (object_id). The version I use does this, so the following code in
    an activity displays an svg:<br>
    <br>
    sugar-launch -u '<a>file:///home/olpc/Documents/my.svg</a>'
    org.laptop.WebActivity<br>
    <br>
    Similarly, an activity can use the datastore class to get an
    object_id and use the -o option to, in effect, resume an activity
    from the Journal.<br>
    <br>
    The only 'trick' is to run sugar-launch from the activity. However,
    this works:<br>
    <br>
    from subprocess import call<br>
    <br>
    call('sugar-launch -u '<a>file:///home/olpc/Documents/my.svg</a>'
    org.laptop.WebActivity', shell=True)<br>
    <br>
    In the context of the GSOC project, it is important that the Web
    Confusion activity be able to pass a specific html file to Browse
    for use with the interactive javascript shell. This capability is
    satisfied by sugar-launch  with the -u option. However, sugar-launch
    uses optparse which is deprecated in Python 2.7 so the version I am
    using now has been modified it to use argparse.<br>
    <br>
    Using datastore, an activity can launch, for example, Memorize with
    a specific 'game'. So, for example, a teacher is introducing Roman
    numerals. The 'lesson' activity could resume Memorize from the
    Journal with a game on Roman numerals (previously downloaded from
    the school server).<br>
    <br>
    It would seem appropriate to keep the release schedule and do some
    rethinking in the use cases for this feature. Sugar-launch launches
    the activity by the command line and so uses Sugar to perform the
    launch. It would be easy to provide this mechanism to an activity
    avoiding the 'subprocess' call (although that is hardly a difficult
    interface). This new feature should at least provide the
    functionality of sugar-launch.</div><div bgcolor="#FFFFFF" text="#000000"><br>
    <br>
    Tony</div><div bgcolor="#FFFFFF" text="#000000"><br>
    <br>
    <br>
    <br>
    <div>On 07/02/2015 09:33 PM, Gonzalo Odiard
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">I found a problem in the implementation of
        "Start_activity_from_another_activity" feature [1]
        <div>Usually, when the programmer want start one activity from
          another,</div>
        <div>need display in the user interface information about the
          activity, </div>
        <div>like the name or the icon.</div>
        <div>One example of the use is in Browse activity [2]</div>
        <div><br>
        </div>
        <div>The problem with this is that we are using
           jarabe.journal.bundlelauncher.get_bundle()</div>
        <div>and that is part of sugar, not the sugar-toolkit.</div>
        <div>We should not use that code in the activities, because is
          internal to Sugar,</div>
        <div>and we don't have any warranty of stability.</div>
        <div> </div>
        <div>I know is very late in the release cycle, but I think is a
          error ship a release </div>
        <div>with a broken API. After that, activity developers need
          keep compatibility</div>
        <div>with the api provided in the broken release for ever.</div>
        <div>While the developer can add another try catch, is a source
          of errors,</div>
        <div>and usually difficult to understand for the developer,
          because the activity</div>
        <div>will work in different ways given the sugar release. </div>
        <div>This feature was introduced in this cycle, would be good if
          is provided in a fine state.</div>
        <div><br>
        </div>
        <div>I prepared prs for sugar [3] and the toolkit [4]</div>
        <div><br>
        </div>
        <div>The change needed in the Browse activity to do the test is
          only:</div>
        <div><br>
        </div>
        <div>
          <div>
            <div>--- a/downloadmanager.py</div>
            <div>+++ b/downloadmanager.py</div>
            <div>@@ -37,8 +37,7 @@ from sugar3.graphics.icon import Icon</div>
            <div> from sugar3.activity import activity</div>
            <div> </div>
            <div> try:</div>
            <div>-    from jarabe.journal.bundlelauncher import
              get_bundle</div>
            <div>-    from sugar3.activity.activity import launch_bundle</div>
            <div>+    from sugar3.activity.activity import
              launch_bundle, get_bundle</div>
            <div>     _HAS_BUNDLE_LAUNCHER = True</div>
            <div> except ImportError:</div>
            <div>     _HAS_BUNDLE_LAUNCHER = False</div>
          </div>
          <div><br>
          </div>
          <div>Take this as a formal request to break the freeze to
            solve this issue. </div>
          <div><br>
          </div>
          <div>[1] <a href="http://wiki.sugarlabs.org/go/Features/Start_activity_from_another_activity" target="_blank">http://wiki.sugarlabs.org/go/Features/Start_activity_from_another_activity</a><br>
          </div>
          <div>[2] <a href="https://github.com/sugarlabs/browse-activity/commit/7315fe7d9d951965a7ccd6341d9bc684517cbad8" target="_blank">https://github.com/sugarlabs/browse-activity/commit/7315fe7d9d951965a7ccd6341d9bc684517cbad8</a></div>
          <div>[3] <a href="https://github.com/sugarlabs/sugar/pull/548" target="_blank">https://github.com/sugarlabs/sugar/pull/548</a></div>
          <div>[4] <a href="https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/236" target="_blank">https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/236</a></div>
          <div><br>
          </div>
          -- <br>
          <div>
            <div dir="ltr">
              <div>
                <div dir="ltr">Gonzalo Odiard<br>
                  <br>
                  <div>SugarLabs - Software [for | by] children
                    learning <br>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
Sugar-devel mailing list
<a href="mailto:Sugar-devel@lists.sugarlabs.org" target="_blank">Sugar-devel@lists.sugarlabs.org</a>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a>
</pre>
    </blockquote>
    <br>
  </div>

_______________________________________________<br>
Sugar-devel mailing list<br>
<a href="mailto:Sugar-devel@lists.sugarlabs.org" target="_blank">Sugar-devel@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" rel="noreferrer" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
</blockquote></div>