aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--equalize_sidebearings.py41
1 files changed, 35 insertions, 6 deletions
diff --git a/equalize_sidebearings.py b/equalize_sidebearings.py
index 92f518b..7f7f5cc 100644
--- a/equalize_sidebearings.py
+++ b/equalize_sidebearings.py
@@ -1,4 +1,15 @@
+from AppKit import NSUserDefaults
+
from mojo.events import addObserver
+# from lib.doodleMenus import SpaceCenterMenuForGlyph
+# from tools.defaults import getDefault
+
+def getDefault(key, defaultValue = None, defaultClass = None):
+ defaultsFromFile = NSUserDefaults.standardUserDefaults()
+ value = defaultsFromFile.get(key, defaultValue)
+ if defaultClass is not None:
+ return defaultClass(value)
+ return value
class EqualizeSidebearings(object):
def __init__(self):
@@ -6,12 +17,30 @@ class EqualizeSidebearings(object):
def center(self, info):
if info['event'].characters() == 'a':
- g = info['glyph']
-
- g.prepareUndo('Equalize Sidebearings')
-
- g.center()
+ # g = info['glyph']
+ self.equalize_sidebearings(info['glyph'])
+ # SpaceCenterMenuForGlyph(info['event'], self, g)
+ #
+ # g.prepareUndo('Equalize Sidebearings')
+ #
+ # g.center()
+ #
+ # g.performUndo()
- g.performUndo()
+ def equalize_sidebearings(self, glyph):
+ useItalicAngleForDisplay = getDefault('glyphViewShouldUseItalicAngleForDisplay')
+ leftMarginAttribute = 'leftMargin'
+ rightMarginAttribute = 'rightMargin'
+ if useItalicAngleForDisplay:
+ leftMarginAttribute = 'angledLeftMargin'
+ rightMarginAttribute = 'angledRightMargin'
+ left = getattr(glyph, leftMarginAttribute)
+ right = getattr(glyph, rightMarginAttribute)
+ margin = int(round((left + right) / 2.0))
+ glyph.prepareUndo('Equalize sidebearings')
+ setattr(glyph, leftMarginAttribute, margin)
+ setattr(glyph, rightMarginAttribute, margin)
+ glyph.selection.resetSelectionPath()
+ glyph.performUndo()
EqualizeSidebearings() \ No newline at end of file