Philipp Hörist pushed to branch master at gajim / gajim
Commits: ff8bcc5e by lovetox at 2021-12-19T15:39:25+01:00 Script: Add base class for ui types
- - - - - a1d16269 by lovetox at 2021-12-19T15:43:15+01:00 CallWidget: Simplify code for dtmf buttons
- Define handlers in xml
- - - - -
5 changed files:
- gajim/common/jingle_rtp.py - gajim/data/gui/call_widget.ui - gajim/gtk/builder.pyi - gajim/gtk/call_widget.py - scripts/dev/generate_ui_types.py
Changes:
===================================== gajim/common/jingle_rtp.py ===================================== @@ -165,12 +165,13 @@ def _next_dtmf(self, events): else: self._dtmf_running = False
- def start_dtmf(self, event): - if event in ('*', '#'): - event = {'*': Farstream.DTMFEvent.STAR, - '#': Farstream.DTMFEvent.POUND}[event] + def start_dtmf(self, key): + if key == 'star': + event = Farstream.DTMFEvent.STAR + elif key == 'pound': + event = Farstream.DTMFEvent.POUND else: - event = int(event) + event = int(key) self.p2psession.start_telephony_event(event, 2)
def stop_dtmf(self):
===================================== gajim/data/gui/call_widget.ui ===================================== @@ -23,13 +23,15 @@ <property name="can-focus">False</property> <property name="border-width">6</property> <child> - <object class="GtkButton" id="1_button"> + <object class="GtkButton" id="button_1"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label1"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="halign">center</property> @@ -45,13 +47,15 @@ </packing> </child> <child> - <object class="GtkButton" id="2_button"> + <object class="GtkButton" id="button_2"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label2"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>2</b> abc</property> @@ -65,13 +69,15 @@ </packing> </child> <child> - <object class="GtkButton" id="3_button"> + <object class="GtkButton" id="button_3"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label3"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>3</b> def</property> @@ -85,13 +91,15 @@ </packing> </child> <child> - <object class="GtkButton" id="4_button"> + <object class="GtkButton" id="button_4"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label4"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>4</b> ghi</property> @@ -105,13 +113,15 @@ </packing> </child> <child> - <object class="GtkButton" id="5_button"> + <object class="GtkButton" id="button_5"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label5"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>5</b> jkl</property> @@ -125,13 +135,15 @@ </packing> </child> <child> - <object class="GtkButton" id="6_button"> + <object class="GtkButton" id="button_6"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label6"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>6</b> mno</property> @@ -145,13 +157,15 @@ </packing> </child> <child> - <object class="GtkButton" id="7_button"> + <object class="GtkButton" id="button_7"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label7"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>7</b> pqrs</property> @@ -165,13 +179,15 @@ </packing> </child> <child> - <object class="GtkButton" id="8_button"> + <object class="GtkButton" id="button_8"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label8"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>8</b> tuv</property> @@ -185,13 +201,15 @@ </packing> </child> <child> - <object class="GtkButton" id="9_button"> + <object class="GtkButton" id="button_9"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label9"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>9</b> wxyz</property> @@ -205,13 +223,15 @@ </packing> </child> <child> - <object class="GtkButton" id="*_button"> + <object class="GtkButton" id="button_star"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label10"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>*</b></property> @@ -225,13 +245,15 @@ </packing> </child> <child> - <object class="GtkButton" id="0_button"> + <object class="GtkButton" id="button_0"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label11"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>0</b></property> @@ -245,13 +267,15 @@ </packing> </child> <child> - <object class="GtkButton" id="#_button"> + <object class="GtkButton" id="button_pound"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> + <signal name="pressed" handler="_on_num_button_press" swapped="no"/> + <signal name="released" handler="_on_num_button_release" swapped="no"/> <child> - <object class="GtkLabel" id="label12"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes"><b>#</b></property>
===================================== gajim/gtk/builder.pyi ===================================== @@ -274,30 +274,18 @@ class CallWidgetBuilder(Builder): adjustment2: Gtk.Adjustment dtmf_popover: Gtk.Popover grid1: Gtk.Grid - 1_button: Gtk.Button - label1: Gtk.Label - 2_button: Gtk.Button - label2: Gtk.Label - 3_button: Gtk.Button - label3: Gtk.Label - 4_button: Gtk.Button - label4: Gtk.Label - 5_button: Gtk.Button - label5: Gtk.Label - 6_button: Gtk.Button - label6: Gtk.Label - 7_button: Gtk.Button - label7: Gtk.Label - 8_button: Gtk.Button - label8: Gtk.Label - 9_button: Gtk.Button - label9: Gtk.Label - *_button: Gtk.Button - label10: Gtk.Label - 0_button: Gtk.Button - label11: Gtk.Label - #_button: Gtk.Button - label12: Gtk.Label + button_1: Gtk.Button + button_2: Gtk.Button + button_3: Gtk.Button + button_4: Gtk.Button + button_5: Gtk.Button + button_6: Gtk.Button + button_7: Gtk.Button + button_8: Gtk.Button + button_9: Gtk.Button + button_star: Gtk.Button + button_0: Gtk.Button + button_pound: Gtk.Button av_box: Gtk.Box video_box: Gtk.Box outgoing_viewport: Gtk.Viewport
===================================== gajim/gtk/call_widget.py ===================================== @@ -13,6 +13,7 @@ # along with Gajim. If not, see http://www.gnu.org/licenses/.
from __future__ import annotations + from typing import Any from typing import List from typing import Optional @@ -21,7 +22,6 @@ import time
from gi.repository import GObject -from gi.repository import Gdk from gi.repository import Gtk
from nbxmpp.namespaces import Namespace @@ -68,7 +68,7 @@ def __init__(self, account: str, contact: types.BareContact) -> None: # having to show a new call row self._incoming_video_event = None
- self._jingle: dict(str, JingleObject) = { + self._jingle: dict[str, JingleObject] = { 'audio': JingleObject( JingleState.NULL, self._update_audio), @@ -83,14 +83,6 @@ def __init__(self, account: str, contact: types.BareContact) -> None: self.add(self._ui.av_box) self.connect('destroy', self._on_destroy)
- dtmf: list(str) = [ - '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '0', '#'] - for key in dtmf: - button = self._ui.get_object(key + '_button') - button.connect( - 'button-press-event', self._on_num_button_press, key) - button.connect('button-release-event', self._on_num_button_release) - self._ui.connect_signals(self)
def _on_destroy(self, *args: Any) -> None: @@ -178,17 +170,12 @@ def _store_outgoing_call(self, sid: str) -> None: KindConstant.CALL_OUTGOING, additional_data=additional_data)
- def _on_num_button_press(self, - _button: Gtk.Button, - _event: Gdk.EventButton, - num: int - ) -> None: - self._get_audio_content().start_dtmf(num) + def _on_num_button_press(self, button: Gtk.Button) -> None: + button_id = Gtk.Buildable.get_name(button) + key = button_id.split('_')[1] + self._get_audio_content().start_dtmf(key)
- def _on_num_button_release(self, - _button: Gtk.Button, - _event: Gdk.EventButton - ) -> None: + def _on_num_button_release(self, _button: Gtk.Button) -> None: self._get_audio_content().stop_dtmf()
def _on_mic_volume_changed(self,
===================================== scripts/dev/generate_ui_types.py ===================================== @@ -33,7 +33,7 @@ from gi.repository import GtkSource
-class Builder: ... +class Builder(Gtk.Builder): ... '''
CLASS_DEF = '\nclass %s(Builder):'
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/8bf3bfb135812bd9750f466c377a3f01...