intermediate state after fixing the logfilemodel test
This commit is contained in:
@@ -17,6 +17,7 @@ from src.ui.bigtext.highlightingdialog import HighlightingDialog
|
||||
from src.ui.bigtext.line import Line
|
||||
from src.ui.bigtext.logFileModel import LogFileModel
|
||||
from src.ui.icon import Icon
|
||||
from src.ui.rangeslider import RangeSlider
|
||||
from src.util.conversion import humanbytes
|
||||
from src.pluginregistry import PluginRegistry
|
||||
|
||||
@@ -61,7 +62,7 @@ class FileWatchdogThread(QRunnable):
|
||||
class BigText(QWidget):
|
||||
trigger_update = Signal()
|
||||
|
||||
def __init__(self, model: LogFileModel):
|
||||
def __init__(self, model: LogFileModel, show_range_slider=True):
|
||||
super(BigText, self).__init__()
|
||||
|
||||
self.model = model
|
||||
@@ -85,14 +86,27 @@ class BigText(QWidget):
|
||||
self.v_scroll_bar.scaledValueChanged.connect(self.big_text.v_scroll_event)
|
||||
self.v_scroll_bar.scrolled_to_end.connect(self.big_text.v_scroll_update_follow_tail)
|
||||
|
||||
self.grid.addWidget(self.big_text, 0, 0)
|
||||
self.grid.addWidget(self.h_scroll_bar, 1, 0)
|
||||
self.grid.addWidget(self.v_scroll_bar, 0, 1)
|
||||
self.range_limit = RangeSlider()
|
||||
self.range_limit.value_changed.connect(self._range_limit_event)
|
||||
|
||||
if show_range_slider:
|
||||
self.grid.addWidget(self.range_limit, 0, 0)
|
||||
self.grid.addWidget(self.big_text, 0, 1)
|
||||
self.grid.addWidget(self.h_scroll_bar, 1, 1)
|
||||
self.grid.addWidget(self.v_scroll_bar, 0, 2)
|
||||
|
||||
self.watchdog = FileWatchdogThread(self, model.get_file())
|
||||
QThreadPool.globalInstance().start(self.watchdog)
|
||||
self.trigger_update.connect(self.big_text._file_changed)
|
||||
|
||||
def _range_limit_event(self, lower_value: float, upper_value: float):
|
||||
byte_count = self.model.byte_count()
|
||||
range_start = int(byte_count * (lower_value / 100.0))
|
||||
range_end = int(byte_count * (upper_value / 100.0))
|
||||
print(f"-> {lower_value}, {upper_value}, {range_start}, {range_end}")
|
||||
self.v_scroll_bar.set_range(range_start, range_end)
|
||||
self.big_text.set_range(range_start, range_end)
|
||||
|
||||
def get_file(self):
|
||||
return self.model.get_file()
|
||||
|
||||
@@ -121,6 +135,9 @@ class InnerBigText(QWidget):
|
||||
scroll_lines = 0
|
||||
longest_line = 0
|
||||
|
||||
_range_start = 0
|
||||
_range_end = -1
|
||||
|
||||
def __init__(self, parent: BigText, model: LogFileModel):
|
||||
super(InnerBigText, self).__init__()
|
||||
self.char_height = None
|
||||
@@ -148,6 +165,15 @@ class InnerBigText(QWidget):
|
||||
|
||||
self.line_click_listeners: [Callable[[int], None]] = []
|
||||
|
||||
def set_range(self, range_start: int, range_end: int):
|
||||
self._range_start = range_start
|
||||
self._range_end = range_end
|
||||
self._set_byte_offset(self._byte_offset)
|
||||
|
||||
def _set_byte_offset(self, byte_offset: int):
|
||||
self._byte_offset = min(max(byte_offset, self._range_start), self._range_end)
|
||||
self.update()
|
||||
|
||||
def clear_selection_highlight(self):
|
||||
self.selection_highlight.start_byte = 0
|
||||
self.selection_highlight.end_byte = 0
|
||||
@@ -432,7 +458,8 @@ class InnerBigText(QWidget):
|
||||
lines_to_show = math.ceil(self.lines_shown())
|
||||
# print("%s / %s = %s" %(self.height(), float(self.char_height), lines_to_show))
|
||||
|
||||
self.lines = self.model.data(self._byte_offset, self.scroll_lines, lines_to_show)
|
||||
self.lines = self.model.data(self._byte_offset, self.scroll_lines, lines_to_show, self._range_start,
|
||||
self._range_end)
|
||||
# print("lines_to_show: %d returned: %d" % (lines_to_show, len(self.lines)))
|
||||
self.scroll_lines = 0
|
||||
self._byte_offset = self.lines[0].byte_offset() if len(self.lines) > 0 else 0
|
||||
|
||||
Reference in New Issue
Block a user