Sun, 10 Aug 2025 23:44:08 +0800
Add Purple.Conversation.find_message_by_id
The method was added so that a protocol or plugin could easily lookup
for the reference for a message. This will be especially useful when a
protocol received a quoted message but only with an id.
<?xml version="1.0" encoding="UTF-8"?> <!-- Pidgin - Internet Messenger Copyright (C) Pidgin Developers <devel@pidgin.im> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see <https://www.gnu.org/licenses/>. --> <interface> <requires lib="gtk" version="4.0"/> <requires lib="Adw" version="1.0"/> <!-- interface-license-type gplv2 --> <!-- interface-name Pidgin --> <!-- interface-description Internet Messenger --> <!-- interface-copyright Pidgin Developers <devel@pidgin.im> --> <object class="GtkAdjustment" id="adjustment1"> <property name="upper">100</property> <property name="step-increment">1</property> <property name="page-increment">10</property> </object> <object class="GtkAdjustment" id="adjustment2"> <property name="upper">100</property> <property name="step-increment">1</property> <property name="page-increment">10</property> </object> <object class="GtkBuilderListItemFactory" id="element-info-factory"> <property name="bytes"> <![CDATA[ <?xml version="1.0" encoding="UTF-8"?> <interface> <template class="GtkListItem"> <property name="child"> <object class="GtkLabel"> <property name="xalign">0</property> <binding name="label"> <lookup name="name" type="PurpleMediaElementInfo"> <lookup name="item">GtkListItem</lookup> </lookup> </binding> </object> </property> </template> </interface> ]]> </property> </object> <template class="PidginVVPrefs" parent="AdwPreferencesPage"> <property name="icon-name">audio-card-symbolic</property> <property name="title" translatable="yes">Voice/Video</property> <child> <object class="AdwPreferencesGroup"> <property name="title" translatable="yes">Audio</property> <child> <object class="AdwComboRow" id="voice.input"> <property name="title" translatable="yes" context="Input for Audio">Input Device</property> <property name="factory">element-info-factory</property> <property name="model"> <object class="GListStore"> <property name="item-type">PurpleMediaElementInfo</property> </object> </property> </object> </child> <child> <object class="AdwComboRow" id="voice.output"> <property name="title" translatable="yes" context="Device for Audio Output">Output Device</property> <property name="factory">element-info-factory</property> <property name="model"> <object class="GListStore"> <property name="item-type">PurpleMediaElementInfo</property> </object> </property> </object> </child> <child> <object class="AdwActionRow"> <property name="activatable-widget">voice.volume</property> <property name="title" translatable="yes">Volume</property> <child> <object class="GtkVolumeButton" id="voice.volume"> <property name="focusable">1</property> <property name="focus-on-click">0</property> <property name="receives-default">1</property> <property name="orientation">vertical</property> <property name="valign">center</property> <property name="adjustment">adjustment2</property> <signal name="value-changed" handler="volume_changed_cb" swapped="no"/> </object> </child> </object> </child> <child> <object class="AdwActionRow" id="voice.threshold_row"> <property name="activatable-widget">voice.threshold</property> <property name="title" translatable="yes">Silence threshold</property> <child> <object class="GtkScale" id="voice.threshold"> <property name="focusable">1</property> <property name="hexpand">1</property> <property name="valign">center</property> <property name="adjustment">adjustment1</property> <property name="round-digits">0</property> <property name="digits">0</property> <signal name="value-changed" handler="threshold_value_changed_cb" object="PidginVVPrefs" swapped="no"/> </object> </child> </object> </child> <child> <object class="AdwPreferencesRow"> <property name="margin-bottom">12</property> <property name="margin-end">12</property> <property name="margin-start">12</property> <property name="margin-top">12</property> <child> <object class="GtkBox"> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkToggleButton" id="voice.test"> <property name="label" translatable="yes">Test Audio</property> <property name="focusable">1</property> <property name="receives-default">1</property> <signal name="toggled" handler="toggle_voice_test_cb" object="PidginVVPrefs" swapped="no"/> </object> </child> <child> <object class="GtkBox"> <property name="spacing">6</property> <child> <object class="GtkLevelBar" id="voice.level"> <property name="hexpand">1</property> <!-- Keep this maximum in sync with MAX_AUDIO_LEVEL in pidgin/prefs/pidginvvprefs.c --> <property name="max-value">19</property> <property name="mode">discrete</property> <property name="valign">center</property> </object> </child> <child> <object class="GtkLabel" id="voice.drop"> </object> </child> </object> </child> </object> </child> </object> </child> </object> </child> <child> <object class="AdwPreferencesGroup"> <property name="title" translatable="yes">Video</property> <child> <object class="AdwComboRow" id="video.input"> <property name="title" translatable="yes" context="Device for Video Input">Input Device</property> <property name="factory">element-info-factory</property> <property name="model"> <object class="GListStore"> <property name="item-type">PurpleMediaElementInfo</property> </object> </property> </object> </child> <child> <object class="AdwComboRow" id="video.output"> <property name="title" translatable="yes" context="Device for Video Output">Output Device</property> <property name="factory">element-info-factory</property> <property name="model"> <object class="GListStore"> <property name="item-type">PurpleMediaElementInfo</property> </object> </property> </object> </child> <child> <object class="AdwPreferencesRow"> <property name="margin-bottom">12</property> <property name="margin-end">12</property> <property name="margin-start">12</property> <property name="margin-top">12</property> <child> <object class="GtkBox"> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkToggleButton" id="video.test"> <property name="label" translatable="yes">Test Video</property> <property name="focusable">1</property> <property name="receives-default">1</property> <signal name="toggled" handler="toggle_video_test_cb" object="PidginVVPrefs" swapped="no"/> </object> </child> <child> <object class="GtkPicture" id="video.frame"> <property name="keep-aspect-ratio">1</property> </object> </child> </object> </child> </object> </child> </object> </child> </template> </interface>