Commit Graph

784 Commits

Author SHA1 Message Date
Manuel Quiñones
1beb8757c1 ToolButton: add 'icon_name' as a GObject property SL #3658
Sugar ToolButton inherits from Gtk.ToolButton but is not overwriting
'icon_name' property.  So 'icon_name' can be passed to the constructor
of Sugar ToolButton but the result is different than setting it via
ToolButton.props.icon_name.

Signed-off-by: Manuel Quiñones <manuq@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2012-06-01 11:12:52 -03:00
Simon Schampijer
ab643a1076 Display spinner cursor when saving after closing the activity, OLPC #11691
Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Daniel Drake <dsd@laptop.org>
Tested-by: Manuel Quiñones <manuq@laptop.org>
2012-05-30 11:56:34 +02:00
Daniel Drake
fd7b599710 Object Chooser: update for GDK3 get_xid()
In GDK3 the 'xid' attribute is gone and is replaced with
gdk_x11_window_get_xid(), or the get_xid() method in Python.

Needed to be able to open the object chooser from Browse without hassle.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2012-05-22 13:00:24 +02:00
Carlos Garnacho
f36fc4ae85 Tray: set a minimum size in the viewport so that it allows scrolling
The minimum height/width requested by the GtkViewport still tries to cater
for all contained children, which makes the [VH]Tray widgets to grow as
new items are added. Instead, request a minimum width/height of 0 to avoid
the Tray from growing, and having scrolling kick in instead.

Also, fixed what seemed to be a typo in do_get_preferred_height(), where
the viewport width was requested instead.

http://bugs.sugarlabs.org/ticket/3522

Signed-off-by: Carlos Garnacho <carlos@lanedo.com>
Acked-by: Simon Schampijer <simon@laptop.org>
2012-05-04 16:26:48 +02:00
Simon Schampijer
7a07bb1001 Draw accelerator in Palette SL #3459
The accelerator in the primary information in the Palette
has not been drawn because there was not enough space
reserved for it. The preferred size we get back for the
Palette window does not include the accelerator of the
Gtk.AccelLabel. We need to include that in our calculation for
the Palette size.

In order to make that information available which is part
of the Palette class we need to pass the instance to the
PaletteWindowWidget instance.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-04-19 18:37:15 +02:00
Simon Schampijer
16040b2f30 Draw border for palette all the time SL #3383
gtk_render_frame_gap [1] does expect an initial and an end
coordinate for the gap. paint_box_gap [2] which we used
before expected a starting position of the gap and the width
of the gap as parameter.

The patch does calculate the end coordinate parameter for
the gap from the initial coordinate and the width of the
gap.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>

[1] http://developer.gnome.org/gtk3/3.0/GtkStyleContext.html#gtk-render-frame-gap
[2] http://developer.gnome.org/gtk/2.24/GtkStyle.html#gtk-paint-box-gap
2012-04-19 17:15:01 +02:00
Simon Schampijer
3c39375d9b Use json as included in Python SL #3142
We use json as included in Python. This will make Sugar dependent on
Python 2.6 and Python 2.7 to have the highest JSON performance.

Signed-off-by: Simon Schampijer <simon@laptop.org>
2012-03-22 18:46:48 +01:00
Simon Schampijer
425e9becfc Remove the workaround for missing gobject-introspection bindings of Rsvg
gobject introspection bindings for librsvg have been pushed to librsvg
master [1] in 2.35.0, which solved [2]. We only have slight adopts to
make in our usage, for example we can not pass the data property
to the default constructor anymore and get_width and get_height is not
available anymore for the handle, but we can use the properties
instead.

The sugar-toolkit-gtk3 and therefore Activities that have been ported
to it do need a version of librsvg >= 2.35.0 to be able to work,
which ships for example with Fedora 17.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>

[1] http://git.gnome.org/browse/librsvg/
[2] https://bugzilla.gnome.org/show_bug.cgi?id=663049
[3] http://developer.gnome.org/rsvg/stable/RsvgHandle.html
2012-03-22 16:49:14 +01:00
Simon Schampijer
01a06943a2 Mimic the behaviour and style of the Sugar GTK+ 2 toolbutton palettes in GTK+ 3
First we needed to port the Palette code to use a minimum size. The default size
is two times the GRID_CELL_SIZE. Since the request-phase of the traditional GTK+
geometry management has been replaced by a height-for-width system [1] we have
to compensate for that. Furthermore we need to pass the invoker from the
PaletteWindow to the _PaletteWindowWidget for the gap calculation code for
drawing the border around the Palette.

We do the drawing of the border for the toolbutton in the base class, moved
this from the ToolbarButton and made sure we are drawing in the right order.
In the ToolButton we draw as well a black background for the ToolButton when
the Palette is up. While the mouse is over the button we can do that in the
theme, but not when the mouse moves over the Palette.

[1] http://developer.gnome.org/gtk3/3.0/ch25s02.html#id1525688

Signed-off-by: Simon Schampijer <simon@laptop.org>
2012-03-15 18:25:08 +01:00
Gonzalo Odiard
e04043dc0b Mimic the behaviour and style of the sugar GTK+ 2 sub-toolbars in GTK+ 3
This draws the grey line around the toolbutton icon with a gap at the
bottom and a grey line at the top of the subtoolbar. Furthermore it
gets the highlightning of the button correct, in the pressed and hover
state. This patch depends on the sugar-artwork patch with the id
7464b808eb12b1df650952e3c8214acff1d1360f.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Signed-off-by: Manuel Quiñones <manuq@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2012-03-15 17:46:02 +01:00
Simon Schampijer
afcb2fcea9 Port get_preview method to cairo
Previously we were using a GdkPixmap [1] created with the get_snapshot [2]
method of the Gtk.Widget. GTK 3 encourages to use cairo surfaces
now instead.

The ported mothod does create a cairo surface similar to that of the canvas'
window and draws on that. Then we create a cairo image surface with
the desired preview size and scale the canvas surface on that.

Several people have been involved in this work: Gonzalo Odiard,
Manuel Quiñones and Benjamin Berg.

[1] http://developer.gnome.org/gdk/stable/gdk-Bitmaps-and-Pixmaps.html#GdkPixmap
[2] http://developer.gnome.org/gtk/stable/GtkWidget.html#gtk-widget-get-snapshot
2012-03-14 17:37:23 +01:00
Simon Schampijer
ef2c624b5a s/Descriptions/Description fixup of d9e1a72fcd
Spotted by Chris Leonard: we use Description in all the other
places.
2012-02-09 19:05:57 +01:00
Simon Schampijer
afbf0ff326 Window: fixup of wrong conversion introduced by pygi-convert.sh
With 820efa56b9
gtk.gdk.x11_get_server_time(window) wasn't correctly converted
to GdkX11.x11_get_server_time(window). Found when tesing
collaboration. Opened 669264 for the upstream fix of
pygi-convert.sh.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-02-02 20:27:30 +01:00
Simon Schampijer
bb02ef0ead Remove the Naming Alert
With the new 'Write to Journal anytime' feature it is possible
to write a description within an activity. Hopefully this leads
to more usage of the Journal for reflection by the learner. The
hinting nature ('you have not named your session yet') of the
Naming Alert has not been replaced, though.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Reviewed-by: Manuel Quiñones <manuq@laptop.org>
2012-02-02 18:30:03 +01:00
Simon Schampijer
d9e1a72fcd Add DescriptionEntry to the activity sub-toolbar
This is the implementation of the 'Write to Journal anytime'
feature [1].

