Merge branch 'master' of dev.gajim.org:gajim/gajim

This commit is contained in:
Yann Leboulanger 2017-06-14 15:10:26 +02:00
commit 4f7b72883d
13 changed files with 200 additions and 196 deletions

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 --> <!-- Generated with glade 3.20.0 -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk+" version="3.12"/>
<object class="GtkGrid" id="tooltip_grid"> <object class="GtkGrid" id="tooltip_grid">
@ -10,8 +10,8 @@
<object class="GtkLabel" id="nick"> <object class="GtkLabel" id="nick">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="xalign">0</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
</attributes> </attributes>
@ -26,10 +26,11 @@
<object class="GtkLabel" id="status"> <object class="GtkLabel" id="status">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="wrap">True</property> <property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="max_width_chars">40</property> <property name="max_width_chars">40</property>
<property name="xalign">0</property>
<attributes> <attributes>
<attribute name="style" value="italic"/> <attribute name="style" value="italic"/>
</attributes> </attributes>
@ -44,9 +45,9 @@
<object class="GtkLabel" id="jid_label"> <object class="GtkLabel" id="jid_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="label" translatable="yes">Jabber ID:</property> <property name="label" translatable="yes">Jabber ID:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -69,9 +70,9 @@
<object class="GtkLabel" id="resource_label"> <object class="GtkLabel" id="resource_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="label" translatable="yes">Resource:</property> <property name="label" translatable="yes">Resource:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -82,8 +83,8 @@
<object class="GtkLabel" id="affiliation"> <object class="GtkLabel" id="affiliation">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -95,8 +96,8 @@
<object class="GtkLabel" id="user_show"> <object class="GtkLabel" id="user_show">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -108,6 +109,7 @@
<object class="GtkLabel" id="fillelement"> <object class="GtkLabel" id="fillelement">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
</object> </object>
<packing> <packing>
@ -120,8 +122,8 @@
<object class="GtkLabel" id="resource"> <object class="GtkLabel" id="resource">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@ -132,8 +134,8 @@
<object class="GtkLabel" id="jid"> <object class="GtkLabel" id="jid">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="xalign">0</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
</attributes> </attributes>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 --> <!-- Generated with glade 3.20.0 -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="vcard_information_window"> <object class="GtkWindow" id="vcard_information_window">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">12</property> <property name="border_width">12</property>
@ -20,8 +20,8 @@
<object class="GtkLabel" id="nickname_label"> <object class="GtkLabel" id="nickname_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="halign">start</property>
<property name="selectable">True</property> <property name="selectable">True</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -50,9 +50,10 @@
<object class="GtkLabel" id="JabberID_Label"> <object class="GtkLabel" id="JabberID_Label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">&lt;b&gt;Jabber ID:&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;Jabber ID:&lt;/b&gt;</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="xalign">1</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -63,10 +64,10 @@
<object class="GtkLabel" id="Resource_Label"> <object class="GtkLabel" id="Resource_Label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">&lt;b&gt;Resource:&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;Resource:&lt;/b&gt;</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -77,10 +78,10 @@
<object class="GtkLabel" id="Status_Label"> <object class="GtkLabel" id="Status_Label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">&lt;b&gt;Status:&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;Status:&lt;/b&gt;</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -91,10 +92,10 @@
<object class="GtkLabel" id="Client_Label"> <object class="GtkLabel" id="Client_Label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">&lt;b&gt;Client:&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;Client:&lt;/b&gt;</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -105,10 +106,10 @@
<object class="GtkLabel" id="System_Label"> <object class="GtkLabel" id="System_Label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">&lt;b&gt;System:&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;System:&lt;/b&gt;</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -119,10 +120,10 @@
<object class="GtkLabel" id="Time_Label"> <object class="GtkLabel" id="Time_Label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">&lt;b&gt;Contact time:&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;Contact time:&lt;/b&gt;</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@ -133,10 +134,11 @@
<object class="GtkLabel" id="jid_label"> <object class="GtkLabel" id="jid_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="selectable">True</property> <property name="selectable">True</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@ -153,11 +155,11 @@
<object class="GtkLabel" id="resource_prio_label"> <object class="GtkLabel" id="resource_prio_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="selectable">True</property> <property name="selectable">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
</child> </child>
</object> </object>
@ -166,38 +168,15 @@
<property name="top_attach">1</property> <property name="top_attach">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkEventBox" id="status_label_eventbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="visible_window">False</property>
<child>
<object class="GtkLabel" id="status_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
</packing>
</child>
<child> <child>
<object class="GtkLabel" id="client_name_version_label"> <object class="GtkLabel" id="client_name_version_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="selectable">True</property> <property name="selectable">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@ -208,12 +187,12 @@
<object class="GtkLabel" id="os_label"> <object class="GtkLabel" id="os_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="wrap">True</property> <property name="wrap">True</property>
<property name="selectable">True</property> <property name="selectable">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@ -224,11 +203,11 @@
<object class="GtkLabel" id="time_label"> <object class="GtkLabel" id="time_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="selectable">True</property> <property name="selectable">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
@ -240,16 +219,115 @@
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="no_show_all">True</property> <property name="no_show_all">True</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;User avatar:&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;User avatar:&lt;/b&gt;</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="left_attach">2</property> <property name="left_attach">2</property>
<property name="top_attach">0</property> <property name="top_attach">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="custom_avatar_label">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="label" translatable="yes">&lt;b&gt;Configured avatar:&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="custom_avatar_image">
<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="no_show_all">True</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="stock">gtk-missing-image</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">1</property>
<property name="height">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ask_title_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes" comments="Given Name">&lt;b&gt;Ask:&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="subscription_title_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes" comments="Family Name">&lt;b&gt;Subscription:&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="status_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="selectable">True</property>
<property name="width_chars">20</property>
<property name="max_width_chars">30</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="subscription_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">6</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ask_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin_left">5</property>
<property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">7</property>
</packing>
</child>
<child> <child>
<object class="GtkEventBox" id="PHOTO_eventbox"> <object class="GtkEventBox" id="PHOTO_eventbox">
<property name="visible">True</property> <property name="visible">True</property>
@ -261,8 +339,8 @@
<object class="GtkImage" id="PHOTO_image"> <object class="GtkImage" id="PHOTO_image">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="no_show_all">True</property> <property name="no_show_all">True</property>
<property name="xalign">0</property> <property name="halign">start</property>
<property name="yalign">0</property> <property name="valign">start</property>
<property name="stock">gtk-missing-image</property> <property name="stock">gtk-missing-image</property>
</object> </object>
</child> </child>
@ -273,99 +351,6 @@
<property name="height">7</property> <property name="height">7</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="custom_avatar_label">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="label" translatable="yes">&lt;b&gt;Configured avatar:&lt;/b&gt;</property>
<property name="use_markup">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="custom_avatar_image">
<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="no_show_all">True</property>
<property name="xalign">0</property>
<property name="stock">gtk-missing-image</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">1</property>
<property name="height">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ask_title_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes" comments="Given Name">&lt;b&gt;Ask:&lt;/b&gt;</property>
<property name="use_markup">True</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">7</property>
</packing>
</child>
<child>
<object class="GtkEventBox" id="ask_label_eventbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="visible_window">False</property>
<child>
<object class="GtkLabel" id="ask_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="xalign">0</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="subscription_title_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes" comments="Family Name">&lt;b&gt;Subscription:&lt;/b&gt;</property>
<property name="use_markup">True</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
</packing>
</child>
<child>
<object class="GtkEventBox" id="subscription_label_eventbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="visible_window">False</property>
<child>
<object class="GtkLabel" id="subscription_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xpad">5</property>
<property name="xalign">0</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">6</property>
</packing>
</child>
</object> </object>
</child> </child>
<child type="tab"> <child type="tab">
@ -373,8 +358,6 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Contact</property> <property name="label" translatable="yes">Contact</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="tab_fill">False</property> <property name="tab_fill">False</property>
@ -952,8 +935,6 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Personal Info</property> <property name="label" translatable="yes">Personal Info</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="position">1</property> <property name="position">1</property>
@ -1353,8 +1334,6 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Work</property> <property name="label" translatable="yes">Work</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="position">2</property> <property name="position">2</property>
@ -1387,8 +1366,6 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes" comments="&quot;About&quot; is the text of a tab of vcard window">About</property> <property name="label" translatable="yes" comments="&quot;About&quot; is the text of a tab of vcard window">About</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="position">3</property> <property name="position">3</property>

