summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/extensions/base.py11
-rw-r--r--lib/extensions/lettering.py236
-rw-r--r--lib/extensions/params.py268
-rw-r--r--lib/extensions/simulate.py4
-rw-r--r--lib/gui/__init__.py3
-rw-r--r--lib/gui/dialogs.py14
-rw-r--r--lib/gui/presets.py183
-rw-r--r--lib/gui/simulator.py (renamed from lib/simulator.py)133
-rw-r--r--lib/lettering/font.py2
-rw-r--r--lib/lettering/font_variant.py3
-rw-r--r--lib/svg/tags.py4
-rw-r--r--lib/utils/__init__.py13
-rw-r--r--lib/utils/dotdict.py30
-rw-r--r--templates/lettering.inx1
-rw-r--r--translations/messages_af_ZA.po223
-rw-r--r--translations/messages_ar_SA.po223
-rw-r--r--translations/messages_ca_ES.po223
-rw-r--r--translations/messages_cs_CZ.po223
-rw-r--r--translations/messages_da_DK.po223
-rw-r--r--translations/messages_de_DE.po233
-rw-r--r--translations/messages_el_GR.po223
-rw-r--r--translations/messages_en_US.po223
-rw-r--r--translations/messages_es_ES.po223
-rw-r--r--translations/messages_fi_FI.po223
-rw-r--r--translations/messages_fr_FR.po229
-rw-r--r--translations/messages_he_IL.po223
-rw-r--r--translations/messages_hu_HU.po223
-rw-r--r--translations/messages_it_IT.po223
-rw-r--r--translations/messages_ja_JP.po223
-rw-r--r--translations/messages_ko_KR.po223
-rw-r--r--translations/messages_nl_NL.po223
-rw-r--r--translations/messages_no_NO.po223
-rw-r--r--translations/messages_pl_PL.po223
-rw-r--r--translations/messages_pt_BR.po223
-rw-r--r--translations/messages_pt_PT.po229
-rw-r--r--translations/messages_ro_RO.po223
-rw-r--r--translations/messages_ru_RU.po223
-rw-r--r--translations/messages_sr_SP.po223
-rw-r--r--translations/messages_sv_SE.po223
-rw-r--r--translations/messages_tr_TR.po223
-rw-r--r--translations/messages_uk_UA.po223
-rw-r--r--translations/messages_vi_VN.po223
-rw-r--r--translations/messages_zh_CN.po223
-rw-r--r--translations/messages_zh_TW.po223
44 files changed, 4170 insertions, 3447 deletions
diff --git a/lib/extensions/base.py b/lib/extensions/base.py
index 279ca396..98673541 100644
--- a/lib/extensions/base.py
+++ b/lib/extensions/base.py
@@ -211,16 +211,15 @@ class InkstitchExtension(inkex.Effect):
# care that it's unique. That defines a "namespace" of element and
# attribute names to disambiguate conflicts with element and
# attribute names other XML namespaces.
- #
- # Updating inkex.NSS here allows us to pass 'inkstitch' into
- # inkex.addNS().
- inkex.NSS['inkstitch'] = 'http://inkstitch.org/namespace'
# call the superclass's method first
inkex.Effect.parse(self)
- # This is the only way I could find to add a namespace to an existing
- # element tree at the top without getting ugly prefixes like "ns0".
+ # Add the inkstitch namespace to the SVG. The inkstitch namespace is
+ # added to inkex.NSS in ../svg/tags.py at import time.
+
+ # The below is the only way I could find to add a namespace to an
+ # existing element tree at the top without getting ugly prefixes like "ns0".
inkex.etree.cleanup_namespaces(self.document,
top_nsmap=inkex.NSS,
keep_ns_prefixes=inkex.NSS.keys())
diff --git a/lib/extensions/lettering.py b/lib/extensions/lettering.py
index 0d6629f8..b6d67c0b 100644
--- a/lib/extensions/lettering.py
+++ b/lib/extensions/lettering.py
@@ -1,39 +1,233 @@
+# -*- coding: UTF-8 -*-
+
+from base64 import b64encode, b64decode
+import json
import os
+import sys
+
+import inkex
+import wx
+from ..elements import nodes_to_elements
+from ..gui import PresetsPanel, SimulatorPreview
from ..i18n import _
from ..lettering import Font
-from ..svg.tags import SVG_PATH_TAG, SVG_GROUP_TAG, INKSCAPE_LABEL
-from ..utils import get_bundled_dir
+from ..svg.tags import SVG_PATH_TAG, SVG_GROUP_TAG, INKSCAPE_LABEL, INKSTITCH_LETTERING
+from ..utils import get_bundled_dir, DotDict
from .commands import CommandsExtension
+class LetteringFrame(wx.Frame):
+ def __init__(self, *args, **kwargs):
+ # begin wxGlade: MyFrame.__init__
+ self.group = kwargs.pop('group')
+ self.cancel_hook = kwargs.pop('on_cancel', None)
+ wx.Frame.__init__(self, None, wx.ID_ANY,
+ _("Ink/Stitch Lettering")
+ )
+
+ self.preview = SimulatorPreview(self, target_duration=1)
+ self.presets_panel = PresetsPanel(self)
+
+ self.load_settings()
+
+ # options
+ self.options_box = wx.StaticBox(self, wx.ID_ANY, label=_("Options"))
+
+ self.back_and_forth_checkbox = wx.CheckBox(self, label=_("Stitch lines of text back and forth"))
+ self.back_and_forth_checkbox.SetValue(self.settings.back_and_forth)
+ self.Bind(wx.EVT_CHECKBOX, lambda event: self.on_change("back_and_forth", event))
+
+ # text editor
+ self.text_editor_box = wx.StaticBox(self, wx.ID_ANY, label=_("Text"))
+
+ self.font_chooser = wx.ComboBox(self, wx.ID_ANY)
+ self.update_font_list()
+
+ self.text_editor = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.TE_DONTWRAP, value=self.settings.text)
+ self.Bind(wx.EVT_TEXT, lambda event: self.on_change("text", event))
+
+ self.cancel_button = wx.Button(self, wx.ID_ANY, _("Cancel"))
+ self.cancel_button.Bind(wx.EVT_BUTTON, self.cancel)
+ self.Bind(wx.EVT_CLOSE, self.cancel)
+
+ self.apply_button = wx.Button(self, wx.ID_ANY, _("Apply and Quit"))
+ self.apply_button.Bind(wx.EVT_BUTTON, self.apply)
+
+ self.__do_layout()
+ # end wxGlade
+
+ def load_settings(self):
+ try:
+ if INKSTITCH_LETTERING in self.group.attrib:
+ self.settings = DotDict(json.loads(b64decode(self.group.get(INKSTITCH_LETTERING))))
+ return
+ except (TypeError, ValueError):
+ pass
+
+ self.settings = DotDict({
+ "text": u"",
+ "back_and_forth": True,
+ "font": "small_font"
+ })
+
+ def save_settings(self):
+ # We base64 encode the string before storing it in an XML attribute.
+ # In theory, lxml should properly html-encode the string, using HTML
+ # entities like 
 as necessary. However, we've found that Inkscape
