| The Following User Says Thank You to daperl For This Useful Post: | ||
|
|
2009-09-11
, 04:25
|
|
|
Posts: 1,605 |
Thanked: 1,601 times |
Joined on Mar 2007
@ Southern California
|
#32
|
You're right, I think we're mostly good if the app is dumb: When in portrait mode I'm framing a portrait. But I need buttons at the bottom of the screen: Zoom and shutter, and a quick menu or overlay button for other functions. It's all about comfortable, one-handed opperation, and I can see myself writing my own photo and video app if I don't get this. But I'd really rather not.
|
|
2009-09-11
, 05:54
|
|
|
Posts: 2,427 |
Thanked: 2,986 times |
Joined on Dec 2007
|
#33
|
These are all handled by hardware buttons... Just like any digital camera.
Tim
| The Following User Says Thank You to daperl For This Useful Post: | ||
|
|
2009-09-14
, 05:34
|
|
|
Moderator |
Posts: 7,109 |
Thanked: 8,820 times |
Joined on Oct 2007
@ Vancouver, BC, Canada
|
#34
|
|
|
2009-09-14
, 16:20
|
|
|
Posts: 2,427 |
Thanked: 2,986 times |
Joined on Dec 2007
|
#36
|
#! /usr/bin/env python
import gtk
import gst
class ShowMe:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_title("Webcam-Viewer")
window.connect("destroy", gtk.main_quit, "WM destroy")
vbox = gtk.VBox()
window.add(vbox)
self.movie_window = gtk.DrawingArea()
vbox.add(self.movie_window)
hbox = gtk.HBox()
vbox.pack_start(hbox, False)
hbox.set_border_width(10)
hbox.pack_start(gtk.Label())
self.button = gtk.Button("Start")
self.button.connect("clicked", self.start_stop)
hbox.pack_start(self.button, False)
self.button2 = gtk.Button("Quit")
self.button2.connect("clicked", self.exit)
hbox.pack_start(self.button2, False)
hbox.add(gtk.Label())
window.show_all()
# Set up the gstreamer pipeline
self.player = gst.parse_launch ('gconfv4l2src ! video/x-raw-yuv,width=320,height=240,framerate=(fraction)15/1 ! autovideosink')
bus = self.player.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
bus.connect("message", self.on_message)
bus.connect("sync-message::element", self.on_sync_message)
def start_stop(self, w):
if self.button.get_label() == "Start":
self.button.set_label("Stop")
self.player.set_state(gst.STATE_PLAYING)
else:
self.player.set_state(gst.STATE_NULL)
self.button.set_label("Start")
def exit(self, widget, data=None):
gtk.main_quit()
def on_message(self, bus, message):
t = message.type
if t == gst.MESSAGE_EOS:
self.player.set_state(gst.STATE_NULL)
self.button.set_label("Start")
elif t == gst.MESSAGE_ERROR:
err, debug = message.parse_error()
print "Error: %s" % err, debug
self.player.set_state(gst.STATE_NULL)
self.button.set_label("Start")
def on_sync_message(self, bus, message):
if message.structure is None:
return
message_name = message.structure.get_name()
if message_name == "prepare-xwindow-id":
# Assign the viewport
imagesink = message.src
imagesink.set_property("force-aspect-ratio", True)
imagesink.set_xwindow_id(self.movie_window.window.xid)
if __name__ == "__main__":
gtk.gdk.threads_init()
ShowMe()
gtk.main()
|
|
2009-09-14
, 17:15
|
|
|
Moderator |
Posts: 7,109 |
Thanked: 8,820 times |
Joined on Oct 2007
@ Vancouver, BC, Canada
|
#37
|
|
|
2009-09-19
, 10:08
|
|
Posts: 540 |
Thanked: 387 times |
Joined on May 2009
|
#38
|
|
|
2009-09-19
, 10:37
|
|
|
Posts: 2,121 |
Thanked: 1,540 times |
Joined on Mar 2008
@ Oxford, UK
|
#39
|
|
|
2009-09-19
, 12:25
|
|
Posts: 3,319 |
Thanked: 5,610 times |
Joined on Aug 2008
@ Finland
|
#40
|
![]() |
| Tags |
| nokia v. upright ppl war, portrait mode |
|
N9: Go white or go home