diff options
author | Yann Leboulanger <yann@leboulanger.org> | 2017-06-14 16:10:26 +0300 |
---|---|---|
committer | Yann Leboulanger <yann@leboulanger.org> | 2017-06-14 16:10:26 +0300 |
commit | 4f7b72883d3469712bd3171e5edcafcb43ada8e8 (patch) | |
tree | 57e6c643184a2cb0ab89fe850f83b43369c058bc | |
parent | 2c24c5a1e88b405c0dff28a9945fdf89ad43f313 (diff) | |
parent | 9dc389cc32f8bc8f51c694f54b5a4785c04c5296 (diff) |
Merge branch 'master' of dev.gajim.org:gajim/gajim
-rw-r--r-- | data/gui/tooltip_gc_contact.ui | 20 | ||||
-rw-r--r-- | data/gui/vcard_information_window.ui | 199 | ||||
-rw-r--r-- | data/other/servers.xml | 1 | ||||
-rw-r--r-- | icons/hicolor/16x16/status/channel-secure-croped-symbolic.symbolic.png | bin | 0 -> 246 bytes | |||
-rw-r--r-- | src/chat_control.py | 12 | ||||
-rw-r--r-- | src/chat_control_base.py | 21 | ||||
-rw-r--r-- | src/common/connection_handlers_events.py | 1 | ||||
-rw-r--r-- | src/config.py | 1 | ||||
-rw-r--r-- | src/conversation_textview.py | 8 | ||||
-rw-r--r-- | src/groupchat_control.py | 16 | ||||
-rw-r--r-- | src/gtkgui_helpers.py | 11 | ||||
-rw-r--r-- | src/tooltips.py | 2 | ||||
-rw-r--r-- | src/vcard.py | 16 |
13 files changed, 156 insertions, 152 deletions
diff --git a/data/gui/tooltip_gc_contact.ui b/data/gui/tooltip_gc_contact.ui index f4403d913..bfa67bae5 100644 --- a/data/gui/tooltip_gc_contact.ui +++ b/data/gui/tooltip_gc_contact.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.0 --> <interface> <requires lib="gtk+" version="3.12"/> <object class="GtkGrid" id="tooltip_grid"> @@ -10,8 +10,8 @@ <object class="GtkLabel" id="nick"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="valign">start</property> - <property name="xalign">0</property> <attributes> <attribute name="weight" value="bold"/> </attributes> @@ -26,10 +26,11 @@ <object class="GtkLabel" id="status"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="valign">start</property> <property name="wrap">True</property> + <property name="wrap_mode">word-char</property> <property name="max_width_chars">40</property> - <property name="xalign">0</property> <attributes> <attribute name="style" value="italic"/> </attributes> @@ -44,9 +45,9 @@ <object class="GtkLabel" id="jid_label"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="valign">start</property> <property name="label" translatable="yes">Jabber ID:</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -69,9 +70,9 @@ <object class="GtkLabel" id="resource_label"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="valign">start</property> <property name="label" translatable="yes">Resource:</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -82,8 +83,8 @@ <object class="GtkLabel" id="affiliation"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="valign">start</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -95,8 +96,8 @@ <object class="GtkLabel" id="user_show"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="valign">start</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -108,6 +109,7 @@ <object class="GtkLabel" id="fillelement"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="vexpand">True</property> </object> <packing> @@ -120,8 +122,8 @@ <object class="GtkLabel" id="resource"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="hexpand">True</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">1</property> @@ -132,8 +134,8 @@ <object class="GtkLabel" id="jid"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="hexpand">True</property> - <property name="xalign">0</property> <attributes> <attribute name="weight" value="bold"/> </attributes> diff --git a/data/gui/vcard_information_window.ui b/data/gui/vcard_information_window.ui index c14d10f00..8ba56c295 100644 --- a/data/gui/vcard_information_window.ui +++ b/data/gui/vcard_information_window.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Generated with glade 3.20.0 --> <interface> - <requires lib="gtk+" version="3.12"/> + <requires lib="gtk+" version="3.20"/> <object class="GtkWindow" id="vcard_information_window"> <property name="can_focus">False</property> <property name="border_width">12</property> @@ -20,8 +20,8 @@ <object class="GtkLabel" id="nickname_label"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="halign">start</property> <property name="selectable">True</property> - <property name="xalign">0</property> </object> <packing> <property name="expand">False</property> @@ -50,9 +50,10 @@ <object class="GtkLabel" id="JabberID_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"><b>Jabber ID:</b></property> <property name="use_markup">True</property> - <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -63,10 +64,10 @@ <object class="GtkLabel" id="Resource_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"><b>Resource:</b></property> <property name="use_markup">True</property> - <property name="xalign">1</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -77,10 +78,10 @@ <object class="GtkLabel" id="Status_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"><b>Status:</b></property> <property name="use_markup">True</property> - <property name="xalign">1</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -91,10 +92,10 @@ <object class="GtkLabel" id="Client_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"><b>Client:</b></property> <property name="use_markup">True</property> - <property name="xalign">1</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -105,10 +106,10 @@ <object class="GtkLabel" id="System_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"><b>System:</b></property> <property name="use_markup">True</property> - <property name="xalign">1</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -119,10 +120,10 @@ <object class="GtkLabel" id="Time_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"><b>Contact time:</b></property> <property name="use_markup">True</property> - <property name="xalign">1</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -133,10 +134,11 @@ <object class="GtkLabel" id="jid_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> - <property name="xpad">5</property> <property name="selectable">True</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">1</property> @@ -153,11 +155,11 @@ <object class="GtkLabel" id="resource_prio_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> - <property name="xpad">5</property> <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> </child> </object> @@ -167,37 +169,14 @@ </packing> </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> <object class="GtkLabel" id="client_name_version_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> - <property name="xpad">5</property> <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">1</property> @@ -208,12 +187,12 @@ <object class="GtkLabel" id="os_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> - <property name="xpad">5</property> <property name="wrap">True</property> <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">1</property> @@ -224,11 +203,11 @@ <object class="GtkLabel" id="time_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> - <property name="xpad">5</property> <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> <packing> <property name="left_attach">1</property> @@ -240,10 +219,8 @@ <property name="can_focus">False</property> <property name="no_show_all">True</property> <property name="halign">start</property> - <property name="ypad">5</property> <property name="label" translatable="yes"><b>User avatar:</b></property> <property name="use_markup">True</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">2</property> @@ -251,35 +228,11 @@ </packing> </child> <child> - <object class="GtkEventBox" id="PHOTO_eventbox"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="halign">start</property> - <property name="visible_window">False</property> - <signal name="button-press-event" handler="on_PHOTO_eventbox_button_press_event" swapped="no"/> - <child> - <object class="GtkImage" id="PHOTO_image"> - <property name="can_focus">False</property> - <property name="no_show_all">True</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="stock">gtk-missing-image</property> - </object> - </child> - </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="custom_avatar_label"> <property name="can_focus">False</property> <property name="no_show_all">True</property> <property name="label" translatable="yes"><b>Configured avatar:</b></property> <property name="use_markup">True</property> - <property name="xalign">0</property> </object> <packing> <property name="left_attach">2</property> @@ -291,7 +244,8 @@ <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="halign">start</property> + <property name="valign">start</property> <property name="stock">gtk-missing-image</property> </object> <packing> @@ -304,9 +258,10 @@ <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"><b>Ask:</b></property> <property name="use_markup">True</property> - <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -314,56 +269,86 @@ </packing> </child> <child> - <object class="GtkEventBox" id="ask_label_eventbox"> + <object class="GtkLabel" id="subscription_title_label"> <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> + <property name="halign">end</property> + <property name="valign">start</property> + <property name="label" translatable="yes" comments="Family Name"><b>Subscription:</b></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">7</property> + <property name="top_attach">2</property> </packing> </child> <child> - <object class="GtkLabel" id="subscription_title_label"> + <object class="GtkLabel" id="subscription_label"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes" comments="Family Name"><b>Subscription:</b></property> - <property name="use_markup">True</property> - <property name="xalign">1</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">0</property> + <property name="left_attach">1</property> <property name="top_attach">6</property> </packing> </child> <child> - <object class="GtkEventBox" id="subscription_label_eventbox"> + <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> + <object class="GtkEventBox" id="PHOTO_eventbox"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="halign">start</property> <property name="visible_window">False</property> + <signal name="button-press-event" handler="on_PHOTO_eventbox_button_press_event" swapped="no"/> <child> - <object class="GtkLabel" id="subscription_label"> - <property name="visible">True</property> + <object class="GtkImage" id="PHOTO_image"> <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="xpad">5</property> - <property name="xalign">0</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> </child> </object> <packing> - <property name="left_attach">1</property> - <property name="top_attach">6</property> + <property name="left_attach">2</property> + <property name="top_attach">1</property> + <property name="height">7</property> </packing> </child> </object> @@ -373,8 +358,6 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Contact</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> <packing> <property name="tab_fill">False</property> @@ -952,8 +935,6 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Personal Info</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> <packing> <property name="position">1</property> @@ -1353,8 +1334,6 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Work</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> <packing> <property name="position">2</property> @@ -1387,8 +1366,6 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes" comments=""About" is the text of a tab of vcard window">About</property> - <property name="xalign">0</property> - <property name="yalign">0</property> </object> <packing> <property name="position">3</property> diff --git a/data/other/servers.xml b/data/other/servers.xml index 617860d5f..be35c0357 100644 --- a/data/other/servers.xml +++ b/data/other/servers.xml @@ -8,6 +8,7 @@ --> <query xmlns:reg="urn:xmpp:vcard:registration:1"> <item jid="0nl1ne.at" /> + <item jid="404.city" /> <item jid="brauchen.info" /> <item jid="chatme.im" /> <item jid="climm.org" /> diff --git a/icons/hicolor/16x16/status/channel-secure-croped-symbolic.symbolic.png b/icons/hicolor/16x16/status/channel-secure-croped-symbolic.symbolic.png Binary files differnew file mode 100644 index 000000000..976c7f8dd --- /dev/null +++ b/icons/hicolor/16x16/status/channel-secure-croped-symbolic.symbolic.png diff --git a/src/chat_control.py b/src/chat_control.py index db7cca9a4..1009a8699 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -287,6 +287,7 @@ class ChatControl(ChatControlBase): self.encryption_menu = self.xml.get_object('encryption_menu') self.encryption_menu.set_menu_model( gui_menu_builder.get_encryption_menu(self.contact, self.type_id)) + self.set_encryption_menu_icon() # restore previous conversation self.restore_conversation() self.msg_textview.grab_focus() @@ -990,7 +991,7 @@ class ChatControl(ChatControlBase): def get_our_nick(self): 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, displaymarking=None, msg_log_id=None, correct_id=None, msg_stanza_id=None, additional_data=None): @@ -1023,12 +1024,6 @@ class ChatControl(ChatControlBase): kind = 'info' name = '' 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: kind = 'incoming' name = contact.get_shown_name() @@ -1048,7 +1043,8 @@ class ChatControl(ChatControlBase): subject=subject, old_kind=self.old_msg_kind, xhtml=xhtml, simple=simple, xep0184_id=xep0184_id, displaymarking=displaymarking, 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'): self.old_msg_kind = None else: diff --git a/src/chat_control_base.py b/src/chat_control_base.py index ea3324c7c..da7aff3a2 100644 --- a/src/chat_control_base.py +++ b/src/chat_control_base.py @@ -36,6 +36,7 @@ from gi.repository import GObject from gi.repository import GLib from gi.repository import Gio import gtkgui_helpers +from gtkgui_helpers import Color import message_control import dialogs import history_window @@ -442,6 +443,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): self.terminate_esessions() action.set_state(param) self.set_encryption_state(encryption) + self.set_encryption_menu_icon() self.set_lock_image() def set_encryption_state(self, encryption): @@ -455,6 +457,19 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): state = gajim.config.get_per('encryption', config_key, 'encryption') 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): # now set the one the user selected per_type = 'contacts' @@ -894,7 +909,8 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): 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, 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 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, subject, old_kind, xhtml, simple=simple, graphics=graphics, 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: textview.add_xep0184_mark(xep0184_id) diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py index 312d810ba..d88508203 100644 --- a/src/common/connection_handlers_events.py +++ b/src/common/connection_handlers_events.py @@ -1497,6 +1497,7 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent): self.nickname = self.msg_obj.resource self.timestamp = self.msg_obj.timestamp self.xhtml_msgtxt = self.stanza.getXHTML() + self.encrypted = self.msg_obj.encrypted self.correct_id = None # XEP-0308 if gajim.config.get('ignore_incoming_xhtml'): diff --git a/src/config.py b/src/config.py index 63b3d31d5..ceb138c06 100644 --- a/src/config.py +++ b/src/config.py @@ -2935,7 +2935,6 @@ class GroupchatConfigWindow: self.affiliation_treeview[affiliation].append_column(col) sw = Gtk.ScrolledWindow() - sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER) sw.add(self.affiliation_treeview[affiliation]) add_on_vbox.pack_start(sw, True, True, 0) gajim.connections[self.account].get_affiliation_list(self.room_jid, diff --git a/src/conversation_textview.py b/src/conversation_textview.py index b0146b6bf..db481044d 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -170,6 +170,8 @@ class ConversationTextview(GObject.GObject): MESSAGE_CORRECTED_PIXBUF = gtkgui_helpers.get_icon_pixmap( 'document-edit-symbolic') + MESSAGE_ENCRYPTED_PIXBUF = gtkgui_helpers.get_icon_pixmap( + 'channel-secure-croped-symbolic') # smooth scroll constants MAX_SCROLL_TIME = 0.4 # seconds @@ -1100,7 +1102,8 @@ class ConversationTextview(GObject.GObject): 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, 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 """ @@ -1168,6 +1171,9 @@ class ConversationTextview(GObject.GObject): self.print_time(text, kind, tim, simple, direction_mark, other_tags_for_time, iter_) + if encrypted: + buffer_.insert_pixbuf(iter_, self.MESSAGE_ENCRYPTED_PIXBUF) + # If there's a displaymarking, print it here. if displaymarking: self.print_displaymarking(displaymarking, iter_=iter_) diff --git a/src/groupchat_control.py b/src/groupchat_control.py index 71cd8aa79..ea0eff4f7 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -493,6 +493,7 @@ class GroupchatControl(ChatControlBase): self.encryption_menu = self.xml.get_object('encryption_menu') self.encryption_menu.set_menu_model( 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, self._nec_gc_presence_received) @@ -1090,14 +1091,14 @@ class GroupchatControl(ChatControlBase): # don't print xhtml if it's an old message. # Like that xhtml messages are grayed too. 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_) else: if obj.nick == self.nick: self.last_sent_txt = obj.msgtxt self.print_conversation(obj.msgtxt, contact=obj.nick, 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_) obj.needs_highlight = self.needs_visual_notification(obj.msgtxt) @@ -1153,7 +1154,7 @@ class GroupchatControl(ChatControlBase): return 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 == self.nick: # it's us kind = 'outgoing' @@ -1165,13 +1166,16 @@ class GroupchatControl(ChatControlBase): small_attr = ['small'] else: small_attr = [] + ChatControlBase.print_conversation_line(self, text, kind, contact, tim, small_attr, small_attr + ['restored_message'], 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, - 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 @@ -1233,7 +1237,7 @@ class GroupchatControl(ChatControlBase): ChatControlBase.print_conversation_line(self, text, kind, contact, tim, other_tags_for_name, [], other_tags_for_text, xhtml=xhtml, 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): type_events = ['printed_marked_gc_msg'] diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py index 687daa99e..18db3efb5 100644 --- a/src/gtkgui_helpers.py +++ b/src/gtkgui_helpers.py @@ -53,9 +53,16 @@ from common import configpaths gtk_icon_theme = Gtk.IconTheme.get_default() 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: - 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: if not quiet: log.error('Unable to load icon %s: %s' % (icon_name, str(e))) diff --git a/src/tooltips.py b/src/tooltips.py index 3c9d30388..468bc336f 100644 --- a/src/tooltips.py +++ b/src/tooltips.py @@ -31,6 +31,7 @@ from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GLib +from gi.repository import Pango import os import time from datetime import datetime @@ -207,6 +208,7 @@ class StatusTable: self.table.insert_row(self.current_row) self.text_label = Gtk.Label() 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_halign(Gtk.Align.START) self.text_label.set_valign(Gtk.Align.START) diff --git a/src/vcard.py b/src/vcard.py index 6054ee817..be3daf0f3 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -404,11 +404,8 @@ class VcardWindow: if self.contact.status: stats += ': ' + self.contact.status status_label = self.xml.get_object('status_label') - status_label.set_max_width_chars(15) status_label.set_text(stats) - - status_label_eventbox = self.xml.get_object('status_label_eventbox') - status_label_eventbox.set_tooltip_text(stats) + status_label.set_tooltip_text(stats) def fill_jabber_page(self): self.xml.get_object('nickname_label').set_markup( @@ -430,7 +427,6 @@ class VcardWindow: else: uf_sub = helpers.get_uf_sub(self.contact.sub) subscription_label.set_text(uf_sub) - eb = self.xml.get_object('subscription_label_eventbox') if self.contact.sub == 'from': tt_text = _("This contact is interested in your presence information, but you are not interested in their presence") elif self.contact.sub == 'to': @@ -439,16 +435,15 @@ class VcardWindow: tt_text = _("The contact and you want to exchange presence information") else: # None 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) ask_label.set_text(uf_ask) - eb = self.xml.get_object('ask_label_eventbox') if self.contact.ask == 'subscribe': tt_text = _("You are waiting contact's answer about your subscription request") else: 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( self.contact.priority)) @@ -613,11 +608,8 @@ class ZeroconfVcardWindow: if self.contact.status: stats += ': ' + self.contact.status status_label = self.xml.get_object('status_label') - status_label.set_max_width_chars(15) status_label.set_text(stats) - - status_label_eventbox = self.xml.get_object('status_label_eventbox') - status_label_eventbox.set_tooltip_text(stats) + status_label.set_tooltip_text(stats) def fill_contact_page(self): self.xml.get_object('nickname_label').set_markup( |