View file

@ -8,6 +8,7 @@
--> -->
<query xmlns:reg="urn:xmpp:vcard:registration:1"> <query xmlns:reg="urn:xmpp:vcard:registration:1">
<item jid="0nl1ne.at" /> <item jid="0nl1ne.at" />
<item jid="404.city" />
<item jid="brauchen.info" /> <item jid="brauchen.info" />
<item jid="chatme.im" /> <item jid="chatme.im" />
<item jid="climm.org" /> <item jid="climm.org" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

View file

@ -287,6 +287,7 @@ class ChatControl(ChatControlBase):
self.encryption_menu = self.xml.get_object('encryption_menu') self.encryption_menu = self.xml.get_object('encryption_menu')
self.encryption_menu.set_menu_model( self.encryption_menu.set_menu_model(
gui_menu_builder.get_encryption_menu(self.contact, self.type_id)) gui_menu_builder.get_encryption_menu(self.contact, self.type_id))
self.set_encryption_menu_icon()
# restore previous conversation # restore previous conversation
self.restore_conversation() self.restore_conversation()
self.msg_textview.grab_focus() self.msg_textview.grab_focus()
@ -990,7 +991,7 @@ class ChatControl(ChatControlBase):
def get_our_nick(self): def get_our_nick(self):
return gajim.nicks[self.account] return gajim.nicks[self.account]
def print_conversation(self, text, frm='', tim=None, encrypted=False, def print_conversation(self, text, frm='', tim=None, encrypted=None,
subject=None, xhtml=None, simple=False, xep0184_id=None, subject=None, xhtml=None, simple=False, xep0184_id=None,
displaymarking=None, msg_log_id=None, correct_id=None, displaymarking=None, msg_log_id=None, correct_id=None,
msg_stanza_id=None, additional_data=None): msg_stanza_id=None, additional_data=None):
@ -1023,12 +1024,6 @@ class ChatControl(ChatControlBase):
kind = 'info' kind = 'info'
name = '' name = ''
else: else:
if self.session and self.session.enable_encryption:
# ESessions
if not encrypted:
msg = _('The following message was NOT encrypted')
ChatControlBase.print_conversation_line(self, msg, 'status',
'', tim)
if not frm: if not frm:
kind = 'incoming' kind = 'incoming'
name = contact.get_shown_name() name = contact.get_shown_name()
@ -1048,7 +1043,8 @@ class ChatControl(ChatControlBase):
subject=subject, old_kind=self.old_msg_kind, xhtml=xhtml, subject=subject, old_kind=self.old_msg_kind, xhtml=xhtml,
simple=simple, xep0184_id=xep0184_id, displaymarking=displaymarking, simple=simple, xep0184_id=xep0184_id, displaymarking=displaymarking,
msg_log_id=msg_log_id, msg_stanza_id=msg_stanza_id, msg_log_id=msg_log_id, msg_stanza_id=msg_stanza_id,
correct_id=correct_id, additional_data=additional_data) correct_id=correct_id, additional_data=additional_data,
encrypted=encrypted)
if text.startswith('/me ') or text.startswith('/me\n'): if text.startswith('/me ') or text.startswith('/me\n'):
self.old_msg_kind = None self.old_msg_kind = None
else: else:

