|
|
|
@ -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)
|
|
|
|
|
|
|
|
|
|