pidgin/resources/display-window.ui

Sun, 10 Aug 2025 23:44:08 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sun, 10 Aug 2025 23:44:08 +0800
branch
purple_conversation_find_message_by_id
changeset 43309
099e1dfb856b
parent 43194
77aadc520684
permissions
-rw-r--r--

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 library; if not, see <https://www.gnu.org/licenses/>.
-->
<interface>
  <requires lib="gtk" version="4.0"/>
  <requires lib="Adw" version="1.0"/>
  <requires lib="pidgin" version="3.0"/>
  <!-- interface-license-type gplv2 -->
  <!-- interface-name Pidgin -->
  <!-- interface-description Internet Messenger -->
  <!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
  <menu id="conversation_menu">
    <section>
      <item>
        <attribute name="label" translatable="yes">Leave</attribute>
        <attribute name="action">conversation.leave</attribute>
        <attribute name="dynamic-target">id</attribute>
      </item>
    </section>
  </menu>
  <object class="GListStore" id="base_model">
    <property name="item-type">PidginDisplayItem</property>
    <child>
      <object class="PidginDisplayItem">
        <property name="icon-name">system-users-symbolic</property>
        <property name="id">__contacts__</property>
        <property name="title" translatable="yes">Contacts</property>
        <property name="widget">
          <object class="GtkScrolledWindow">
            <child>
              <object class="PidginContactList" id="contact_list"/>
            </child>
          </object>
        </property>
      </object>
    </child>
    <child>
      <object class="PidginDisplayItem">
        <property name="icon-name">emblem-important-symbolic</property>
        <property name="id">__notifications__</property>
        <property name="title" translatable="yes">Notifications</property>
        <property name="widget">
          <object class="GtkScrolledWindow">
            <child>
              <object class="PidginNotificationList" id="notification_list">
                <property name="orientation">vertical</property>
              </object>
            </child>
          </object>
        </property>
        <binding name="needs-attention">
          <lookup name="needs-attention">notification_list</lookup>
        </binding>
        <binding name="badge-number">
          <lookup name="notification-count">notification_list</lookup>
        </binding>
      </object>
    </child>
    <child>
      <object class="PidginDisplayItem">
        <property name="icon-name">application-x-addon-symbolic</property>
        <property name="id">__plugins__</property>
        <property name="title" translatable="yes">Plugins</property>
        <property name="menu">
          <object class="PidginPluginsMenu"/>
        </property>
        <property name="widget">
          <object class="GtkBox">
            <property name="orientation">vertical</property>
            <child>
              <object class="PidginInfoPane">
                <property name="title" translatable="yes">Plugins</property>
                <child>
                  <object class="GtkBox">
                    <property name="margin-end">6</property>
                    <property name="orientation">horizontal</property>
                    <property name="spacing">6</property>
                    <property name="valign">center</property>
                    <child>
                      <object class="GtkButton">
                        <property name="tooltip-text" translatable="yes">Refresh</property>
                        <!-- we can't actually refresh the gplugin pluging list right now, so we just show an insensitive button to remind us to fix it later. -->
                        <property name="sensitive">false</property>
                        <child>
                          <object class="GtkImage">
                            <property name="icon-name">view-refresh-symbolic</property>
                          </object>
                        </child>
                      </object>
                    </child>
                  </object>
                </child>
              </object>
            </child>
            <child>
              <object class="GPluginGtkView" id="plugin_list">
                <property name="orientation">vertical</property>
              </object>
            </child>
          </object>
        </property>
      </object>
    </child>
    <child>
      <object class="PidginDisplayItem" id="conversations_item">
        <property name="icon-name">user-available-symbolic</property>
        <property name="id">__conversations__</property>
        <property name="title" translatable="yes">Conversations</property>
        <property name="widget">
          <object class="AdwStatusPage">
            <property name="icon-name">mail-send-symbolic</property>
            <property name="title" translatable="yes">Conversations</property>
            <property name="description" translatable="yes">When you send a message to a friend or join a chat it will show up here!</property>
          </object>
        </property>
        <property name="children">
          <object class="GListStore" id="conversation_model">
            <property name="item-type">PidginDisplayItem</property>
          </object>
        </property>
      </object>
    </child>
  </object>
  <template class="PidginDisplayWindow" parent="GtkApplicationWindow">
    <property name="show-menubar">1</property>
    <property name="default-height">450</property>
    <property name="default-width">950</property>
    <child>
      <object class="GtkEventControllerKey">
        <property name="propagation-phase">capture</property>
        <signal name="key-pressed" handler="pidgin_display_window_key_pressed_cb"/>
      </object>
    </child>
    <child>
      <object class="GtkBox" id="vbox">
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkPaned" id="paned">
            <property name="vexpand">1</property>
            <property name="focusable">1</property>
            <property name="position">220</property>
            <child>
              <object class="GtkBox">
                <property name="margin-top">6</property>
                <property name="margin-start">6</property>
                <property name="margin-end">6</property>
                <property name="margin-bottom">6</property>
                <property name="orientation">vertical</property>
                <property name="spacing">6</property>
                <child>
                  <object class="GtkScrolledWindow">
                    <property name="vexpand">1</property>
                    <property name="focusable">1</property>
                    <property name="propagate-natural-width">1</property>
                    <style>
                      <class name="sidebar"/>
                    </style>
                    <child>
                      <object class="GtkListView" id="view">
                        <property name="model">
                          <object class="GtkSingleSelection" id="selection_model">
                            <property name="autoselect">1</property>
                            <property name="can-unselect">0</property>
                            <signal name="notify::selected-item" handler="pidgin_display_window_selected_item_changed_cb"/>
                          </object>
                        </property>
                        <property name="factory">
                          <object class="GtkBuilderListItemFactory">
                            <property name="resource">/im/pidgin/Pidgin3/display-item.ui</property>
                          </object>
                        </property>
                      </object>
                    </child>
                  </object>
                </child>
              </object>
            </child>
            <child>
              <object class="AdwBin" id="bin">
                <property name="vexpand">1</property>
                <property name="hexpand">1</property>
              </object>
            </child>
          </object>
        </child>
      </object>
    </child>
  </template>
</interface>

mercurial