The patch itself adds a DescriptionItem to the activity
sub-toolbar to make editing a Journal entry description
from within the activity possible. The code has the same
error handling as the TitleEntry.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Signed-off-by: Walter Bender <walter.bender@gmail.com>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Reviewed-by: Manuel Quiñones <manuq@laptop.org>

[1] http://wiki.sugarlabs.org/go/Features/Write_to_journal_anytime
2012-02-02 18:22:17 +01:00
Simon Schampijer
b5de7ef332 Remove support for the old deprecated toolbar
- removed deprecated imports from the activity module, use the
  widgets module instead
- removed the ActivityToolbox class
- removed the Stop button from the ActivityToolbar
- removed set_toolbar/get_toolbar API from the window module

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-01-24 12:36:37 +01:00
Simon Schampijer
ec7b363a70 Datastore: remove deprecated API
This API is not in use anywhere in the shell and has
been deprecated for quite some time.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-01-24 12:36:09 +01:00
Simon Schampijer
417006e463 ObjectChooser: remove deprecated parameters
The objectchooser had the 'title', 'flags' and 'buttons' parameters
deprecated for a long time, remove them now completely. The
only parameters allowed are now the 'parent' and the 'what_filter'.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-01-24 12:34:54 +01:00
Simon Schampijer
aae6082b14 Bundlebuilder: remove deprecated bundle_name argument
Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-01-24 12:33:03 +01:00
Simon Schampijer
70cee44717 Activity: remove deprecated _shared_activity member
Use the get_shared_activity method instead

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-01-24 12:31:52 +01:00
Simon Schampijer
ae85dd62d4 ActivityBundle: clean from deprecated code
- removed deprecated mime type 'application/vnd.olpc-x-sugar'
- activity.info file: removed deprecated field 'service_name' use 'bundle_id' instead
- activity.info file: removed deprecated field 'class' use 'exec' instead

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-01-24 12:24:12 +01:00
Simon Schampijer
a8342ecf8c Finally remove the keep button completely
see 0082e10f8e for
the complete reasoning.

e022aa8e4a already made the button
invisible, keeping it only for backwards compatibility.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-By: Sascha Silbe <silbe@activitycentral.com>
Acked-by: Daniel Drake <dsd@laptop.org>
2012-01-24 12:20:52 +01:00
Gonzalo Odiard
24af358275 Set the sugar theme name in gsettings according the scale
We need set the theme in gsettings according the scale in
the SUGAR_SCLING environment variable.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-12-20 19:19:26 +01:00
Daniel Drake
48ad255a78 Reimplement Palettes for GTK3
Moving from GTK2 to GTK3 has presented various challenges regarding
palettes.

In GTK2, we were able to access some internal API of the GtkMenu class
and use it to embed a GtkMenu in a regular window. As of GTK3, that API
has become private and we can no longer access it.

We still want to use GtkMenu for the advanced functionality it provides
(multiple-level menus, keyboard navigation, etc), but we are now limited
to popping it up with its own (internal) window, rather than being able
to pack it into one of our own.

Our palettes can historically be used either as a menu, or as a general
area where widgets can be added, or both. The new restrictions upon
GtkMenu force some changes here, but we work hard to stick to the old
API as far as possible.

A Palette instance now acts as a controller of either a "window widget"
(where any type of widget can be displayed as usual) or a "menu widget"
which just pops up a GtkMenu. A Palette defaults to the window mode, but
dynamically switches to menu mode if/when the user attempts to access
the menu element.

As a result of this, palettes can now pack either a user-defined collection
of widgets, or a menu, but types can no longer be mixed. This should
only affect a handful of palettes which will need to pick a single
approach and convert to it.

Some further challenges are presented by the fact that GtkMenu performs a
grab on the whole screen, meaning that all input events are delivered to
the GtkMenu widget. Through some careful event filtering and examination
of the mouse cursor position we are still able to determine when the mouse
has entered or left the invoker or menu areas.

This work is authored by Benjamin Berg, Marco Pesenti Gritti, Simon
Schampijer and Daniel Drake.
2011-12-20 19:19:16 +01:00
Daniel Drake
8126575461 SugarExt: make SugarGrid introspectable
This will be used by a future GTK3 port of the shell.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-12-20 19:00:22 +01:00
Daniel Drake
15946211cf Trivial GTK3 porting fixes
Fix some trivial issues missed earlier: various missing imports,
some minor API changes to adapt to, do_size_request simple porting,
etc.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-12-20 19:00:17 +01:00
Daniel Drake
827ab7218a Add EventIcon/CursorInvoker similar to CanvasIcon/CanvasInvoker
CanvasIcon and CanvasInvoker were removed in a previous GTK3-porting commit
as they were based on hippocanvas.

However, this leaves the toolkit with some missing functionality:
there is no longer a trivial way to show an icon which can receive mouse
events and pop up a palette. Such functionality is used in various
places throughout the shell and activities.

Reimplement this functionality as EventIcon and CursorInvoker.
Instead of reimplementing much of the Icon class (like CanvasIcon did),
EventIcon opts for a more simplistic encapsulation of an Icon object.
This means trivial API changes for CanvasIcon users who must now
use the 'icon' property with the Icon API.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-12-20 18:35:25 +01:00
Daniel Drake
5ad2fc7d6b SugarExt: drop pygobject2 initialisation
Now that we avoid linking with pygtk2/pygobject2, we need to remove
this initialisation call so that the module can be loaded at runtime.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-12-20 18:31:28 +01:00
Daniel Drake
3962517a58 activity.py: Apply sugar GTK3 theme and icon theme
In GTK2, theme name and icon theme name properties could be set in the
GTK2 RC file, at runtime, or by the X settings daemon.

For GTK3, the RC file configuration route for these settings has been
removed. As we do not currently have a settings daemon implementation,
apply these important settings at runtime, early in the Activity
class.

Signed-off-by: Daniel Drake <dsd@laptop.org>
2011-12-13 17:38:52 -03:00
Daniel Drake
64cceeada9 SugarExt: fix compile without pygtk
We no longer compile this against pygtk, so remove the include.
Add the now-required Python.h include in its place.
2011-12-13 17:35:33 -03:00
Daniel Drake
4e137f6e4f sugar-activity: import and make independent of sugar-toolkit GTK versions
As we move to adding support for a second UI toolkit (GTK+ 3.x),
the sugar-activity binary used by all activities must become
backend-toolkit-independent. It would be wasteful to have two backend
toolkits loaded in memory, and in the GTK2/GTK3 case, it is impossible
(importing both results in an instant crash).

To achieve this, we split the existing sugar-toolkit activity/main.py:main()
functionality into two parts, moving it into the sugar-activity binary and
the Activity class as follows:
 1. All toolkit-specific stuff is moved into the Activity class (i.e.
   everything that interacts with GTK)
 2. Everything that can be reasonably/easily moved into the Activity class
   is also moved.
 3. What remains is the stuff that is inherently involved with the
   construction of the Activity object, not related to UI toolkits. This
   is moved into the sugar-activity binary.

main.py is then removed from sugar-toolkit, and sugar-activity is moved
from sugar to sugar-toolkit-gtk3 in order to keep toolkit-related code
with the toolkit itself.

With this work done, the one remaining question is how to invoke the main
loop. An optional run_main_loop() method is added to the activity class,
for GTK2 this will run the GTK2 main loop, for GTK3 the GTK3 main loop will
be run, etc.

