spreadsheet

terminal spreadsheet application
git clone https://git.ce9e.org/spreadsheet.git

commit
509574a9b3cfa6742b05932cfa561c7868d2892c
parent
9a2c2cab51cc7a74a638432122af389eec21dbaf
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2024-07-06 17:49
finish drag

Diffstat

M sheet/__main__.py 16 ++++++++++++----

1 files changed, 12 insertions, 4 deletions


diff --git a/sheet/__main__.py b/sheet/__main__.py

@@ -3,6 +3,8 @@ import sys
    3     3 import boon
    4     4 
    5     5 from .csv import load_csv
   -1     6 from .expression import shift_refs
   -1     7 from .expression import unparse
    6     8 from .expression import x2col
    7     9 from .input import Input
    8    10 from .sheet import iter_range
@@ -129,10 +131,16 @@ class App(boon.App):
  129   131         self.input = None
  130   132 
  131   133     def submit_drag(self):
  132    -1         value = self.sheet.get_raw(self.drag)
  133    -1         for x, y in iter_range(self.cursor, self.drag):
  134    -1             # TODO: modify references in expression
  135    -1             self.sheet.set((x, y), value)
   -1   134         raw = self.sheet.get_raw(self.drag)
   -1   135         if raw.startswith('='):
   -1   136             expr = self.sheet.get_parsed(self.drag)
   -1   137             assert isinstance(expr, tuple)
   -1   138             for x, y in iter_range(self.cursor, self.drag):
   -1   139                 shifted = shift_refs(expr, (x - self.drag[0], y - self.drag[1]))
   -1   140                 self.sheet.set((x, y), '=' + unparse(shifted))
   -1   141         else:
   -1   142             for x, y in iter_range(self.cursor, self.drag):
   -1   143                 self.sheet.set((x, y), raw)
  136   144         self.drag = None
  137   145 
  138   146     def cancel_drag(self):