Commit Graph

1158 Commits

Author SHA1 Message Date
James Cameron
2018c930ad Fix sugar-install-bundle
Traceback (most recent call last):
  File "/usr/bin/sugar-install-bundle", line 21, in <module>
    bundle = ActivityBundle(name)
  File "/usr/lib/python3.7/dist-packages/sugar3/bundle/activitybundle.py", line 118, in __init__
    info_file = self.get_file('activity/activity.info')
  File "/usr/lib/python3.7/dist-packages/sugar3/bundle/bundle.py", line 126, in get_file
    f = six.StringIO(data)
TypeError: initial_value must be str or None, not bytes

Fix by always reading bundle and metadata as Bytes, and converting to
String before passing to ConfigParser.

Did not fix ContentBundle, as it has been unused for some time, and was
only kept for use with OLPC XO and Python 2.
2019-12-27 14:10:28 +11:00
James Cameron
15caa5478d Demote speech module utterance logging 2019-09-11 14:58:09 +10:00
James Cameron
c911c6cb30 Port to Python 3 - preview metadata is bytes
Preview metadata in 0.114 and earlier was returned by datastore client
as a dbus.ByteArray.

Regression introduced by aa8a5e7 ("Port from Python 2 to six").

Traceback (most recent call last):
  File "/usr/lib/python3.7/dist-packages/jarabe/journal/expandedentry.py", line 378, in _create_preview
    pixbuf = get_preview_pixbuf(metadata.get('preview', ''))
  File "/usr/lib/python3.7/dist-packages/sugar3/graphics/objectchooser.py", line 85, in get_preview_pixbuf
    preview_data = base64.b64decode(preview_data)
  File "/usr/lib/python3.7/base64.py", line 87, in b64decode
    return binascii.a2b_base64(s)
binascii.Error: Invalid base64-encoded string: number of data characters (237) cannot be 1 more than a multiple of 4

Related to
https://github.com/sugarlabs/sugar-datastore/issues/16
2019-09-04 07:38:52 +10:00
James Cameron
90c2539135 Fix unnecessary whitespace in warning
Regression introduced by 3b28597 ("flake8 fixes").

Fixes https://github.com/sugarlabs/sugar-toolkit-gtk3/issues/424
2019-08-28 17:28:37 +10:00
James Cameron
381c9b1b61 Fix install TypeError
Activity install target used by downstream activity packaging did fail
with;

Traceback (most recent call last):
  File "setup.py", line 21, in <module>
    bundlebuilder.start()
  File "/usr/lib/python3.7/dist-packages/sugar3/activity/bundlebuilder.py", line 633, in start
    globals()['cmd_' + options.command](config, options)
  File "/usr/lib/python3.7/dist-packages/sugar3/activity/bundlebuilder.py", line 513, in cmd_install
    options.install_desktop_file)
  File "/usr/lib/python3.7/dist-packages/sugar3/activity/bundlebuilder.py", line 290, in install
    for f in self.get_files_in_git():
  File "/usr/lib/python3.7/dist-packages/sugar3/activity/bundlebuilder.py", line 209, in get_files_in_git
    stdout.strip('\n').split('\n')]
TypeError: a bytes-like object is required, not 'str'

Workaround was to hide .git directory.

Cause was subprocess pipe returning a bytes-like object in Python 3.

Regression introduced by incomplete ed46c21 ("Port to six").

Fixes https://github.com/sugarlabs/sugar-toolkit-gtk3/issues/426
2019-08-28 13:36:44 +10:00
James Cameron
7b85b807b2 Fix AppStream metadata warning
* wrong pydoc module reference,

* was too verbose.
2019-08-28 13:36:11 +10:00
James Cameron
6e517aa3c7 Clean activity logs successful completion
Status zero is normal, so don't report it.

Also don't print the log_file object.

Changes log messages such as this;

Exited with status 0, pid 3765 data (<_io.TextIOWrapper name=13 mode='w'
encoding='UTF-8'>, '5312a7726254b3b0b9a15267c54600aec9db187e')

To this;

