pidgin/pidgin

Convert PidginStatusBox to a GtkMenuButton

13 months ago, Elliott Sales de Andrade
adf6d358d438
Convert PidginStatusBox to a GtkMenuButton

This moves to a menu system to populate the list of statuses, and the new `PidginStatusDisplay` to show them. I tried a `GtkDropDown` previously, but that was unable to show the separators that we previously had. Consequently, it uses actions a bit more then before.

However, since menus don't support icons+text at the same time, and doesn't have a factory property, we do need to manually create custom widgets a bit, but it's mostly only a button + the `PidginStatusDisplay`.

The main display is now centred, but there seems to be nothing we can do about that, as the box with that alignment is internal to the `GtkMenuButton`. If we don't want that, we could switch to managing a `GtkToggleButton` and `GtkPopoverMenu` ourselves.

Testing Done:
Opened status box and confirmed that all primitives and saved statuses were there as expected.
Modified a status, and confirmed that the menu updated to match.
Added/deleted statuses from the manager and confirmed they menu updated to match.
Chose the New Status/Saved Statuses menu items and confirmed they opened the correct dialogs.
Picked a bunch of statuses from the menu items and confirmed the main display updated, and some updates were sent out to protocols (e.g. Demo disconnecting when offline, etc.)

Reviewed at https://reviews.imfreedom.org/r/2386/
Björn Voigt <bjoernv@arcor.de> Björn Voigt <bjoern@cs.tu-berlin.de>
Björn Voigt <bjoernv@arcor.de> Bjoern Voigt <bjoern@cs.tu-berlin.de>
David Woodhouse <dwmw2@infradead.org> <David.Woodhouse@intel.com>
David Woodhouse <dwmw2@infradead.org> <dwmw@amazon.co.uk>
David Woodhouse <dwmw2@infradead.org> dwmw2 <dwmw2@infradead.org>
# not sure how to make this one work because this doesn't do it..
dequis <dx@dxzone.com.ar> dequis <dx@dxzone.com.ar
dequis <dx@dxzone.com.ar> dx <dx@dxzone.com.ar>
Eion Robb <eion@robbmob.com> Eion Robb <eionrobb@gmail.com>
Elliott Sales de Andrade <quantum.analyst@gmail.com> Elliott Sales de Andrade <qulogic@pidgin.im>
Elliott Sales de Andrade <quantum.analyst@gmail.com> Elliott S <quantum.analyst@gmail.com>
Ethan Blanton <elb@pidgin.im> Ethan Blanton <elb@fiji-systems.com>
Ethan Blanton <elb@pidgin.im> Ethan Blanton <elb@kb8ojh.net>
Gary Kramlich <grim@reaperworld.com> <grim@pidgin.im>
Jerin Philip <monu1618@gmail.com> Jerin Philip <jerin.philip@students.iiit.ac.in>
Jonathan Champ <jrchamp@ncsu.edu> Jonathan Champ <royanee@users.sourceforge.net>
Jorge Villaseñor <salinasv@pidgin.im> Jorge Villaseñor <masca@cpw.pidgin.im>
Mark Doliner <mark@kingant.net> Mark Doliner <markdoliner@pidgin.im>
Matěj Cepl <mcepl@cepl.eu> Matěj Cepl <mcepl@redhat.com>
Michael McConville <mmcconville@mykolab.com> Michael McConville <mmcco@mykolab.com>
Michael McConville <mmcconville@mykolab.com> mmcconville@mykolab.com
Mike Ruprecht <cmaiku@gmail.com> Michael Ruprecht <maiku@pidgin.im>
Richard Laager <rlaager@wiktel.com> Richard Laager <rlaager@pidgin.im>
Robert Vehse <robertvehse@fastmail.fm> Robbie <robertvehse@fastmail.fm>
Shalom Craimer <scraimer@gmail.com> Shalom Craimer <s.transifex2015@craimer.org>
Tomasz Wasilczyk <twasilczyk@pidgin.im> Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
Yngve Spjeld Landro <l10n@landro.net> Yngve Spjeld Landro <nynorsk@strilen.net>