diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-06-04 17:35:05 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-06-04 17:35:05 (GMT) |
commit | a9600516fba87acb3cb319cc6a150a03e40a7440 (patch) | |
tree | a1a29cb92083cc277ae0698c920230f8b08b0103 /shell | |
parent | 283a3f4c9731ef5d6250cfe1db14ff063f299f7a (diff) |
Take screenshot and save it to the journal (<alt>1).
Diffstat (limited to 'shell')
-rw-r--r-- | shell/view/Shell.py | 31 | ||||
-rw-r--r-- | shell/view/keyhandler.py | 4 |
2 files changed, 35 insertions, 0 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) |