Normal successful completion, pid 3765 activity_id 5312a7726254b3b0b9a15267c54600aec9db187e
2019-08-15 16:25:57 +10:00
James Cameron
ec753badbc Fix whitespace in AppStream metadata warning
Encountered on Hello World activity.
2019-08-14 16:48:06 +10:00
James Cameron
a62bb885fc Port to Python 3 - use rb for message catalog file
Reported and patch proposed by Bas Hulsken.

Fixes https://github.com/sugarlabs/sugar-toolkit-gtk3/issues/425

Signed-off-by: James Cameron <quozl@laptop.org>
2019-08-12 07:49:06 +10:00
Ibiam Chihurumnaya
fc81121f19 Dash in signal names
GLib accepts signal names with dash or underscore and
documents the signals with a dash.

Use of signal names in Sugar was mixed, change to using
dash only.

No functional change.
2019-07-30 10:05:11 +10:00
Ibiam Chihurumnaya
b74c3570d5 Fix NameError introduced by 23e664df05 2019-07-25 01:29:35 +05:30
James Cameron
23e664df05 sugar3.speech - expose player pipeline
Expose the GstSpeechPlayer pipeline so that the activities may add their
own handlers.

A quick way to get the rest of the gst-plugins-espeak signals available.
2019-07-24 17:03:48 +10:00
Ibiam Chihurumnaya
9a6c9ce69c sugar3.speech - expose mark messages
Mark messages can be used for text highlight.

Signed-off-by: James Cameron <quozl@laptop.org>
2019-07-24 17:03:48 +10:00
Aniket21mathur
5043d53e7b Typecast into "int" 2019-07-17 17:32:05 +10:00
Aniket21mathur
e4725ad196 Fix utf encoding error via six 2019-07-16 09:59:02 +10:00
Aniket21mathur
490a602367 Fix "target" attribute calls via six 2019-07-16 09:59:02 +10:00
Aniket21mathur
ed46c219a9 Port to six 2019-07-16 09:59:02 +10:00
Aniket21mathur
3b28597486 flake8 fixes 2019-07-09 14:54:57 +10:00
James Cameron
f5c86da271 flake8 fixes (several remain to be fixed) 2019-07-06 14:48:05 +10:00
Aniket Mathur
88ea8e1f4f Port to TelepathyGLib
Co-authored-by: tonadev <tonadevv@gmail.com> [initial port]
Co-authored-by: Aniket21mathur <aniketmathur320@gmail.com> [further work]
Co-authored-by: James Cameron <quozl@laptop.org> [minimising changes]
2019-07-06 14:11:18 +10:00
James Cameron
12a899f374 Defer Gtk.Window.iconify
Defer iconify call to after the activity has been shown.  Remember the
iconify call was requested, and make the call just prior to entering the
main loop.

On Ubuntu 18.04 with Metacity 3.32.0 the Journal does appear over the
Home View on Sugar start on a VM with two virtual CPUs, yet the previous
fix in Metacity (074af8f) is present.  This is suggestive of a race
condition.

Tests with a minimal GTK reproducer shows order of three specific calls
is critical to success of iconify.  The ordering and results are;

* iconify, maximize, show; not iconified,

* maximize, iconify, show; not iconified,

* iconify, show, maximize; not iconified,

* maximize, show, iconify; app with focus will flicker, iconified,

* show, maximize, iconify; app with focus may flicker, iconified,

* show, iconify, maximize; app with focus may flicker, iconified,

Sugar Toolkit combined with Journal uses the "maximize, iconify, show"
ordering.  Using a Hello World activity with a call to iconify, the new
activity is not iconified.

When changed to "mazimise, show, iconify" ordering, there is no flicker
of the app in focus, and the new activity is iconified.
2019-06-05 12:33:31 +05:30
James Cameron
481e0bac80 Fix collaboration call_async
Port to Python 3 via Six aa8a5e7 did introduce a regression during
activity collaboration on both sharing and joining.

Fixes https://github.com/sugarlabs/sugar-toolkit-gtk3/issues/406
2019-04-03 16:23:20 +11:00
James Cameron
2453d13b03 Clean up activity environment variables
Ensure environment variables needed by Python activities are available
in each of the three supported scenarios;

- started from Sugar,

