Remove BigAvatarWindow

This commit is contained in:
Philipp Hörist 2017-09-24 10:54:21 +02:00
parent a01cdbf271
commit 38406e39d6
2 changed files with 0 additions and 136 deletions

View File

@ -184,11 +184,6 @@ class ChatControl(ChatControlBase):
self._pep_images['location'] = self.xml.get_object('location_image')
self.update_all_pep_types()
# keep timeout id and window obj for possible big avatar
# it is on enter-notify and leave-notify so no need to be
# per jid
self.show_bigger_avatar_timeout_id = None
self.bigger_avatar_window = None
self.show_avatar()
# Hook up signals
@ -199,13 +194,6 @@ class ChatControl(ChatControlBase):
widget = self.xml.get_object('avatar_eventbox')
widget.set_property('height-request', AvatarSize.CHAT)
id_ = widget.connect('enter-notify-event',
self.on_avatar_eventbox_enter_notify_event)
self.handlers[id_] = widget
id_ = widget.connect('leave-notify-event',
self.on_avatar_eventbox_leave_notify_event)
self.handlers[id_] = widget
id_ = widget.connect('button-press-event',
self.on_avatar_eventbox_button_press_event)
@ -576,38 +564,6 @@ class ChatControl(ChatControlBase):
# Save volume to config
app.config.set('audio_output_volume', value)
def on_avatar_eventbox_enter_notify_event(self, widget, event):
"""
Enter the eventbox area so we under conditions add a timeout to show a
bigger avatar after 0.5 sec
"""
avatar_pixbuf = app.interface.get_avatar(self.account, self.contact.jid)
if avatar_pixbuf is None:
return
avatar_w = avatar_pixbuf.get_width()
avatar_h = avatar_pixbuf.get_height()
scaled_buf = self.xml.get_object('avatar_image').get_pixbuf()
scaled_buf_w = scaled_buf.get_width()
scaled_buf_h = scaled_buf.get_height()
# do we have something bigger to show?
if avatar_w > scaled_buf_w or avatar_h > scaled_buf_h:
# wait for 0.5 sec in case we leave earlier
if self.show_bigger_avatar_timeout_id is not None:
GLib.source_remove(self.show_bigger_avatar_timeout_id)
self.show_bigger_avatar_timeout_id = GLib.timeout_add(500,
self.show_bigger_avatar, widget, avatar_pixbuf)
def on_avatar_eventbox_leave_notify_event(self, widget, event):
"""
Left the eventbox area that holds the avatar img
"""
# did we add a timeout? if yes remove it
if self.show_bigger_avatar_timeout_id is not None:
GLib.source_remove(self.show_bigger_avatar_timeout_id)
self.show_bigger_avatar_timeout_id = None
def on_avatar_eventbox_button_press_event(self, widget, event):
"""
If right-clicked, show popup
@ -1229,9 +1185,6 @@ class ChatControl(ChatControlBase):
if self.session:
self.session.control = None
# Remove bigger avatar window
if self.bigger_avatar_window:
self.bigger_avatar_window.destroy()
# Clean events
app.events.remove_events(self.account, self.get_full_jid(),
types=['printed_' + self.type_id, self.type_id])
@ -1315,15 +1268,6 @@ class ChatControl(ChatControlBase):
return
self.print_conversation(_('Pong! (%s s.)') % obj.seconds, 'status')
def set_control_active(self, state):
ChatControlBase.set_control_active(self, state)
# Hide bigger avatar window
if self.bigger_avatar_window:
self.bigger_avatar_window.destroy()
self.bigger_avatar_window = None
# Re-show the small avatar
self.show_avatar()
def show_avatar(self):
if not app.config.get('show_avatar_in_chat'):
return
@ -1502,46 +1446,6 @@ class ChatControl(ChatControlBase):
elif typ == 'pm':
control.remove_contact(nick)
def show_bigger_avatar(self, small_avatar, avatar_pixbuf):
"""
Resize the avatar, if needed, so it has at max half the screen size and
shows it
"""
# Hide the small avatar
image = self.xml.get_object('avatar_image')
image.hide()
screen_w = Gdk.Screen.width()
screen_h = Gdk.Screen.height()
avatar_w = avatar_pixbuf.get_width()
avatar_h = avatar_pixbuf.get_height()
half_scr_w = screen_w / 2
half_scr_h = screen_h / 2
if avatar_w > half_scr_w:
avatar_w = half_scr_w
if avatar_h > half_scr_h:
avatar_h = half_scr_h
# we should make the cursor visible
# gtk+ doesn't make use of the motion notify on gtkwindow by default
# so this line adds that
alloc = small_avatar.get_allocation()
# make the bigger avatar window show up centered
small_avatar_x, small_avatar_y = alloc.x, alloc.y
translated_coordinates = small_avatar.translate_coordinates(
app.interface.roster.window, 0, 0)
if translated_coordinates:
small_avatar_x, small_avatar_y = translated_coordinates
roster_x, roster_y = self.parent_win.window.get_window().get_origin()[1:]
center_x = roster_x + small_avatar_x + (alloc.width / 2)
center_y = roster_y + small_avatar_y + (alloc.height / 2)
pos_x, pos_y = center_x - (avatar_w / 2), center_y - (avatar_h / 2)
dialogs.BigAvatarWindow(avatar_pixbuf, pos_x, pos_y, avatar_w,
avatar_h, self.show_avatar)
self.show_bigger_avatar_timeout_id = None
def _on_send_file_menuitem_activate(self, widget):
self._on_send_file()

View File

@ -5198,43 +5198,3 @@ class SSLErrorDialog(ConfirmationDialogDoubleCheck):
def on_cert_clicked(self, button):
d = CertificatDialog(self, self.account, self.cert)
class BigAvatarWindow(Gtk.Window):
def __init__(self, avatar, pos_x, pos_y, width, height, callback):
super(BigAvatarWindow, self).__init__(type=Gtk.WindowType.POPUP)
self.set_events(Gdk.EventMask.POINTER_MOTION_MASK)
self.avatar = avatar
self.callback = callback
self.screen = self.get_screen()
self.visual = self.screen.get_rgba_visual()
if self.visual is not None and self.screen.is_composited():
self.set_visual(self.visual)
self.set_app_paintable(True)
self.set_size_request(width, height)
self.move(pos_x, pos_y)
# we should hide the window
self.connect('leave_notify_event', self._on_window_avatar_leave_notify)
self.connect('motion-notify-event', self._on_window_motion_notify)
self.realize()
# make the cursor invisible so we can see the image
self.get_window().set_cursor(
Gdk.Cursor.new(Gdk.CursorType.BLANK_CURSOR))
self.add(Gtk.Image.new_from_pixbuf(self.avatar))
self.show_all()
def _on_window_avatar_leave_notify(self, widget, event):
"""
Just left the popup window that holds avatar
"""
self.destroy()
self.bigger_avatar_window = None
# Re-show the small avatar
self.callback()
def _on_window_motion_notify(self, widget, event):
"""
Just moved the mouse so show the cursor
"""
cursor = gtkgui_helpers.get_cursor('LEFT_PTR')
self.get_window().set_cursor(cursor)