diff options
-rw-r--r-- | shell/view/Shell.py | 31 | ||||
-rw-r--r-- | shell/view/keyhandler.py | 4 | ||||
-rw-r--r-- | sugar/activity/activity.py | 6 |
3 files changed, 39 insertions, 2 deletions
diff --git a/shell/view/Shell.py b/shell/view/Shell.py index 7624472..c682e2f 100644 --- a/shell/view/Shell.py +++ b/shell/view/Shell.py @@ -14,15 +14,22 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +from gettext import gettext as _ from sets import Set import logging +import tempfile +import os +import time import gobject +import gtk import wnck from sugar.activity.activityhandle import ActivityHandle from sugar.graphics.popupcontext import PopupContext from sugar.activity import activityfactory +from sugar.datastore import datastore +from sugar import profile import sugar from view.ActivityHost import ActivityHost @@ -196,3 +203,27 @@ class Shell(gobject.GObject): if not is_visible: self._frame.do_slide_in() act.chat_show(is_visible) + + def take_screenshot(self): + file_path = os.path.join(tempfile.gettempdir(), '%i' % time.time()) + + window = gtk.gdk.get_default_root_window() + width, height = window.get_size(); + x_orig, y_orig = window.get_origin(); + + screenshot = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, has_alpha=False, + bits_per_sample=8, width=width, height=height) + screenshot.get_from_drawable(window, window.get_colormap(), x_orig, y_orig, 0, 0, + width, height); + screenshot.save(file_path, "png") + + jobject = datastore.create() + jobject.metadata['title'] = _('Screenshot') + jobject.metadata['keep'] = '0' + jobject.metadata['buddies'] = '' + jobject.metadata['preview'] = '' + jobject.metadata['icon-color'] = profile.get_color().to_string() + jobject.metadata['mime-type'] = 'image/png' + jobject.file_path = file_path + datastore.write(jobject) + diff --git a/shell/view/keyhandler.py b/shell/view/keyhandler.py index 0b8f74c..a47cc71 100644 --- a/shell/view/keyhandler.py +++ b/shell/view/keyhandler.py @@ -25,6 +25,7 @@ _actions_table = { 'F10' : 'volume_2', 'F11' : 'volume_3', 'F12' : 'volume_4', + '<alt>1' : 'screenshot', '<alt>F8' : 'color_mode', '<alt>F5' : 'b_and_w_mode', '<alt>equal' : 'console', @@ -114,6 +115,9 @@ class KeyHandler(object): def handle_color_mode(self): self._set_display_mode(hardwaremanager.COLOR_MODE) + def handle_screenshot(self): + self._shell.take_screenshot() + def handle_b_and_w_mode(self): self._set_display_mode(hardwaremanager.B_AND_W_MODE) diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py index c098dc0..b72b0b1 100644 --- a/sugar/activity/activity.py +++ b/sugar/activity/activity.py @@ -20,9 +20,11 @@ activity must do to participate in the Sugar desktop. # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. +from gettext import gettext as _ import logging import os import time +import tempfile import gtk, gobject @@ -208,7 +210,7 @@ class Activity(Window, gtk.Container): elif create_jobject: logging.debug('Creating a jobject.') self._jobject = datastore.create() - self._jobject.metadata['title'] = '%s %s' % (get_bundle_name(), 'Activity') + self._jobject.metadata['title'] = _('%s Activity') % get_bundle_name() self._jobject.metadata['activity'] = self.get_service_name() self._jobject.metadata['keep'] = '0' self._jobject.metadata['buddies'] = '' @@ -275,7 +277,7 @@ class Activity(Window, gtk.Container): def save(self): """Request that the activity is saved to the Journal.""" try: - file_path = os.path.join('/tmp', '%i' % time.time()) + file_path = os.path.join(tempfile.gettempdir(), '%i' % time.time()) self.write_file(file_path) self._jobject.file_path = file_path except NotImplementedError: |