- started from Terminal inside Sugar,

- started by other desktop environments.

Variables always available are;

SUGAR_ACTIVITY_ROOT
SUGAR_BUNDLE_ID
SUGAR_BUNDLE_NAME
SUGAR_BUNDLE_PATH
SUGAR_BUNDLE_VERSION

Variables also available when started from Sugar are;

SUGAR_ACTIVITIES_HIDDEN
SUGAR_APISOCKET_KEY
SUGAR_APISOCKET_PORT
SUGAR_GROUP_LABELS
SUGAR_HOME
SUGAR_MIME_DEFAULTS
SUGAR_PROFILE
SUGAR_SCALING
SUGAR_VERSION

Variables also available when started from Terminal are;

SUGAR_TERMINAL_VERSION

Other changes;

- use os.makedirs in place of distutils.dir_util.mkpath,

- avoid redundant setting of SUGAR_BUNDLE_PATH,

- do not set SUGAR_BUNDLE_ID unnecessarily,

- add explanatory comment,

Tested on Ubuntu 18.04.

Signed-off-by: James Cameron <quozl@laptop.org>
2019-03-28 15:29:02 +11:00
Pro-Panda
aa8a5e70c4 Port from Python 2 to six
Signed-off-by: James Cameron <quozl@laptop.org>
2019-03-13 14:23:06 +11:00
James Cameron
6345da8e07 docs - move get_activity_root description
When it was moved from the class to the module, the full description did
not move with it.
2019-01-31 08:07:03 +11:00
Frederick Grose
f228909710 get_profile() - Use tuple instead of list.
Fixes fix 39b7e606 handle new OpenSSH DSA key format.
2019-01-02 07:07:26 +11:00
James Cameron
39b7e606df get_profile() - handle new OpenSSH DSA key format
OpenSSH changed the format of the DSA key, and this broke Sugar
connection to Jabber.

Fixes https://github.com/sugarlabs/sugar/issues/814

Fixes http://bugs.sugarlabs.org/ticket/4992
2019-01-01 16:04:54 +11:00
James Cameron
87fcfb62e4 Fedora 18 backport - GLib does not have unix_signal_add 2018-12-26 12:26:12 +11:00
James Cameron
85fc4680e9 Fedora 18 backport - GObject.ParamFlags does not have READWRITE 2018-12-26 12:26:06 +11:00
Vipul Gupta (@vipulgupta2048)
c7a7dcea7d Add to tags
Add new parameters category, categories, website
Update example of browse activity
Add more description of already defined parameters from https://wiki.sugarlabs.org/go/Development_Team/Almanac/Activity_Bundles#.info_file_format

Signed-off-by: Vipul Gupta (@vipulgupta2048) <vipulgupta2048@gmail.com>
2018-10-24 16:49:33 +11:00
James Cameron
13fc98e193 Review: Port from GObject to GLib
Fix a typo in 13a2282.
2018-07-31 17:58:37 +10:00
James Cameron
84a7286986 Review: Port from GObject to GLib
Fix new flake8 issues introduced by cb0d6e2.
2018-07-26 13:11:27 +10:00
Rahul Bothra
13a2282e5e Port from GObject to GLib 2018-07-26 13:11:27 +10:00
James Cameron
6730d129cd Handle SIGINT from Ctrl+C in shell
Used when testing from the shell prompt using sugar-activity{,3}.
When Ctrl+C is pressed, close the activity.

May be used by other processes to request a clean activity stop, but
with save-as enabled may require user input.
2018-07-04 08:51:40 +05:30
Pro-Panda
06a28fae0e use created to send signal on receiving Created signal
Tested-by: Rahul Bothra <f2016015@pilani.bits-pilani.ac.in> # Ubuntu 16.04
2018-06-29 14:33:14 +10:00
James Cameron
e32aea6a4f sugar3/bundle - activity metadata standard rewording
Move definition of bundle identifier from Wiki.
2018-06-28 12:28:59 +10:00
Vipul Gupta (@vipulgupta2048)
47563e678f sugar3/bundle - activity metadata standard
* encourage "url" for either home page or user documentation,

* give examples for categorisation tags, define format,

* make "website" an alias for "url",

