pidgin/pidgin

Remove the finch plugin pietray

2021-08-07, Gary Kramlich
06e3ae278b73
Parents 3323c988317f
Children bb300fbd7301
Remove the finch plugin pietray

It depends on the D-Bus API that we scrapped as well as GtkStatusIcon that's
been deprecated since Gtk 3.14.

Testing Done:
did a clean build and install and verified there were no issues.

Reviewed at https://reviews.imfreedom.org/r/874/
--- a/finch/plugins/pietray.py Sat Aug 07 01:34:07 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-#!/usr/bin/env python
-
-# NOTICE: This script is currently broken as the libpurple DBus
-# bindings have been removed.
-#
-# This is a dbus script to show a docklet for Finch. This should work
-# for any 'compatible' purple client.
-#
-# By 'compatible', I mean any client that sets and updates the
-# "unseen-count" data on the conversations.
-#
-# It allows doing the following things:
-# - It allows changing status.
-# - It shows the current status and info about unread messages in
-# the tooltip.
-# - It can blink on unread IM/Chat messages, and it allows canging
-# the preference for that.
-#
-# It requires GTK+ 2.10 or above, since it uses GtkStatusIcon.
-#
-# Sadrul <sadrul@pidgin.im>
-
-from __future__ import absolute_import, division, print_function
-
-import os # to get the pkg-config output
-
-import pygtk
-pygtk.require("2.0") # noqa
-import gtk
-import dbus
-import dbus.glib
-
-
-bus = dbus.SessionBus()
-obj = bus.get_object("im.pidgin.purple.PurpleService",
- "/im/pidgin/purple/PurpleObject")
-purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
-
-
-def pack_image_label(menu, image, label):
- item = gtk.ImageMenuItem(label)
- if image:
- img = gtk.Image()
- img.set_from_stock(image, 1)
- item.set_image(img)
- menu.append(item)
- return item
-
-
-def activate_primitive_status(item, status):
- saved = purple.PurpleSavedstatusFindTransientByTypeAndMessage(status, "")
- if not saved:
- saved = purple.PurpleSavedstatusNew("", status)
- purple.PurpleSavedstatusActivate(saved)
-
-
-def activate_popular_status(item, time):
- saved = purple.PurpleSavedstatusFindByCreationTime(time)
- if saved:
- purple.PurpleSavedstatusActivate(saved)
-
-
-def generate_status_menu(menu):
- item = gtk.MenuItem("Available")
- item.connect("activate", activate_primitive_status, 2)
- menu.append(item)
-
- item = gtk.MenuItem("Away")
- item.connect("activate", activate_primitive_status, 5)
- menu.append(item)
-
- item = gtk.MenuItem("Invisible")
- item.connect("activate", activate_primitive_status, 4)
- menu.append(item)
-
- item = gtk.MenuItem("Offline")
- item.connect("activate", activate_primitive_status, 1)
- menu.append(item)
-
- menu.append(gtk.MenuItem())
-
- popular = purple.PurpleSavedstatusesGetPopular(10)
- for pop in popular:
- title = purple.PurpleSavedstatusGetTitle(pop).replace('_', '__')
- item = gtk.MenuItem(title)
- item.set_data("timestamp",
- purple.PurpleSavedstatusGetCreationTime(pop))
- item.connect("activate", activate_popular_status,
- purple.PurpleSavedstatusGetCreationTime(pop))
- menu.append(item)
-
-
-def toggle_pref(item, pref):
- purple.PurplePrefsSetBool(pref, item.get_active())
-
-
-def quit_finch(item, null):
- # XXX: Ask first
- purple.PurpleCoreQuit()
- gtk.main_quit()
-
-
-def close_docklet(item, null):
- gtk.main_quit()
-
-
-def popup_menu(icon, button, tm, none):
- menu = gtk.Menu()
-
- # item = gtk.ImageMenuItem(gtk.STOCK_QUIT)
- # item.connect("activate", quit_finch, None)
- # menu.append(item)
-
- item = gtk.ImageMenuItem(gtk.STOCK_CLOSE)
- item.connect("activate", close_docklet, None)
- menu.append(item)
-
- menu.append(gtk.MenuItem())
-
- item = gtk.CheckMenuItem("Blink for unread IM")
- item.set_active(
- purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/im"))
- item.connect("activate", toggle_pref, "/plugins/dbus/docklet/blink/im")
- menu.append(item)
-
- item = gtk.CheckMenuItem("Blink for unread Chats")
- item.set_active(
- purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/chat"))
- item.connect("activate", toggle_pref, "/plugins/dbus/docklet/blink/chat")
- menu.append(item)
-
- menu.append(gtk.MenuItem())
-
- # item = pack_image_label(menu, None, "Change Status...")
- item = gtk.MenuItem("Change Status...")
- menu.append(item)
- submenu = gtk.Menu()
- item.set_submenu(submenu)
- generate_status_menu(submenu)
-
- menu.show_all()
- menu.popup(None, None, None, button, tm)
-
-
-def get_status_message():
- status_names = {
- 1: 'Offline',
- 2: 'Available',
- 4: 'Invisible',
- 5: 'Away',
- }
-
- status = purple.PurpleSavedstatusGetCurrent()
- msg = purple.PurpleSavedstatusGetMessage(status)
- if msg and len(msg) > 0:
- text = msg + " "
- else:
- text = ""
- text += "(" + status_names[purple.PurpleSavedstatusGetType(status)] + ")"
- return text
-
-
-def detect_unread_conversations():
- im = purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/im")
- chat = purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/chat")
- tooltip = ""
- blink = False
- if im and chat:
- convs = purple.PurpleGetConversations()
- elif im:
- convs = purple.PurpleGetIms()
- elif chat:
- convs = purple.PurpleGetChats()
- else:
- convs = None
- for conv in convs:
- count = purple.PurpleConversationGetData(conv, "unseen-count")
- if count and count > 0:
- blink = True
- tooltip += "\n%s (%d)" % (purple.PurpleConversationGetName(conv),
- count)
- t.set_from_file(path + "/share/pixmaps/pidgin.png")
- if blink:
- # I hate this icon
- # t.set_from_file(path +
- # "/share/pixmaps/pidgin/tray/22/tray-message.png")
- tooltip = "\nUnread Messages:" + tooltip
- # There's going to be some way to expose the client's display name in
- # 2.1.0. Use that instead of hardcoding Finch here.
- t.set_tooltip("Finch: " + get_status_message() + tooltip)
- t.set_blinking(blink)
-
-
-def conversation_updated(conv, type):
- detect_unread_conversations()
-
-
-def savedstatus_changed(new, old):
- # Change the icon for status perhaps?
- detect_unread_conversations()
-
-
-def init_prefs():
- if not purple.PurplePrefsExists("/plugins/dbus/docklet/blink"):
- purple.PurplePrefsAddNone("/plugins")
- purple.PurplePrefsAddNone("/plugins/dbus")
- purple.PurplePrefsAddNone("/plugins/dbus/docklet")
- purple.PurplePrefsAddNone("/plugins/dbus/docklet/blink")
- purple.PurplePrefsAddBool("/plugins/dbus/docklet/blink/im", True)
- purple.PurplePrefsAddBool("/plugins/dbus/docklet/blink/chat", True)
-
-
-pkg = os.popen("pkg-config --variable=prefix pidgin")
-path = pkg.readline().rstrip()
-
-bus.add_signal_receiver(conversation_updated,
- dbus_interface="im.pidgin.purple.PurpleInterface",
- signal_name="ConversationUpdated")
-
-bus.add_signal_receiver(savedstatus_changed,
- dbus_interface="im.pidgin.purple.PurpleInterface",
- signal_name="SavedstatusChanged")
-
-t = gtk.StatusIcon()
-t.connect("popup-menu", popup_menu, None)
-
-try:
- init_prefs()
- detect_unread_conversations()
- gtk.main()
-except:
- dialog = gtk.Dialog("pietray: Error", None,
- gtk.DIALOG_NO_SEPARATOR | gtk.DIALOG_MODAL,
- ("Close", gtk.RESPONSE_CLOSE))
- dialog.set_resizable(False)
- error_label = gtk.Label("There was some error. Perhaps a purple client is "
- "not running.")
- dialog.vbox.pack_start(error_label, False, False, 0)
- dialog.show_all()
- dialog.run()