View file

@ -36,6 +36,7 @@ from gi.repository import GObject
from gi.repository import GLib from gi.repository import GLib
from gi.repository import Gio from gi.repository import Gio
import gtkgui_helpers import gtkgui_helpers
from gtkgui_helpers import Color
import message_control import message_control
import dialogs import dialogs
import history_window import history_window
@ -442,6 +443,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.terminate_esessions() self.terminate_esessions()
action.set_state(param) action.set_state(param)
self.set_encryption_state(encryption) self.set_encryption_state(encryption)
self.set_encryption_menu_icon()
self.set_lock_image() self.set_lock_image()
def set_encryption_state(self, encryption): def set_encryption_state(self, encryption):
@ -455,6 +457,19 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
state = gajim.config.get_per('encryption', config_key, 'encryption') state = gajim.config.get_per('encryption', config_key, 'encryption')
return state or None return state or None
def set_encryption_menu_icon(self):
for child in self.encryption_menu.get_children():
if isinstance(child, Gtk.Image):
image = child
break
if not self.encryption:
icon = gtkgui_helpers.get_icon_pixmap(
'channel-insecure-symbolic', color=[Color.BLACK])
else:
icon = gtkgui_helpers.get_icon_pixmap('channel-secure-symbolic')
image.set_from_pixbuf(icon)
def set_speller(self): def set_speller(self):
# now set the one the user selected # now set the one the user selected
per_type = 'contacts' per_type = 'contacts'
@ -894,7 +909,8 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
other_tags_for_name=[], other_tags_for_time=[], other_tags_for_text=[], other_tags_for_name=[], other_tags_for_time=[], other_tags_for_text=[],
count_as_new=True, subject=None, old_kind=None, xhtml=None, simple=False, count_as_new=True, subject=None, old_kind=None, xhtml=None, simple=False,
xep0184_id=None, graphics=True, displaymarking=None, msg_log_id=None, xep0184_id=None, graphics=True, displaymarking=None, msg_log_id=None,
msg_stanza_id=None, correct_id=None, additional_data=None): msg_stanza_id=None, correct_id=None, additional_data=None,
encrypted=None):
""" """
Print 'chat' type messages Print 'chat' type messages
correct_id = (message_id, correct_id) correct_id = (message_id, correct_id)
@ -919,7 +935,8 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
other_tags_for_name, other_tags_for_time, other_tags_for_text, other_tags_for_name, other_tags_for_time, other_tags_for_text,
subject, old_kind, xhtml, simple=simple, graphics=graphics, subject, old_kind, xhtml, simple=simple, graphics=graphics,
displaymarking=displaymarking, msg_stanza_id=msg_stanza_id, displaymarking=displaymarking, msg_stanza_id=msg_stanza_id,
correct_id=correct_id, additional_data=additional_data) correct_id=correct_id, additional_data=additional_data,
encrypted=encrypted)
if xep0184_id is not None: if xep0184_id is not None:
textview.add_xep0184_mark(xep0184_id) textview.add_xep0184_mark(xep0184_id)