Signed-off-by: Daniel Drake <dsd@laptop.org>
2011-12-13 17:35:30 -03:00
Raul Gutierrez Segales
2bfb38ef82 Port key handling code to GTK3
GTK3 removed some previously-deprecated API that we still use. This
includes GDK_DISPLAY(), gdk_x11_drawable_get_xdisplay(), and some
key constants.

Port our code to the new API.

[split patch into several parts, added minimal description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Daniel Drake
e2c07af748 Import sugar-base into sugar-toolkit
Probably needs cleaning up a bit. And we use pygtk-codegen, ugh...

This is the commit id when we imported sugar-base:
b9406e5c9c9df5404c5b0d995178b5edb4d93628

Signed-off-by: Daniel Drake <dsd@laptop.org>
[squashed two patches into one]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Raul Gutierrez Segales
82fcf0a0f0 Use rsvg wrapper while rsvg gains introspection support
Signed-off-by: Raul Gutierrez Segales <rgs@collabora.co.uk>
2011-12-13 17:19:53 -03:00
Raul Gutierrez Segales
3372317922 Add wrapper for rsvg
Signed-off-by: Raul Gutierrez Segales <rgs@collabora.co.uk>
[split patch into several parts]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Raul Gutierrez Segales
1005c67ad2 Add GdkWrapper to access non-introspectable Gdk API
See https://bugzilla.gnome.org/show_bug.cgi?id=663261

Signed-off-by: Raul Gutierrez Segales <rgs@collabora.co.uk>
2011-12-13 17:19:53 -03:00
Simon Schampijer
09b3740768 _TimeoutIcon: use markup instead of Pango for bold text
In Pango 'Pango.attr_weight_new' is not yet introspectable [1].

[1] https://bugzilla.gnome.org/show_bug.cgi?id=646788

Signed-off-by: Simon Schampijer <simon@schampijer.de>
[changed description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Simon Schampijer
1b9af6f6d5 Replace "expose-event" signal by a new "draw" signal
GtkWidget "expose-event" signal has been replaced by
a new "draw" signal [1]. The context is already
clipped [2], so do not base it on the values returned by
get_allocation like before.

[1] http://developer.gnome.org/gtk3/3.0/ch25s02.html#id1467092
[2] http://developer.gnome.org/gtk3/3.0/GtkWidget.html#GtkWidget-draw

Signed-off-by: Simon Schampijer <simon@schampijer.de>
[squashed with a patch by Benjamin Berg <benjamin@sipsolutions.net>;
 removed useless additions]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Daniel Drake
157124af5b Tray: replace deprecated get_child_requisition() invocation
Widget.get_child_requisition() has been replaced by
Widget.get_preferred_size() in GTK 3 [1].

[1] http://developer.gnome.org/gtk3/3.0/GtkWidget.html#gtk-widget-get-child-requisition

Signed-off-by: Daniel Drake <dsd@laptop.org>
[changed description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Raul Gutierrez Segales
7464997663 Replace deprecated gdk_set_sm_client_id() invocation
gdk_set_sm_client_id() has been replaced by
gdk_x11_set_sm_client_id() [1] since GDK 2.24.

[1] http://developer.gnome.org/gdk/stable/gdk-General.html#gdk-set-sm-client-id

Signed-off-by: Raul Gutierrez Segales <rgs@collabora.co.uk>
[changed description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Simon Schampijer
20319cb3c4 Use GObject constructor for Gtk.Alignment
With PyGTK, all parameters of the Alignment constructor had defaults [1].
With GTK3+pygi, when using the explicit constructor (Alignment.new() resp.
gtk_alignment_new() [2]), all values would need to be passed. However when
using the GObject constructor, named properties can be passed in instead and
we only need to pass those that different from the default.

[1] http://developer.gnome.org/pygtk/stable/class-gtkalignment.html#constructor-gtkalignment
[2] http://developer.gnome.org/gtk/stable/GtkAlignment.html#gtk-alignment-new

Signed-off-by: Simon Schampijer <simon@schampijer.de>
[assembled from several patches; replaced description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Sascha Silbe
c82a775267 Use accessor functions for data fields
The following data fields that were provided by PyGTK are not accessible
directly in GTK3+pygi and need to be replaced by accessor calls:

Adjustment.lower
Adjustment.page_size
Adjustment.upper
Adjustment.value
Bin.child
Widget.parent
Widget.style
Widget.window

Based on patches by Daniel Drake <dsd@laptop.org>.

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:53 -03:00
Daniel Drake
4aacaaf56e icon: fix set_source_pixbuf() invocations
The previous set_source_pixbuf() invocation (on a Cairo context) involves
Gdk data types, so in the new introspection world we need to call a Gdk
function rather than operating on the Cairo object (even if Cairo had already
been converted to introspection).

Signed-off-by: Daniel Drake <dsd@laptop.org>
[added description; split out from another patch]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Benjamin Berg
e05f84bc4f Icon: port to new Height-for-width Geometry Management
GTK3 has replaced [1] the GTK2 geometry management with Height-for-width
Geometry Management [2]. This means we need to replace size_request() methods
with get_preferred_{width,height}().

[1] http://developer.gnome.org/gtk3/3.0/ch25s02.html#id1525688
[2] http://developer.gnome.org/gtk3/3.0/GtkWidget.html#geometry-management

Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
[assembled from several patches; fixed up left-over plus sign; added
description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Sascha Silbe
327ca88ca8 Adapt to Widget.get_child_requisition() API changes
In PyGTK Widget.get_child_requisition() returned a tuple [1]. In GTK3+pygi
a Requisition object is returned instead.

Based on a patch by Benjamin Berg <benjamin@sipsolutions.net>.

[1] http://developer.gnome.org/pygtk/stable/class-gtkwidget.html#method-gtkwidget--get-child-requisition
[2] http://developer.gnome.org/gtk/stable/GtkWidget.html#gtk-widget-get-child-requisition

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
0d827e7e66 Adapt to Gtk.icon_size_lookup*() API changes
In PyGTK, icon_size_lookup*() returned just the icon size as a 2-tuple [1].
In GTK3+pygi, an additional boolean value indicating whether the passed-in
value was valid is returned. [3,4]

[1] http://developer.gnome.org/pygtk/stable/class-gtkiconsource.html#function-gtk--icon-size-lookup
[2] http://developer.gnome.org/pygtk/stable/class-gtkiconsource.html#function-gtk--icon-size-lookup-for-settings
[3] http://developer.gnome.org/gtk/stable/gtk-Themeable-Stock-Images.html#gtk-icon-size-lookup
[4] http://developer.gnome.org/gtk/stable/gtk-Themeable-Stock-Images.html#gtk-icon-size-lookup-for-settings

Signed-off-by: Simon Schampijer <simon@schampijer.de>
[marked unused local variables, fixed overlong line]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
8efb7c3f93 Adapt to changed Gtk.Window.set_geometry_hints() API
Unlike PyGTK [1], GTK3+pygi [2] wants GDK Geometry and WindowHints objects,
rather than individual values.

[1] http://developer.gnome.org/pygtk/stable/class-gtkwindow.html#method-gtkwindow--set-geometry-hints
[2] http://developer.gnome.org/gtk3/3.0/GtkWindow.html#gtk-window-set-geometry-hints

Signed-off-by: Simon Schampijer <simon@schampijer.de>
[replaced description, included fix-up commit]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
10d7f7d3f9 Switch sugarext to be an introspectable library
This makes sugarext accessible through introspection. It is used
from the shell (key grabber, sound volume management) and the
shell session management.

Making the sugarext introspectable was done following the
descriptions at: http://live.gnome.org/GObjectIntrospection#Using_GI

Signed-off-by: Simon Schampijer <simon@schampijer.de>
2011-12-13 17:19:52 -03:00
Sascha Silbe
820efa56b9 Run pygi-convert.sh for automatic conversion from GTK2 to GTK3 + pygi.
This is only on a best-effort basis; the code will be in a broken state after
this patch and need to be fixed manually.

The purpose of committing the intermediate, non-working output is to make it
reproducible. It's impractical to manually review the changes.

The exact version used was 4f637212f13b197a95c824967a58496b9e3b877c from the
main pygobject repository [1] plus a custom patch [2] that hasn't been sent
upstream yet.

[1] git://git.gnome.org/pygobject
[2] https://sascha.silbe.org/patches/pygobject-convert-sugar-20111122.patch

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Sascha Silbe
aed295ec4e Import GDK in preparation for GTK3 conversion
Some parts of GTK moved to GDK, so we need to import the latter for things to
work after the conversion script runs.

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
9cb18cdcf3 Remove Canvas* widgets and other hippo-canvas using parts
hippo-canvas isn't available in the GTK3 world, so we need to remove
anything that depends on it. Activities that still use it will need replace
hippo-canvas based widgets with native GTK ones before they can be ported to
GTK3.

[replaced description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
1edc6ca1b1 Don't use hippo-canvas for rendering pixbufs
hippo-canvas isn't available in the GTK3 world and we can do fine without it
for rendering pixbufs.

[split out from another patch; added description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
af4bde1e83 Notebook: fix passing can-close-tabs
Make sure can_close_tabs can be passed in as a keyword parameter (to be set
by the GObject constructor).

[split out from another patch]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
9e4a3688fe Pass all parameters to GtkTextBuffer.get_text()
With PyGTK the include_hidden_chars parameter to GtkTextBuffer.get_text() had
a default value [1]. With GTK3+pygi the value must be explicitly passed [2].

[1] http://developer.gnome.org/pygtk/stable/class-gtktextbuffer.html#method-gtktextbuffer--get-text
[2] http://developer.gnome.org/gtk3/3.0/GtkTextBuffer.html#gtk-text-buffer-get-text

[changed description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
056bc29559 Pass all parameters to ComboBox.set_row_separator_func()
With PyGTK, the func and data parameters to ComboBox.set_row_separator_func()
had defaults [1]. With GTK3+pygi both values must be passed [2].

[1] http://developer.gnome.org/pygtk/stable/class-gtkcombobox.html#method-gtkcombobox--set-row-separator-func
[2] http://developer.gnome.org/gtk/stable/GtkComboBox.html#gtk-combo-box-set-row-separator-func

[replaced description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Daniel Drake
2f7f95f9af Pass all parameters to Box.pack_start() and ...pack_end()
With PyGTK, several Box.pack_{start,end}() parameters had defaults [1,2].
With GTK3+pygi all values must be passed [3,4].

[1] http://developer.gnome.org/pygtk/stable/class-gtkbox.html#method-gtkbox--pack-start
[2] http://developer.gnome.org/pygtk/stable/class-gtkbox.html#method-gtkbox--pack-end
[3] http://developer.gnome.org/gtk/stable/GtkBox.html#gtk-box-pack-start
[4] http://developer.gnome.org/gtk/stable/GtkBox.html#gtk-box-pack-end

[assembled from several patches; replaced description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-12-13 17:19:52 -03:00
Simon Schampijer
89ef6304a1 Fix broken imports
8f1a821d68 only changed imports starting with
"import", but not those using "from ... import ...".

[replaced description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-11-15 17:51:23 +01:00
Simon Schampijer
8f1a821d68 Rename imports from sugar to sugar3
Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-by: Sascha Silbe <silbe@activitycentral.com>
2011-11-14 19:17:32 +01:00
Simon Schampijer
000ed75cbe Rename the module to sugar3
The old gtk-2 based module will be present in
the 0.94 branch in the sugar-toolkit.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-by: Sascha Silbe <silbe@activitycentral.com>
2011-11-14 18:17:18 +01:00
Simon Schampijer
37568a0a7e bundlebuilder: refactor get_files_git to Packager to avoid code duplication
Follow up patch for b582736375

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Daniel Drake <dsd@laptop.org>
Acked-by: Sascha Silbe <silbe@activitycentral.com>
2011-09-28 11:52:38 +02:00
Simon Schampijer
29a700b34a bundlebuilder: add back build_locale functionality to XOPackager SL #3116
Due to the removal of the manifest support we lost as well
the part of the code that does build the locale. This patch
adds that functionality back.

Signed-off-by: Simon Schampijer <simon@laptop.org>
2011-09-28 11:40:52 +02:00
Daniel Drake
720b33ab30 Remove hippo from naming alert
Reimplement the favorite icon as a ToggleButton, and use standard
boxes, entrys and textviews for the other aspects.
2011-09-27 14:57:21 +01:00
Simon Schampijer
d39a813969 Don't put event box in toplevel window
Remove an unnecessary toplevel widget.

This event box was originally added by Marco "to make it easier
to take screenshot of the canvas area only" (7f731457c2) but we're
unsure why this is, and it doesn't seem to be needed for our current
screenshot-taking mechanism. Screenshots continue to work fine after
removing this.
2011-09-27 12:43:51 +01:00
Simon Schampijer
1609340503 Joining shared activity: set title for activity palette in frame, SL #3109
We need to set the title when we join a shared session AND when
we run a private session.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Tested-By: Gonzalo Odiard <gonzalo@laptop.org>
Reviewed-By: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Sascha Silbe <silbe@activitycentral.com>
2011-09-20 08:35:10 +02:00
Simon Schampijer
b582736375 XO_Packager: package files that are in git and the locale folder, OLPC #11217
There had been reports about Activities that had unexpected files in
the xo bundle (e.g. patches). There have been a recent change that the support
for the MANIFEST has been removed from the bundle builder. The MANIFEST
'controlled' which files were bundled. The code did include all the
files present in the folder (which includes patches etc).

The patch does use git-ls to get a list of files to include (like the
tarball packager). Furthermore the locale folder is included which has been
generated. Due to the API freeze we made '_get_files_in_git' a private method
which adds a bit of duplication to the 'get_files' method in the tarball
packager. A patch for master which will implement Builder.get_files_git(),
that can be used by XOPackager and SourcePackager.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-By: Daniel Drake <dsd@laptop.org>
2011-09-19 18:49:54 +02:00
Simon Schampijer
a16eedff46 Some activities segfault when closing, OLPC #11201
TurtleArt and Abacus are two known candidates

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
2011-09-07 18:20:01 +02:00
Simon Schampijer
c1f9d716ab Correct title in the activity frame SL #3042
Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
Tested-by: Gonzalo Odiard <gonzalo@laptop.org>
2011-08-18 17:17:00 +02:00
Simon Schampijer
e022aa8e4a Do not remove the Keep button completely, keep around for backward compatibility
In order to allow activities keeping their backward compatibility
we keep the Keep button around but do not add it to the toolbar. This
fixes activities that either remove or hide the Keep button or
alter it in any other way. The Keep button is deprecated and we
discourage the usage.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Gonzalo Odiard <gonzalo@laptop.org>
2011-08-17 18:04:47 +02:00
Gonzalo Odiard
507dfecc09 Add alpha and scale functionality to the icon, can be used in the launcher to do the animation - v2
Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
        Acked-By: Simon Schampijer <simon@laptop.org>
2011-08-17 12:13:10 -03:00
Simon Schampijer
0082e10f8e Remove the Keep button from the activity toolbar
The keep button has led to a false assumption: learners
confused it with a traditional save button and not recognising
it as what it is, an option to duplicate an entry.

Eben suggested to remove the button [1] and others have since
then. The functionality of duplicating an entry will be moved
to the entry palette in the Journal and the entry detail view [2].

We will print a warning when the KeepButton is used and remove
it after another cycle.

[1] http://lists.sugarlabs.org/archive/sugar-devel/2010-April/023439.html
[2] http://lists.sugarlabs.org/archive/sugar-devel/2011-May/031316.html

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-By: Sascha Silbe <silbe@activitycentral.com>
2011-08-15 19:29:30 +02:00
Simon Schampijer
3f0822ab1a Toolbox: replace the hippo based separator with a gtk.HSeparator
This makes the old-style Toolbar hippo free.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Benjamin Berg <benzea@sugarlabs.org>
2011-08-13 09:45:14 +02:00
Simon Schampijer
17ec110798 Replace the hippo-based TimeoutIcon with one based on a gtk.Label and gtk.Alignment
This patch depends on the addition of the SugarTimeoutIcon
to the artwork where we set the font and background color.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Benjamin Berg <benzea@sugarlabs.org>
2011-08-12 10:39:38 +02:00
Simon Schampijer
4018265f6c Replace our custom entry widget with one based on gtk.Entry
Our custom entry widget, which was based on sexyicon, did
support placing an icon in the entry (e.g. the magnifier icon
for the search entry) and displaying progress in the case of
the url entry in Browse. Both is supported since GTK+ 2.16 in the
gtk.Entry.

The patch does keep the old API, that is why we can land it in
0.94 no change in the shell needed only a small change in Browse,
in a second step I would like to use the upstream API e.g.
's/set_icon_from_name/set_icon_from_icon_name'.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Benjamin Berg <benzea@sugarlabs.org>
2011-08-12 10:38:11 +02:00
Simon Schampijer
d0a493e532 Initialize window title with bundle name, OLPC #11037
I had to modify the patch slightly because of
0269f819761cfd803cf4d694298c8ab6a753e242, changes
reviewed by Sascha.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-By: Simon Schampijer <simon@laptop.org>
Reviewed-by: Sascha Silbe <silbe@activitycentral.com>
2011-07-24 19:22:35 +02:00
Simon Schampijer
9d21fd7511 Update window title when the activity title changes - OLPC #10978
The patch updates the window title when the user changes
the title in the toolbar or in the Journal.

Signed-of-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-By: Simon Schampijer <simon@laptop.org>
2011-07-24 18:42:48 +02:00
Bernie Innocenti
e7430faac9 Remove incomplete MANIFEST support
This incomplete feature contributes to confuse new activity authors and
slightly complicates our bundle installation logic.

The day someone finds something useful to do with the MANIFEST
specification, we can revert this patch in no time.

Signed-off-by: Bernie Innocenti <bernie@codewiz.org>
Tested-by: Bernie Innocenti <bernie@codewiz.org>
Tested-by: James Cameron <quozl@laptop.org>
Tested-by: Sascha Silbe <silbe@activitycentral.com>
Reviewed-by: Sascha Silbe <silbe@activitycentral.com>
[rebased on git master, minor style fix]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-07-24 16:21:38 +00:00
Simon Schampijer
6b675ed45f Make sure the datastore entry is created in time OLPC #10755
To avoid that we try to access the datastore entry before
it has been created we need to move the creation code up,
before we do get the possible information from a shared
session. If we have a shared session we do then get the
title and icon-color information from it and adjust
accordingly.

Tested that no other operation like for example resuming
has issues with that change.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-By: Sascha Silbe <silbe@activitycentral.com>
2011-07-24 17:27:25 +02:00
Gonzalo Odiard
880e60bdda Sugar-toolkit: Pack page in ToolbarButton when is connected to the window - OLPC #10930
To add the accelerator to the ToolButton the activity must have set
the 'sugar-accel-group' before. The patch does make the ToolbarButton
listen to the 'hierarchy-changed' signal and repack itself accordingly.
Since the ToolButtons of the subtoolbar do listen to 'hierarchy-changed'
as well to set the accelerator they will set it accordingly.

This fixes the accelerators for new-style-toolbar activities
like Terminal, TurtleArt and Paint, more info in #10930.

Signed-by-off: Gonzalo Odiard <gonzalo@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-07-15 18:54:29 +02:00
Daniel Drake
10580fc2a7 GlibTCPServer: defer shutdown_request to avoid closing the socket too early OLPC #10906
In Python 2.7, shutdown_request was added to the BaseServer class and
TCPServer was adopted to use it instead of close_request in the
_handle_request_noblock() path.

GlibTCPServer must be adapted to account for this, so that
shutdown_request is not allowed to prematurely allowed to close the socket,
in the same way that close_request is ignored.

Fixes collaboration in activities that rely on this mechanism for
sharing (including ImageViewer and Read)

Signed-off-by: Daniel Drake <daniel@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
Tested-by: Gonzalo Odiard <gonzalo@laptop.org>
Tested-by: Simon Schampijer <simon@laptop.org>
2011-06-29 14:42:53 +02:00
Simon Schampijer
7e61237c8f Debug logs for default profile
The generic path does not work for the telepathy logs. As we
have removed the support for different profiles it is ok
to just use the default path.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-By: Marco Pesenti Gritti <marco@marcopg.org>
2011-06-29 10:01:51 +02:00
Simon Schampijer
7a0d5d9398 Use 'focus-out' event instead of 'changed' event for title entry OLPC #10956, SL #2608
To determine if the title has changed we use the 'focus-out'
event now instead of the 'changed' signal of the gtk.Entry. This
removes races we had before.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-By: Simon Schampijer <simon@laptop.org>
Acked-By: Sascha Silbe <silbe@activitycentral.com>
2011-06-20 17:48:51 +02:00
Simon Schampijer
1ea1b2a0ab Use the activity instance name when joining a shared activity SL #2872
When we join a shared activity we use the name of the shared activity
as the title of the activity. As we set the activity metadata
accordingly this will be visible in the activity toolbar, the Journal
and the activity frame.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-By: Sascha Silbe <silbe@activitycentral.com>
2011-06-09 16:55:56 +02:00
Simon Schampijer
c86b6d5917 Fix invitations from a non sugar client (empathy), part of OLPC #10814
This differentiates between sugar and non sugar invitations using the
handle type. For non-sugar invitations we use the activity id to
determine which activity to join.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-By: Sascha Silbe <silbe@activitycentral.com>
2011-06-09 16:53:18 +02:00
Simon Schampijer
67143d8042 Only show joined buddies on sharer side, part of OLPC#10578
This is a follow-up patch to 95b4eeec758ffa729d0dbb219b21d428115fcc74

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-By: Sascha Silbe <silbe@activitycentral.com>
2011-05-31 16:24:08 +02:00
Simon Schampijer
5b09eb1d74 Shared activity does not announce the 'buddy-left' signal OLPC #10800
This fixes a copy and paste error. A good test case is the Memorize
activity since we listen for the 'buddy-left' signal there to
update the members list inside the activity.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-By: Sascha Silbe <silbe@activitycentral.com>
2011-05-23 10:33:50 +02:00
Sascha Silbe
3553fbd2f0 remove obsolete comment
GTK bug #502871 [1] has been fixed in 2007.

[1] http://bugzilla.gnome.org/show_bug.cgi?id=502871

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-05-20 23:13:10 +02:00
Sascha Silbe
567bd961a5 Avoid showing decorated windows during start-up (OLPC#10713)
As a side effect, activity start-up is now subjectively faster, maybe even
objectively (due to avoiding a resize).

Tested on XO-1 running Debian Squeeze.

Acked-By: Simon Schampijer <simon@laptop.org>
2011-04-11 18:00:29 +02:00
Gonzalo Odiard
35cb4e3881 The activity icon does not handle the case of a activity without metadata.
If the activity is initiated with create_object=False

Acked-by: Sascha Silbe <silbe@activitycentral.com>
2011-04-03 17:19:54 +02:00
Simon Schampijer
17e52db2b6 Store all the buddies that have been joined in the activity metadata OLPC #10578
Before only the buddies that were present when closing the activity
were logged in the Journal. This patch does add another dictionary
'_joined_buddies' to keep track of the users that did join. The
'_buddies' dictionary keeps on tracking the users currently in the
activity.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Acked-by: Sascha Silbe <silbe@activitycentral.com>
2011-03-31 12:07:53 -04:00
Sascha Silbe
85e714ecb1 fix regressions introduced by 29582de6 (fix for SL#1742)
GTK pops down the palette before it invokes the actions on the
menu item. We need to postpone destruction of the palette until
after all signals have propagated from the menu item to the
palette owner.

Symptoms included the "View Details" palette menu item in the Journal list
view not working.

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-03-27 16:39:04 +02:00
Simon Schampijer
ca02d59e11 Open content bundles on a external device #1748
Remove the path parameter as it is not used anyhow. The patch
for the sugar module does make sure the method is called
correctly.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Acked-By: Simon Schampijer <simon@laptop.org>
Reviewed-By: Sascha Silbe<silbe@activitycentral.com>
2011-03-03 11:10:26 -05:00
Sascha Silbe
17537c7710 Window: allow removing the toolbar_box
Allow the toolbar_box to be removed by setting it to None, like is supported
for canvas.

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-02-17 23:23:33 +01:00
Sascha Silbe
9d45394d40 fix whitespace mistake introduced by c7a80a1
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-02-15 21:45:46 +00:00
Sascha Silbe
11bfce1a31 sugar.activity.i18n: add pgettext()
Python 2 will never have pgettext() [1], so we need to ship our own version.
sugar.activity.i18n is the best place for that.

[1] http://bugs.python.org/issue2504#msg122482

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
Acked-by: Simon Schampijer <simon@laptop.org>
2011-02-15 21:44:57 +00:00
Simon Schampijer
b30bc0151c bundlebuilder: genpot: don't use absolute paths in filenames (SL#2508)
[tweaked description; minor style fix]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
Tested-By: Sascha Silbe <silbe@activitycentral.com>
Reviewed-By: Sascha Silbe <silbe@activitycentral.com>
2011-02-12 19:12:43 +00:00
Martin Dengler
45fc0b6186 Throw MalformedBundleException on broken zip files
sugar.bundle.bundle.Bundle users (e.g.
jarabe.model.bundleregistry.BundleRegistry._add_bundle) only expect
MalformedBundleException to be thrown, not exceptions of zipfile.

This patch solves the most severe issue in #1876: filling up the
filesystem with temporary files that won't be deleted afterwards.

Before we can consider this bug completely fixed, we still need
to do something for the remaining issues:

 1) Unpacking shouldn't be attempted if there isn't a safety margin

 2) System becomes unresponsive during unpacking

 3) No progress indication for the operation, so users are tempted
    to click multiple times

 4) No error messages displayed for unpacking errors, which is a
    common Sugar nuisance.

http://bugs.sugarlabs.org/ticket/1876#comment:5 offers possible
strategies for (1) and (2).

Signed-off-by: Martin Dengler <martin@martindengler.com>
Signed-off-by: Bernie Innocenti <bernie@codewiz.org>
[style fixes, adjusted description]
Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
Reviewed-by: Aleksey Lim <alsroot@activitycentral.org>
2011-02-05 16:30:03 +01:00
Sascha Silbe
924e2e62bf fix sugar-emulator detection logic broken by 814ab2d (has_key() cleanup)
This broke Shutdown and Restart (buddy menu).

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
2011-02-05 16:28:24 +01:00
Sascha Silbe
3b0e761f4a XoColor: don't choke if passed the wrong type (SL#1408)
Color data is stored in the Journal as a JSON dump, so we can get back
arbitrary types. XoColor already checks the color string for validity and
handles invalid strings gracefully, so it makes sense to enhance this to
invalid types as well.

Acked-by: Simon Schampijer <simon@schampijer.de>
2010-11-30 11:48:31 +00:00
Simon Schampijer
18e39672ce Apply new version scheme as well to content bundles #2425
Reviewed-by: James Cameron <quozl@laptop.org>
2010-11-25 11:23:30 +01:00
Simon Schampijer
aadfeed305 bundlebuilder: install mimetypes.xml and associated icon #2262
As we do create the ActivityBundle in the config of the bundlebuilder
we can use the code from the activitybundle as well to install
the mime type.

Reviewed-By: Sascha Silbe <sascha-pgp@silbe.org>
2010-11-24 21:39:09 +01:00
Sascha Silbe
1adc165a8c bundlebuilder: ignore incorrect pylint warning
pylint isn't smart enough to figure out the return type of Popen.communicate(),
so squelch the warning.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:37 +01:00
Sascha Silbe
46deeb64e6 pylint: sugar.wm._property_change_trapped: allow overriding built-in method
"format" is the name of a parameter of the function we are wrapping, so we
shouldn't change it.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:36 +01:00
Sascha Silbe
0521234fec CellRendererInvoker._redraw_path(): assure column is defined
We know that our code is correct and column should always be assigned, but it
never hurts to act defensively and guard against bugs in other pieces of the
code (or other components like GTK).

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:36 +01:00
Sascha Silbe
05fd5fe2d7 ToolInvoker._get_alignments: fix missing self parameter
Caught by pylint. I wonder if we need this piece of code as nobody every
triggered it.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:36 +01:00
Sascha Silbe
7983242f7a pylint cleanup: initialise all attributes in __init__()
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:36 +01:00
Sascha Silbe
adba508d8f pylint cleanup: pass format parameters to log functions instead of using %
This avoids the overhead from the string formatting on production systems.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:35 +01:00
Sascha Silbe
ff16cb0fa9 pylint cleanup: disable warnings for reasonable catch-all exception handlers
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:35 +01:00
Sascha Silbe
431e36a427 sugar.util: use logging.exception instead of traceback.format_exc()
logging.exception() handles exceptions nicely for us, no need to explicitly
use traceback.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:35 +01:00
Sascha Silbe
3d227102c4 pylint cleanup: remove unused imports
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:35 +01:00
Sascha Silbe
eacce98f88 pylint cleanup: replace disable-msg with disable
Adapt to upstream format change.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:34 +01:00
Sascha Silbe
7acfbd070f style cleanup: prefer ' for strings
Tomeu prefers ' for strings, so let's use it wherever we don't have a good
reason to use ".

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:34 +01:00
Sascha Silbe
5f13fcfc84 style cleanup: use """ everywhere
Most of the code uses """, so adjust the few deviations.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:34 +01:00
Sascha Silbe
5f8ec81023 PEP8 cleanup: fix deprecated raise syntax
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:34 +01:00
Sascha Silbe
9c7769cc21 PEP8 cleanup: fix whitespace before ':'
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:33 +01:00
Sascha Silbe
73de340d27 PEP8 cleanup: fix spaces around keyword parameters
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:33 +01:00
Sascha Silbe
72ed58cbca PEP8 cleanup: fix inline comment spacing
pep8 wants inline comments to be prefixed by at least two spaces. Let's just
move them to a separate line as that's easier to read anyway.

Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:33 +01:00
Sascha Silbe
60707443ea PEP8 cleanup: fix whitespace around operator
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:33 +01:00
Sascha Silbe
814ab2ddf9 PEP8 cleanup: don't use has_key()
has_key() has been deprecated for quite some time now.

Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:32 +01:00
Sascha Silbe
4d978fda14 PEP8 cleanup: ensure lines are shorter than 80 characters
Caught by PEP8. This is important for Sugar because the XO has a small screen
where long lines would make the code hard to understand (because you need to
constantly scroll horizontally).

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer<simon@schampijer.de>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:32 +01:00
Sascha Silbe
e2231d5620 PEP8 cleanup: fix number of blank lines
Caught by pep8.

Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:32 +01:00
Sascha Silbe
131c28bb72 fix EOL spaces
Reviewed-by: James Cameron <quozl@laptop.org>
Acked-by: Simon Schampijer <simon@laptop.org>
CC: Aleksey Lim <alsroot@member.fsf.org>
2010-11-23 17:14:31 +01:00
Simon Schampijer
c7a80a1e56 Add new numbering scheme #2425
- add class NormalizedVersion to parse and compare the new activity versions
- change the bundlebuilder and activitybundle to use the new scheme, instead
of an int version we expect a string that matches the format defined in
NormalizedVersion
2010-11-09 10:53:05 +01:00
Tomeu Vizoso
29582de67f Add 'cache-palette' property to Invoker #1742
Meaning that the palette will be cached after it's created.
2010-10-14 19:06:31 +02:00
Tomeu Vizoso
4fb2943ec4 Fix running multiple instances of Browse by adapting to API changes #2404
* sugar/presence/presenceservice.py: Specify the D-Bus interface when
  calling ActivityProperties.GetActivity
* sugar/activity/main.py: Set a default for the --invite option and
  make the create() D-Bus method accept a{sv} so we can pass the
  boolean value.
2010-10-05 16:36:13 +02:00
Tomeu Vizoso
7dedaeb7bb Cast floats to ints before calling cairo.ImageSurface() #2291
Otherwise Python 2.7 will raise an exception.
2010-10-04 16:56:26 +02:00
Simon Schampijer
106b9fba68 Do not break if the string contains no conversion specifier #2354 2010-09-29 16:15:59 +02:00
Tomeu Vizoso
a2b8518489 Don't try to share the activity if we couldn't find a suitable connection #2217 2010-09-10 09:45:06 +02:00
Tomeu Vizoso
0002c93e96 sugar.presence: Remove dead code and make clear which methonds are deprecated 2010-08-30 19:21:35 +02:00
Tomeu Vizoso
e21ab06e34 Read the public and private keys lazily 2010-08-26 17:07:15 +02:00
Tomeu Vizoso
d780248e87 Use Account.ConnectionStatus instead of Account.Connection.Status 2010-08-26 15:26:33 +02:00
Martin Abente
4260a53d3f Merge branch 'master' of gitorious@git.sugarlabs.org:sugar-toolkit/mainline 2010-08-23 14:22:49 -04:00
Martin Abente
f0a570b5ae Delete activities profile data when uninstall #2074
When activities are uninstalled, profile data persists. Profile
data can consume a lot of storage space. Therefore it is necessary
to delete it when required.

Signed-off-by: Martin Abente <mabente@paraguayeduca.org>
2010-08-23 14:09:33 -04:00
Tomeu Vizoso
c56154d938 Remove sugar/__init__.py, it should come from sugar-base #1868 2010-08-23 19:27:57 +02:00
Tomeu Vizoso
d156ff56a8 Address comments from Simon's review 2010-08-20 16:25:13 +02:00
Tomeu Vizoso
1af1bc9713 Address several nitpicks from Marco 2010-08-20 15:33:54 +02:00
Tomeu Vizoso
56679a3de6 Rename ActivityHandle.handle_invite to ActivityHandle.invited 2010-08-20 15:33:54 +02:00
Tomeu Vizoso
d66eb39c9b Remove unused constant 2010-08-20 15:33:54 +02:00
Tomeu Vizoso
6a12411477 Add copyright statement due to the collaboration refactoring 2010-08-20 15:33:54 +02:00
Tomeu Vizoso
fdfacaf26f Misc. pylint fixes 2010-08-20 15:33:54 +02:00
Tomeu Vizoso
fab271ac9c Wrap lines with more than 80 chars 2010-08-20 15:33:54 +02:00
Tomeu Vizoso
ead42a6945 Remove some unused imports 2010-08-20 15:33:54 +02:00
Tomeu Vizoso
1d16629d1b For several reasons, a shared activity won't survive to its connection
disconnecting and coming back.
2010-08-20 15:33:54 +02:00
Tomeu Vizoso
cd6c0101af No need to dispose the buddies currently in the activity, as it is information that is needed through the whole life of the activity instance 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
694c456ed3 Remove misleading comment, we are already listening Closed 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
24df594203 Add the MAC address to the data that gets hashed to get an activity_id 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
d5dbe3616f Correctly use the connections from ConnectionManager 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
c0ed611aee Make sure that the connection we choose is connected 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
ba80f2a2c1 Set the properties of the channel after we have joined it 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
1e7f499029 Translate handles if the channel has channel-specific handles (gabble) 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
11d0574b3f Log when we fail to find a share activity for a given id 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
633214e2b6 Call the new invite method in ActivityService InviteCommand and keep a stub for Invite 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
7136145667 Add WOCKY_DEBUG to ~/.sugar/debug 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
6b965fa98d Add mission control env vars for debugging 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
8da18fe2aa Track the buddies inside the activity 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
363f828205 Handle invitations using Mission Control 5.
src/sugar/activity/activity.py: If the activity is being invoked to
handle an invite, create a Client.Handler instance and share the
activity when HandleChannels is invoked.

src/sugar/activity/activityfactory.py,
src/sugar/activity/activityhandle.py,
src/sugar/activity/main.py: Add a -i switch that indicates to the
activity that it should handle the channel from an invitation.

src/sugar/presence/activity.py: Expose Activity.room_handle.

src/sugar/presence/presenceservice.py: Add get_activity_by_handle().

src/sugar/presence/util.py: Add get_account_for_connection().
2010-08-20 15:33:53 +02:00
Tomeu Vizoso
af6e3aa5ef Restore use of ActivityProperties.GetActivity 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
46159e987b Pass the account path to the Activity on creation 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
1a4c721f3d Identify buddies and activities by their account and ids instead
of connection and handle.
2010-08-20 15:33:53 +02:00
Tomeu Vizoso
cc8ecd81e7 Add src/sugar/presence/util.py 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
bd3a4ca747 Take into account the "private" property when updating the scope toolbutton 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
ce87bb3ff6 Only add ourselves to a channel if we are in local_pending 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
fbee730549 Implement inviting buddies to a private activity 2010-08-20 15:33:53 +02:00
Tomeu Vizoso
37d7fc1075 Add src/sugar/util.py to the Makefile 2010-08-20 15:33:52 +02:00
Tomeu Vizoso
6f6b86d1e2 Implement Buddy.object_path() 2010-08-20 15:33:52 +02:00
Tomeu Vizoso
9c1275e4c8 Implement Activity.get_channels() 2010-08-20 15:33:52 +02:00
Tomeu Vizoso
043d3b0ee7 Emit the buddy-left signal 2010-08-20 15:33:52 +02:00
Tomeu Vizoso
12cd353620 Implement leaving an activity 2010-08-20 15:33:52 +02:00
Tomeu Vizoso
2db82c1722 Emit the buddy-joined signal 2010-08-20 15:33:52 +02:00
Tomeu Vizoso
f9b0d68a48 Refactor the logic for sharing into _ShareCommand and implement
joining a shared instance with _JoinCommand.
2010-08-20 15:33:52 +02:00
Tomeu Vizoso
a0b9394846 Replace enough of the old PS so we can share an activity instance publically
on the network.
2010-08-20 15:33:52 +02:00
Tomeu Vizoso
98cc77f1fb Replace enough of the old PS so we can join an activity instance on the network.
* src/sugar/activity/activity.py: Get the shared activity wrapper from
  sugar.presence.
* src/sugar/activity/activityfactory.py: Disable checking in the PS for
  activity_id duplicates.
* src/sugar/presence/activity.py: Remove the PS dependency and query Telepathy
  directly. Implemented enough to join an activity.
* src/sugar/presence/buddy.py: Remove the PS dependency and query Telepathy
  directly. Implemented enough to join an activity. Added an Owner subclass of
  Buddy()
* src/sugar/presence/presenceservice.py: Remove the PS dependency and query Telepathy
  directly. Implemented enough to join an activity.
* src/sugar/presence/util.py: Add ConnectionManager for discovering and tracking
  connections.
2010-08-20 15:33:52 +02:00
Simon Schampijer
981707c112 Print warnings about the deprecated activity.info fields 2010-08-17 17:25:19 +02:00
Simon Schampijer
acd8095a29 Revert "Support dropped for activity.info fields 'service_name' and 'class'"
This reverts commit e11b7d3196.
2010-08-17 16:57:02 +02:00
Simon Schampijer
e11b7d3196 Support dropped for activity.info fields 'service_name' and 'class'
You have to use 'bundle_id' and 'exec' instead now.
2010-08-16 16:12:11 +02:00
anishmangal2002
3f68813dd6 Add ErrorAlert inherited from Alert
Adds the ErrorAlert class which is an alert inherited from
the base Alert class. This is very similar to the
ConfirmationAlert class with the difference being that it
only displays an 'Ok' button in the Alert popup.

Signed-off-by: anishmangal2002 <anishmangal2002@gmail.com>
2010-08-10 17:46:38 +00:00
Simon Schampijer
f82c2bad4d Not able to access files on external device from within an activity on new system d.l.o #10218
The error we were seeing was that the '(env.get_profile_path(),
'data'))' does not exist yet at system start. Symlinks are created
there when accessing data on an external device. The directory
gets created when an activity like Browse or Terminal has been
run for the first time or you start Read for the first time by
resuming the file on the external device.

http://dev.laptop.org/ticket/10218
2010-08-09 09:25:18 +02:00
Simon Schampijer
abda2edc04 Remove unneeded debug logs #1861 2010-07-07 11:08:59 +02:00
Bernie Innocenti
e90fccfd37 Use set_toolbar_box() in example code.
The set_toolbox() method is obsolete, so let's not advertise it.

Signed-off-by: Bernie Innocenti <bernie@codewiz.org>
2010-07-01 09:12:51 -04:00
Bernie Innocenti
e2ab351b36 Set default accelerators for Copy and Paste buttons 2010-07-01 09:12:51 -04:00
Simon Schampijer
3aa0995096 Bundelbuilder should not use localized activity name #1968 (Walter Bender)
The localized activity name is only used for
user-facing strings. The .xo and .tar files are
left in the original name.
2010-06-03 08:56:42 +02:00
Aleksey Lim
883fefe782 Cannot delete stalled download from journal #1987 2010-06-02 15:01:45 +00:00
Aleksey Lim
845d2534e6 Reset timeout delay on every TitleEntry change #1948 2010-06-02 14:56:28 +00:00
Simon Schampijer
e497eb15ba Fix keep functionality in activities
Introduced by #1765
2010-03-29 23:48:23 +02:00
Aleksey Lim
161aec771e Display a message when an activity fails to start (based on wadeb patches) #1447 2010-03-10 16:35:09 +00:00
Simon Schampijer
2a52c9493b A little bit of pylint cleanup 2010-03-10 10:23:30 +01:00
Sascha Silbe
bb323a4efa check syntax of private key (#1568)
Check that header and footer of the private key are present in order to detect
corrupted key files.

Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
2010-03-09 23:34:59 +00:00
Sascha Silbe
d38d865c7c Revert "Merge commit 'refs/top-bases/t/bug-1568' into t/bug-1568"
This reverts commit 12016d5408, reversing
changes made to d006092d37.
2010-03-09 23:28:18 +00:00
Sascha Silbe
12016d5408 Merge commit 'refs/top-bases/t/bug-1568' into t/bug-1568 2010-03-09 22:59:57 +00:00
Tomeu Vizoso
d006092d37 Log saving errors in activities #1703 2010-03-09 22:33:23 +01:00
Wade Brainerd
63a5dcef05 Deprecate host_version #1509 2010-03-09 22:28:50 +01:00
James Cameron
f8ef93bd21 Removes the use of O_SYNC on logs #1656
With O_SYNC on open of log files, on systems with slow filesystem random
write performance, there is random activity startup time.
2010-03-09 22:23:55 +01:00
Aleksey Lim
6921bcd67d Do not fail while closing object less activities #1714 2010-03-09 18:56:21 +00:00
Sascha Silbe
b64930b2eb check private key syntax 2010-03-08 20:54:05 +00:00
Aleksey Lim
3bf70d642c Override canvas property in Activity class #1795 2010-03-08 19:01:53 +00:00
Simon Schampijer
7978c55fdf Create the DSObject update listener as well for existing entries 2010-02-13 14:59:05 +01:00
Sayamindu Dasgupta
e6aa91ba3f Merge branch 'master' of git://git.sugarlabs.org/sugar-toolkit/gettext-enhancements 2010-02-10 20:56:32 +05:30
Sayamindu Dasgupta
d00d9b6431 More cleanups for i18n.py 2010-02-10 20:53:09 +05:30
Sayamindu Dasgupta
1b600b147d Make the dictionary sorting a bit more sensible 2010-02-09 17:43:18 +05:30
Sayamindu Dasgupta
4552050136 Clean up docstring 2010-02-09 17:41:10 +05:30
Sayamindu Dasgupta
1817caf30f Consistent variable names 2010-02-09 17:13:04 +05:30