changeset cf533a346cb8 in /home/hg/repos/gajim
author: Yann Leboulanger asterix@lagaule.org branches: details:http://hg.gajim.org/gajim?cmd=changeset;node=cf533a346cb8 description: start havine audio / video. Doesn't work correctly yet
diffstat:
data/gui/chat_control.ui | 93 ++++++++++++++++++++++++- data/gui/preferences_window.ui | 19 ++++- src/chat_control.py | 2 +- src/common/gajim.py | 17 ++- src/common/jingle.py | 2 +- src/common/jingle_rtp.py | 139 ++++++++++++++++++++------------------ src/common/jingle_transport.py | 85 ++++++++++++----------- src/common/multimedia_helpers.py | 43 +++++------ src/config.py | 1 - src/features_window.py | 2 +- src/gui_interface.py | 2 +- 11 files changed, 252 insertions(+), 153 deletions(-)
diffs (truncated from 856 to 300 lines):
diff -r 3511d26b1676 -r cf533a346cb8 data/gui/chat_control.ui --- a/data/gui/chat_control.ui Tue Mar 25 14:50:12 2014 +0100 +++ b/data/gui/chat_control.ui Tue Mar 25 21:26:57 2014 +0100 @@ -17,10 +17,9 @@ <property name="can_focus">True</property> <property name="spacing">1</property> <child> - <object class="GtkVBox" id="chat_control_vbox"> + <object class="GtkPaned" id="paned1"> + <property name="visible">True</property> <property name="can_focus">True</property> - <property name="border_width">3</property> - <property name="spacing">1</property> <child> <object class="GtkVBox" id="vbox2"> <property name="visible">True</property> @@ -329,6 +328,7 @@ <property name="receives_default">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Show a list of emoticons (Alt+M)</property> <property name="tooltip_text" translatable="yes">Show a list of emoticons (Alt+M)</property> <property name="relief">none</property> <property name="focus_on_click">False</property> @@ -391,6 +391,7 @@ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="no_show_all">True</property> <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Add this contact to roster (Ctrl+D)</property> <property name="tooltip_text" translatable="yes">Add this contact to roster (Ctrl+D)</property> <property name="relief">none</property> <child> @@ -481,6 +482,7 @@ <property name="receives_default">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Invite contacts to the conversation (Ctrl+G)</property> <property name="tooltip_text" translatable="yes">Invite contacts to the conversation (Ctrl+G)</property> <property name="relief">none</property> <property name="focus_on_click">False</property> @@ -507,6 +509,7 @@ <property name="receives_default">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Show the contact&apos;s profile (Ctrl+I)</property> <property name="tooltip_text" translatable="yes">Show the contact's profile (Ctrl+I)</property> <property name="relief">none</property> <property name="focus_on_click">False</property> @@ -533,6 +536,7 @@ <property name="receives_default">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Browse the chat history (Ctrl+H)</property> <property name="tooltip_text" translatable="yes">Browse the chat history (Ctrl+H)</property> <property name="relief">none</property> <property name="focus_on_click">False</property> @@ -540,7 +544,6 @@ <object class="GtkImage" id="history_image"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="stock">gtk-justify-fill</property> <property name="icon-size">1</property> </object> @@ -571,6 +574,7 @@ <property name="receives_default">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Show advanced functions (Alt+D)</property> <property name="tooltip_text" translatable="yes">Show advanced functions (Alt+D)</property> <property name="relief">none</property> <property name="focus_on_click">False</property> @@ -610,6 +614,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> + <property name="has_tooltip">True</property> <property name="relief">none</property> <property name="focus_on_click">False</property> <property name="orientation">vertical</property> @@ -631,6 +636,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> + <property name="has_tooltip">True</property> <property name="relief">none</property> <property name="focus_on_click">False</property> <property name="yalign">0.4699999988079071</property> @@ -701,6 +707,8 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> + <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Send message</property> <property name="tooltip_text" translatable="yes">Send message</property> <property name="image">image4</property> <property name="use_underline">True</property> @@ -720,9 +728,80 @@ </child> </object> <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">0</property> + <property name="resize">False</property> + <property name="shrink">True</property> + </packing> + </child> + <child> + <object class="GtkBox" id="video_hbox"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkFixed" id="outgoing_fixed"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <child> + <object class="GtkViewport" id="viewport1"> + <property name="width_request">160</property> + <property name="height_request">120</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkDrawingArea" id="outgoing_drawingarea"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="double_buffered">False</property> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="vbox1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkViewport" id="viewport2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkDrawingArea" id="incoming_drawingarea"> + <property name="width_request">320</property> + <property name="height_request">240</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="double_buffered">False</property> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="resize">True</property> + <property name="shrink">True</property> </packing> </child> </object> diff -r 3511d26b1676 -r cf533a346cb8 data/gui/preferences_window.ui --- a/data/gui/preferences_window.ui Tue Mar 25 14:50:12 2014 +0100 +++ b/data/gui/preferences_window.ui Tue Mar 25 21:26:57 2014 +0100 @@ -2363,7 +2363,7 @@ </object> <packing> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> <property name="position">0</property> </packing> </child> @@ -2386,7 +2386,7 @@ <object class="GtkTable" id="table8"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">4</property> + <property name="n_rows">5</property> <property name="n_columns">2</property> <property name="column_spacing">6</property> <property name="row_spacing">6</property> @@ -2494,6 +2494,21 @@ <property name="y_options"/> </packing> </child> + <child> + <object class="GtkCheckButton" id="video_see_self_checkbutton"> + <property name="label" translatable="yes">View own video source</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> </object> </child> </object> diff -r 3511d26b1676 -r cf533a346cb8 src/chat_control.py --- a/src/chat_control.py Tue Mar 25 14:50:12 2014 +0100 +++ b/src/chat_control.py Tue Mar 25 21:26:57 2014 +0100 @@ -1798,7 +1798,7 @@ # Video buttons self._video_button.set_sensitive(self.video_available)
- # change tooltip text for audio and video buttons if python-farstream is + # change tooltip text for audio and video buttons if farstream is # not installed audio_tooltip_text = _('Toggle audio session') + '\n' video_tooltip_text = _('Toggle video session') + '\n' diff -r 3511d26b1676 -r cf533a346cb8 src/common/gajim.py --- a/src/common/gajim.py Tue Mar 25 14:50:12 2014 +0100 +++ b/src/common/gajim.py Tue Mar 25 21:26:57 2014 +0100 @@ -184,16 +184,19 @@
HAVE_FARSTREAM = True try: - raise ImportError - farstream = __import__('farstream') - import gst - import glib + import gi + gi.require_version('Farstream', '0.2') + from gi.repository import Farstream + gi.require_version('Gst', '1.0') + from gi.repository import Gst + from gi.repository import GLib try: - conference = gst.element_factory_make('fsrtpconference') - session = conference.new_session(farstream.MEDIA_TYPE_AUDIO) + Gst.init(None) + conference = Gst.ElementFactory.make('fsrtpconference', None) + session = conference.new_session(Farstream.MediaType.AUDIO) del session del conference - except: + except GLib.GError: HAVE_FARSTREAM = False
except ImportError: diff -r 3511d26b1676 -r cf533a346cb8 src/common/jingle.py --- a/src/common/jingle.py Tue Mar 25 14:50:12 2014 +0100 +++ b/src/common/jingle.py Tue Mar 25 21:26:57 2014 +0100 @@ -61,7 +61,7 @@ """ if sid in self._sessions: #FIXME: Move this elsewhere? - for content in self._sessions[sid].contents.values(): + for content in list(self._sessions[sid].contents.values()): content.destroy() self._sessions[sid].callbacks = [] del self._sessions[sid] diff -r 3511d26b1676 -r cf533a346cb8 src/common/jingle_rtp.py --- a/src/common/jingle_rtp.py Tue Mar 25 14:50:12 2014 +0100 +++ b/src/common/jingle_rtp.py Tue Mar 25 21:26:57 2014 +0100 @@ -23,9 +23,11 @@ import socket
import nbxmpp -import farstream -import gst -from glib import GError +from gi.repository import Farstream +import gi +gi.require_version('Gst', '1.0') +from gi.repository import Gst +from gi.repository import GLib
from common import gajim
@@ -45,8 +47,8 @@ JingleContent.__init__(self, session, transport) self.media = media self._dtmf_running = False