View file

@ -1497,6 +1497,7 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent):
self.nickname = self.msg_obj.resource self.nickname = self.msg_obj.resource
self.timestamp = self.msg_obj.timestamp self.timestamp = self.msg_obj.timestamp
self.xhtml_msgtxt = self.stanza.getXHTML() self.xhtml_msgtxt = self.stanza.getXHTML()
self.encrypted = self.msg_obj.encrypted
self.correct_id = None # XEP-0308 self.correct_id = None # XEP-0308
if gajim.config.get('ignore_incoming_xhtml'): if gajim.config.get('ignore_incoming_xhtml'):

View file

@ -2935,7 +2935,6 @@ class GroupchatConfigWindow:
self.affiliation_treeview[affiliation].append_column(col) self.affiliation_treeview[affiliation].append_column(col)
sw = Gtk.ScrolledWindow() sw = Gtk.ScrolledWindow()
sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
sw.add(self.affiliation_treeview[affiliation]) sw.add(self.affiliation_treeview[affiliation])
add_on_vbox.pack_start(sw, True, True, 0) add_on_vbox.pack_start(sw, True, True, 0)
gajim.connections[self.account].get_affiliation_list(self.room_jid, gajim.connections[self.account].get_affiliation_list(self.room_jid,

View file

@ -170,6 +170,8 @@ class ConversationTextview(GObject.GObject):
MESSAGE_CORRECTED_PIXBUF = gtkgui_helpers.get_icon_pixmap( MESSAGE_CORRECTED_PIXBUF = gtkgui_helpers.get_icon_pixmap(
'document-edit-symbolic') 'document-edit-symbolic')
MESSAGE_ENCRYPTED_PIXBUF = gtkgui_helpers.get_icon_pixmap(
'channel-secure-croped-symbolic')
# smooth scroll constants # smooth scroll constants
MAX_SCROLL_TIME = 0.4 # seconds MAX_SCROLL_TIME = 0.4 # seconds
@ -1100,7 +1102,8 @@ class ConversationTextview(GObject.GObject):
def print_conversation_line(self, text, jid, kind, name, tim, def print_conversation_line(self, text, jid, kind, name, tim,
other_tags_for_name=None, other_tags_for_time=None, other_tags_for_text=None, other_tags_for_name=None, other_tags_for_time=None, other_tags_for_text=None,
subject=None, old_kind=None, xhtml=None, simple=False, graphics=True, subject=None, old_kind=None, xhtml=None, simple=False, graphics=True,
displaymarking=None, msg_stanza_id=None, correct_id=None, additional_data=None): displaymarking=None, msg_stanza_id=None, correct_id=None, additional_data=None,
encrypted=None):
""" """
Print 'chat' type messages Print 'chat' type messages
""" """
@ -1168,6 +1171,9 @@ class ConversationTextview(GObject.GObject):
self.print_time(text, kind, tim, simple, direction_mark, self.print_time(text, kind, tim, simple, direction_mark,
other_tags_for_time, iter_) other_tags_for_time, iter_)
if encrypted:
buffer_.insert_pixbuf(iter_, self.MESSAGE_ENCRYPTED_PIXBUF)
# If there's a displaymarking, print it here. # If there's a displaymarking, print it here.
if displaymarking: if displaymarking:
self.print_displaymarking(displaymarking, iter_=iter_) self.print_displaymarking(displaymarking, iter_=iter_)

View file

@ -493,6 +493,7 @@ class GroupchatControl(ChatControlBase):
self.encryption_menu = self.xml.get_object('encryption_menu') self.encryption_menu = self.xml.get_object('encryption_menu')
self.encryption_menu.set_menu_model( self.encryption_menu.set_menu_model(
gui_menu_builder.get_encryption_menu(self.contact, self.type_id)) gui_menu_builder.get_encryption_menu(self.contact, self.type_id))
self.set_encryption_menu_icon()
gajim.ged.register_event_handler('gc-presence-received', ged.GUI1, gajim.ged.register_event_handler('gc-presence-received', ged.GUI1,
self._nec_gc_presence_received) self._nec_gc_presence_received)
@ -1090,14 +1091,14 @@ class GroupchatControl(ChatControlBase):
# don't print xhtml if it's an old message. # don't print xhtml if it's an old message.
# Like that xhtml messages are grayed too. # Like that xhtml messages are grayed too.
self.print_old_conversation(obj.msgtxt, contact=obj.nick, self.print_old_conversation(obj.msgtxt, contact=obj.nick,
tim=obj.timestamp, xhtml=None, tim=obj.timestamp, xhtml=None, encrypted=obj.encrypted,
displaymarking=obj.displaymarking, msg_stanza_id=obj.id_) displaymarking=obj.displaymarking, msg_stanza_id=obj.id_)
else: else:
if obj.nick == self.nick: if obj.nick == self.nick:
self.last_sent_txt = obj.msgtxt self.last_sent_txt = obj.msgtxt
self.print_conversation(obj.msgtxt, contact=obj.nick, self.print_conversation(obj.msgtxt, contact=obj.nick,
tim=obj.timestamp, xhtml=obj.xhtml_msgtxt, tim=obj.timestamp, xhtml=obj.xhtml_msgtxt,
displaymarking=obj.displaymarking, displaymarking=obj.displaymarking, encrypted=obj.encrypted,
correct_id=obj.correct_id, msg_stanza_id=obj.id_) correct_id=obj.correct_id, msg_stanza_id=obj.id_)
obj.needs_highlight = self.needs_visual_notification(obj.msgtxt) obj.needs_highlight = self.needs_visual_notification(obj.msgtxt)
@ -1153,7 +1154,7 @@ class GroupchatControl(ChatControlBase):
return None return None
def print_old_conversation(self, text, contact='', tim=None, xhtml = None, def print_old_conversation(self, text, contact='', tim=None, xhtml = None,
displaymarking=None, msg_stanza_id=None): displaymarking=None, msg_stanza_id=None, encrypted=None):
if contact: if contact:
if contact == self.nick: # it's us if contact == self.nick: # it's us
kind = 'outgoing' kind = 'outgoing'
@ -1165,13 +1166,16 @@ class GroupchatControl(ChatControlBase):
small_attr = ['small'] small_attr = ['small']
else: else:
small_attr = [] small_attr = []
ChatControlBase.print_conversation_line(self, text, kind, contact, tim, ChatControlBase.print_conversation_line(self, text, kind, contact, tim,
small_attr, small_attr + ['restored_message'], small_attr, small_attr + ['restored_message'],
small_attr + ['restored_message'], count_as_new=False, xhtml=xhtml, small_attr + ['restored_message'], count_as_new=False, xhtml=xhtml,
displaymarking=displaymarking, msg_stanza_id=msg_stanza_id) displaymarking=displaymarking, msg_stanza_id=msg_stanza_id,
encrypted=encrypted)
def print_conversation(self, text, contact='', tim=None, xhtml=None, def print_conversation(self, text, contact='', tim=None, xhtml=None,
graphics=True, displaymarking=None, correct_id=None, msg_stanza_id=None): graphics=True, displaymarking=None, correct_id=None, msg_stanza_id=None,
encrypted=None):
""" """
Print a line in the conversation Print a line in the conversation
@ -1233,7 +1237,7 @@ class GroupchatControl(ChatControlBase):
ChatControlBase.print_conversation_line(self, text, kind, contact, tim, ChatControlBase.print_conversation_line(self, text, kind, contact, tim,
other_tags_for_name, [], other_tags_for_text, xhtml=xhtml, other_tags_for_name, [], other_tags_for_text, xhtml=xhtml,
graphics=graphics, displaymarking=displaymarking, graphics=graphics, displaymarking=displaymarking,
correct_id=correct_id, msg_stanza_id=msg_stanza_id) correct_id=correct_id, msg_stanza_id=msg_stanza_id, encrypted=encrypted)
def get_nb_unread(self): def get_nb_unread(self):
type_events = ['printed_marked_gc_msg'] type_events = ['printed_marked_gc_msg']

View file

@ -53,9 +53,16 @@ from common import configpaths
gtk_icon_theme = Gtk.IconTheme.get_default() gtk_icon_theme = Gtk.IconTheme.get_default()
gtk_icon_theme.append_search_path(gajim.ICONS_DIR) gtk_icon_theme.append_search_path(gajim.ICONS_DIR)
def get_icon_pixmap(icon_name, size=16, quiet=False): class Color:
BLACK = Gdk.RGBA(red=0, green=0, blue=0, alpha=1)
def get_icon_pixmap(icon_name, size=16, color=None, quiet=False):
try: try:
return gtk_icon_theme.load_icon(icon_name, size, 0) iconinfo = gtk_icon_theme.lookup_icon(icon_name, size, 0)
if color:
pixbuf, was_symbolic = iconinfo.load_symbolic(*color)
return pixbuf
return iconinfo.load_icon()
except GLib.GError as e: except GLib.GError as e:
if not quiet: if not quiet:
log.error('Unable to load icon %s: %s' % (icon_name, str(e))) log.error('Unable to load icon %s: %s' % (icon_name, str(e)))

View file

@ -31,6 +31,7 @@
from gi.repository import Gtk from gi.repository import Gtk
from gi.repository import Gdk from gi.repository import Gdk
from gi.repository import GLib from gi.repository import GLib
from gi.repository import Pango
import os import os
import time import time
from datetime import datetime from datetime import datetime
@ -207,6 +208,7 @@ class StatusTable:
self.table.insert_row(self.current_row) self.table.insert_row(self.current_row)
self.text_label = Gtk.Label() self.text_label = Gtk.Label()
self.text_label.set_line_wrap(True) self.text_label.set_line_wrap(True)
self.text_label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
self.text_label.set_max_width_chars(35) self.text_label.set_max_width_chars(35)
self.text_label.set_halign(Gtk.Align.START) self.text_label.set_halign(Gtk.Align.START)
self.text_label.set_valign(Gtk.Align.START) self.text_label.set_valign(Gtk.Align.START)

View file

@ -404,11 +404,8 @@ class VcardWindow:
if self.contact.status: if self.contact.status:
stats += ': ' + self.contact.status stats += ': ' + self.contact.status
status_label = self.xml.get_object('status_label') status_label = self.xml.get_object('status_label')
status_label.set_max_width_chars(15)
status_label.set_text(stats) status_label.set_text(stats)
status_label.set_tooltip_text(stats)
status_label_eventbox = self.xml.get_object('status_label_eventbox')
status_label_eventbox.set_tooltip_text(stats)
def fill_jabber_page(self): def fill_jabber_page(self):
self.xml.get_object('nickname_label').set_markup( self.xml.get_object('nickname_label').set_markup(
@ -430,7 +427,6 @@ class VcardWindow:
else: else:
uf_sub = helpers.get_uf_sub(self.contact.sub) uf_sub = helpers.get_uf_sub(self.contact.sub)
subscription_label.set_text(uf_sub) subscription_label.set_text(uf_sub)
eb = self.xml.get_object('subscription_label_eventbox')
if self.contact.sub == 'from': if self.contact.sub == 'from':
tt_text = _("This contact is interested in your presence information, but you are not interested in their presence") tt_text = _("This contact is interested in your presence information, but you are not interested in their presence")
elif self.contact.sub == 'to': elif self.contact.sub == 'to':
@ -439,16 +435,15 @@ class VcardWindow:
tt_text = _("The contact and you want to exchange presence information") tt_text = _("The contact and you want to exchange presence information")
else: # None else: # None
tt_text = _("You and the contact have a mutual disinterest in each-others presence information") tt_text = _("You and the contact have a mutual disinterest in each-others presence information")
eb.set_tooltip_text(tt_text) subscription_label.set_tooltip_text(tt_text)
uf_ask = helpers.get_uf_ask(self.contact.ask) uf_ask = helpers.get_uf_ask(self.contact.ask)
ask_label.set_text(uf_ask) ask_label.set_text(uf_ask)
eb = self.xml.get_object('ask_label_eventbox')
if self.contact.ask == 'subscribe': if self.contact.ask == 'subscribe':
tt_text = _("You are waiting contact's answer about your subscription request") tt_text = _("You are waiting contact's answer about your subscription request")
else: else:
tt_text = _("There is no pending subscription request.") tt_text = _("There is no pending subscription request.")
eb.set_tooltip_text(tt_text) ask_label.set_tooltip_text(tt_text)
resources = '%s (%s)' % (self.contact.resource, str( resources = '%s (%s)' % (self.contact.resource, str(
self.contact.priority)) self.contact.priority))
@ -613,11 +608,8 @@ class ZeroconfVcardWindow:
if self.contact.status: if self.contact.status:
stats += ': ' + self.contact.status stats += ': ' + self.contact.status
status_label = self.xml.get_object('status_label') status_label = self.xml.get_object('status_label')
status_label.set_max_width_chars(15)
status_label.set_text(stats) status_label.set_text(stats)
status_label.set_tooltip_text(stats)
status_label_eventbox = self.xml.get_object('status_label_eventbox')
status_label_eventbox.set_tooltip_text(stats)
def fill_contact_page(self): def fill_contact_page(self):
self.xml.get_object('nickname_label').set_markup( self.xml.get_object('nickname_label').set_markup(