-
-
Save arialcrime/90f19972a80b21db0da19d1d04f3ad76 to your computer and use it in GitHub Desktop.
gives an overview of active subscribers, where they come from, and gives the option to unsubscribe selected ones
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import ezui | |
| from mojo.subscriber import listRegisteredSubscribers, unregisterRoboFontSubscriber, unregisterFontOverviewSubscriber, unregisterGlyphEditorSubscriber, unregisterSpaceCenterSubscriber, unregisterCurrentFontSubscriber, unregisterCurrentGlyphSubscriber | |
| class SubscribererController(ezui.WindowController): | |
| def build(self): | |
| self._subscriber_list = self._get_subscriber_list() | |
| content = """ | |
| = HorizontalStack | |
| |---------------| | |
| | name | source | @subscriberTable | |
| |------|--------| | |
| | | | | |
| |---------------| | |
| > ({arrow.clockwise.circle.fill}) @subscriberTableReloadButton | |
| > (Unsubscribe) @subscriberTableUnsubscribeButton | |
| """ | |
| subscriberTableItems = self._write_table_items() | |
| descriptionData = dict( | |
| subscriberTable=dict( | |
| width="auto", | |
| items=subscriberTableItems, | |
| columnDescriptions=[ | |
| dict( | |
| identifier="name", | |
| title="Name", | |
| width=240 | |
| ), | |
| dict( | |
| identifier="source", | |
| title="Source", | |
| width=160 | |
| ) | |
| ] | |
| ) | |
| ) | |
| self.w = ezui.EZWindow( | |
| title="Subscriberer", | |
| size=(500, 350), | |
| content=content, | |
| descriptionData=descriptionData, | |
| controller=self | |
| ) | |
| def started(self): | |
| self.w.open() | |
| def subscriberTableReloadButtonCallback(self, sender): | |
| self._update_table_items() | |
| def subscriberTableUnsubscribeButtonCallback(self, sender): | |
| table = self.w.getItem("subscriberTable") | |
| selection = table.getSelectedIndexes() | |
| for s in selection: | |
| for registered_subs in listRegisteredSubscribers(): | |
| if self._subscriber_list[s]['sub_id'] in registered_subs.getIdentifier(): | |
| unregisterRoboFontSubscriber(registered_subs) | |
| unregisterFontOverviewSubscriber(registered_subs) | |
| unregisterGlyphEditorSubscriber(registered_subs) | |
| unregisterSpaceCenterSubscriber(registered_subs) | |
| unregisterCurrentFontSubscriber(registered_subs) | |
| unregisterCurrentGlyphSubscriber(registered_subs) | |
| self._update_table_items() | |
| def _update_table_items(self): | |
| self._subscriber_list = self._get_subscriber_list() | |
| table = self.w.getItem("subscriberTable") | |
| items = self._write_table_items() | |
| table.set(items) | |
| def _write_table_items(self): | |
| c = list() | |
| for s in self._subscriber_list: | |
| c.append(dict(name=s['name'], source=s['source'])) | |
| return c | |
| def _get_subscriber_list(self): | |
| subs_list = list() | |
| for s in listRegisteredSubscribers(): | |
| identifier = s.getIdentifier() | |
| # name is first bit, source all the rest, | |
| # [:-1] cuts off number id at the end | |
| name, *source = identifier.split('.')[:-1] | |
| subs_list.append(dict( | |
| name=name, | |
| source='.'.join(source), | |
| sub_id=identifier | |
| ) | |
| ) | |
| return subs_list | |
| SubscribererController() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment