Add range selection

This commit is contained in:
El Mau 2021-11-04 00:16:53 -06:00
parent 4d62aef1b8
commit 51afb264fb
1 changed files with 20 additions and 27 deletions

View File

@ -1443,7 +1443,6 @@ class LOCalc(LODocument):
self._sheets = obj.Sheets
self._events = None
self._listener_range_selection = None
self._range_selection = ''
def __getitem__(self, index):
return LOCalcSheet(self._sheets[index])
@ -1513,7 +1512,7 @@ class LOCalc(LODocument):
return LOCalcRanges(obj)
def _connect_listeners(self):
# ~ self._cc.addRangeSelectionListener(EventsRangeSelectionListener(self.events))
return
@property
@ -1524,26 +1523,22 @@ class LOCalc(LODocument):
self._events = controllers(self)
self._connect_listeners()
@property
def range_selection(self):
return self._range_selection
@run_in_thread
def _start_range_selection(self, args):
properties = dict_to_property(args)
self._cc.startRangeSelection(properties)
return
def start_range_selection(self, args={}):
def start_range_selection(self, controllers, args={}):
if not args:
args = dict(
Title = 'Please select a range',
CloseOnMouseRelease = True)
properties = dict_to_property(args)
self._listener_range_selection = EventsRangeSelectionListener(self)
self._listener_range_selection = EventsRangeSelectionListener(controllers(self))
self._cc.addRangeSelectionListener(self._listener_range_selection)
self._start_range_selection(args)
# ~ self._cc.removeRangeSelectionListener(listener)
self._cc.startRangeSelection(properties)
return
def remove_range_selection_listener(self):
if not self._listener_range_selection is None:
self._cc.removeRangeSelectionListener(self._listener_range_selection)
return
def get_ranges(self, address: str):
@ -4874,23 +4869,21 @@ class EventsWindow(EventsListenerBase, XTopWindowListener, XWindowListener):
class EventsRangeSelectionListener(EventsListenerBase, XRangeSelectionListener):
def __init__(self, doc):
super().__init__(None, '')
self._doc = doc
def __init__(self, controller):
super().__init__(controller, '')
def done(self, event):
range_name = event.RangeDescriptor
self.doc.range_selection = range_name
# ~ event_name = 'range_selection_done'
# ~ if hasattr(self._controller, event_name):
# ~ getattr(self._controller, event_name)(event)
range_selection = event.RangeDescriptor
event_name = 'range_selection_done'
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)(range_selection)
return
def aborted(self, event):
range_name = ''
# ~ event_name = 'range_selection_aborted'
# ~ if hasattr(self._controller, event_name):
# ~ getattr(self._controller, event_name)(event)
range_selection = event.RangeDescriptor
event_name = 'range_selection_aborted'
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)()
return