diff --git a/lib/tfw/components/source_code_event_handler.py b/lib/tfw/components/source_code_event_handler.py index 5785064..99c0c7e 100644 --- a/lib/tfw/components/source_code_event_handler.py +++ b/lib/tfw/components/source_code_event_handler.py @@ -58,11 +58,10 @@ class SourceCodeEventHandler(TriggerlessEventHandler): super().__init__(key) self.filemanager = FileManager(directory, selected_file=selected_file, exclude=exclude) - self.commands = { - 'read': self.read, - 'write': self.write, - 'select': self.select - } + self.commands = {'read': self.read, + 'write': self.write, + 'select': self.select, + 'selectdir': self.select_dir} self._monitor = DirectoryMonitor(directory) self._monitor.watch() # This runs on a separate thread @@ -90,6 +89,11 @@ class SourceCodeEventHandler(TriggerlessEventHandler): except EnvironmentError: log.exception('Failed to select file "{}"'.format(data['filename'])) return data + def select_dir(self, data): + try: self.filemanager.workdir = data['directory'] + except EnvironmentError: log.exception('Failed to select directory "{}"'.format(data['directory'])) + return data + def attach_fileinfo(self, data): data['filename'] = self.filemanager.filename data['files'] = self.filemanager.files