From fedecbb90cd90fc4abeea8627ca2002f5ec4ad94 Mon Sep 17 00:00:00 2001 From: schriftgestalt <georg.seifert@mac.com> Date: Thu, 4 Jun 2020 17:06:27 +0200 Subject: [PATCH 1/2] plugin structure --- .../Contents/Info.plist | 16 ++++------------ .../Contents/MacOS/main.py | 16 ---------------- .../Contents/MacOS/plugin | Bin 56924 -> 21364 bytes .../Contents/PkgInfo | 1 - 4 files changed, 4 insertions(+), 29 deletions(-) delete mode 100644 FilterListManager.glyphsPlugin/Contents/MacOS/main.py delete mode 100644 FilterListManager.glyphsPlugin/Contents/PkgInfo diff --git a/FilterListManager.glyphsPlugin/Contents/Info.plist b/FilterListManager.glyphsPlugin/Contents/Info.plist index 16ddb15..c971cbb 100644 --- a/FilterListManager.glyphsPlugin/Contents/Info.plist +++ b/FilterListManager.glyphsPlugin/Contents/Info.plist @@ -3,9 +3,7 @@ <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleDisplayName</key> - <string>Filter List Manager</string> + <string>en</string> <key>CFBundleExecutable</key> <string>plugin</string> <key>CFBundleIdentifier</key> @@ -14,12 +12,10 @@ <string>6.0</string> <key>CFBundleName</key> <string>FilterListManager</string> - <key>CFBundlePackageType</key> - <string>BNDL</string> - <key>CFBundleVersion</key> - <string>50</string> <key>CFBundleShortVersionString</key> - <string>0.5.0</string> + <string>0.5.1</string> + <key>CFBundleVersion</key> + <string>51</string> <key>UpdateFeedURL</key> <string>https://raw.githubusercontent.com/source-foundry/FilterListManager/master/FilterListManager.glyphsPlugin/Contents/Info.plist</string> <key>productPageURL</key> @@ -30,9 +26,5 @@ <string>Copyright 2018 Christopher Simpkins, Apache License 2.0</string> <key>NSPrincipalClass</key> <string>FilterListManager</string> - <key>PyMainFileNames</key> - <array> - <string>../MacOS/main.py</string> - </array> </dict> </plist> diff --git a/FilterListManager.glyphsPlugin/Contents/MacOS/main.py b/FilterListManager.glyphsPlugin/Contents/MacOS/main.py deleted file mode 100644 index 028888c..0000000 --- a/FilterListManager.glyphsPlugin/Contents/MacOS/main.py +++ /dev/null @@ -1,16 +0,0 @@ -def _run(script): - global __file__ - import os, sys - sys.frozen = 'macosx_plugin' - base = os.environ['RESOURCEPATH'] - __file__ = path = os.path.join(base, script) - if sys.version_info[0] == 2: - with open(path, 'rU') as fp: - source = fp.read() + "\n" - else: - with open(path, 'r', encoding='utf-8') as fp: - source = fp.read() + '\n' - - exec(compile(source, path, 'exec'), globals(), globals()) - -_run('plugin.py') diff --git a/FilterListManager.glyphsPlugin/Contents/MacOS/plugin b/FilterListManager.glyphsPlugin/Contents/MacOS/plugin index b21f0e490123246868a0871f758ac53ed4c23d62..82bb118f3e630d7ac8438cf3c21fd24d79043cb4 100755 GIT binary patch literal 21364 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 a;^+K?^`%5Gl&GtzaV@Vs({<(<;(q{>ru&Bg literal 56924 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 WKHh|^)uOdb{I@%FFuu7ThyM%ug;eJN diff --git a/FilterListManager.glyphsPlugin/Contents/PkgInfo b/FilterListManager.glyphsPlugin/Contents/PkgInfo deleted file mode 100644 index 19a9cf6..0000000 --- a/FilterListManager.glyphsPlugin/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -BNDL???? \ No newline at end of file From 9667d764d62e97b39ac401d13ddc4782a07e6bb1 Mon Sep 17 00:00:00 2001 From: schriftgestalt <georg.seifert@mac.com> Date: Thu, 4 Jun 2020 17:06:37 +0200 Subject: [PATCH 2/2] python 3 --- .../Contents/Resources/plugin.py | 59 +++++++++++-------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/FilterListManager.glyphsPlugin/Contents/Resources/plugin.py b/FilterListManager.glyphsPlugin/Contents/Resources/plugin.py index be3e3dd..da46d7c 100755 --- a/FilterListManager.glyphsPlugin/Contents/Resources/plugin.py +++ b/FilterListManager.glyphsPlugin/Contents/Resources/plugin.py @@ -1,6 +1,7 @@ # encoding: utf-8 +from __future__ import division, print_function, unicode_literals -# ########################################################################################################## +########################################################################################################### # # # Filter List Manager @@ -9,7 +10,7 @@ # Apache License 2.0 # # -# ########################################################################################################## +########################################################################################################### import logging import objc @@ -17,8 +18,12 @@ import plistlib import shutil import subprocess -import urllib2 -import urlparse +try: + import urllib2 as urllibrequest + import urlparse as urllibparse +except: + import urllib.request as urllibrequest + import urllib.parse as urllibparse from GlyphsApp import * from GlyphsApp.plugins import * @@ -84,45 +89,43 @@ class FilterListManager(GeneralPlugin): + @objc.python_method def settings(self): self.update_name = Glyphs.localize( { - "en": u"Update Filter Lists", - "de": u"Filterlisten aktualisieren" + "en": "Update Filter Lists", + "de": "Filterlisten aktualisieren" } ) self.restoredefault_name = Glyphs.localize( { - "en": u"Restore Default Filter Lists", - "de": u"Standard-Filterlisten wiederherstellen", + "en": "Restore Default Filter Lists", + "de": "Standard-Filterlisten wiederherstellen", } ) self.opendir_name = Glyphs.localize( { - "en": u"Open GlyphsFilters Directory", - "de": u"Verzeichnis GlyphsFilters öffnen", + "en": "Open GlyphsFilters Directory", + "de": "Verzeichnis GlyphsFilters öffnen", } ) + @objc.python_method def start(self): try: # new API in Glyphs 2.3.1-910 - new_update_menu_item = NSMenuItem(self.update_name, self.update_filters) - new_restore_menu_item = NSMenuItem( - self.restoredefault_name, self.restore_filters - ) - new_opendir_menu_item = NSMenuItem( - self.opendir_name, self.open_glyphsfilters_directory - ) + new_update_menu_item = NSMenuItem(self.update_name, self.updateFilters_) + new_restore_menu_item = NSMenuItem(self.restoredefault_name, self.restoreFilters_) + new_opendir_menu_item = NSMenuItem(self.opendir_name, self.openGlyphsfiltersDirectory_) Glyphs.menu[EDIT_MENU].append(new_update_menu_item) Glyphs.menu[EDIT_MENU].append(new_restore_menu_item) Glyphs.menu[EDIT_MENU].append(new_opendir_menu_item) except Exception: main_menu = Glyphs.mainMenu() - update_selector = objc.selector(self.update_filters, signature="v@:@") - restore_selector = objc.selector(self.restore_filters, signature="v@:@") + update_selector = objc.selector(self.updateFilters_, signature="v@:@") + restore_selector = objc.selector(self.restoreFilters_, signature="v@:@") open_selector = objc.selector( - self.open_glyphsfilters_directory, signature="v@:@" + self.openGlyphsfiltersDirectory_, signature="v@:@" ) new_update_menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_( self.update_name, update_selector, "" @@ -140,7 +143,7 @@ def start(self): new_open_menu_item.setTarget_(self) main_menu.itemWithTag_(5).submenu().addItem_(new_open_menu_item) - def update_filters(self, sender): + def updateFilters_(self, sender): """Perform the list filter update""" # Expected filter definitions directory test if not self.filter_directory_is_present(): @@ -311,7 +314,7 @@ def update_filters(self, sender): "The filter list updates were successful. Please quit and restart the Glyphs application to view the new filter lists." ) - def restore_filters(self, sender): + def restoreFilters_(self, sender): """Perform restore of default list filters""" # copy the default definitions to the Glyphs application try: @@ -335,7 +338,7 @@ def restore_filters(self, sender): "The default filter list restoration was successful. Please quit and restart the Glyphs application to view the filter lists." ) - def open_glyphsfilters_directory(self, sender): + def openGlyphsfiltersDirectory_(self, sender): """Called from a plugin Edit menu item and opens the ~/GlyphsFilters directory in the macOS Finder""" if not os.path.isdir(FLM_GLYPHSFILTERS_DIR): Glyphs.showNotification( @@ -351,6 +354,7 @@ def open_glyphsfilters_directory(self, sender): "The ~/GlyphsFilters directory was opened with the Edit menu item." ) + @objc.python_method def filter_directory_is_present(self): """Tests for presence of the ~/GlyphsFilters directory""" if not os.path.isdir(FLM_GLYPHSFILTERS_DIR): @@ -358,6 +362,7 @@ def filter_directory_is_present(self): else: return True + @objc.python_method def get_local_filter_definitions_list(self): """Reads and launches parsing of local definition files, returns a Python list of Filter objects that are created from the parse""" @@ -392,6 +397,7 @@ def get_local_filter_definitions_list(self): return local_definitions_list + @objc.python_method def get_remote_filter_definitions_list(self): """Pulls, reads, and launches parsing of remote definition files, returns a Python list of Filter objects that are created from the parse""" @@ -410,20 +416,21 @@ def get_remote_filter_definitions_list(self): else: # unquote URL defined in list to define file name # (in case the user pasted a urlencoded string) - decoded_url = urllib2.unquote(url) - parsed_url = urlparse.urlparse(decoded_url).path + decoded_url = urllibparse.unquote(url) + parsed_url = urllibparse.urlparse(decoded_url).path parsed_path = os.path.split(parsed_url) filter_defintion_filename = parsed_path[1] new_filter = Filter(filter_defintion_filename) # quote URL defined in list to make HTTP GET request - response = urllib2.urlopen(url) + response = urllibrequest.urlopen(url) text = response.read() new_filter.define_list_with_newline_delimited_text(text) remote_definitions_list.append(new_filter) return remote_definitions_list + @objc.python_method def __file__(self): """Glyphs plugin API specific method. Please leave this method unchanged""" return __file__