|
13 | 13 | # * segment change |
14 | 14 | # * |
15 | 15 |
|
| 16 | +INT32_MAX = 2147483647 |
| 17 | + |
16 | 18 | class MixinViewTrace: |
17 | 19 |
|
18 | 20 | MAX_RETRIEVE_TIME_FOR_BUSY_CURSOR = 0.5 # seconds |
@@ -174,7 +176,13 @@ def _qt_update_scroll_limits(self): |
174 | 176 | t_start, t_stop = self.controller.get_t_start_t_stop() |
175 | 177 | self.timeseeker.set_start_stop(t_start, t_stop, seek=False) |
176 | 178 | self.scroll_time.setMinimum(0) |
177 | | - self.scroll_time.setMaximum(length - 1) |
| 179 | + |
| 180 | + if length > INT32_MAX: |
| 181 | + slider_max = INT32_MAX |
| 182 | + else: |
| 183 | + slider_max = length - 1 |
| 184 | + |
| 185 | + self.scroll_time.setMaximum(slider_max) |
178 | 186 |
|
179 | 187 | def _qt_change_segment(self, segment_index): |
180 | 188 | #TODO: dirty because now seg_pos IS segment_index |
@@ -214,6 +222,11 @@ def _qt_xsize_zoom(self, xmove): |
214 | 222 | self.spinbox_xsize.setValue(newsize) |
215 | 223 |
|
216 | 224 | def _qt_on_scroll_time(self, val): |
| 225 | + segment_index = self.controller.get_time()[1] |
| 226 | + num_samples = self.controller.get_num_samples(segment_index) |
| 227 | + if num_samples > INT32_MAX: |
| 228 | + val = round(val * (num_samples / INT32_MAX)) |
| 229 | + |
217 | 230 | time = self.controller.sample_index_to_time(val) |
218 | 231 | self.timeseeker.seek(time) |
219 | 232 |
|
@@ -501,6 +514,12 @@ def _qt_seek(self, t): |
501 | 514 |
|
502 | 515 | self.scroll_time.valueChanged.disconnect(self._qt_on_scroll_time) |
503 | 516 | value = self.controller.time_to_sample_index(t) |
| 517 | + |
| 518 | + segment_index = self.controller.get_time()[1] |
| 519 | + num_samples = self.controller.get_num_samples(segment_index) |
| 520 | + if num_samples > INT32_MAX: |
| 521 | + value = round((value * INT32_MAX) / num_samples) |
| 522 | + |
504 | 523 | self.scroll_time.setValue(value) |
505 | 524 | self.scroll_time.setPageStep(int(sr*xsize)) |
506 | 525 | self.scroll_time.valueChanged.connect(self._qt_on_scroll_time) |
|
0 commit comments