From a9600516fba87acb3cb319cc6a150a03e40a7440 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Mon, 04 Jun 2007 17:35:05 +0000 Subject: Take screenshot and save it to the journal (1). --- (limited to 'shell') 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', + '1' : 'screenshot', 'F8' : 'color_mode', 'F5' : 'b_and_w_mode', '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) -- cgit v0.9.1