+ # incorrectly interpolates the HTML entities upon reading the
+ # extension's output, rather than leaving them as is.
+ #
+ # Details:
+ # https://bugs.launchpad.net/inkscape/+bug/1804346
+ self.group.set(INKSTITCH_LETTERING, b64encode(json.dumps(self.settings)))
+
+ def on_change(self, attribute, event):
+ self.settings[attribute] = event.GetEventObject().GetValue()
+ self.preview.update()
+
+ def generate_patches(self, abort_early=None):
+ patches = []
+
+ font_path = os.path.join(get_bundled_dir("fonts"), self.settings.font)
+ font = Font(font_path)
+
+ try:
+ lines = font.render_text(self.settings.text, back_and_forth=self.settings.back_and_forth)
+ self.group[:] = lines
+ elements = nodes_to_elements(self.group.iterdescendants(SVG_PATH_TAG))
+
+ for element in elements:
+ if abort_early and abort_early.is_set():
+ # cancel; settings were updated and we need to start over
+ return []
+
+ patches.extend(element.embroider(None))
+ except SystemExit:
+ raise
+ except Exception:
+ raise
+ # Ignore errors. This can be things like incorrect paths for
+ # satins or division by zero caused by incorrect param values.
+ pass
+
+ return patches
+
+ def update_font_list(self):
+ pass
+
+ def get_preset_data(self):
+ # called by self.presets_panel
+ preset = {}
+ return preset
+
+ def apply_preset_data(self):
+ # called by self.presets_panel
+ return
+
+ def get_preset_suite_name(self):
+ # called by self.presets_panel
+ return "lettering"
+
+ def apply(self, event):
+ self.preview.disable()
+ self.generate_patches()
+ self.save_settings()
+ self.close()
+
+ def close(self):
+ self.preview.close()
+ self.Destroy()
+
+ def cancel(self, event):
+ if self.cancel_hook:
+ self.cancel_hook()
+
+ self.close()
+
+ def __do_layout(self):
+ outer_sizer = wx.BoxSizer(wx.VERTICAL)
+
+ options_sizer = wx.StaticBoxSizer(self.options_box, wx.VERTICAL)
+ options_sizer.Add(self.back_and_forth_checkbox, 1, wx.EXPAND | wx.LEFT | wx.TOP | wx.RIGHT | wx.BOTTOM, 10)
+ outer_sizer.Add(options_sizer, 0, wx.EXPAND | wx.LEFT | wx.TOP | wx.RIGHT, 10)
+
+ text_editor_sizer = wx.StaticBoxSizer(self.text_editor_box, wx.VERTICAL)
+ text_editor_sizer.Add(self.font_chooser, 0, wx.ALL, 10)
+ text_editor_sizer.Add(self.text_editor, 1, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 10)
+ outer_sizer.Add(text_editor_sizer, 1, wx.EXPAND | wx.LEFT | wx.TOP | wx.RIGHT, 10)
+
+ outer_sizer.Add(self.presets_panel, 0, wx.EXPAND | wx.EXPAND | wx.ALL, 10)
+
+ buttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
+ buttons_sizer.Add(self.cancel_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 10)
+ buttons_sizer.Add(self.apply_button, 0, wx.ALIGN_RIGHT | wx.RIGHT | wx.BOTTOM, 10)
+ outer_sizer.Add(buttons_sizer, 0, wx.ALIGN_RIGHT, 10)
+
+ self.SetSizerAndFit(outer_sizer)
+ self.Layout()
+
+ # SetSizerAndFit determined the minimum size that fits all the controls
+ # and set the window's minimum size so that the user can't make it
+ # smaller. It also set the window to that size. We'd like to give the
+ # user a bit more room for text, so we'll add some height.
+ size = self.GetSize()
+ size.height = size.height + 200
+ self.SetSize(size)
+
+
class Lettering(CommandsExtension):
COMMANDS = ["trim"]
def __init__(self, *args, **kwargs):
+ self.cancelled = False
CommandsExtension.__init__(self, *args, **kwargs)
- self.OptionParser.add_option("-t", "--text")
+ def cancel(self):
+ self.cancelled = True
- def effect(self):
- font_path = os.path.join(get_bundled_dir("fonts"), "small_font")
- font = Font(font_path)
- self.ensure_current_layer()
+ def get_or_create_group(self):
+ if self.selected:
+ groups = set()
+
+ for node in self.selected.itervalues():
+ if node.tag == SVG_GROUP_TAG and INKSTITCH_LETTERING in node.attrib:
+ groups.add(node)
+
+ for group in node.iterancestors(SVG_GROUP_TAG):
+ if INKSTITCH_LETTERING in group.attrib:
+ groups.add(group)
- lines = font.render_text(self.options.text.decode('utf-8'))
- self.set_labels(lines)
- self.current_layer.append(lines)
+ if len(groups) > 1:
+ inkex.errormsg(_("Please select only one block of text."))
+ sys.exit(1)
+ elif len(groups) == 0:
+ inkex.errormsg(_("You've selected objects that were not created by the Lettering extension. "
+ "Please clear your selection or select different objects before running Lettering again."))
+ sys.exit(1)
+ else:
+ return list(groups)[0]
+ else:
+ self.ensure_current_layer()
+ return inkex.etree.SubElement(self.current_layer, SVG_GROUP_TAG, {
+ INKSCAPE_LABEL: _("Ink/Stitch Lettering")
+ })
+
+ def effect(self):
+ app = wx.App()
+ frame = LetteringFrame(group=self.get_or_create_group(), on_cancel=self.cancel)
- def set_labels(self, lines):
- path = 1
- for node in lines.iterdescendants():
- if node.tag == SVG_PATH_TAG:
- node.set("id", self.uniqueId("lettering"))
+ # position left, center
+ current_screen = wx.Display.GetFromPoint(wx.GetMousePosition())
+ display = wx.Display(current_screen)
+ display_size = display.GetClientArea()
+ frame_size = frame.GetSize()
+ frame.SetPosition((display_size[0], display_size[3] / 2 - frame_size[1] / 2))
- # L10N Label for an object created by the Lettering extension
- node.set(INKSCAPE_LABEL, _("Lettering %d") % path)
- path += 1
- elif node.tag == SVG_GROUP_TAG:
- node.set("id", self.uniqueId("letteringline"))
+ frame.Show()
+ app.MainLoop()
- # lettering extension already set the label
+ if self.cancelled:
+ # This prevents the superclass from outputting the SVG, because we
+ # may have modified the DOM.
+ sys.exit(0)
diff --git a/lib/extensions/params.py b/lib/extensions/params.py
index 6525cae2..8cd0debe 100644
--- a/lib/extensions/params.py
+++ b/lib/extensions/params.py
@@ -6,76 +6,20 @@ from itertools import groupby
import json
import os
import sys
-from threading import Thread, Event
-import traceback
+
import wx
from wx.lib.scrolledpanel import ScrolledPanel
from ..commands import is_command
from ..elements import EmbroideryElement, Fill, AutoFill, Stroke, SatinColumn
-from ..i18n import _
from ..simulator import EmbroiderySimulator
-from ..stitch_plan import patches_to_stitch_plan
+from ..gui import PresetsPanel, SimulatorPreview
+from ..i18n import _
from ..utils import get_resource_dir
from .base import InkstitchExtension
-def presets_path():
- try:
- import appdirs
- config_path = appdirs.user_config_dir('inkstitch')
- except ImportError:
- config_path = os.path.expanduser('~/.inkstitch')
-
- if not os.path.exists(config_path):
- os.makedirs(config_path)
- return os.path.join(config_path, 'presets.json')
-
-
-def load_presets():
- try:
- with open(presets_path(), 'r') as presets:
- presets = json.load(presets)
- return presets
- except IOError:
- return {}
-
-
-def save_presets(presets):
- with open(presets_path(), 'w') as presets_file:
- json.dump(presets, presets_file)
-
-
-def load_preset(name):
- return load_presets().get(name)
-
-
-def save_preset(name, data):
- presets = load_presets()
- presets[name] = data
- save_presets(presets)
-
-
-def delete_preset(name):
- presets = load_presets()
- presets.pop(name, None)
- save_presets(presets)
-
-
-def confirm_dialog(parent, question, caption='ink/stitch'):
- dlg = wx.MessageDialog(parent, question, caption, wx.YES_NO | wx.ICON_QUESTION)
- result = dlg.ShowModal() == wx.ID_YES
- dlg.Destroy()
- return result
-
-
-def info_dialog(parent, message, caption='ink/stitch'):
- dlg = wx.MessageDialog(parent, message, caption, wx.OK | wx.ICON_INFORMATION)
- dlg.ShowModal()
- dlg.Destroy()
-
-
class ParamsTab(ScrolledPanel):
def __init__(self, *args, **kwargs):
self.params = kwargs.pop('params', [])
@@ -359,7 +303,7 @@ class ParamsTab(ScrolledPanel):
self.changed_inputs.add(self.param_inputs[param])
- if self.on_change_hook():
+ if self.on_change_hook:
self.on_change_hook(self)
# end of class SatinPane
@@ -377,33 +321,10 @@ class SettingsFrame(wx.Frame):
self.tabs = self.tabs_factory(self.notebook)
for tab in self.tabs:
- tab.on_change(self.update_simulator)
-
- self.simulate_window = None
- self.simulate_thread = None
- self.simulate_refresh_needed = Event()
-
- # used when closing to avoid having the window reopen at the last second
- self.disable_simulate_window = False
-
- wx.CallLater(1000, self.update_simulator)
-
- self.presets_box = wx.StaticBox(self, wx.ID_ANY, label=_("Presets"))
-
- self.preset_chooser = wx.ComboBox(self, wx.ID_ANY)
- self.update_preset_list()
-
- self.load_preset_button = wx.Button(self, wx.ID_ANY, _("Load"))
- self.load_preset_button.Bind(wx.EVT_BUTTON, self.load_preset)
-
- self.add_preset_button = wx.Button(self, wx.ID_ANY, _("Add"))
- self.add_preset_button.Bind(wx.EVT_BUTTON, self.add_preset)
-
- self.overwrite_preset_button = wx.Button(self, wx.ID_ANY, _("Overwrite"))
- self.overwrite_preset_button.Bind(wx.EVT_BUTTON, self.overwrite_preset)
+ tab.on_change(self.update_preview)
- self.delete_preset_button = wx.Button(self, wx.ID_ANY, _("Delete"))
- self.delete_preset_button.Bind(wx.EVT_BUTTON, self.delete_preset)
+ self.preview = SimulatorPreview(self)
+ self.presets_panel = PresetsPanel(self)
self.cancel_button = wx.Button(self, wx.ID_ANY, _("Cancel"))
self.cancel_button.Bind(wx.EVT_BUTTON, self.cancel)
@@ -415,83 +336,17 @@ class SettingsFrame(wx.Frame):
self.apply_button = wx.Button(self, wx.ID_ANY, _("Apply and Quit"))
self.apply_button.Bind(wx.EVT_BUTTON, self.apply)
- self.__set_properties()
+ self.notebook.SetMinSize((800, 600))
+
self.__do_layout()
# end wxGlade
- def update_simulator(self, tab=None):
- if self.simulate_window:
- self.simulate_window.stop()
- self.simulate_window.clear()
-
- if self.disable_simulate_window:
- return
-
- if not self.simulate_thread or not self.simulate_thread.is_alive():
- self.simulate_thread = Thread(target=self.simulate_worker)
- self.simulate_thread.daemon = True
- self.simulate_thread.start()
+ def update_preview(self, tab):
+ self.preview.update()
- self.simulate_refresh_needed.set()
+ def generate_patches(self, abort_early):
+ # called by self.preview
- def simulate_worker(self):
- while True:
- self.simulate_refresh_needed.wait()
- self.simulate_refresh_needed.clear()
- self.update_patches()
-
- def update_patches(self):
- patches = self.generate_patches()
-
- if patches and not self.simulate_refresh_needed.is_set():
- wx.CallAfter(self.refresh_simulator, patches)
-
- def refresh_simulator(self, patches):
- stitch_plan = patches_to_stitch_plan(patches)
- if self.simulate_window:
- self.simulate_window.stop()
- self.simulate_window.load(stitch_plan)
- else:
- params_rect = self.GetScreenRect()
- simulator_pos = params_rect.GetTopRight()
- simulator_pos.x += 5
-
- current_screen = wx.Display.GetFromPoint(wx.GetMousePosition())
- display = wx.Display(current_screen)
- screen_rect = display.GetClientArea()
- simulator_pos.y = screen_rect.GetTop()
-
- width = screen_rect.GetWidth() - params_rect.GetWidth()
- height = screen_rect.GetHeight()
-
- try:
- self.simulate_window = EmbroiderySimulator(None, -1, _("Preview"),
- simulator_pos,
- size=(width, height),
- stitch_plan=stitch_plan,
- on_close=self.simulate_window_closed,
- target_duration=5)
- except Exception:
- error = traceback.format_exc()
-
- try:
- # a window may have been created, so we need to destroy it
- # or the app will never exit
- wx.Window.FindWindowByName(_("Preview")).Destroy()
- except Exception:
- pass
-
- info_dialog(self, error, _("Internal Error"))
-
- self.simulate_window.Show()
- wx.CallLater(10, self.Raise)
-
- wx.CallAfter(self.simulate_window.go)
-
- def simulate_window_closed(self):
- self.simulate_window = None
-
- def generate_patches(self):
patches = []
nodes = []
@@ -506,7 +361,7 @@ class SettingsFrame(wx.Frame):
try:
for node in nodes:
- if self.simulate_refresh_needed.is_set():
+ if abort_early.is_set():
# cancel; params were updated and we need to start over
return []
@@ -524,27 +379,9 @@ class SettingsFrame(wx.Frame):
return patches
- def update_preset_list(self):
- preset_names = load_presets().keys()
- preset_names = [preset for preset in preset_names if preset != "__LAST__"]
- self.preset_chooser.SetItems(sorted(preset_names))
-
- def get_preset_name(self):
- preset_name = self.preset_chooser.GetValue().strip()
- if preset_name:
- return preset_name
- else:
- info_dialog(self, _("Please enter or select a preset name first."), caption=_('Preset'))
- return
-
- def check_and_load_preset(self, preset_name):
- preset = load_preset(preset_name)
- if not preset:
- info_dialog(self, _('Preset "%s" not found.') % preset_name, caption=_('Preset'))
-
- return preset
-
def get_preset_data(self):
+ # called by self.presets_panel
+
preset = {}
current_tab = self.tabs[self.notebook.GetSelection()]
@@ -562,53 +399,13 @@ class SettingsFrame(wx.Frame):
return preset
- def add_preset(self, event, overwrite=False):
- preset_name = self.get_preset_name()
- if not preset_name:
- return
-
- if not overwrite and load_preset(preset_name):
- info_dialog(self, _('Preset "%s" already exists. Please use another name or press "Overwrite"') % preset_name, caption=_('Preset'))
-
- save_preset(preset_name, self.get_preset_data())
- self.update_preset_list()
-
- event.Skip()
-
- def overwrite_preset(self, event):
- self.add_preset(event, overwrite=True)
-
- def _load_preset(self, preset_name):
- preset = self.check_and_load_preset(preset_name)
- if not preset:
- return
+ def apply_preset_data(self, preset_data):
+ # called by self.presets_panel
for tab in self.tabs:
- tab.load_preset(preset)
-
- def load_preset(self, event):
- preset_name = self.get_preset_name()
- if not preset_name:
- return
-
- self._load_preset(preset_name)
-
- event.Skip()
+ tab.load_preset(preset_data)
- def delete_preset(self, event):
- preset_name = self.get_preset_name()
- if not preset_name:
- return
-
- preset = self.check_and_load_preset(preset_name)
- if not preset:
- return
-
- delete_preset(preset_name)
- self.update_preset_list()
- self.preset_chooser.SetValue("")
-
- event.Skip()
+ self.preview.update()
def _apply(self):
for tab in self.tabs:
@@ -616,19 +413,16 @@ class SettingsFrame(wx.Frame):
def apply(self, event):
self._apply()
- save_preset("__LAST__", self.get_preset_data())
+ self.presets_panel.store_preset("__LAST__", self.get_preset_data())
self.close()
def use_last(self, event):
- self.disable_simulate_window = True
- self._load_preset("__LAST__")
+ self.preview.disable()
+ self.presets_panel.load_preset("__LAST__")
self.apply(event)
def close(self):
- if self.simulate_window:
- self.simulate_window.stop()
- self.simulate_window.Close()
-
+ self.preview.close()
self.Destroy()
def cancel(self, event):
@@ -637,27 +431,15 @@ class SettingsFrame(wx.Frame):
self.close()
- def __set_properties(self):
- # begin wxGlade: MyFrame.__set_properties
- self.notebook.SetMinSize((800, 600))
- self.preset_chooser.SetSelection(-1)
- # end wxGlade
-
def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
# self.sizer_3_staticbox.Lower()
- sizer_2 = wx.StaticBoxSizer(self.presets_box, wx.HORIZONTAL)
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
for tab in self.tabs:
self.notebook.AddPage(tab, tab.name)
sizer_1.Add(self.notebook, 1, wx.EXPAND | wx.LEFT | wx.TOP | wx.RIGHT, 10)
- sizer_2.Add(self.preset_chooser, 1, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
- sizer_2.Add(self.load_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
- sizer_2.Add(self.add_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
- sizer_2.Add(self.overwrite_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
- sizer_2.Add(self.delete_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
- sizer_1.Add(sizer_2, 0, flag=wx.EXPAND | wx.ALL, border=10)
+ sizer_1.Add(self.presets_panel, 0, flag=wx.EXPAND | wx.ALL, border=10)
sizer_3.Add(self.cancel_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 5)
sizer_3.Add(self.use_last_button, 0, wx.ALIGN_RIGHT | wx.RIGHT | wx.BOTTOM, 5)
sizer_3.Add(self.apply_button, 0, wx.ALIGN_RIGHT | wx.RIGHT | wx.BOTTOM, 5)
diff --git a/lib/extensions/simulate.py b/lib/extensions/simulate.py
index f962b206..a4da26d5 100644
--- a/lib/extensions/simulate.py
+++ b/lib/extensions/simulate.py
@@ -1,6 +1,6 @@
-from .base import InkstitchExtension
-from ..simulator import show_simulator
+from ..gui import show_simulator
from ..stitch_plan import patches_to_stitch_plan
+from .base import InkstitchExtension
class Simulate(InkstitchExtension):
diff --git a/lib/gui/__init__.py b/lib/gui/__init__.py
new file mode 100644
index 00000000..060c3d93
--- /dev/null
+++ b/lib/gui/__init__.py
@@ -0,0 +1,3 @@
+from dialogs import info_dialog, confirm_dialog
+from presets import PresetsPanel
+from simulator import EmbroiderySimulator, SimulatorPreview, show_simulator
diff --git a/lib/gui/dialogs.py b/lib/gui/dialogs.py
new file mode 100644
index 00000000..c09503b3
--- /dev/null
+++ b/lib/gui/dialogs.py
@@ -0,0 +1,14 @@
+import wx
+
+
+def confirm_dialog(parent, question, caption='ink/stitch'):
+ dlg = wx.MessageDialog(parent, question, caption, wx.YES_NO | wx.ICON_QUESTION)
+ result = dlg.ShowModal() == wx.ID_YES
+ dlg.Destroy()
+ return result
+
+
+def info_dialog(parent, message, caption='ink/stitch'):
+ dlg = wx.MessageDialog(parent, message, caption, wx.OK | wx.ICON_INFORMATION)
+ dlg.ShowModal()
+ dlg.Destroy()
diff --git a/lib/gui/presets.py b/lib/gui/presets.py
new file mode 100644
index 00000000..e6000718
--- /dev/null
+++ b/lib/gui/presets.py
@@ -0,0 +1,183 @@
+import json
+import os
+import re
+
+import wx
+
+from ..i18n import _
+from ..utils import cache
+from .dialogs import info_dialog
+
+
+class PresetsPanel(wx.Panel):
+ """A wx.Panel for loading, saving, and applying presets.
+
+ A preset is a named collection of settings. From the perspective of this
+ class, a preset is an opaque JSON-serializable object.
+
+ The PresetsPanel will handle interaction with the user and inform the
+ instantiator of events such as a preset being loaded. Presets starting
+ and ending with "__" will not be shown to the user. This allows for the
+ instantiator to manage hidden presets such as "__LAST__".
+ """
+
+ HIDDEN_PRESET_RE = re.compile('^__.*__$')
+
+ def __init__(self, parent, *args, **kwargs):
+ """Construct a PresetsPanel.
+
+ The parent is the parent window for this wx.Panel. The parent is
+ expected to implement the following methods:
+
+ def get_preset_data(self)
+ returns a JSON object representing the current state as a preset
+
+ def apply_preset_data(self, preset_data):
+ apply the preset data to the GUI, updating GUI elements as necessary
+
+ def get_preset_suite_name(self):
+ Return a string used in the presets filename, e.g. "lettering" -> "lettering_presets.json".
+ If not defined, "presets.json" will be used.
+ """
+
+ kwargs.setdefault('style', wx.BORDER_NONE)
+ wx.Panel.__init__(self, parent, wx.ID_ANY, *args, **kwargs)
+ self.parent = parent
+
+ self.presets_box = wx.StaticBox(self, wx.ID_ANY, label=_("Presets"))
+
+ self.preset_chooser = wx.ComboBox(self, wx.ID_ANY)
+ self.update_preset_list()
+ self.preset_chooser.SetSelection(-1)
+
+ self.load_preset_button = wx.Button(self, wx.ID_ANY, _("Load"))
+ self.load_preset_button.Bind(wx.EVT_BUTTON, self.load_selected_preset)
+
+ self.add_preset_button = wx.Button(self, wx.ID_ANY, _("Add"))
+ self.add_preset_button.Bind(wx.EVT_BUTTON, self.add_preset)
+
+ self.overwrite_preset_button = wx.Button(self, wx.ID_ANY, _("Overwrite"))
+ self.overwrite_preset_button.Bind(wx.EVT_BUTTON, self.overwrite_preset)
+
+ self.delete_preset_button = wx.Button(self, wx.ID_ANY, _("Delete"))
+ self.delete_preset_button.Bind(wx.EVT_BUTTON, self.delete_preset)
+
+ presets_sizer = wx.StaticBoxSizer(self.presets_box, wx.HORIZONTAL)
+ presets_sizer.Add(self.preset_chooser, 1, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
+ presets_sizer.Add(self.load_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
+ presets_sizer.Add(self.add_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
+ presets_sizer.Add(self.overwrite_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
+ presets_sizer.Add(self.delete_preset_button, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
+
+ self.SetSizerAndFit(presets_sizer)
+ self.Layout()
+
+ @property
+ @cache
+ def suite_name(self):
+ try:
+ return self.parent.get_preset_suite_name() + "_presets"
+ except AttributeError:
+ return "presets"
+
+ @cache
+ def presets_path(self):
+ try:
+ import appdirs
+ config_path = appdirs.user_config_dir('inkstitch')
+ except ImportError:
+ config_path = os.path.expanduser('~/.inkstitch')
+
+ if not os.path.exists(config_path):
+ os.makedirs(config_path)
+ return os.path.join(config_path, '%s.json' % self.suite_name)
+
+ def _load_presets(self):
+ try:
+ with open(self.presets_path(), 'r') as presets:
+ presets = json.load(presets)
+ return presets
+ except IOError:
+ return {}
+
+ def _save_presets(self, presets):
+ with open(self.presets_path(), 'w') as presets_file:
+ json.dump(presets, presets_file)
+
+ def update_preset_list(self):
+ preset_names = self._load_presets().keys()
+ preset_names = [preset for preset in preset_names if not self.is_hidden(preset)]
+ self.preset_chooser.SetItems(sorted(preset_names))
+
+ def is_hidden(self, preset_name):
+ return self.HIDDEN_PRESET_RE.match(preset_name)
+
+ def get_preset_name(self):
+ preset_name = self.preset_chooser.GetValue().strip()
+ if preset_name:
+ return preset_name
+ else:
+ info_dialog(self, _("Please enter or select a preset name first."), caption=_('Preset'))
+ return
+
+ def check_and_load_preset(self, preset_name):
+ preset = self._load_presets().get(preset_name)
+ if not preset:
+ info_dialog(self, _('Preset "%s" not found.') % preset_name, caption=_('Preset'))
+
+ return preset
+
+ def store_preset(self, preset_name, data):
+ presets = self._load_presets()
+ presets[preset_name] = data
+ self._save_presets(presets)
+ self.update_preset_list()
+
+ def add_preset(self, event, overwrite=False):
+ preset_name = self.get_preset_name()
+ if not preset_name:
+ return
+
+ if not overwrite and preset_name in self._load_presets():
+ info_dialog(self, _('Preset "%s" already exists. Please use another name or press "Overwrite"') % preset_name, caption=_('Preset'))
+
+ self.store_preset(self, preset_name, self.parent.get_preset_data())
+
+ event.Skip()
+
+ def overwrite_preset(self, event):
+ self.add_preset(event, overwrite=True)
+
+ def load_preset(self, preset_name):
+ preset = self.check_and_load_preset(preset_name)
+ if not preset:
+ return
+
+ self.parent.apply_preset_data(preset)
+
+ def load_selected_preset(self, event):
+ preset_name = self.get_preset_name()
+ if not preset_name:
+ return
+
+ self.load_preset(preset_name)
+
+ event.Skip()
+
+ def delete_preset(self, event):
+ preset_name = self.get_preset_name()
+ if not preset_name:
+ return
+
+ preset = self.check_and_load_preset(preset_name)
+ if not preset:
+ return
+
+ presets = self._load_presets()
+ presets.pop(preset_name, None)
+ self._save_presets(presets)
+
+ self.update_preset_list()
+ self.preset_chooser.SetValue("")
+
+ event.Skip()
diff --git a/lib/simulator.py b/lib/gui/simulator.py
index 34d12887..0eed18c9 100644
--- a/lib/simulator.py
+++ b/lib/gui/simulator.py
@@ -1,12 +1,20 @@
+from itertools import izip
import sys
+from threading import Thread, Event
+import time
+import traceback
+
import wx
from wx.lib.intctrl import IntCtrl
-import time
-from itertools import izip
-from .svg import PIXELS_PER_MM
-from .i18n import _
-from .stitch_plan import stitch_plan_from_file
+from ..i18n import _
+from ..stitch_plan import stitch_plan_from_file, patches_to_stitch_plan
+
+from ..svg import PIXELS_PER_MM
+
+
+from .dialogs import info_dialog
+
# L10N command label at bottom of simulator window
COMMAND_NAMES = [_("STITCH"), _("JUMP"), _("TRIM"), _("STOP"), _("COLOR CHANGE")]
@@ -636,6 +644,121 @@ class EmbroiderySimulator(wx.Frame):
self.simulator_panel.clear()
+class SimulatorPreview(Thread):
+ """Manages a preview simulation and a background thread for generating patches."""
+
+ def __init__(self, parent, *args, **kwargs):
+ """Construct a SimulatorPreview.
+
+ The parent is expected to be a wx.Window and also implement the following methods:
+
+ def generate_patches(self, abort_event):
+ Produce an list of Patch instances. This method will be
+ invoked in a background thread and it is expected that it may
+ take awhile.
+
+ If possible, this method should periodically check
+ abort_event.is_set(), and if True, stop early. The return
+ value will be ignored in this case.
+ """
+ self.parent = parent
+ self.target_duration = kwargs.pop('target_duration', 5)
+ super(SimulatorPreview, self).__init__(*args, **kwargs)
+ self.daemon = True
+
+ self.simulate_window = None
+ self.refresh_needed = Event()
+
+ # used when closing to avoid having the window reopen at the last second
+ self._disabled = False
+
+ wx.CallLater(1000, self.update)
+
+ def disable(self):
+ self._disabled = True
+
+ def update(self):
+ """Request an update of the simulator preview with freshly-generated patches."""
+
+ if self.simulate_window:
+ self.simulate_window.stop()
+ self.simulate_window.clear()
+
+ if self._disabled:
+ return
+
+ if not self.is_alive():
+ self.start()
+
+ self.refresh_needed.set()
+
+ def run(self):
+ while True:
+ self.refresh_needed.wait()
+ self.refresh_needed.clear()
+ self.update_patches()
+
+ def update_patches(self):
+ patches = self.parent.generate_patches(self.refresh_needed)
+
+ if patches and not self.refresh_needed.is_set():
+ stitch_plan = patches_to_stitch_plan(patches)
+
+ # GUI stuff needs to happen in the main thread, so we ask the main
+ # thread to call refresh_simulator().
+ wx.CallAfter(self.refresh_simulator, patches, stitch_plan)
+
+ def refresh_simulator(self, patches, stitch_plan):
+ if self.simulate_window:
+ self.simulate_window.stop()
+ self.simulate_window.load(stitch_plan)
+ else:
+ params_rect = self.parent.GetScreenRect()
+ simulator_pos = params_rect.GetTopRight()
+ simulator_pos.x += 5
+
+ current_screen = wx.Display.GetFromPoint(wx.GetMousePosition())
+ display = wx.Display(current_screen)
+ screen_rect = display.GetClientArea()
+ simulator_pos.y = screen_rect.GetTop()
+
+ width = screen_rect.GetWidth() - params_rect.GetWidth()
+ height = screen_rect.GetHeight()
+
+ try:
+ self.simulate_window = EmbroiderySimulator(None, -1, _("Preview"),
+ simulator_pos,
+ size=(width, height),
+ stitch_plan=stitch_plan,
+ on_close=self.simulate_window_closed,
+ target_duration=self.target_duration)
+ except Exception:
+ error = traceback.format_exc()
+
+ try:
+ # a window may have been created, so we need to destroy it
+ # or the app will never exit
+ wx.Window.FindWindowByName(_("Preview")).Destroy()
+ except Exception:
+ pass
+
+ info_dialog(self, error, _("Internal Error"))
+
+ self.simulate_window.Show()
+ wx.CallLater(10, self.parent.Raise)
+
+ wx.CallAfter(self.simulate_window.go)
+
+ def simulate_window_closed(self):
+ self.simulate_window = None
+
+ def close(self):
+ self.disable()
+ if self.simulate_window:
+ self.simulate_window.stop()
+ self.simulate_window.Close()
+
+
def show_simulator(stitch_plan):
app = wx.App()
current_screen = wx.Display.GetFromPoint(wx.GetMousePosition())
diff --git a/lib/lettering/font.py b/lib/lettering/font.py
index 4a89df47..9d0389a0 100644
--- a/lib/lettering/font.py
+++ b/lib/lettering/font.py
@@ -106,7 +106,7 @@ class Font(object):
position.x = 0
position.y += self.leading
- if self.auto_satin:
+ if self.auto_satin and len(line_group) > 0:
self._apply_auto_satin(line_group)
return line_group
diff --git a/lib/lettering/font_variant.py b/lib/lettering/font_variant.py
index 445946e2..d826dca6 100644
--- a/lib/lettering/font_variant.py
+++ b/lib/lettering/font_variant.py
@@ -53,7 +53,8 @@ class FontVariant(object):
def _load_glyphs(self):
svg_path = os.path.join(self.path, u"%s.svg" % self.variant)
- svg = inkex.etree.parse(svg_path)
+ with open(svg_path) as svg_file:
+ svg = inkex.etree.parse(svg_file)
glyph_layers = svg.xpath(".//svg:g[starts-with(@inkscape:label, 'GlyphLayer-')]", namespaces=inkex.NSS)
for layer in glyph_layers:
diff --git a/lib/svg/tags.py b/lib/svg/tags.py
index 55352be2..84509f90 100644
--- a/lib/svg/tags.py
+++ b/lib/svg/tags.py
@@ -1,5 +1,8 @@
import inkex
+# This is used below and added to the document in ../extensions/base.py.
+inkex.NSS['inkstitch'] = 'http://inkstitch.org/namespace'
+
SVG_PATH_TAG = inkex.addNS('path', 'svg')
SVG_POLYLINE_TAG = inkex.addNS('polyline', 'svg')
@@ -16,5 +19,6 @@ CONNECTOR_TYPE = inkex.addNS('connector-type', 'inkscape')
XLINK_HREF = inkex.addNS('href', 'xlink')
SODIPODI_NAMEDVIEW = inkex.addNS('namedview', 'sodipodi')
SODIPODI_GUIDE = inkex.addNS('guide', 'sodipodi')
+INKSTITCH_LETTERING = inkex.addNS('lettering', 'inkstitch')
EMBROIDERABLE_TAGS = (SVG_PATH_TAG, SVG_POLYLINE_TAG)
diff --git a/lib/utils/__init__.py b/lib/utils/__init__.py
index a6ae4374..2b39da71 100644
--- a/lib/utils/__init__.py
+++ b/lib/utils/__init__.py
@@ -1,6 +1,7 @@
-from geometry import *
-from cache import cache
-from io import *
-from inkscape import *
-from paths import *
-from string import *
+from .cache import cache
+from .dotdict import DotDict
+from .geometry import *
+from .inkscape import *
+from .io import *
+from .paths import *
+from .string import *
diff --git a/lib/utils/dotdict.py b/lib/utils/dotdict.py
new file mode 100644
index 00000000..1ab3a4fe
--- /dev/null
+++ b/lib/utils/dotdict.py
@@ -0,0 +1,30 @@
+class DotDict(dict):
+ """A dict subclass that allows accessing methods using dot notation.
+
+ adapted from: https://stackoverflow.com/questions/13520421/recursive-dotdict
+ """
+
+ def __init__(self, *args, **kwargs):
+ super(DotDict, self).__init__(*args, **kwargs)
+
+ for k, v in self.iteritems():
+ if isinstance(v, dict):
+ self[k] = DotDict(v)
+
+ __setattr__ = dict.__setitem__
+ __delattr__ = dict.__delitem__
+
+ def __getattr__(self, name):
+ if name.startswith('_'):
+ raise AttributeError("'DotDict' object has no attribute '%s'" % name)
+
+ if name in self:
+ return self.__getitem__(name)
+ else:
+ new_dict = DotDict()
+ self.__setitem__(name, new_dict)
+ return new_dict
+
+ def __repr__(self):
+ super_repr = super(DotDict, self).__repr__()
+ return "DotDict(%s)" % super_repr
diff --git a/templates/lettering.inx b/templates/lettering.inx
index cc34da8c..88d683ef 100644
--- a/templates/lettering.inx
+++ b/templates/lettering.inx
@@ -4,7 +4,6 @@
<id>org.inkstitch.lettering.{{ locale }}</id>
<dependency type="executable" location="extensions">inkstitch.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
- <param name="text" type="string" _gui-text="{% trans %}Text{% endtrans %}"></param>
<param name="extension" type="string" gui-hidden="true">lettering</param>
<effect>
<object-type>all</object-type>
diff --git a/translations/messages_af_ZA.po b/translations/messages_af_ZA.po
index f8d6ab07..3d1c1098 100644
--- a/translations/messages_af_ZA.po
+++ b/translations/messages_af_ZA.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:46\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_ar_SA.po b/translations/messages_ar_SA.po
index 87ef5ffc..c5780a96 100644
--- a/translations/messages_ar_SA.po
+++ b/translations/messages_ar_SA.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:46\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_ca_ES.po b/translations/messages_ca_ES.po
index 94327205..cb037204 100644
--- a/translations/messages_ca_ES.po
+++ b/translations/messages_ca_ES.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:46\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_cs_CZ.po b/translations/messages_cs_CZ.po
index dffd12a7..19bd691c 100644
--- a/translations/messages_cs_CZ.po
+++ b/translations/messages_cs_CZ.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:46\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_da_DK.po b/translations/messages_da_DK.po
index de882ede..2b7b1678 100644
--- a/translations/messages_da_DK.po
+++ b/translations/messages_da_DK.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_de_DE.po b/translations/messages_de_DE.po
index 41343831..360f90cd 100644
--- a/translations/messages_de_DE.po
+++ b/translations/messages_de_DE.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
@@ -529,9 +529,9 @@ msgstr "Ink/Stitch visuelle Befehle (Objekt -> Symbole ...)"
msgid "Install"
msgstr "Installieren"
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr "Abbrechen"
@@ -563,11 +563,33 @@ msgstr "Ink/Stitch Add-ons Installer"
msgid "Please choose one or more commands to add."
msgstr "Bitte wählen Sie einen oder mehrere Befehle um diese zu verknüpfen."
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
-msgstr "Beschriftung %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr "Text"
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr "Anwenden und schließen"
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
+msgstr ""
#: lib/extensions/object_commands.py:16
msgid "Please select one or more objects to which to attach commands."
@@ -577,104 +599,53 @@ msgstr "Wählen Sie ein oder mehrere Objekte aus, an die Sie die Befehle anhäng
msgid "Please choose one or more commands to attach."
msgstr "Bitte wählen Sie einen oder mehrere Befehle um diese zu verknüpfen."
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr "Diese Einstellung wird auf 1 Objekt angewendet."
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr "Diese Einstellungen werden auf %d Objekte angewendet."
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr "Einige Einstellungen hatten unterschiedliche Werte der Objekte. Bitte einen Wert aus der Liste auswählen oder einen neuen Namen eingeben."
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr "Deaktivierung dieser Registerkarte, deaktiviert die folgenden %d Registerkarten."
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr "Deaktivierung dieser Registerkarte, deaktiviert die folgende Registerkarte."
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr "Aktivierung dieser Registerkarte deaktiviert %s und umgekehrt."
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr "Inkscape Objekte"
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr "Klicke hier, um zu erzwingen, dass dieser Parameter gespeichert wird, wenn man auf \"Übernehmen und Beenden\" klickt"
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr "Dieser Parameter wird gespeichert, wenn man auf \"Übernehmen und beenden\" klickt"
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr "Stickparameter"
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr "Voreinstellungen"
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr "Öffnen"
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr "Hinzufügen"
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr "Überschreiben"
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr "Löschen"
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr "Letzte Einstellungen verwenden"
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr "Anwenden und schließen"
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
-msgstr "Vorschau"
-
-#: lib/extensions/params.py:483
-msgid "Internal Error"
-msgstr "Interner Fehler"
-
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
-msgstr "Bitte geben Sie einen Namen ein, oder wählen Sie zuerst einen vordefinierten Namen aus."
-
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
-msgstr "Voreinstellung"
-
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
-msgstr "Einstellung \"%s\" nicht gefunden."
-
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
-msgstr "Einstellung \"%s\" bereits vorhanden. Bitte verwenden Sie einen anderen Namen oder drücken Sie \"Überschreiben\""
-
#: lib/extensions/print_pdf.py:132
msgid "Closing..."
msgstr "Beende..."
@@ -697,102 +668,148 @@ msgstr "Ink/Stitch Drucken"
msgid "No embroidery file formats selected."
msgstr "Keine Stick-Dateiformate ausgewählt."
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
-msgstr "Erzeuge INX Dateien"
+#: lib/gui/presets.py:47
+msgid "Presets"
+msgstr "Voreinstellungen"
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
-msgstr "Ink/Stitch Text"
+#: lib/gui/presets.py:53
+msgid "Load"
+msgstr "Öffnen"
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:56
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: lib/gui/presets.py:59
+msgid "Overwrite"
+msgstr "Überschreiben"
+
+#: lib/gui/presets.py:62
+msgid "Delete"
+msgstr "Löschen"
+
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
+msgstr "Bitte geben Sie einen Namen ein, oder wählen Sie zuerst einen vordefinierten Namen aus."
+
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
+msgstr "Voreinstellung"
+
+#: lib/gui/presets.py:126
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
-msgstr "Fehler beim Schreiben in %(path)s: %(error)s"
+msgid "Preset \"%s\" not found."
+msgstr "Einstellung \"%s\" nicht gefunden."
+
+#: lib/gui/presets.py:142
+#, python-format
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+msgstr "Einstellung \"%s\" bereits vorhanden. Bitte verwenden Sie einen anderen Namen oder drücken Sie \"Überschreiben\""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr "STICH"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr "SPRUNG"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr "SCHNEIDEN"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr "STOP"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr "FARBWECHSEL"
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr "Langsamer (Pfeil Runter)"
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr "Schneller (Pfeil Hoch)"
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr "Schritt rückwärts (-)"
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr "Schritt vorwärts (+)"
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr "Richtung wechseln (Pfeil Links | Pfeil Rechts)"
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr "Pause"
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr "Pause (P)"
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr "Neustart"
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr "Neustart (R)"
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr "Beenden"
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr "Beenden (Q)"
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr "Geschwindigkeit: %d Stiche/Sek"
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr "Start"
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr "Vorschau"
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr "Interner Fehler"
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr "Stick Simulation"
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr "Erzeuge INX Dateien"
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr "Ink/Stitch Text"
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr "Fehler beim Schreiben in %(path)s: %(error)s"
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr "Automatische Füllung nicht möglich. Dies geschieht, weil Ihre Form aus mehreren und nicht verbundenen Abschnitten besteht."
@@ -1352,7 +1369,7 @@ msgstr "Behalte Reihenfolge der Satinkolumnen bei"
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1446,10 +1463,6 @@ msgstr "Befehle werden zur aktuell ausgewählten Ebene hinzugefügt."
msgid "Lettering"
msgstr "Beschriftung"
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr "Text"
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr "Befehle mit gewählten Objekten verknüpfen"
diff --git a/translations/messages_el_GR.po b/translations/messages_el_GR.po
index 9b050fd7..9207e179 100644
--- a/translations/messages_el_GR.po
+++ b/translations/messages_el_GR.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_en_US.po b/translations/messages_en_US.po
index 2f18e98f..21784e9e 100644
--- a/translations/messages_en_US.po
+++ b/translations/messages_en_US.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: English\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_es_ES.po b/translations/messages_es_ES.po
index f1509a3f..ac2595bb 100644
--- a/translations/messages_es_ES.po
+++ b/translations/messages_es_ES.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:46\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_fi_FI.po b/translations/messages_fi_FI.po
index c5e09a6b..38f5e50e 100644
--- a/translations/messages_fi_FI.po
+++ b/translations/messages_fi_FI.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_fr_FR.po b/translations/messages_fr_FR.po
index 93cb7261..64d3d700 100644
--- a/translations/messages_fr_FR.po
+++ b/translations/messages_fr_FR.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:46\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
@@ -528,9 +528,9 @@ msgstr "Commandes Ink/Stitch visuelles (Objet-> symboles...)"
msgid "Install"
msgstr "Installer"
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr "Quitter"
@@ -562,10 +562,32 @@ msgstr "Ink/Stitch installeur d'extensions"
msgid "Please choose one or more commands to add."
msgstr "Veuillez choisir une ou plusieurs commandes à ajouter."
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr "Appliquer et Quitter"
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -576,221 +598,216 @@ msgstr "Veuillez sélectionner un ou plusieurs objets pour y attacher des comman
msgid "Please choose one or more commands to attach."
msgstr "Veuillez choisir une ou plusieurs commandes à attacher."
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr "Ces paramètres seront appliqués à 1 objet."
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr "Ces paramètres seront appliqués aux %d objets."
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr "Certains paramètres ont des valeurs différentes d'un objet à l'autre. Sélectionnez une valeur dans la liste déroulante ou entrez-en une nouvelle."
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr "La désactivation de cet onglet désactivera les onglets %d suivants."
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr "La désactivation de cet onglet désactivera l'onglet suivant."
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr "Activer cet onglet désactivera %s et vice-versa."
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr "Objets Inkscape"
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr "Cliquez pour forcer l’enregistrement de ce paramètre lorsque vous cliquez sur « Appliquer et quitter »"
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr "Ce paramètre sera enregistré lorsque vous cliquez sur « Appliquer et quitter »"
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr "Paramètres de broderie"
-#: lib/extensions/params.py:390
+#: lib/extensions/params.py:330
+msgid "Use Last Settings"
+msgstr "Utiliser les derniers paramètres"
+
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
+msgstr "Fermeture..."
+
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
+msgstr "Il est sûr de fermer cette fenêtre maintenant."
+
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+msgstr "Un aperçu avant impression a été ouvert dans votre navigateur web. Cette fenêtre reste ouverte pour communiquer avec le code JavaScript s’exécutant dans votre navigateur. Cette fenêtre se fermera après avoir fermer l’aperçu avant impression dans le navigateur, vous pouvez la fermer manuellement si nécessaire."
+
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
+msgstr "Imprimer Ink/Stitch"
+
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
+msgstr "Aucun format de fichier broderie sélectionné."
+
+#: lib/gui/presets.py:47
msgid "Presets"
msgstr "Présélection"
-#: lib/extensions/params.py:395
+#: lib/gui/presets.py:53
msgid "Load"
msgstr "Charger"
-#: lib/extensions/params.py:398
+#: lib/gui/presets.py:56
msgid "Add"
msgstr "Ajouter"
-#: lib/extensions/params.py:401
+#: lib/gui/presets.py:59
msgid "Overwrite"
msgstr "Écraser"
-#: lib/extensions/params.py:404
+#: lib/gui/presets.py:62
msgid "Delete"
msgstr "Effacer"
-#: lib/extensions/params.py:411
-msgid "Use Last Settings"
-msgstr "Utiliser les derniers paramètres"
-
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr "Appliquer et Quitter"
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
-msgstr "Aperçu"
-
-#: lib/extensions/params.py:483
-msgid "Internal Error"
-msgstr "Erreur interne"
-
-#: lib/extensions/params.py:536
+#: lib/gui/presets.py:120
msgid "Please enter or select a preset name first."
msgstr "Veuillez entrer ou sélectionner un nom prédéfini en premier."
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
msgid "Preset"
msgstr "Préréglage"
-#: lib/extensions/params.py:542
+#: lib/gui/presets.py:126
#, python-format
msgid "Preset \"%s\" not found."
msgstr "Le préréglage \"%s\" n'a pas été trouvé."
-#: lib/extensions/params.py:570
+#: lib/gui/presets.py:142
#, python-format
msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr "Le préréglage \"%s\" existe déjà. Veuillez utiliser un autre nom ou appuyez sur \"Écraser\""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
-msgstr "Fermeture..."
-
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
-msgstr "Il est sûr de fermer cette fenêtre maintenant."
-
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
-msgstr "Un aperçu avant impression a été ouvert dans votre navigateur web. Cette fenêtre reste ouverte pour communiquer avec le code JavaScript s’exécutant dans votre navigateur. Cette fenêtre se fermera après avoir fermer l’aperçu avant impression dans le navigateur, vous pouvez la fermer manuellement si nécessaire."
-
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
-msgstr "Imprimer Ink/Stitch"
-
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
-msgstr "Aucun format de fichier broderie sélectionné."
-
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
-msgstr "Générer les fichiers INX"
-
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
-msgstr ""
-
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
-#, python-format
-msgid "Error writing to %(path)s: %(error)s"
-msgstr "Erreur d’écriture pour %(path)s: %(error)s"
-
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr "BRODER"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr "SAUT"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr "COUPE"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr "STOP"
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr "CHANGEMENT COULEUR"
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr "Ralentir (flèche vers le bas)"
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr "Accélérer (flèche vers le haut)"
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr "Aller un pas en arrière (-)"
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr "Aller un pas en avant (+)"
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr "Changer de direction (flèche à gauche | flèche à droite)"
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr "Pause"
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr "Pause (P)"
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr "Redémarrer"
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr "Redémarrer (R)"
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr "Quitter"
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr "Quitter (Q)"
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr "Vitesse : %d points/sec"
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr "Début"
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr "Aperçu"
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr "Erreur interne"
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr "Simulation de broderie"
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr "Générer les fichiers INX"
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr "Erreur d’écriture pour %(path)s: %(error)s"
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr "Impossible de remplir automatiquement. Cela arrive le plus souvent parce que votre forme est composée de plusieurs sections qui ne sont pas connectées."
@@ -1350,7 +1367,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1444,10 +1461,6 @@ msgstr "Les commandes s’ajouteront au calque sélectionné."
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr "Attacher des commandes à des objets sélectionnés"
diff --git a/translations/messages_he_IL.po b/translations/messages_he_IL.po
index 4f21dcc6..b1bb84e1 100644
--- a/translations/messages_he_IL.po
+++ b/translations/messages_he_IL.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Hebrew\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_hu_HU.po b/translations/messages_hu_HU.po
index d16798f8..0805534c 100644
--- a/translations/messages_hu_HU.po
+++ b/translations/messages_hu_HU.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_it_IT.po b/translations/messages_it_IT.po
index 967c4146..34165002 100644
--- a/translations/messages_it_IT.po
+++ b/translations/messages_it_IT.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_ja_JP.po b/translations/messages_ja_JP.po
index 10a2c6f8..2a8d43c3 100644
--- a/translations/messages_ja_JP.po
+++ b/translations/messages_ja_JP.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_ko_KR.po b/translations/messages_ko_KR.po
index ca7bd85b..addf6dad 100644
--- a/translations/messages_ko_KR.po
+++ b/translations/messages_ko_KR.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_nl_NL.po b/translations/messages_nl_NL.po
index 5505e4e2..31aecd96 100644
--- a/translations/messages_nl_NL.po
+++ b/translations/messages_nl_NL.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_no_NO.po b/translations/messages_no_NO.po
index 1259f2a5..9909bbb0 100644
--- a/translations/messages_no_NO.po
+++ b/translations/messages_no_NO.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_pl_PL.po b/translations/messages_pl_PL.po
index c7e42902..97111a38 100644
--- a/translations/messages_pl_PL.po
+++ b/translations/messages_pl_PL.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_pt_BR.po b/translations/messages_pt_BR.po
index 8cea9aad..05b9d06e 100644
--- a/translations/messages_pt_BR.po
+++ b/translations/messages_pt_BR.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:01\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_pt_PT.po b/translations/messages_pt_PT.po
index cd30182c..a83f7972 100644
--- a/translations/messages_pt_PT.po
+++ b/translations/messages_pt_PT.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
@@ -528,9 +528,9 @@ msgstr ""
msgid "Install"
msgstr "Instalar"
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr "Cancelar"
@@ -562,10 +562,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr "Aplicar e Sair"
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -576,221 +598,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr "Definições serão aplicadas a 1 objecto."
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr "Definições serão aplicadas a %d objectos."
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr "Algumas definições com valores diferentes entre objectos. Seleccione um valor da lista ou digite novo valor."
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr "Desactivar esta aba desactivará as seguintes %d abas."
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr "Desactivar esta aba desactivará a seguinte aba."
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr "Activar esta aba desactivará %s e vice-versa."
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr "Objectos do Inkscape"
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr "Parametros de Bordado"
-#: lib/extensions/params.py:390
+#: lib/extensions/params.py:330
+msgid "Use Last Settings"
+msgstr "Usar ultimas definições"
+
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
+msgstr "A fechar..."
+
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
+msgstr "É agora seguro fechar esta janela."
+
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+msgstr ""
+
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
+msgstr ""
+
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
+msgstr ""
+
+#: lib/gui/presets.py:47
msgid "Presets"
msgstr "Pré-definições"
-#: lib/extensions/params.py:395
+#: lib/gui/presets.py:53
msgid "Load"
msgstr "Carregar"
-#: lib/extensions/params.py:398
+#: lib/gui/presets.py:56
msgid "Add"
msgstr "Adicionar"
-#: lib/extensions/params.py:401
+#: lib/gui/presets.py:59
msgid "Overwrite"
msgstr "Substituir"
-#: lib/extensions/params.py:404
+#: lib/gui/presets.py:62
msgid "Delete"
msgstr "Eliminar"
-#: lib/extensions/params.py:411
-msgid "Use Last Settings"
-msgstr "Usar ultimas definições"
-
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr "Aplicar e Sair"
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
-msgstr "Pré-visualização"
-
-#: lib/extensions/params.py:483
-msgid "Internal Error"
-msgstr "Erro Interno"
-
-#: lib/extensions/params.py:536
+#: lib/gui/presets.py:120
msgid "Please enter or select a preset name first."
msgstr "Seleccione ou insira uma pré-definição primeiro."
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
msgid "Preset"
msgstr "Pré-definição"
-#: lib/extensions/params.py:542
+#: lib/gui/presets.py:126
#, python-format
msgid "Preset \"%s\" not found."
msgstr "Pré-definição \"%s\" não encontrada."
-#: lib/extensions/params.py:570
+#: lib/gui/presets.py:142
#, python-format
msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr "Pré-definição \"%s\" já existe. Use outro nome ou clique \"Substituir\""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
-msgstr "A fechar..."
-
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
-msgstr "É agora seguro fechar esta janela."
-
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
-msgstr ""
-
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
-msgstr ""
-
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
-msgstr ""
-
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
-msgstr ""
-
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
-msgstr ""
-
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
-#, python-format
-msgid "Error writing to %(path)s: %(error)s"
-msgstr ""
-
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr "Pré-visualização"
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr "Erro Interno"
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr "Simulação de Bordado"
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr "Enchimento automático falhou. Verificar se a forma não é composta por múltiplas desconectadas."
@@ -1350,7 +1367,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1444,10 +1461,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_ro_RO.po b/translations/messages_ro_RO.po
index d43a2a69..5e9421c6 100644
--- a/translations/messages_ro_RO.po
+++ b/translations/messages_ro_RO.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:46\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Romanian\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_ru_RU.po b/translations/messages_ru_RU.po
index a7f3f0ab..b28dc993 100644
--- a/translations/messages_ru_RU.po
+++ b/translations/messages_ru_RU.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_sr_SP.po b/translations/messages_sr_SP.po
index 90d89bb3..e20fd4db 100644
--- a/translations/messages_sr_SP.po
+++ b/translations/messages_sr_SP.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Serbian (Cyrillic)\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_sv_SE.po b/translations/messages_sv_SE.po
index 517508d8..00e1aa8f 100644
--- a/translations/messages_sv_SE.po
+++ b/translations/messages_sv_SE.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_tr_TR.po b/translations/messages_tr_TR.po
index fc9a6c03..60635882 100644
--- a/translations/messages_tr_TR.po
+++ b/translations/messages_tr_TR.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_uk_UA.po b/translations/messages_uk_UA.po
index f0ec1f84..8adff1ff 100644
--- a/translations/messages_uk_UA.po
+++ b/translations/messages_uk_UA.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_vi_VN.po b/translations/messages_vi_VN.po
index 81d2a071..21511b6d 100644
--- a/translations/messages_vi_VN.po
+++ b/translations/messages_vi_VN.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:01\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_zh_CN.po b/translations/messages_zh_CN.po
index 589e1b1f..b783576a 100644
--- a/translations/messages_zh_CN.po
+++ b/translations/messages_zh_CN.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""
diff --git a/translations/messages_zh_TW.po b/translations/messages_zh_TW.po
index 0ee0e79b..2c159c4a 100644
--- a/translations/messages_zh_TW.po
+++ b/translations/messages_zh_TW.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inkstitch\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-11-16 01:42+0000\n"
-"PO-Revision-Date: 2018-11-23 01:47\n"
+"POT-Creation-Date: 2018-12-16 02:00+0000\n"
+"PO-Revision-Date: 2018-12-16 02:00\n"
"Last-Translator: lexelby <github.com@lexneva.name>\n"
"Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n"
@@ -527,9 +527,9 @@ msgstr ""
msgid "Install"
msgstr ""
-#: lib/extensions/install.py:40 lib/extensions/params.py:407
-#: print/templates/ui.html:72 print/templates/ui.html:76
-#: print/templates/ui.html:82
+#: lib/extensions/install.py:40 lib/extensions/lettering.py:50
+#: lib/extensions/params.py:326 print/templates/ui.html:72
+#: print/templates/ui.html:76 print/templates/ui.html:82
msgid "Cancel"
msgstr ""
@@ -561,10 +561,32 @@ msgstr ""
msgid "Please choose one or more commands to add."
msgstr ""
-#. Label for an object created by the Lettering extension
-#: lib/extensions/lettering.py:34
-#, python-format
-msgid "Lettering %d"
+#: lib/extensions/lettering.py:26 lib/extensions/lettering.py:213
+msgid "Ink/Stitch Lettering"
+msgstr ""
+
+#: lib/extensions/lettering.py:35
+msgid "Options"
+msgstr ""
+
+#: lib/extensions/lettering.py:37
+msgid "Stitch lines of text back and forth"
+msgstr ""
+
+#: lib/extensions/lettering.py:42
+msgid "Text"
+msgstr ""
+
+#: lib/extensions/lettering.py:54 lib/extensions/params.py:333
+msgid "Apply and Quit"
+msgstr ""
+
+#: lib/extensions/lettering.py:202
+msgid "Please select only one block of text."
+msgstr ""
+
+#: lib/extensions/lettering.py:205
+msgid "You've selected objects that were not created by the Lettering extension. Please clear your selection or select different objects before running Lettering again."
msgstr ""
#: lib/extensions/object_commands.py:16
@@ -575,221 +597,216 @@ msgstr ""
msgid "Please choose one or more commands to attach."
msgstr ""
-#: lib/extensions/params.py:248
+#: lib/extensions/params.py:190
msgid "These settings will be applied to 1 object."
msgstr ""
-#: lib/extensions/params.py:250
+#: lib/extensions/params.py:192
#, python-format
msgid "These settings will be applied to %d objects."
msgstr ""
-#: lib/extensions/params.py:253
+#: lib/extensions/params.py:195
msgid "Some settings had different values across objects. Select a value from the dropdown or enter a new one."
msgstr ""
-#: lib/extensions/params.py:257
+#: lib/extensions/params.py:199
#, python-format
msgid "Disabling this tab will disable the following %d tabs."
msgstr ""
-#: lib/extensions/params.py:259
+#: lib/extensions/params.py:201
msgid "Disabling this tab will disable the following tab."
msgstr ""
-#: lib/extensions/params.py:262
+#: lib/extensions/params.py:204
#, python-format
msgid "Enabling this tab will disable %s and vice-versa."
msgstr ""
-#: lib/extensions/params.py:292
+#: lib/extensions/params.py:234
msgid "Inkscape objects"
msgstr ""
-#: lib/extensions/params.py:349
+#: lib/extensions/params.py:291
msgid "Click to force this parameter to be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:357
+#: lib/extensions/params.py:299
msgid "This parameter will be saved when you click \"Apply and Quit\""
msgstr ""
-#: lib/extensions/params.py:373
+#: lib/extensions/params.py:315
msgid "Embroidery Params"
msgstr ""
-#: lib/extensions/params.py:390
-msgid "Presets"
-msgstr ""
-
-#: lib/extensions/params.py:395
-msgid "Load"
-msgstr ""
-
-#: lib/extensions/params.py:398
-msgid "Add"
-msgstr ""
-
-#: lib/extensions/params.py:401
-msgid "Overwrite"
-msgstr ""
-
-#: lib/extensions/params.py:404
-msgid "Delete"
-msgstr ""
-
-#: lib/extensions/params.py:411
+#: lib/extensions/params.py:330
msgid "Use Last Settings"
msgstr ""
-#: lib/extensions/params.py:414
-msgid "Apply and Quit"
-msgstr ""
-
-#: lib/extensions/params.py:467 lib/extensions/params.py:479
-msgid "Preview"
+#: lib/extensions/print_pdf.py:132
+msgid "Closing..."
msgstr ""
-#: lib/extensions/params.py:483
-msgid "Internal Error"
+#: lib/extensions/print_pdf.py:132
+msgid "It is safe to close this window now."
msgstr ""
-#: lib/extensions/params.py:536
-msgid "Please enter or select a preset name first."
+#: lib/extensions/print_pdf.py:263
+msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
+"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
msgstr ""
-#: lib/extensions/params.py:536 lib/extensions/params.py:542
-#: lib/extensions/params.py:570
-msgid "Preset"
+#: lib/extensions/print_pdf.py:412
+msgid "Ink/Stitch Print"
msgstr ""
-#: lib/extensions/params.py:542
-#, python-format
-msgid "Preset \"%s\" not found."
+#: lib/extensions/zip.py:49
+msgid "No embroidery file formats selected."
msgstr ""
-#: lib/extensions/params.py:570
-#, python-format
-msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
+#: lib/gui/presets.py:47
+msgid "Presets"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "Closing..."
+#: lib/gui/presets.py:53
+msgid "Load"
msgstr ""
-#: lib/extensions/print_pdf.py:132
-msgid "It is safe to close this window now."
+#: lib/gui/presets.py:56
+msgid "Add"
msgstr ""
-#: lib/extensions/print_pdf.py:263
-msgid "A print preview has been opened in your web browser. This window will stay open in order to communicate with the JavaScript code running in your browser.\n\n"
-"This window will close after you close the print preview in your browser, or you can close it manually if necessary."
+#: lib/gui/presets.py:59
+msgid "Overwrite"
msgstr ""
-#: lib/extensions/print_pdf.py:412
-msgid "Ink/Stitch Print"
+#: lib/gui/presets.py:62
+msgid "Delete"
msgstr ""
-#: lib/extensions/zip.py:49
-msgid "No embroidery file formats selected."
+#: lib/gui/presets.py:120
+msgid "Please enter or select a preset name first."
msgstr ""
-#. If you translate this string, that will tell Ink/Stitch to
-#. generate menu items for this language in Inkscape's "Extensions"
-#. menu.
-#: lib/inx/utils.py:46
-msgid "Generate INX files"
+#: lib/gui/presets.py:120 lib/gui/presets.py:126 lib/gui/presets.py:142
+msgid "Preset"
msgstr ""
-#: lib/lettering/font.py:94
-msgid "Ink/Stitch Text"
+#: lib/gui/presets.py:126
+#, python-format
+msgid "Preset \"%s\" not found."
msgstr ""
-#. low-level file error. %(error)s is (hopefully?) translated by
-#. the user's system automatically.
-#: lib/output.py:102
+#: lib/gui/presets.py:142
#, python-format
-msgid "Error writing to %(path)s: %(error)s"
+msgid "Preset \"%s\" already exists. Please use another name or press \"Overwrite\""
msgstr ""
#. command label at bottom of simulator window
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STITCH"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "JUMP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "TRIM"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "STOP"
msgstr ""
-#: lib/simulator.py:12
+#: lib/gui/simulator.py:20
msgid "COLOR CHANGE"
msgstr ""
-#: lib/simulator.py:44
+#: lib/gui/simulator.py:52
msgid "Slow down (arrow down)"
msgstr ""
-#: lib/simulator.py:47
+#: lib/gui/simulator.py:55
msgid "Speed up (arrow up)"
msgstr ""
-#: lib/simulator.py:50
+#: lib/gui/simulator.py:58
msgid "Go on step backward (-)"
msgstr ""
-#: lib/simulator.py:53
+#: lib/gui/simulator.py:61
msgid "Go on step forward (+)"
msgstr ""
-#: lib/simulator.py:56
+#: lib/gui/simulator.py:64
msgid "Switch direction (arrow left | arrow right)"
msgstr ""
-#: lib/simulator.py:57 lib/simulator.py:210 lib/simulator.py:217
+#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225
msgid "Pause"
msgstr ""
-#: lib/simulator.py:59
+#: lib/gui/simulator.py:67
msgid "Pause (P)"
msgstr ""
-#: lib/simulator.py:60
+#: lib/gui/simulator.py:68
msgid "Restart"
msgstr ""
-#: lib/simulator.py:62
+#: lib/gui/simulator.py:70
msgid "Restart (R)"
msgstr ""
-#: lib/simulator.py:63
+#: lib/gui/simulator.py:71
msgid "Quit"
msgstr ""
-#: lib/simulator.py:65
+#: lib/gui/simulator.py:73
msgid "Quit (Q)"
msgstr ""
-#: lib/simulator.py:171
+#: lib/gui/simulator.py:179
#, python-format
msgid "Speed: %d stitches/sec"
msgstr ""
-#: lib/simulator.py:213
+#: lib/gui/simulator.py:221
msgid "Start"
msgstr ""
-#: lib/simulator.py:651
+#: lib/gui/simulator.py:729 lib/gui/simulator.py:741
+msgid "Preview"
+msgstr ""
+
+#: lib/gui/simulator.py:745
+msgid "Internal Error"
+msgstr ""
+
+#: lib/gui/simulator.py:774
msgid "Embroidery Simulation"
msgstr ""
+#. If you translate this string, that will tell Ink/Stitch to
+#. generate menu items for this language in Inkscape's "Extensions"
+#. menu.
+#: lib/inx/utils.py:46
+msgid "Generate INX files"
+msgstr ""
+
+#: lib/lettering/font.py:94
+msgid "Ink/Stitch Text"
+msgstr ""
+
+#. low-level file error. %(error)s is (hopefully?) translated by
+#. the user's system automatically.
+#: lib/output.py:102
+#, python-format
+msgid "Error writing to %(path)s: %(error)s"
+msgstr ""
+
#: lib/stitches/auto_fill.py:167
msgid "Unable to autofill. This most often happens because your shape is made up of multiple sections that aren't connected."
msgstr ""
@@ -1349,7 +1366,7 @@ msgstr ""
#: templates/auto_satin.inx:14 templates/convert_to_satin.inx:12
#: templates/cut_satin.inx:12 templates/embroider.inx:24 templates/flip.inx:12
#: templates/global_commands.inx:16 templates/install.inx:12
-#: templates/layer_commands.inx:16 templates/lettering.inx:14
+#: templates/layer_commands.inx:16 templates/lettering.inx:13
#: templates/object_commands.inx:15 templates/params.inx:12
#: templates/print.inx:12 templates/simulate.inx:12
msgid "English"
@@ -1443,10 +1460,6 @@ msgstr ""
msgid "Lettering"
msgstr ""
-#: templates/lettering.inx:7
-msgid "Text"
-msgstr ""
-
#: templates/object_commands.inx:3
msgid "Attach Commands to Selected Objects"
msgstr ""