* make "category" and "categories" aliases for "tags".

* add the aliases to deprecated list; valid for use, but not encouraged.

Deprecates https://wiki.sugarlabs.org/go/Development_Team/Almanac/Activity_Bundles#.info_file_format

Signed-off-by: Vipul Gupta (@vipulgupta2048) <vipulgupta2048@gmail.com>
Signed-off-by: James Cameron <quozl@laptop.org>
Reviewed-by: Rahul Bothra <f2016015@pilani.bits-pilani.ac.in>
Reviewed-by: Yash Agrawal <yagrawal900@gmail.com>
2018-06-04 07:43:21 +10:00
James Cameron
58224cb15d Fix traceback when an icon name matches a GNOME theme icon
When an icon file name matches a GNOME theme icon;

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/sugar3/graphics/icon.py", line 214, in _get_attach_points
    cp.readfp(config_file)
  File "/usr/lib/python2.7/ConfigParser.py", line 324, in readfp
    self._read(fp, filename)
  File "/usr/lib/python2.7/ConfigParser.py", line 512, in _read
    raise MissingSectionHeaderError(fpname, lineno, line)
MissingSectionHeaderError: File contains no section headers.

Caused by reading a .png file as if it were config file, in turn
because the icon was expected by the toolkit to be .svg file type.

Regression introduced by f796638.

Fixes https://github.com/sugarlabs/activity-abacus/issues/16
2018-05-24 08:46:58 +05:30
Pro-Panda
5407ae4cdb Remove unused imports 2018-05-21 17:20:29 +10:00
Pro-Panda
8f047b5819 Remove redundant code in get_activity_root
- same condition is being checked in the module function get_activity_root
2018-04-02 08:41:59 +10:00
James Cameron
30139a3a9e sugar3.speech - remove GConf compatibility support 2018-03-26 14:35:28 +11:00
Pro-Panda
a07bef8be5 Change signal name on enter keypress in title entry
- 'enter-key-press' is more intuitive for the reader than 'entered'
2018-03-05 19:51:43 +11:00
Pro-Panda
1bc171d5d6 enter key after editing title will closes the activity toolbar(if present)
- No change for activities having titleEntry without the toolbar (Eg: chat)

Tested on:
Ubuntu 16.04, Sugar 0.112, GTK 3.18.9
2018-03-05 19:51:43 +11:00
James Cameron
cc2357c787 Add warnings for missing activity metadata
- report a warning if either activity_version, icon, or license are
  missing,

- fix typo in missing bundle_id exception message.

Fixes #378

Co-authored-by: Rahul Bothra <f2016015@pilani.bits-pilani.ac.in>
2018-02-15 14:52:55 +11:00
James Cameron
7e216a04d5 Adjust metadata reference 2018-02-13 12:55:30 +11:00
Pro-Panda
af31aa8059 Fix: TimeoutAlert response on Timeout
Explanation:
There was inconsistency between docs and the code.
 - Docs said it returns -1 on timeout
 - Code returned Gtk.Response.OK on timeout

Effect of this commit:
 - Code returns -1 on timeout
2018-02-09 08:53:08 +11:00
James Cameron
5876bc4a00 TitleEntry - clear selection
When editing stops, clear the selection.
2018-01-15 17:03:49 +11:00
James Cameron
1cf9ba8190 TitleEntry - rename callbacks, use arguments 2018-01-15 17:03:49 +11:00
Pro-Panda
f3dd2c2042 TitleEntry - save title on activate (Enter)
Learners have to use tab to finish editing, followed by clicking the
activity icon to dismiss the dialog.  A slow work flow and inconsistent
with journal list view.  The enter key is ignored.

Add an activate signal handler to save the title.  Force the focus to
move by calling hide and show.

Signed-off-by: James Cameron <quozl@laptop.org>
2018-01-15 17:03:49 +11:00
James Cameron
aaea86066d Icon - increase LRU cache sizes
Some activities suffer from performance penalties once the number of
icons backed by SVGs exceeds 50.

Double the cache sizes.

Tested on OLPC XO-1, the weakest known system on which Sugar is used.
2018-01-06 15:01:00 +11:00