~skss/usu/misc

« back to all changes in this revision

Viewing changes to nautilus-v4l-infobar/src/nautilus-v4l-infobar.py

  • Committer: Krasimir S. Stefanov
  • Date: 2011-06-22 00:48:25 UTC
  • Revision ID: lokiisyourmaster@gmail.com-20110622004825-qai2sirxsainml35
- added nautilus-v4l-infobar
- added ttf-tahoma-installer

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
# -*- coding: utf-8 -*-
 
3
#
 
4
# Copyright (c) 2011 Krasimir S. Stefanov
 
5
#
 
6
# AUTHOR:
 
7
# Krasimir S. Stefanov <lokiisyourmaster@gmail.com>
 
8
#
 
9
# NOTE:
 
10
# This file belongs in /usr/lib/nautilus/extensions-2.0/python/
 
11
 
 
12
import os
 
13
import os.path
 
14
import sys
 
15
 
 
16
import gtk
 
17
import nautilus
 
18
import urllib
 
19
import urlparse
 
20
import re
 
21
import gobject
 
22
import pygst
 
23
pygst.require("0.10")
 
24
import gst
 
25
import time
 
26
import datetime
 
27
import glob
 
28
 
 
29
import gettext as _gettext
 
30
from locale import getdefaultlocale
 
31
 
 
32
APP_NAME = "nautilus-v4l-infobar"
 
33
 
 
34
languages = ( [getdefaultlocale()[0]] or [] )
 
35
if 'LANGUAGE' in os.environ:
 
36
    languages = os.environ['LANGUAGE'].split(':') + languages
 
37
elif 'LANG' in os.environ:
 
38
    languages = os.environ['LANG'].split(':') + languages
 
39
 
 
40
_gettext.bindtextdomain(APP_NAME, os.path.join(sys.prefix, 'share', 'locale'))
 
41
_gettext.textdomain(APP_NAME)
 
42
 
 
43
gettext = _gettext.translation(APP_NAME, os.path.join(sys.prefix, 'share', 'locale'), languages=languages, fallback=True)
 
44
_ = gettext.gettext
 
45
 
 
46
def get_pictures_dir():
 
47
    if 'XDG_CONFIG_HOME' in os.environ:
 
48
        XDG_CONFIG_HOME = os.environ['XDG_CONFIG_HOME']
 
49
    else:
 
50
        XDG_CONFIG_HOME = os.path.join(os.path.expanduser('~'),'.config')
 
51
    user_dirs = os.path.join(XDG_CONFIG_HOME, 'user-dirs.dirs')
 
52
    if os.path.exists(user_dirs):
 
53
        user_dirs_content = open(user_dirs,'r').read()
 
54
        m = re.search('XDG_PICTURES_DIR="(.*?)"', user_dirs_content)
 
55
        if m:
 
56
            return os.path.expandvars(m.group(1))
 
57
        else:
 
58
            return None
 
59
    else:
 
60
        return None
 
61
        
 
62
class NautilusV4L(nautilus.LocationWidgetProvider):
 
63
    def __init__(self):
 
64
        pass
 
65
    
 
66
    def get_widget(self, uri, window):
 
67
        def take_picture(widget = None, path = None):
 
68
            now = datetime.datetime.now()
 
69
            current_time = now.strftime("%Y-%m-%d %H.%M.%S")
 
70
            player = gst.parse_launch ('v4l2src ! ffmpegcolorspace ! pngenc ! filesink location="%s/photo_%s.png"' % (path, current_time))
 
71
            player.set_state(gst.STATE_PLAYING)
 
72
            time.sleep(1)
 
73
            player.set_state(gst.STATE_NULL)
 
74
            player = None
 
75
           
 
76
        path = urllib.unquote(urlparse.urlparse(uri)[2]) # path
 
77
        XDG_PICTURES_DIR = get_pictures_dir()
 
78
        if XDG_PICTURES_DIR != None and glob.glob('/dev/video[0-999]') != []:
 
79
            if path == XDG_PICTURES_DIR or path.startswith(XDG_PICTURES_DIR):
 
80
                hbox = gtk.HBox()
 
81
                icon = gtk.image_new_from_icon_name('camera-photo', gtk.ICON_SIZE_SMALL_TOOLBAR)
 
82
                icon.show()
 
83
                button = gtk.Button(_('Take picture with the webcam'))
 
84
                button.connect('clicked', take_picture, path)
 
85
                hbox.pack_start(icon, expand=False, fill=False, padding=4)
 
86
                hbox.pack_end(button, expand=False, fill=False, padding=4)
 
87
                hbox.show_all()
 
88
                return hbox
 
89
            else:
 
90
                return None
 
91
        else:
 
92
            return None
 
93