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