class PhraseRunner: def __init__(self, service): self.service = service self.macroManager = MacroManager(service.scriptRunner.engine) self.lastExpansion = None self.lastPhrase = None self.lastBuffer = None @threaded #@synchronized(iomediator.SEND_LOCK) def execute(self, phrase, buffer=''): logging.debug("Executing Phrase(%s)", phrase) mediator = self.service.mediator mediator.interface.begin_send() expansion = phrase.build_phrase(buffer) self.macroManager.process_expansion(expansion) mediator.send_backspace(expansion.backspaces) if phrase.sendMode == model.SendMode.KEYBOARD: mediator.send_string(expansion.string) else: mediator.paste_string(expansion.string, phrase.sendMode) mediator.interface.finish_send() self.lastExpansion = expansion self.lastPhrase = phrase self.lastBuffer = buffer def can_undo(self): if self.lastExpansion is not None: return model.TriggerMode.ABBREVIATION in self.lastPhrase.modes def clear_last(self): self.lastExpansion = None self.lastPhrase = None @synchronized(iomediator.SEND_LOCK) def undo_expansion(self): logger.info("Undoing last abbreviation expansion") replay = self.lastPhrase.get_trigger_chars(self.lastBuffer) logger.debug("Replay string: %s", replay) logger.debug("Erase string: %r", self.lastExpansion.string) mediator = self.service.mediator #mediator.send_right(self.lastExpansion.lefts) mediator.interface.begin_send() mediator.remove_string(self.lastExpansion.string) mediator.send_string(replay) mediator.interface.finish_send() self.clear_last()
class PhraseRunner: def __init__(self, service): self.service = service self.macroManager = MacroManager(service.scriptRunner.engine) self.lastExpansion = None self.lastPhrase = None self.lastBuffer = None @threaded #@synchronized(iomediator.SEND_LOCK) def execute(self, phrase, buffer=''): mediator = self.service.mediator mediator.interface.begin_send() expansion = phrase.build_phrase(buffer) self.macroManager.process_expansion(expansion) mediator.send_backspace(expansion.backspaces) if phrase.sendMode == model.SendMode.KEYBOARD: mediator.send_string(expansion.string) else: mediator.paste_string(expansion.string, phrase.sendMode) mediator.interface.finish_send() self.lastExpansion = expansion self.lastPhrase = phrase self.lastBuffer = buffer def can_undo(self): if self.lastExpansion is not None: return model.TriggerMode.ABBREVIATION in self.lastPhrase.modes def clear_last(self): self.lastExpansion = None self.lastPhrase = None @synchronized(iomediator.SEND_LOCK) def undo_expansion(self): logger.info("Undoing last abbreviation expansion") replay = self.lastPhrase.get_trigger_chars(self.lastBuffer) logger.debug("Replay string: %s", replay) logger.debug("Erase string: %r", self.lastExpansion.string) mediator = self.service.mediator #mediator.send_right(self.lastExpansion.lefts) mediator.interface.begin_send() mediator.remove_string(self.lastExpansion.string) mediator.send_string(replay) mediator.interface.finish_send() self.clear_last()
def __init__(self, service): self.service = service self.macroManager = MacroManager(service.scriptRunner.engine) self.lastExpansion = None self.lastPhrase = None self.lastBuffer = None