Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-04 17:35:05 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-04 17:35:05 (GMT)
commita9600516fba87acb3cb319cc6a150a03e40a7440 (patch)
treea1a29cb92083cc277ae0698c920230f8b08b0103 /shell
parent283a3f4c9731ef5d6250cfe1db14ff063f299f7a (diff)
Take screenshot and save it to the journal (<alt>1).
Diffstat (limited to 'shell')
-rw-r--r--shell/view/Shell.py31
-rw-r--r--shell/view/keyhandler.py4
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)