46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
import json
|
|
|
|
|
|
class ToolBox:
|
|
def __init__(self, chart):
|
|
self.run_script = chart.run_script
|
|
self.id = chart.id
|
|
self._save_under = None
|
|
self.drawings = {}
|
|
chart.win.handlers[f'save_drawings{self.id}'] = self._save_drawings
|
|
self.run_script(f'{self.id}.createToolBox()')
|
|
|
|
def save_drawings_under(self, widget: 'Widget'):
|
|
"""
|
|
Drawings made on charts will be saved under the widget given. eg `chart.toolbox.save_drawings_under(chart.topbar['symbol'])`.
|
|
"""
|
|
self._save_under = widget
|
|
|
|
def load_drawings(self, tag: str):
|
|
"""
|
|
Loads and displays the drawings on the chart stored under the tag given.
|
|
"""
|
|
if not self.drawings.get(tag):
|
|
return
|
|
self.run_script(f'if ({self.id}.toolBox) {self.id}.toolBox.loadDrawings({json.dumps(self.drawings[tag])})')
|
|
|
|
def import_drawings(self, file_path):
|
|
"""
|
|
Imports a list of drawings stored at the given file path.
|
|
"""
|
|
with open(file_path, 'r') as f:
|
|
json_data = json.load(f)
|
|
self.drawings = json_data
|
|
|
|
def export_drawings(self, file_path):
|
|
"""
|
|
Exports the current list of drawings to the given file path.
|
|
"""
|
|
with open(file_path, 'w+') as f:
|
|
json.dump(self.drawings, f, indent=4)
|
|
|
|
def _save_drawings(self, drawings):
|
|
if not self._save_under:
|
|
return
|
|
self.drawings[self._save_under.value] = json.loads(drawings)
|