+ def get_text(self, selection_start, selection_end):
+ s_s = selection_start
+ e_s = selection_end
+ s_l, s_e, s_i = selection_start
+ e_l, e_e, e_i = selection_end
+
+ text = ""
+
+ if (s_l is None or s_e is None or s_i is None or
+ e_l is None or e_e is None or e_i is None or
+ self.posY < s_l.posY or self.posY > e_l.posY):
+
+ # nothing to do
+ pass
+
+ elif self.posY > s_s[0].posY and self.posY < e_s[0].posY:
+
+ for element in self.element_list:
+ text += element.get_text(selection=True)
+
+ elif self == s_s[0] and self == e_s[0]:
+
+ selection = False
+
+ for element in self.element_list:
+ if s_e == element:
+ selection = True
+ start = s_i
+ end = 0xffffff
+ if e_e == element:
+ end = e_i
+ selection = False
+ text += element.get_text(selection=True, start_index=start,
+ end_index=end)
+ elif e_e == element:
+ end = e_i
+ selection = False
+ text += element.get_text(
+ selection=True, end_index=end)
+ elif selection:
+ text += element.get_text(selection=True)
+
+ elif self == s_s[0]:
+
+ selection = False
+
+ for element in self.element_list:
+ if s_e == element:
+ selection = True
+ start = s_i
+ text += element.get_text(selection=True, start_index=start)
+ elif selection:
+ text += element.get_text(selection=True)
+
+ elif self == e_s[0]:
+
+ selection = True
+
+ for element in self.element_list:
+ if e_e == element:
+ end = e_i
+ text += element.get_text(selection=True, end_index=e_i)
+ selection = False
+ elif selection:
+ text += element.get_text(selection=True)
+
+ else:
+ # nothing to do
+ pass
+
+ return text
+
+