diff --git a/README.md b/README.md
index 18c1eb7..fe27646 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-# hTools2 RoboFont extension
+# hTools2 extension
-hTools2 bundled as a RoboFont extension. Install with one click!
+hTools2 bundled as a [RoboFont](http://robofont.com/) extension. Install with one click!
For more info and the source code, visit [hTools2](http://github.com/gferreira/hTools2/).
\ No newline at end of file
diff --git a/hTools2.roboFontExt/info.plist b/hTools2.roboFontExt/info.plist
index 613cec5..241c313 100644
--- a/hTools2.roboFontExt/info.plist
+++ b/hTools2.roboFontExt/info.plist
@@ -23,7 +23,7 @@
requiresVersionMinor
5
timeStamp
- 1393883867.9635291
+ 1393922756.7716579
version
1.6
diff --git a/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-margins.py b/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-margins.py
index efcb07f..b19b903 100644
--- a/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-margins.py
+++ b/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-margins.py
@@ -1,11 +1,6 @@
# [h] set margins dialog
-'''Set left/right side-bearings of selected glyphs.'''
+import hTools2.dialogs.glyphs.set_margins
+reload(hTools2.dialogs.glyphs.set_margins)
-# import
-
-from hTools2.dialogs.glyphs import setMarginsDialog
-
-# run
-
-setMarginsDialog()
+hTools2.dialogs.glyphs.set_margins.setMarginsDialog()
diff --git a/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-width.py b/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-width.py
index a9d2626..3f87875 100644
--- a/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-width.py
+++ b/hTools2.roboFontExt/lib/Scripts/selected-glyphs/metrics/set-width.py
@@ -1,11 +1,6 @@
# [h] set width dialog
-'''Set the advance width of the selected glyphs.'''
+import hTools2.dialogs.glyphs.set_width
+reload(hTools2.dialogs.glyphs.set_width)
-# import
-
-from hTools2.dialogs.glyphs import setWidthDialog
-
-# run
-
-setWidthDialog()
+hTools2.dialogs.glyphs.set_width.setWidthDialog()
diff --git a/hTools2.roboFontExt/lib/hTools2/__init__.py b/hTools2.roboFontExt/lib/hTools2/__init__.py
index 605c4ab..395859c 100644
--- a/hTools2.roboFontExt/lib/hTools2/__init__.py
+++ b/hTools2.roboFontExt/lib/hTools2/__init__.py
@@ -41,7 +41,7 @@ class hConstants(object):
square_button = 35
#: Can nummerical text input be edited directly with the keyboard? A boolean. Set to ``True`` as default.
- read_only = True
+ read_only = False
#: The size style of text and standard dialog elements. Possible options are ``small``, ``regular``, ``mini``.
size_style = 'small'
diff --git a/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_margins.py b/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_margins.py
index 717051f..0a925a4 100644
--- a/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_margins.py
+++ b/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_margins.py
@@ -37,9 +37,7 @@ def __init__(self):
self.title = 'margins'
self.width = 123
self.height = (self.text_height * 5) + (self.padding_y * 9) + (self.nudge_button * 2) + self.button_height
- self.w = FloatingWindow(
- (self.width, self.height),
- self.title)
+ self.w = FloatingWindow((self.width, self.height), self.title)
#-------------
# left margin
#-------------
@@ -70,7 +68,7 @@ def __init__(self):
self.text_height),
self._left_value,
sizeStyle=self.size_style,
- readOnly=False)
+ readOnly=self.read_only)
# spinners
x = self.padding_x
y += (self.text_height + 10)
@@ -152,7 +150,7 @@ def __init__(self):
self.text_height),
self._right_value,
sizeStyle=self.size_style,
- readOnly=False)
+ readOnly=self.read_only)
x = self.padding_x
y += (self.text_height + 10)
# spinners
@@ -310,6 +308,7 @@ def right_mode_callback(self, sender):
def set_margins(self, glyph, (left, left_value, left_mode), (right, right_value, right_mode)):
glyph.prepareUndo('set margins')
+
# left margin
if left:
# increase by
@@ -324,6 +323,7 @@ def set_margins(self, glyph, (left, left_value, left_mode), (right, right_value,
# set left margin
glyph.leftMargin = _left_value_new
glyph.update()
+
# right margin
if right:
# increase by
@@ -338,39 +338,48 @@ def set_margins(self, glyph, (left, left_value, left_mode), (right, right_value,
# set right margin
glyph.rightMargin = _right_value_new
glyph.update()
+
# done glyph
glyph.performUndo()
glyph.update()
def apply_callback(self, sender):
+
f = CurrentFont()
+
if f is not None:
boolstring = [ 'False', 'True' ]
+
# get parameters
_left = self.w.left_checkbox.get()
_left_mode = self.w.left_mode.get()
+ _left_value = int(self.w.left_value.get())
_right = self.w.right_checkbox.get()
_right_mode = self.w.right_mode.get()
+ _right_value = int(self.w.right_value.get())
+
# iterate over glyphs
glyph_names = get_glyphs(f)
if len(glyph_names) > 0:
+
# print info
print 'setting margins for selected glyphs...\n'
- print '\tleft: %s %s [%s]' % (self._modes[_left_mode], self._left_value, boolstring[_left])
- print '\tright: %s %s [%s]' % (self._modes[_right_mode], self._right_value, boolstring[_right])
+ print '\tleft: %s %s [%s]' % (self._modes[_left_mode], _left_value, boolstring[_left])
+ print '\tright: %s %s [%s]' % (self._modes[_right_mode], _right_value, boolstring[_right])
print
print '\t\t',
+
# set margins
for glyph_name in glyph_names:
print glyph_name,
- self.set_margins(f[glyph_name],
- (_left, self._left_value, _left_mode),
- (_right, self._right_value, _right_mode))
+ self.set_margins(f[glyph_name], (_left, _left_value, _left_mode), (_right, _right_value, _right_mode))
f.update()
print '\n...done.\n'
+
# no glyph selected
else:
print no_glyph_selected
+
# no font open
else:
print no_font_open
diff --git a/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_width.py b/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_width.py
index 4df51e7..c833f08 100644
--- a/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_width.py
+++ b/hTools2.roboFontExt/lib/hTools2/dialogs/glyphs/set_width.py
@@ -10,7 +10,9 @@
from vanilla import *
from hTools2 import hConstants
+from hTools2.modules.fontutils import get_glyphs
from hTools2.modules.glyphutils import center_glyph
+from hTools2.modules.messages import no_font_open, no_glyph_selected
# objects
@@ -33,9 +35,7 @@ def __init__(self):
self.col_3 = 70
self.width = 123
self.height = self.button_height + (self.text_height * 5) + self.nudge_button + (self.padding_y * 6) + 1
- self.w = FloatingWindow(
- (self.width, self.height),
- self.title)
+ self.w = FloatingWindow((self.width, self.height), self.title)
# left
x = self.padding_x
y = self.padding_y
@@ -65,7 +65,8 @@ def __init__(self):
self.text_height),
placeholder='set value',
text=self._width_,
- sizeStyle=self.size_style)
+ sizeStyle=self.size_style,
+ readOnly=self.read_only)
# nudge spinners
x = self.padding_x
y += (self.nudge_button + self.padding_y)
@@ -219,17 +220,16 @@ def _split_relative_callback(self, sender):
# apply
def set_width(self, glyph, width, mode=None):
- #------------------
+
# store old values
- #------------------
_old_left = glyph.leftMargin
_old_right = glyph.rightMargin
_old_width = glyph.width
_glyph_width = _old_width - (_old_left + _old_right)
- #---------------
- # compute width
- #---------------
+
+ # save undo state
glyph.prepareUndo('set glyph width')
+
# add value
if self._mode == 1:
_width = _old_width + width
@@ -239,14 +239,12 @@ def set_width(self, glyph, width, mode=None):
# equal to value
else:
_width = width
- #-------------
- # set margins
- #-------------
+
# center glyph
if mode == 'center':
glyph.width = _width
center_glyph(glyph)
- #------------------
+
# split difference
elif mode == 'split difference':
# calculate new left margin
@@ -258,7 +256,7 @@ def set_width(self, glyph, width, mode=None):
# set margins
glyph.leftMargin = _new_left
glyph.width = _width
- #----------------
+
# split relative
elif mode == 'split relative':
# calculate new left margin
@@ -270,19 +268,21 @@ def set_width(self, glyph, width, mode=None):
# set margins
glyph.leftMargin = _new_left
glyph.width = _width
- #-----------
+
# set width
else:
glyph.width = _width
- #-------
+
# done!
- #-------
glyph.update()
glyph.performUndo()
def apply_callback(self, sender):
+
f = CurrentFont()
+
if f is not None:
+
# get parameters
_width = int(self.w.width_value.get())
_center = self.w.center_checkbox.get()
@@ -290,6 +290,7 @@ def apply_callback(self, sender):
_split_relative = self.w.split_relative_checkbox.get()
_gNames = f.selection
boolstring = ( False, True )
+
# set sidebearings mode
if _center:
_w_mode = 'center'
@@ -299,34 +300,28 @@ def apply_callback(self, sender):
_w_mode = 'split relative'
else:
_w_mode = None
+
# print info
print 'setting character widths...\n'
print '\t%s %s' % (self._modes[self._mode], _width)
print '\tmode: %s' % _w_mode
print
print '\t',
- # current glyph
- glyph = CurrentGlyph()
- if glyph is not None:
- print glyph.name,
- self.set_width(glyph, _width, _w_mode)
+
+ # iterate over glyphs
+ glyph_names = get_glyphs(f)
+ if len(glyph_names) > 0:
+ for glyph_name in glyph_names:
+ print glyph_name,
+ self.set_width(f[glyph_name], _width, _w_mode)
f.update()
print
print '\n...done.\n'
- # selected glyphs
+
+ # no glyph selected
else:
- glyph_names = f.selection
- if len(glyph_names) > 0:
- for glyph_name in glyph_names:
- print glyph_name,
- self.set_width(f[glyph_name], _width, _w_mode)
- f.update()
- print
- print '\n...done.\n'
- # no glyph selected
- else:
- print 'please select one or more glyphs first.\n'
+ print no_glyph_selected
+
# no font open
else:
- print 'please open a font first.\n'
-
+ print no_font_open