Skip to content

Instantly share code, notes, and snippets.

@weiweihuanghuang
Created May 6, 2016 15:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save weiweihuanghuang/35560c3a006e2923f5f1180eec1580b0 to your computer and use it in GitHub Desktop.
Save weiweihuanghuang/35560c3a006e2923f5f1180eec1580b0 to your computer and use it in GitHub Desktop.
#MenuTitle: Add String Between Each Selected Glyph
# -*- coding: utf-8 -*-
__doc__="""
Adds this string between each selected glyph"""
import GlyphsApp
import vanilla
class insertString(object):
def __init__(self):
self.w = vanilla.FloatingWindow(
( 280, 40 ), # default window size
"Add this string between selected glyphs", # window title
autosaveName = "com.wwhh.insertString.mainwindow" # stores last window position and size
)
self.w.textAdd = vanilla.TextBox((10, 12+2, 32, 14), "Add:", sizeStyle='small')
self.w.addThisString = vanilla.EditText((10+32, 12, 140, 19), "", sizeStyle='small', callback=self.SavePreferences)
self.w.findButton = vanilla.Button((-80, 12+1, -15, 17), "Add", sizeStyle='small', callback=self.buttonCallback)
self.w.setDefaultButton( self.w.findButton )
# Load Settings:
if not self.LoadPreferences():
print "Note: 'Add String Between Each Selected Glyph' could not load preferences. Will resort to defaults"
self.w.open()
self.w.makeKey()
# Set defaults for class variables
self.addThisString = self.w.addThisString.get()
def SavePreferences( self, sender ):
try:
Glyphs.defaults["com.wwhh.insertString.addThisString"] = self.w.addThisString.get()
except:
return False
return True
def LoadPreferences( self ):
try:
NSUserDefaults.standardUserDefaults().registerDefaults_(
{
"com.wwhh.insertString.addThisString": "bottom"
}
)
self.w.addThisString.set( Glyphs.defaults["com.wwhh.FindAnchors.addThisString"] )
except:
return False
return True
def buttonCallback(self, sender):
Font = Glyphs.font
selectedLayers = Font.selectedLayers
addThisString = self.w.addThisString.get()
namesOfSelectedGlyphs = [ "/%s" % l.parent.name if hasattr(l.parent, 'name') else "\n" for l in Font.selectedLayers ]
editString = ""
# Replace selected text
TextStoreage = Font.currentTab.graphicView().textStorage()
Range = TextStoreage.selectedRange()
editString = addThisString
for g in namesOfSelectedGlyphs:
if g != "\n":
editString += g + addThisString
else:
editString += g
# Convert text string into character string
charString = Font.charStringFromDisplayString_(editString)
TextStoreage.replaceCharactersInRange_withString_(Range, charString)
# Set cursor at start of TextStorage
TextStoreage.setSelectedRange_(NSRange(0,0))
insertString()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment